diff --git Makefile.inc1 Makefile.inc1
index c9d38b6d6e71..7a4c156d28ce 100644
--- Makefile.inc1
+++ Makefile.inc1
@@ -557,7 +557,7 @@ TMAKE=		MAKEOBJDIRPREFIX=${OBJTREE} \
 # cross-tools stage
 XMAKE=		TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \
 		TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
-		MK_GDB=no MK_TESTS=no
+		MK_GDB=no MK_LLD_IS_LD=${MK_LLD_BOOTSTRAP} MK_TESTS=no
 
 # kernel-tools stage
 KTMAKEENV=	INSTALL="sh ${.CURDIR}/tools/install.sh" \
@@ -1786,7 +1786,8 @@ update: .PHONY
 
 # ELF Tool Chain libraries are needed for ELF tools and dtrace tools.
 # r296685 fix cross-endian objcopy
-.if ${BOOTSTRAPPING} < 1100102
+# r310724 fixed PR 215350, a crash in libdwarf with objects built by GCC 6.2.
+.if ${BOOTSTRAPPING} < 1200020
 _elftoolchain_libs= lib/libelf lib/libdwarf
 .endif
 
@@ -1984,8 +1985,12 @@ _gcc_tools= gnu/usr.bin/cc/cc_tools
 _rescue=rescue/rescue
 .endif
 
+.if ${MK_TCSH} != "no"
+_tcsh=bin/csh
+.endif
+
 .for _tool in \
-    bin/csh \
+    ${_tcsh} \
     bin/sh \
     ${LOCAL_TOOL_DIRS} \
     lib/ncurses/ncurses \
@@ -2143,7 +2148,7 @@ native-xtools: .PHONY
     bin/cat \
     bin/chmod \
     bin/cp \
-    bin/csh \
+    ${_tcsh} \
     bin/echo \
     bin/expr \
     bin/hostname \
diff --git ObsoleteFiles.inc ObsoleteFiles.inc
index b74fd5344d0c..2e6ec04cfb35 100644
--- ObsoleteFiles.inc
+++ ObsoleteFiles.inc
@@ -38,6 +38,13 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20170913: remove unneeded catman utility
+OLD_FILES+=etc/periodic/weekly/330.catman
+OLD_FILES+=usr/bin/catman
+OLD_FILES+=usr/libexec/catman.local
+OLD_FILES+=usr/share/man/man1/catman.1.gz
+OLD_FILES+=usr/share/man/man8/catman.local.8.gz
+
 # 20170802: ksyms(4) ioctl interface was removed
 OLD_FILES+=usr/include/sys/ksyms.h
 
diff --git UPDATING UPDATING
index b50ab45fa1c5..7d109a5de103 100644
--- UPDATING
+++ UPDATING
@@ -51,6 +51,29 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW:
 
 ****************************** SPECIAL WARNING: ******************************
 
+20170912:
+	The default serial number format for CTL LUNs has changed.  This will
+	affect users who use /dev/diskid/* device nodes, or whose FibreChannel
+	or iSCSI clients care about their LUNs' serial numbers.  Users who
+	require serial number stability should hardcode serial numbers in
+	/etc/ctl.conf .
+
+20170912:
+	For 32-bit arm compiled for hard-float support, soft-floating point
+	binaries now always get their shared libraries from
+	LD_SOFT_LIBRARY_PATH (in the past, this was only used if
+	/usr/libsoft also existed). Only users with a hard-float ld.so, but
+	soft-float everything else should be affected.
+
+20170826:
+       During boot the geli passphrase will be hidden. To restore previous
+       behavior see geli(8) configuration options.
+
+20170825:
+	Move PMTUD blackhole counters to TCPSTATS and remove them from bare
+	sysctl values.  Minor nit, but requires a rebuild of both world/kernel
+	to complete.
+
 20170814:
 	"make check" behavior (made in ^/head@r295380) has been changed to
 	execute from a limited sandbox, as opposed to executing from
diff --git bin/chflags/Makefile bin/chflags/Makefile
index db9defdcded3..e37650780a1d 100644
--- bin/chflags/Makefile
+++ bin/chflags/Makefile
@@ -4,4 +4,7 @@
 PACKAGE=runtime
 PROG=	chflags
 
+HAS_TESTS=
+SUBDIR.${MK_TESTS}+= tests
+
 .include <bsd.prog.mk>
diff --git bin/chflags/tests/Makefile bin/chflags/tests/Makefile
new file mode 100644
index 000000000000..e0737b090b95
--- /dev/null
+++ bin/chflags/tests/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+ATF_TESTS_SH+=  chflags_test
+
+.include <bsd.test.mk>
diff --git bin/chflags/tests/chflags_test.sh bin/chflags/tests/chflags_test.sh
new file mode 100644
index 000000000000..5574e370d68d
--- /dev/null
+++ bin/chflags/tests/chflags_test.sh
@@ -0,0 +1,63 @@
+#
+# Copyright 2017 Shivansh Rai
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+#
+# $FreeBSD$
+#
+
+usage_output='usage: chflags'
+
+atf_test_case invalid_usage
+invalid_usage_head()
+{
+	atf_set "descr" "Verify that an invalid usage with a supported option produces a valid error message"
+}
+
+invalid_usage_body()
+{
+	atf_check -s not-exit:0 -e match:"$usage_output" chflags -f
+	atf_check -s not-exit:0 -e match:"$usage_output" chflags -H
+	atf_check -s not-exit:0 -e match:"$usage_output" chflags -h
+	atf_check -s not-exit:0 -e match:"$usage_output" chflags -L
+	atf_check -s not-exit:0 -e match:"$usage_output" chflags -P
+	atf_check -s not-exit:0 -e match:"$usage_output" chflags -R
+	atf_check -s not-exit:0 -e match:"$usage_output" chflags -v
+}
+
+atf_test_case no_arguments
+no_arguments_head()
+{
+	atf_set "descr" "Verify that chflags(1) fails and generates a valid usage message when no arguments are supplied"
+}
+
+no_arguments_body()
+{
+	atf_check -s not-exit:0 -e match:"$usage_output" chflags
+}
+
+atf_init_test_cases()
+{
+	atf_add_test_case invalid_usage
+	atf_add_test_case no_arguments
+}
diff --git bin/dd/args.c bin/dd/args.c
index 5c82983beecf..7a39ada74db1 100644
--- bin/dd/args.c
+++ bin/dd/args.c
@@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$");
 
 #include <sys/types.h>
 
+#include <ctype.h>
 #include <err.h>
 #include <errno.h>
 #include <inttypes.h>
@@ -184,7 +185,7 @@ f_bs(char *arg)
 
 	res = get_num(arg);
 	if (res < 1 || res > SSIZE_MAX)
-		errx(1, "bs must be between 1 and %jd", (intmax_t)SSIZE_MAX);
+		errx(1, "bs must be between 1 and %zd", (ssize_t)SSIZE_MAX);
 	in.dbsz = out.dbsz = (size_t)res;
 }
 
@@ -195,22 +196,22 @@ f_cbs(char *arg)
 
 	res = get_num(arg);
 	if (res < 1 || res > SSIZE_MAX)
-		errx(1, "cbs must be between 1 and %jd", (intmax_t)SSIZE_MAX);
+		errx(1, "cbs must be between 1 and %zd", (ssize_t)SSIZE_MAX);
 	cbsz = (size_t)res;
 }
 
 static void
 f_count(char *arg)
 {
-	intmax_t res;
+	uintmax_t res;
 
-	res = (intmax_t)get_num(arg);
-	if (res < 0)
-		errx(1, "count cannot be negative");
+	res = get_num(arg);
+	if (res == UINTMAX_MAX)
+		errc(1, ERANGE, "%s", oper);
 	if (res == 0)
-		cpy_cnt = (uintmax_t)-1;
+		cpy_cnt = UINTMAX_MAX;
 	else
-		cpy_cnt = (uintmax_t)res;
+		cpy_cnt = res;
 }
 
 static void
@@ -219,7 +220,7 @@ f_files(char *arg)
 
 	files_cnt = get_num(arg);
 	if (files_cnt < 1)
-		errx(1, "files must be between 1 and %jd", (uintmax_t)-1);
+		errx(1, "files must be between 1 and %zu", SIZE_MAX);
 }
 
 static void
@@ -240,8 +241,8 @@ f_ibs(char *arg)
 	if (!(ddflags & C_BS)) {
 		res = get_num(arg);
 		if (res < 1 || res > SSIZE_MAX)
-			errx(1, "ibs must be between 1 and %jd",
-			    (intmax_t)SSIZE_MAX);
+			errx(1, "ibs must be between 1 and %zd",
+			    (ssize_t)SSIZE_MAX);
 		in.dbsz = (size_t)res;
 	}
 }
@@ -261,8 +262,8 @@ f_obs(char *arg)
 	if (!(ddflags & C_BS)) {
 		res = get_num(arg);
 		if (res < 1 || res > SSIZE_MAX)
-			errx(1, "obs must be between 1 and %jd",
-			    (intmax_t)SSIZE_MAX);
+			errx(1, "obs must be between 1 and %zd",
+			    (ssize_t)SSIZE_MAX);
 		out.dbsz = (size_t)res;
 	}
 }
diff --git bin/dd/conv.c bin/dd/conv.c
index 89987b3ea9d1..5d8e771e33dc 100644
--- bin/dd/conv.c
+++ bin/dd/conv.c
@@ -133,7 +133,7 @@ block(void)
 	 */
 	ch = 0;
 	for (inp = in.dbp - in.dbcnt, outp = out.dbp; in.dbcnt;) {
-		maxlen = MIN(cbsz, in.dbcnt);
+		maxlen = MIN(cbsz, (size_t)in.dbcnt);
 		if ((t = ctab) != NULL)
 			for (cnt = 0; cnt < maxlen && (ch = *inp++) != '\n';
 			    ++cnt)
@@ -146,7 +146,7 @@ block(void)
 		 * Check for short record without a newline.  Reassemble the
 		 * input block.
 		 */
-		if (ch != '\n' && in.dbcnt < cbsz) {
+		if (ch != '\n' && (size_t)in.dbcnt < cbsz) {
 			(void)memmove(in.db, in.dbp - in.dbcnt, in.dbcnt);
 			break;
 		}
@@ -228,7 +228,7 @@ unblock(void)
 	 * translation has to already be done or we might not recognize the
 	 * spaces.
 	 */
-	for (inp = in.db; in.dbcnt >= cbsz; inp += cbsz, in.dbcnt -= cbsz) {
+	for (inp = in.db; (size_t)in.dbcnt >= cbsz; inp += cbsz, in.dbcnt -= cbsz) {
 		for (t = inp + cbsz - 1; t >= inp && *t == ' '; --t)
 			;
 		if (t >= inp) {
diff --git bin/dd/dd.c bin/dd/dd.c
index 22d2bd5d8e34..3ac110355dec 100644
--- bin/dd/dd.c
+++ bin/dd/dd.c
@@ -204,10 +204,10 @@ setup(void)
 	 * record oriented I/O, only need a single buffer.
 	 */
 	if (!(ddflags & (C_BLOCK | C_UNBLOCK))) {
-		if ((in.db = malloc(out.dbsz + in.dbsz - 1)) == NULL)
+		if ((in.db = malloc((size_t)out.dbsz + in.dbsz - 1)) == NULL)
 			err(1, "input buffer");
 		out.db = in.db;
-	} else if ((in.db = malloc(MAX(in.dbsz, cbsz) + cbsz)) == NULL ||
+	} else if ((in.db = malloc(MAX((size_t)in.dbsz, cbsz) + cbsz)) == NULL ||
 	    (out.db = malloc(out.dbsz + cbsz)) == NULL)
 		err(1, "output buffer");
 
@@ -405,7 +405,7 @@ dd_in(void)
 			++st.in_full;
 
 		/* Handle full input blocks. */
-		} else if ((size_t)n == in.dbsz) {
+		} else if ((size_t)n == (size_t)in.dbsz) {
 			in.dbcnt += in.dbrcnt = n;
 			++st.in_full;
 
@@ -562,7 +562,7 @@ dd_out(int force)
 			outp += nw;
 			st.bytes += nw;
 
-			if ((size_t)nw == n && n == out.dbsz)
+			if ((size_t)nw == n && n == (size_t)out.dbsz)
 				++st.out_full;
 			else
 				++st.out_part;
diff --git bin/dd/dd.h bin/dd/dd.h
index 87def085d745..932530262526 100644
--- bin/dd/dd.h
+++ bin/dd/dd.h
@@ -38,10 +38,9 @@
 typedef struct {
 	u_char		*db;		/* buffer address */
 	u_char		*dbp;		/* current buffer I/O address */
-	/* XXX ssize_t? */
-	size_t		dbcnt;		/* current buffer byte count */
-	size_t		dbrcnt;		/* last read byte count */
-	size_t		dbsz;		/* block size */
+	ssize_t		dbcnt;		/* current buffer byte count */
+	ssize_t		dbrcnt;		/* last read byte count */
+	ssize_t		dbsz;		/* block size */
 
 #define	ISCHR		0x01		/* character device (warn on short) */
 #define	ISPIPE		0x02		/* pipe-like (see position.c) */
diff --git bin/dd/position.c bin/dd/position.c
index d816716456fe..a4f3b46f167e 100644
--- bin/dd/position.c
+++ bin/dd/position.c
@@ -207,7 +207,7 @@ pos_out(void)
 			n = write(out.fd, out.db, out.dbsz);
 			if (n == -1)
 				err(1, "%s", out.name);
-			if ((size_t)n != out.dbsz)
+			if (n != out.dbsz)
 				errx(1, "%s: write failure", out.name);
 		}
 		break;
diff --git bin/mkdir/Makefile bin/mkdir/Makefile
index 45876288fc40..ab05a100f39b 100644
--- bin/mkdir/Makefile
+++ bin/mkdir/Makefile
@@ -4,4 +4,7 @@
 PACKAGE=runtime
 PROG=	mkdir
 
+HAS_TESTS=
+SUBDIR.${MK_TESTS}+= tests
+
 .include <bsd.prog.mk>
diff --git bin/mkdir/tests/Makefile bin/mkdir/tests/Makefile
new file mode 100644
index 000000000000..3b28a958bea0
--- /dev/null
+++ bin/mkdir/tests/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+ATF_TESTS_SH+=  mkdir_test
+
+.include <bsd.test.mk>
diff --git bin/mkdir/tests/mkdir_test.sh bin/mkdir/tests/mkdir_test.sh
new file mode 100644
index 000000000000..985a486d2075
--- /dev/null
+++ bin/mkdir/tests/mkdir_test.sh
@@ -0,0 +1,61 @@
+#
+# Copyright 2017 Shivansh Rai
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+#
+# $FreeBSD$
+#
+
+usage_output='usage: mkdir'
+
+atf_test_case invalid_usage
+invalid_usage_head()
+{
+	atf_set "descr" "Verify that an invalid usage with a supported option produces a valid error message"
+}
+
+invalid_usage_body()
+{
+	atf_check -s not-exit:0 -e inline:"mkdir: option requires an argument -- m
+usage: mkdir [-pv] [-m mode] directory_name ...
+" mkdir -m
+	atf_check -s not-exit:0 -e match:"$usage_output" mkdir -p
+	atf_check -s not-exit:0 -e match:"$usage_output" mkdir -v
+}
+
+atf_test_case no_arguments
+no_arguments_head()
+{
+	atf_set "descr" "Verify that mkdir(1) fails and generates a valid usage message when no arguments are supplied"
+}
+
+no_arguments_body()
+{
+	atf_check -s not-exit:0 -e match:"$usage_output" mkdir
+}
+
+atf_init_test_cases()
+{
+	atf_add_test_case invalid_usage
+	atf_add_test_case no_arguments
+}
diff --git bin/pkill/pkill.c bin/pkill/pkill.c
index 380dc29e1f04..8a307a6022ea 100644
--- bin/pkill/pkill.c
+++ bin/pkill/pkill.c
@@ -568,7 +568,7 @@ main(int argc, char **argv)
 			continue;
 		rv |= (*action)(kp);
 	}
-	if (rv && pgrep)
+	if (rv && pgrep && !quiet)
 		putchar('\n');
 	if (!did_action && !pgrep && longfmt)
 		fprintf(stderr,
diff --git bin/ps/print.c bin/ps/print.c
index d84628771ff0..cb63369a3992 100644
--- bin/ps/print.c
+++ bin/ps/print.c
@@ -262,9 +262,9 @@ state(KINFO *k, VARENT *ve __unused)
 	cp++;
 	if (!(flag & P_INMEM))
 		*cp++ = 'W';
-	if (k->ki_p->ki_nice < NZERO)
+	if (k->ki_p->ki_nice < NZERO || k->ki_p->ki_pri.pri_class == PRI_REALTIME)
 		*cp++ = '<';
-	else if (k->ki_p->ki_nice > NZERO)
+	else if (k->ki_p->ki_nice > NZERO || k->ki_p->ki_pri.pri_class == PRI_IDLE)
 		*cp++ = 'N';
 	if (flag & P_TRACED)
 		*cp++ = 'X';
@@ -274,6 +274,8 @@ state(KINFO *k, VARENT *ve __unused)
 		*cp++ = 'V';
 	if ((flag & P_SYSTEM) || k->ki_p->ki_lock > 0)
 		*cp++ = 'L';
+	if ((k->ki_p->ki_cr_flags & CRED_FLAG_CAPMODE) != 0)
+		*cp++ = 'C';
 	if (k->ki_p->ki_kiflag & KI_SLEADER)
 		*cp++ = 's';
 	if ((flag & P_CONTROLT) && k->ki_p->ki_pgid == k->ki_p->ki_tpgid)
diff --git bin/ps/ps.1 bin/ps/ps.1
index b5270cfcdecc..649f5e9e7082 100644
--- bin/ps/ps.1
+++ bin/ps/ps.1
@@ -29,7 +29,7 @@
 .\"     @(#)ps.1	8.3 (Berkeley) 4/18/94
 .\" $FreeBSD$
 .\"
-.Dd July 25, 2017
+.Dd September 7, 2017
 .Dt PS 1
 .Os
 .Sh NAME
@@ -436,6 +436,10 @@ information:
 The process is in the foreground process group of its control terminal.
 .It Li <
 The process has raised CPU scheduling priority.
+.It Li C
+The process is in
+.Xr capsicum 4
+capability mode.
 .It Li E
 The process is trying to exit.
 .It Li J
@@ -541,7 +545,7 @@ short-term CPU usage factor (for scheduling)
 .It Cm dsiz
 data size (in Kbytes)
 .It Cm emul
-system-call emulation environment
+system-call emulation environment (ABI)
 .It Cm etime
 elapsed running time, format
 .Op days- Ns
diff --git bin/rcp/Makefile bin/rcp/Makefile
index 6c1cfb18a8c5..b1165c642248 100644
--- bin/rcp/Makefile
+++ bin/rcp/Makefile
@@ -11,4 +11,7 @@ PACKAGE=rcmds
 BINOWN=	root
 BINMODE=4555
 
+HAS_TESTS=
+SUBDIR.${MK_TESTS}+= tests
+
 .include <bsd.prog.mk>
diff --git bin/rcp/tests/Makefile bin/rcp/tests/Makefile
new file mode 100644
index 000000000000..99d653aa89a8
--- /dev/null
+++ bin/rcp/tests/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+ATF_TESTS_SH+=  rcp_test
+
+.include <bsd.test.mk>
diff --git bin/rcp/tests/rcp_test.sh bin/rcp/tests/rcp_test.sh
new file mode 100644
index 000000000000..62a072b3b6dd
--- /dev/null
+++ bin/rcp/tests/rcp_test.sh
@@ -0,0 +1,60 @@
+#
+# Copyright 2017 Shivansh Rai
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+#
+# $FreeBSD$
+#
+
+usage_output='usage: rcp'
+
+atf_test_case invalid_usage
+invalid_usage_head()
+{
+	atf_set "descr" "Verify that an invalid usage with a supported option produces a valid error message"
+}
+
+invalid_usage_body()
+{
+	atf_check -s not-exit:0 -e match:"$usage_output" rcp -4
+	atf_check -s not-exit:0 -e match:"$usage_output" rcp -6
+	atf_check -s not-exit:0 -e match:"$usage_output" rcp -p
+	atf_check -s not-exit:0 -e match:"$usage_output" rcp -r
+}
+
+atf_test_case no_arguments
+no_arguments_head()
+{
+	atf_set "descr" "Verify that rcp(1) fails and generates a valid usage message when no arguments are supplied"
+}
+
+no_arguments_body()
+{
+	atf_check -s not-exit:0 -e match:"$usage_output" rcp
+}
+
+atf_init_test_cases()
+{
+	atf_add_test_case invalid_usage
+	atf_add_test_case no_arguments
+}
diff --git bin/rmdir/Makefile bin/rmdir/Makefile
index a40686dba51a..534c66282a70 100644
--- bin/rmdir/Makefile
+++ bin/rmdir/Makefile
@@ -4,4 +4,7 @@
 PACKAGE=runtime
 PROG=	rmdir
 
+HAS_TESTS=
+SUBDIR.${MK_TESTS}+= tests
+
 .include <bsd.prog.mk>
diff --git bin/rmdir/tests/Makefile bin/rmdir/tests/Makefile
new file mode 100644
index 000000000000..abf3a1e02a37
--- /dev/null
+++ bin/rmdir/tests/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+ATF_TESTS_SH+=  rmdir_test
+
+.include <bsd.test.mk>
diff --git bin/rmdir/tests/rmdir_test.sh bin/rmdir/tests/rmdir_test.sh
new file mode 100644
index 000000000000..204039c28311
--- /dev/null
+++ bin/rmdir/tests/rmdir_test.sh
@@ -0,0 +1,58 @@
+#
+# Copyright 2017 Shivansh Rai
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+#
+# $FreeBSD$
+#
+
+usage_output='usage: rmdir'
+
+atf_test_case invalid_usage
+invalid_usage_head()
+{
+	atf_set "descr" "Verify that an invalid usage with a supported option produces a valid error message"
+}
+
+invalid_usage_body()
+{
+	atf_check -s not-exit:0 -e match:"$usage_output" rmdir -p
+	atf_check -s not-exit:0 -e match:"$usage_output" rmdir -v
+}
+
+atf_test_case no_arguments
+no_arguments_head()
+{
+	atf_set "descr" "Verify that rmdir(1) fails and generates a valid usage message when no arguments are supplied"
+}
+
+no_arguments_body()
+{
+	atf_check -s not-exit:0 -e match:"$usage_output" rmdir
+}
+
+atf_init_test_cases()
+{
+	atf_add_test_case invalid_usage
+	atf_add_test_case no_arguments
+}
diff --git cddl/compat/opensolaris/misc/zmount.c cddl/compat/opensolaris/misc/zmount.c
index d46b378ea92a..3c965b05d8b3 100644
--- cddl/compat/opensolaris/misc/zmount.c
+++ cddl/compat/opensolaris/misc/zmount.c
@@ -74,7 +74,7 @@ zmount(const char *spec, const char *dir, int mflag, char *fstype,
     char *dataptr, int datalen, char *optptr, int optlen)
 {
 	struct iovec *iov;
-	char *optstr, *os, *p;
+	char *optstr, *os, *p, *tofree;
 	int iovlen, rv;
 
 	assert(spec != NULL);
@@ -87,7 +87,7 @@ zmount(const char *spec, const char *dir, int mflag, char *fstype,
 	assert(optptr != NULL);
 	assert(optlen > 0);
 
-	optstr = strdup(optptr);
+	tofree = optstr = strdup(optptr);
 	assert(optstr != NULL);
 
 	iov = NULL;
@@ -98,11 +98,9 @@ zmount(const char *spec, const char *dir, int mflag, char *fstype,
 	build_iovec(&iov, &iovlen, "fspath", __DECONST(char *, dir),
 	    (size_t)-1);
 	build_iovec(&iov, &iovlen, "from", __DECONST(char *, spec), (size_t)-1);
-	for (p = optstr; p != NULL; strsep(&p, ",/ ")) {
-		if (*p != '\0')
-			build_iovec(&iov, &iovlen, p, NULL, (size_t)-1);
-	}
+	while ((p = strsep(&optstr, ",/")) != NULL)
+		build_iovec(&iov, &iovlen, p, NULL, (size_t)-1);
 	rv = nmount(iov, iovlen, 0);
-	free(optstr);
+	free(tofree);
 	return (rv);
 }
diff --git cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.inet_ntop.d cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.inet_ntop.d
index 21452d6e96e7..37f928708904 100644
--- cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.inet_ntop.d
+++ cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.inet_ntop.d
@@ -28,9 +28,6 @@
 
 #pragma D option quiet
 
-inline int AF_INET = 2;
-inline int AF_INET6 = 28;
-
 in_addr_t *ip4a;
 in_addr_t *ip4b;
 in_addr_t *ip4c;
diff --git cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/err.D_LLQUANT_MAGTOOBIG.offbyone.d cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/err.D_LLQUANT_MAGTOOBIG.offbyone.d
new file mode 100644
index 000000000000..47dccafbe4c4
--- /dev/null
+++ cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/err.D_LLQUANT_MAGTOOBIG.offbyone.d
@@ -0,0 +1,25 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source.  A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright 2017 Mark Johnston <markj@FreeBSD.org>
+ */
+
+/*
+ * A regression test for FreeBSD r322773. 100^9 fits in 64 bits, but
+ * llquantize() will create buckets up to 100^{10}, which does not fit.
+ */
+
+BEGIN
+{
+	@ = llquantize(0, 100, 0, 9, 100);
+	exit(0);
+}
diff --git cddl/contrib/opensolaris/cmd/zpool/zpool.8 cddl/contrib/opensolaris/cmd/zpool/zpool.8
index c09448a75eed..d021e25b425f 100644
--- cddl/contrib/opensolaris/cmd/zpool/zpool.8
+++ cddl/contrib/opensolaris/cmd/zpool/zpool.8
@@ -19,14 +19,15 @@
 .\" information: Portions Copyright [yyyy] [name of copyright owner]
 .\"
 .\" Copyright (c) 2010, Sun Microsystems, Inc. All Rights Reserved.
-.\" Copyright 2011, Nexenta Systems, Inc. All Rights Reserved.
 .\" Copyright (c) 2011, Justin T. Gibbs <gibbs@FreeBSD.org>
-.\" Copyright (c) 2013 by Delphix. All Rights Reserved.
 .\" Copyright (c) 2012, Glen Barber <gjb@FreeBSD.org>
+.\" Copyright (c) 2013 by Delphix. All Rights Reserved.
+.\" Copyright 2017 Nexenta Systems, Inc.
+.\" Copyright (c) 2017 Datto Inc.
 .\"
 .\" $FreeBSD$
 .\"
-.Dd July 26, 2014
+.Dd September 08, 2017
 .Dt ZPOOL 8
 .Os
 .Sh NAME
@@ -153,7 +154,7 @@
 .Op Ar new_device
 .Nm
 .Cm scrub
-.Op Fl s
+.Op Fl s | Fl p
 .Ar pool ...
 .Nm
 .Cm set
@@ -1543,43 +1544,54 @@ manner.
 .It Xo
 .Nm
 .Cm scrub
-.Op Fl s
+.Op Fl s | Fl p
 .Ar pool ...
 .Xc
 .Pp
-Begins a scrub. The scrub examines all data in the specified pools to verify
-that it checksums correctly. For replicated (mirror or
-.No raidz )
-devices,
-.Tn ZFS
-automatically repairs any damage discovered during the scrub. The
-.Qq Nm Cm status
+Begins a scrub or resumes a paused scrub.
+The scrub examines all data in the specified pools to verify that it checksums
+correctly.
+For replicated
+.Pq mirror or raidz
+devices, ZFS automatically repairs any damage discovered during the scrub.
+The
+.Nm zpool Cm status
 command reports the progress of the scrub and summarizes the results of the
 scrub upon completion.
 .Pp
-Scrubbing and resilvering are very similar operations. The difference is that
-resilvering only examines data that
-.Tn ZFS
-knows to be out of date (for example, when attaching a new device to a mirror
-or replacing an existing device), whereas scrubbing examines all data to
-discover silent errors due to hardware faults or disk failure.
-.Pp
-Because scrubbing and resilvering are
-.Tn I/O Ns -intensive
-operations,
-.Tn ZFS
-only allows one at a time. If a scrub is already in progress, the
-.Qq Nm Cm scrub
-command returns an error. To start a new scrub, you have to stop the old scrub
-with the
-.Qq Nm Cm scrub Fl s
-command first. If a resilver is in progress,
-.Tn ZFS
-does not allow a scrub to be started until the resilver completes.
-.Bl -tag -width indent
+Scrubbing and resilvering are very similar operations.
+The difference is that resilvering only examines data that ZFS knows to be out
+of date
+.Po
+for example, when attaching a new device to a mirror or replacing an existing
+device
+.Pc ,
+whereas scrubbing examines all data to discover silent errors due to hardware
+faults or disk failure.
+.Pp
+Because scrubbing and resilvering are I/O-intensive operations, ZFS only allows
+one at a time.
+If a scrub is paused, the
+.Nm zpool Cm scrub
+resumes it.
+If a resilver is in progress, ZFS does not allow a scrub to be started until the
+resilver completes.
+.Bl -tag -width Ds
 .It Fl s
 Stop scrubbing.
 .El
+.Bl -tag -width Ds
+.It Fl p
+Pause scrubbing.
+Scrub pause state and progress are periodically synced to disk.
+If the system is restarted or pool is exported during a paused scrub,
+even after import, scrub will remain paused until it is resumed.
+Once resumed the scrub will pick up from the place where it was last
+checkpointed to disk.
+To resume a paused scrub issue
+.Nm zpool Cm scrub
+again.
+.El
 .It Xo
 .Nm
 .Cm set
diff --git cddl/contrib/opensolaris/cmd/zpool/zpool_main.c cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
index e2dc24c5fa91..572265fbaf9e 100644
--- cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
+++ cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
@@ -27,6 +27,7 @@
  * Copyright (c) 2013 by Prasad Joshi (sTec). All rights reserved.
  * Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>.
  * Copyright 2016 Nexenta Systems, Inc.
+ * Copyright (c) 2017 Datto Inc.
  */
 
 #include <solaris.h>
@@ -252,7 +253,7 @@ get_usage(zpool_help_t idx)
 	case HELP_REOPEN:
 		return (gettext("\treopen <pool>\n"));
 	case HELP_SCRUB:
-		return (gettext("\tscrub [-s] <pool> ...\n"));
+		return (gettext("\tscrub [-s | -p] <pool> ...\n"));
 	case HELP_STATUS:
 		return (gettext("\tstatus [-vx] [-T d|u] [pool] ... [interval "
 		    "[count]]\n"));
@@ -3825,6 +3826,7 @@ typedef struct scrub_cbdata {
 	int	cb_type;
 	int	cb_argc;
 	char	**cb_argv;
+	pool_scrub_cmd_t cb_scrub_cmd;
 } scrub_cbdata_t;
 
 int
@@ -3842,15 +3844,16 @@ scrub_callback(zpool_handle_t *zhp, void *data)
 		return (1);
 	}
 
-	err = zpool_scan(zhp, cb->cb_type);
+	err = zpool_scan(zhp, cb->cb_type, cb->cb_scrub_cmd);
 
 	return (err != 0);
 }
 
 /*
- * zpool scrub [-s] <pool> ...
+ * zpool scrub [-s | -p] <pool> ...
  *
  *	-s	Stop.  Stops any in-progress scrub.
+ *	-p	Pause. Pause in-progress scrub.
  */
 int
 zpool_do_scrub(int argc, char **argv)
@@ -3859,13 +3862,17 @@ zpool_do_scrub(int argc, char **argv)
 	scrub_cbdata_t cb;
 
 	cb.cb_type = POOL_SCAN_SCRUB;
+	cb.cb_scrub_cmd = POOL_SCRUB_NORMAL;
 
 	/* check options */
-	while ((c = getopt(argc, argv, "s")) != -1) {
+	while ((c = getopt(argc, argv, "sp")) != -1) {
 		switch (c) {
 		case 's':
 			cb.cb_type = POOL_SCAN_NONE;
 			break;
+		case 'p':
+			cb.cb_scrub_cmd = POOL_SCRUB_PAUSE;
+			break;
 		case '?':
 			(void) fprintf(stderr, gettext("invalid option '%c'\n"),
 			    optopt);
@@ -3873,6 +3880,13 @@ zpool_do_scrub(int argc, char **argv)
 		}
 	}
 
+	if (cb.cb_type == POOL_SCAN_NONE &&
+	    cb.cb_scrub_cmd == POOL_SCRUB_PAUSE) {
+		(void) fprintf(stderr, gettext("invalid option combination: "
+		    "-s and -p are mutually exclusive\n"));
+		usage(B_FALSE);
+	}
+
 	cb.cb_argc = argc;
 	cb.cb_argv = argv;
 	argc -= optind;
@@ -3901,7 +3915,7 @@ typedef struct status_cbdata {
 void
 print_scan_status(pool_scan_stat_t *ps)
 {
-	time_t start, end;
+	time_t start, end, pause;
 	uint64_t elapsed, mins_left, hours_left;
 	uint64_t pass_exam, examined, total;
 	uint_t rate;
@@ -3919,6 +3933,7 @@ print_scan_status(pool_scan_stat_t *ps)
 
 	start = ps->pss_start_time;
 	end = ps->pss_end_time;
+	pause = ps->pss_pass_scrub_pause;
 	zfs_nicenum(ps->pss_processed, processed_buf, sizeof (processed_buf));
 
 	assert(ps->pss_func == POOL_SCAN_SCRUB ||
@@ -3961,8 +3976,17 @@ print_scan_status(pool_scan_stat_t *ps)
 	 * Scan is in progress.
 	 */
 	if (ps->pss_func == POOL_SCAN_SCRUB) {
-		(void) printf(gettext("scrub in progress since %s"),
-		    ctime(&start));
+		if (pause == 0) {
+			(void) printf(gettext("scrub in progress since %s"),
+			    ctime(&start));
+		} else {
+			char buf[32];
+			struct tm *p = localtime(&pause);
+			(void) strftime(buf, sizeof (buf), "%a %b %e %T %Y", p);
+			(void) printf(gettext("scrub paused since %s\n"), buf);
+			(void) printf(gettext("\tscrub started on   %s"),
+			    ctime(&start));
+		}
 	} else if (ps->pss_func == POOL_SCAN_RESILVER) {
 		(void) printf(gettext("resilver in progress since %s"),
 		    ctime(&start));
@@ -3974,6 +3998,7 @@ print_scan_status(pool_scan_stat_t *ps)
 
 	/* elapsed time for this pass */
 	elapsed = time(NULL) - ps->pss_pass_start;
+	elapsed -= ps->pss_pass_scrub_spent_paused;
 	elapsed = elapsed ? elapsed : 1;
 	pass_exam = ps->pss_pass_exam ? ps->pss_pass_exam : 1;
 	rate = pass_exam / elapsed;
@@ -3983,19 +4008,25 @@ print_scan_status(pool_scan_stat_t *ps)
 
 	zfs_nicenum(examined, examined_buf, sizeof (examined_buf));
 	zfs_nicenum(total, total_buf, sizeof (total_buf));
-	zfs_nicenum(rate, rate_buf, sizeof (rate_buf));
 
 	/*
 	 * do not print estimated time if hours_left is more than 30 days
+	 * or we have a paused scrub
 	 */
-	(void) printf(gettext("        %s scanned out of %s at %s/s"),
-	    examined_buf, total_buf, rate_buf);
-	if (hours_left < (30 * 24)) {
-		(void) printf(gettext(", %lluh%um to go\n"),
-		    (u_longlong_t)hours_left, (uint_t)(mins_left % 60));
+	if (pause == 0) {
+		zfs_nicenum(rate, rate_buf, sizeof (rate_buf));
+		(void) printf(gettext("\t%s scanned out of %s at %s/s"),
+		    examined_buf, total_buf, rate_buf);
+		if (hours_left < (30 * 24)) {
+			(void) printf(gettext(", %lluh%um to go\n"),
+			    (u_longlong_t)hours_left, (uint_t)(mins_left % 60));
+		} else {
+			(void) printf(gettext(
+			    ", (scan is slow, no estimated time)\n"));
+		}
 	} else {
-		(void) printf(gettext(
-		    ", (scan is slow, no estimated time)\n"));
+		(void) printf(gettext("\t%s scanned out of %s\n"),
+		    examined_buf, total_buf);
 	}
 
 	if (ps->pss_func == POOL_SCAN_RESILVER) {
diff --git cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c
index 1216a389e239..8ec5dd61b8ee 100644
--- cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c
+++ cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c
@@ -1503,7 +1503,7 @@ dt_compile_agg(dtrace_hdl_t *dtp, dt_node_t *dnp, dtrace_stmtdesc_t *sdp)
 			    "divide a power of the factor\n");
 		}
 
-		for (i = 0, order = 1; i < args[2].value; i++) {
+		for (i = 0, order = 1; i <= args[2].value + 1; i++) {
 			if (order * args[0].value > order) {
 				order *= args[0].value;
 				continue;
@@ -1511,7 +1511,7 @@ dt_compile_agg(dtrace_hdl_t *dtp, dt_node_t *dnp, dtrace_stmtdesc_t *sdp)
 
 			dnerror(dnp, D_LLQUANT_MAGTOOBIG, "llquantize( ) "
 			    "factor (%d) raised to power of high magnitude "
-			    "(%d) overflows 64-bits\n", args[0].value,
+			    "(%d) plus 1 overflows 64-bits\n", args[0].value,
 			    args[2].value);
 		}
 
diff --git cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
index 3a8061ed94d0..c28ac38797ab 100644
--- cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
+++ cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
@@ -963,7 +963,7 @@ dt_provmod_open(dt_provmod_t **provmod, dt_fdlist_t *dfp)
 
 			(void) snprintf(path, sizeof (path), "/dev/dtrace/%s", p1);
 
-			if ((fd = open(path, O_RDONLY)) == -1)
+			if ((fd = open(path, O_RDONLY | O_CLOEXEC)) == -1)
 				continue; /* failed to open driver; just skip it */
 
 			if (((prov = malloc(sizeof (dt_provmod_t))) == NULL) ||
@@ -1100,7 +1100,7 @@ dt_vopen(int version, int flags, int *errp,
 	 */
 	dt_provmod_open(&provmod, &df);
 
-	dtfd = open("/dev/dtrace/dtrace", O_RDWR);
+	dtfd = open("/dev/dtrace/dtrace", O_RDWR | O_CLOEXEC);
 	err = errno; /* save errno from opening dtfd */
 #if defined(__FreeBSD__)
 	/*
@@ -1109,14 +1109,14 @@ dt_vopen(int version, int flags, int *errp,
 	 */
 	if (err == ENOENT && modfind("dtraceall") < 0) {
 		kldload("dtraceall"); /* ignore the error */
-		dtfd = open("/dev/dtrace/dtrace", O_RDWR);
+		dtfd = open("/dev/dtrace/dtrace", O_RDWR | O_CLOEXEC);
 		err = errno;
 	}
 #endif
 #ifdef illumos
 	ftfd = open("/dev/dtrace/provider/fasttrap", O_RDWR);
 #else
-	ftfd = open("/dev/dtrace/fasttrap", O_RDWR);
+	ftfd = open("/dev/dtrace/fasttrap", O_RDWR | O_CLOEXEC);
 #endif
 	fterr = ftfd == -1 ? errno : 0; /* save errno from open ftfd */
 
@@ -1146,9 +1146,6 @@ dt_vopen(int version, int flags, int *errp,
 		return (set_open_errno(dtp, errp, err));
 	}
 
-	(void) fcntl(dtfd, F_SETFD, FD_CLOEXEC);
-	(void) fcntl(ftfd, F_SETFD, FD_CLOEXEC);
-
 alloc:
 	if ((dtp = malloc(sizeof (dtrace_hdl_t))) == NULL) {
 	        dt_provmod_destroy(&provmod);
diff --git cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h
index 937e9b2c8592..9133238cb848 100644
--- cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h
+++ cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h
@@ -28,6 +28,7 @@
  * Copyright (c) 2013 Steven Hartland. All rights reserved.
  * Copyright (c) 2014 Integros [integros.com]
  * Copyright 2016 Nexenta Systems, Inc.
+ * Copyright (c) 2017 Datto Inc.
  */
 
 #ifndef	_LIBZFS_H
@@ -129,6 +130,7 @@ typedef enum zfs_error {
 	EZFS_DIFF,		/* general failure of zfs diff */
 	EZFS_DIFFDATA,		/* bad zfs diff data */
 	EZFS_POOLREADONLY,	/* pool is in read-only mode */
+	EZFS_SCRUB_PAUSED,	/* scrub currently paused */
 	EZFS_UNKNOWN
 } zfs_error_t;
 
@@ -241,7 +243,7 @@ typedef struct splitflags {
 /*
  * Functions to manipulate pool and vdev state
  */
-extern int zpool_scan(zpool_handle_t *, pool_scan_func_t);
+extern int zpool_scan(zpool_handle_t *, pool_scan_func_t, pool_scrub_cmd_t);
 extern int zpool_clear(zpool_handle_t *, const char *, nvlist_t *);
 extern int zpool_reguid(zpool_handle_t *);
 extern int zpool_reopen(zpool_handle_t *);
@@ -772,6 +774,7 @@ extern int zpool_in_use(libzfs_handle_t *, int, pool_state_t *, char **,
  * Label manipulation.
  */
 extern int zpool_read_label(int, nvlist_t **);
+extern int zpool_read_all_labels(int, nvlist_t **);
 extern int zpool_clear_label(int);
 
 /* is this zvol valid for use as a dump device? */
diff --git cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c
index 3f6e64370b8e..ed20afbac1ca 100644
--- cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c
+++ cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c
@@ -914,6 +914,65 @@ zpool_read_label(int fd, nvlist_t **config)
 	return (0);
 }
 
+/*
+ * Given a file descriptor, read the label information and return an nvlist
+ * describing the configuration, if there is one.
+ * returns the number of valid labels found
+ */
+int
+zpool_read_all_labels(int fd, nvlist_t **config)
+{
+	struct stat64 statbuf;
+	int l;
+	vdev_label_t *label;
+	uint64_t state, txg, size;
+	int nlabels = 0;
+
+	*config = NULL;
+
+	if (fstat64(fd, &statbuf) == -1)
+		return (0);
+	size = P2ALIGN_TYPED(statbuf.st_size, sizeof (vdev_label_t), uint64_t);
+
+	if ((label = malloc(sizeof (vdev_label_t))) == NULL)
+		return (0);
+
+	for (l = 0; l < VDEV_LABELS; l++) {
+		nvlist_t *temp = NULL;
+
+		/* TODO: use aio_read so we can read al 4 labels in parallel */
+		if (pread64(fd, label, sizeof (vdev_label_t),
+		    label_offset(size, l)) != sizeof (vdev_label_t))
+			continue;
+
+		if (nvlist_unpack(label->vl_vdev_phys.vp_nvlist,
+		    sizeof (label->vl_vdev_phys.vp_nvlist), &temp, 0) != 0)
+			continue;
+
+		if (nvlist_lookup_uint64(temp, ZPOOL_CONFIG_POOL_STATE,
+		    &state) != 0 || state > POOL_STATE_L2CACHE) {
+			nvlist_free(temp);
+			temp = NULL;
+			continue;
+		}
+
+		if (state != POOL_STATE_SPARE && state != POOL_STATE_L2CACHE &&
+		    (nvlist_lookup_uint64(temp, ZPOOL_CONFIG_POOL_TXG,
+		    &txg) != 0 || txg == 0)) {
+			nvlist_free(temp);
+			temp = NULL;
+			continue;
+		}
+		if (temp)
+			*config = temp;
+
+		nlabels++;
+	}
+
+	free(label);
+	return (nlabels);
+}
+
 typedef struct rdsk_node {
 	char *rn_name;
 	int rn_dfd;
diff --git cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c
index 60c6266adbad..2bf494f9415f 100644
--- cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c
+++ cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c
@@ -20,9 +20,11 @@
  */
 
 /*
+ * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2014 by Delphix. All rights reserved.
  * Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>
+ * Copyright 2017 RackTop Systems.
  */
 
 /*
@@ -87,7 +89,7 @@ zfs_share_type_t zfs_is_shared_proto(zfs_handle_t *, char **,
     zfs_share_proto_t);
 
 /*
- * The share protocols table must be in the same order as the zfs_share_prot_t
+ * The share protocols table must be in the same order as the zfs_share_proto_t
  * enum in libzfs_impl.h
  */
 typedef struct {
@@ -872,7 +874,7 @@ unshare_one(libzfs_handle_t *hdl, const char *name, const char *mountpoint,
 	/* make sure libshare initialized */
 	if ((err = zfs_init_libshare(hdl, SA_INIT_SHARE_API)) != SA_OK) {
 		free(mntpt);	/* don't need the copy anymore */
-		return (zfs_error_fmt(hdl, EZFS_SHARENFSFAILED,
+		return (zfs_error_fmt(hdl, proto_table[proto].p_unshare_err,
 		    dgettext(TEXT_DOMAIN, "cannot unshare '%s': %s"),
 		    name, _sa_errorstr(err)));
 	}
@@ -883,12 +885,13 @@ unshare_one(libzfs_handle_t *hdl, const char *name, const char *mountpoint,
 	if (share != NULL) {
 		err = zfs_sa_disable_share(share, proto_table[proto].p_name);
 		if (err != SA_OK) {
-			return (zfs_error_fmt(hdl, EZFS_UNSHARENFSFAILED,
+			return (zfs_error_fmt(hdl,
+			    proto_table[proto].p_unshare_err,
 			    dgettext(TEXT_DOMAIN, "cannot unshare '%s': %s"),
 			    name, _sa_errorstr(err)));
 		}
 	} else {
-		return (zfs_error_fmt(hdl, EZFS_UNSHARENFSFAILED,
+		return (zfs_error_fmt(hdl, proto_table[proto].p_unshare_err,
 		    dgettext(TEXT_DOMAIN, "cannot unshare '%s': not found"),
 		    name));
 	}
diff --git cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c
index af1767fac3f5..f2efcbac4ea0 100644
--- cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c
+++ cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c
@@ -25,6 +25,7 @@
  * Copyright (c) 2013, Joyent, Inc. All rights reserved.
  * Copyright 2016 Nexenta Systems, Inc.
  * Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>
+ * Copyright (c) 2017 Datto Inc.
  */
 
 #include <sys/types.h>
@@ -1841,22 +1842,39 @@ zpool_import_props(libzfs_handle_t *hdl, nvlist_t *config, const char *newname,
  * Scan the pool.
  */
 int
-zpool_scan(zpool_handle_t *zhp, pool_scan_func_t func)
+zpool_scan(zpool_handle_t *zhp, pool_scan_func_t func, pool_scrub_cmd_t cmd)
 {
 	zfs_cmd_t zc = { 0 };
 	char msg[1024];
+	int err;
 	libzfs_handle_t *hdl = zhp->zpool_hdl;
 
 	(void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name));
 	zc.zc_cookie = func;
+	zc.zc_flags = cmd;
+
+	if (zfs_ioctl(hdl, ZFS_IOC_POOL_SCAN, &zc) == 0)
+		return (0);
+
+	err = errno;
 
-	if (zfs_ioctl(hdl, ZFS_IOC_POOL_SCAN, &zc) == 0 ||
-	    (errno == ENOENT && func != POOL_SCAN_NONE))
+	/* ECANCELED on a scrub means we resumed a paused scrub */
+	if (err == ECANCELED && func == POOL_SCAN_SCRUB &&
+	    cmd == POOL_SCRUB_NORMAL)
+		return (0);
+
+	if (err == ENOENT && func != POOL_SCAN_NONE && cmd == POOL_SCRUB_NORMAL)
 		return (0);
 
 	if (func == POOL_SCAN_SCRUB) {
-		(void) snprintf(msg, sizeof (msg),
-		    dgettext(TEXT_DOMAIN, "cannot scrub %s"), zc.zc_name);
+		if (cmd == POOL_SCRUB_PAUSE) {
+			(void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN,
+			    "cannot pause scrubbing %s"), zc.zc_name);
+		} else {
+			assert(cmd == POOL_SCRUB_NORMAL);
+			(void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN,
+			    "cannot scrub %s"), zc.zc_name);
+		}
 	} else if (func == POOL_SCAN_NONE) {
 		(void) snprintf(msg, sizeof (msg),
 		    dgettext(TEXT_DOMAIN, "cannot cancel scrubbing %s"),
@@ -1865,7 +1883,7 @@ zpool_scan(zpool_handle_t *zhp, pool_scan_func_t func)
 		assert(!"unexpected result");
 	}
 
-	if (errno == EBUSY) {
+	if (err == EBUSY) {
 		nvlist_t *nvroot;
 		pool_scan_stat_t *ps = NULL;
 		uint_t psc;
@@ -1874,14 +1892,18 @@ zpool_scan(zpool_handle_t *zhp, pool_scan_func_t func)
 		    ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0);
 		(void) nvlist_lookup_uint64_array(nvroot,
 		    ZPOOL_CONFIG_SCAN_STATS, (uint64_t **)&ps, &psc);
-		if (ps && ps->pss_func == POOL_SCAN_SCRUB)
-			return (zfs_error(hdl, EZFS_SCRUBBING, msg));
-		else
+		if (ps && ps->pss_func == POOL_SCAN_SCRUB) {
+			if (cmd == POOL_SCRUB_PAUSE)
+				return (zfs_error(hdl, EZFS_SCRUB_PAUSED, msg));
+			else
+				return (zfs_error(hdl, EZFS_SCRUBBING, msg));
+		} else {
 			return (zfs_error(hdl, EZFS_RESILVERING, msg));
-	} else if (errno == ENOENT) {
+		}
+	} else if (err == ENOENT) {
 		return (zfs_error(hdl, EZFS_NO_SCRUB, msg));
 	} else {
-		return (zpool_standard_error(hdl, errno, msg));
+		return (zpool_standard_error(hdl, err, msg));
 	}
 }
 
diff --git cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c
index b60e25ed859c..a2ae8b043be2 100644
--- cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c
+++ cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c
@@ -24,6 +24,7 @@
  * Copyright (c) 2013, Joyent, Inc. All rights reserved.
  * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
  * Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>
+ * Copyright (c) 2017 Datto Inc.
  */
 
 /*
@@ -224,6 +225,9 @@ libzfs_error_description(libzfs_handle_t *hdl)
 	case EZFS_POSTSPLIT_ONLINE:
 		return (dgettext(TEXT_DOMAIN, "disk was split from this pool "
 		    "into a new one"));
+	case EZFS_SCRUB_PAUSED:
+		return (dgettext(TEXT_DOMAIN, "scrub is paused; "
+		    "use 'zpool scrub' to resume"));
 	case EZFS_SCRUBBING:
 		return (dgettext(TEXT_DOMAIN, "currently scrubbing; "
 		    "use 'zpool scrub -s' to cancel current scrub"));
diff --git cddl/contrib/opensolaris/lib/libzpool/common/kernel.c cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
index 701f0b43bf84..ab1b839975ab 100644
--- cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
+++ cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
@@ -735,11 +735,9 @@ static char ce_suffix[CE_IGNORE][2] = { "", "\n", "\n", "" };
 void
 vpanic(const char *fmt, va_list adx)
 {
-	(void) fprintf(stderr, "error: ");
-	(void) vfprintf(stderr, fmt, adx);
-	(void) fprintf(stderr, "\n");
-
-	abort();	/* think of it as a "user-level crash dump" */
+	char buf[512];
+	(void) vsnprintf(buf, 512, fmt, adx);
+	assfail(buf, NULL, 0);
 }
 
 void
diff --git cddl/lib/libdtrace/Makefile cddl/lib/libdtrace/Makefile
index d55c0d62a764..c33a8c2dd882 100644
--- cddl/lib/libdtrace/Makefile
+++ cddl/lib/libdtrace/Makefile
@@ -54,6 +54,7 @@ DSRCS=		errno.d			\
 		siftr.d			\
 		signal.d		\
 		tcp.d			\
+		socket.d		\
 		udp.d			\
 		unistd.d
 
diff --git cddl/lib/libdtrace/socket.d cddl/lib/libdtrace/socket.d
new file mode 100644
index 000000000000..da8f149b2d10
--- /dev/null
+++ cddl/lib/libdtrace/socket.d
@@ -0,0 +1,301 @@
+/*
+ * Copyright (c) 2017 George V. Neville-Neil
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ *
+ * Translators and flags for the socket structure.  FreeBSD specific code.
+ */
+
+#pragma D depends_on module kernel
+
+/*
+ * Option flags per-socket.
+ */
+#pragma D binding "1.13" SO_DEBUG
+inline int SO_DEBUG =		0x0001;		/* turn on debugging info recording */
+#pragma D binding "1.13" SO_ACCEPTCONN
+inline int SO_ACCEPTCONN = 	0x0002;		/* socket has had listen() */
+#pragma D binding "1.13" SO_REUSEADDR
+inline int SO_REUSEADDR =	0x0004;		/* allow local address reuse */
+#pragma D binding "1.13" SO_KEEPALIVE
+inline int SO_KEEPALIVE =	0x0008;		/* keep connections alive */
+#pragma D binding "1.13" SO_DONTROUTE
+inline int SO_DONTROUTE =	0x0010;		/* just use interface addresses */
+#pragma D binding "1.13" SO_BROADCAST
+inline int SO_BROADCAST =	0x0020;		/* permit sending of broadcast msgs */
+#pragma D binding "1.13" SO_USELOOPBACK
+inline int SO_USELOOPBACK =	0x0040;		/* bypass hardware when possible */
+#pragma D binding "1.13" SO_LINGER
+inline int SO_LINGER =		0x0080;		/* linger on close if data present */
+#pragma D binding "1.13" SO_OOBINLINE
+inline int SO_OOBINLINE =	0x0100;		/* leave received OOB data in line */
+#pragma D binding "1.13" SO_REUSEPORT
+inline int SO_REUSEPORT =	0x0200;		/* allow local address & port reuse */
+#pragma D binding "1.13" SO_TIMESTAMP
+inline int SO_TIMESTAMP =	0x0400;		/* timestamp received dgram traffic */
+#pragma D binding "1.13" SO_NOSIGPIPE
+inline int SO_NOSIGPIPE =	0x0800;		/* no SIGPIPE from EPIPE */
+#pragma D binding "1.13" SO_ACCEPTFILTER
+inline int SO_ACCEPTFILTER =	0x1000;		/* there is an accept filter */
+#pragma D binding "1.13" SO_BINTIME
+inline int SO_BINTIME =		0x2000;		/* timestamp received dgram traffic */
+#pragma D binding "1.13" SO_NO_OFFLOAD
+inline int SO_NO_OFFLOAD =	0x4000;		/* socket cannot be offloaded */
+#pragma D binding "1.13" SO_NO_DDP
+inline int SO_NO_DDP =		0x8000;		/* disable direct data placement */
+
+/*
+ * Additional options, not kept in so_options.
+ */
+#pragma D binding "1.13" SO_SNDBUF
+inline int SO_SNDBUF =		0x1001;		/* send buffer size */
+#pragma D binding "1.13" SO_RCVBUF
+inline int SO_RCVBUF =		0x1002;		/* receive buffer size */
+#pragma D binding "1.13" SO_SNDLOWAT
+inline int SO_SNDLOWAT =	0x1003;		/* send low-water mark */
+#pragma D binding "1.13" SO_RCVLOWAT
+inline int SO_RCVLOWAT =	0x1004;		/* receive low-water mark */
+#pragma D binding "1.13" SO_SNDTIMEO
+inline int SO_SNDTIMEO =	0x1005;		/* send timeout */
+#pragma D binding "1.13" SO_RCVTIMEO
+inline int SO_RCVTIMEO =	0x1006;		/* receive timeout */
+#pragma D binding "1.13" SO_ERROR
+inline int SO_ERROR =		0x1007;		/* get error status and clear */
+#pragma D binding "1.13" SO_TYPE
+inline int SO_TYPE =		0x1008;		/* get socket type */
+#pragma D binding "1.13" SO_LABEL
+inline int SO_LABEL =		0x1009;		/* socket's MAC label */
+#pragma D binding "1.13" SO_PEERLABEL
+inline int SO_PEERLABEL =	0x1010;		/* socket's peer's MAC label */
+#pragma D binding "1.13" SO_LISTENQLIMIT
+inline int SO_LISTENQLIMIT =	0x1011;		/* socket's backlog limit */
+#pragma D binding "1.13" SO_LISTENQLEN
+inline int SO_LISTENQLEN =	0x1012;		/* socket's complete queue length */
+#pragma D binding "1.13" SO_LISTENINCQLEN
+inline int SO_LISTENINCQLEN =	0x1013;		/* socket's incomplete queue length */
+#pragma D binding "1.13" SO_SETFIB
+inline int SO_SETFIB =		0x1014;		/* use this FIB to route */
+#pragma D binding "1.13" SO_USER_COOKIE
+inline int SO_USER_COOKIE =	0x1015;		/* user cookie (dummynet etc.) */
+#pragma D binding "1.13" SO_PROTOCOL
+inline int SO_PROTOCOL =	0x1016;		/* get socket protocol (Linux name) */
+#pragma D binding "1.13" SO_PROTOTYPE
+inline int SO_PROTOTYPE =	SO_PROTOCOL;	/* alias for SO_PROTOCOL (SunOS name) */
+#pragma D binding "1.13" SO_TS_CLOCK
+inline int SO_TS_CLOCK =	0x1017;		/* clock type used for SO_TIMESTAMP */
+#pragma D binding "1.13" SO_MAX_PACING_RATE
+inline int SO_MAX_PACING_RATE = 0x1018;	/* socket's max TX pacing rate (Linux name) */
+
+#pragma D binding "1.13" SO_TS_REALTIME_MICRO
+inline int SO_TS_REALTIME_MICRO =	0;	/* microsecond resolution, realtime */
+#pragma D binding "1.13" SO_TS_BINTIME
+inline int SO_TS_BINTIME = 		1;	/* sub-nanosecond resolution, realtime */
+#pragma D binding "1.13" SO_TS_REALTIME
+inline int SO_TS_REALTIME = 		2;	/* nanosecond resolution, realtime */
+#pragma D binding "1.13" SO_TS_MONOTONIC
+inline int SO_TS_MONOTONIC =		3;	/* nanosecond resolution, monotonic */
+#pragma D binding "1.13" SO_TS_DEFAULT
+inline int SO_TS_DEFAULT = 		SO_TS_REALTIME_MICRO;
+#pragma D binding "1.13" SO_TS_CLOCK_MAX
+inline int SO_TS_CLOCK_MAX = 		SO_TS_MONOTONIC;
+
+#pragma D binding "1.13" AF_UNSPEC
+inline int AF_UNSPEC =		0;		/* unspecified */
+#pragma D binding "1.13" AF_UNIX
+inline int AF_UNIX =		1;		/* standardized name for AF_LOCAL */
+#pragma D binding "1.13" AF_LOCAL
+inline int AF_LOCAL =		AF_UNIX;	/* local to host (pipes, portals) */
+#pragma D binding "1.13" AF_INET
+inline int AF_INET =		2;		/* internetwork: UDP, TCP, etc. */
+#pragma D binding "1.13" AF_IMPLINK
+inline int AF_IMPLINK =	3;		/* arpanet imp addresses */
+#pragma D binding "1.13" AF_PUP
+inline int AF_PUP =		4;		/* pup protocols: e.g. BSP */
+#pragma D binding "1.13" AF_CHAOS
+inline int AF_CHAOS =		5;		/* mit CHAOS protocols */
+#pragma D binding "1.13" AF_NETBIOS
+inline int AF_NETBIOS =	6;		/* SMB protocols */
+#pragma D binding "1.13" AF_ISO
+inline int AF_ISO =		7;		/* ISO protocols */
+#pragma D binding "1.13" AF_OSI
+inline int AF_OSI =		AF_ISO;
+#pragma D binding "1.13" AF_ECMA
+inline int AF_ECMA =		8;		/* European computer manufacturers */
+#pragma D binding "1.13" AF_DATAKIT
+inline int AF_DATAKIT =		9;		/* datakit protocols */
+#pragma D binding "1.13" AF_CCITT
+inline int AF_CCITT =		10;		/* CCITT protocols, X.25 etc */
+#pragma D binding "1.13" AF_SNA
+inline int AF_SNA =		11;		/* IBM SNA */
+#pragma D binding "1.13" AF_DECnet
+inline int AF_DECnet =		12;		/* DECnet */
+#pragma D binding "1.13" AF_DLI
+inline int AF_DLI =		13;		/* DEC Direct data link interface */
+#pragma D binding "1.13" AF_LAT
+inline int AF_LAT =		14;		/* LAT */
+#pragma D binding "1.13" AF_HYLINK
+inline int AF_HYLINK =		15;		/* NSC Hyperchannel */
+#pragma D binding "1.13" AF_APPLETALK
+inline int AF_APPLETALK =	16;		/* Apple Talk */
+#pragma D binding "1.13" AF_ROUTE
+inline int AF_ROUTE =		17;		/* Internal Routing Protocol */
+#pragma D binding "1.13" AF_LINK
+inline int AF_LINK =		18;		/* Link layer interface */
+#pragma D binding "1.13" pseudo_AF_XTP
+inline int pseudo_AF_XTP =	19;		/* eXpress Transfer Protocol (no AF) */
+#pragma D binding "1.13" AF_COIP
+inline int AF_COIP =		20;		/* connection-oriented IP, aka ST II */
+#pragma D binding "1.13" AF_CNT
+inline int AF_CNT =		21;		/* Computer Network Technology */
+#pragma D binding "1.13" pseudo_AF_RTIP
+inline int pseudo_AF_RTIP =	22;		/* Help Identify RTIP packets */
+#pragma D binding "1.13" AF_IPX
+inline int AF_IPX =		23;		/* Novell Internet Protocol */
+#pragma D binding "1.13" AF_SIP
+inline int AF_SIP =		24;		/* Simple Internet Protocol */
+#pragma D binding "1.13" pseudo_AF_PIP
+inline int pseudo_AF_PIP =	25;		/* Help Identify PIP packets */
+#pragma D binding "1.13" AF_ISDN
+inline int AF_ISDN =		26;		/* Integrated Services Digital Network*/
+#pragma D binding "1.13" AF_E164
+inline int AF_E164 =		AF_ISDN;	/* CCITT E.164 recommendation */
+#pragma D binding "1.13" pseudo_AF_KEY
+inline int pseudo_AF_KEY =	27;		/* Internal key-management function */
+#pragma D binding "1.13" AF_INET6
+inline int AF_INET6 =		28;		/* IPv6 */
+#pragma D binding "1.13" AF_NATM
+inline int AF_NATM =		29;		/* native ATM access */
+#pragma D binding "1.13" AF_ATM
+inline int AF_ATM =		30;		/* ATM */
+#pragma D binding "1.13" pseudo_AF_HDRCMPLT
+inline int pseudo_AF_HDRCMPLT = 31;	/* Used by BPF to not rewrite headers
+					 * in interface output routine
+					 */
+#pragma D binding "1.13" AF_NETGRAPH
+inline int AF_NETGRAPH =	32;		/* Netgraph sockets */
+#pragma D binding "1.13" AF_SLOW
+inline int AF_SLOW =		33;		/* 802.3ad slow protocol */
+#pragma D binding "1.13" AF_SCLUSTER
+inline int AF_SCLUSTER =	34;		/* Sitara cluster protocol */
+#pragma D binding "1.13" AF_ARP
+inline int AF_ARP =		35;		/* Address Resolution Protocol */
+#pragma D binding "1.13" AF_BLUETOOTH
+inline int AF_BLUETOOTH =	36;		/* Bluetooth sockets */
+#pragma D binding "1.13" AF_IEEE80211
+inline int AF_IEEE80211 =	37;		/* IEEE 802.11 protocol */
+#pragma D binding "1.13" AF_INET_SDP
+inline int AF_INET_SDP	=	40;		/* OFED Socket Direct Protocol ipv4 */
+#pragma D binding "1.13" AF_INET6_SDP
+inline int AF_INET6_SDP =	42;		/* OFED Socket Direct Protocol ipv6 */
+#pragma D binding "1.13" AF_MAX
+inline int AF_MAX =		42;
+
+/*
+ * Protocol families, same as address families for now.
+ */
+#pragma D binding "1.13" PF_UNSPEC
+inline int PF_UNSPEC =	AF_UNSPEC;
+#pragma D binding "1.13" PF_LOCAL
+inline int PF_LOCAL =	AF_LOCAL;
+#pragma D binding "1.13" PF_UNIX
+inline int PF_UNIX =	PF_LOCAL;	/* backward compatibility */
+#pragma D binding "1.13" PF_INET
+inline int PF_INET =	AF_INET;
+#pragma D binding "1.13" PF_IMPLINK
+inline int PF_IMPLINK =	AF_IMPLINK;
+#pragma D binding "1.13" PF_PUP
+inline int PF_PUP =	AF_PUP;
+#pragma D binding "1.13" PF_CHAOS
+inline int PF_CHAOS =	AF_CHAOS;
+#pragma D binding "1.13" PF_NETBIOS
+inline int PF_NETBIOS =	AF_NETBIOS;
+#pragma D binding "1.13" PF_ISO
+inline int PF_ISO =	AF_ISO;
+#pragma D binding "1.13" PF_OSI
+inline int PF_OSI =	AF_ISO;
+#pragma D binding "1.13" PF_ECMA
+inline int PF_ECMA =	AF_ECMA;
+#pragma D binding "1.13" PF_DATAKIT
+inline int PF_DATAKIT =	AF_DATAKIT;
+#pragma D binding "1.13" PF_CCITT
+inline int PF_CCITT =	AF_CCITT;
+#pragma D binding "1.13" PF_SNA
+inline int PF_SNA =	AF_SNA;
+#pragma D binding "1.13" PF_DECnet
+inline int PF_DECnet =	AF_DECnet;
+#pragma D binding "1.13" PF_DLI
+inline int PF_DLI =	AF_DLI;
+#pragma D binding "1.13" PF_LAT
+inline int PF_LAT =	AF_LAT;
+#pragma D binding "1.13" PF_HYLINK
+inline int PF_HYLINK =	AF_HYLINK;
+#pragma D binding "1.13" PF_APPLETALK
+inline int PF_APPLETALK =	AF_APPLETALK;
+#pragma D binding "1.13" PF_ROUTE
+inline int PF_ROUTE =	AF_ROUTE;
+#pragma D binding "1.13" PF_LINK
+inline int PF_LINK =	AF_LINK;
+#pragma D binding "1.13" PF_XTP
+inline int PF_XTP =	pseudo_AF_XTP;	/* really just proto family, no AF */
+#pragma D binding "1.13" PF_COIP
+inline int PF_COIP =	AF_COIP;
+#pragma D binding "1.13" PF_CNT
+inline int PF_CNT =	AF_CNT;
+#pragma D binding "1.13" PF_SIP
+inline int PF_SIP =	AF_SIP;
+#pragma D binding "1.13" PF_IPX
+inline int PF_IPX =	AF_IPX;
+#pragma D binding "1.13" PF_RTIP
+inline int PF_RTIP =	pseudo_AF_RTIP;	/* same format as AF_INET */
+#pragma D binding "1.13" PF_PIP
+inline int PF_PIP =	pseudo_AF_PIP;
+#pragma D binding "1.13" PF_ISDN
+inline int PF_ISDN =	AF_ISDN;
+#pragma D binding "1.13" PF_KEY
+inline int PF_KEY =	pseudo_AF_KEY;
+#pragma D binding "1.13" PF_INET6
+inline int PF_INET6 =	AF_INET6;
+#pragma D binding "1.13" PF_NATM
+inline int PF_NATM =	AF_NATM;
+#pragma D binding "1.13" PF_ATM
+inline int PF_ATM =	AF_ATM;
+#pragma D binding "1.13" PF_NETGRAPH
+inline int PF_NETGRAPH =	AF_NETGRAPH;
+#pragma D binding "1.13" PF_SLOW
+inline int PF_SLOW =	AF_SLOW;
+#pragma D binding "1.13" PF_SCLUSTER
+inline int PF_SCLUSTER =	AF_SCLUSTER;
+#pragma D binding "1.13" PF_ARP
+inline int PF_ARP =	AF_ARP;
+#pragma D binding "1.13" PF_BLUETOOTH
+inline int PF_BLUETOOTH =	AF_BLUETOOTH;
+#pragma D binding "1.13" PF_IEEE80211
+inline int PF_IEEE80211 =	AF_IEEE80211;
+#pragma D binding "1.13" PF_INET_SDP
+inline int PF_INET_SDP=	AF_INET_SDP;
+#pragma D binding "1.13" PF_INET6_SDP
+inline int PF_INET6_SDP=	AF_INET6_SDP;
+#pragma D binding "1.13" PF_MAX
+inline int PF_MAX =	AF_MAX;
diff --git cddl/lib/libzpool/Makefile cddl/lib/libzpool/Makefile
index c0c741f454e8..4b5fdaf0d406 100644
--- cddl/lib/libzpool/Makefile
+++ cddl/lib/libzpool/Makefile
@@ -26,7 +26,7 @@ ATOMIC_SRCS=	opensolaris_atomic.c
 
 LIB=		zpool
 
-ZFS_COMMON_SRCS= ${ZFS_COMMON_OBJS:C/.o$/.c/} vdev_file.c trim_map.c
+ZFS_COMMON_SRCS= ${ZFS_COMMON_OBJS:C/.o$/.c/} trim_map.c
 ZFS_SHARED_SRCS= ${ZFS_SHARED_OBJS:C/.o$/.c/}
 KERNEL_SRCS=	kernel.c taskq.c util.c
 LIST_SRCS=	list.c
diff --git cddl/usr.sbin/dtrace/tests/common/llquantize/Makefile cddl/usr.sbin/dtrace/tests/common/llquantize/Makefile
index be71bec5159e..ed99dd1e116f 100644
--- cddl/usr.sbin/dtrace/tests/common/llquantize/Makefile
+++ cddl/usr.sbin/dtrace/tests/common/llquantize/Makefile
@@ -22,6 +22,7 @@ ${PACKAGE}FILES= \
      err.D_LLQUANT_LOWVAL.d  \
      err.D_LLQUANT_MAGRANGE.d  \
      err.D_LLQUANT_MAGTOOBIG.d  \
+     err.D_LLQUANT_MAGTOOBIG.offbyone.d  \
      err.D_LLQUANT_NSTEPMATCH.d  \
      err.D_LLQUANT_NSTEPTYPE.d  \
      err.D_LLQUANT_NSTEPVAL.d  \
diff --git cddl/usr.sbin/zfsd/zfsd_event.cc cddl/usr.sbin/zfsd/zfsd_event.cc
index c10cc1872900..706b1b1ed2ba 100644
--- cddl/usr.sbin/zfsd/zfsd_event.cc
+++ cddl/usr.sbin/zfsd/zfsd_event.cc
@@ -36,6 +36,7 @@
 #include <sys/cdefs.h>
 #include <sys/time.h>
 #include <sys/fs/zfs.h>
+#include <sys/vdev_impl.h>
 
 #include <syslog.h>
 
@@ -93,6 +94,7 @@ DevfsEvent::ReadLabel(int devFd, bool &inUse, bool &degraded)
 	pool_state_t poolState;
 	char        *poolName;
 	boolean_t    b_inuse;
+	int          nlabels;
 
 	inUse    = false;
 	degraded = false;
@@ -105,8 +107,16 @@ DevfsEvent::ReadLabel(int devFd, bool &inUse, bool &degraded)
 		if (poolName != NULL)
 			free(poolName);
 
-		if (zpool_read_label(devFd, &devLabel) != 0
-		 || devLabel == NULL)
+		nlabels = zpool_read_all_labels(devFd, &devLabel);
+		/*
+		 * If we find a disk with fewer than the maximum number of
+		 * labels, it might be the whole disk of a partitioned disk
+		 * where ZFS resides on a partition.  In that case, we should do
+		 * nothing and wait for the partition to appear.  Or, the disk
+		 * might be damaged.  In that case, zfsd should do nothing and
+		 * wait for the sysadmin to decide.
+		 */
+		if (nlabels != VDEV_LABELS || devLabel == NULL)
 			return (NULL);
 
 		try {
diff --git contrib/binutils/opcodes/i386-dis.c contrib/binutils/opcodes/i386-dis.c
index 073afa1a836d..04470d7dc283 100644
--- contrib/binutils/opcodes/i386-dis.c
+++ contrib/binutils/opcodes/i386-dis.c
@@ -1302,7 +1302,7 @@ static const unsigned char twobyte_uses_REPZ_prefix[256] = {
   /* 70 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1, /* 7f */
   /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */
   /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */
-  /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */
+  /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, /* af */
   /* b0 */ 0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0, /* bf */
   /* c0 */ 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */
   /* d0 */ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, /* df */
@@ -1793,10 +1793,10 @@ static const struct dis386 grps[][8] = {
   },
   /* GRP15 */
   {
-    { "fxsave",		{ Ev } },
-    { "fxrstor",	{ Ev } },
-    { "ldmxcsr",	{ Ev } },
-    { "stmxcsr",	{ Ev } },
+    { "fxsave",		{ { OP_0fae, v_mode } } },
+    { "fxrstor",	{ { OP_0fae, v_mode } } },
+    { "ldmxcsr",	{ { OP_0fae, v_mode } } },
+    { "stmxcsr",	{ { OP_0fae, v_mode } } },
     { "xsave",		{ Ev } },
     { "xrstor",		{ { OP_0fae, v_mode } } },
     { "xsaveopt",	{ { OP_0fae, v_mode } } },
@@ -5997,19 +5997,34 @@ OP_0fae (int bytemode, int sizeflag)
 {
   if (modrm.mod == 3)
     {
-      if (modrm.reg == 7)
-	strcpy (obuf + strlen (obuf) - sizeof ("clflush") + 1, "sfence");
-      else if (modrm.reg == 6)
-	strcpy (obuf + strlen (obuf) - sizeof ("xsaveopt") + 1, "mfence");
-      else if (modrm.reg == 5)
-	strcpy (obuf + strlen (obuf) - sizeof ("xrstor") + 1, "lfence");
-
-      if (modrm.reg < 5 || modrm.rm != 0)
+      if (modrm.reg >= 5 && modrm.reg <= 7 && modrm.rm == 0)
+	{
+	  if (modrm.reg == 7)
+	    strcpy (obuf + strlen (obuf) - sizeof ("clflush") + 1, "sfence");
+	  else if (modrm.reg == 6)
+	    strcpy (obuf + strlen (obuf) - sizeof ("xsaveopt") + 1, "mfence");
+	  else if (modrm.reg == 5)
+	    strcpy (obuf + strlen (obuf) - sizeof ("xrstor") + 1, "lfence");
+	  bytemode = 0;
+	}
+      else if (modrm.reg <= 3 && (prefixes & PREFIX_REPZ) != 0)
+	{
+	  if (modrm.reg == 0)
+	    strcpy (obuf + strlen (obuf) - sizeof ("fxsave") + 1, "rdfsbase");
+	  else if (modrm.reg == 1)
+	    strcpy (obuf + strlen (obuf) - sizeof ("fxrstor") + 1, "rdgsbase");
+	  else if (modrm.reg == 2)
+	    strcpy (obuf + strlen (obuf) - sizeof ("ldmxcsr") + 1, "wrfsbase");
+	  else if (modrm.reg == 3)
+	    strcpy (obuf + strlen (obuf) - sizeof ("stmxcsr") + 1, "wrgsbase");
+	  used_prefixes |= PREFIX_REPZ;
+	  bytemode = dq_mode;
+	}
+      else
 	{
-	  BadOp ();	/* bad sfence, mfence, or lfence */
+	  BadOp ();
 	  return;
 	}
-      bytemode = 0;
     }
 
   OP_E (bytemode, sizeflag);
diff --git contrib/binutils/opcodes/i386-opc.h contrib/binutils/opcodes/i386-opc.h
index ec8019691e37..660fdccca2df 100644
--- contrib/binutils/opcodes/i386-opc.h
+++ contrib/binutils/opcodes/i386-opc.h
@@ -81,6 +81,7 @@ typedef struct template
 #define CpuPCLMUL   0x10000000	/* Carry-less Multiplication extensions */
 #define CpuRdRnd    0x20000000	/* Intel Random Number Generator extensions */
 #define CpuSMAP     0x40000000	/* Intel Supervisor Mode Access Prevention */
+#define CpuFSGSBase 0x80000000	/* Read/write fs/gs segment base registers */
 
 /* SSE4.1/4.2 Instructions required */
 #define CpuSSE4	     (CpuSSE4_1|CpuSSE4_2)
@@ -89,7 +90,8 @@ typedef struct template
 #define CpuUnknownFlags (Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686 \
 	|CpuP4|CpuSledgehammer|CpuMMX|CpuMMX2|CpuSSE|CpuSSE2|CpuSSE3|CpuVMX \
 	|Cpu3dnow|Cpu3dnowA|CpuK6|CpuPadLock|CpuSVME|CpuSSSE3|CpuSSE4_1 \
-	|CpuSSE4_2|CpuABM|CpuSSE4a|CpuXSAVE|CpuAES|CpuPCLMUL|CpuRdRnd|CpuSMAP)
+	|CpuSSE4_2|CpuABM|CpuSSE4a|CpuXSAVE|CpuAES|CpuPCLMUL|CpuRdRnd|CpuSMAP \
+	|CpuFSGSBase)
 
   /* the bits in opcode_modifier are used to generate the final opcode from
      the base_opcode.  These bits also are used to detect alternate forms of
diff --git contrib/binutils/opcodes/i386-opc.tbl contrib/binutils/opcodes/i386-opc.tbl
index 9d7c207612bd..50c734f608af 100644
--- contrib/binutils/opcodes/i386-opc.tbl
+++ contrib/binutils/opcodes/i386-opc.tbl
@@ -1525,3 +1525,13 @@ pclmulhqhqdq, 2, 0x660f3a44, 0x11, CpuPCLMUL, Modrm|IgnoreSize|No_bSuf|No_wSuf|N
 // Intel Random Number Generator extensions
 rdrand, 1, 0x0fc7, 0x6, CpuRdRnd, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { Reg16|Reg32|Reg64 }
 rdseed, 1, 0x0fc7, 0x7, CpuRdRnd, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf, { Reg16|Reg32|Reg64 }
+
+// Intel Supervisor Mode Access Prevention extensions
+clac, 0, 0x0f01, 0xca, CpuSMAP, NoSuf|ImmExt, { 0 }
+stac, 0, 0x0f01, 0xcb, CpuSMAP, NoSuf|ImmExt, { 0 }
+
+// Read/write fs/gs segment base registers
+rdfsbase, 1, 0xf30fae, 0x0, CpuFSGSBase|Cpu64, Modrm|No_bSuf|No_wSuf|No_sSuf|No_xSuf, { Reg32|Reg64 }
+rdgsbase, 1, 0xf30fae, 0x1, CpuFSGSBase|Cpu64, Modrm|No_bSuf|No_wSuf|No_sSuf|No_xSuf, { Reg32|Reg64 }
+wrfsbase, 1, 0xf30fae, 0x2, CpuFSGSBase|Cpu64, Modrm|No_bSuf|No_wSuf|No_sSuf|No_xSuf, { Reg32|Reg64 }
+wrgsbase, 1, 0xf30fae, 0x3, CpuFSGSBase|Cpu64, Modrm|No_bSuf|No_wSuf|No_sSuf|No_xSuf, { Reg32|Reg64 }
diff --git contrib/binutils/opcodes/i386-tbl.h contrib/binutils/opcodes/i386-tbl.h
index d769d09f7dea..9eb313a136be 100644
--- contrib/binutils/opcodes/i386-tbl.h
+++ contrib/binutils/opcodes/i386-tbl.h
@@ -4400,6 +4400,20 @@ const template i386_optab[] =
     NoSuf|ImmExt, { 0, 0, 0 } },
   {"stac", 0, 0x0f01, 0xcb, CpuSMAP,
     NoSuf|ImmExt, { 0, 0, 0 } },
+
+  /* Read/write fs/gs segment base registers */
+  {"rdfsbase", 1, 0xf30fae, 0x0, CpuFSGSBase|Cpu64,
+    Modrm|No_bSuf|No_wSuf|No_sSuf|No_xSuf,
+    { Reg32|Reg64 } },
+  {"rdgsbase", 1, 0xf30fae, 0x1, CpuFSGSBase|Cpu64,
+    Modrm|No_bSuf|No_wSuf|No_sSuf|No_xSuf,
+    { Reg32|Reg64 } },
+  {"wrfsbase", 1, 0xf30fae, 0x2, CpuFSGSBase|Cpu64,
+    Modrm|No_bSuf|No_wSuf|No_sSuf|No_xSuf,
+    { Reg32|Reg64 } },
+  {"wrgsbase", 1, 0xf30fae, 0x3, CpuFSGSBase|Cpu64,
+    Modrm|No_bSuf|No_wSuf|No_sSuf|No_xSuf,
+    { Reg32|Reg64 } },
   
   { NULL, 0, 0, 0, 0, 0, { 0 } }
 };
diff --git contrib/compiler-rt/lib/builtins/arm/aeabi_dcmp.S contrib/compiler-rt/lib/builtins/arm/aeabi_dcmp.S
index 51539c0ac813..9fa78b461248 100644
--- contrib/compiler-rt/lib/builtins/arm/aeabi_dcmp.S
+++ contrib/compiler-rt/lib/builtins/arm/aeabi_dcmp.S
@@ -18,11 +18,20 @@
 //   }
 // }
 
+#if defined(COMPILER_RT_ARMHF_TARGET)
+#  define CONVERT_DCMP_ARGS_TO_DF2_ARGS                    \
+        vmov      d0, r0, r1                     SEPARATOR \
+        vmov      d1, r2, r3
+#else
+#  define CONVERT_DCMP_ARGS_TO_DF2_ARGS
+#endif
+
 #define DEFINE_AEABI_DCMP(cond)                            \
         .syntax unified                          SEPARATOR \
         .p2align 2                               SEPARATOR \
 DEFINE_COMPILERRT_FUNCTION(__aeabi_dcmp ## cond)           \
         push      { r4, lr }                     SEPARATOR \
+        CONVERT_DCMP_ARGS_TO_DF2_ARGS            SEPARATOR \
         bl        SYMBOL_NAME(__ ## cond ## df2) SEPARATOR \
         cmp       r0, #0                         SEPARATOR \
         b ## cond 1f                             SEPARATOR \
diff --git contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S
index 8e7774b58974..ea5b96c21d57 100644
--- contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S
+++ contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S
@@ -18,11 +18,20 @@
 //   }
 // }
 
+#if defined(COMPILER_RT_ARMHF_TARGET)
+#  define CONVERT_FCMP_ARGS_TO_SF2_ARGS                    \
+        vmov      s0, r0                         SEPARATOR \
+        vmov      s1, r1
+#else
+#  define CONVERT_FCMP_ARGS_TO_SF2_ARGS
+#endif
+
 #define DEFINE_AEABI_FCMP(cond)                            \
         .syntax unified                          SEPARATOR \
         .p2align 2                               SEPARATOR \
 DEFINE_COMPILERRT_FUNCTION(__aeabi_fcmp ## cond)           \
         push      { r4, lr }                     SEPARATOR \
+        CONVERT_FCMP_ARGS_TO_SF2_ARGS            SEPARATOR \
         bl        SYMBOL_NAME(__ ## cond ## sf2) SEPARATOR \
         cmp       r0, #0                         SEPARATOR \
         b ## cond 1f                             SEPARATOR \
diff --git contrib/compiler-rt/lib/builtins/int_lib.h contrib/compiler-rt/lib/builtins/int_lib.h
index 5021b82f3cc2..97ca42e0023d 100644
--- contrib/compiler-rt/lib/builtins/int_lib.h
+++ contrib/compiler-rt/lib/builtins/int_lib.h
@@ -92,12 +92,13 @@
  * does not have dedicated bit counting instructions.
  */
 #if defined(__FreeBSD__) && (defined(__sparc64__) || \
-    defined(__mips_n64) || defined(__mips_o64) || defined(__riscv))
+    defined(__mips_n32) || defined(__mips_n64) || defined(__mips_o64) || \
+    defined(__riscv))
 si_int __clzsi2(si_int);
 si_int __ctzsi2(si_int);
 #define	__builtin_clz __clzsi2
 #define	__builtin_ctz __ctzsi2
-#endif /* FreeBSD && (sparc64 || mips_n64 || mips_o64) */
+#endif /* FreeBSD && (sparc64 || mips_n32 || mips_n64 || mips_o64 || riscv) */
 
 COMPILER_RT_ABI si_int __paritysi2(si_int a);
 COMPILER_RT_ABI si_int __paritydi2(di_int a);
diff --git contrib/compiler-rt/lib/esan/esan_sideline_linux.cpp contrib/compiler-rt/lib/esan/esan_sideline_linux.cpp
index d04f5909d6a2..bc272dfe49f8 100644
--- contrib/compiler-rt/lib/esan/esan_sideline_linux.cpp
+++ contrib/compiler-rt/lib/esan/esan_sideline_linux.cpp
@@ -70,7 +70,7 @@ int SidelineThread::runSideline(void *Arg) {
 
   // Set up a signal handler on an alternate stack for safety.
   InternalScopedBuffer<char> StackMap(SigAltStackSize);
-  struct sigaltstack SigAltStack;
+  stack_t SigAltStack;
   SigAltStack.ss_sp = StackMap.data();
   SigAltStack.ss_size = SigAltStackSize;
   SigAltStack.ss_flags = 0;
diff --git contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c
index a0c448c679b5..264568fbc912 100644
--- contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c
+++ contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c
@@ -1,11 +1,11 @@
-//===- InstrProfilingNameVar.c - profile name variable setup --------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
+/*===- InstrProfilingNameVar.c - profile name variable setup  -------------===*\
+|*
+|*                     The LLVM Compiler Infrastructure
+|*
+|* This file is distributed under the University of Illinois Open Source
+|* License. See LICENSE.TXT for details.
+|*
+\*===----------------------------------------------------------------------===*/
 
 #include "InstrProfiling.h"
 
diff --git contrib/cortex-strings/src/aarch64/memcpy.S contrib/cortex-strings/src/aarch64/memcpy.S
index cbae37121844..46fb166e345e 100644
--- contrib/cortex-strings/src/aarch64/memcpy.S
+++ contrib/cortex-strings/src/aarch64/memcpy.S
@@ -77,8 +77,8 @@
 #define D_h	x13
 #define E_l	src
 #define E_h	count
-#define F_l	srcend
-#define F_h	dst
+#define F_l	dst
+#define F_h	srcend
 #define tmp1	x9
 
 #define L(l) .L ## l
diff --git contrib/file/src/readelf.c contrib/file/src/readelf.c
index 90dae392f699..f3212871d625 100644
--- contrib/file/src/readelf.c
+++ contrib/file/src/readelf.c
@@ -509,7 +509,7 @@ do_bid_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
     size_t noff, size_t doff, int *flags)
 {
 	if (namesz == 4 && strcmp((char *)&nbuf[noff], "GNU") == 0 &&
-	    type == NT_GNU_BUILD_ID && (descsz >= 4 || descsz <= 20)) {
+	    type == NT_GNU_BUILD_ID && (descsz >= 4 && descsz <= 20)) {
 		uint8_t desc[20];
 		const char *btype;
 		uint32_t i;
diff --git contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
index db42fb6c170c..5fb69ae232af 100644
--- contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
+++ contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
@@ -85,7 +85,10 @@ namespace ISD {
 
   /// If N is a BUILD_VECTOR node whose elements are all the same constant or
   /// undefined, return true and return the constant value in \p SplatValue.
-  bool isConstantSplatVector(const SDNode *N, APInt &SplatValue);
+  /// This sets \p SplatValue to the smallest possible splat unless AllowShrink
+  /// is set to false.
+  bool isConstantSplatVector(const SDNode *N, APInt &SplatValue,
+                             bool AllowShrink = true);
 
   /// Return true if the specified node is a BUILD_VECTOR where all of the
   /// elements are ~0 or undef.
@@ -798,7 +801,8 @@ public:
   /// if DAG changes.
   static bool hasPredecessorHelper(const SDNode *N,
                                    SmallPtrSetImpl<const SDNode *> &Visited,
-                                   SmallVectorImpl<const SDNode *> &Worklist) {
+                                   SmallVectorImpl<const SDNode *> &Worklist,
+                                   unsigned int MaxSteps = 0) {
     if (Visited.count(N))
       return true;
     while (!Worklist.empty()) {
@@ -813,6 +817,8 @@ public:
       }
       if (Found)
         return true;
+      if (MaxSteps != 0 && Visited.size() >= MaxSteps)
+        return false;
     }
     return false;
   }
diff --git contrib/llvm/lib/Analysis/PostDominators.cpp contrib/llvm/lib/Analysis/PostDominators.cpp
index 811373ac850b..1caf151546d9 100644
--- contrib/llvm/lib/Analysis/PostDominators.cpp
+++ contrib/llvm/lib/Analysis/PostDominators.cpp
@@ -23,8 +23,6 @@ using namespace llvm;
 
 #define DEBUG_TYPE "postdomtree"
 
-template class llvm::DominatorTreeBase<BasicBlock, true>; // PostDomTreeBase
-
 //===----------------------------------------------------------------------===//
 //  PostDominatorTree Implementation
 //===----------------------------------------------------------------------===//
diff --git contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index d5d3f7a61a9f..432c86dd6f1e 100644
--- contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -1118,22 +1118,30 @@ SDValue DAGCombiner::PromoteIntBinOp(SDValue Op) {
     SDValue RV =
         DAG.getNode(ISD::TRUNCATE, DL, VT, DAG.getNode(Opc, DL, PVT, NN0, NN1));
 
-    // New replace instances of N0 and N1
-    if (Replace0 && N0 && N0.getOpcode() != ISD::DELETED_NODE && NN0 &&
-        NN0.getOpcode() != ISD::DELETED_NODE) {
+    // We are always replacing N0/N1's use in N and only need
+    // additional replacements if there are additional uses.
+    Replace0 &= !N0->hasOneUse();
+    Replace1 &= (N0 != N1) && !N1->hasOneUse();
+
+    // Combine Op here so it is presreved past replacements.
+    CombineTo(Op.getNode(), RV);
+
+    // If operands have a use ordering, make sur we deal with
+    // predecessor first.
+    if (Replace0 && Replace1 && N0.getNode()->isPredecessorOf(N1.getNode())) {
+      std::swap(N0, N1);
+      std::swap(NN0, NN1);
+    }
+
+    if (Replace0) {
       AddToWorklist(NN0.getNode());
       ReplaceLoadWithPromotedLoad(N0.getNode(), NN0.getNode());
     }
-
-    if (Replace1 && N1 && N1.getOpcode() != ISD::DELETED_NODE && NN1 &&
-        NN1.getOpcode() != ISD::DELETED_NODE) {
+    if (Replace1) {
       AddToWorklist(NN1.getNode());
       ReplaceLoadWithPromotedLoad(N1.getNode(), NN1.getNode());
     }
-
-    // Deal with Op being deleted.
-    if (Op && Op.getOpcode() != ISD::DELETED_NODE)
-      return RV;
+    return Op;
   }
   return SDValue();
 }
@@ -12599,25 +12607,37 @@ void DAGCombiner::getStoreMergeCandidates(
         }
 }
 
-// We need to check that merging these stores does not cause a loop
-// in the DAG. Any store candidate may depend on another candidate
+// We need to check that merging these stores does not cause a loop in
+// the DAG. Any store candidate may depend on another candidate
 // indirectly through its operand (we already consider dependencies
 // through the chain). Check in parallel by searching up from
 // non-chain operands of candidates.
+
 bool DAGCombiner::checkMergeStoreCandidatesForDependencies(
     SmallVectorImpl<MemOpLink> &StoreNodes, unsigned NumStores) {
+
+  // FIXME: We should be able to truncate a full search of
+  // predecessors by doing a BFS and keeping tabs the originating
+  // stores from which worklist nodes come from in a similar way to
+  // TokenFactor simplfication.
+
   SmallPtrSet<const SDNode *, 16> Visited;
   SmallVector<const SDNode *, 8> Worklist;
-  // search ops of store candidates
+  unsigned int Max = 8192;
+  // Search Ops of store candidates.
   for (unsigned i = 0; i < NumStores; ++i) {
     SDNode *n = StoreNodes[i].MemNode;
     // Potential loops may happen only through non-chain operands
     for (unsigned j = 1; j < n->getNumOperands(); ++j)
       Worklist.push_back(n->getOperand(j).getNode());
   }
-  // search through DAG. We can stop early if we find a storenode
+  // Search through DAG. We can stop early if we find a store node.
   for (unsigned i = 0; i < NumStores; ++i) {
-    if (SDNode::hasPredecessorHelper(StoreNodes[i].MemNode, Visited, Worklist))
+    if (SDNode::hasPredecessorHelper(StoreNodes[i].MemNode, Visited, Worklist,
+                                     Max))
+      return false;
+    // Check if we ended early, failing conservatively if so.
+    if (Visited.size() >= Max)
       return false;
   }
   return true;
diff --git contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
index e102df5e913d..c46d1b04804c 100644
--- contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
+++ contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
@@ -627,6 +627,7 @@ private:
   SDValue ScalarizeVecOp_CONCAT_VECTORS(SDNode *N);
   SDValue ScalarizeVecOp_EXTRACT_VECTOR_ELT(SDNode *N);
   SDValue ScalarizeVecOp_VSELECT(SDNode *N);
+  SDValue ScalarizeVecOp_VSETCC(SDNode *N);
   SDValue ScalarizeVecOp_STORE(StoreSDNode *N, unsigned OpNo);
   SDValue ScalarizeVecOp_FP_ROUND(SDNode *N, unsigned OpNo);
 
diff --git contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
index ecb54e1e4b41..6aa3270883f0 100644
--- contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+++ contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
@@ -484,6 +484,9 @@ bool DAGTypeLegalizer::ScalarizeVectorOperand(SDNode *N, unsigned OpNo) {
     case ISD::VSELECT:
       Res = ScalarizeVecOp_VSELECT(N);
       break;
+    case ISD::SETCC:
+      Res = ScalarizeVecOp_VSETCC(N);
+      break;
     case ISD::STORE:
       Res = ScalarizeVecOp_STORE(cast<StoreSDNode>(N), OpNo);
       break;
@@ -560,6 +563,36 @@ SDValue DAGTypeLegalizer::ScalarizeVecOp_VSELECT(SDNode *N) {
                      N->getOperand(2));
 }
 
+/// If the operand is a vector that needs to be scalarized then the
+/// result must be v1i1, so just convert to a scalar SETCC and wrap
+/// with a scalar_to_vector since the res type is legal if we got here
+SDValue DAGTypeLegalizer::ScalarizeVecOp_VSETCC(SDNode *N) {
+  assert(N->getValueType(0).isVector() &&
+         N->getOperand(0).getValueType().isVector() &&
+         "Operand types must be vectors");
+  assert(N->getValueType(0) == MVT::v1i1 && "Expected v1i1 type");
+
+  EVT VT = N->getValueType(0);
+  SDValue LHS = GetScalarizedVector(N->getOperand(0));
+  SDValue RHS = GetScalarizedVector(N->getOperand(1));
+
+  EVT OpVT = N->getOperand(0).getValueType();
+  EVT NVT = VT.getVectorElementType();
+  SDLoc DL(N);
+  // Turn it into a scalar SETCC.
+  SDValue Res = DAG.getNode(ISD::SETCC, DL, MVT::i1, LHS, RHS,
+      N->getOperand(2));
+
+  // Vectors may have a different boolean contents to scalars.  Promote the
+  // value appropriately.
+  ISD::NodeType ExtendCode =
+      TargetLowering::getExtendForContent(TLI.getBooleanContents(OpVT));
+
+  Res = DAG.getNode(ExtendCode, DL, NVT, Res);
+
+  return DAG.getNode(ISD::SCALAR_TO_VECTOR, DL, VT, Res);
+}
+
 /// If the value to store is a vector that needs to be scalarized, it must be
 /// <1 x ty>. Just store the element.
 SDValue DAGTypeLegalizer::ScalarizeVecOp_STORE(StoreSDNode *N, unsigned OpNo){
diff --git contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index 0ff154784f68..16f425dc7969 100644
--- contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -116,7 +116,8 @@ bool ConstantFPSDNode::isValueValidForType(EVT VT,
 //                              ISD Namespace
 //===----------------------------------------------------------------------===//
 
-bool ISD::isConstantSplatVector(const SDNode *N, APInt &SplatVal) {
+bool ISD::isConstantSplatVector(const SDNode *N, APInt &SplatVal,
+                                bool AllowShrink) {
   auto *BV = dyn_cast<BuildVectorSDNode>(N);
   if (!BV)
     return false;
@@ -124,9 +125,11 @@ bool ISD::isConstantSplatVector(const SDNode *N, APInt &SplatVal) {
   APInt SplatUndef;
   unsigned SplatBitSize;
   bool HasUndefs;
-  EVT EltVT = N->getValueType(0).getVectorElementType();
-  return BV->isConstantSplat(SplatVal, SplatUndef, SplatBitSize, HasUndefs) &&
-         EltVT.getSizeInBits() >= SplatBitSize;
+  unsigned EltSize = N->getValueType(0).getVectorElementType().getSizeInBits();
+  unsigned MinSplatBits = AllowShrink ? 0 : EltSize;
+  return BV->isConstantSplat(SplatVal, SplatUndef, SplatBitSize, HasUndefs,
+                             MinSplatBits) &&
+         EltSize >= SplatBitSize;
 }
 
 // FIXME: AllOnes and AllZeros duplicate a lot of code. Could these be
diff --git contrib/llvm/lib/IR/AutoUpgrade.cpp contrib/llvm/lib/IR/AutoUpgrade.cpp
index 6a4b8032ffd5..a501799b4799 100644
--- contrib/llvm/lib/IR/AutoUpgrade.cpp
+++ contrib/llvm/lib/IR/AutoUpgrade.cpp
@@ -2239,14 +2239,14 @@ bool llvm::UpgradeDebugInfo(Module &M) {
 }
 
 bool llvm::UpgradeModuleFlags(Module &M) {
-  const NamedMDNode *ModFlags = M.getModuleFlagsMetadata();
+  NamedMDNode *ModFlags = M.getModuleFlagsMetadata();
   if (!ModFlags)
     return false;
 
-  bool HasObjCFlag = false, HasClassProperties = false;
+  bool HasObjCFlag = false, HasClassProperties = false, Changed = false;
   for (unsigned I = 0, E = ModFlags->getNumOperands(); I != E; ++I) {
     MDNode *Op = ModFlags->getOperand(I);
-    if (Op->getNumOperands() < 2)
+    if (Op->getNumOperands() != 3)
       continue;
     MDString *ID = dyn_cast_or_null<MDString>(Op->getOperand(1));
     if (!ID)
@@ -2255,7 +2255,24 @@ bool llvm::UpgradeModuleFlags(Module &M) {
       HasObjCFlag = true;
     if (ID->getString() == "Objective-C Class Properties")
       HasClassProperties = true;
+    // Upgrade PIC/PIE Module Flags. The module flag behavior for these two
+    // field was Error and now they are Max.
+    if (ID->getString() == "PIC Level" || ID->getString() == "PIE Level") {
+      if (auto *Behavior =
+              mdconst::dyn_extract_or_null<ConstantInt>(Op->getOperand(0))) {
+        if (Behavior->getLimitedValue() == Module::Error) {
+          Type *Int32Ty = Type::getInt32Ty(M.getContext());
+          Metadata *Ops[3] = {
+              ConstantAsMetadata::get(ConstantInt::get(Int32Ty, Module::Max)),
+              MDString::get(M.getContext(), ID->getString()),
+              Op->getOperand(2)};
+          ModFlags->setOperand(I, MDNode::get(M.getContext(), Ops));
+          Changed = true;
+        }
+      }
+    }
   }
+
   // "Objective-C Class Properties" is recently added for Objective-C. We
   // upgrade ObjC bitcodes to contain a "Objective-C Class Properties" module
   // flag of value 0, so we can correclty downgrade this flag when trying to
@@ -2264,9 +2281,10 @@ bool llvm::UpgradeModuleFlags(Module &M) {
   if (HasObjCFlag && !HasClassProperties) {
     M.addModuleFlag(llvm::Module::Override, "Objective-C Class Properties",
                     (uint32_t)0);
-    return true;
+    Changed = true;
   }
-  return false;
+
+  return Changed;
 }
 
 static bool isOldLoopArgument(Metadata *MD) {
diff --git contrib/llvm/lib/Object/COFFModuleDefinition.cpp contrib/llvm/lib/Object/COFFModuleDefinition.cpp
index ed9140d1fe08..510eac8b239b 100644
--- contrib/llvm/lib/Object/COFFModuleDefinition.cpp
+++ contrib/llvm/lib/Object/COFFModuleDefinition.cpp
@@ -232,7 +232,13 @@ private:
     for (;;) {
       read();
       if (Tok.K == Identifier && Tok.Value[0] == '@') {
-        Tok.Value.drop_front().getAsInteger(10, E.Ordinal);
+        if (Tok.Value.drop_front().getAsInteger(10, E.Ordinal)) {
+          // Not an ordinal modifier at all, but the next export (fastcall
+          // decorated) - complete the current one.
+          unget();
+          Info.Exports.push_back(E);
+          return Error::success();
+        }
         read();
         if (Tok.K == KwNoname) {
           E.Noname = true;
diff --git contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 6ba7593543a9..27dda93387b6 100644
--- contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -5901,7 +5901,10 @@ static bool isVUZPMask(ArrayRef<int> M, EVT VT, unsigned &WhichResult) {
     return false;
 
   for (unsigned i = 0; i < M.size(); i += NumElts) {
-    WhichResult = M[i] == 0 ? 0 : 1;
+    if (M.size() == NumElts * 2)
+      WhichResult = i / NumElts;
+    else
+      WhichResult = M[i] == 0 ? 0 : 1;
     for (unsigned j = 0; j < NumElts; ++j) {
       if (M[i+j] >= 0 && (unsigned) M[i+j] != 2 * j + WhichResult)
         return false;
@@ -5932,7 +5935,10 @@ static bool isVUZP_v_undef_Mask(ArrayRef<int> M, EVT VT, unsigned &WhichResult){
 
   unsigned Half = NumElts / 2;
   for (unsigned i = 0; i < M.size(); i += NumElts) {
-    WhichResult = M[i] == 0 ? 0 : 1;
+    if (M.size() == NumElts * 2)
+      WhichResult = i / NumElts;
+    else
+      WhichResult = M[i] == 0 ? 0 : 1;
     for (unsigned j = 0; j < NumElts; j += Half) {
       unsigned Idx = WhichResult;
       for (unsigned k = 0; k < Half; ++k) {
@@ -5972,7 +5978,10 @@ static bool isVZIPMask(ArrayRef<int> M, EVT VT, unsigned &WhichResult) {
     return false;
 
   for (unsigned i = 0; i < M.size(); i += NumElts) {
-    WhichResult = M[i] == 0 ? 0 : 1;
+    if (M.size() == NumElts * 2)
+      WhichResult = i / NumElts;
+    else
+      WhichResult = M[i] == 0 ? 0 : 1;
     unsigned Idx = WhichResult * NumElts / 2;
     for (unsigned j = 0; j < NumElts; j += 2) {
       if ((M[i+j] >= 0 && (unsigned) M[i+j] != Idx) ||
@@ -6005,7 +6014,10 @@ static bool isVZIP_v_undef_Mask(ArrayRef<int> M, EVT VT, unsigned &WhichResult){
     return false;
 
   for (unsigned i = 0; i < M.size(); i += NumElts) {
-    WhichResult = M[i] == 0 ? 0 : 1;
+    if (M.size() == NumElts * 2)
+      WhichResult = i / NumElts;
+    else
+      WhichResult = M[i] == 0 ? 0 : 1;
     unsigned Idx = WhichResult * NumElts / 2;
     for (unsigned j = 0; j < NumElts; j += 2) {
       if ((M[i+j] >= 0 && (unsigned) M[i+j] != Idx) ||
@@ -8793,6 +8805,8 @@ ARMTargetLowering::EmitLowered__chkstk(MachineInstr &MI,
         .addReg(ARM::R4, RegState::Implicit | RegState::Kill)
         .addReg(ARM::R4, RegState::Implicit | RegState::Define)
         .addReg(ARM::R12,
+                RegState::Implicit | RegState::Define | RegState::Dead)
+        .addReg(ARM::CPSR,
                 RegState::Implicit | RegState::Define | RegState::Dead);
     break;
   case CodeModel::Large:
@@ -8808,6 +8822,8 @@ ARMTargetLowering::EmitLowered__chkstk(MachineInstr &MI,
         .addReg(ARM::R4, RegState::Implicit | RegState::Kill)
         .addReg(ARM::R4, RegState::Implicit | RegState::Define)
         .addReg(ARM::R12,
+                RegState::Implicit | RegState::Define | RegState::Dead)
+        .addReg(ARM::CPSR,
                 RegState::Implicit | RegState::Define | RegState::Dead);
     break;
   }
diff --git contrib/llvm/lib/Target/X86/X86ISelLowering.cpp contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
index 1e73122cdc38..957b46c40a6e 100644
--- contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -29540,8 +29540,9 @@ static bool detectZextAbsDiff(const SDValue &Select, SDValue &Op0,
   // In SetLT case, The second operand of the comparison can be either 1 or 0.
   APInt SplatVal;
   if ((CC == ISD::SETLT) &&
-      !((ISD::isConstantSplatVector(SetCC.getOperand(1).getNode(), SplatVal) &&
-         SplatVal == 1) ||
+      !((ISD::isConstantSplatVector(SetCC.getOperand(1).getNode(), SplatVal,
+                                    /*AllowShrink*/false) &&
+         SplatVal.isOneValue()) ||
         (ISD::isBuildVectorAllZeros(SetCC.getOperand(1).getNode()))))
     return false;
 
@@ -30628,6 +30629,9 @@ static SDValue combineSelect(SDNode *N, SelectionDAG &DAG,
     // Byte blends are only available in AVX2
     if (VT == MVT::v32i8 && !Subtarget.hasAVX2())
       return SDValue();
+    // There are no 512-bit blend instructions that use sign bits.
+    if (VT.is512BitVector())
+      return SDValue();
 
     assert(BitWidth >= 8 && BitWidth <= 64 && "Invalid mask size");
     APInt DemandedMask(APInt::getSignMask(BitWidth));
@@ -30938,11 +30942,40 @@ static bool checkBoolTestAndOrSetCCCombine(SDValue Cond, X86::CondCode &CC0,
   return true;
 }
 
+// When legalizing carry, we create carries via add X, -1
+// If that comes from an actual carry, via setcc, we use the
+// carry directly.
+static SDValue combineCarryThroughADD(SDValue EFLAGS) {
+  if (EFLAGS.getOpcode() == X86ISD::ADD) {
+    if (isAllOnesConstant(EFLAGS.getOperand(1))) {
+      SDValue Carry = EFLAGS.getOperand(0);
+      while (Carry.getOpcode() == ISD::TRUNCATE ||
+             Carry.getOpcode() == ISD::ZERO_EXTEND ||
+             Carry.getOpcode() == ISD::SIGN_EXTEND ||
+             Carry.getOpcode() == ISD::ANY_EXTEND ||
+             (Carry.getOpcode() == ISD::AND &&
+              isOneConstant(Carry.getOperand(1))))
+        Carry = Carry.getOperand(0);
+      if (Carry.getOpcode() == X86ISD::SETCC ||
+          Carry.getOpcode() == X86ISD::SETCC_CARRY) {
+        if (Carry.getConstantOperandVal(0) == X86::COND_B)
+          return Carry.getOperand(1);
+      }
+    }
+  }
+
+  return SDValue();
+}
+
 /// Optimize an EFLAGS definition used according to the condition code \p CC
 /// into a simpler EFLAGS value, potentially returning a new \p CC and replacing
 /// uses of chain values.
 static SDValue combineSetCCEFLAGS(SDValue EFLAGS, X86::CondCode &CC,
                                   SelectionDAG &DAG) {
+  if (CC == X86::COND_B)
+    if (SDValue Flags = combineCarryThroughADD(EFLAGS))
+      return Flags;
+
   if (SDValue R = checkBoolTestSetCCCombine(EFLAGS, CC))
     return R;
   return combineSetCCAtomicArith(EFLAGS, CC, DAG);
@@ -32058,7 +32091,8 @@ static SDValue combineAndMaskToShift(SDNode *N, SelectionDAG &DAG,
     return SDValue();
 
   APInt SplatVal;
-  if (!ISD::isConstantSplatVector(Op1.getNode(), SplatVal) ||
+  if (!ISD::isConstantSplatVector(Op1.getNode(), SplatVal,
+                                  /*AllowShrink*/false) ||
       !SplatVal.isMask())
     return SDValue();
 
@@ -32642,7 +32676,8 @@ static SDValue detectUSatPattern(SDValue In, EVT VT) {
     "Unexpected types for truncate operation");
 
   APInt C;
-  if (ISD::isConstantSplatVector(In.getOperand(1).getNode(), C)) {
+  if (ISD::isConstantSplatVector(In.getOperand(1).getNode(), C,
+                                 /*AllowShrink*/false)) {
     // C should be equal to UINT32_MAX / UINT16_MAX / UINT8_MAX according
     // the element size of the destination type.
     return C.isMask(VT.getScalarSizeInBits()) ? In.getOperand(0) :
@@ -34983,27 +35018,13 @@ static SDValue combineSIntToFP(SDNode *N, SelectionDAG &DAG,
   return SDValue();
 }
 
-// Optimize RES, EFLAGS = X86ISD::ADD LHS, RHS
-static SDValue combineX86ADD(SDNode *N, SelectionDAG &DAG,
-                             X86TargetLowering::DAGCombinerInfo &DCI) {
-  // When legalizing carry, we create carries via add X, -1
-  // If that comes from an actual carry, via setcc, we use the
-  // carry directly.
-  if (isAllOnesConstant(N->getOperand(1)) && N->hasAnyUseOfValue(1)) {
-    SDValue Carry = N->getOperand(0);
-    while (Carry.getOpcode() == ISD::TRUNCATE ||
-           Carry.getOpcode() == ISD::ZERO_EXTEND ||
-           Carry.getOpcode() == ISD::SIGN_EXTEND ||
-           Carry.getOpcode() == ISD::ANY_EXTEND ||
-           (Carry.getOpcode() == ISD::AND &&
-            isOneConstant(Carry.getOperand(1))))
-      Carry = Carry.getOperand(0);
-
-    if (Carry.getOpcode() == X86ISD::SETCC ||
-        Carry.getOpcode() == X86ISD::SETCC_CARRY) {
-      if (Carry.getConstantOperandVal(0) == X86::COND_B)
-        return DCI.CombineTo(N, SDValue(N, 0), Carry.getOperand(1));
-    }
+static SDValue combineSBB(SDNode *N, SelectionDAG &DAG) {
+  if (SDValue Flags = combineCarryThroughADD(N->getOperand(2))) {
+    MVT VT = N->getSimpleValueType(0);
+    SDVTList VTs = DAG.getVTList(VT, MVT::i32);
+    return DAG.getNode(X86ISD::SBB, SDLoc(N), VTs,
+                       N->getOperand(0), N->getOperand(1),
+                       Flags);
   }
 
   return SDValue();
@@ -35032,6 +35053,14 @@ static SDValue combineADC(SDNode *N, SelectionDAG &DAG,
     return DCI.CombineTo(N, Res1, CarryOut);
   }
 
+  if (SDValue Flags = combineCarryThroughADD(N->getOperand(2))) {
+    MVT VT = N->getSimpleValueType(0);
+    SDVTList VTs = DAG.getVTList(VT, MVT::i32);
+    return DAG.getNode(X86ISD::ADC, SDLoc(N), VTs,
+                       N->getOperand(0), N->getOperand(1),
+                       Flags);
+  }
+
   return SDValue();
 }
 
@@ -35346,7 +35375,8 @@ static SDValue combineIncDecVector(SDNode *N, SelectionDAG &DAG) {
 
   SDNode *N1 = N->getOperand(1).getNode();
   APInt SplatVal;
-  if (!ISD::isConstantSplatVector(N1, SplatVal) || !SplatVal.isOneValue())
+  if (!ISD::isConstantSplatVector(N1, SplatVal, /*AllowShrink*/false) ||
+      !SplatVal.isOneValue())
     return SDValue();
 
   SDValue AllOnesVec = getOnesVector(VT, DAG, SDLoc(N));
@@ -35670,7 +35700,7 @@ SDValue X86TargetLowering::PerformDAGCombine(SDNode *N,
   case X86ISD::CMOV:        return combineCMov(N, DAG, DCI, Subtarget);
   case ISD::ADD:            return combineAdd(N, DAG, Subtarget);
   case ISD::SUB:            return combineSub(N, DAG, Subtarget);
-  case X86ISD::ADD:         return combineX86ADD(N, DAG, DCI);
+  case X86ISD::SBB:         return combineSBB(N, DAG);
   case X86ISD::ADC:         return combineADC(N, DAG, DCI);
   case ISD::MUL:            return combineMul(N, DAG, DCI, Subtarget);
   case ISD::SHL:
diff --git contrib/llvm/lib/Target/X86/X86InstrAVX512.td contrib/llvm/lib/Target/X86/X86InstrAVX512.td
index 0e654a380e7c..0ae960e7d566 100644
--- contrib/llvm/lib/Target/X86/X86InstrAVX512.td
+++ contrib/llvm/lib/Target/X86/X86InstrAVX512.td
@@ -3619,8 +3619,8 @@ let Predicates = [HasVLX] in {
   def : Pat<(alignedstore256 (v4f64 (extract_subvector
                                      (v8f64 VR512:$src), (iPTR 0))), addr:$dst),
      (VMOVAPDZ256mr addr:$dst, (v4f64 (EXTRACT_SUBREG VR512:$src,sub_ymm)))>;
-  def : Pat<(alignedstore (v8f32 (extract_subvector
-                                  (v16f32 VR512:$src), (iPTR 0))), addr:$dst),
+  def : Pat<(alignedstore256 (v8f32 (extract_subvector
+                                     (v16f32 VR512:$src), (iPTR 0))), addr:$dst),
      (VMOVAPSZ256mr addr:$dst, (v8f32 (EXTRACT_SUBREG VR512:$src,sub_ymm)))>;
   def : Pat<(alignedstore256 (v4i64 (extract_subvector
                                      (v8i64 VR512:$src), (iPTR 0))), addr:$dst),
diff --git contrib/llvm/lib/Target/X86/X86SchedSandyBridge.td contrib/llvm/lib/Target/X86/X86SchedSandyBridge.td
index 6d85ca6cad64..b8ec5883152c 100644
--- contrib/llvm/lib/Target/X86/X86SchedSandyBridge.td
+++ contrib/llvm/lib/Target/X86/X86SchedSandyBridge.td
@@ -24,8 +24,8 @@ def SandyBridgeModel : SchedMachineModel {
   // Based on the LSD (loop-stream detector) queue size.
   let LoopMicroOpBufferSize = 28;
 
-  // This flag is set to allow the scheduler to assign
-  // a default model to unrecognized opcodes.
+  // FIXME: SSE4 and AVX are unimplemented. This flag is set to allow
+  // the scheduler to assign a default model to unrecognized opcodes.
   let CompleteModel = 0;
 }
 
@@ -48,7 +48,6 @@ def SBPort23 : ProcResource<2>;
 def SBPort4 : ProcResource<1>;
 
 // Many micro-ops are capable of issuing on multiple ports.
-def SBPort01  : ProcResGroup<[SBPort0, SBPort1]>;
 def SBPort05  : ProcResGroup<[SBPort0, SBPort5]>;
 def SBPort15  : ProcResGroup<[SBPort1, SBPort5]>;
 def SBPort015 : ProcResGroup<[SBPort0, SBPort1, SBPort5]>;
@@ -116,10 +115,10 @@ def : WriteRes<WriteIDivLd, [SBPort23, SBPort0, SBDivider]> {
 // Scalar and vector floating point.
 defm : SBWriteResPair<WriteFAdd,   SBPort1, 3>;
 defm : SBWriteResPair<WriteFMul,   SBPort0, 5>;
-defm : SBWriteResPair<WriteFDiv,   SBPort0, 24>;
+defm : SBWriteResPair<WriteFDiv,   SBPort0, 12>; // 10-14 cycles.
 defm : SBWriteResPair<WriteFRcp,   SBPort0, 5>;
 defm : SBWriteResPair<WriteFRsqrt, SBPort0, 5>;
-defm : SBWriteResPair<WriteFSqrt,  SBPort0, 14>;
+defm : SBWriteResPair<WriteFSqrt,  SBPort0, 15>;
 defm : SBWriteResPair<WriteCvtF2I, SBPort1, 3>;
 defm : SBWriteResPair<WriteCvtI2F, SBPort1, 4>;
 defm : SBWriteResPair<WriteCvtF2F, SBPort1, 3>;
@@ -135,11 +134,11 @@ def : WriteRes<WriteFVarBlendLd, [SBPort0, SBPort5, SBPort23]> {
 }
 
 // Vector integer operations.
-defm : SBWriteResPair<WriteVecShift, SBPort5,  1>;
-defm : SBWriteResPair<WriteVecLogic, SBPort5, 1>;
-defm : SBWriteResPair<WriteVecALU,   SBPort1,  3>;
+defm : SBWriteResPair<WriteVecShift, SBPort05,  1>;
+defm : SBWriteResPair<WriteVecLogic, SBPort015, 1>;
+defm : SBWriteResPair<WriteVecALU,   SBPort15,  1>;
 defm : SBWriteResPair<WriteVecIMul,  SBPort0,   5>;
-defm : SBWriteResPair<WriteShuffle,  SBPort5,  1>;
+defm : SBWriteResPair<WriteShuffle,  SBPort15,  1>;
 defm : SBWriteResPair<WriteBlend,  SBPort15,  1>;
 def : WriteRes<WriteVarBlend, [SBPort1, SBPort5]> {
   let Latency = 2;
@@ -149,15 +148,13 @@ def : WriteRes<WriteVarBlendLd, [SBPort1, SBPort5, SBPort23]> {
   let Latency = 6;
   let ResourceCycles = [1, 1, 1];
 }
-def : WriteRes<WriteMPSAD, [SBPort0,SBPort15]> {
-  let Latency = 5;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,2];
+def : WriteRes<WriteMPSAD, [SBPort0, SBPort1, SBPort5]> {
+  let Latency = 6;
+  let ResourceCycles = [1, 1, 1];
 }
-def : WriteRes<WriteMPSADLd, [SBPort0,SBPort23,SBPort15]> {
-  let Latency = 11;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,1,2];
+def : WriteRes<WriteMPSADLd, [SBPort0, SBPort1, SBPort5, SBPort23]> {
+  let Latency = 6;
+  let ResourceCycles = [1, 1, 1, 1];
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -207,15 +204,13 @@ def : WriteRes<WritePCmpEStrMLd, [SBPort015, SBPort23]> {
 }
 
 // Packed Compare Implicit Length Strings, Return Index
-def : WriteRes<WritePCmpIStrI, [SBPort0]> {
-  let Latency = 11;
-  let NumMicroOps = 3;
+def : WriteRes<WritePCmpIStrI, [SBPort015]> {
+  let Latency = 3;
   let ResourceCycles = [3];
 }
-def : WriteRes<WritePCmpIStrILd, [SBPort0,SBPort23]> {
-  let Latency = 17;
-  let NumMicroOps = 4;
-  let ResourceCycles = [3,1];
+def : WriteRes<WritePCmpIStrILd, [SBPort015, SBPort23]> {
+  let Latency = 3;
+  let ResourceCycles = [3, 1];
 }
 
 // Packed Compare Explicit Length Strings, Return Index
@@ -229,26 +224,22 @@ def : WriteRes<WritePCmpEStrILd, [SBPort015, SBPort23]> {
 }
 
 // AES Instructions.
-def : WriteRes<WriteAESDecEnc, [SBPort5,SBPort015]> {
-  let Latency = 7;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
+def : WriteRes<WriteAESDecEnc, [SBPort015]> {
+  let Latency = 8;
+  let ResourceCycles = [2];
 }
-def : WriteRes<WriteAESDecEncLd, [SBPort5,SBPort23,SBPort015]> {
-  let Latency = 13;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
+def : WriteRes<WriteAESDecEncLd, [SBPort015, SBPort23]> {
+  let Latency = 8;
+  let ResourceCycles = [2, 1];
 }
 
-def : WriteRes<WriteAESIMC, [SBPort5]> {
-  let Latency = 12;
-  let NumMicroOps = 2;
+def : WriteRes<WriteAESIMC, [SBPort015]> {
+  let Latency = 8;
   let ResourceCycles = [2];
 }
-def : WriteRes<WriteAESIMCLd, [SBPort5,SBPort23]> {
-  let Latency = 18;
-  let NumMicroOps = 3;
-  let ResourceCycles = [2,1];
+def : WriteRes<WriteAESIMCLd, [SBPort015, SBPort23]> {
+  let Latency = 8;
+  let ResourceCycles = [2, 1];
 }
 
 def : WriteRes<WriteAESKeyGen, [SBPort015]> {
@@ -281,2407 +272,4 @@ def : WriteRes<WriteNop, []>;
 defm : SBWriteResPair<WriteFShuffle256, SBPort0,  1>;
 defm : SBWriteResPair<WriteShuffle256, SBPort0,  1>;
 defm : SBWriteResPair<WriteVarVecShift, SBPort0,  1>;
-
-// Remaining SNB instrs.
-
-def SBWriteResGroup0 : SchedWriteRes<[SBPort0]> {
-  let Latency = 1;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup0], (instregex "CVTSS2SDrr")>;
-def: InstRW<[SBWriteResGroup0], (instregex "PSLLDri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "PSLLQri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "PSLLWri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "PSRADri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "PSRAWri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "PSRLDri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "PSRLQri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "PSRLWri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VCVTSS2SDrr")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VPMOVMSKBrr")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VPSLLDri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VPSLLQri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VPSLLWri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VPSRADri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VPSRAWri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VPSRLDri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VPSRLQri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VPSRLWri")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VTESTPDYrr")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VTESTPDrr")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VTESTPSYrr")>;
-def: InstRW<[SBWriteResGroup0], (instregex "VTESTPSrr")>;
-
-def SBWriteResGroup1 : SchedWriteRes<[SBPort1]> {
-  let Latency = 1;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup1], (instregex "COMP_FST0r")>;
-def: InstRW<[SBWriteResGroup1], (instregex "COM_FST0r")>;
-def: InstRW<[SBWriteResGroup1], (instregex "UCOM_FPr")>;
-def: InstRW<[SBWriteResGroup1], (instregex "UCOM_Fr")>;
-
-def SBWriteResGroup2 : SchedWriteRes<[SBPort5]> {
-  let Latency = 1;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup2], (instregex "ANDNPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "ANDNPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "ANDPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "ANDPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "FDECSTP")>;
-def: InstRW<[SBWriteResGroup2], (instregex "FFREE")>;
-def: InstRW<[SBWriteResGroup2], (instregex "FINCSTP")>;
-def: InstRW<[SBWriteResGroup2], (instregex "FNOP")>;
-def: InstRW<[SBWriteResGroup2], (instregex "INSERTPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "JMP64r")>;
-def: InstRW<[SBWriteResGroup2], (instregex "LD_Frr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOV64toPQIrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVAPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVAPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVDDUPrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVDI2PDIrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVHLPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVLHPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVSDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVSHDUPrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVSLDUPrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVSSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVUPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "MOVUPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "ORPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "ORPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "RETQ")>;
-def: InstRW<[SBWriteResGroup2], (instregex "SHUFPDrri")>;
-def: InstRW<[SBWriteResGroup2], (instregex "SHUFPSrri")>;
-def: InstRW<[SBWriteResGroup2], (instregex "ST_FPrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "ST_Frr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "UNPCKHPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "UNPCKHPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "UNPCKLPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "UNPCKLPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VANDNPDYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VANDNPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VANDNPSYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VANDNPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VANDPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VANDPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VANDPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VEXTRACTF128rr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VINSERTF128rr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VINSERTPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOV64toPQIrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOV64toPQIrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVAPDYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVAPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVAPSYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVAPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVDDUPYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVDDUPrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVHLPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVHLPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVSDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVSHDUPYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVSHDUPrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVSLDUPYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVSLDUPrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVSSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVUPDYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVUPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVUPSYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VMOVUPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VORPDYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VORPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VORPSYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VORPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VPERMILPDri")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VPERMILPDrm")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VPERMILPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VPERMILPSri")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VPERMILPSrm")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VPERMILPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VPERMILPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VSHUFPDYrri")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VSHUFPDrri")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VSHUFPSYrri")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VSHUFPSrri")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VUNPCKHPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VUNPCKHPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VUNPCKLPDYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VUNPCKLPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VUNPCKLPSYrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VUNPCKLPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VXORPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "VXORPSrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "XORPDrr")>;
-def: InstRW<[SBWriteResGroup2], (instregex "XORPSrr")>;
-
-def SBWriteResGroup3 : SchedWriteRes<[SBPort01]> {
-  let Latency = 1;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup3], (instregex "LEA64_32r")>;
-
-def SBWriteResGroup4 : SchedWriteRes<[SBPort0]> {
-  let Latency = 1;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup4], (instregex "BLENDPDrri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "BLENDPSrri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "BT32ri8")>;
-def: InstRW<[SBWriteResGroup4], (instregex "BT32rr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "BTC32ri8")>;
-def: InstRW<[SBWriteResGroup4], (instregex "BTC32rr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "BTR32ri8")>;
-def: InstRW<[SBWriteResGroup4], (instregex "BTR32rr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "BTS32ri8")>;
-def: InstRW<[SBWriteResGroup4], (instregex "BTS32rr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "CDQ")>;
-def: InstRW<[SBWriteResGroup4], (instregex "CQO")>;
-def: InstRW<[SBWriteResGroup4], (instregex "LAHF")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SAHF")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SAR32ri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SAR8ri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETAEr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETBr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETEr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETGEr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETGr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETLEr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETLr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETNEr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETNOr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETNPr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETNSr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETOr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETPr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SETSr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SHL32ri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SHL64r1")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SHL8r1")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SHL8ri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SHR32ri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "SHR8ri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "VBLENDPDYrri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "VBLENDPDrri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "VBLENDPSYrri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "VBLENDPSrri")>;
-def: InstRW<[SBWriteResGroup4], (instregex "VMOVDQAYrr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "VMOVDQArr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "VMOVDQUYrr")>;
-def: InstRW<[SBWriteResGroup4], (instregex "VMOVDQUrr")>;
-
-def SBWriteResGroup5 : SchedWriteRes<[SBPort15]> {
-  let Latency = 1;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup5], (instregex "KORTESTBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "MMX_PABSBrr64")>;
-def: InstRW<[SBWriteResGroup5], (instregex "MMX_PABSDrr64")>;
-def: InstRW<[SBWriteResGroup5], (instregex "MMX_PABSWrr64")>;
-def: InstRW<[SBWriteResGroup5], (instregex "MMX_PADDQirr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "MMX_PALIGNR64irr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "MMX_PSHUFBrr64")>;
-def: InstRW<[SBWriteResGroup5], (instregex "MMX_PSIGNBrr64")>;
-def: InstRW<[SBWriteResGroup5], (instregex "MMX_PSIGNDrr64")>;
-def: InstRW<[SBWriteResGroup5], (instregex "MMX_PSIGNWrr64")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PABSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PABSDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PABSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PACKSSDWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PACKSSWBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PACKUSDWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PACKUSWBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PADDBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PADDDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PADDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PADDSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PADDSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PADDUSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PADDUSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PADDWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PALIGNRrri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PAVGBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PAVGWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PBLENDWrri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PCMPEQBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PCMPEQDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PCMPEQQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PCMPEQWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PCMPGTBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PCMPGTDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PCMPGTWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMAXSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMAXSDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMAXSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMAXUBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMAXUDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMAXUWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMINSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMINSDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMINSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMINUBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMINUDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMINUWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVSXBDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVSXBQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVSXBWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVSXDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVSXWDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVSXWQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVZXBDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVZXBQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVZXBWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVZXDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVZXWDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PMOVZXWQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSHUFBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSHUFDri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSHUFHWri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSHUFLWri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSIGNBrr128")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSIGNDrr128")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSIGNWrr128")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSLLDQri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSRLDQri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSUBBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSUBDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSUBQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSUBSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSUBSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSUBUSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSUBUSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PSUBWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PUNPCKHBWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PUNPCKHDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PUNPCKHQDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PUNPCKHWDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PUNPCKLBWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PUNPCKLDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PUNPCKLQDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "PUNPCKLWDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VMASKMOVPSYrm")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPABSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPABSDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPABSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPACKSSDWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPACKSSWBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPACKUSDWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPACKUSWBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPADDBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPADDDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPADDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPADDUSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPADDUSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPALIGNRrri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPAVGBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPAVGWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPBLENDWrri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPCMPEQBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPCMPEQDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPCMPEQWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPCMPGTBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPCMPGTDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPCMPGTWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMAXSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMAXSDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMAXSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMAXUBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMAXUDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMAXUWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMINSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMINSDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMINSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMINUBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMINUDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMINUWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVSXBDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVSXBQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVSXBWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVSXDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVSXWDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVSXWQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVZXBDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVZXBQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVZXBWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVZXDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVZXWDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPMOVZXWQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSHUFBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSHUFDri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSHUFLWri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSIGNBrr128")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSIGNDrr128")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSIGNWrr128")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSLLDQri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSRLDQri")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSUBBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSUBDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSUBQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSUBSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSUBSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSUBUSBrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSUBUSWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPSUBWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPUNPCKHBWrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPUNPCKHDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPUNPCKHWDrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPUNPCKLDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPUNPCKLQDQrr")>;
-def: InstRW<[SBWriteResGroup5], (instregex "VPUNPCKLWDrr")>;
-
-def SBWriteResGroup6 : SchedWriteRes<[SBPort015]> {
-  let Latency = 1;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup6], (instregex "ADD32ri8")>;
-def: InstRW<[SBWriteResGroup6], (instregex "ADD32rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "ADD8ri")>;
-def: InstRW<[SBWriteResGroup6], (instregex "ADD8rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "AND32ri")>;
-def: InstRW<[SBWriteResGroup6], (instregex "AND64ri8")>;
-def: InstRW<[SBWriteResGroup6], (instregex "AND64rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "AND8ri")>;
-def: InstRW<[SBWriteResGroup6], (instregex "AND8rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "CBW")>;
-def: InstRW<[SBWriteResGroup6], (instregex "CMC")>;
-def: InstRW<[SBWriteResGroup6], (instregex "CMP16ri8")>;
-def: InstRW<[SBWriteResGroup6], (instregex "CMP32i32")>;
-def: InstRW<[SBWriteResGroup6], (instregex "CMP64rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "CMP8ri")>;
-def: InstRW<[SBWriteResGroup6], (instregex "CMP8rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "CWDE")>;
-def: InstRW<[SBWriteResGroup6], (instregex "DEC64r")>;
-def: InstRW<[SBWriteResGroup6], (instregex "DEC8r")>;
-def: InstRW<[SBWriteResGroup6], (instregex "INC64r")>;
-def: InstRW<[SBWriteResGroup6], (instregex "INC8r")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MMX_MOVD64from64rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MMX_MOVQ2DQrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MOV32rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MOV8ri")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MOV8rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MOVDQArr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MOVDQUrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MOVPQI2QIrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MOVSX32rr16")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MOVSX32rr8")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MOVZX32rr16")>;
-def: InstRW<[SBWriteResGroup6], (instregex "MOVZX32rr8")>;
-def: InstRW<[SBWriteResGroup6], (instregex "NEG64r")>;
-def: InstRW<[SBWriteResGroup6], (instregex "NEG8r")>;
-def: InstRW<[SBWriteResGroup6], (instregex "NOT64r")>;
-def: InstRW<[SBWriteResGroup6], (instregex "NOT8r")>;
-def: InstRW<[SBWriteResGroup6], (instregex "OR64ri8")>;
-def: InstRW<[SBWriteResGroup6], (instregex "OR64rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "OR8ri")>;
-def: InstRW<[SBWriteResGroup6], (instregex "OR8rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "PANDNrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "PANDrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "PORrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "PXORrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "STC")>;
-def: InstRW<[SBWriteResGroup6], (instregex "SUB64ri8")>;
-def: InstRW<[SBWriteResGroup6], (instregex "SUB64rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "SUB8ri")>;
-def: InstRW<[SBWriteResGroup6], (instregex "SUB8rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "TEST64rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "TEST8ri")>;
-def: InstRW<[SBWriteResGroup6], (instregex "TEST8rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "VMOVPQI2QIrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "VMOVZPQILo2PQIrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "VPANDNrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "VPANDrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "VPORrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "VPXORrr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "XOR32rr")>;
-def: InstRW<[SBWriteResGroup6], (instregex "XOR64ri8")>;
-def: InstRW<[SBWriteResGroup6], (instregex "XOR8ri")>;
-def: InstRW<[SBWriteResGroup6], (instregex "XOR8rr")>;
-
-def SBWriteResGroup7 : SchedWriteRes<[SBPort0]> {
-  let Latency = 2;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup7], (instregex "MOVMSKPDrr")>;
-def: InstRW<[SBWriteResGroup7], (instregex "MOVMSKPSrr")>;
-def: InstRW<[SBWriteResGroup7], (instregex "MOVPDI2DIrr")>;
-def: InstRW<[SBWriteResGroup7], (instregex "MOVPQIto64rr")>;
-def: InstRW<[SBWriteResGroup7], (instregex "PMOVMSKBrr")>;
-def: InstRW<[SBWriteResGroup7], (instregex "VMOVMSKPDYrr")>;
-def: InstRW<[SBWriteResGroup7], (instregex "VMOVMSKPDrr")>;
-def: InstRW<[SBWriteResGroup7], (instregex "VMOVMSKPSrr")>;
-def: InstRW<[SBWriteResGroup7], (instregex "VMOVPDI2DIrr")>;
-def: InstRW<[SBWriteResGroup7], (instregex "VMOVPQIto64rr")>;
-
-def SBWriteResGroup9 : SchedWriteRes<[SBPort0]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [2];
-}
-def: InstRW<[SBWriteResGroup9], (instregex "BLENDVPDrr0")>;
-def: InstRW<[SBWriteResGroup9], (instregex "BLENDVPSrr0")>;
-def: InstRW<[SBWriteResGroup9], (instregex "ROL32ri")>;
-def: InstRW<[SBWriteResGroup9], (instregex "ROL8ri")>;
-def: InstRW<[SBWriteResGroup9], (instregex "ROR32ri")>;
-def: InstRW<[SBWriteResGroup9], (instregex "ROR8ri")>;
-def: InstRW<[SBWriteResGroup9], (instregex "SETAr")>;
-def: InstRW<[SBWriteResGroup9], (instregex "SETBEr")>;
-def: InstRW<[SBWriteResGroup9], (instregex "VBLENDVPDYrr")>;
-def: InstRW<[SBWriteResGroup9], (instregex "VBLENDVPDrr")>;
-def: InstRW<[SBWriteResGroup9], (instregex "VBLENDVPSYrr")>;
-def: InstRW<[SBWriteResGroup9], (instregex "VBLENDVPSrr")>;
-
-def SBWriteResGroup10 : SchedWriteRes<[SBPort15]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [2];
-}
-def: InstRW<[SBWriteResGroup10], (instregex "VPBLENDVBrr")>;
-
-def SBWriteResGroup11 : SchedWriteRes<[SBPort015]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [2];
-}
-def: InstRW<[SBWriteResGroup11], (instregex "SCASB")>;
-def: InstRW<[SBWriteResGroup11], (instregex "SCASL")>;
-def: InstRW<[SBWriteResGroup11], (instregex "SCASQ")>;
-def: InstRW<[SBWriteResGroup11], (instregex "SCASW")>;
-
-def SBWriteResGroup12 : SchedWriteRes<[SBPort0,SBPort1]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup12], (instregex "COMISDrr")>;
-def: InstRW<[SBWriteResGroup12], (instregex "COMISSrr")>;
-def: InstRW<[SBWriteResGroup12], (instregex "UCOMISDrr")>;
-def: InstRW<[SBWriteResGroup12], (instregex "UCOMISSrr")>;
-def: InstRW<[SBWriteResGroup12], (instregex "VCOMISDrr")>;
-def: InstRW<[SBWriteResGroup12], (instregex "VCOMISSrr")>;
-def: InstRW<[SBWriteResGroup12], (instregex "VUCOMISDrr")>;
-def: InstRW<[SBWriteResGroup12], (instregex "VUCOMISSrr")>;
-
-def SBWriteResGroup13 : SchedWriteRes<[SBPort0,SBPort5]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup13], (instregex "CVTPS2PDrr")>;
-def: InstRW<[SBWriteResGroup13], (instregex "PTESTrr")>;
-def: InstRW<[SBWriteResGroup13], (instregex "VCVTPS2PDYrr")>;
-def: InstRW<[SBWriteResGroup13], (instregex "VCVTPS2PDrr")>;
-def: InstRW<[SBWriteResGroup13], (instregex "VPTESTYrr")>;
-def: InstRW<[SBWriteResGroup13], (instregex "VPTESTrr")>;
-
-def SBWriteResGroup14 : SchedWriteRes<[SBPort0,SBPort15]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup14], (instregex "PSLLDrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "PSLLQrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "PSLLWrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "PSRADrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "PSRAWrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "PSRLDrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "PSRLQrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "PSRLWrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "VPSRADrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "VPSRAWrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "VPSRLDrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "VPSRLQrr")>;
-def: InstRW<[SBWriteResGroup14], (instregex "VPSRLWrr")>;
-
-def SBWriteResGroup15 : SchedWriteRes<[SBPort0,SBPort015]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup15], (instregex "FNSTSW16r")>;
-
-def SBWriteResGroup16 : SchedWriteRes<[SBPort1,SBPort0]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup16], (instregex "BSWAP32r")>;
-
-def SBWriteResGroup17 : SchedWriteRes<[SBPort5,SBPort15]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup17], (instregex "PINSRBrr")>;
-def: InstRW<[SBWriteResGroup17], (instregex "PINSRDrr")>;
-def: InstRW<[SBWriteResGroup17], (instregex "PINSRQrr")>;
-def: InstRW<[SBWriteResGroup17], (instregex "PINSRWrri")>;
-def: InstRW<[SBWriteResGroup17], (instregex "VPINSRBrr")>;
-def: InstRW<[SBWriteResGroup17], (instregex "VPINSRDrr")>;
-def: InstRW<[SBWriteResGroup17], (instregex "VPINSRQrr")>;
-def: InstRW<[SBWriteResGroup17], (instregex "VPINSRWrri")>;
-
-def SBWriteResGroup18 : SchedWriteRes<[SBPort5,SBPort015]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup18], (instregex "MMX_MOVDQ2Qrr")>;
-
-def SBWriteResGroup19 : SchedWriteRes<[SBPort0,SBPort015]> {
-  let Latency = 2;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup19], (instregex "ADC64ri8")>;
-def: InstRW<[SBWriteResGroup19], (instregex "ADC64rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "ADC8ri")>;
-def: InstRW<[SBWriteResGroup19], (instregex "ADC8rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVAE32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVB32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVE32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVG32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVGE32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVL32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVLE32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVNE32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVNO32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVNP32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVNS32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVO32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVP32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "CMOVS32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "SBB32rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "SBB64ri8")>;
-def: InstRW<[SBWriteResGroup19], (instregex "SBB8ri")>;
-def: InstRW<[SBWriteResGroup19], (instregex "SBB8rr")>;
-def: InstRW<[SBWriteResGroup19], (instregex "SHLD32rri8")>;
-def: InstRW<[SBWriteResGroup19], (instregex "SHRD32rri8")>;
-
-def SBWriteResGroup20 : SchedWriteRes<[SBPort0]> {
-  let Latency = 3;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup20], (instregex "MMX_PMADDUBSWrr64")>;
-def: InstRW<[SBWriteResGroup20], (instregex "MMX_PMULHRSWrr64")>;
-def: InstRW<[SBWriteResGroup20], (instregex "MMX_PMULUDQirr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "PMADDUBSWrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "PMADDWDrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "PMULDQrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "PMULHRSWrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "PMULHUWrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "PMULHWrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "PMULLDrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "PMULLWrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "PMULUDQrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "PSADBWrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "VMOVMSKPSYrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "VPMADDUBSWrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "VPMADDWDrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "VPMULDQrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "VPMULHRSWrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "VPMULHWrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "VPMULLDrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "VPMULLWrr")>;
-def: InstRW<[SBWriteResGroup20], (instregex "VPSADBWrr")>;
-
-def SBWriteResGroup21 : SchedWriteRes<[SBPort1]> {
-  let Latency = 3;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup21], (instregex "ADDPDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ADDPSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ADDSDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ADDSSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ADDSUBPDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ADDSUBPSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ADD_FPrST0")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ADD_FST0r")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ADD_FrST0")>;
-def: InstRW<[SBWriteResGroup21], (instregex "BSF32rr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "BSR32rr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "CMPPDrri")>;
-def: InstRW<[SBWriteResGroup21], (instregex "CMPPSrri")>;
-def: InstRW<[SBWriteResGroup21], (instregex "CMPSDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "CMPSSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "CRC32r32r32")>;
-def: InstRW<[SBWriteResGroup21], (instregex "CRC32r32r8")>;
-def: InstRW<[SBWriteResGroup21], (instregex "CVTDQ2PSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "CVTPS2DQrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "CVTTPS2DQrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MAXPDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MAXPSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MAXSDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MAXSSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MINPDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MINPSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MINSDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MINSSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MMX_CVTPI2PSirr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MMX_CVTPS2PIirr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MMX_CVTTPS2PIirr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "MUL8r")>;
-def: InstRW<[SBWriteResGroup21], (instregex "POPCNT32rr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ROUNDPDr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ROUNDPSr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ROUNDSDr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "ROUNDSSr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "SUBPDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "SUBPSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "SUBR_FPrST0")>;
-def: InstRW<[SBWriteResGroup21], (instregex "SUBR_FST0r")>;
-def: InstRW<[SBWriteResGroup21], (instregex "SUBR_FrST0")>;
-def: InstRW<[SBWriteResGroup21], (instregex "SUBSDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "SUBSSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "SUB_FPrST0")>;
-def: InstRW<[SBWriteResGroup21], (instregex "SUB_FST0r")>;
-def: InstRW<[SBWriteResGroup21], (instregex "SUB_FrST0")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VADDPDYrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VADDPDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VADDPSYrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VADDPSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VADDSDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VADDSSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VADDSUBPDYrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VADDSUBPDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VADDSUBPSYrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VADDSUBPSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VBROADCASTF128")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCMPPDYrri")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCMPPDrri")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCMPPSYrri")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCMPPSrri")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCMPSDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCMPSSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCVTDQ2PSYrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCVTDQ2PSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCVTPS2DQYrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCVTPS2DQrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VCVTTPS2DQrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VMAXPDYrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VMAXPDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VMAXPSYrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VMAXPSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VMAXSDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VMAXSSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VMINPDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VMINPSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VMINSDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VMINSSrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VROUNDPDr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VROUNDPSr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VROUNDSDr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VSUBPDYrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VSUBPDrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VSUBPSYrr")>;
-def: InstRW<[SBWriteResGroup21], (instregex "VSUBPSrr")>;
-
-def SBWriteResGroup22 : SchedWriteRes<[SBPort0,SBPort5]> {
-  let Latency = 3;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup22], (instregex "EXTRACTPSrr")>;
-def: InstRW<[SBWriteResGroup22], (instregex "VEXTRACTPSrr")>;
-
-def SBWriteResGroup23 : SchedWriteRes<[SBPort0,SBPort15]> {
-  let Latency = 3;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup23], (instregex "PEXTRBrr")>;
-def: InstRW<[SBWriteResGroup23], (instregex "PEXTRDrr")>;
-def: InstRW<[SBWriteResGroup23], (instregex "PEXTRQrr")>;
-def: InstRW<[SBWriteResGroup23], (instregex "PEXTRWri")>;
-def: InstRW<[SBWriteResGroup23], (instregex "VPEXTRBrr")>;
-def: InstRW<[SBWriteResGroup23], (instregex "VPEXTRDrr")>;
-def: InstRW<[SBWriteResGroup23], (instregex "VPEXTRQrr")>;
-def: InstRW<[SBWriteResGroup23], (instregex "VPEXTRWri")>;
-def: InstRW<[SBWriteResGroup23], (instregex "SHL64rCL")>;
-def: InstRW<[SBWriteResGroup23], (instregex "SHL8rCL")>;
-
-def SBWriteResGroup24 : SchedWriteRes<[SBPort15]> {
-  let Latency = 3;
-  let NumMicroOps = 3;
-  let ResourceCycles = [3];
-}
-def: InstRW<[SBWriteResGroup24], (instregex "MMX_PHADDSWrr64")>;
-def: InstRW<[SBWriteResGroup24], (instregex "MMX_PHADDWrr64")>;
-def: InstRW<[SBWriteResGroup24], (instregex "MMX_PHADDrr64")>;
-def: InstRW<[SBWriteResGroup24], (instregex "MMX_PHSUBDrr64")>;
-def: InstRW<[SBWriteResGroup24], (instregex "MMX_PHSUBSWrr64")>;
-def: InstRW<[SBWriteResGroup24], (instregex "MMX_PHSUBWrr64")>;
-def: InstRW<[SBWriteResGroup24], (instregex "PHADDDrr")>;
-def: InstRW<[SBWriteResGroup24], (instregex "PHADDSWrr128")>;
-def: InstRW<[SBWriteResGroup24], (instregex "PHADDWrr")>;
-def: InstRW<[SBWriteResGroup24], (instregex "PHSUBDrr")>;
-def: InstRW<[SBWriteResGroup24], (instregex "PHSUBSWrr128")>;
-def: InstRW<[SBWriteResGroup24], (instregex "PHSUBWrr")>;
-def: InstRW<[SBWriteResGroup24], (instregex "VPHADDDrr")>;
-def: InstRW<[SBWriteResGroup24], (instregex "VPHADDSWrr128")>;
-def: InstRW<[SBWriteResGroup24], (instregex "VPHADDWrr")>;
-def: InstRW<[SBWriteResGroup24], (instregex "VPHSUBDrr")>;
-def: InstRW<[SBWriteResGroup24], (instregex "VPHSUBSWrr128")>;
-def: InstRW<[SBWriteResGroup24], (instregex "VPHSUBWrr")>;
-
-def SBWriteResGroup25 : SchedWriteRes<[SBPort015]> {
-  let Latency = 3;
-  let NumMicroOps = 3;
-  let ResourceCycles = [3];
-}
-def: InstRW<[SBWriteResGroup25], (instregex "LEAVE64")>;
-def: InstRW<[SBWriteResGroup25], (instregex "XADD32rr")>;
-def: InstRW<[SBWriteResGroup25], (instregex "XADD8rr")>;
-
-def SBWriteResGroup26 : SchedWriteRes<[SBPort0,SBPort015]> {
-  let Latency = 3;
-  let NumMicroOps = 3;
-  let ResourceCycles = [2,1];
-}
-def: InstRW<[SBWriteResGroup26], (instregex "CMOVA32rr")>;
-def: InstRW<[SBWriteResGroup26], (instregex "CMOVBE32rr")>;
-
-def SBWriteResGroup27 : SchedWriteRes<[SBPort0,SBPort1]> {
-  let Latency = 4;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup27], (instregex "MUL64r")>;
-
-def SBWriteResGroup28 : SchedWriteRes<[SBPort1,SBPort5]> {
-  let Latency = 4;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup28], (instregex "CVTDQ2PDrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "CVTPD2DQrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "CVTPD2PSrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "CVTSD2SSrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "CVTSI2SD64rr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "CVTSI2SDrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "CVTTPD2DQrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "MMX_CVTPD2PIirr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "MMX_CVTPI2PDirr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "MMX_CVTTPD2PIirr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "VCVTDQ2PDYrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "VCVTDQ2PDrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "VCVTPD2DQYrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "VCVTPD2DQrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "VCVTPD2PSYrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "VCVTPD2PSrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "VCVTSI2SD64rr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "VCVTSI2SDrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "VCVTTPD2DQYrr")>;
-def: InstRW<[SBWriteResGroup28], (instregex "VCVTTPD2DQrr")>;
-
-def SBWriteResGroup29 : SchedWriteRes<[SBPort1,SBPort015]> {
-  let Latency = 4;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup29], (instregex "MOV64sr")>;
-def: InstRW<[SBWriteResGroup29], (instregex "PAUSE")>;
-
-def SBWriteResGroup30 : SchedWriteRes<[SBPort0]> {
-  let Latency = 5;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup30], (instregex "MULPDrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "MULPSrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "MULSDrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "MULSSrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "MUL_FPrST0")>;
-def: InstRW<[SBWriteResGroup30], (instregex "MUL_FST0r")>;
-def: InstRW<[SBWriteResGroup30], (instregex "MUL_FrST0")>;
-def: InstRW<[SBWriteResGroup30], (instregex "PCMPGTQrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "PHMINPOSUWrr128")>;
-def: InstRW<[SBWriteResGroup30], (instregex "RCPPSr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "RCPSSr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "RSQRTPSr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "RSQRTSSr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "VMULPDYrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "VMULPDrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "VMULPSYrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "VMULPSrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "VMULSDrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "VMULSSrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "VPCMPGTQrr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "VPHMINPOSUWrr128")>;
-def: InstRW<[SBWriteResGroup30], (instregex "VRSQRTPSr")>;
-def: InstRW<[SBWriteResGroup30], (instregex "VRSQRTSSr")>;
-
-def SBWriteResGroup31 : SchedWriteRes<[SBPort23]> {
-  let Latency = 5;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup31], (instregex "MOV32rm")>;
-def: InstRW<[SBWriteResGroup31], (instregex "MOV8rm")>;
-def: InstRW<[SBWriteResGroup31], (instregex "MOVSX32rm16")>;
-def: InstRW<[SBWriteResGroup31], (instregex "MOVSX32rm8")>;
-def: InstRW<[SBWriteResGroup31], (instregex "MOVZX32rm16")>;
-def: InstRW<[SBWriteResGroup31], (instregex "MOVZX32rm8")>;
-def: InstRW<[SBWriteResGroup31], (instregex "PREFETCH")>;
-
-def SBWriteResGroup32 : SchedWriteRes<[SBPort0,SBPort1]> {
-  let Latency = 5;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup32], (instregex "CVTSD2SI64rr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "CVTSD2SIrr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "CVTSS2SI64rr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "CVTSS2SIrr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "CVTTSD2SI64rr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "CVTTSD2SIrr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "CVTTSS2SI64rr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "CVTTSS2SIrr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "VCVTSD2SI64rr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "VCVTSS2SI64rr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "VCVTSS2SIrr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "VCVTTSD2SI64rr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "VCVTTSD2SIrr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "VCVTTSS2SI64rr")>;
-def: InstRW<[SBWriteResGroup32], (instregex "VCVTTSS2SIrr")>;
-
-def SBWriteResGroup33 : SchedWriteRes<[SBPort4,SBPort23]> {
-  let Latency = 5;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup33], (instregex "MOV64mr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOV8mr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVAPDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVAPSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVDQAmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVDQUmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVHPDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVHPSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVLPDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVLPSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVNTDQmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVNTI_64mr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVNTImr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVNTPDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVNTPSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVPDI2DImr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVPQI2QImr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVPQIto64mr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVSSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVUPDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "MOVUPSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "PUSH64i8")>;
-def: InstRW<[SBWriteResGroup33], (instregex "PUSH64r")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VEXTRACTF128mr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVAPDYmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVAPDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVAPSYmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVAPSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVDQAYmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVDQAmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVDQUYmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVDQUmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVHPDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVHPSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVLPDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVLPSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVNTDQYmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVNTDQmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVNTPDYmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVNTPDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVNTPSYmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVNTPSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVPDI2DImr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVPQI2QImr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVPQIto64mr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVSDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVSSmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVUPDYmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVUPDmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVUPSYmr")>;
-def: InstRW<[SBWriteResGroup33], (instregex "VMOVUPSmr")>;
-
-def SBWriteResGroup34 : SchedWriteRes<[SBPort0,SBPort15]> {
-  let Latency = 5;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,2];
-}
-def: InstRW<[SBWriteResGroup34], (instregex "MPSADBWrri")>;
-def: InstRW<[SBWriteResGroup34], (instregex "VMPSADBWrri")>;
-
-def SBWriteResGroup35 : SchedWriteRes<[SBPort1,SBPort5]> {
-  let Latency = 5;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,2];
-}
-def: InstRW<[SBWriteResGroup35], (instregex "CLI")>;
-def: InstRW<[SBWriteResGroup35], (instregex "CVTSI2SS64rr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "CVTSI2SSrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "HADDPDrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "HADDPSrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "HSUBPDrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "HSUBPSrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "VCVTSI2SS64rr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "VCVTSI2SSrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "VHADDPDrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "VHADDPSYrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "VHADDPSrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "VHSUBPDYrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "VHSUBPDrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "VHSUBPSYrr")>;
-def: InstRW<[SBWriteResGroup35], (instregex "VHSUBPSrr")>;
-
-def SBWriteResGroup36 : SchedWriteRes<[SBPort4,SBPort5,SBPort23]> {
-  let Latency = 5;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup36], (instregex "CALL64r")>;
-def: InstRW<[SBWriteResGroup36], (instregex "EXTRACTPSmr")>;
-def: InstRW<[SBWriteResGroup36], (instregex "VEXTRACTPSmr")>;
-
-def SBWriteResGroup37 : SchedWriteRes<[SBPort4,SBPort01,SBPort23]> {
-  let Latency = 5;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup37], (instregex "VMASKMOVPDYrm")>;
-def: InstRW<[SBWriteResGroup37], (instregex "VMASKMOVPDmr")>;
-def: InstRW<[SBWriteResGroup37], (instregex "VMASKMOVPSmr")>;
-
-def SBWriteResGroup38 : SchedWriteRes<[SBPort4,SBPort23,SBPort0]> {
-  let Latency = 5;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup38], (instregex "SETAEm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETBm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETEm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETGEm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETGm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETLEm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETLm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETNEm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETNOm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETNPm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETNSm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETOm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETPm")>;
-def: InstRW<[SBWriteResGroup38], (instregex "SETSm")>;
-
-def SBWriteResGroup39 : SchedWriteRes<[SBPort4,SBPort23,SBPort15]> {
-  let Latency = 5;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup39], (instregex "PEXTRBmr")>;
-def: InstRW<[SBWriteResGroup39], (instregex "VPEXTRBmr")>;
-def: InstRW<[SBWriteResGroup39], (instregex "VPEXTRDmr")>;
-def: InstRW<[SBWriteResGroup39], (instregex "VPEXTRWmr")>;
-
-def SBWriteResGroup40 : SchedWriteRes<[SBPort4,SBPort23,SBPort015]> {
-  let Latency = 5;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup40], (instregex "MOV8mi")>;
-def: InstRW<[SBWriteResGroup40], (instregex "STOSB")>;
-def: InstRW<[SBWriteResGroup40], (instregex "STOSL")>;
-def: InstRW<[SBWriteResGroup40], (instregex "STOSQ")>;
-def: InstRW<[SBWriteResGroup40], (instregex "STOSW")>;
-
-def SBWriteResGroup41 : SchedWriteRes<[SBPort5,SBPort015]> {
-  let Latency = 5;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,3];
-}
-def: InstRW<[SBWriteResGroup41], (instregex "FNINIT")>;
-
-def SBWriteResGroup42 : SchedWriteRes<[SBPort0,SBPort015]> {
-  let Latency = 5;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,3];
-}
-def: InstRW<[SBWriteResGroup42], (instregex "CMPXCHG32rr")>;
-def: InstRW<[SBWriteResGroup42], (instregex "CMPXCHG8rr")>;
-
-def SBWriteResGroup43 : SchedWriteRes<[SBPort4,SBPort23,SBPort0]> {
-  let Latency = 5;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,1,2];
-}
-def: InstRW<[SBWriteResGroup43], (instregex "SETAm")>;
-def: InstRW<[SBWriteResGroup43], (instregex "SETBEm")>;
-
-def SBWriteResGroup44 : SchedWriteRes<[SBPort0,SBPort4,SBPort5,SBPort23]> {
-  let Latency = 5;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,1,1,1];
-}
-def: InstRW<[SBWriteResGroup44], (instregex "LDMXCSR")>;
-def: InstRW<[SBWriteResGroup44], (instregex "STMXCSR")>;
-def: InstRW<[SBWriteResGroup44], (instregex "VLDMXCSR")>;
-def: InstRW<[SBWriteResGroup44], (instregex "VSTMXCSR")>;
-
-def SBWriteResGroup45 : SchedWriteRes<[SBPort0,SBPort4,SBPort23,SBPort15]> {
-  let Latency = 5;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,1,1,1];
-}
-def: InstRW<[SBWriteResGroup45], (instregex "PEXTRDmr")>;
-def: InstRW<[SBWriteResGroup45], (instregex "PEXTRQmr")>;
-def: InstRW<[SBWriteResGroup45], (instregex "VPEXTRQmr")>;
-def: InstRW<[SBWriteResGroup45], (instregex "PUSHF16")>;
-def: InstRW<[SBWriteResGroup45], (instregex "PUSHF64")>;
-
-def SBWriteResGroup46 : SchedWriteRes<[SBPort4,SBPort5,SBPort01,SBPort23]> {
-  let Latency = 5;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,1,1,1];
-}
-def: InstRW<[SBWriteResGroup46], (instregex "CLFLUSH")>;
-
-def SBWriteResGroup47 : SchedWriteRes<[SBPort4,SBPort5,SBPort01,SBPort23]> {
-  let Latency = 5;
-  let NumMicroOps = 5;
-  let ResourceCycles = [1,2,1,1];
-}
-def: InstRW<[SBWriteResGroup47], (instregex "FXRSTOR")>;
-
-def SBWriteResGroup48 : SchedWriteRes<[SBPort23]> {
-  let Latency = 6;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup48], (instregex "LDDQUrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MMX_MOVD64from64rm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOV64toPQIrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVAPDrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVAPSrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVDDUPrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVDI2PDIrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVDQArm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVDQUrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVNTDQArm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVSHDUPrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVSLDUPrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVSSrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVUPDrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "MOVUPSrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "POP64r")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VBROADCASTSSrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VLDDQUYrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VLDDQUrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOV64toPQIrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVAPDrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVAPSrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVDDUPrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVDI2PDIrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVDQArm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVDQUrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVNTDQArm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVQI2PQIrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVSDrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVSHDUPrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVSLDUPrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVSSrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVUPDrm")>;
-def: InstRW<[SBWriteResGroup48], (instregex "VMOVUPSrm")>;
-
-def SBWriteResGroup49 : SchedWriteRes<[SBPort5,SBPort23]> {
-  let Latency = 6;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup49], (instregex "JMP64m")>;
-def: InstRW<[SBWriteResGroup49], (instregex "MOV64sm")>;
-
-def SBWriteResGroup50 : SchedWriteRes<[SBPort23,SBPort0]> {
-  let Latency = 6;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup50], (instregex "BT64mi8")>;
-
-def SBWriteResGroup51 : SchedWriteRes<[SBPort23,SBPort15]> {
-  let Latency = 6;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup51], (instregex "MMX_PABSBrm64")>;
-def: InstRW<[SBWriteResGroup51], (instregex "MMX_PABSDrm64")>;
-def: InstRW<[SBWriteResGroup51], (instregex "MMX_PABSWrm64")>;
-def: InstRW<[SBWriteResGroup51], (instregex "MMX_PALIGNR64irm")>;
-def: InstRW<[SBWriteResGroup51], (instregex "MMX_PSHUFBrm64")>;
-def: InstRW<[SBWriteResGroup51], (instregex "MMX_PSIGNBrm64")>;
-def: InstRW<[SBWriteResGroup51], (instregex "MMX_PSIGNDrm64")>;
-def: InstRW<[SBWriteResGroup51], (instregex "MMX_PSIGNWrm64")>;
-
-def SBWriteResGroup52 : SchedWriteRes<[SBPort23,SBPort015]> {
-  let Latency = 6;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup52], (instregex "ADD64rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "ADD8rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "AND64rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "AND8rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "CMP64mi8")>;
-def: InstRW<[SBWriteResGroup52], (instregex "CMP64mr")>;
-def: InstRW<[SBWriteResGroup52], (instregex "CMP64rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "CMP8mi")>;
-def: InstRW<[SBWriteResGroup52], (instregex "CMP8mr")>;
-def: InstRW<[SBWriteResGroup52], (instregex "CMP8rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "LODSL")>;
-def: InstRW<[SBWriteResGroup52], (instregex "LODSQ")>;
-def: InstRW<[SBWriteResGroup52], (instregex "OR64rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "OR8rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "SUB64rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "SUB8rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "XOR64rm")>;
-def: InstRW<[SBWriteResGroup52], (instregex "XOR8rm")>;
-
-def SBWriteResGroup53 : SchedWriteRes<[SBPort4,SBPort23]> {
-  let Latency = 6;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,2];
-}
-def: InstRW<[SBWriteResGroup53], (instregex "POP64rmm")>;
-def: InstRW<[SBWriteResGroup53], (instregex "PUSH64rmm")>;
-def: InstRW<[SBWriteResGroup53], (instregex "ST_F32m")>;
-def: InstRW<[SBWriteResGroup53], (instregex "ST_F64m")>;
-def: InstRW<[SBWriteResGroup53], (instregex "ST_FP32m")>;
-def: InstRW<[SBWriteResGroup53], (instregex "ST_FP64m")>;
-def: InstRW<[SBWriteResGroup53], (instregex "ST_FP80m")>;
-
-def SBWriteResGroup54 : SchedWriteRes<[SBPort23]> {
-  let Latency = 7;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup54], (instregex "VBROADCASTSDYrm")>;
-def: InstRW<[SBWriteResGroup54], (instregex "VBROADCASTSSrm")>;
-def: InstRW<[SBWriteResGroup54], (instregex "VMOVAPDYrm")>;
-def: InstRW<[SBWriteResGroup54], (instregex "VMOVAPSYrm")>;
-def: InstRW<[SBWriteResGroup54], (instregex "VMOVDDUPYrm")>;
-def: InstRW<[SBWriteResGroup54], (instregex "VMOVDQAYrm")>;
-def: InstRW<[SBWriteResGroup54], (instregex "VMOVDQUYrm")>;
-def: InstRW<[SBWriteResGroup54], (instregex "VMOVSHDUPYrm")>;
-def: InstRW<[SBWriteResGroup54], (instregex "VMOVSLDUPYrm")>;
-def: InstRW<[SBWriteResGroup54], (instregex "VMOVUPDYrm")>;
-def: InstRW<[SBWriteResGroup54], (instregex "VMOVUPSYrm")>;
-
-def SBWriteResGroup55 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 7;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup55], (instregex "CVTPS2PDrm")>;
-def: InstRW<[SBWriteResGroup55], (instregex "CVTSS2SDrm")>;
-def: InstRW<[SBWriteResGroup55], (instregex "VCVTPS2PDYrm")>;
-def: InstRW<[SBWriteResGroup55], (instregex "VCVTPS2PDrm")>;
-def: InstRW<[SBWriteResGroup55], (instregex "VCVTSS2SDrm")>;
-def: InstRW<[SBWriteResGroup55], (instregex "VTESTPDrm")>;
-def: InstRW<[SBWriteResGroup55], (instregex "VTESTPSrm")>;
-
-def SBWriteResGroup56 : SchedWriteRes<[SBPort5,SBPort23]> {
-  let Latency = 7;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup56], (instregex "ANDNPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "ANDNPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "ANDPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "ANDPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "INSERTPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "MOVHPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "MOVHPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "MOVLPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "MOVLPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "ORPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "ORPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "SHUFPDrmi")>;
-def: InstRW<[SBWriteResGroup56], (instregex "SHUFPSrmi")>;
-def: InstRW<[SBWriteResGroup56], (instregex "UNPCKHPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "UNPCKHPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "UNPCKLPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "UNPCKLPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VANDNPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VANDNPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VANDPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VANDPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VBROADCASTF128")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VINSERTPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VMOVHPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VMOVHPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VMOVLPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VMOVLPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VORPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VORPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VPERMILPDmi")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VPERMILPDri")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VPERMILPSmi")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VPERMILPSri")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VSHUFPDrmi")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VSHUFPSrmi")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VUNPCKHPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VUNPCKHPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VUNPCKLPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VUNPCKLPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VXORPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "VXORPSrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "XORPDrm")>;
-def: InstRW<[SBWriteResGroup56], (instregex "XORPSrm")>;
-
-def SBWriteResGroup57 : SchedWriteRes<[SBPort5,SBPort015]> {
-  let Latency = 7;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup57], (instregex "AESDECLASTrr")>;
-def: InstRW<[SBWriteResGroup57], (instregex "AESDECrr")>;
-def: InstRW<[SBWriteResGroup57], (instregex "AESENCLASTrr")>;
-def: InstRW<[SBWriteResGroup57], (instregex "AESENCrr")>;
-def: InstRW<[SBWriteResGroup57], (instregex "KANDQrr")>;
-def: InstRW<[SBWriteResGroup57], (instregex "VAESDECLASTrr")>;
-def: InstRW<[SBWriteResGroup57], (instregex "VAESDECrr")>;
-def: InstRW<[SBWriteResGroup57], (instregex "VAESENCrr")>;
-
-def SBWriteResGroup58 : SchedWriteRes<[SBPort23,SBPort0]> {
-  let Latency = 7;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup58], (instregex "BLENDPDrmi")>;
-def: InstRW<[SBWriteResGroup58], (instregex "BLENDPSrmi")>;
-def: InstRW<[SBWriteResGroup58], (instregex "VBLENDPDrmi")>;
-def: InstRW<[SBWriteResGroup58], (instregex "VBLENDPSrmi")>;
-def: InstRW<[SBWriteResGroup58], (instregex "VINSERTF128rm")>;
-
-def SBWriteResGroup59 : SchedWriteRes<[SBPort23,SBPort15]> {
-  let Latency = 7;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup59], (instregex "MMX_PADDQirm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PABSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PABSDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PABSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PACKSSDWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PACKSSWBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PACKUSDWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PACKUSWBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PADDBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PADDDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PADDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PADDSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PADDSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PADDUSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PADDUSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PADDWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PALIGNRrmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PAVGBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PAVGWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PBLENDWrmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PCMPEQBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PCMPEQDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PCMPEQQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PCMPEQWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PCMPGTBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PCMPGTDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PCMPGTWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PINSRBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PINSRDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PINSRQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PINSRWrmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMAXSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMAXSDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMAXSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMAXUBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMAXUDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMAXUWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMINSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMINSDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMINSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMINUBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMINUDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMINUWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVSXBDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVSXBQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVSXBWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVSXDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVSXWDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVSXWQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVZXBDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVZXBQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVZXBWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVZXDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVZXWDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PMOVZXWQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSHUFBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSHUFDmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSHUFHWmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSHUFLWmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSIGNBrm128")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSIGNDrm128")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSIGNWrm128")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSUBBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSUBDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSUBQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSUBSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSUBSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSUBUSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSUBUSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PSUBWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PUNPCKHBWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PUNPCKHDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PUNPCKHQDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PUNPCKHWDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PUNPCKLBWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PUNPCKLDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PUNPCKLQDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "PUNPCKLWDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPABSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPABSDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPABSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPACKSSDWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPACKSSWBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPACKUSDWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPACKUSWBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPADDBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPADDDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPADDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPADDSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPADDSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPADDUSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPADDUSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPADDWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPALIGNRrmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPAVGBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPAVGWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPBLENDWrmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPCMPEQBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPCMPEQDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPCMPEQQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPCMPEQWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPCMPGTBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPCMPGTDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPCMPGTWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPINSRBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPINSRDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPINSRQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPINSRWrmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMAXSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMAXSDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMAXSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMAXUBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMAXUDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMAXUWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMINSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMINSDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMINSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMINUBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMINUDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMINUWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVSXBDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVSXBQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVSXBWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVSXDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVSXWDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVSXWQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVZXBDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVZXBQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVZXBWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVZXDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVZXWDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPMOVZXWQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSHUFBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSHUFDmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSHUFHWmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSHUFLWmi")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSIGNBrm128")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSIGNDrm128")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSIGNWrm128")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSUBBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSUBDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSUBQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSUBSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSUBSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSUBUSBrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSUBUSWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPSUBWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPUNPCKHBWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPUNPCKHDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPUNPCKHQDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPUNPCKHWDrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPUNPCKLBWrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPUNPCKLDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPUNPCKLQDQrm")>;
-def: InstRW<[SBWriteResGroup59], (instregex "VPUNPCKLWDrm")>;
-
-def SBWriteResGroup60 : SchedWriteRes<[SBPort23,SBPort015]> {
-  let Latency = 7;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup60], (instregex "PANDNrm")>;
-def: InstRW<[SBWriteResGroup60], (instregex "PANDrm")>;
-def: InstRW<[SBWriteResGroup60], (instregex "PORrm")>;
-def: InstRW<[SBWriteResGroup60], (instregex "PXORrm")>;
-def: InstRW<[SBWriteResGroup60], (instregex "VPANDNrm")>;
-def: InstRW<[SBWriteResGroup60], (instregex "VPANDrm")>;
-def: InstRW<[SBWriteResGroup60], (instregex "VPORrm")>;
-def: InstRW<[SBWriteResGroup60], (instregex "VPXORrm")>;
-
-def SBWriteResGroup61 : SchedWriteRes<[SBPort0,SBPort0]> {
-  let Latency = 7;
-  let NumMicroOps = 3;
-  let ResourceCycles = [2,1];
-}
-def: InstRW<[SBWriteResGroup61], (instregex "VRCPPSr")>;
-def: InstRW<[SBWriteResGroup61], (instregex "VRSQRTPSYr")>;
-
-def SBWriteResGroup62 : SchedWriteRes<[SBPort5,SBPort23]> {
-  let Latency = 7;
-  let NumMicroOps = 3;
-  let ResourceCycles = [2,1];
-}
-def: InstRW<[SBWriteResGroup62], (instregex "VERRm")>;
-def: InstRW<[SBWriteResGroup62], (instregex "VERWm")>;
-
-def SBWriteResGroup63 : SchedWriteRes<[SBPort23,SBPort015]> {
-  let Latency = 7;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,2];
-}
-def: InstRW<[SBWriteResGroup63], (instregex "LODSB")>;
-def: InstRW<[SBWriteResGroup63], (instregex "LODSW")>;
-
-def SBWriteResGroup64 : SchedWriteRes<[SBPort5,SBPort01,SBPort23]> {
-  let Latency = 7;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup64], (instregex "FARJMP64")>;
-
-def SBWriteResGroup65 : SchedWriteRes<[SBPort23,SBPort0,SBPort015]> {
-  let Latency = 7;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup65], (instregex "ADC64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "ADC8rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVAE64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVB64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVE64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVG64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVGE64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVL64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVLE64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVNE64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVNO64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVNP64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVNS64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVO64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVP64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "CMOVS64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "SBB64rm")>;
-def: InstRW<[SBWriteResGroup65], (instregex "SBB8rm")>;
-
-def SBWriteResGroup66 : SchedWriteRes<[SBPort0,SBPort4,SBPort23]> {
-  let Latency = 7;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,1,2];
-}
-def: InstRW<[SBWriteResGroup66], (instregex "FNSTSWm")>;
-
-def SBWriteResGroup67 : SchedWriteRes<[SBPort1,SBPort5,SBPort015]> {
-  let Latency = 7;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,2,1];
-}
-def: InstRW<[SBWriteResGroup67], (instregex "SLDT32r")>;
-def: InstRW<[SBWriteResGroup67], (instregex "STR32r")>;
-
-def SBWriteResGroup68 : SchedWriteRes<[SBPort4,SBPort5,SBPort23]> {
-  let Latency = 7;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,1,2];
-}
-def: InstRW<[SBWriteResGroup68], (instregex "CALL64m")>;
-def: InstRW<[SBWriteResGroup68], (instregex "FNSTCW16m")>;
-
-def SBWriteResGroup69 : SchedWriteRes<[SBPort4,SBPort23,SBPort0]> {
-  let Latency = 7;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,2,1];
-}
-def: InstRW<[SBWriteResGroup69], (instregex "BTC64mi8")>;
-def: InstRW<[SBWriteResGroup69], (instregex "BTR64mi8")>;
-def: InstRW<[SBWriteResGroup69], (instregex "BTS64mi8")>;
-def: InstRW<[SBWriteResGroup69], (instregex "SAR64mi")>;
-def: InstRW<[SBWriteResGroup69], (instregex "SAR8mi")>;
-def: InstRW<[SBWriteResGroup69], (instregex "SHL64m1")>;
-def: InstRW<[SBWriteResGroup69], (instregex "SHL64mi")>;
-def: InstRW<[SBWriteResGroup69], (instregex "SHL8m1")>;
-def: InstRW<[SBWriteResGroup69], (instregex "SHL8mi")>;
-def: InstRW<[SBWriteResGroup69], (instregex "SHR64mi")>;
-def: InstRW<[SBWriteResGroup69], (instregex "SHR8mi")>;
-
-def SBWriteResGroup70 : SchedWriteRes<[SBPort4,SBPort23,SBPort015]> {
-  let Latency = 7;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,2,1];
-}
-def: InstRW<[SBWriteResGroup70], (instregex "ADD64mi8")>;
-def: InstRW<[SBWriteResGroup70], (instregex "ADD64mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "ADD8mi")>;
-def: InstRW<[SBWriteResGroup70], (instregex "ADD8mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "AND64mi8")>;
-def: InstRW<[SBWriteResGroup70], (instregex "AND64mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "AND8mi")>;
-def: InstRW<[SBWriteResGroup70], (instregex "AND8mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "DEC64m")>;
-def: InstRW<[SBWriteResGroup70], (instregex "DEC8m")>;
-def: InstRW<[SBWriteResGroup70], (instregex "INC64m")>;
-def: InstRW<[SBWriteResGroup70], (instregex "INC8m")>;
-def: InstRW<[SBWriteResGroup70], (instregex "NEG64m")>;
-def: InstRW<[SBWriteResGroup70], (instregex "NEG8m")>;
-def: InstRW<[SBWriteResGroup70], (instregex "NOT64m")>;
-def: InstRW<[SBWriteResGroup70], (instregex "NOT8m")>;
-def: InstRW<[SBWriteResGroup70], (instregex "OR64mi8")>;
-def: InstRW<[SBWriteResGroup70], (instregex "OR64mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "OR8mi")>;
-def: InstRW<[SBWriteResGroup70], (instregex "OR8mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "SUB64mi8")>;
-def: InstRW<[SBWriteResGroup70], (instregex "SUB64mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "SUB8mi")>;
-def: InstRW<[SBWriteResGroup70], (instregex "SUB8mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "TEST64rm")>;
-def: InstRW<[SBWriteResGroup70], (instregex "TEST8mi")>;
-def: InstRW<[SBWriteResGroup70], (instregex "TEST8rm")>;
-def: InstRW<[SBWriteResGroup70], (instregex "XOR64mi8")>;
-def: InstRW<[SBWriteResGroup70], (instregex "XOR64mr")>;
-def: InstRW<[SBWriteResGroup70], (instregex "XOR8mi")>;
-def: InstRW<[SBWriteResGroup70], (instregex "XOR8mr")>;
-
-def SBWriteResGroup71 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 8;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup71], (instregex "MMX_PMADDUBSWrm64")>;
-def: InstRW<[SBWriteResGroup71], (instregex "MMX_PMULHRSWrm64")>;
-def: InstRW<[SBWriteResGroup71], (instregex "VTESTPDYrm")>;
-def: InstRW<[SBWriteResGroup71], (instregex "VTESTPSYrm")>;
-
-def SBWriteResGroup72 : SchedWriteRes<[SBPort1,SBPort23]> {
-  let Latency = 8;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup72], (instregex "BSF64rm")>;
-def: InstRW<[SBWriteResGroup72], (instregex "BSR64rm")>;
-def: InstRW<[SBWriteResGroup72], (instregex "CRC32r32m16")>;
-def: InstRW<[SBWriteResGroup72], (instregex "CRC32r32m8")>;
-def: InstRW<[SBWriteResGroup72], (instregex "FCOM32m")>;
-def: InstRW<[SBWriteResGroup72], (instregex "FCOM64m")>;
-def: InstRW<[SBWriteResGroup72], (instregex "FCOMP32m")>;
-def: InstRW<[SBWriteResGroup72], (instregex "FCOMP64m")>;
-def: InstRW<[SBWriteResGroup72], (instregex "MUL8m")>;
-
-def SBWriteResGroup73 : SchedWriteRes<[SBPort5,SBPort23]> {
-  let Latency = 8;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup73], (instregex "VANDNPDYrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VANDNPSYrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VANDPDrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VANDPSrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VORPDYrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VORPSYrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VPERM2F128rm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VPERMILPDYri")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VPERMILPDmi")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VPERMILPSYri")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VPERMILPSmi")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VSHUFPDYrmi")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VSHUFPSYrmi")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VUNPCKHPDrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VUNPCKHPSrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VUNPCKLPDYrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VUNPCKLPSYrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VXORPDrm")>;
-def: InstRW<[SBWriteResGroup73], (instregex "VXORPSrm")>;
-
-def SBWriteResGroup74 : SchedWriteRes<[SBPort23,SBPort0]> {
-  let Latency = 8;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup74], (instregex "VBLENDPDYrmi")>;
-def: InstRW<[SBWriteResGroup74], (instregex "VBLENDPSYrmi")>;
-
-def SBWriteResGroup75 : SchedWriteRes<[SBPort23,SBPort0]> {
-  let Latency = 8;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,2];
-}
-def: InstRW<[SBWriteResGroup75], (instregex "BLENDVPDrm0")>;
-def: InstRW<[SBWriteResGroup75], (instregex "BLENDVPSrm0")>;
-def: InstRW<[SBWriteResGroup75], (instregex "VBLENDVPDrm")>;
-def: InstRW<[SBWriteResGroup75], (instregex "VBLENDVPSrm")>;
-def: InstRW<[SBWriteResGroup75], (instregex "VMASKMOVPDrm")>;
-def: InstRW<[SBWriteResGroup75], (instregex "VMASKMOVPSrm")>;
-
-def SBWriteResGroup76 : SchedWriteRes<[SBPort23,SBPort15]> {
-  let Latency = 8;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,2];
-}
-def: InstRW<[SBWriteResGroup76], (instregex "PBLENDVBrr0")>;
-def: InstRW<[SBWriteResGroup76], (instregex "VPBLENDVBrm")>;
-
-def SBWriteResGroup77 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
-  let Latency = 8;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup77], (instregex "COMISDrm")>;
-def: InstRW<[SBWriteResGroup77], (instregex "COMISSrm")>;
-def: InstRW<[SBWriteResGroup77], (instregex "UCOMISDrm")>;
-def: InstRW<[SBWriteResGroup77], (instregex "UCOMISSrm")>;
-def: InstRW<[SBWriteResGroup77], (instregex "VCOMISDrm")>;
-def: InstRW<[SBWriteResGroup77], (instregex "VCOMISSrm")>;
-def: InstRW<[SBWriteResGroup77], (instregex "VUCOMISDrm")>;
-def: InstRW<[SBWriteResGroup77], (instregex "VUCOMISSrm")>;
-
-def SBWriteResGroup78 : SchedWriteRes<[SBPort0,SBPort5,SBPort23]> {
-  let Latency = 8;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup78], (instregex "PTESTrm")>;
-def: InstRW<[SBWriteResGroup78], (instregex "VPTESTrm")>;
-
-def SBWriteResGroup79 : SchedWriteRes<[SBPort0,SBPort23,SBPort15]> {
-  let Latency = 8;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup79], (instregex "PSLLDrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "PSLLQrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "PSLLWrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "PSRADrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "PSRAWrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "PSRLDrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "PSRLQrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "PSRLWrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "VPSLLDri")>;
-def: InstRW<[SBWriteResGroup79], (instregex "VPSLLQri")>;
-def: InstRW<[SBWriteResGroup79], (instregex "VPSLLWri")>;
-def: InstRW<[SBWriteResGroup79], (instregex "VPSRADrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "VPSRAWrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "VPSRLDrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "VPSRLQrm")>;
-def: InstRW<[SBWriteResGroup79], (instregex "VPSRLWrm")>;
-
-def SBWriteResGroup80 : SchedWriteRes<[SBPort23,SBPort15]> {
-  let Latency = 8;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,3];
-}
-def: InstRW<[SBWriteResGroup80], (instregex "MMX_PHADDSWrm64")>;
-def: InstRW<[SBWriteResGroup80], (instregex "MMX_PHADDWrm64")>;
-def: InstRW<[SBWriteResGroup80], (instregex "MMX_PHADDrm64")>;
-def: InstRW<[SBWriteResGroup80], (instregex "MMX_PHSUBDrm64")>;
-def: InstRW<[SBWriteResGroup80], (instregex "MMX_PHSUBSWrm64")>;
-def: InstRW<[SBWriteResGroup80], (instregex "MMX_PHSUBWrm64")>;
-
-def SBWriteResGroup81 : SchedWriteRes<[SBPort23,SBPort015]> {
-  let Latency = 8;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,3];
-}
-def: InstRW<[SBWriteResGroup81], (instregex "CMPXCHG64rm")>;
-def: InstRW<[SBWriteResGroup81], (instregex "CMPXCHG8rm")>;
-
-def SBWriteResGroup82 : SchedWriteRes<[SBPort23,SBPort0,SBPort015]> {
-  let Latency = 8;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,2,1];
-}
-def: InstRW<[SBWriteResGroup82], (instregex "CMOVA64rm")>;
-def: InstRW<[SBWriteResGroup82], (instregex "CMOVBE64rm")>;
-
-def SBWriteResGroup83 : SchedWriteRes<[SBPort23,SBPort015]> {
-  let Latency = 8;
-  let NumMicroOps = 5;
-  let ResourceCycles = [2,3];
-}
-def: InstRW<[SBWriteResGroup83], (instregex "CMPSB")>;
-def: InstRW<[SBWriteResGroup83], (instregex "CMPSL")>;
-def: InstRW<[SBWriteResGroup83], (instregex "CMPSQ")>;
-def: InstRW<[SBWriteResGroup83], (instregex "CMPSW")>;
-
-def SBWriteResGroup84 : SchedWriteRes<[SBPort4,SBPort5,SBPort23]> {
-  let Latency = 8;
-  let NumMicroOps = 5;
-  let ResourceCycles = [1,2,2];
-}
-def: InstRW<[SBWriteResGroup84], (instregex "FLDCW16m")>;
-
-def SBWriteResGroup85 : SchedWriteRes<[SBPort4,SBPort23,SBPort0]> {
-  let Latency = 8;
-  let NumMicroOps = 5;
-  let ResourceCycles = [1,2,2];
-}
-def: InstRW<[SBWriteResGroup85], (instregex "ROL64mi")>;
-def: InstRW<[SBWriteResGroup85], (instregex "ROL8mi")>;
-def: InstRW<[SBWriteResGroup85], (instregex "ROR64mi")>;
-def: InstRW<[SBWriteResGroup85], (instregex "ROR8mi")>;
-
-def SBWriteResGroup86 : SchedWriteRes<[SBPort4,SBPort23,SBPort015]> {
-  let Latency = 8;
-  let NumMicroOps = 5;
-  let ResourceCycles = [1,2,2];
-}
-def: InstRW<[SBWriteResGroup86], (instregex "MOVSB")>;
-def: InstRW<[SBWriteResGroup86], (instregex "MOVSL")>;
-def: InstRW<[SBWriteResGroup86], (instregex "MOVSQ")>;
-def: InstRW<[SBWriteResGroup86], (instregex "MOVSW")>;
-def: InstRW<[SBWriteResGroup86], (instregex "XADD64rm")>;
-def: InstRW<[SBWriteResGroup86], (instregex "XADD8rm")>;
-
-def SBWriteResGroup87 : SchedWriteRes<[SBPort4,SBPort5,SBPort01,SBPort23]> {
-  let Latency = 8;
-  let NumMicroOps = 5;
-  let ResourceCycles = [1,1,1,2];
-}
-def: InstRW<[SBWriteResGroup87], (instregex "FARCALL64")>;
-
-def SBWriteResGroup88 : SchedWriteRes<[SBPort4,SBPort23,SBPort0,SBPort015]> {
-  let Latency = 8;
-  let NumMicroOps = 5;
-  let ResourceCycles = [1,2,1,1];
-}
-def: InstRW<[SBWriteResGroup88], (instregex "SHLD64mri8")>;
-def: InstRW<[SBWriteResGroup88], (instregex "SHRD64mri8")>;
-
-def SBWriteResGroup89 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 9;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup89], (instregex "MMX_PMULUDQirm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "PMADDUBSWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "PMADDWDrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "PMULDQrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "PMULHRSWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "PMULHUWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "PMULHWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "PMULLDrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "PMULLWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "PMULUDQrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "PSADBWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "VPMADDUBSWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "VPMADDWDrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "VPMULDQrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "VPMULHRSWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "VPMULHUWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "VPMULHWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "VPMULLDrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "VPMULLWrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "VPMULUDQrm")>;
-def: InstRW<[SBWriteResGroup89], (instregex "VPSADBWrm")>;
-
-def SBWriteResGroup90 : SchedWriteRes<[SBPort1,SBPort23]> {
-  let Latency = 9;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup90], (instregex "ADDPDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "ADDPSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "ADDSDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "ADDSSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "ADDSUBPDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "ADDSUBPSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "CMPPDrmi")>;
-def: InstRW<[SBWriteResGroup90], (instregex "CMPPSrmi")>;
-def: InstRW<[SBWriteResGroup90], (instregex "CMPSSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "CVTDQ2PSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "CVTPS2DQrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "CVTSI2SD64rm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "CVTSI2SDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "CVTTPS2DQrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MAXPDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MAXPSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MAXSDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MAXSSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MINPDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MINPSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MINSDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MINSSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MMX_CVTPI2PSirm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MMX_CVTPS2PIirm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "MMX_CVTTPS2PIirm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "POPCNT64rm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "ROUNDPDm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "ROUNDPSm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "ROUNDSDm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "ROUNDSSm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "SUBPDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "SUBPSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "SUBSDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "SUBSSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VADDPDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VADDPSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VADDSDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VADDSSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VADDSUBPDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VADDSUBPSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VCMPPDrmi")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VCMPPSrmi")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VCMPSDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VCMPSSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VCVTDQ2PSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VCVTPS2DQrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VCVTSI2SD64rm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VCVTSI2SDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VCVTTPS2DQrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VMAXPDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VMAXPSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VMAXSDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VMAXSSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VMINPDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VMINPSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VMINSDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VMINSSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VROUNDPDm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VROUNDPSm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VROUNDSDm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VROUNDSSm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VSUBPDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VSUBPSrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VSUBSDrm")>;
-def: InstRW<[SBWriteResGroup90], (instregex "VSUBSSrm")>;
-
-def SBWriteResGroup91 : SchedWriteRes<[SBPort23,SBPort0]> {
-  let Latency = 9;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,2];
-}
-def: InstRW<[SBWriteResGroup91], (instregex "VBLENDVPDYrm")>;
-def: InstRW<[SBWriteResGroup91], (instregex "VBLENDVPSYrm")>;
-def: InstRW<[SBWriteResGroup91], (instregex "VMASKMOVPDrm")>;
-def: InstRW<[SBWriteResGroup91], (instregex "VMASKMOVPSrm")>;
-
-def SBWriteResGroup92 : SchedWriteRes<[SBPort0,SBPort1,SBPort5]> {
-  let Latency = 9;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup92], (instregex "DPPDrri")>;
-def: InstRW<[SBWriteResGroup92], (instregex "VDPPDrri")>;
-
-def SBWriteResGroup93 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
-  let Latency = 9;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup93], (instregex "CVTSD2SI64rm")>;
-def: InstRW<[SBWriteResGroup93], (instregex "CVTSD2SIrm")>;
-def: InstRW<[SBWriteResGroup93], (instregex "CVTSS2SI64rm")>;
-def: InstRW<[SBWriteResGroup93], (instregex "CVTSS2SIrm")>;
-def: InstRW<[SBWriteResGroup93], (instregex "CVTTSD2SI64rm")>;
-def: InstRW<[SBWriteResGroup93], (instregex "CVTTSD2SIrm")>;
-def: InstRW<[SBWriteResGroup93], (instregex "CVTTSS2SI64rm")>;
-def: InstRW<[SBWriteResGroup93], (instregex "CVTTSS2SIrm")>;
-def: InstRW<[SBWriteResGroup93], (instregex "MUL64m")>;
-
-def SBWriteResGroup94 : SchedWriteRes<[SBPort0,SBPort5,SBPort23]> {
-  let Latency = 9;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup94], (instregex "VPTESTYrm")>;
-
-def SBWriteResGroup95 : SchedWriteRes<[SBPort5,SBPort01,SBPort23]> {
-  let Latency = 9;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup95], (instregex "LD_F32m")>;
-def: InstRW<[SBWriteResGroup95], (instregex "LD_F64m")>;
-def: InstRW<[SBWriteResGroup95], (instregex "LD_F80m")>;
-
-def SBWriteResGroup96 : SchedWriteRes<[SBPort23,SBPort15]> {
-  let Latency = 9;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,3];
-}
-def: InstRW<[SBWriteResGroup96], (instregex "PHADDDrm")>;
-def: InstRW<[SBWriteResGroup96], (instregex "PHADDSWrm128")>;
-def: InstRW<[SBWriteResGroup96], (instregex "PHADDWrm")>;
-def: InstRW<[SBWriteResGroup96], (instregex "PHSUBDrm")>;
-def: InstRW<[SBWriteResGroup96], (instregex "PHSUBSWrm128")>;
-def: InstRW<[SBWriteResGroup96], (instregex "PHSUBWrm")>;
-def: InstRW<[SBWriteResGroup96], (instregex "VPHADDDrm")>;
-def: InstRW<[SBWriteResGroup96], (instregex "VPHADDSWrm128")>;
-def: InstRW<[SBWriteResGroup96], (instregex "VPHADDWrm")>;
-def: InstRW<[SBWriteResGroup96], (instregex "VPHSUBDrm")>;
-def: InstRW<[SBWriteResGroup96], (instregex "VPHSUBSWrm128")>;
-def: InstRW<[SBWriteResGroup96], (instregex "VPHSUBWrm")>;
-
-def SBWriteResGroup97 : SchedWriteRes<[SBPort1,SBPort4,SBPort23]> {
-  let Latency = 9;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,1,2];
-}
-def: InstRW<[SBWriteResGroup97], (instregex "IST_F16m")>;
-def: InstRW<[SBWriteResGroup97], (instregex "IST_F32m")>;
-def: InstRW<[SBWriteResGroup97], (instregex "IST_FP16m")>;
-def: InstRW<[SBWriteResGroup97], (instregex "IST_FP32m")>;
-def: InstRW<[SBWriteResGroup97], (instregex "IST_FP64m")>;
-def: InstRW<[SBWriteResGroup97], (instregex "SHL64mCL")>;
-def: InstRW<[SBWriteResGroup97], (instregex "SHL8mCL")>;
-
-def SBWriteResGroup98 : SchedWriteRes<[SBPort4,SBPort23,SBPort015]> {
-  let Latency = 9;
-  let NumMicroOps = 6;
-  let ResourceCycles = [1,2,3];
-}
-def: InstRW<[SBWriteResGroup98], (instregex "ADC64mi8")>;
-def: InstRW<[SBWriteResGroup98], (instregex "ADC8mi")>;
-def: InstRW<[SBWriteResGroup98], (instregex "SBB64mi8")>;
-def: InstRW<[SBWriteResGroup98], (instregex "SBB8mi")>;
-
-def SBWriteResGroup99 : SchedWriteRes<[SBPort4,SBPort23,SBPort0,SBPort015]> {
-  let Latency = 9;
-  let NumMicroOps = 6;
-  let ResourceCycles = [1,2,2,1];
-}
-def: InstRW<[SBWriteResGroup99], (instregex "ADC64mr")>;
-def: InstRW<[SBWriteResGroup99], (instregex "ADC8mr")>;
-def: InstRW<[SBWriteResGroup99], (instregex "SBB64mr")>;
-def: InstRW<[SBWriteResGroup99], (instregex "SBB8mr")>;
-
-def SBWriteResGroup100 : SchedWriteRes<[SBPort4,SBPort5,SBPort23,SBPort0,SBPort015]> {
-  let Latency = 9;
-  let NumMicroOps = 6;
-  let ResourceCycles = [1,1,2,1,1];
-}
-def: InstRW<[SBWriteResGroup100], (instregex "BT64mr")>;
-def: InstRW<[SBWriteResGroup100], (instregex "BTC64mr")>;
-def: InstRW<[SBWriteResGroup100], (instregex "BTR64mr")>;
-def: InstRW<[SBWriteResGroup100], (instregex "BTS64mr")>;
-
-def SBWriteResGroup101 : SchedWriteRes<[SBPort1,SBPort23]> {
-  let Latency = 10;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup101], (instregex "ADD_F32m")>;
-def: InstRW<[SBWriteResGroup101], (instregex "ADD_F64m")>;
-def: InstRW<[SBWriteResGroup101], (instregex "ILD_F16m")>;
-def: InstRW<[SBWriteResGroup101], (instregex "ILD_F32m")>;
-def: InstRW<[SBWriteResGroup101], (instregex "ILD_F64m")>;
-def: InstRW<[SBWriteResGroup101], (instregex "SUBR_F32m")>;
-def: InstRW<[SBWriteResGroup101], (instregex "SUBR_F64m")>;
-def: InstRW<[SBWriteResGroup101], (instregex "SUB_F32m")>;
-def: InstRW<[SBWriteResGroup101], (instregex "SUB_F64m")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VADDPDYrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VADDPSYrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VADDSUBPDYrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VADDSUBPSYrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VCMPPDYrmi")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VCMPPSYrmi")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VCVTDQ2PSYrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VCVTPS2DQYrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VCVTTPS2DQrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VMAXPDYrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VMAXPSYrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VMINPDrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VMINPSrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VROUNDPDm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VROUNDPSm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VSUBPDYrm")>;
-def: InstRW<[SBWriteResGroup101], (instregex "VSUBPSYrm")>;
-
-def SBWriteResGroup102 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
-  let Latency = 10;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup102], (instregex "VCVTSD2SI64rm")>;
-def: InstRW<[SBWriteResGroup102], (instregex "VCVTSD2SI64rr")>;
-def: InstRW<[SBWriteResGroup102], (instregex "VCVTSS2SI64rm")>;
-def: InstRW<[SBWriteResGroup102], (instregex "VCVTSS2SIrm")>;
-def: InstRW<[SBWriteResGroup102], (instregex "VCVTTSD2SI64rm")>;
-def: InstRW<[SBWriteResGroup102], (instregex "VCVTTSD2SI64rr")>;
-def: InstRW<[SBWriteResGroup102], (instregex "VCVTTSS2SI64rm")>;
-def: InstRW<[SBWriteResGroup102], (instregex "VCVTTSS2SIrm")>;
-
-def SBWriteResGroup103 : SchedWriteRes<[SBPort1,SBPort5,SBPort23]> {
-  let Latency = 10;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup103], (instregex "CVTDQ2PDrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "CVTPD2DQrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "CVTPD2PSrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "CVTSD2SSrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "CVTSI2SS64rm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "CVTSI2SSrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "CVTTPD2DQrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "MMX_CVTPD2PIirm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "MMX_CVTPI2PDirm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "MMX_CVTTPD2PIirm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "VCVTDQ2PDYrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "VCVTDQ2PDrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "VCVTPD2DQrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "VCVTPD2PSrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "VCVTSD2SSrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "VCVTSI2SS64rm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "VCVTSI2SSrm")>;
-def: InstRW<[SBWriteResGroup103], (instregex "VCVTTPD2DQrm")>;
-
-def SBWriteResGroup104 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 11;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup104], (instregex "MULPDrm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "MULPSrm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "MULSDrm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "MULSSrm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "PCMPGTQrm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "PHMINPOSUWrm128")>;
-def: InstRW<[SBWriteResGroup104], (instregex "RCPPSm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "RCPSSm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "RSQRTPSm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "RSQRTSSm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "VMULPDrm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "VMULPSrm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "VMULSDrm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "VMULSSrm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "VPCMPGTQrm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "VPHMINPOSUWrm128")>;
-def: InstRW<[SBWriteResGroup104], (instregex "VRCPPSm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "VRCPSSm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "VRSQRTPSm")>;
-def: InstRW<[SBWriteResGroup104], (instregex "VRSQRTSSm")>;
-
-def SBWriteResGroup105 : SchedWriteRes<[SBPort0]> {
-  let Latency = 11;
-  let NumMicroOps = 3;
-  let ResourceCycles = [3];
-}
-def: InstRW<[SBWriteResGroup105], (instregex "PCMPISTRIrr")>;
-def: InstRW<[SBWriteResGroup105], (instregex "PCMPISTRM128rr")>;
-def: InstRW<[SBWriteResGroup105], (instregex "VPCMPISTRIrr")>;
-def: InstRW<[SBWriteResGroup105], (instregex "VPCMPISTRM128rr")>;
-
-def SBWriteResGroup106 : SchedWriteRes<[SBPort1,SBPort23]> {
-  let Latency = 11;
-  let NumMicroOps = 3;
-  let ResourceCycles = [2,1];
-}
-def: InstRW<[SBWriteResGroup106], (instregex "FICOM16m")>;
-def: InstRW<[SBWriteResGroup106], (instregex "FICOM32m")>;
-def: InstRW<[SBWriteResGroup106], (instregex "FICOMP16m")>;
-def: InstRW<[SBWriteResGroup106], (instregex "FICOMP32m")>;
-
-def SBWriteResGroup107 : SchedWriteRes<[SBPort1,SBPort5,SBPort23]> {
-  let Latency = 11;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup107], (instregex "VCVTPD2DQYrm")>;
-def: InstRW<[SBWriteResGroup107], (instregex "VCVTPD2PSYrm")>;
-def: InstRW<[SBWriteResGroup107], (instregex "VCVTTPD2DQYrm")>;
-
-def SBWriteResGroup108 : SchedWriteRes<[SBPort0,SBPort23,SBPort15]> {
-  let Latency = 11;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,1,2];
-}
-def: InstRW<[SBWriteResGroup108], (instregex "MPSADBWrmi")>;
-def: InstRW<[SBWriteResGroup108], (instregex "VMPSADBWrmi")>;
-
-def SBWriteResGroup109 : SchedWriteRes<[SBPort1,SBPort5,SBPort23]> {
-  let Latency = 11;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,2,1];
-}
-def: InstRW<[SBWriteResGroup109], (instregex "HADDPDrm")>;
-def: InstRW<[SBWriteResGroup109], (instregex "HADDPSrm")>;
-def: InstRW<[SBWriteResGroup109], (instregex "HSUBPDrm")>;
-def: InstRW<[SBWriteResGroup109], (instregex "HSUBPSrm")>;
-def: InstRW<[SBWriteResGroup109], (instregex "VHADDPDrm")>;
-def: InstRW<[SBWriteResGroup109], (instregex "VHADDPSrm")>;
-def: InstRW<[SBWriteResGroup109], (instregex "VHSUBPDrm")>;
-def: InstRW<[SBWriteResGroup109], (instregex "VHSUBPSrm")>;
-
-def SBWriteResGroup110 : SchedWriteRes<[SBPort5]> {
-  let Latency = 12;
-  let NumMicroOps = 2;
-  let ResourceCycles = [2];
-}
-def: InstRW<[SBWriteResGroup110], (instregex "AESIMCrr")>;
-def: InstRW<[SBWriteResGroup110], (instregex "VAESIMCrr")>;
-
-def SBWriteResGroup111 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 12;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup111], (instregex "MUL_F32m")>;
-def: InstRW<[SBWriteResGroup111], (instregex "MUL_F64m")>;
-def: InstRW<[SBWriteResGroup111], (instregex "VMULPDYrm")>;
-def: InstRW<[SBWriteResGroup111], (instregex "VMULPSYrm")>;
-
-def SBWriteResGroup112 : SchedWriteRes<[SBPort0,SBPort1,SBPort5]> {
-  let Latency = 12;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,2,1];
-}
-def: InstRW<[SBWriteResGroup112], (instregex "DPPSrri")>;
-def: InstRW<[SBWriteResGroup112], (instregex "VDPPSYrri")>;
-def: InstRW<[SBWriteResGroup112], (instregex "VDPPSrri")>;
-
-def SBWriteResGroup113 : SchedWriteRes<[SBPort1,SBPort5,SBPort23]> {
-  let Latency = 12;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,2,1];
-}
-def: InstRW<[SBWriteResGroup113], (instregex "VHADDPDrm")>;
-def: InstRW<[SBWriteResGroup113], (instregex "VHADDPSYrm")>;
-def: InstRW<[SBWriteResGroup113], (instregex "VHSUBPDYrm")>;
-def: InstRW<[SBWriteResGroup113], (instregex "VHSUBPSYrm")>;
-
-def SBWriteResGroup114 : SchedWriteRes<[SBPort1,SBPort23]> {
-  let Latency = 13;
-  let NumMicroOps = 3;
-  let ResourceCycles = [2,1];
-}
-def: InstRW<[SBWriteResGroup114], (instregex "ADD_FI16m")>;
-def: InstRW<[SBWriteResGroup114], (instregex "ADD_FI32m")>;
-def: InstRW<[SBWriteResGroup114], (instregex "SUBR_FI16m")>;
-def: InstRW<[SBWriteResGroup114], (instregex "SUBR_FI32m")>;
-def: InstRW<[SBWriteResGroup114], (instregex "SUB_FI16m")>;
-def: InstRW<[SBWriteResGroup114], (instregex "SUB_FI32m")>;
-
-def SBWriteResGroup115 : SchedWriteRes<[SBPort5,SBPort23,SBPort015]> {
-  let Latency = 13;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup115], (instregex "AESDECLASTrm")>;
-def: InstRW<[SBWriteResGroup115], (instregex "AESDECrm")>;
-def: InstRW<[SBWriteResGroup115], (instregex "AESENCLASTrm")>;
-def: InstRW<[SBWriteResGroup115], (instregex "AESENCrm")>;
-def: InstRW<[SBWriteResGroup115], (instregex "VAESDECLASTrm")>;
-def: InstRW<[SBWriteResGroup115], (instregex "VAESDECrm")>;
-def: InstRW<[SBWriteResGroup115], (instregex "VAESENCLASTrm")>;
-def: InstRW<[SBWriteResGroup115], (instregex "VAESENCrm")>;
-
-def SBWriteResGroup116 : SchedWriteRes<[SBPort0]> {
-  let Latency = 14;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup116], (instregex "DIVPSrr")>;
-def: InstRW<[SBWriteResGroup116], (instregex "DIVSSrr")>;
-def: InstRW<[SBWriteResGroup116], (instregex "SQRTPSr")>;
-def: InstRW<[SBWriteResGroup116], (instregex "SQRTSSr")>;
-def: InstRW<[SBWriteResGroup116], (instregex "VDIVPSrr")>;
-def: InstRW<[SBWriteResGroup116], (instregex "VDIVSSrr")>;
-def: InstRW<[SBWriteResGroup116], (instregex "VSQRTPSr")>;
-
-def SBWriteResGroup117 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 14;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup117], (instregex "VSQRTSSm")>;
-
-def SBWriteResGroup118 : SchedWriteRes<[SBPort0,SBPort23,SBPort0]> {
-  let Latency = 14;
-  let NumMicroOps = 4;
-  let ResourceCycles = [2,1,1];
-}
-def: InstRW<[SBWriteResGroup118], (instregex "VRCPPSm")>;
-def: InstRW<[SBWriteResGroup118], (instregex "VRSQRTPSYm")>;
-
-def SBWriteResGroup119 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
-  let Latency = 15;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup119], (instregex "MUL_FI16m")>;
-def: InstRW<[SBWriteResGroup119], (instregex "MUL_FI32m")>;
-
-def SBWriteResGroup120 : SchedWriteRes<[SBPort0,SBPort1,SBPort5,SBPort23]> {
-  let Latency = 15;
-  let NumMicroOps = 4;
-  let ResourceCycles = [1,1,1,1];
-}
-def: InstRW<[SBWriteResGroup120], (instregex "DPPDrmi")>;
-def: InstRW<[SBWriteResGroup120], (instregex "VDPPDrmi")>;
-
-def SBWriteResGroup121 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 17;
-  let NumMicroOps = 4;
-  let ResourceCycles = [3,1];
-}
-def: InstRW<[SBWriteResGroup121], (instregex "PCMPISTRIrm")>;
-def: InstRW<[SBWriteResGroup121], (instregex "PCMPISTRM128rm")>;
-def: InstRW<[SBWriteResGroup121], (instregex "VPCMPISTRIrm")>;
-def: InstRW<[SBWriteResGroup121], (instregex "VPCMPISTRM128rm")>;
-
-def SBWriteResGroup122 : SchedWriteRes<[SBPort5,SBPort23]> {
-  let Latency = 18;
-  let NumMicroOps = 3;
-  let ResourceCycles = [2,1];
-}
-def: InstRW<[SBWriteResGroup122], (instregex "AESIMCrm")>;
-def: InstRW<[SBWriteResGroup122], (instregex "VAESIMCrm")>;
-
-def SBWriteResGroup123 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 20;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup123], (instregex "DIVPSrm")>;
-def: InstRW<[SBWriteResGroup123], (instregex "DIVSSrm")>;
-def: InstRW<[SBWriteResGroup123], (instregex "SQRTPSm")>;
-def: InstRW<[SBWriteResGroup123], (instregex "SQRTSSm")>;
-def: InstRW<[SBWriteResGroup123], (instregex "VDIVPSrm")>;
-def: InstRW<[SBWriteResGroup123], (instregex "VDIVSSrm")>;
-def: InstRW<[SBWriteResGroup123], (instregex "VSQRTPSm")>;
-
-def SBWriteResGroup124 : SchedWriteRes<[SBPort0]> {
-  let Latency = 21;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup124], (instregex "VSQRTSDr")>;
-
-def SBWriteResGroup125 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 21;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup125], (instregex "VSQRTSDm")>;
-
-def SBWriteResGroup126 : SchedWriteRes<[SBPort0]> {
-  let Latency = 22;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup126], (instregex "DIVPDrr")>;
-def: InstRW<[SBWriteResGroup126], (instregex "DIVSDrr")>;
-def: InstRW<[SBWriteResGroup126], (instregex "SQRTPDr")>;
-def: InstRW<[SBWriteResGroup126], (instregex "SQRTSDr")>;
-def: InstRW<[SBWriteResGroup126], (instregex "VDIVPDrr")>;
-def: InstRW<[SBWriteResGroup126], (instregex "VDIVSDrr")>;
-def: InstRW<[SBWriteResGroup126], (instregex "VSQRTPDr")>;
-
-def SBWriteResGroup127 : SchedWriteRes<[SBPort0]> {
-  let Latency = 24;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup127], (instregex "DIVR_FPrST0")>;
-def: InstRW<[SBWriteResGroup127], (instregex "DIVR_FST0r")>;
-def: InstRW<[SBWriteResGroup127], (instregex "DIVR_FrST0")>;
-def: InstRW<[SBWriteResGroup127], (instregex "DIV_FPrST0")>;
-def: InstRW<[SBWriteResGroup127], (instregex "DIV_FST0r")>;
-def: InstRW<[SBWriteResGroup127], (instregex "DIV_FrST0")>;
-
-def SBWriteResGroup128 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 28;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup128], (instregex "DIVPDrm")>;
-def: InstRW<[SBWriteResGroup128], (instregex "DIVSDrm")>;
-def: InstRW<[SBWriteResGroup128], (instregex "SQRTPDm")>;
-def: InstRW<[SBWriteResGroup128], (instregex "SQRTSDm")>;
-def: InstRW<[SBWriteResGroup128], (instregex "VDIVPDrm")>;
-def: InstRW<[SBWriteResGroup128], (instregex "VDIVSDrm")>;
-def: InstRW<[SBWriteResGroup128], (instregex "VSQRTPDm")>;
-
-def SBWriteResGroup129 : SchedWriteRes<[SBPort0,SBPort0]> {
-  let Latency = 29;
-  let NumMicroOps = 3;
-  let ResourceCycles = [2,1];
-}
-def: InstRW<[SBWriteResGroup129], (instregex "VDIVPSYrr")>;
-def: InstRW<[SBWriteResGroup129], (instregex "VSQRTPSYr")>;
-
-def SBWriteResGroup130 : SchedWriteRes<[SBPort0,SBPort23]> {
-  let Latency = 31;
-  let NumMicroOps = 2;
-  let ResourceCycles = [1,1];
-}
-def: InstRW<[SBWriteResGroup130], (instregex "DIVR_F32m")>;
-def: InstRW<[SBWriteResGroup130], (instregex "DIVR_F64m")>;
-def: InstRW<[SBWriteResGroup130], (instregex "DIV_F32m")>;
-def: InstRW<[SBWriteResGroup130], (instregex "DIV_F64m")>;
-
-def SBWriteResGroup131 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
-  let Latency = 34;
-  let NumMicroOps = 3;
-  let ResourceCycles = [1,1,1];
-}
-def: InstRW<[SBWriteResGroup131], (instregex "DIVR_FI16m")>;
-def: InstRW<[SBWriteResGroup131], (instregex "DIVR_FI32m")>;
-def: InstRW<[SBWriteResGroup131], (instregex "DIV_FI16m")>;
-def: InstRW<[SBWriteResGroup131], (instregex "DIV_FI32m")>;
-
-def SBWriteResGroup132 : SchedWriteRes<[SBPort0,SBPort23,SBPort0]> {
-  let Latency = 36;
-  let NumMicroOps = 4;
-  let ResourceCycles = [2,1,1];
-}
-def: InstRW<[SBWriteResGroup132], (instregex "VDIVPSYrm")>;
-def: InstRW<[SBWriteResGroup132], (instregex "VSQRTPSYm")>;
-
-def SBWriteResGroup133 : SchedWriteRes<[SBPort0,SBPort0]> {
-  let Latency = 45;
-  let NumMicroOps = 3;
-  let ResourceCycles = [2,1];
-}
-def: InstRW<[SBWriteResGroup133], (instregex "VDIVPDYrr")>;
-def: InstRW<[SBWriteResGroup133], (instregex "VSQRTPDYr")>;
-
-def SBWriteResGroup134 : SchedWriteRes<[SBPort0,SBPort23,SBPort0]> {
-  let Latency = 52;
-  let NumMicroOps = 4;
-  let ResourceCycles = [2,1,1];
-}
-def: InstRW<[SBWriteResGroup134], (instregex "VDIVPDYrm")>;
-def: InstRW<[SBWriteResGroup134], (instregex "VSQRTPDYm")>;
-
-def SBWriteResGroup135 : SchedWriteRes<[SBPort0]> {
-  let Latency = 114;
-  let NumMicroOps = 1;
-  let ResourceCycles = [1];
-}
-def: InstRW<[SBWriteResGroup135], (instregex "VSQRTSSr")>;
-
 } // SchedModel
diff --git contrib/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp contrib/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
index fc15dc1e6032..4820b9f7de58 100644
--- contrib/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
+++ contrib/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
@@ -161,6 +161,22 @@ int llvm::dlltoolDriverMain(llvm::ArrayRef<const char *> ArgsArr) {
   if (Path.empty())
     Path = getImplibPath(Def->OutputFile);
 
+  if (Machine == IMAGE_FILE_MACHINE_I386 && Args.getLastArg(OPT_k)) {
+    for (COFFShortExport& E : Def->Exports) {
+      if (E.isWeak() || (!E.Name.empty() && E.Name[0] == '?'))
+        continue;
+      E.SymbolName = E.Name;
+      // Trim off the trailing decoration. Symbols will always have a
+      // starting prefix here (either _ for cdecl/stdcall, @ for fastcall
+      // or ? for C++ functions). (Vectorcall functions also will end up having
+      // a prefix here, even if they shouldn't.)
+      E.Name = E.Name.substr(0, E.Name.find('@', 1));
+      // By making sure E.SymbolName != E.Name for decorated symbols,
+      // writeImportLibrary writes these symbols with the type
+      // IMPORT_NAME_UNDECORATE.
+    }
+  }
+
   if (writeImportLibrary(Def->OutputFile, Path, Def->Exports, Machine, true))
     return 1;
   return 0;
diff --git contrib/llvm/lib/ToolDrivers/llvm-dlltool/Options.td contrib/llvm/lib/ToolDrivers/llvm-dlltool/Options.td
index 213c6a4d7674..e78182ab8130 100644
--- contrib/llvm/lib/ToolDrivers/llvm-dlltool/Options.td
+++ contrib/llvm/lib/ToolDrivers/llvm-dlltool/Options.td
@@ -12,13 +12,13 @@ def D_long : JoinedOrSeparate<["--"], "dllname">, Alias<D>;
 def d: JoinedOrSeparate<["-"], "d">, HelpText<"Input .def File">;
 def d_long : JoinedOrSeparate<["--"], "input-def">, Alias<d>;
 
+def k: Flag<["-"], "k">, HelpText<"Kill @n Symbol from export">;
+def k_alias: Flag<["--"], "kill-at">, Alias<k>;
+
 //==============================================================================
 // The flags below do nothing. They are defined only for dlltool compatibility.
 //==============================================================================
 
-def k: Flag<["-"], "k">, HelpText<"Kill @n Symbol from export">;
-def k_alias: Flag<["--"], "kill-at">, Alias<k>;
-
 def S: JoinedOrSeparate<["-"], "S">, HelpText<"Assembler">;
 def S_alias: JoinedOrSeparate<["--"], "as">, Alias<S>;
 
diff --git contrib/llvm/lib/Transforms/Scalar/LowerAtomic.cpp contrib/llvm/lib/Transforms/Scalar/LowerAtomic.cpp
index 08e60b16bedf..6f77c5bd0d07 100644
--- contrib/llvm/lib/Transforms/Scalar/LowerAtomic.cpp
+++ contrib/llvm/lib/Transforms/Scalar/LowerAtomic.cpp
@@ -155,8 +155,7 @@ public:
   }
 
   bool runOnFunction(Function &F) override {
-    if (skipFunction(F))
-      return false;
+    // Don't skip optnone functions; atomics still need to be lowered.
     FunctionAnalysisManager DummyFAM;
     auto PA = Impl.run(F, DummyFAM);
     return !PA.areAllPreserved();
diff --git contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp
index 29d1ba406ae4..e235e5eb1a06 100644
--- contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp
+++ contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp
@@ -1941,6 +1941,12 @@ Instruction *ReassociatePass::canonicalizeNegConstExpr(Instruction *I) {
   if (!User->isCommutative() && User->getOperand(1) != I)
     return nullptr;
 
+  // Don't canonicalize x + (-Constant * y) -> x - (Constant * y), if the
+  // resulting subtract will be broken up later.  This can get us into an
+  // infinite loop during reassociation.
+  if (UserOpcode == Instruction::FAdd && ShouldBreakUpSubtract(User))
+    return nullptr;
+
   // Change the sign of the constant.
   APFloat Val = CF->getValueAPF();
   Val.changeSign();
diff --git contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp
index 7e75e8847785..9c4e13903ed7 100644
--- contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp
+++ contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp
@@ -341,8 +341,9 @@ void PruningFunctionCloner::CloneBlock(const BasicBlock *BB,
               SimplifyInstruction(NewInst, BB->getModule()->getDataLayout())) {
         // On the off-chance that this simplifies to an instruction in the old
         // function, map it back into the new function.
-        if (Value *MappedV = VMap.lookup(V))
-          V = MappedV;
+        if (NewFunc != OldFunc)
+          if (Value *MappedV = VMap.lookup(V))
+            V = MappedV;
 
         if (!NewInst->mayHaveSideEffects()) {
           VMap[&*II] = V;
diff --git contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h
index 9d64f0244ec3..2f735c5506c4 100644
--- contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h
+++ contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h
@@ -375,6 +375,7 @@ class CXXRecordDecl : public RecordDecl {
     /// \brief These flags are \c true if a defaulted corresponding special
     /// member can't be fully analyzed without performing overload resolution.
     /// @{
+    unsigned NeedOverloadResolutionForCopyConstructor : 1;
     unsigned NeedOverloadResolutionForMoveConstructor : 1;
     unsigned NeedOverloadResolutionForMoveAssignment : 1;
     unsigned NeedOverloadResolutionForDestructor : 1;
@@ -383,6 +384,7 @@ class CXXRecordDecl : public RecordDecl {
     /// \brief These flags are \c true if an implicit defaulted corresponding
     /// special member would be defined as deleted.
     /// @{
+    unsigned DefaultedCopyConstructorIsDeleted : 1;
     unsigned DefaultedMoveConstructorIsDeleted : 1;
     unsigned DefaultedMoveAssignmentIsDeleted : 1;
     unsigned DefaultedDestructorIsDeleted : 1;
@@ -415,6 +417,12 @@ class CXXRecordDecl : public RecordDecl {
     /// constructor.
     unsigned HasDefaultedDefaultConstructor : 1;
 
+    /// \brief True if this class can be passed in a non-address-preserving
+    /// fashion (such as in registers) according to the C++ language rules.
+    /// This does not imply anything about how the ABI in use will actually
+    /// pass an object of this class.
+    unsigned CanPassInRegisters : 1;
+
     /// \brief True if a defaulted default constructor for this class would
     /// be constexpr.
     unsigned DefaultedDefaultConstructorIsConstexpr : 1;
@@ -811,18 +819,50 @@ public:
     return data().FirstFriend.isValid();
   }
 
+  /// \brief \c true if a defaulted copy constructor for this class would be
+  /// deleted.
+  bool defaultedCopyConstructorIsDeleted() const {
+    assert((!needsOverloadResolutionForCopyConstructor() ||
+            (data().DeclaredSpecialMembers & SMF_CopyConstructor)) &&
+           "this property has not yet been computed by Sema");
+    return data().DefaultedCopyConstructorIsDeleted;
+  }
+
+  /// \brief \c true if a defaulted move constructor for this class would be
+  /// deleted.
+  bool defaultedMoveConstructorIsDeleted() const {
+    assert((!needsOverloadResolutionForMoveConstructor() ||
+            (data().DeclaredSpecialMembers & SMF_MoveConstructor)) &&
+           "this property has not yet been computed by Sema");
+    return data().DefaultedMoveConstructorIsDeleted;
+  }
+
+  /// \brief \c true if a defaulted destructor for this class would be deleted.
+  bool defaultedDestructorIsDeleted() const {
+    return !data().DefaultedDestructorIsDeleted;
+  }
+
+  /// \brief \c true if we know for sure that this class has a single,
+  /// accessible, unambiguous copy constructor that is not deleted.
+  bool hasSimpleCopyConstructor() const {
+    return !hasUserDeclaredCopyConstructor() &&
+           !data().DefaultedCopyConstructorIsDeleted;
+  }
+
   /// \brief \c true if we know for sure that this class has a single,
   /// accessible, unambiguous move constructor that is not deleted.
   bool hasSimpleMoveConstructor() const {
     return !hasUserDeclaredMoveConstructor() && hasMoveConstructor() &&
            !data().DefaultedMoveConstructorIsDeleted;
   }
+
   /// \brief \c true if we know for sure that this class has a single,
   /// accessible, unambiguous move assignment operator that is not deleted.
   bool hasSimpleMoveAssignment() const {
     return !hasUserDeclaredMoveAssignment() && hasMoveAssignment() &&
            !data().DefaultedMoveAssignmentIsDeleted;
   }
+
   /// \brief \c true if we know for sure that this class has an accessible
   /// destructor that is not deleted.
   bool hasSimpleDestructor() const {
@@ -878,7 +918,16 @@ public:
   /// \brief Determine whether we need to eagerly declare a defaulted copy
   /// constructor for this class.
   bool needsOverloadResolutionForCopyConstructor() const {
-    return data().HasMutableFields;
+    // C++17 [class.copy.ctor]p6:
+    //   If the class definition declares a move constructor or move assignment
+    //   operator, the implicitly declared copy constructor is defined as
+    //   deleted.
+    // In MSVC mode, sometimes a declared move assignment does not delete an
+    // implicit copy constructor, so defer this choice to Sema.
+    if (data().UserDeclaredSpecialMembers &
+        (SMF_MoveConstructor | SMF_MoveAssignment))
+      return true;
+    return data().NeedOverloadResolutionForCopyConstructor;
   }
 
   /// \brief Determine whether an implicit copy constructor for this type
@@ -919,7 +968,16 @@ public:
            needsImplicitMoveConstructor();
   }
 
-  /// \brief Set that we attempted to declare an implicitly move
+  /// \brief Set that we attempted to declare an implicit copy
+  /// constructor, but overload resolution failed so we deleted it.
+  void setImplicitCopyConstructorIsDeleted() {
+    assert((data().DefaultedCopyConstructorIsDeleted ||
+            needsOverloadResolutionForCopyConstructor()) &&
+           "Copy constructor should not be deleted");
+    data().DefaultedCopyConstructorIsDeleted = true;
+  }
+
+  /// \brief Set that we attempted to declare an implicit move
   /// constructor, but overload resolution failed so we deleted it.
   void setImplicitMoveConstructorIsDeleted() {
     assert((data().DefaultedMoveConstructorIsDeleted ||
@@ -1316,6 +1374,18 @@ public:
     return data().HasIrrelevantDestructor;
   }
 
+  /// \brief Determine whether this class has at least one trivial, non-deleted
+  /// copy or move constructor.
+  bool canPassInRegisters() const {
+    return data().CanPassInRegisters;
+  }
+
+  /// \brief Set that we can pass this RecordDecl in registers.
+  // FIXME: This should be set as part of completeDefinition.
+  void setCanPassInRegisters(bool CanPass) {
+    data().CanPassInRegisters = CanPass;
+  }
+
   /// \brief Determine whether this class has a non-literal or/ volatile type
   /// non-static data member or base class.
   bool hasNonLiteralTypeFieldsOrBases() const {
@@ -1958,7 +2028,10 @@ public:
 
   /// \brief Returns the type of the \c this pointer.
   ///
-  /// Should only be called for instance (i.e., non-static) methods.
+  /// Should only be called for instance (i.e., non-static) methods. Note
+  /// that for the call operator of a lambda closure type, this returns the
+  /// desugared 'this' type (a pointer to the closure type), not the captured
+  /// 'this' type.
   QualType getThisType(ASTContext &C) const;
 
   unsigned getTypeQualifiers() const {
diff --git contrib/llvm/tools/clang/include/clang/Driver/Options.td contrib/llvm/tools/clang/include/clang/Driver/Options.td
index 753c178eec6a..05dc9d7eb3ad 100644
--- contrib/llvm/tools/clang/include/clang/Driver/Options.td
+++ contrib/llvm/tools/clang/include/clang/Driver/Options.td
@@ -694,6 +694,9 @@ def fbuiltin : Flag<["-"], "fbuiltin">, Group<f_Group>;
 def fbuiltin_module_map : Flag <["-"], "fbuiltin-module-map">, Group<f_Group>,
   Flags<[DriverOption]>, HelpText<"Load the clang builtins module map file.">;
 def fcaret_diagnostics : Flag<["-"], "fcaret-diagnostics">, Group<f_Group>;
+def fclang_abi_compat_EQ : Joined<["-"], "fclang-abi-compat=">, Group<f_clang_Group>,
+  Flags<[CC1Option]>, MetaVarName<"<version>">, Values<"<major>.<minor>,latest">,
+  HelpText<"Attempt to match the ABI of Clang <version>">;
 def fclasspath_EQ : Joined<["-"], "fclasspath=">, Group<f_Group>;
 def fcolor_diagnostics : Flag<["-"], "fcolor-diagnostics">, Group<f_Group>,
   Flags<[CoreOption, CC1Option]>, HelpText<"Use colors in diagnostics">;
diff --git contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.def contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.def
index 238bb231bdf5..4002415adc45 100644
--- contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.def
+++ contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.def
@@ -120,6 +120,10 @@ CODEGENOPT(NoZeroInitializedInBSS , 1, 0) ///< -fno-zero-initialized-in-bss.
 ENUM_CODEGENOPT(ObjCDispatchMethod, ObjCDispatchMethodKind, 2, Legacy)
 CODEGENOPT(OmitLeafFramePointer , 1, 0) ///< Set when -momit-leaf-frame-pointer is
                                         ///< enabled.
+
+/// A version of Clang that we should attempt to be ABI-compatible with.
+ENUM_CODEGENOPT(ClangABICompat, ClangABI, 4, ClangABI::Latest)
+
 VALUE_CODEGENOPT(OptimizationLevel, 2, 0) ///< The -O[0-3] option specified.
 VALUE_CODEGENOPT(OptimizeSize, 2, 0) ///< If -Os (==1) or -Oz (==2) is specified.
 
diff --git contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h
index 22d5d3d16ee2..71730a21dbe2 100644
--- contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h
+++ contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h
@@ -69,6 +69,23 @@ public:
     LocalExecTLSModel
   };
 
+  /// Clang versions with different platform ABI conformance.
+  enum class ClangABI {
+    /// Attempt to be ABI-compatible with code generated by Clang 3.8.x
+    /// (SVN r257626). This causes <1 x long long> to be passed in an
+    /// integer register instead of an SSE register on x64_64.
+    Ver3_8,
+
+    /// Attempt to be ABI-compatible with code generated by Clang 4.0.x
+    /// (SVN r291814). This causes move operations to be ignored when
+    /// determining whether a class type can be passed or returned directly.
+    Ver4,
+
+    /// Conform to the underlying platform's C and C++ ABIs as closely
+    /// as we can.
+    Latest
+  };
+
   enum StructReturnConventionKind {
     SRCK_Default,  // No special option was passed.
     SRCK_OnStack,  // Small structs on the stack (-fpcc-struct-return).
diff --git contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h
index a058fbfbb4cf..dba4b80f6071 100644
--- contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h
+++ contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h
@@ -1048,10 +1048,6 @@ public:
   /// which implicitly adds the builtin defines etc.
   void EnterMainSourceFile();
 
-  /// \brief After parser warm-up, initialize the conditional stack from
-  /// the preamble.
-  void replayPreambleConditionalStack();
-
   /// \brief Inform the preprocessor callbacks that processing is complete.
   void EndSourceFile();
 
@@ -2025,6 +2021,10 @@ public:
   }
 
 private:
+  /// \brief After processing predefined file, initialize the conditional stack from
+  /// the preamble.
+  void replayPreambleConditionalStack();
+
   // Macro handling.
   void HandleDefineDirective(Token &Tok, bool ImmediatelyAfterTopLevelIfndef);
   void HandleUndefDirective();
diff --git contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp
index 6e33b98d2f18..2c0bb11cc4bc 100644
--- contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp
+++ contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp
@@ -956,12 +956,16 @@ bool ASTNodeImporter::ImportDefinition(RecordDecl *From, RecordDecl *To,
     ToData.HasUninitializedFields = FromData.HasUninitializedFields;
     ToData.HasInheritedConstructor = FromData.HasInheritedConstructor;
     ToData.HasInheritedAssignment = FromData.HasInheritedAssignment;
+    ToData.NeedOverloadResolutionForCopyConstructor
+      = FromData.NeedOverloadResolutionForCopyConstructor;
     ToData.NeedOverloadResolutionForMoveConstructor
       = FromData.NeedOverloadResolutionForMoveConstructor;
     ToData.NeedOverloadResolutionForMoveAssignment
       = FromData.NeedOverloadResolutionForMoveAssignment;
     ToData.NeedOverloadResolutionForDestructor
       = FromData.NeedOverloadResolutionForDestructor;
+    ToData.DefaultedCopyConstructorIsDeleted
+      = FromData.DefaultedCopyConstructorIsDeleted;
     ToData.DefaultedMoveConstructorIsDeleted
       = FromData.DefaultedMoveConstructorIsDeleted;
     ToData.DefaultedMoveAssignmentIsDeleted
@@ -973,6 +977,7 @@ bool ASTNodeImporter::ImportDefinition(RecordDecl *From, RecordDecl *To,
       = FromData.HasConstexprNonCopyMoveConstructor;
     ToData.HasDefaultedDefaultConstructor
       = FromData.HasDefaultedDefaultConstructor;
+    ToData.CanPassInRegisters = FromData.CanPassInRegisters;
     ToData.DefaultedDefaultConstructorIsConstexpr
       = FromData.DefaultedDefaultConstructorIsConstexpr;
     ToData.HasConstexprDefaultConstructor
diff --git contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp
index 1caceab85eea..5782b7b56c96 100644
--- contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp
+++ contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp
@@ -55,15 +55,18 @@ CXXRecordDecl::DefinitionData::DefinitionData(CXXRecordDecl *D)
       HasOnlyCMembers(true), HasInClassInitializer(false),
       HasUninitializedReferenceMember(false), HasUninitializedFields(false),
       HasInheritedConstructor(false), HasInheritedAssignment(false),
+      NeedOverloadResolutionForCopyConstructor(false),
       NeedOverloadResolutionForMoveConstructor(false),
       NeedOverloadResolutionForMoveAssignment(false),
       NeedOverloadResolutionForDestructor(false),
+      DefaultedCopyConstructorIsDeleted(false),
       DefaultedMoveConstructorIsDeleted(false),
       DefaultedMoveAssignmentIsDeleted(false),
       DefaultedDestructorIsDeleted(false), HasTrivialSpecialMembers(SMF_All),
       DeclaredNonTrivialSpecialMembers(0), HasIrrelevantDestructor(true),
       HasConstexprNonCopyMoveConstructor(false),
       HasDefaultedDefaultConstructor(false),
+      CanPassInRegisters(true),
       DefaultedDefaultConstructorIsConstexpr(true),
       HasConstexprDefaultConstructor(false),
       HasNonLiteralTypeFieldsOrBases(false), ComputedVisibleConversions(false),
@@ -352,8 +355,10 @@ CXXRecordDecl::setBases(CXXBaseSpecifier const * const *Bases,
       setHasVolatileMember(true);
 
     // Keep track of the presence of mutable fields.
-    if (BaseClassDecl->hasMutableFields())
+    if (BaseClassDecl->hasMutableFields()) {
       data().HasMutableFields = true;
+      data().NeedOverloadResolutionForCopyConstructor = true;
+    }
 
     if (BaseClassDecl->hasUninitializedReferenceMember())
       data().HasUninitializedReferenceMember = true;
@@ -406,6 +411,8 @@ void CXXRecordDecl::addedClassSubobject(CXXRecordDecl *Subobj) {
   //    -- a direct or virtual base class B that cannot be copied/moved [...]
   //    -- a non-static data member of class type M (or array thereof)
   //       that cannot be copied or moved [...]
+  if (!Subobj->hasSimpleCopyConstructor())
+    data().NeedOverloadResolutionForCopyConstructor = true;
   if (!Subobj->hasSimpleMoveConstructor())
     data().NeedOverloadResolutionForMoveConstructor = true;
 
@@ -426,6 +433,7 @@ void CXXRecordDecl::addedClassSubobject(CXXRecordDecl *Subobj) {
   //    -- any non-static data member has a type with a destructor
   //       that is deleted or inaccessible from the defaulted [ctor or dtor].
   if (!Subobj->hasSimpleDestructor()) {
+    data().NeedOverloadResolutionForCopyConstructor = true;
     data().NeedOverloadResolutionForMoveConstructor = true;
     data().NeedOverloadResolutionForDestructor = true;
   }
@@ -711,8 +719,10 @@ void CXXRecordDecl::addedMember(Decl *D) {
       data().IsStandardLayout = false;
 
     // Keep track of the presence of mutable fields.
-    if (Field->isMutable())
+    if (Field->isMutable()) {
       data().HasMutableFields = true;
+      data().NeedOverloadResolutionForCopyConstructor = true;
+    }
 
     // C++11 [class.union]p8, DR1460:
     //   If X is a union, a non-static data member of X that is not an anonymous
@@ -756,6 +766,12 @@ void CXXRecordDecl::addedMember(Decl *D) {
       //   A standard-layout class is a class that:
       //    -- has no non-static data members of type [...] reference,
       data().IsStandardLayout = false;
+
+      // C++1z [class.copy.ctor]p10:
+      //   A defaulted copy constructor for a class X is defined as deleted if X has:
+      //    -- a non-static data member of rvalue reference type
+      if (T->isRValueReferenceType())
+        data().DefaultedCopyConstructorIsDeleted = true;
     }
 
     if (!Field->hasInClassInitializer() && !Field->isMutable()) {
@@ -809,6 +825,10 @@ void CXXRecordDecl::addedMember(Decl *D) {
         // We may need to perform overload resolution to determine whether a
         // field can be moved if it's const or volatile qualified.
         if (T.getCVRQualifiers() & (Qualifiers::Const | Qualifiers::Volatile)) {
+          // We need to care about 'const' for the copy constructor because an
+          // implicit copy constructor might be declared with a non-const
+          // parameter.
+          data().NeedOverloadResolutionForCopyConstructor = true;
           data().NeedOverloadResolutionForMoveConstructor = true;
           data().NeedOverloadResolutionForMoveAssignment = true;
         }
@@ -819,6 +839,8 @@ void CXXRecordDecl::addedMember(Decl *D) {
         //    -- X is a union-like class that has a variant member with a
         //       non-trivial [corresponding special member]
         if (isUnion()) {
+          if (FieldRec->hasNonTrivialCopyConstructor())
+            data().DefaultedCopyConstructorIsDeleted = true;
           if (FieldRec->hasNonTrivialMoveConstructor())
             data().DefaultedMoveConstructorIsDeleted = true;
           if (FieldRec->hasNonTrivialMoveAssignment())
@@ -830,6 +852,8 @@ void CXXRecordDecl::addedMember(Decl *D) {
         // For an anonymous union member, our overload resolution will perform
         // overload resolution for its members.
         if (Field->isAnonymousStructOrUnion()) {
+          data().NeedOverloadResolutionForCopyConstructor |=
+              FieldRec->data().NeedOverloadResolutionForCopyConstructor;
           data().NeedOverloadResolutionForMoveConstructor |=
               FieldRec->data().NeedOverloadResolutionForMoveConstructor;
           data().NeedOverloadResolutionForMoveAssignment |=
@@ -915,8 +939,10 @@ void CXXRecordDecl::addedMember(Decl *D) {
         }
         
         // Keep track of the presence of mutable fields.
-        if (FieldRec->hasMutableFields())
+        if (FieldRec->hasMutableFields()) {
           data().HasMutableFields = true;
+          data().NeedOverloadResolutionForCopyConstructor = true;
+        }
 
         // C++11 [class.copy]p13:
         //   If the implicitly-defined constructor would satisfy the
@@ -1450,7 +1476,7 @@ void CXXRecordDecl::completeDefinition() {
 
 void CXXRecordDecl::completeDefinition(CXXFinalOverriderMap *FinalOverriders) {
   RecordDecl::completeDefinition();
-  
+
   // If the class may be abstract (but hasn't been marked as such), check for
   // any pure final overriders.
   if (mayBeAbstract()) {
diff --git contrib/llvm/tools/clang/lib/Basic/Version.cpp contrib/llvm/tools/clang/lib/Basic/Version.cpp
index 3fd322483392..509c4a9ea052 100644
--- contrib/llvm/tools/clang/lib/Basic/Version.cpp
+++ contrib/llvm/tools/clang/lib/Basic/Version.cpp
@@ -36,7 +36,7 @@ std::string getClangRepositoryPath() {
 
   // If the SVN_REPOSITORY is empty, try to use the SVN keyword. This helps us
   // pick up a tag in an SVN export, for example.
-  StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/branches/release_50/lib/Basic/Version.cpp $");
+  StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_500/final/lib/Basic/Version.cpp $");
   if (URL.empty()) {
     URL = SVNRepository.slice(SVNRepository.find(':'),
                               SVNRepository.find("/lib/Basic"));
diff --git contrib/llvm/tools/clang/lib/CodeGen/ABIInfo.h contrib/llvm/tools/clang/lib/CodeGen/ABIInfo.h
index e4dce2f2a004..575506da84d4 100644
--- contrib/llvm/tools/clang/lib/CodeGen/ABIInfo.h
+++ contrib/llvm/tools/clang/lib/CodeGen/ABIInfo.h
@@ -24,6 +24,7 @@ namespace llvm {
 
 namespace clang {
   class ASTContext;
+  class CodeGenOptions;
   class TargetInfo;
 
 namespace CodeGen {
@@ -68,6 +69,7 @@ namespace swiftcall {
     llvm::LLVMContext &getVMContext() const;
     const llvm::DataLayout &getDataLayout() const;
     const TargetInfo &getTarget() const;
+    const CodeGenOptions &getCodeGenOpts() const;
 
     /// Return the calling convention to use for system runtime
     /// functions.
diff --git contrib/llvm/tools/clang/lib/CodeGen/CGCXXABI.cpp contrib/llvm/tools/clang/lib/CodeGen/CGCXXABI.cpp
index e29e525edd24..033258643ddf 100644
--- contrib/llvm/tools/clang/lib/CodeGen/CGCXXABI.cpp
+++ contrib/llvm/tools/clang/lib/CodeGen/CGCXXABI.cpp
@@ -30,38 +30,9 @@ void CGCXXABI::ErrorUnsupportedABI(CodeGenFunction &CGF, StringRef S) {
 }
 
 bool CGCXXABI::canCopyArgument(const CXXRecordDecl *RD) const {
-  // If RD has a non-trivial move or copy constructor, we cannot copy the
-  // argument.
-  if (RD->hasNonTrivialCopyConstructor() || RD->hasNonTrivialMoveConstructor())
-    return false;
-
-  // If RD has a non-trivial destructor, we cannot copy the argument.
-  if (RD->hasNonTrivialDestructor())
-    return false;
-
   // We can only copy the argument if there exists at least one trivial,
   // non-deleted copy or move constructor.
-  // FIXME: This assumes that all lazily declared copy and move constructors are
-  // not deleted.  This assumption might not be true in some corner cases.
-  bool CopyDeleted = false;
-  bool MoveDeleted = false;
-  for (const CXXConstructorDecl *CD : RD->ctors()) {
-    if (CD->isCopyConstructor() || CD->isMoveConstructor()) {
-      assert(CD->isTrivial());
-      // We had at least one undeleted trivial copy or move ctor.  Return
-      // directly.
-      if (!CD->isDeleted())
-        return true;
-      if (CD->isCopyConstructor())
-        CopyDeleted = true;
-      else
-        MoveDeleted = true;
-    }
-  }
-
-  // If all trivial copy and move constructors are deleted, we cannot copy the
-  // argument.
-  return !(CopyDeleted && MoveDeleted);
+  return RD->canPassInRegisters();
 }
 
 llvm::Constant *CGCXXABI::GetBogusMemberPointer(QualType T) {
diff --git contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp
index c9c450c32e3b..18b1d10a921d 100644
--- contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp
+++ contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -3260,7 +3260,7 @@ void CGDebugInfo::EmitInlineFunctionStart(CGBuilderTy &Builder, GlobalDecl GD) {
   llvm::DISubprogram *SP = nullptr;
   if (FI != SPCache.end())
     SP = dyn_cast_or_null<llvm::DISubprogram>(FI->second);
-  if (!SP)
+  if (!SP || !SP->isDefinition())
     SP = getFunctionStub(GD);
   FnBeginRegionCount.push_back(LexicalBlockStack.size());
   LexicalBlockStack.emplace_back(SP);
diff --git contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp
index 93a4a3866193..c23b25ea461f 100644
--- contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp
+++ contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp
@@ -22,6 +22,7 @@
 #include "CodeGenPGO.h"
 #include "TargetInfo.h"
 #include "clang/AST/ASTContext.h"
+#include "clang/AST/ASTLambda.h"
 #include "clang/AST/Decl.h"
 #include "clang/AST/DeclCXX.h"
 #include "clang/AST/StmtCXX.h"
@@ -983,11 +984,22 @@ void CodeGenFunction::StartFunction(GlobalDecl GD,
     }
 
     // Check the 'this' pointer once per function, if it's available.
-    if (CXXThisValue) {
+    if (CXXABIThisValue) {
       SanitizerSet SkippedChecks;
       SkippedChecks.set(SanitizerKind::ObjectSize, true);
       QualType ThisTy = MD->getThisType(getContext());
-      EmitTypeCheck(TCK_Load, Loc, CXXThisValue, ThisTy,
+
+      // If this is the call operator of a lambda with no capture-default, it
+      // may have a static invoker function, which may call this operator with
+      // a null 'this' pointer.
+      if (isLambdaCallOperator(MD) &&
+          cast<CXXRecordDecl>(MD->getParent())->getLambdaCaptureDefault() ==
+              LCD_None)
+        SkippedChecks.set(SanitizerKind::Null, true);
+
+      EmitTypeCheck(isa<CXXConstructorDecl>(MD) ? TCK_ConstructorCall
+                                                : TCK_MemberCall,
+                    Loc, CXXABIThisValue, ThisTy,
                     getContext().getTypeAlignInChars(ThisTy->getPointeeType()),
                     SkippedChecks);
     }
diff --git contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.cpp contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.cpp
index 5ed929135880..9306c4fbaff8 100644
--- contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.cpp
+++ contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.cpp
@@ -44,6 +44,10 @@ CodeGenTypes::~CodeGenTypes() {
     delete &*I++;
 }
 
+const CodeGenOptions &CodeGenTypes::getCodeGenOpts() const {
+  return CGM.getCodeGenOpts();
+}
+
 void CodeGenTypes::addRecordTypeName(const RecordDecl *RD,
                                      llvm::StructType *Ty,
                                      StringRef suffix) {
diff --git contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.h contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.h
index f0b97ebde1c2..9d0e3ded23e4 100644
--- contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.h
+++ contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.h
@@ -178,6 +178,7 @@ public:
   const TargetInfo &getTarget() const { return Target; }
   CGCXXABI &getCXXABI() const { return TheCXXABI; }
   llvm::LLVMContext &getLLVMContext() { return TheModule.getContext(); }
+  const CodeGenOptions &getCodeGenOpts() const;
 
   /// ConvertType - Convert type T into a llvm::Type.
   llvm::Type *ConvertType(QualType T);
diff --git contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
index c82b9677eacf..bd4cb9a3667b 100644
--- contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
+++ contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
@@ -62,12 +62,20 @@ public:
 
   bool classifyReturnType(CGFunctionInfo &FI) const override;
 
+  bool passClassIndirect(const CXXRecordDecl *RD) const {
+    // Clang <= 4 used the pre-C++11 rule, which ignores move operations.
+    // The PS4 platform ABI follows the behavior of Clang 3.2.
+    if (CGM.getCodeGenOpts().getClangABICompat() <=
+            CodeGenOptions::ClangABI::Ver4 ||
+        CGM.getTriple().getOS() == llvm::Triple::PS4)
+      return RD->hasNonTrivialDestructor() ||
+             RD->hasNonTrivialCopyConstructor();
+    return !canCopyArgument(RD);
+  }
+
   RecordArgABI getRecordArgABI(const CXXRecordDecl *RD) const override {
-    // Structures with either a non-trivial destructor or a non-trivial
-    // copy constructor are always indirect.
-    // FIXME: Use canCopyArgument() when it is fixed to handle lazily declared
-    // special members.
-    if (RD->hasNonTrivialDestructor() || RD->hasNonTrivialCopyConstructor())
+    // If C++ prohibits us from making a copy, pass by address.
+    if (passClassIndirect(RD))
       return RAA_Indirect;
     return RAA_Default;
   }
@@ -998,10 +1006,8 @@ bool ItaniumCXXABI::classifyReturnType(CGFunctionInfo &FI) const {
   if (!RD)
     return false;
 
-  // Return indirectly if we have a non-trivial copy ctor or non-trivial dtor.
-  // FIXME: Use canCopyArgument() when it is fixed to handle lazily declared
-  // special members.
-  if (RD->hasNonTrivialDestructor() || RD->hasNonTrivialCopyConstructor()) {
+  // If C++ prohibits us from making a copy, return by address.
+  if (passClassIndirect(RD)) {
     auto Align = CGM.getContext().getTypeAlignInChars(FI.getReturnType());
     FI.getReturnInfo() = ABIArgInfo::getIndirect(Align, /*ByVal=*/false);
     return true;
diff --git contrib/llvm/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp contrib/llvm/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp
index 78b510bb4665..1bd2937e4747 100644
--- contrib/llvm/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp
+++ contrib/llvm/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp
@@ -819,46 +819,44 @@ MicrosoftCXXABI::getRecordArgABI(const CXXRecordDecl *RD) const {
     return RAA_Default;
 
   case llvm::Triple::x86_64:
-    // Win64 passes objects with non-trivial copy ctors indirectly.
-    if (RD->hasNonTrivialCopyConstructor())
-      return RAA_Indirect;
-
-    // If an object has a destructor, we'd really like to pass it indirectly
+    // If a class has a destructor, we'd really like to pass it indirectly
     // because it allows us to elide copies.  Unfortunately, MSVC makes that
     // impossible for small types, which it will pass in a single register or
     // stack slot. Most objects with dtors are large-ish, so handle that early.
     // We can't call out all large objects as being indirect because there are
     // multiple x64 calling conventions and the C++ ABI code shouldn't dictate
     // how we pass large POD types.
+    //
+    // Note: This permits small classes with nontrivial destructors to be
+    // passed in registers, which is non-conforming.
     if (RD->hasNonTrivialDestructor() &&
         getContext().getTypeSize(RD->getTypeForDecl()) > 64)
       return RAA_Indirect;
 
-    // If this is true, the implicit copy constructor that Sema would have
-    // created would not be deleted. FIXME: We should provide a more direct way
-    // for CodeGen to ask whether the constructor was deleted.
-    if (!RD->hasUserDeclaredCopyConstructor() &&
-        !RD->hasUserDeclaredMoveConstructor() &&
-        !RD->needsOverloadResolutionForMoveConstructor() &&
-        !RD->hasUserDeclaredMoveAssignment() &&
-        !RD->needsOverloadResolutionForMoveAssignment())
-      return RAA_Default;
-
-    // Otherwise, Sema should have created an implicit copy constructor if
-    // needed.
-    assert(!RD->needsImplicitCopyConstructor());
-
-    // We have to make sure the trivial copy constructor isn't deleted.
-    for (const CXXConstructorDecl *CD : RD->ctors()) {
-      if (CD->isCopyConstructor()) {
-        assert(CD->isTrivial());
-        // We had at least one undeleted trivial copy ctor.  Return directly.
-        if (!CD->isDeleted())
-          return RAA_Default;
+    // If a class has at least one non-deleted, trivial copy constructor, it
+    // is passed according to the C ABI. Otherwise, it is passed indirectly.
+    //
+    // Note: This permits classes with non-trivial copy or move ctors to be
+    // passed in registers, so long as they *also* have a trivial copy ctor,
+    // which is non-conforming.
+    if (RD->needsImplicitCopyConstructor()) {
+      // If the copy ctor has not yet been declared, we can read its triviality
+      // off the AST.
+      if (!RD->defaultedCopyConstructorIsDeleted() &&
+          RD->hasTrivialCopyConstructor())
+        return RAA_Default;
+    } else {
+      // Otherwise, we need to find the copy constructor(s) and ask.
+      for (const CXXConstructorDecl *CD : RD->ctors()) {
+        if (CD->isCopyConstructor()) {
+          // We had at least one nondeleted trivial copy ctor.  Return directly.
+          if (!CD->isDeleted() && CD->isTrivial())
+            return RAA_Default;
+        }
       }
     }
 
-    // The trivial copy constructor was deleted.  Return indirectly.
+    // We have no trivial, non-deleted copy constructor.
     return RAA_Indirect;
   }
 
diff --git contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
index eb230aad4d35..ece3a407eae3 100644
--- contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
+++ contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
@@ -183,7 +183,11 @@ const TargetInfo &ABIInfo::getTarget() const {
   return CGT.getTarget();
 }
 
-bool ABIInfo:: isAndroid() const { return getTarget().getTriple().isAndroid(); }
+const CodeGenOptions &ABIInfo::getCodeGenOpts() const {
+  return CGT.getCodeGenOpts();
+}
+
+bool ABIInfo::isAndroid() const { return getTarget().getTriple().isAndroid(); }
 
 bool ABIInfo::isHomogeneousAggregateBaseType(QualType Ty) const {
   return false;
@@ -2095,9 +2099,14 @@ class X86_64ABIInfo : public SwiftABIInfo {
     return !getTarget().getTriple().isOSDarwin();
   }
 
-  /// GCC classifies <1 x long long> as SSE but compatibility with older clang
-  // compilers require us to classify it as INTEGER.
+  /// GCC classifies <1 x long long> as SSE but some platform ABIs choose to
+  /// classify it as INTEGER (for compatibility with older clang compilers).
   bool classifyIntegerMMXAsSSE() const {
+    // Clang <= 3.8 did not do this.
+    if (getCodeGenOpts().getClangABICompat() <=
+        CodeGenOptions::ClangABI::Ver3_8)
+      return false;
+
     const llvm::Triple &Triple = getTarget().getTriple();
     if (Triple.isOSDarwin() || Triple.getOS() == llvm::Triple::PS4)
       return false;
diff --git contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
index baf7a93d2d92..6a6b90f86825 100644
--- contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
+++ contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
@@ -2855,6 +2855,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
 
   addPGOAndCoverageFlags(C, D, Output, Args, CmdArgs);
 
+  if (auto *ABICompatArg = Args.getLastArg(options::OPT_fclang_abi_compat_EQ))
+    ABICompatArg->render(Args, CmdArgs);
+
   // Add runtime flag for PS4 when PGO or Coverage are enabled.
   if (getToolChain().getTriple().isPS4CPU())
     PS4cpu::addProfileRTArgs(getToolChain(), Args, CmdArgs);
diff --git contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.cpp contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.cpp
index 6b7f0c71dfb7..32103a6120d4 100644
--- contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.cpp
+++ contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -1837,7 +1837,12 @@ Darwin::TranslateArgs(const DerivedArgList &Args, StringRef BoundArch,
 }
 
 bool MachO::IsUnwindTablesDefault(const ArgList &Args) const {
-  return !UseSjLjExceptions(Args);
+  // Unwind tables are not emitted if -fno-exceptions is supplied (except when
+  // targeting x86_64).
+  return getArch() == llvm::Triple::x86_64 ||
+         (!UseSjLjExceptions(Args) &&
+          Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions,
+                       true));
 }
 
 bool MachO::UseDwarfDebugFlags() const {
diff --git contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.cpp contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.cpp
index b871c856d2a0..7978a6941cb8 100644
--- contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.cpp
+++ contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.cpp
@@ -76,7 +76,7 @@ static bool getSystemRegistryString(const char *keyPath, const char *valueName,
 
 // Check various environment variables to try and find a toolchain.
 static bool findVCToolChainViaEnvironment(std::string &Path,
-                                          bool &IsVS2017OrNewer) {
+                                          MSVCToolChain::ToolsetLayout &VSLayout) {
   // These variables are typically set by vcvarsall.bat
   // when launching a developer command prompt.
   if (llvm::Optional<std::string> VCToolsInstallDir =
@@ -84,7 +84,7 @@ static bool findVCToolChainViaEnvironment(std::string &Path,
     // This is only set by newer Visual Studios, and it leads straight to
     // the toolchain directory.
     Path = std::move(*VCToolsInstallDir);
-    IsVS2017OrNewer = true;
+    VSLayout = MSVCToolChain::ToolsetLayout::VS2017OrNewer;
     return true;
   }
   if (llvm::Optional<std::string> VCInstallDir =
@@ -94,7 +94,7 @@ static bool findVCToolChainViaEnvironment(std::string &Path,
     // so this check has to appear second.
     // In older Visual Studios, the VC directory is the toolchain.
     Path = std::move(*VCInstallDir);
-    IsVS2017OrNewer = false;
+    VSLayout = MSVCToolChain::ToolsetLayout::OlderVS;
     return true;
   }
 
@@ -134,9 +134,16 @@ static bool findVCToolChainViaEnvironment(std::string &Path,
       }
       if (IsBin) {
         llvm::StringRef ParentPath = llvm::sys::path::parent_path(TestPath);
-        if (llvm::sys::path::filename(ParentPath) == "VC") {
+        llvm::StringRef ParentFilename = llvm::sys::path::filename(ParentPath);
+        if (ParentFilename == "VC") {
           Path = ParentPath;
-          IsVS2017OrNewer = false;
+          VSLayout = MSVCToolChain::ToolsetLayout::OlderVS;
+          return true;
+        }
+        if (ParentFilename == "x86ret" || ParentFilename == "x86chk"
+          || ParentFilename == "amd64ret" || ParentFilename == "amd64chk") {
+          Path = ParentPath;
+          VSLayout = MSVCToolChain::ToolsetLayout::DevDivInternal;
           return true;
         }
 
@@ -165,7 +172,7 @@ static bool findVCToolChainViaEnvironment(std::string &Path,
           ToolChainPath = llvm::sys::path::parent_path(ToolChainPath);
 
         Path = ToolChainPath;
-        IsVS2017OrNewer = true;
+        VSLayout = MSVCToolChain::ToolsetLayout::VS2017OrNewer;
         return true;
       }
 
@@ -181,7 +188,7 @@ static bool findVCToolChainViaEnvironment(std::string &Path,
 // This is the preferred way to discover new Visual Studios, as they're no
 // longer listed in the registry.
 static bool findVCToolChainViaSetupConfig(std::string &Path,
-                                          bool &IsVS2017OrNewer) {
+                                          MSVCToolChain::ToolsetLayout &VSLayout) {
 #if !defined(USE_MSVC_SETUP_API)
   return false;
 #else
@@ -263,7 +270,7 @@ static bool findVCToolChainViaSetupConfig(std::string &Path,
     return false;
 
   Path = ToolchainPath.str();
-  IsVS2017OrNewer = true;
+  VSLayout = MSVCToolChain::ToolsetLayout::VS2017OrNewer;
   return true;
 #endif
 }
@@ -272,7 +279,7 @@ static bool findVCToolChainViaSetupConfig(std::string &Path,
 // a toolchain path. VS2017 and newer don't get added to the registry.
 // So if we find something here, we know that it's an older version.
 static bool findVCToolChainViaRegistry(std::string &Path,
-                                       bool &IsVS2017OrNewer) {
+                                       MSVCToolChain::ToolsetLayout &VSLayout) {
   std::string VSInstallPath;
   if (getSystemRegistryString(R"(SOFTWARE\Microsoft\VisualStudio\$VERSION)",
                               "InstallDir", VSInstallPath, nullptr) ||
@@ -284,7 +291,7 @@ static bool findVCToolChainViaRegistry(std::string &Path,
       llvm::sys::path::append(VCPath, "VC");
 
       Path = VCPath.str();
-      IsVS2017OrNewer = false;
+      VSLayout = MSVCToolChain::ToolsetLayout::OlderVS;
       return true;
     }
   }
@@ -475,6 +482,7 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
     // native target bin directory.
     // e.g. when compiling for x86 on an x64 host, PATH should start with:
     // /bin/HostX64/x86;/bin/HostX64/x64
+    // This doesn't attempt to handle ToolsetLayout::DevDivInternal.
     if (TC.getIsVS2017OrNewer() &&
         llvm::Triple(llvm::sys::getProcessTriple()).getArch() != TC.getArch()) {
       auto HostArch = llvm::Triple(llvm::sys::getProcessTriple()).getArch();
@@ -677,9 +685,9 @@ MSVCToolChain::MSVCToolChain(const Driver &D, const llvm::Triple &Triple,
   // what they want to use.
   // Failing that, just try to find the newest Visual Studio version we can
   // and use its default VC toolchain.
-  findVCToolChainViaEnvironment(VCToolChainPath, IsVS2017OrNewer) ||
-      findVCToolChainViaSetupConfig(VCToolChainPath, IsVS2017OrNewer) ||
-      findVCToolChainViaRegistry(VCToolChainPath, IsVS2017OrNewer);
+  findVCToolChainViaEnvironment(VCToolChainPath, VSLayout) ||
+      findVCToolChainViaSetupConfig(VCToolChainPath, VSLayout) ||
+      findVCToolChainViaRegistry(VCToolChainPath, VSLayout);
 }
 
 Tool *MSVCToolChain::buildLinker() const {
@@ -766,6 +774,21 @@ static const char *llvmArchToLegacyVCArch(llvm::Triple::ArchType Arch) {
   }
 }
 
+// Similar to the above function, but for DevDiv internal builds.
+static const char *llvmArchToDevDivInternalArch(llvm::Triple::ArchType Arch) {
+  using ArchType = llvm::Triple::ArchType;
+  switch (Arch) {
+  case ArchType::x86:
+    return "i386";
+  case ArchType::x86_64:
+    return "amd64";
+  case ArchType::arm:
+    return "arm";
+  default:
+    return "";
+  }
+}
+
 // Get the path to a specific subdirectory in the current toolchain for
 // a given target architecture.
 // VS2017 changed the VC toolchain layout, so this should be used instead
@@ -773,26 +796,40 @@ static const char *llvmArchToLegacyVCArch(llvm::Triple::ArchType Arch) {
 std::string
 MSVCToolChain::getSubDirectoryPath(SubDirectoryType Type,
                                    llvm::Triple::ArchType TargetArch) const {
+  const char *SubdirName;
+  const char *IncludeName;
+  switch (VSLayout) {
+  case ToolsetLayout::OlderVS:
+    SubdirName = llvmArchToLegacyVCArch(TargetArch);
+    IncludeName = "include";
+    break;
+  case ToolsetLayout::VS2017OrNewer:
+    SubdirName = llvmArchToWindowsSDKArch(TargetArch);
+    IncludeName = "include";
+    break;
+  case ToolsetLayout::DevDivInternal:
+    SubdirName = llvmArchToDevDivInternalArch(TargetArch);
+    IncludeName = "inc";
+    break;
+  }
+
   llvm::SmallString<256> Path(VCToolChainPath);
   switch (Type) {
   case SubDirectoryType::Bin:
-    if (IsVS2017OrNewer) {
-      bool HostIsX64 =
+    if (VSLayout == ToolsetLayout::VS2017OrNewer) {
+      const bool HostIsX64 =
           llvm::Triple(llvm::sys::getProcessTriple()).isArch64Bit();
-      llvm::sys::path::append(Path, "bin", (HostIsX64 ? "HostX64" : "HostX86"),
-                              llvmArchToWindowsSDKArch(TargetArch));
-
-    } else {
-      llvm::sys::path::append(Path, "bin", llvmArchToLegacyVCArch(TargetArch));
+      const char *const HostName = HostIsX64 ? "HostX64" : "HostX86";
+      llvm::sys::path::append(Path, "bin", HostName, SubdirName);
+    } else { // OlderVS or DevDivInternal
+      llvm::sys::path::append(Path, "bin", SubdirName);
     }
     break;
   case SubDirectoryType::Include:
-    llvm::sys::path::append(Path, "include");
+    llvm::sys::path::append(Path, IncludeName);
     break;
   case SubDirectoryType::Lib:
-    llvm::sys::path::append(
-        Path, "lib", IsVS2017OrNewer ? llvmArchToWindowsSDKArch(TargetArch)
-                                     : llvmArchToLegacyVCArch(TargetArch));
+    llvm::sys::path::append(Path, "lib", SubdirName);
     break;
   }
   return Path.str();
diff --git contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.h contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.h
index d153691a5c90..854f88a36fd2 100644
--- contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.h
+++ contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.h
@@ -92,7 +92,12 @@ public:
     return getSubDirectoryPath(Type, getArch());
   }
 
-  bool getIsVS2017OrNewer() const { return IsVS2017OrNewer; }
+  enum class ToolsetLayout {
+    OlderVS,
+    VS2017OrNewer,
+    DevDivInternal,
+  };
+  bool getIsVS2017OrNewer() const { return VSLayout == ToolsetLayout::VS2017OrNewer; }
 
   void
   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
@@ -130,7 +135,7 @@ protected:
   Tool *buildAssembler() const override;
 private:
   std::string VCToolChainPath;
-  bool IsVS2017OrNewer = false;
+  ToolsetLayout VSLayout = ToolsetLayout::OlderVS;
   CudaInstallationDetector CudaInstallation;
 };
 
diff --git contrib/llvm/tools/clang/lib/Format/WhitespaceManager.cpp contrib/llvm/tools/clang/lib/Format/WhitespaceManager.cpp
index 4b4fd13145fb..377ec3a681b6 100644
--- contrib/llvm/tools/clang/lib/Format/WhitespaceManager.cpp
+++ contrib/llvm/tools/clang/lib/Format/WhitespaceManager.cpp
@@ -246,12 +246,12 @@ AlignTokenSequence(unsigned Start, unsigned End, unsigned Column, F &&Matches,
 
   for (unsigned i = Start; i != End; ++i) {
     if (ScopeStack.size() != 0 &&
-        Changes[i].nestingAndIndentLevel() <
-            Changes[ScopeStack.back()].nestingAndIndentLevel())
+        Changes[i].indentAndNestingLevel() <
+            Changes[ScopeStack.back()].indentAndNestingLevel())
       ScopeStack.pop_back();
 
-    if (i != Start && Changes[i].nestingAndIndentLevel() >
-                          Changes[i - 1].nestingAndIndentLevel())
+    if (i != Start && Changes[i].indentAndNestingLevel() >
+                          Changes[i - 1].indentAndNestingLevel())
       ScopeStack.push_back(i);
 
     bool InsideNestedScope = ScopeStack.size() != 0;
@@ -327,8 +327,8 @@ static unsigned AlignTokens(const FormatStyle &Style, F &&Matches,
 
   // Measure the scope level (i.e. depth of (), [], {}) of the first token, and
   // abort when we hit any token in a higher scope than the starting one.
-  auto NestingAndIndentLevel = StartAt < Changes.size()
-                                   ? Changes[StartAt].nestingAndIndentLevel()
+  auto IndentAndNestingLevel = StartAt < Changes.size()
+                                   ? Changes[StartAt].indentAndNestingLevel()
                                    : std::pair<unsigned, unsigned>(0, 0);
 
   // Keep track of the number of commas before the matching tokens, we will only
@@ -359,7 +359,7 @@ static unsigned AlignTokens(const FormatStyle &Style, F &&Matches,
 
   unsigned i = StartAt;
   for (unsigned e = Changes.size(); i != e; ++i) {
-    if (Changes[i].nestingAndIndentLevel() < NestingAndIndentLevel)
+    if (Changes[i].indentAndNestingLevel() < IndentAndNestingLevel)
       break;
 
     if (Changes[i].NewlinesBefore != 0) {
@@ -375,7 +375,7 @@ static unsigned AlignTokens(const FormatStyle &Style, F &&Matches,
 
     if (Changes[i].Tok->is(tok::comma)) {
       ++CommasBeforeMatch;
-    } else if (Changes[i].nestingAndIndentLevel() > NestingAndIndentLevel) {
+    } else if (Changes[i].indentAndNestingLevel() > IndentAndNestingLevel) {
       // Call AlignTokens recursively, skipping over this scope block.
       unsigned StoppedAt = AlignTokens(Style, Matches, Changes, i);
       i = StoppedAt - 1;
@@ -472,9 +472,14 @@ void WhitespaceManager::alignTrailingComments() {
       continue;
 
     unsigned ChangeMinColumn = Changes[i].StartOfTokenColumn;
-    unsigned ChangeMaxColumn = Style.ColumnLimit >= Changes[i].TokenLength
-                                   ? Style.ColumnLimit - Changes[i].TokenLength
-                                   : ChangeMinColumn;
+    unsigned ChangeMaxColumn;
+
+    if (Style.ColumnLimit == 0)
+      ChangeMaxColumn = UINT_MAX;
+    else if (Style.ColumnLimit >= Changes[i].TokenLength)
+      ChangeMaxColumn = Style.ColumnLimit - Changes[i].TokenLength;
+    else
+      ChangeMaxColumn = ChangeMinColumn;
 
     // If we don't create a replacement for this change, we have to consider
     // it to be immovable.
diff --git contrib/llvm/tools/clang/lib/Format/WhitespaceManager.h contrib/llvm/tools/clang/lib/Format/WhitespaceManager.h
index 50df59d09641..4e78ab43abaf 100644
--- contrib/llvm/tools/clang/lib/Format/WhitespaceManager.h
+++ contrib/llvm/tools/clang/lib/Format/WhitespaceManager.h
@@ -154,12 +154,11 @@ public:
     const Change *StartOfBlockComment;
     int IndentationOffset;
 
-    // A combination of nesting level and indent level, which are used in
+    // A combination of indent level and nesting level, which are used in
     // tandem to compute lexical scope, for the purposes of deciding
     // when to stop consecutive alignment runs.
-    std::pair<unsigned, unsigned>
-    nestingAndIndentLevel() const {
-      return std::make_pair(Tok->NestingLevel, Tok->IndentLevel);
+    std::pair<unsigned, unsigned> indentAndNestingLevel() const {
+      return std::make_pair(Tok->IndentLevel, Tok->NestingLevel);
     }
   };
 
diff --git contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
index b2c14554a4b5..0d0869c815d3 100644
--- contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
+++ contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
@@ -573,6 +573,33 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
   if (!Opts.ProfileInstrumentUsePath.empty())
     setPGOUseInstrumentor(Opts, Opts.ProfileInstrumentUsePath);
 
+  if (Arg *A = Args.getLastArg(OPT_fclang_abi_compat_EQ)) {
+    Opts.setClangABICompat(CodeGenOptions::ClangABI::Latest);
+
+    StringRef Ver = A->getValue();
+    std::pair<StringRef, StringRef> VerParts = Ver.split('.');
+    unsigned Major, Minor = 0;
+
+    // Check the version number is valid: either 3.x (0 <= x <= 9) or
+    // y or y.0 (4 <= y <= current version).
+    if (!VerParts.first.startswith("0") &&
+        !VerParts.first.getAsInteger(10, Major) &&
+        3 <= Major && Major <= CLANG_VERSION_MAJOR &&
+        (Major == 3 ? VerParts.second.size() == 1 &&
+                      !VerParts.second.getAsInteger(10, Minor)
+                    : VerParts.first.size() == Ver.size() ||
+                      VerParts.second == "0")) {
+      // Got a valid version number.
+      if (Major == 3 && Minor <= 8)
+        Opts.setClangABICompat(CodeGenOptions::ClangABI::Ver3_8);
+      else if (Major <= 4)
+        Opts.setClangABICompat(CodeGenOptions::ClangABI::Ver4);
+    } else if (Ver != "latest") {
+      Diags.Report(diag::err_drv_invalid_value)
+          << A->getAsString(Args) << A->getValue();
+    }
+  }
+
   Opts.CoverageMapping =
       Args.hasFlag(OPT_fcoverage_mapping, OPT_fno_coverage_mapping, false);
   Opts.DumpCoverageMapping = Args.hasArg(OPT_dump_coverage_mapping);
diff --git contrib/llvm/tools/clang/lib/Headers/unwind.h contrib/llvm/tools/clang/lib/Headers/unwind.h
index e94b00b57c26..4f74a3478740 100644
--- contrib/llvm/tools/clang/lib/Headers/unwind.h
+++ contrib/llvm/tools/clang/lib/Headers/unwind.h
@@ -76,13 +76,7 @@ typedef intptr_t _sleb128_t;
 typedef uintptr_t _uleb128_t;
 
 struct _Unwind_Context;
-#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH___))
-struct _Unwind_Control_Block;
-typedef struct _Unwind_Control_Block _Unwind_Exception; /* Alias */
-#else
 struct _Unwind_Exception;
-typedef struct _Unwind_Exception _Unwind_Exception;
-#endif
 typedef enum {
   _URC_NO_REASON = 0,
 #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
@@ -115,42 +109,8 @@ typedef enum {
 } _Unwind_Action;
 
 typedef void (*_Unwind_Exception_Cleanup_Fn)(_Unwind_Reason_Code,
-                                             _Unwind_Exception *);
-
-#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH___))
-typedef struct _Unwind_Control_Block _Unwind_Control_Block;
-typedef uint32_t _Unwind_EHT_Header;
-
-struct _Unwind_Control_Block {
-  uint64_t exception_class;
-  void (*exception_cleanup)(_Unwind_Reason_Code, _Unwind_Control_Block *);
-  /* unwinder cache (private fields for the unwinder's use) */
-  struct {
-    uint32_t reserved1; /* forced unwind stop function, 0 if not forced */
-    uint32_t reserved2; /* personality routine */
-    uint32_t reserved3; /* callsite */
-    uint32_t reserved4; /* forced unwind stop argument */
-    uint32_t reserved5;
-  } unwinder_cache;
-  /* propagation barrier cache (valid after phase 1) */
-  struct {
-    uint32_t sp;
-    uint32_t bitpattern[5];
-  } barrier_cache;
-  /* cleanup cache (preserved over cleanup) */
-  struct {
-    uint32_t bitpattern[4];
-  } cleanup_cache;
-  /* personality cache (for personality's benefit) */
-  struct {
-    uint32_t fnstart;         /* function start address */
-    _Unwind_EHT_Header *ehtp; /* pointer to EHT entry header word */
-    uint32_t additional;      /* additional data */
-    uint32_t reserved1;
-  } pr_cache;
-  long long int : 0; /* force alignment of next item to 8-byte boundary */
-};
-#else
+                                             struct _Unwind_Exception *);
+
 struct _Unwind_Exception {
   _Unwind_Exception_Class exception_class;
   _Unwind_Exception_Cleanup_Fn exception_cleanup;
@@ -160,24 +120,23 @@ struct _Unwind_Exception {
    * aligned".  GCC has interpreted this to mean "use the maximum useful
    * alignment for the target"; so do we. */
 } __attribute__((__aligned__));
-#endif
 
 typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)(int, _Unwind_Action,
                                                _Unwind_Exception_Class,
-                                               _Unwind_Exception *,
+                                               struct _Unwind_Exception *,
                                                struct _Unwind_Context *,
                                                void *);
 
-typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)(int, _Unwind_Action,
-                                                      _Unwind_Exception_Class,
-                                                      _Unwind_Exception *,
-                                                      struct _Unwind_Context *);
+typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)(
+    int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *,
+    struct _Unwind_Context *);
 typedef _Unwind_Personality_Fn __personality_routine;
 
 typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context *,
                                                 void *);
 
-#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH___))
+#if defined(__arm__) && !defined(__APPLE__)
+
 typedef enum {
   _UVRSC_CORE = 0,        /* integer register */
   _UVRSC_VFP = 1,         /* vfp */
@@ -199,12 +158,14 @@ typedef enum {
   _UVRSR_FAILED = 2
 } _Unwind_VRS_Result;
 
+#if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__ARM_DWARF_EH__)
 typedef uint32_t _Unwind_State;
 #define _US_VIRTUAL_UNWIND_FRAME  ((_Unwind_State)0)
 #define _US_UNWIND_FRAME_STARTING ((_Unwind_State)1)
 #define _US_UNWIND_FRAME_RESUME   ((_Unwind_State)2)
 #define _US_ACTION_MASK           ((_Unwind_State)3)
 #define _US_FORCE_UNWIND          ((_Unwind_State)8)
+#endif
 
 _Unwind_VRS_Result _Unwind_VRS_Get(struct _Unwind_Context *__context,
   _Unwind_VRS_RegClass __regclass,
@@ -263,12 +224,13 @@ _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *);
 
 /* DWARF EH functions; currently not available on Darwin/ARM */
 #if !defined(__APPLE__) || !defined(__arm__)
-_Unwind_Reason_Code _Unwind_RaiseException(_Unwind_Exception *);
-_Unwind_Reason_Code _Unwind_ForcedUnwind(_Unwind_Exception *, _Unwind_Stop_Fn,
-                                         void *);
-void _Unwind_DeleteException(_Unwind_Exception *);
-void _Unwind_Resume(_Unwind_Exception *);
-_Unwind_Reason_Code _Unwind_Resume_or_Rethrow(_Unwind_Exception *);
+
+_Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception *);
+_Unwind_Reason_Code _Unwind_ForcedUnwind(struct _Unwind_Exception *,
+                                         _Unwind_Stop_Fn, void *);
+void _Unwind_DeleteException(struct _Unwind_Exception *);
+void _Unwind_Resume(struct _Unwind_Exception *);
+_Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct _Unwind_Exception *);
 
 #endif
 
@@ -279,11 +241,11 @@ typedef struct SjLj_Function_Context *_Unwind_FunctionContext_t;
 
 void _Unwind_SjLj_Register(_Unwind_FunctionContext_t);
 void _Unwind_SjLj_Unregister(_Unwind_FunctionContext_t);
-_Unwind_Reason_Code _Unwind_SjLj_RaiseException(_Unwind_Exception *);
-_Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind(_Unwind_Exception *,
+_Unwind_Reason_Code _Unwind_SjLj_RaiseException(struct _Unwind_Exception *);
+_Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind(struct _Unwind_Exception *,
                                               _Unwind_Stop_Fn, void *);
-void _Unwind_SjLj_Resume(_Unwind_Exception *);
-_Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow(_Unwind_Exception *);
+void _Unwind_SjLj_Resume(struct _Unwind_Exception *);
+_Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow(struct _Unwind_Exception *);
 
 void *_Unwind_FindEnclosingFunction(void *);
 
diff --git contrib/llvm/tools/clang/lib/Lex/PPLexerChange.cpp contrib/llvm/tools/clang/lib/Lex/PPLexerChange.cpp
index 5a589d6a17b3..36d7028da688 100644
--- contrib/llvm/tools/clang/lib/Lex/PPLexerChange.cpp
+++ contrib/llvm/tools/clang/lib/Lex/PPLexerChange.cpp
@@ -458,10 +458,16 @@ bool Preprocessor::HandleEndOfFile(Token &Result, bool isEndOfMacro) {
       SourceMgr.setNumCreatedFIDsForFileID(CurPPLexer->getFileID(), NumFIDs);
     }
 
+    bool ExitedFromPredefinesFile = false;
     FileID ExitedFID;
-    if (Callbacks && !isEndOfMacro && CurPPLexer)
+    if (!isEndOfMacro && CurPPLexer) {
       ExitedFID = CurPPLexer->getFileID();
 
+      assert(PredefinesFileID.isValid() &&
+             "HandleEndOfFile is called before PredefinesFileId is set");
+      ExitedFromPredefinesFile = (PredefinesFileID == ExitedFID);
+    }
+
     if (LeavingSubmodule) {
       // We're done with this submodule.
       Module *M = LeaveSubmodule(/*ForPragma*/false);
@@ -489,6 +495,11 @@ bool Preprocessor::HandleEndOfFile(Token &Result, bool isEndOfMacro) {
                              PPCallbacks::ExitFile, FileType, ExitedFID);
     }
 
+    // Restore conditional stack from the preamble right after exiting from the
+    // predefines file.
+    if (ExitedFromPredefinesFile)
+      replayPreambleConditionalStack();
+
     // Client should lex another token unless we generated an EOM.
     return LeavingSubmodule;
   }
diff --git contrib/llvm/tools/clang/lib/Lex/Preprocessor.cpp contrib/llvm/tools/clang/lib/Lex/Preprocessor.cpp
index d1dc8e1c0010..7979be773aa1 100644
--- contrib/llvm/tools/clang/lib/Lex/Preprocessor.cpp
+++ contrib/llvm/tools/clang/lib/Lex/Preprocessor.cpp
@@ -540,6 +540,8 @@ void Preprocessor::EnterMainSourceFile() {
 void Preprocessor::replayPreambleConditionalStack() {
   // Restore the conditional stack from the preamble, if there is one.
   if (PreambleConditionalStack.isReplaying()) {
+    assert(CurPPLexer &&
+           "CurPPLexer is null when calling replayPreambleConditionalStack.");
     CurPPLexer->setConditionalLevels(PreambleConditionalStack.getStack());
     PreambleConditionalStack.doneReplaying();
   }
diff --git contrib/llvm/tools/clang/lib/Parse/Parser.cpp contrib/llvm/tools/clang/lib/Parse/Parser.cpp
index 4aa9a5971929..1ed7ef966358 100644
--- contrib/llvm/tools/clang/lib/Parse/Parser.cpp
+++ contrib/llvm/tools/clang/lib/Parse/Parser.cpp
@@ -516,8 +516,6 @@ void Parser::Initialize() {
 
   // Prime the lexer look-ahead.
   ConsumeToken();
-
-  PP.replayPreambleConditionalStack();
 }
 
 void Parser::LateTemplateParserCleanupCallback(void *P) {
diff --git contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
index e9070881afe4..c05e5f020708 100644
--- contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
+++ contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
@@ -5726,6 +5726,53 @@ static void DefineImplicitSpecialMember(Sema &S, CXXMethodDecl *MD,
   }
 }
 
+/// Determine whether a type is permitted to be passed or returned in
+/// registers, per C++ [class.temporary]p3.
+static bool computeCanPassInRegisters(Sema &S, CXXRecordDecl *D) {
+  if (D->isDependentType() || D->isInvalidDecl())
+    return false;
+
+  // Per C++ [class.temporary]p3, the relevant condition is:
+  //   each copy constructor, move constructor, and destructor of X is
+  //   either trivial or deleted, and X has at least one non-deleted copy
+  //   or move constructor
+  bool HasNonDeletedCopyOrMove = false;
+
+  if (D->needsImplicitCopyConstructor() &&
+      !D->defaultedCopyConstructorIsDeleted()) {
+    if (!D->hasTrivialCopyConstructor())
+      return false;
+    HasNonDeletedCopyOrMove = true; 
+  }
+
+  if (S.getLangOpts().CPlusPlus11 && D->needsImplicitMoveConstructor() &&
+      !D->defaultedMoveConstructorIsDeleted()) {
+    if (!D->hasTrivialMoveConstructor())
+      return false;
+    HasNonDeletedCopyOrMove = true;
+  }
+
+  if (D->needsImplicitDestructor() && !D->defaultedDestructorIsDeleted() &&
+      !D->hasTrivialDestructor())
+    return false;
+
+  for (const CXXMethodDecl *MD : D->methods()) {
+    if (MD->isDeleted())
+      continue;
+
+    auto *CD = dyn_cast<CXXConstructorDecl>(MD);
+    if (CD && CD->isCopyOrMoveConstructor())
+      HasNonDeletedCopyOrMove = true;
+    else if (!isa<CXXDestructorDecl>(MD))
+      continue;
+
+    if (!MD->isTrivial())
+      return false;
+  }
+
+  return HasNonDeletedCopyOrMove;
+}
+
 /// \brief Perform semantic checks on a class definition that has been
 /// completing, introducing implicitly-declared members, checking for
 /// abstract types, etc.
@@ -5870,6 +5917,8 @@ void Sema::CheckCompletedCXXClass(CXXRecordDecl *Record) {
   }
 
   checkClassLevelDLLAttribute(Record);
+
+  Record->setCanPassInRegisters(computeCanPassInRegisters(*this, Record));
 }
 
 /// Look up the special member function that would be called by a special
@@ -7496,8 +7545,7 @@ void Sema::ActOnFinishCXXMemberSpecification(Scope* S, SourceLocation RLoc,
               reinterpret_cast<Decl**>(FieldCollector->getCurFields()),
               FieldCollector->getCurNumFields()), LBrac, RBrac, AttrList);
 
-  CheckCompletedCXXClass(
-                        dyn_cast_or_null<CXXRecordDecl>(TagDecl));
+  CheckCompletedCXXClass(dyn_cast_or_null<CXXRecordDecl>(TagDecl));
 }
 
 /// AddImplicitlyDeclaredMembersToClass - Adds any implicitly-declared
@@ -11929,8 +11977,10 @@ CXXConstructorDecl *Sema::DeclareImplicitCopyConstructor(
   Scope *S = getScopeForContext(ClassDecl);
   CheckImplicitSpecialMemberDeclaration(S, CopyConstructor);
 
-  if (ShouldDeleteSpecialMember(CopyConstructor, CXXCopyConstructor))
+  if (ShouldDeleteSpecialMember(CopyConstructor, CXXCopyConstructor)) {
+    ClassDecl->setImplicitCopyConstructorIsDeleted();
     SetDeclDeleted(CopyConstructor, ClassLoc);
+  }
 
   if (S)
     PushOnScopeChains(CopyConstructor, S, false);
diff --git contrib/llvm/tools/clang/lib/Sema/SemaObjCProperty.cpp contrib/llvm/tools/clang/lib/Sema/SemaObjCProperty.cpp
index e1e85dfd5e55..bfb0071a54f9 100644
--- contrib/llvm/tools/clang/lib/Sema/SemaObjCProperty.cpp
+++ contrib/llvm/tools/clang/lib/Sema/SemaObjCProperty.cpp
@@ -872,7 +872,7 @@ SelectPropertyForSynthesisFromProtocols(Sema &S, SourceLocation AtLoc,
   }
 
   QualType RHSType = S.Context.getCanonicalType(Property->getType());
-  unsigned OriginalAttributes = Property->getPropertyAttributes();
+  unsigned OriginalAttributes = Property->getPropertyAttributesAsWritten();
   enum MismatchKind {
     IncompatibleType = 0,
     HasNoExpectedAttribute,
@@ -890,7 +890,7 @@ SelectPropertyForSynthesisFromProtocols(Sema &S, SourceLocation AtLoc,
   SmallVector<MismatchingProperty, 4> Mismatches;
   for (ObjCPropertyDecl *Prop : Properties) {
     // Verify the property attributes.
-    unsigned Attr = Prop->getPropertyAttributes();
+    unsigned Attr = Prop->getPropertyAttributesAsWritten();
     if (Attr != OriginalAttributes) {
       auto Diag = [&](bool OriginalHasAttribute, StringRef AttributeName) {
         MismatchKind Kind = OriginalHasAttribute ? HasNoExpectedAttribute
diff --git contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp
index abed2586561a..085341571ced 100644
--- contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp
+++ contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp
@@ -1559,9 +1559,11 @@ void ASTDeclReader::ReadCXXDefinitionData(
   Data.HasUninitializedFields = Record.readInt();
   Data.HasInheritedConstructor = Record.readInt();
   Data.HasInheritedAssignment = Record.readInt();
+  Data.NeedOverloadResolutionForCopyConstructor = Record.readInt();
   Data.NeedOverloadResolutionForMoveConstructor = Record.readInt();
   Data.NeedOverloadResolutionForMoveAssignment = Record.readInt();
   Data.NeedOverloadResolutionForDestructor = Record.readInt();
+  Data.DefaultedCopyConstructorIsDeleted = Record.readInt();
   Data.DefaultedMoveConstructorIsDeleted = Record.readInt();
   Data.DefaultedMoveAssignmentIsDeleted = Record.readInt();
   Data.DefaultedDestructorIsDeleted = Record.readInt();
@@ -1570,6 +1572,7 @@ void ASTDeclReader::ReadCXXDefinitionData(
   Data.HasIrrelevantDestructor = Record.readInt();
   Data.HasConstexprNonCopyMoveConstructor = Record.readInt();
   Data.HasDefaultedDefaultConstructor = Record.readInt();
+  Data.CanPassInRegisters = Record.readInt();
   Data.DefaultedDefaultConstructorIsConstexpr = Record.readInt();
   Data.HasConstexprDefaultConstructor = Record.readInt();
   Data.HasNonLiteralTypeFieldsOrBases = Record.readInt();
@@ -1697,9 +1700,11 @@ void ASTDeclReader::MergeDefinitionData(
   MATCH_FIELD(HasUninitializedFields)
   MATCH_FIELD(HasInheritedConstructor)
   MATCH_FIELD(HasInheritedAssignment)
+  MATCH_FIELD(NeedOverloadResolutionForCopyConstructor)
   MATCH_FIELD(NeedOverloadResolutionForMoveConstructor)
   MATCH_FIELD(NeedOverloadResolutionForMoveAssignment)
   MATCH_FIELD(NeedOverloadResolutionForDestructor)
+  MATCH_FIELD(DefaultedCopyConstructorIsDeleted)
   MATCH_FIELD(DefaultedMoveConstructorIsDeleted)
   MATCH_FIELD(DefaultedMoveAssignmentIsDeleted)
   MATCH_FIELD(DefaultedDestructorIsDeleted)
@@ -1708,6 +1713,7 @@ void ASTDeclReader::MergeDefinitionData(
   MATCH_FIELD(HasIrrelevantDestructor)
   OR_FIELD(HasConstexprNonCopyMoveConstructor)
   OR_FIELD(HasDefaultedDefaultConstructor)
+  MATCH_FIELD(CanPassInRegisters)
   MATCH_FIELD(DefaultedDefaultConstructorIsConstexpr)
   OR_FIELD(HasConstexprDefaultConstructor)
   MATCH_FIELD(HasNonLiteralTypeFieldsOrBases)
diff --git contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
index a875e627bdfb..128e53b91b1d 100644
--- contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
+++ contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
@@ -5874,9 +5874,11 @@ void ASTRecordWriter::AddCXXDefinitionData(const CXXRecordDecl *D) {
   Record->push_back(Data.HasUninitializedFields);
   Record->push_back(Data.HasInheritedConstructor);
   Record->push_back(Data.HasInheritedAssignment);
+  Record->push_back(Data.NeedOverloadResolutionForCopyConstructor);
   Record->push_back(Data.NeedOverloadResolutionForMoveConstructor);
   Record->push_back(Data.NeedOverloadResolutionForMoveAssignment);
   Record->push_back(Data.NeedOverloadResolutionForDestructor);
+  Record->push_back(Data.DefaultedCopyConstructorIsDeleted);
   Record->push_back(Data.DefaultedMoveConstructorIsDeleted);
   Record->push_back(Data.DefaultedMoveAssignmentIsDeleted);
   Record->push_back(Data.DefaultedDestructorIsDeleted);
@@ -5885,6 +5887,7 @@ void ASTRecordWriter::AddCXXDefinitionData(const CXXRecordDecl *D) {
   Record->push_back(Data.HasIrrelevantDestructor);
   Record->push_back(Data.HasConstexprNonCopyMoveConstructor);
   Record->push_back(Data.HasDefaultedDefaultConstructor);
+  Record->push_back(Data.CanPassInRegisters);
   Record->push_back(Data.DefaultedDefaultConstructorIsConstexpr);
   Record->push_back(Data.HasConstexprDefaultConstructor);
   Record->push_back(Data.HasNonLiteralTypeFieldsOrBases);
diff --git contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
index 28f78fa3ff5e..11902f66df91 100644
--- contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
+++ contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
@@ -409,6 +409,19 @@ public: // Part of public interface to class.
 
   // BindDefault is only used to initialize a region with a default value.
   StoreRef BindDefault(Store store, const MemRegion *R, SVal V) override {
+    // FIXME: The offsets of empty bases can be tricky because of
+    // of the so called "empty base class optimization".
+    // If a base class has been optimized out
+    // we should not try to create a binding, otherwise we should.
+    // Unfortunately, at the moment ASTRecordLayout doesn't expose
+    // the actual sizes of the empty bases
+    // and trying to infer them from offsets/alignments
+    // seems to be error-prone and non-trivial because of the trailing padding.
+    // As a temporary mitigation we don't create bindings for empty bases.
+    if (R->getKind() == MemRegion::CXXBaseObjectRegionKind &&
+        cast<CXXBaseObjectRegion>(R)->getDecl()->isEmpty())
+      return StoreRef(store, *this);
+
     RegionBindingsRef B = getRegionBindings(store);
     assert(!B.lookup(R, BindingKey::Direct));
 
diff --git contrib/llvm/tools/lldb/source/Host/common/TCPSocket.cpp contrib/llvm/tools/lldb/source/Host/common/TCPSocket.cpp
index a7af93f10a7f..f896944bb1b3 100644
--- contrib/llvm/tools/lldb/source/Host/common/TCPSocket.cpp
+++ contrib/llvm/tools/lldb/source/Host/common/TCPSocket.cpp
@@ -198,9 +198,14 @@ Status TCPSocket::Listen(llvm::StringRef name, int backlog) {
     ::setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, option_value_p,
                  sizeof(option_value));
 
-    address.SetPort(port);
-
-    int err = ::bind(fd, &address.sockaddr(), address.GetLength());
+    SocketAddress listen_address = address;
+    if(!listen_address.IsLocalhost())
+      listen_address.SetToAnyAddress(address.GetFamily(), port);
+    else
+      listen_address.SetPort(port);
+
+    int err =
+        ::bind(fd, &listen_address.sockaddr(), listen_address.GetLength());
     if (-1 != err)
       err = ::listen(fd, backlog);
 
diff --git contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp
index 6563796db12c..2cb17cb182e2 100644
--- contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp
+++ contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp
@@ -36,8 +36,7 @@ struct GPR {
 struct FPR_i386 {
   uint16_t fctrl;     // FPU Control Word (fcw)
   uint16_t fstat;     // FPU Status Word (fsw)
-  uint8_t ftag;       // FPU Tag Word (ftw)
-  uint8_t reserved_1; // Reserved
+  uint16_t ftag;      // FPU Tag Word (ftw)
   uint16_t fop;       // Last Instruction Opcode (fop)
   union {
     struct {
diff --git contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContext_x86.h contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContext_x86.h
index ab2ca2bb6c2c..5f6fc295a15c 100644
--- contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContext_x86.h
+++ contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContext_x86.h
@@ -257,8 +257,7 @@ struct XMMReg {
 struct FXSAVE {
   uint16_t fctrl;     // FPU Control Word (fcw)
   uint16_t fstat;     // FPU Status Word (fsw)
-  uint8_t ftag;       // FPU Tag Word (ftw)
-  uint8_t reserved_1; // Reserved
+  uint16_t ftag;      // FPU Tag Word (ftw)
   uint16_t fop;       // Last Instruction Opcode (fop)
   union {
     struct {
diff --git contrib/netbsd-tests/usr.bin/grep/t_grep.sh contrib/netbsd-tests/usr.bin/grep/t_grep.sh
index 7acf1d58abd0..596b70f4d48a 100755
--- contrib/netbsd-tests/usr.bin/grep/t_grep.sh
+++ contrib/netbsd-tests/usr.bin/grep/t_grep.sh
@@ -687,6 +687,59 @@ matchall_body()
 
 	atf_check -s exit:1 grep "" test1
 }
+
+atf_test_case fgrep_multipattern
+fgrep_multipattern_head()
+{
+	atf_set "descr" "Check proper behavior with multiple patterns supplied to fgrep"
+}
+fgrep_multipattern_body()
+{
+	printf "Foo\nBar\nBaz" > test1
+
+	atf_check -o inline:"Foo\nBaz\n" grep -F -e "Foo" -e "Baz" test1
+	atf_check -o inline:"Foo\nBaz\n" grep -F -e "Baz" -e "Foo" test1
+	atf_check -o inline:"Bar\nBaz\n" grep -F -e "Bar" -e "Baz" test1
+}
+
+atf_test_case fgrep_icase
+fgrep_icase_head()
+{
+	atf_set "descr" "Check proper handling of -i supplied to fgrep"
+}
+fgrep_icase_body()
+{
+	printf "Foo\nBar\nBaz" > test1
+
+	atf_check -o inline:"Foo\nBaz\n" grep -Fi -e "foo" -e "baz" test1
+	atf_check -o inline:"Foo\nBaz\n" grep -Fi -e "baz" -e "foo" test1
+	atf_check -o inline:"Bar\nBaz\n" grep -Fi -e "bar" -e "baz" test1
+	atf_check -o inline:"Bar\nBaz\n" grep -Fi -e "BAR" -e "bAz" test1
+}
+
+atf_test_case fgrep_oflag
+fgrep_oflag_head()
+{
+	atf_set "descr" "Check proper handling of -o supplied to fgrep"
+}
+fgrep_oflag_body()
+{
+	printf "abcdefghi\n" > test1
+
+	atf_check -o inline:"a\n" grep -Fo "a" test1
+	atf_check -o inline:"i\n" grep -Fo "i" test1
+	atf_check -o inline:"abc\n" grep -Fo "abc" test1
+	atf_check -o inline:"fgh\n" grep -Fo "fgh" test1
+	atf_check -o inline:"cde\n" grep -Fo "cde" test1
+	atf_check -o inline:"bcd\n" grep -Fo -e "bcd" -e "cde" test1
+	atf_check -o inline:"bcd\nefg\n" grep -Fo -e "bcd" -e "efg" test1
+
+	atf_check -s exit:1 grep -Fo "xabc" test1
+	atf_check -s exit:1 grep -Fo "abcx" test1
+	atf_check -s exit:1 grep -Fo "xghi" test1
+	atf_check -s exit:1 grep -Fo "ghix" test1
+	atf_check -s exit:1 grep -Fo "abcdefghiklmnopqrstuvwxyz" test1
+}
 # End FreeBSD
 
 atf_init_test_cases()
@@ -728,5 +781,8 @@ atf_init_test_cases()
 	atf_add_test_case mmap
 	atf_add_test_case mmap_eof_not_eol
 	atf_add_test_case matchall
+	atf_add_test_case fgrep_multipattern
+	atf_add_test_case fgrep_icase
+	atf_add_test_case fgrep_oflag
 # End FreeBSD
 }
diff --git contrib/top/loadavg.h contrib/top/loadavg.h
index 2f20231a6d1d..d7db65ad5ca8 100644
--- contrib/top/loadavg.h
+++ contrib/top/loadavg.h
@@ -19,7 +19,7 @@
  *
  * Defined types:  load_avg for load averages, pctcpu for cpu percentages.
  */
-#if defined(mips) && !(defined(NetBSD) || defined(FreeBSD))
+#if defined(__mips__) && !(defined(__NetBSD__) || defined(__FreeBSD__))
 # include <sys/fixpoint.h>
 # if defined(FBITS) && !defined(FSCALE)
 #  define FSCALE (1 << FBITS)	/* RISC/os on mips */
diff --git contrib/unbound/validator/autotrust.c contrib/unbound/validator/autotrust.c
index da8829cebf25..73d08f0f008c 100644
--- contrib/unbound/validator/autotrust.c
+++ contrib/unbound/validator/autotrust.c
@@ -1571,6 +1571,11 @@ key_matches_a_ds(struct module_env* env, struct val_env* ve,
 			verbose(VERB_ALGO, "DS match attempt failed");
 			continue;
 		}
+		/* match of hash is sufficient for bootstrap of trust point */
+		(void)reason;
+		(void)ve;
+		return 1;
+		/* no need to check RRSIG, DS hash already matched with source
 		if(dnskey_verify_rrset(env, ve, dnskey_rrset, 
 			dnskey_rrset, key_idx, &reason) == sec_status_secure) {
 			return 1;
@@ -1578,6 +1583,7 @@ key_matches_a_ds(struct module_env* env, struct val_env* ve,
 			verbose(VERB_ALGO, "DS match failed because the key "
 				"does not verify the keyset: %s", reason);
 		}
+		*/
 	}
 	return 0;
 }
diff --git contrib/zlib/deflate.c contrib/zlib/deflate.c
index 1ec761448de9..7f2c8a2a2a64 100644
--- contrib/zlib/deflate.c
+++ contrib/zlib/deflate.c
@@ -494,7 +494,7 @@ int ZEXPORT deflateResetKeep (strm)
         s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
 #endif
         adler32(0L, Z_NULL, 0);
-    s->last_flush = Z_NO_FLUSH;
+    s->last_flush = -2;
 
     _tr_init(s);
 
@@ -587,12 +587,12 @@ int ZEXPORT deflateParams(strm, level, strategy)
     func = configuration_table[s->level].func;
 
     if ((strategy != s->strategy || func != configuration_table[level].func) &&
-        s->high_water) {
+        s->last_flush != -2) {
         /* Flush the last buffer: */
         int err = deflate(strm, Z_BLOCK);
         if (err == Z_STREAM_ERROR)
             return err;
-        if (strm->avail_out == 0)
+        if (strm->avail_in || (s->strstart - s->block_start) + s->lookahead)
             return Z_BUF_ERROR;
     }
     if (s->level != level) {
diff --git contrib/zlib/zlib.h contrib/zlib/zlib.h
index f09cdaf1e054..001624e5ed85 100644
--- contrib/zlib/zlib.h
+++ contrib/zlib/zlib.h
@@ -712,11 +712,12 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
    used to switch between compression and straight copy of the input data, or
    to switch to a different kind of input data requiring a different strategy.
    If the compression approach (which is a function of the level) or the
-   strategy is changed, and if any input has been consumed in a previous
-   deflate() call, then the input available so far is compressed with the old
-   level and strategy using deflate(strm, Z_BLOCK).  There are three approaches
-   for the compression levels 0, 1..3, and 4..9 respectively.  The new level
-   and strategy will take effect at the next call of deflate().
+   strategy is changed, and if there have been any deflate() calls since the
+   state was initialized or reset, then the input available so far is
+   compressed with the old level and strategy using deflate(strm, Z_BLOCK).
+   There are three approaches for the compression levels 0, 1..3, and 4..9
+   respectively.  The new level and strategy will take effect at the next call
+   of deflate().
 
      If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does
    not have enough output space to complete, then the parameter change will not
diff --git contrib/zstd/CONTRIBUTING.md contrib/zstd/CONTRIBUTING.md
index edf5b7f47a1f..dd013f8084fa 100644
--- contrib/zstd/CONTRIBUTING.md
+++ contrib/zstd/CONTRIBUTING.md
@@ -39,4 +39,4 @@ outlined on that page and do not file a public issue.
 
 ## License
 By contributing to Zstandard, you agree that your contributions will be licensed
-under the [LICENSE](LICENSE) file in the root directory of this source tree.
+under both the [LICENSE](LICENSE) file and the [COPYING](COPYING) file in the root directory of this source tree.
diff --git contrib/zstd/Makefile contrib/zstd/Makefile
index ac3034c9b7bf..a72f99fcb9d2 100644
--- contrib/zstd/Makefile
+++ contrib/zstd/Makefile
@@ -74,12 +74,9 @@ zstdmt:
 zlibwrapper:
 	$(MAKE) -C $(ZWRAPDIR) test
 
-.PHONY: shortest
-shortest:
-	$(MAKE) -C $(TESTDIR) $@
-
-.PHONY: test
-test:
+.PHONY: test shortest
+test shortest:
+	$(MAKE) -C $(PRGDIR) allVariants
 	$(MAKE) -C $(TESTDIR) $@
 
 .PHONY: examples
@@ -146,6 +143,11 @@ gcc6build: clean
 	gcc-6 -v
 	CC=gcc-6 $(MAKE) all MOREFLAGS="-Werror"
 
+.PHONY: gcc7build
+gcc7build: clean
+	gcc-7 -v
+	CC=gcc-7 $(MAKE) all MOREFLAGS="-Werror"
+
 .PHONY: clangbuild
 clangbuild: clean
 	clang -v
@@ -180,7 +182,7 @@ ppc64fuzz: clean
 	CC=powerpc-linux-gnu-gcc QEMU_SYS=qemu-ppc64-static MOREFLAGS="-m64 -static" FUZZER_FLAGS=--no-big-tests $(MAKE) -C $(TESTDIR) fuzztest
 
 gpptest: clean
-	CC=g++ $(MAKE) -C $(PRGDIR) all CFLAGS="-O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror"
+	CC=$(CXX) $(MAKE) -C $(PRGDIR) all CFLAGS="-O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror"
 
 gcc5test: clean
 	gcc-5 -v
diff --git contrib/zstd/NEWS contrib/zstd/NEWS
index d23a58f02046..59687532fe22 100644
--- contrib/zstd/NEWS
+++ contrib/zstd/NEWS
@@ -1,3 +1,18 @@
+v1.3.1
+New license : BSD + GPLv2
+perf: substantially decreased memory usage in Multi-threading mode, thanks to reports by Tino Reichardt (@mcmilk)
+perf: Multi-threading supports up to 256 threads. Cap at 256 when more are requested (#760)
+cli : improved and fixed --list command, by @ib (#772)
+cli : command -vV to list supported formats, by @ib (#771)
+build : fixed binary variants, reported by @svenha (#788)
+build : fix Visual compilation for non x86/x64 targets, reported by Greg Slazinski (@GregSlazinski) (#718)
+API exp : breaking change : ZSTD_getframeHeader() provides more information
+API exp : breaking change : pinned down values of error codes
+doc : fixed huffman example, by Ulrich Kunitz (@ulikunitz)
+new : contrib/adaptive-compression, I/O driven compression strength, by Paul Cruz (@paulcruz74)
+new : contrib/long_distance_matching, statistics by Stella Lau (@stellamplau)
+updated : contrib/linux-kernel, by Nick Terrell (@terrelln)
+
 v1.3.0
 cli : new : `--list` command, by Paul Cruz
 cli : changed : xz/lzma support enabled by default
diff --git contrib/zstd/PATENTS contrib/zstd/PATENTS
deleted file mode 100644
index 15b4a2ea5ca5..000000000000
--- contrib/zstd/PATENTS
+++ /dev/null
@@ -1,33 +0,0 @@
-Additional Grant of Patent Rights Version 2
-
-"Software" means the Zstandard software distributed by Facebook, Inc.
-
-Facebook, Inc. ("Facebook") hereby grants to each recipient of the Software
-("you") a perpetual, worldwide, royalty-free, non-exclusive, irrevocable
-(subject to the termination provision below) license under any Necessary
-Claims, to make, have made, use, sell, offer to sell, import, and otherwise
-transfer the Software. For avoidance of doubt, no license is granted under
-Facebook’s rights in any patent claims that are infringed by (i) modifications
-to the Software made by you or any third party or (ii) the Software in
-combination with any software or other technology.
-
-The license granted hereunder will terminate, automatically and without notice,
-if you (or any of your subsidiaries, corporate affiliates or agents) initiate
-directly or indirectly, or take a direct financial interest in, any Patent
-Assertion: (i) against Facebook or any of its subsidiaries or corporate
-affiliates, (ii) against any party if such Patent Assertion arises in whole or
-in part from any software, technology, product or service of Facebook or any of
-its subsidiaries or corporate affiliates, or (iii) against any party relating
-to the Software. Notwithstanding the foregoing, if Facebook or any of its
-subsidiaries or corporate affiliates files a lawsuit alleging patent
-infringement against you in the first instance, and you respond by filing a
-patent infringement counterclaim in that lawsuit against that party that is
-unrelated to the Software, the license granted hereunder will not terminate
-under section (i) of this paragraph due to such counterclaim.
-
-A "Necessary Claim" is a claim of a patent owned by Facebook that is
-necessarily infringed by the Software standing alone.
-
-A "Patent Assertion" is any lawsuit or other action alleging direct, indirect,
-or contributory infringement or inducement to infringe any patent, including a
-cross-claim or counterclaim.
diff --git contrib/zstd/README.md contrib/zstd/README.md
index f37be4542c69..377ae0843978 100644
--- contrib/zstd/README.md
+++ contrib/zstd/README.md
@@ -134,12 +134,12 @@ Going into `build` directory, you will find additional possibilities :
 
 ### Status
 
-Zstandard is currently deployed within Facebook. It is used daily to compress and decompress very large amounts of data in multiple formats and use cases.
+Zstandard is currently deployed within Facebook. It is used continuously to compress large amounts of data in multiple formats and use cases.
 Zstandard is considered safe for production environments.
 
 ### License
 
-Zstandard is [BSD-licensed](LICENSE). We also provide an [additional patent grant](PATENTS).
+Zstandard is dual-licensed under [BSD](LICENSE) and [GPLv2](COPYING).
 
 ### Contributing
 
diff --git contrib/zstd/circle.yml contrib/zstd/circle.yml
index 218e33bfc333..8c2bd30d330d 100644
--- contrib/zstd/circle.yml
+++ contrib/zstd/circle.yml
@@ -3,7 +3,7 @@ dependencies:
     - sudo dpkg --add-architecture i386
     - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; sudo apt-get -y -qq update
     - sudo apt-get -y install gcc-powerpc-linux-gnu gcc-arm-linux-gnueabi libc6-dev-armel-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross
-    - sudo apt-get -y install libstdc++-6-dev clang gcc g++ gcc-5 gcc-6 zlib1g-dev liblzma-dev
+    - sudo apt-get -y install libstdc++-7-dev clang gcc g++ gcc-5 gcc-6 gcc-7 zlib1g-dev liblzma-dev
     - sudo apt-get -y install linux-libc-dev:i386 libc6-dev-i386
 
 test:
@@ -45,7 +45,7 @@ test:
         parallel: true
     - ? |
         if [[ "$CIRCLE_NODE_INDEX" == "0" ]]                                    ; then make ppc64build   && make clean; fi &&
-        if [[ "$CIRCLE_NODE_TOTAL" < "2" ]] || [[ "$CIRCLE_NODE_INDEX" == "1" ]]; then true              && make clean; fi #could add another test here
+        if [[ "$CIRCLE_NODE_TOTAL" < "2" ]] || [[ "$CIRCLE_NODE_INDEX" == "1" ]]; then make gcc7build    && make clean; fi #could add another test here
       :
         parallel: true
     - ? |
@@ -64,7 +64,7 @@ test:
     #- gcc -v; make -C tests test32 MOREFLAGS="-I/usr/include/x86_64-linux-gnu" && make clean
     #- make uasan               && make clean
     #- make asan32              && make clean
-    #- make -C tests test32 CC=clang MOREFLAGS="-g -fsanitize=address -I/usr/include/x86_64-linux-gnu" 
+    #- make -C tests test32 CC=clang MOREFLAGS="-g -fsanitize=address -I/usr/include/x86_64-linux-gnu"
   # Valgrind tests
     #- CFLAGS="-O1 -g" make -C zlibWrapper valgrindTest && make clean
     #- make -C tests valgrindTest && make clean
diff --git contrib/zstd/doc/educational_decoder/harness.c contrib/zstd/doc/educational_decoder/harness.c
index 683278dfcd01..982e066e28f0 100644
--- contrib/zstd/doc/educational_decoder/harness.c
+++ contrib/zstd/doc/educational_decoder/harness.c
@@ -87,7 +87,7 @@ int main(int argc, char **argv) {
     }
 
     size_t decompressed_size = ZSTD_get_decompressed_size(input, input_size);
-    if (decompressed_size == -1) {
+    if (decompressed_size == (size_t)-1) {
         decompressed_size = MAX_COMPRESSION_RATIO * input_size;
         fprintf(stderr, "WARNING: Compressed data does not contain "
                         "decompressed size, going to assume the compression "
@@ -106,9 +106,15 @@ int main(int argc, char **argv) {
         return 1;
     }
 
+    dictionary_t* const parsed_dict = create_dictionary();
+    if (dict) {
+        parse_dictionary(parsed_dict, dict, dict_size);
+    }
     size_t decompressed =
         ZSTD_decompress_with_dict(output, decompressed_size,
-                                  input, input_size, dict, dict_size);
+                                  input, input_size, parsed_dict);
+
+    free_dictionary(parsed_dict);
 
     write_file(argv[2], output, decompressed);
 
@@ -117,4 +123,3 @@ int main(int argc, char **argv) {
     free(dict);
     input = output = dict = NULL;
 }
-
diff --git contrib/zstd/doc/educational_decoder/zstd_decompress.c contrib/zstd/doc/educational_decoder/zstd_decompress.c
index 7c8d8114d401..af10db528d2a 100644
--- contrib/zstd/doc/educational_decoder/zstd_decompress.c
+++ contrib/zstd/doc/educational_decoder/zstd_decompress.c
@@ -14,21 +14,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-
-/// Zstandard decompression functions.
-/// `dst` must point to a space at least as large as the reconstructed output.
-size_t ZSTD_decompress(void *const dst, const size_t dst_len,
-                       const void *const src, const size_t src_len);
-/// If `dict != NULL` and `dict_len >= 8`, does the same thing as
-/// `ZSTD_decompress` but uses the provided dict
-size_t ZSTD_decompress_with_dict(void *const dst, const size_t dst_len,
-                                 const void *const src, const size_t src_len,
-                                 const void *const dict, const size_t dict_len);
-
-/// Get the decompressed size of an input stream so memory can be allocated in
-/// advance
-/// Returns -1 if the size can't be determined
-size_t ZSTD_get_decompressed_size(const void *const src, const size_t src_len);
+#include "zstd_decompress.h"
 
 /******* UTILITY MACROS AND TYPES *********************************************/
 // Max block size decompressed size is 128 KB and literal blocks can't be
@@ -108,10 +94,10 @@ static inline size_t IO_istream_len(const istream_t *const in);
 
 /// Advances the stream by `len` bytes, and returns a pointer to the chunk that
 /// was skipped.  The stream must be byte aligned.
-static inline const u8 *IO_read_bytes(istream_t *const in, size_t len);
+static inline const u8 *IO_get_read_ptr(istream_t *const in, size_t len);
 /// Advances the stream by `len` bytes, and returns a pointer to the chunk that
 /// was skipped so it can be written to.
-static inline u8 *IO_write_bytes(ostream_t *const out, size_t len);
+static inline u8 *IO_get_write_ptr(ostream_t *const out, size_t len);
 
 /// Advance the inner state by `len` bytes.  The stream must be byte aligned.
 static inline void IO_advance_input(istream_t *const in, size_t len);
@@ -307,7 +293,7 @@ typedef struct {
 
 /// The decoded contents of a dictionary so that it doesn't have to be repeated
 /// for each frame that uses it
-typedef struct {
+struct dictionary_s {
     // Entropy tables
     HUF_dtable literals_dtable;
     FSE_dtable ll_dtable;
@@ -322,7 +308,7 @@ typedef struct {
     u64 previous_offsets[3];
 
     u32 dictionary_id;
-} dictionary_t;
+};
 
 /// A tuple containing the parts necessary to decode and execute a ZSTD sequence
 /// command
@@ -367,27 +353,36 @@ static void execute_sequences(frame_context_t *const ctx, ostream_t *const out,
                               const sequence_command_t *const sequences,
                               const size_t num_sequences);
 
-// Parse a provided dictionary blob for use in decompression
-static void parse_dictionary(dictionary_t *const dict, const u8 *src,
-                             size_t src_len);
-static void free_dictionary(dictionary_t *const dict);
+// Copies literals and returns the total literal length that was copied
+static u32 copy_literals(const size_t seq, istream_t *litstream,
+                         ostream_t *const out);
+
+// Given an offset code from a sequence command (either an actual offset value
+// or an index for previous offset), computes the correct offset and udpates
+// the offset history
+static size_t compute_offset(sequence_command_t seq, u64 *const offset_hist);
+
+// Given an offset, match length, and total output, as well as the frame
+// context for the dictionary, determines if the dictionary is used and
+// executes the copy operation
+static void execute_match_copy(frame_context_t *const ctx, size_t offset,
+                              size_t match_length, size_t total_output,
+                              ostream_t *const out);
+
 /******* END ZSTD HELPER STRUCTS AND PROTOTYPES *******************************/
 
 size_t ZSTD_decompress(void *const dst, const size_t dst_len,
                        const void *const src, const size_t src_len) {
-    return ZSTD_decompress_with_dict(dst, dst_len, src, src_len, NULL, 0);
+    dictionary_t* uninit_dict = create_dictionary();
+    size_t const decomp_size = ZSTD_decompress_with_dict(dst, dst_len, src,
+                                                         src_len, uninit_dict);
+    free_dictionary(uninit_dict);
+    return decomp_size;
 }
 
 size_t ZSTD_decompress_with_dict(void *const dst, const size_t dst_len,
                                  const void *const src, const size_t src_len,
-                                 const void *const dict,
-                                 const size_t dict_len) {
-    dictionary_t parsed_dict;
-    memset(&parsed_dict, 0, sizeof(dictionary_t));
-    // dict_len < 8 is not a valid dictionary
-    if (dict && dict_len > 8) {
-        parse_dictionary(&parsed_dict, (const u8 *)dict, dict_len);
-    }
+                                 dictionary_t* parsed_dict) {
 
     istream_t in = IO_make_istream(src, src_len);
     ostream_t out = IO_make_ostream(dst, dst_len);
@@ -396,11 +391,9 @@ size_t ZSTD_decompress_with_dict(void *const dst, const size_t dst_len,
     // Multiple frames can be appended into a single file or stream. A frame is
     // totally independent, has a defined beginning and end, and a set of
     // parameters which tells the decoder how to decompress it."
-    while (IO_istream_len(&in) > 0) {
-        decode_frame(&out, &in, &parsed_dict);
-    }
 
-    free_dictionary(&parsed_dict);
+    /* this decoder assumes decompression of a single frame */
+    decode_frame(&out, &in, parsed_dict);
 
     return out.ptr - (u8 *)dst;
 }
@@ -424,30 +417,6 @@ static void decompress_data(frame_context_t *const ctx, ostream_t *const out,
 static void decode_frame(ostream_t *const out, istream_t *const in,
                          const dictionary_t *const dict) {
     const u32 magic_number = IO_read_bits(in, 32);
-
-    // Skippable frame
-    //
-    // "Magic_Number
-    //
-    // 4 Bytes, little-endian format. Value : 0x184D2A5?, which means any value
-    // from 0x184D2A50 to 0x184D2A5F. All 16 values are valid to identify a
-    // skippable frame."
-    if ((magic_number & ~0xFU) == 0x184D2A50U) {
-        // "Skippable frames allow the insertion of user-defined data into a
-        // flow of concatenated frames. Its design is pretty straightforward,
-        // with the sole objective to allow the decoder to quickly skip over
-        // user-defined data and continue decoding.
-        //
-        // Skippable frames defined in this specification are compatible with
-        // LZ4 ones."
-        const size_t frame_size = IO_read_bits(in, 32);
-
-        // skip over frame
-        IO_advance_input(in, frame_size);
-
-        return;
-    }
-
     // Zstandard frame
     //
     // "Magic_Number
@@ -460,8 +429,8 @@ static void decode_frame(ostream_t *const out, istream_t *const in,
         return;
     }
 
-    // not a real frame
-    ERROR("Invalid magic number");
+    // not a real frame or a skippable frame
+    ERROR("Tried to decode non-ZSTD frame");
 }
 
 /// Decode a frame that contains compressed data.  Not all frames do as there
@@ -672,8 +641,8 @@ static void decompress_data(frame_context_t *const ctx, ostream_t *const out,
         case 0: {
             // "Raw_Block - this is an uncompressed block. Block_Size is the
             // number of bytes to read and copy."
-            const u8 *const read_ptr = IO_read_bytes(in, block_len);
-            u8 *const write_ptr = IO_write_bytes(out, block_len);
+            const u8 *const read_ptr = IO_get_read_ptr(in, block_len);
+            u8 *const write_ptr = IO_get_write_ptr(out, block_len);
 
             // Copy the raw data into the output
             memcpy(write_ptr, read_ptr, block_len);
@@ -685,8 +654,8 @@ static void decompress_data(frame_context_t *const ctx, ostream_t *const out,
             // "RLE_Block - this is a single byte, repeated N times. In which
             // case, Block_Size is the size to regenerate, while the
             // "compressed" block is just 1 byte (the byte to repeat)."
-            const u8 *const read_ptr = IO_read_bytes(in, 1);
-            u8 *const write_ptr = IO_write_bytes(out, block_len);
+            const u8 *const read_ptr = IO_get_read_ptr(in, 1);
+            u8 *const write_ptr = IO_get_write_ptr(out, block_len);
 
             // Copy `block_len` copies of `read_ptr[0]` to the output
             memset(write_ptr, read_ptr[0], block_len);
@@ -832,13 +801,13 @@ static size_t decode_literals_simple(istream_t *const in, u8 **const literals,
     switch (block_type) {
     case 0: {
         // "Raw_Literals_Block - Literals are stored uncompressed."
-        const u8 *const read_ptr = IO_read_bytes(in, size);
+        const u8 *const read_ptr = IO_get_read_ptr(in, size);
         memcpy(*literals, read_ptr, size);
         break;
     }
     case 1: {
         // "RLE_Literals_Block - Literals consist of a single byte value repeated N times."
-        const u8 *const read_ptr = IO_read_bytes(in, 1);
+        const u8 *const read_ptr = IO_get_read_ptr(in, 1);
         memset(*literals, read_ptr[0], size);
         break;
     }
@@ -949,7 +918,7 @@ static void decode_huf_table(HUF_dtable *const dtable, istream_t *const in) {
         num_symbs = header - 127;
         const size_t bytes = (num_symbs + 1) / 2;
 
-        const u8 *const weight_src = IO_read_bytes(in, bytes);
+        const u8 *const weight_src = IO_get_read_ptr(in, bytes);
 
         for (int i = 0; i < num_symbs; i++) {
             // "They are encoded forward, 2
@@ -1157,7 +1126,7 @@ static void decompress_sequences(frame_context_t *const ctx, istream_t *in,
     }
 
     const size_t len = IO_istream_len(in);
-    const u8 *const src = IO_read_bytes(in, len);
+    const u8 *const src = IO_get_read_ptr(in, len);
 
     // "After writing the last bit containing information, the compressor writes
     // a single 1-bit and then fills the byte with 0-7 0 bits of padding."
@@ -1262,7 +1231,7 @@ static void decode_seq_table(FSE_dtable *const table, istream_t *const in,
     }
     case seq_rle: {
         // "RLE_Mode : it's a single code, repeated Number_of_Sequences times."
-        const u8 symb = IO_read_bytes(in, 1)[0];
+        const u8 symb = IO_get_read_ptr(in, 1)[0];
         FSE_init_dtable_rle(table, symb);
         break;
     }
@@ -1303,145 +1272,146 @@ static void execute_sequences(frame_context_t *const ctx, ostream_t *const out,
 
     for (size_t i = 0; i < num_sequences; i++) {
         const sequence_command_t seq = sequences[i];
-
         {
-            // If the sequence asks for more literals than are left, the
-            // sequence must be corrupted
-            if (seq.literal_length > IO_istream_len(&litstream)) {
-                CORRUPTION();
-            }
+            const u32 literals_size = copy_literals(seq.literal_length, &litstream, out);
+            total_output += literals_size;
+        }
 
-            u8 *const write_ptr = IO_write_bytes(out, seq.literal_length);
-            const u8 *const read_ptr =
-                    IO_read_bytes(&litstream, seq.literal_length);
-            // Copy literals to output
-            memcpy(write_ptr, read_ptr, seq.literal_length);
+        size_t const offset = compute_offset(seq, offset_hist);
 
-            total_output += seq.literal_length;
-        }
+        size_t const match_length = seq.match_length;
 
-        size_t offset;
-
-        // Offsets are special, we need to handle the repeat offsets
-        if (seq.offset <= 3) {
-            // "The first 3 values define a repeated offset and we will call
-            // them Repeated_Offset1, Repeated_Offset2, and Repeated_Offset3.
-            // They are sorted in recency order, with Repeated_Offset1 meaning
-            // 'most recent one'".
-
-            // Use 0 indexing for the array
-            u32 idx = seq.offset - 1;
-            if (seq.literal_length == 0) {
-                // "There is an exception though, when current sequence's
-                // literals length is 0. In this case, repeated offsets are
-                // shifted by one, so Repeated_Offset1 becomes Repeated_Offset2,
-                // Repeated_Offset2 becomes Repeated_Offset3, and
-                // Repeated_Offset3 becomes Repeated_Offset1 - 1_byte."
-                idx++;
-            }
+        execute_match_copy(ctx, offset, match_length, total_output, out);
 
-            if (idx == 0) {
-                offset = offset_hist[0];
-            } else {
-                // If idx == 3 then literal length was 0 and the offset was 3,
-                // as per the exception listed above
-                offset = idx < 3 ? offset_hist[idx] : offset_hist[0] - 1;
-
-                // If idx == 1 we don't need to modify offset_hist[2], since
-                // we're using the second-most recent code
-                if (idx > 1) {
-                    offset_hist[2] = offset_hist[1];
-                }
-                offset_hist[1] = offset_hist[0];
-                offset_hist[0] = offset;
-            }
-        } else {
-            // When it's not a repeat offset:
-            // "if (Offset_Value > 3) offset = Offset_Value - 3;"
-            offset = seq.offset - 3;
+        total_output += match_length;
+    }
 
-            // Shift back history
-            offset_hist[2] = offset_hist[1];
-            offset_hist[1] = offset_hist[0];
-            offset_hist[0] = offset;
-        }
+    // Copy any leftover literals
+    {
+        size_t len = IO_istream_len(&litstream);
+        copy_literals(len, &litstream, out); 
+        total_output += len;
+    }
 
-        size_t match_length = seq.match_length;
+    ctx->current_total_output = total_output;
+}
 
-        u8 *write_ptr = IO_write_bytes(out, match_length);
-        if (total_output <= ctx->header.window_size) {
-            // In this case offset might go back into the dictionary
-            if (offset > total_output + ctx->dict_content_len) {
-                // The offset goes beyond even the dictionary
-                CORRUPTION();
-            }
+static u32 copy_literals(const size_t literal_length, istream_t *litstream,
+                         ostream_t *const out) {
+    // If the sequence asks for more literals than are left, the
+    // sequence must be corrupted
+    if (literal_length > IO_istream_len(litstream)) {
+        CORRUPTION();
+    }
 
-            if (offset > total_output) {
-                // "The rest of the dictionary is its content. The content act
-                // as a "past" in front of data to compress or decompress, so it
-                // can be referenced in sequence commands."
-                const size_t dict_copy =
-                    MIN(offset - total_output, match_length);
-                const size_t dict_offset =
-                    ctx->dict_content_len - (offset - total_output);
-
-                memcpy(write_ptr, ctx->dict_content + dict_offset, dict_copy);
-                write_ptr += dict_copy;
-                match_length -= dict_copy;
-            }
-        } else if (offset > ctx->header.window_size) {
-            CORRUPTION();
+    u8 *const write_ptr = IO_get_write_ptr(out, literal_length);
+    const u8 *const read_ptr =
+         IO_get_read_ptr(litstream, literal_length);
+    // Copy literals to output
+    memcpy(write_ptr, read_ptr, literal_length);
+
+    return literal_length;
+}
+
+static size_t compute_offset(sequence_command_t seq, u64 *const offset_hist) {
+    size_t offset;
+    // Offsets are special, we need to handle the repeat offsets
+    if (seq.offset <= 3) {
+        // "The first 3 values define a repeated offset and we will call
+        // them Repeated_Offset1, Repeated_Offset2, and Repeated_Offset3.
+        // They are sorted in recency order, with Repeated_Offset1 meaning
+        // 'most recent one'".
+
+        // Use 0 indexing for the array
+        u32 idx = seq.offset - 1;
+        if (seq.literal_length == 0) {
+            // "There is an exception though, when current sequence's
+            // literals length is 0. In this case, repeated offsets are
+            // shifted by one, so Repeated_Offset1 becomes Repeated_Offset2,
+            // Repeated_Offset2 becomes Repeated_Offset3, and
+            // Repeated_Offset3 becomes Repeated_Offset1 - 1_byte."
+            idx++;
         }
 
-        // We must copy byte by byte because the match length might be larger
-        // than the offset
-        // ex: if the output so far was "abc", a command with offset=3 and
-        // match_length=6 would produce "abcabcabc" as the new output
-        for (size_t i = 0; i < match_length; i++) {
-            *write_ptr = *(write_ptr - offset);
-            write_ptr++;
+        if (idx == 0) {
+            offset = offset_hist[0];
+        } else {
+            // If idx == 3 then literal length was 0 and the offset was 3,
+            // as per the exception listed above
+            offset = idx < 3 ? offset_hist[idx] : offset_hist[0] - 1;
+
+            // If idx == 1 we don't need to modify offset_hist[2], since
+            // we're using the second-most recent code
+            if (idx > 1) {
+                offset_hist[2] = offset_hist[1];
+            }
+            offset_hist[1] = offset_hist[0];
+            offset_hist[0] = offset;
         }
+    } else {
+        // When it's not a repeat offset:
+        // "if (Offset_Value > 3) offset = Offset_Value - 3;"
+        offset = seq.offset - 3;
 
-        total_output += seq.match_length;
+        // Shift back history
+        offset_hist[2] = offset_hist[1];
+        offset_hist[1] = offset_hist[0];
+        offset_hist[0] = offset;
     }
+    return offset;
+}
 
-    // Copy any leftover literals
-    {
-        size_t len = IO_istream_len(&litstream);
-        u8 *const write_ptr = IO_write_bytes(out, len);
-        const u8 *const read_ptr = IO_read_bytes(&litstream, len);
-        memcpy(write_ptr, read_ptr, len);
+static void execute_match_copy(frame_context_t *const ctx, size_t offset,
+                              size_t match_length, size_t total_output,
+                              ostream_t *const out) {
+    u8 *write_ptr = IO_get_write_ptr(out, match_length);
+    if (total_output <= ctx->header.window_size) {
+        // In this case offset might go back into the dictionary
+        if (offset > total_output + ctx->dict_content_len) {
+            // The offset goes beyond even the dictionary
+            CORRUPTION();
+        }
 
-        total_output += len;
+        if (offset > total_output) {
+            // "The rest of the dictionary is its content. The content act
+            // as a "past" in front of data to compress or decompress, so it
+            // can be referenced in sequence commands."
+            const size_t dict_copy =
+                MIN(offset - total_output, match_length);
+            const size_t dict_offset =
+                ctx->dict_content_len - (offset - total_output);
+
+            memcpy(write_ptr, ctx->dict_content + dict_offset, dict_copy);
+            write_ptr += dict_copy;
+            match_length -= dict_copy;
+        }
+    } else if (offset > ctx->header.window_size) {
+        CORRUPTION();
     }
 
-    ctx->current_total_output = total_output;
+    // We must copy byte by byte because the match length might be larger
+    // than the offset
+    // ex: if the output so far was "abc", a command with offset=3 and
+    // match_length=6 would produce "abcabcabc" as the new output
+    for (size_t j = 0; j < match_length; j++) {
+        *write_ptr = *(write_ptr - offset);
+        write_ptr++;
+    }
 }
 /******* END SEQUENCE EXECUTION ***********************************************/
 
 /******* OUTPUT SIZE COUNTING *************************************************/
-static void traverse_frame(const frame_header_t *const header, istream_t *const in);
-
 /// Get the decompressed size of an input stream so memory can be allocated in
 /// advance.
-/// This is more complex than the implementation in the reference
-/// implementation, as this API allows for the decompression of multiple
-/// concatenated frames.
+/// This implementation assumes `src` points to a single ZSTD-compressed frame
 size_t ZSTD_get_decompressed_size(const void *src, const size_t src_len) {
     istream_t in = IO_make_istream(src, src_len);
-    size_t dst_size = 0;
 
-    // Each frame header only gives us the size of its frame, so iterate over
-    // all
-    // frames
-    while (IO_istream_len(&in) > 0) {
+    // get decompressed size from ZSTD frame header
+    {
         const u32 magic_number = IO_read_bits(&in, 32);
 
-        if ((magic_number & ~0xFU) == 0x184D2A50U) {
-            // skippable frame, this has no impact on output size
-            const size_t frame_size = IO_read_bits(&in, 32);
-            IO_advance_input(&in, frame_size);
-        } else if (magic_number == 0xFD2FB528U) {
+        if (magic_number == 0xFD2FB528U) {
             // ZSTD frame
             frame_header_t header;
             parse_frame_header(&header, &in);
@@ -1451,68 +1421,42 @@ size_t ZSTD_get_decompressed_size(const void *src, const size_t src_len) {
                 return -1;
             }
 
-            dst_size += header.frame_content_size;
-
-            // Consume the input from the frame to reach the start of the next
-            traverse_frame(&header, &in);
+            return header.frame_content_size;
         } else {
-            // not a real frame
-            ERROR("Invalid magic number");
+            // not a real frame or skippable frame
+            ERROR("ZSTD frame magic number did not match");
         }
     }
-
-    return dst_size;
 }
+/******* END OUTPUT SIZE COUNTING *********************************************/
 
-/// Iterate over each block in a frame to find the end of it, to get to the
-/// start of the next frame
-static void traverse_frame(const frame_header_t *const header, istream_t *const in) {
-    int last_block = 0;
-
-    do {
-        // Parse the block header
-        last_block = IO_read_bits(in, 1);
-        const int block_type = IO_read_bits(in, 2);
-        const size_t block_len = IO_read_bits(in, 21);
-
-        switch (block_type) {
-        case 0: // Raw block, block_len bytes
-            IO_advance_input(in, block_len);
-            break;
-        case 1: // RLE block, 1 byte
-            IO_advance_input(in, 1);
-            break;
-        case 2: // Compressed block, compressed size is block_len
-            IO_advance_input(in, block_len);
-            break;
-        case 3:
-            // Reserved block type
-            CORRUPTION();
-            break;
-        default:
-            IMPOSSIBLE();
-        }
-    } while (!last_block);
+/******* DICTIONARY PARSING ***************************************************/
+#define DICT_SIZE_ERROR() ERROR("Dictionary size cannot be less than 8 bytes")
+#define NULL_SRC() ERROR("Tried to create dictionary with pointer to null src");
 
-    if (header->content_checksum_flag) {
-        IO_advance_input(in, 4);
+dictionary_t* create_dictionary() {
+    dictionary_t* dict = calloc(1, sizeof(dictionary_t));
+    if (!dict) {
+        BAD_ALLOC();
     }
+    return dict;
 }
 
-/******* END OUTPUT SIZE COUNTING *********************************************/
-
-/******* DICTIONARY PARSING ***************************************************/
 static void init_dictionary_content(dictionary_t *const dict,
                                     istream_t *const in);
 
-static void parse_dictionary(dictionary_t *const dict, const u8 *src,
+void parse_dictionary(dictionary_t *const dict, const void *src,
                              size_t src_len) {
+    const u8 *byte_src = (const u8 *)src;
     memset(dict, 0, sizeof(dictionary_t));
+    if (src == NULL) { /* cannot initialize dictionary with null src */
+        NULL_SRC();
+    }
     if (src_len < 8) {
-        INP_SIZE();
+        DICT_SIZE_ERROR();
     }
 
-    istream_t in = IO_make_istream(src, src_len);
+    istream_t in = IO_make_istream(byte_src, src_len);
 
     const u32 magic_number = IO_read_bits(&in, 32);
     if (magic_number != 0xEC30A437) {
@@ -1564,13 +1508,13 @@ static void init_dictionary_content(dictionary_t *const dict,
         BAD_ALLOC();
     }
 
-    const u8 *const content = IO_read_bytes(in, dict->content_size);
+    const u8 *const content = IO_get_read_ptr(in, dict->content_size);
 
     memcpy(dict->content, content, dict->content_size);
 }
 
 /// Free an allocated dictionary
-static void free_dictionary(dictionary_t *const dict) {
+void free_dictionary(dictionary_t *const dict) {
     HUF_free_dtable(&dict->literals_dtable);
     FSE_free_dtable(&dict->ll_dtable);
     FSE_free_dtable(&dict->of_dtable);
@@ -1579,6 +1523,8 @@ static void free_dictionary(dictionary_t *const dict) {
     free(dict->content);
 
     memset(dict, 0, sizeof(dictionary_t));
+
+    free(dict);
 }
 /******* END DICTIONARY PARSING ***********************************************/
 
@@ -1657,7 +1603,7 @@ static inline size_t IO_istream_len(const istream_t *const in) {
 
 /// Returns a pointer where `len` bytes can be read, and advances the internal
 /// state.  The stream must be byte aligned.
-static inline const u8 *IO_read_bytes(istream_t *const in, size_t len) {
+static inline const u8 *IO_get_read_ptr(istream_t *const in, size_t len) {
     if (len > in->len) {
         INP_SIZE();
     }
@@ -1671,7 +1617,7 @@ static inline const u8 *IO_read_bytes(istream_t *const in, size_t len) {
     return ptr;
 }
 /// Returns a pointer to write `len` bytes to, and advances the internal state
-static inline u8 *IO_write_bytes(ostream_t *const out, size_t len) {
+static inline u8 *IO_get_write_ptr(ostream_t *const out, size_t len) {
     if (len > out->len) {
         OUT_SIZE();
     }
@@ -1710,7 +1656,7 @@ static inline istream_t IO_make_istream(const u8 *in, size_t len) {
 /// `in` must be byte aligned
 static inline istream_t IO_make_sub_istream(istream_t *const in, size_t len) {
     // Consume `len` bytes of the parent stream
-    const u8 *const ptr = IO_read_bytes(in, len);
+    const u8 *const ptr = IO_get_read_ptr(in, len);
 
     // Make a substream using the pointer to those `len` bytes
     return IO_make_istream(ptr, len);
@@ -1814,7 +1760,7 @@ static size_t HUF_decompress_1stream(const HUF_dtable *const dtable,
     if (len == 0) {
         INP_SIZE();
     }
-    const u8 *const src = IO_read_bytes(in, len);
+    const u8 *const src = IO_get_read_ptr(in, len);
 
     // "Each bitstream must be read backward, that is starting from the end down
     // to the beginning. Therefore it's necessary to know the size of each
@@ -2065,7 +2011,7 @@ static size_t FSE_decompress_interleaved2(const FSE_dtable *const dtable,
     if (len == 0) {
         INP_SIZE();
     }
-    const u8 *const src = IO_read_bytes(in, len);
+    const u8 *const src = IO_get_read_ptr(in, len);
 
     // "Each bitstream must be read backward, that is starting from the end down
     // to the beginning. Therefore it's necessary to know the size of each
@@ -2192,7 +2138,7 @@ static void FSE_init_dtable(FSE_dtable *const dtable,
     }
 
     // Now we can fill baseline and num bits
-    for (int i = 0; i < size; i++) {
+    for (size_t i = 0; i < size; i++) {
         u8 symbol = dtable->symbols[i];
         u16 next_state_desc = state_desc[symbol]++;
         // Fills in the table appropriately, next_state_desc increases by symbol
@@ -2355,4 +2301,3 @@ static void FSE_copy_dtable(FSE_dtable *const dst, const FSE_dtable *const src)
     memcpy(dst->new_state_base, src->new_state_base, size * sizeof(u16));
 }
 /******* END FSE PRIMITIVES ***************************************************/
-
diff --git contrib/zstd/doc/educational_decoder/zstd_decompress.h contrib/zstd/doc/educational_decoder/zstd_decompress.h
index 16f4da3eb92e..41009909bfa1 100644
--- contrib/zstd/doc/educational_decoder/zstd_decompress.h
+++ contrib/zstd/doc/educational_decoder/zstd_decompress.h
@@ -7,10 +7,52 @@
  * of patent rights can be found in the PATENTS file in the same directory.
  */
 
+/******* EXPOSED TYPES ********************************************************/
+/*
+* Contains the parsed contents of a dictionary
+* This includes Huffman and FSE tables used for decoding and data on offsets
+*/
+typedef struct dictionary_s dictionary_t;
+/******* END EXPOSED TYPES ****************************************************/
+
+/******* DECOMPRESSION FUNCTIONS **********************************************/
+/// Zstandard decompression functions.
+/// `dst` must point to a space at least as large as the reconstructed output.
 size_t ZSTD_decompress(void *const dst, const size_t dst_len,
-                       const void *const src, const size_t src_len);
+                    const void *const src, const size_t src_len);
+
+/// If `dict != NULL` and `dict_len >= 8`, does the same thing as
+/// `ZSTD_decompress` but uses the provided dict
 size_t ZSTD_decompress_with_dict(void *const dst, const size_t dst_len,
-                                 const void *const src, const size_t src_len,
-                                 const void *const dict, const size_t dict_len);
+                              const void *const src, const size_t src_len,
+                              dictionary_t* parsed_dict);
+
+/// Get the decompressed size of an input stream so memory can be allocated in
+/// advance
+/// Returns -1 if the size can't be determined
+/// Assumes decompression of a single frame
 size_t ZSTD_get_decompressed_size(const void *const src, const size_t src_len);
+/******* END DECOMPRESSION FUNCTIONS ******************************************/
+
+/******* DICTIONARY MANAGEMENT ***********************************************/
+/*
+ * Return a valid dictionary_t pointer for use with dictionary initialization
+ * or decompression
+ */
+dictionary_t* create_dictionary();
+
+/*
+ * Parse a provided dictionary blob for use in decompression
+ * `src` -- must point to memory space representing the dictionary
+ * `src_len` -- must provide the dictionary size
+ * `dict` -- will contain the parsed contents of the dictionary and
+ *        can be used for decompression
+ */
+void parse_dictionary(dictionary_t *const dict, const void *src,
+                             size_t src_len);
 
+/*
+ * Free internal Huffman tables, FSE tables, and dictionary content
+ */
+void free_dictionary(dictionary_t *const dict);
+/******* END DICTIONARY MANAGEMENT *******************************************/
diff --git contrib/zstd/doc/zstd_compression_format.md contrib/zstd/doc/zstd_compression_format.md
index 1f212fea2305..aa86d1420eef 100644
--- contrib/zstd/doc/zstd_compression_format.md
+++ contrib/zstd/doc/zstd_compression_format.md
@@ -16,7 +16,7 @@ Distribution of this document is unlimited.
 
 ### Version
 
-0.2.5 (31/03/17)
+0.2.6 (19/08/17)
 
 
 Introduction
@@ -106,7 +106,7 @@ The structure of a single Zstandard frame is following:
 
 | `Magic_Number` | `Frame_Header` |`Data_Block`| [More data blocks] | [`Content_Checksum`] |
 |:--------------:|:--------------:|:----------:| ------------------ |:--------------------:|
-| 4 bytes        |  2-14 bytes    | n bytes    |                    |   0-4 bytes          |
+|  4 bytes       |  2-14 bytes    |  n bytes   |                    |     0-4 bytes        |
 
 __`Magic_Number`__
 
@@ -1249,23 +1249,30 @@ Consequently, a last byte of `0` is not possible.
 And the final-bit-flag itself is not part of the useful bitstream.
 Hence, the last byte contains between 0 and 7 useful bits.
 
-For example, if the literal sequence "0145" was encoded using the prefix codes above,
-it would be encoded as:
-```
-00000001 01110000
-```
+Starting from the end,
+it's possible to read the bitstream in a __little-endian__ fashion,
+keeping track of already used bits. Since the bitstream is encoded in reverse
+order, starting from the end read symbols in forward order.
+
+For example, if the literal sequence "0145" was encoded using above prefix code,
+it would be encoded (in reverse order) as:
 
 |Symbol  |   5  |   4  |  1 | 0 | Padding |
 |--------|------|------|----|---|---------|
-|Encoding|`0000`|`0001`|`01`|`1`| `10000` |
+|Encoding|`0000`|`0001`|`01`|`1`| `00001` |
 
-Starting from the end,
-it's possible to read the bitstream in a __little-endian__ fashion,
-keeping track of already used bits.  Since the bitstream is encoded in reverse
-order, by starting at the end the symbols can be read in forward order.
+Resulting in following 2-bytes bitstream :
+```
+00010000 00001101
+```
+
+Here is an alternative representation with the symbol codes separated by underscore:
+```
+0001_0000 00001_1_01
+```
 
-Reading the last `Max_Number_of_Bits` bits,
-it's then possible to compare extracted value to decoding table,
+Reading highest `Max_Number_of_Bits` bits,
+it's possible to compare extracted value to decoding table,
 determining the symbol to decode and number of bits to discard.
 
 The process continues up to reading the required number of symbols per stream.
@@ -1516,12 +1523,13 @@ to crosscheck that an implementation build its decoding tables correctly.
 
 Version changes
 ---------------
+- 0.2.6 : fixed an error in huffman example, by Ulrich Kunitz
 - 0.2.5 : minor typos and clarifications
 - 0.2.4 : section restructuring, by Sean Purcell
 - 0.2.3 : clarified several details, by Sean Purcell
 - 0.2.2 : added predefined codes, by Johannes Rudolph
 - 0.2.1 : clarify field names, by Przemyslaw Skibinski
-- 0.2.0 : numerous format adjustments for zstd v0.8
+- 0.2.0 : numerous format adjustments for zstd v0.8+
 - 0.1.2 : limit Huffman tree depth to 11 bits
 - 0.1.1 : reserved dictID ranges
 - 0.1.0 : initial release
diff --git contrib/zstd/doc/zstd_manual.html contrib/zstd/doc/zstd_manual.html
index cd2b06dd8309..c166e7258d32 100644
--- contrib/zstd/doc/zstd_manual.html
+++ contrib/zstd/doc/zstd_manual.html
@@ -1,10 +1,10 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>zstd 1.3.0 Manual</title>
+<title>zstd 1.3.1 Manual</title>
 </head>
 <body>
-<h1>zstd 1.3.0 Manual</h1>
+<h1>zstd 1.3.1 Manual</h1>
 <hr>
 <a name="Contents"></a><h2>Contents</h2>
 <ol>
@@ -73,27 +73,41 @@
             or an errorCode if it fails (which can be tested using ZSTD_isError()). 
 </p></pre><BR>
 
-<pre><b>unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize);
-</b><p>  NOTE: This function is planned to be obsolete, in favor of ZSTD_getFrameContentSize().
-  ZSTD_getFrameContentSize() works the same way,
-  returning the decompressed size of a single frame,
-  but distinguishes empty frames from frames with an unknown size, or errors.
-
-  'src' is the start of a zstd compressed frame.
-  @return : content size to be decompressed, as a 64-bits value _if known_, 0 otherwise.
-   note 1 : decompressed size is an optional field, it may not be present, typically in streaming mode.
-            When `return==0`, data to decompress could be any size.
+<pre><b>#define ZSTD_CONTENTSIZE_UNKNOWN (0ULL - 1)
+#define ZSTD_CONTENTSIZE_ERROR   (0ULL - 2)
+unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize);
+</b><p>  `src` should point to the start of a ZSTD encoded frame.
+  `srcSize` must be at least as large as the frame header.
+            hint : any size >= `ZSTD_frameHeaderSize_max` is large enough.
+  @return : - decompressed size of the frame in `src`, if known
+            - ZSTD_CONTENTSIZE_UNKNOWN if the size cannot be determined
+            - ZSTD_CONTENTSIZE_ERROR if an error occurred (e.g. invalid magic number, srcSize too small)
+   note 1 : a 0 return value means the frame is valid but "empty".
+   note 2 : decompressed size is an optional field, it may not be present, typically in streaming mode.
+            When `return==ZSTD_CONTENTSIZE_UNKNOWN`, data to decompress could be any size.
             In which case, it's necessary to use streaming mode to decompress data.
-            Optionally, application can use ZSTD_decompress() while relying on implied limits.
-            (For example, data may be necessarily cut into blocks <= 16 KB).
-   note 2 : decompressed size is always present when compression is done with ZSTD_compress()
-   note 3 : decompressed size can be very large (64-bits value),
+            Optionally, application can rely on some implicit limit,
+            as ZSTD_decompress() only needs an upper bound of decompressed size.
+            (For example, data could be necessarily cut into blocks <= 16 KB).
+   note 3 : decompressed size is always present when compression is done with ZSTD_compress()
+   note 4 : decompressed size can be very large (64-bits value),
             potentially larger than what local system can handle as a single memory segment.
             In which case, it's necessary to use streaming mode to decompress data.
-   note 4 : If source is untrusted, decompressed size could be wrong or intentionally modified.
-            Always ensure result fits within application's authorized limits.
+   note 5 : If source is untrusted, decompressed size could be wrong or intentionally modified.
+            Always ensure return value fits within application's authorized limits.
             Each application can set its own limits.
-   note 5 : when `return==0`, if precise failure cause is needed, use ZSTD_getFrameHeader() to know more. 
+   note 6 : This function replaces ZSTD_getDecompressedSize() 
+</p></pre><BR>
+
+<pre><b>unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize);
+</b><p>  NOTE: This function is now obsolete, in favor of ZSTD_getFrameContentSize().
+  Both functions work the same way,
+  but ZSTD_getDecompressedSize() blends
+  "empty", "unknown" and "error" results in the same return value (0),
+  while ZSTD_getFrameContentSize() distinguishes them.
+
+  'src' is the start of a zstd compressed frame.
+  @return : content size to be decompressed, as a 64-bits value _if known and not empty_, 0 otherwise. 
 </p></pre><BR>
 
 <h3>Helper functions</h3><pre></pre><b><pre>int         ZSTD_maxCLevel(void);               </b>/*!< maximum compression level available */<b>
@@ -298,8 +312,8 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
 <pre><b>size_t ZSTD_DStreamOutSize(void);   </b>/*!< recommended size for output buffer. Guarantee to successfully flush at least one complete block in all circumstances. */<b>
 </b></pre><BR>
 <a name="Chapter10"></a><h2>START OF ADVANCED AND EXPERIMENTAL FUNCTIONS</h2><pre> The definitions in this section are considered experimental.
- They should never be used with a dynamic library, as they may change in the future.
- They are provided for advanced usages.
+ They should never be used with a dynamic library, as prototypes may change in the future.
+ They are provided for advanced scenarios.
  Use them only in association with static linking.
  
 <BR></pre>
@@ -330,13 +344,6 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
     ZSTD_frameParameters fParams;
 } ZSTD_parameters;
 </b></pre><BR>
-<pre><b>typedef struct {
-    unsigned long long frameContentSize;
-    size_t windowSize;
-    unsigned dictID;
-    unsigned checksumFlag;
-} ZSTD_frameHeader;
-</b></pre><BR>
 <h3>Custom memory allocation functions</h3><pre></pre><b><pre>typedef void* (*ZSTD_allocFunction) (void* opaque, size_t size);
 typedef void  (*ZSTD_freeFunction) (void* opaque, void* address);
 typedef struct { ZSTD_allocFunction customAlloc; ZSTD_freeFunction customFree; void* opaque; } ZSTD_customMem;
@@ -348,26 +355,15 @@ static const ZSTD_customMem ZSTD_defaultCMem = { NULL, NULL, NULL };
 <pre><b>size_t ZSTD_findFrameCompressedSize(const void* src, size_t srcSize);
 </b><p>  `src` should point to the start of a ZSTD encoded frame or skippable frame
   `srcSize` must be at least as large as the frame
-  @return : the compressed size of the frame pointed to by `src`,
+  @return : the compressed size of the first frame starting at `src`,
             suitable to pass to `ZSTD_decompress` or similar,
-            or an error code if given invalid input. 
-</p></pre><BR>
-
-<pre><b>#define ZSTD_CONTENTSIZE_UNKNOWN (0ULL - 1)
-#define ZSTD_CONTENTSIZE_ERROR   (0ULL - 2)
-unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize);
-</b><p>  `src` should point to the start of a ZSTD encoded frame.
-  `srcSize` must be at least as large as the frame header.
-       A value >= `ZSTD_frameHeaderSize_max` is guaranteed to be large enough.
-  @return : - decompressed size of the frame pointed to be `src` if known
-            - ZSTD_CONTENTSIZE_UNKNOWN if the size cannot be determined
-            - ZSTD_CONTENTSIZE_ERROR if an error occurred (e.g. invalid magic number, srcSize too small) 
+            or an error code if input is invalid 
 </p></pre><BR>
 
 <pre><b>unsigned long long ZSTD_findDecompressedSize(const void* src, size_t srcSize);
 </b><p>  `src` should point the start of a series of ZSTD encoded and/or skippable frames
   `srcSize` must be the _exact_ size of this series
-       (i.e. there should be a frame boundary exactly `srcSize` bytes after `src`)
+       (i.e. there should be a frame boundary exactly at `srcSize` bytes after `src`)
   @return : - decompressed size of all data in all successive frames
             - if the decompressed size cannot be determined: ZSTD_CONTENTSIZE_UNKNOWN
             - if an error occurred: ZSTD_CONTENTSIZE_ERROR
@@ -375,8 +371,6 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize);
    note 1 : decompressed size is an optional field, that may not be present, especially in streaming mode.
             When `return==ZSTD_CONTENTSIZE_UNKNOWN`, data to decompress could be any size.
             In which case, it's necessary to use streaming mode to decompress data.
-            Optionally, application can still use ZSTD_decompress() while relying on implied limits.
-            (For example, data may be necessarily cut into blocks <= 16 KB).
    note 2 : decompressed size is always present when compression is done with ZSTD_compress()
    note 3 : decompressed size can be very large (64-bits value),
             potentially larger than what local system can handle as a single memory segment.
@@ -385,7 +379,7 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize);
             Always ensure result fits within application's authorized limits.
             Each application can set its own limits.
    note 5 : ZSTD_findDecompressedSize handles multiple frames, and so it must traverse the input to
-            read each contained frame header.  This is efficient as most of the data is skipped,
+            read each contained frame header.  This is fast as most of the data is skipped,
             however it does mean that all frame data must be present and valid. 
 </p></pre><BR>
 
@@ -483,14 +477,15 @@ size_t ZSTD_estimateDDictSize(size_t dictSize, unsigned byReference);
   It is important that dictBuffer outlives CDict, it must remain read accessible throughout the lifetime of CDict 
 </p></pre><BR>
 
-<pre><b>typedef enum { ZSTD_dm_auto=0,        </b>/* dictionary is "full" if it starts with ZSTD_MAGIC_DICTIONARY, rawContent otherwize */<b>
+<pre><b>typedef enum { ZSTD_dm_auto=0,        </b>/* dictionary is "full" if it starts with ZSTD_MAGIC_DICTIONARY, otherwise it is "rawContent" */<b>
                ZSTD_dm_rawContent,    </b>/* ensures dictionary is always loaded as rawContent, even if it starts with ZSTD_MAGIC_DICTIONARY */<b>
                ZSTD_dm_fullDict       </b>/* refuses to load a dictionary if it does not respect Zstandard's specification */<b>
 } ZSTD_dictMode_e;
 </b></pre><BR>
 <pre><b>ZSTD_CDict* ZSTD_createCDict_advanced(const void* dict, size_t dictSize,
                                       unsigned byReference, ZSTD_dictMode_e dictMode,
-                                      ZSTD_compressionParameters cParams, ZSTD_customMem customMem);
+                                      ZSTD_compressionParameters cParams,
+                                      ZSTD_customMem customMem);
 </b><p>  Create a ZSTD_CDict using external alloc and free, and customized compression parameters 
 </p></pre><BR>
 
@@ -760,7 +755,16 @@ size_t ZSTD_copyCCtx(ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, unsigned lo
   It also returns Frame Size as fparamsPtr->frameContentSize.
 <BR></pre>
 
-<h3>Buffer-less streaming decompression functions</h3><pre></pre><b><pre>size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize);   </b>/**< doesn't consume input */<b>
+<h3>Buffer-less streaming decompression functions</h3><pre></pre><b><pre>typedef enum { ZSTD_frame, ZSTD_skippableFrame } ZSTD_frameType_e;
+typedef struct {
+    unsigned long long frameContentSize; </b>/* ZSTD_CONTENTSIZE_UNKNOWN means this field is not available. 0 means "empty" */<b>
+    unsigned long long windowSize;       </b>/* can be very large, up to <= frameContentSize */<b>
+    ZSTD_frameType_e frameType;          </b>/* if == ZSTD_skippableFrame, frameContentSize is the size of skippable content */<b>
+    unsigned headerSize;
+    unsigned dictID;
+    unsigned checksumFlag;
+} ZSTD_frameHeader;
+size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize);   </b>/**< doesn't consume input */<b>
 size_t ZSTD_decompressBegin(ZSTD_DCtx* dctx);
 size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx* dctx, const void* dict, size_t dictSize);
 size_t ZSTD_decompressBegin_usingDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict);
@@ -809,7 +813,9 @@ void   ZSTD_copyDCtx(ZSTD_DCtx* dctx, const ZSTD_DCtx* preparedDCtx);
                               * Special: value 0 means "do not change strategy". */
 
     </b>/* frame parameters */<b>
-    ZSTD_p_contentSizeFlag=200, </b>/* Content size is written into frame header _whenever known_ (default:1) */<b>
+    ZSTD_p_contentSizeFlag=200, </b>/* Content size is written into frame header _whenever known_ (default:1)<b>
+                              * note that content size must be known at the beginning,
+                              * it is sent using ZSTD_CCtx_setPledgedSrcSize() */
     ZSTD_p_checksumFlag,     </b>/* A 32-bits checksum of content is written at end of frame (default:0) */<b>
     ZSTD_p_dictIDFlag,       </b>/* When applicable, dictID of dictionary is provided in frame header (default:1) */<b>
 
diff --git contrib/zstd/lib/common/bitstream.h contrib/zstd/lib/common/bitstream.h
index 07b85026c95b..06121f21c5b3 100644
--- contrib/zstd/lib/common/bitstream.h
+++ contrib/zstd/lib/common/bitstream.h
@@ -80,9 +80,9 @@ extern "C" {
 *  bitStream encoding API (write forward)
 ********************************************/
 /* bitStream can mix input from multiple sources.
-*  A critical property of these streams is that they encode and decode in **reverse** direction.
-*  So the first bit sequence you add will be the last to be read, like a LIFO stack.
-*/
+ * A critical property of these streams is that they encode and decode in **reverse** direction.
+ * So the first bit sequence you add will be the last to be read, like a LIFO stack.
+ */
 typedef struct
 {
     size_t bitContainer;
@@ -203,7 +203,7 @@ static const unsigned BIT_mask[] = { 0, 1, 3, 7, 0xF, 0x1F, 0x3F, 0x7F,
 /*! BIT_initCStream() :
  *  `dstCapacity` must be > sizeof(size_t)
  *  @return : 0 if success,
-              otherwise an error code (can be tested using ERR_isError() ) */
+ *            otherwise an error code (can be tested using ERR_isError()) */
 MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC,
                                   void* startPtr, size_t dstCapacity)
 {
@@ -217,8 +217,8 @@ MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC,
 }
 
 /*! BIT_addBits() :
-    can add up to 26 bits into `bitC`.
-    Does not check for register overflow ! */
+ *  can add up to 26 bits into `bitC`.
+ *  Note : does not check for register overflow ! */
 MEM_STATIC void BIT_addBits(BIT_CStream_t* bitC,
                             size_t value, unsigned nbBits)
 {
@@ -268,7 +268,7 @@ MEM_STATIC void BIT_flushBits(BIT_CStream_t* bitC)
 
 /*! BIT_closeCStream() :
  *  @return : size of CStream, in bytes,
-              or 0 if it could not fit into dstBuffer */
+ *            or 0 if it could not fit into dstBuffer */
 MEM_STATIC size_t BIT_closeCStream(BIT_CStream_t* bitC)
 {
     BIT_addBitsFast(bitC, 1, 1);   /* endMark */
@@ -279,14 +279,14 @@ MEM_STATIC size_t BIT_closeCStream(BIT_CStream_t* bitC)
 
 
 /*-********************************************************
-* bitStream decoding
+*  bitStream decoding
 **********************************************************/
 /*! BIT_initDStream() :
-*   Initialize a BIT_DStream_t.
-*   `bitD` : a pointer to an already allocated BIT_DStream_t structure.
-*   `srcSize` must be the *exact* size of the bitStream, in bytes.
-*   @return : size of stream (== srcSize) or an errorCode if a problem is detected
-*/
+ *  Initialize a BIT_DStream_t.
+ * `bitD` : a pointer to an already allocated BIT_DStream_t structure.
+ * `srcSize` must be the *exact* size of the bitStream, in bytes.
+ * @return : size of stream (== srcSize), or an errorCode if a problem is detected
+ */
 MEM_STATIC size_t BIT_initDStream(BIT_DStream_t* bitD, const void* srcBuffer, size_t srcSize)
 {
     if (srcSize < 1) { memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); }
@@ -305,29 +305,30 @@ MEM_STATIC size_t BIT_initDStream(BIT_DStream_t* bitD, const void* srcBuffer, si
         bitD->bitContainer = *(const BYTE*)(bitD->start);
         switch(srcSize)
         {
-	    case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16);
-	            /* fall-through */
+        case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16);
+                /* fall-through */
 
-	    case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);
-	            /* fall-through */
+        case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);
+                /* fall-through */
 
-	    case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);
-	            /* fall-through */
+        case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);
+                /* fall-through */
 
-	    case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24;
-	            /* fall-through */
+        case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24;
+                /* fall-through */
 
-	    case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16;
-	            /* fall-through */
+        case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16;
+                /* fall-through */
 
-	    case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) <<  8;
-	            /* fall-through */
+        case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) <<  8;
+                /* fall-through */
 
-            default: break;
+        default: break;
+        }
+        {   BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1];
+            bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0;
+            if (lastByte == 0) return ERROR(corruption_detected);  /* endMark not present */
         }
-        { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1];
-          bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0;
-          if (lastByte == 0) return ERROR(GENERIC); /* endMark not present */ }
         bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize)*8;
     }
 
@@ -363,9 +364,8 @@ MEM_STATIC size_t BIT_getLowerBits(size_t bitContainer, U32 const nbBits)
  *  local register is not modified.
  *  On 32-bits, maxNbBits==24.
  *  On 64-bits, maxNbBits==56.
- *  @return : value extracted
- */
- MEM_STATIC size_t BIT_lookBits(const BIT_DStream_t* bitD, U32 nbBits)
+ * @return : value extracted */
+MEM_STATIC size_t BIT_lookBits(const BIT_DStream_t* bitD, U32 nbBits)
 {
 #if defined(__BMI__) && defined(__GNUC__)   /* experimental; fails if bitD->bitsConsumed + nbBits > sizeof(bitD->bitContainer)*8 */
     return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits);
@@ -392,8 +392,7 @@ MEM_STATIC void BIT_skipBits(BIT_DStream_t* bitD, U32 nbBits)
 /*! BIT_readBits() :
  *  Read (consume) next n bits from local register and update.
  *  Pay attention to not read more than nbBits contained into local register.
- *  @return : extracted value.
- */
+ * @return : extracted value. */
 MEM_STATIC size_t BIT_readBits(BIT_DStream_t* bitD, U32 nbBits)
 {
     size_t const value = BIT_lookBits(bitD, nbBits);
@@ -402,7 +401,7 @@ MEM_STATIC size_t BIT_readBits(BIT_DStream_t* bitD, U32 nbBits)
 }
 
 /*! BIT_readBitsFast() :
-*   unsafe version; only works only if nbBits >= 1 */
+ *  unsafe version; only works only if nbBits >= 1 */
 MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, U32 nbBits)
 {
     size_t const value = BIT_lookBitsFast(bitD, nbBits);
@@ -412,10 +411,10 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, U32 nbBits)
 }
 
 /*! BIT_reloadDStream() :
-*   Refill `bitD` from buffer previously set in BIT_initDStream() .
-*   This function is safe, it guarantees it will not read beyond src buffer.
-*   @return : status of `BIT_DStream_t` internal register.
-              if status == BIT_DStream_unfinished, internal register is filled with >= (sizeof(bitD->bitContainer)*8 - 7) bits */
+ *  Refill `bitD` from buffer previously set in BIT_initDStream() .
+ *  This function is safe, it guarantees it will not read beyond src buffer.
+ * @return : status of `BIT_DStream_t` internal register.
+ *           when status == BIT_DStream_unfinished, internal register is filled with at least 25 or 57 bits */
 MEM_STATIC BIT_DStream_status BIT_reloadDStream(BIT_DStream_t* bitD)
 {
     if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8))  /* overflow detected, like end of stream */
@@ -446,8 +445,8 @@ MEM_STATIC BIT_DStream_status BIT_reloadDStream(BIT_DStream_t* bitD)
 }
 
 /*! BIT_endOfDStream() :
-*   @return Tells if DStream has exactly reached its end (all bits consumed).
-*/
+ * @return : 1 if DStream has _exactly_ reached its end (all bits consumed).
+ */
 MEM_STATIC unsigned BIT_endOfDStream(const BIT_DStream_t* DStream)
 {
     return ((DStream->ptr == DStream->start) && (DStream->bitsConsumed == sizeof(DStream->bitContainer)*8));
diff --git contrib/zstd/lib/common/compiler.h contrib/zstd/lib/common/compiler.h
new file mode 100644
index 000000000000..d7225c443e91
--- /dev/null
+++ contrib/zstd/lib/common/compiler.h
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ */
+
+#ifndef ZSTD_COMPILER_H
+#define ZSTD_COMPILER_H
+
+/*-*******************************************************
+*  Compiler specifics
+*********************************************************/
+/* force inlining */
+#if defined (__GNUC__) || defined(__cplusplus) || defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L   /* C99 */
+#  define INLINE_KEYWORD inline
+#else
+#  define INLINE_KEYWORD
+#endif
+
+#if defined(__GNUC__)
+#  define FORCE_INLINE_ATTR __attribute__((always_inline))
+#elif defined(_MSC_VER)
+#  define FORCE_INLINE_ATTR __forceinline
+#else
+#  define FORCE_INLINE_ATTR
+#endif
+
+/**
+ * FORCE_INLINE_TEMPLATE is used to define C "templates", which take constant
+ * parameters. They must be inlined for the compiler to elimininate the constant
+ * branches.
+ */
+#define FORCE_INLINE_TEMPLATE static INLINE_KEYWORD FORCE_INLINE_ATTR
+/**
+ * HINT_INLINE is used to help the compiler generate better code. It is *not*
+ * used for "templates", so it can be tweaked based on the compilers
+ * performance.
+ *
+ * gcc-4.8 and gcc-4.9 have been shown to benefit from leaving off the
+ * always_inline attribute.
+ *
+ * clang up to 5.0.0 (trunk) benefit tremendously from the always_inline
+ * attribute.
+ */
+#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 8 && __GNUC__ < 5
+#  define HINT_INLINE static INLINE_KEYWORD
+#else
+#  define HINT_INLINE static INLINE_KEYWORD FORCE_INLINE_ATTR
+#endif
+
+/* force no inlining */
+#ifdef _MSC_VER
+#  define FORCE_NOINLINE static __declspec(noinline)
+#else
+#  ifdef __GNUC__
+#    define FORCE_NOINLINE static __attribute__((__noinline__))
+#  else
+#    define FORCE_NOINLINE static
+#  endif
+#endif
+
+/* prefetch */
+#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_I86))  /* _mm_prefetch() is not defined outside of x86/x64 */
+#  include <mmintrin.h>   /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */
+#  define PREFETCH(ptr)   _mm_prefetch((const char*)ptr, _MM_HINT_T0)
+#elif defined(__GNUC__)
+#  define PREFETCH(ptr)   __builtin_prefetch(ptr, 0, 0)
+#else
+#  define PREFETCH(ptr)   /* disabled */
+#endif
+
+/* disable warnings */
+#ifdef _MSC_VER    /* Visual Studio */
+#  include <intrin.h>                    /* For Visual 2005 */
+#  pragma warning(disable : 4100)        /* disable: C4100: unreferenced formal parameter */
+#  pragma warning(disable : 4127)        /* disable: C4127: conditional expression is constant */
+#  pragma warning(disable : 4204)        /* disable: C4204: non-constant aggregate initializer */
+#  pragma warning(disable : 4214)        /* disable: C4214: non-int bitfields */
+#  pragma warning(disable : 4324)        /* disable: C4324: padded structure */
+#endif
+
+#endif /* ZSTD_COMPILER_H */
diff --git contrib/zstd/lib/common/error_private.c contrib/zstd/lib/common/error_private.c
index 2d752cd23a72..b5b14b509cf1 100644
--- contrib/zstd/lib/common/error_private.c
+++ contrib/zstd/lib/common/error_private.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 /* The purpose of this file is to have a single list of error strings embedded in binary */
@@ -20,19 +20,17 @@ const char* ERR_getErrorString(ERR_enum code)
     case PREFIX(GENERIC):  return "Error (generic)";
     case PREFIX(prefix_unknown): return "Unknown frame descriptor";
     case PREFIX(version_unsupported): return "Version not supported";
-    case PREFIX(parameter_unknown): return "Unknown parameter type";
     case PREFIX(frameParameter_unsupported): return "Unsupported frame parameter";
-    case PREFIX(frameParameter_unsupportedBy32bits): return "Frame parameter unsupported in 32-bits mode";
     case PREFIX(frameParameter_windowTooLarge): return "Frame requires too much memory for decoding";
-    case PREFIX(compressionParameter_unsupported): return "Compression parameter is not supported";
-    case PREFIX(compressionParameter_outOfBound): return "Compression parameter is out of bound";
+    case PREFIX(corruption_detected): return "Corrupted block detected";
+    case PREFIX(checksum_wrong): return "Restored data doesn't match checksum";
+    case PREFIX(parameter_unsupported): return "Unsupported parameter";
+    case PREFIX(parameter_outOfBound): return "Parameter is out of bound";
     case PREFIX(init_missing): return "Context should be init first";
     case PREFIX(memory_allocation): return "Allocation error : not enough memory";
     case PREFIX(stage_wrong): return "Operation not authorized at current processing stage";
     case PREFIX(dstSize_tooSmall): return "Destination buffer is too small";
     case PREFIX(srcSize_wrong): return "Src size is incorrect";
-    case PREFIX(corruption_detected): return "Corrupted block detected";
-    case PREFIX(checksum_wrong): return "Restored data doesn't match checksum";
     case PREFIX(tableLog_tooLarge): return "tableLog requires too much memory : unsupported";
     case PREFIX(maxSymbolValue_tooLarge): return "Unsupported max Symbol Value : too large";
     case PREFIX(maxSymbolValue_tooSmall): return "Specified maxSymbolValue is too small";
diff --git contrib/zstd/lib/common/error_private.h contrib/zstd/lib/common/error_private.h
index 1bc2e4954818..9dd9a87cfac8 100644
--- contrib/zstd/lib/common/error_private.h
+++ contrib/zstd/lib/common/error_private.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 /* Note : this module is expected to remain private, do not expose it */
diff --git contrib/zstd/lib/common/fse.h contrib/zstd/lib/common/fse.h
index 6d5d41def19b..1c44f8375078 100644
--- contrib/zstd/lib/common/fse.h
+++ contrib/zstd/lib/common/fse.h
@@ -31,13 +31,14 @@
    You can contact the author at :
    - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
 ****************************************************************** */
-#ifndef FSE_H
-#define FSE_H
 
 #if defined (__cplusplus)
 extern "C" {
 #endif
 
+#ifndef FSE_H
+#define FSE_H
+
 
 /*-*****************************************
 *  Dependencies
@@ -297,8 +298,10 @@ FSE_decompress_usingDTable() result will tell how many bytes were regenerated (<
 If there is an error, the function will return an error code, which can be tested using FSE_isError(). (ex: dst buffer too small)
 */
 
+#endif  /* FSE_H */
 
-#ifdef FSE_STATIC_LINKING_ONLY
+#if defined(FSE_STATIC_LINKING_ONLY) && !defined(FSE_H_FSE_STATIC_LINKING_ONLY)
+#define FSE_H_FSE_STATIC_LINKING_ONLY
 
 /* *** Dependency *** */
 #include "bitstream.h"
@@ -381,6 +384,11 @@ size_t FSE_buildDTable_rle (FSE_DTable* dt, unsigned char symbolValue);
 size_t FSE_decompress_wksp(void* dst, size_t dstCapacity, const void* cSrc, size_t cSrcSize, FSE_DTable* workSpace, unsigned maxLog);
 /**< same as FSE_decompress(), using an externally allocated `workSpace` produced with `FSE_DTABLE_SIZE_U32(maxLog)` */
 
+typedef enum {
+   FSE_repeat_none,  /**< Cannot use the previous table */
+   FSE_repeat_check, /**< Can use the previous table but it must be checked */
+   FSE_repeat_valid  /**< Can use the previous table and it is asumed to be valid */
+ } FSE_repeat;
 
 /* *****************************************
 *  FSE symbol compression API
@@ -694,5 +702,3 @@ MEM_STATIC unsigned FSE_endOfDState(const FSE_DState_t* DStatePtr)
 #if defined (__cplusplus)
 }
 #endif
-
-#endif  /* FSE_H */
diff --git contrib/zstd/lib/common/fse_decompress.c contrib/zstd/lib/common/fse_decompress.c
index 8474a4c079b2..8e3f0035f69a 100644
--- contrib/zstd/lib/common/fse_decompress.c
+++ contrib/zstd/lib/common/fse_decompress.c
@@ -33,35 +33,16 @@
 ****************************************************************** */
 
 
-/* **************************************************************
-*  Compiler specifics
-****************************************************************/
-#ifdef _MSC_VER    /* Visual Studio */
-#  define FORCE_INLINE static __forceinline
-#  include <intrin.h>                    /* For Visual 2005 */
-#  pragma warning(disable : 4127)        /* disable: C4127: conditional expression is constant */
-#  pragma warning(disable : 4214)        /* disable: C4214: non-int bitfields */
-#else
-#  if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L   /* C99 */
-#    ifdef __GNUC__
-#      define FORCE_INLINE static inline __attribute__((always_inline))
-#    else
-#      define FORCE_INLINE static inline
-#    endif
-#  else
-#    define FORCE_INLINE static
-#  endif /* __STDC_VERSION__ */
-#endif
-
-
 /* **************************************************************
 *  Includes
 ****************************************************************/
 #include <stdlib.h>     /* malloc, free, qsort */
 #include <string.h>     /* memcpy, memset */
 #include "bitstream.h"
+#include "compiler.h"
 #define FSE_STATIC_LINKING_ONLY
 #include "fse.h"
+#include "error_private.h"
 
 
 /* **************************************************************
@@ -216,7 +197,7 @@ size_t FSE_buildDTable_raw (FSE_DTable* dt, unsigned nbBits)
     return 0;
 }
 
-FORCE_INLINE size_t FSE_decompress_usingDTable_generic(
+FORCE_INLINE_TEMPLATE size_t FSE_decompress_usingDTable_generic(
           void* dst, size_t maxDstSize,
     const void* cSrc, size_t cSrcSize,
     const FSE_DTable* dt, const unsigned fast)
diff --git contrib/zstd/lib/common/huf.h contrib/zstd/lib/common/huf.h
index dabd359915a7..2b3015a84c19 100644
--- contrib/zstd/lib/common/huf.h
+++ contrib/zstd/lib/common/huf.h
@@ -31,13 +31,13 @@
    You can contact the author at :
    - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
 ****************************************************************** */
-#ifndef HUF_H_298734234
-#define HUF_H_298734234
 
 #if defined (__cplusplus)
 extern "C" {
 #endif
 
+#ifndef HUF_H_298734234
+#define HUF_H_298734234
 
 /* *** Dependencies *** */
 #include <stddef.h>    /* size_t */
@@ -124,6 +124,7 @@ HUF_PUBLIC_API size_t HUF_compress4X_wksp (void* dst, size_t dstCapacity, const
 #define HUF_DECOMPRESS_WORKSPACE_SIZE (2 << 10)
 #define HUF_DECOMPRESS_WORKSPACE_SIZE_U32 (HUF_DECOMPRESS_WORKSPACE_SIZE / sizeof(U32))
 
+#endif   /* HUF_H_298734234 */
 
 /* ******************************************************************
  *  WARNING !!
@@ -132,7 +133,8 @@ HUF_PUBLIC_API size_t HUF_compress4X_wksp (void* dst, size_t dstCapacity, const
  *  because they are not guaranteed to remain stable in the future.
  *  Only consider them in association with static linking.
  *******************************************************************/
-#ifdef HUF_STATIC_LINKING_ONLY
+#if defined(HUF_STATIC_LINKING_ONLY) && !defined(HUF_H_HUF_STATIC_LINKING_ONLY)
+#define HUF_H_HUF_STATIC_LINKING_ONLY
 
 /* *** Dependencies *** */
 #include "mem.h"   /* U32 */
@@ -295,9 +297,6 @@ size_t HUF_decompress1X4_usingDTable(void* dst, size_t maxDstSize, const void* c
 
 #endif /* HUF_STATIC_LINKING_ONLY */
 
-
 #if defined (__cplusplus)
 }
 #endif
-
-#endif   /* HUF_H_298734234 */
diff --git contrib/zstd/lib/common/mem.h contrib/zstd/lib/common/mem.h
index b0e5bf60b43b..df85404fb869 100644
--- contrib/zstd/lib/common/mem.h
+++ contrib/zstd/lib/common/mem.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef MEM_H_MODULE
@@ -110,7 +110,7 @@ Only use if no other choice to achieve best performance on target platform */
 MEM_STATIC U16 MEM_read16(const void* memPtr) { return *(const U16*) memPtr; }
 MEM_STATIC U32 MEM_read32(const void* memPtr) { return *(const U32*) memPtr; }
 MEM_STATIC U64 MEM_read64(const void* memPtr) { return *(const U64*) memPtr; }
-MEM_STATIC U64 MEM_readST(const void* memPtr) { return *(const size_t*) memPtr; }
+MEM_STATIC size_t MEM_readST(const void* memPtr) { return *(const size_t*) memPtr; }
 
 MEM_STATIC void MEM_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; }
 MEM_STATIC void MEM_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; }
@@ -131,7 +131,7 @@ MEM_STATIC void MEM_write64(void* memPtr, U64 value) { *(U64*)memPtr = value; }
 MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign*)ptr)->u16; }
 MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign*)ptr)->u32; }
 MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign*)ptr)->u64; }
-MEM_STATIC U64 MEM_readST(const void* ptr) { return ((const unalign*)ptr)->st; }
+MEM_STATIC size_t MEM_readST(const void* ptr) { return ((const unalign*)ptr)->st; }
 
 MEM_STATIC void MEM_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; }
 MEM_STATIC void MEM_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; }
diff --git contrib/zstd/lib/common/pool.c contrib/zstd/lib/common/pool.c
index 749fa4f2f7b4..a227044f7f1c 100644
--- contrib/zstd/lib/common/pool.c
+++ contrib/zstd/lib/common/pool.c
@@ -1,10 +1,10 @@
-/**
- * Copyright (c) 2016-present, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -39,6 +39,12 @@ struct POOL_ctx_s {
     size_t queueHead;
     size_t queueTail;
     size_t queueSize;
+
+    /* The number of threads working on jobs */
+    size_t numThreadsBusy;
+    /* Indicates if the queue is empty */
+    int queueEmpty;
+
     /* The mutex protects the queue */
     pthread_mutex_t queueMutex;
     /* Condition variable for pushers to wait on when the queue is full */
@@ -60,30 +66,41 @@ static void* POOL_thread(void* opaque) {
     for (;;) {
         /* Lock the mutex and wait for a non-empty queue or until shutdown */
         pthread_mutex_lock(&ctx->queueMutex);
-        while (ctx->queueHead == ctx->queueTail && !ctx->shutdown) {
+
+        while (ctx->queueEmpty && !ctx->shutdown) {
             pthread_cond_wait(&ctx->queuePopCond, &ctx->queueMutex);
         }
         /* empty => shutting down: so stop */
-        if (ctx->queueHead == ctx->queueTail) {
+        if (ctx->queueEmpty) {
             pthread_mutex_unlock(&ctx->queueMutex);
             return opaque;
         }
         /* Pop a job off the queue */
         {   POOL_job const job = ctx->queue[ctx->queueHead];
             ctx->queueHead = (ctx->queueHead + 1) % ctx->queueSize;
+            ctx->numThreadsBusy++;
+            ctx->queueEmpty = ctx->queueHead == ctx->queueTail;
             /* Unlock the mutex, signal a pusher, and run the job */
             pthread_mutex_unlock(&ctx->queueMutex);
             pthread_cond_signal(&ctx->queuePushCond);
+
             job.function(job.opaque);
-        }
-    }
+
+            /* If the intended queue size was 0, signal after finishing job */
+            if (ctx->queueSize == 1) {
+                pthread_mutex_lock(&ctx->queueMutex);
+                ctx->numThreadsBusy--;
+                pthread_mutex_unlock(&ctx->queueMutex);
+                pthread_cond_signal(&ctx->queuePushCond);
+        }   }
+    }  /* for (;;) */
     /* Unreachable */
 }
 
 POOL_ctx *POOL_create(size_t numThreads, size_t queueSize) {
     POOL_ctx *ctx;
     /* Check the parameters */
-    if (!numThreads || !queueSize) { return NULL; }
+    if (!numThreads) { return NULL; }
     /* Allocate the context and zero initialize */
     ctx = (POOL_ctx *)calloc(1, sizeof(POOL_ctx));
     if (!ctx) { return NULL; }
@@ -92,15 +109,17 @@ POOL_ctx *POOL_create(size_t numThreads, size_t queueSize) {
      * and full queues.
      */
     ctx->queueSize = queueSize + 1;
-    ctx->queue = (POOL_job *)malloc(ctx->queueSize * sizeof(POOL_job));
+    ctx->queue = (POOL_job*) malloc(ctx->queueSize * sizeof(POOL_job));
     ctx->queueHead = 0;
     ctx->queueTail = 0;
-    pthread_mutex_init(&ctx->queueMutex, NULL);
-    pthread_cond_init(&ctx->queuePushCond, NULL);
-    pthread_cond_init(&ctx->queuePopCond, NULL);
+    ctx->numThreadsBusy = 0;
+    ctx->queueEmpty = 1;
+    (void)pthread_mutex_init(&ctx->queueMutex, NULL);
+    (void)pthread_cond_init(&ctx->queuePushCond, NULL);
+    (void)pthread_cond_init(&ctx->queuePopCond, NULL);
     ctx->shutdown = 0;
     /* Allocate space for the thread handles */
-    ctx->threads = (pthread_t *)malloc(numThreads * sizeof(pthread_t));
+    ctx->threads = (pthread_t*)malloc(numThreads * sizeof(pthread_t));
     ctx->numThreads = 0;
     /* Check for errors */
     if (!ctx->threads || !ctx->queue) { POOL_free(ctx); return NULL; }
@@ -153,22 +172,37 @@ size_t POOL_sizeof(POOL_ctx *ctx) {
         + ctx->numThreads * sizeof(pthread_t);
 }
 
-void POOL_add(void *ctxVoid, POOL_function function, void *opaque) {
-    POOL_ctx *ctx = (POOL_ctx *)ctxVoid;
+/**
+ * Returns 1 if the queue is full and 0 otherwise.
+ *
+ * If the queueSize is 1 (the pool was created with an intended queueSize of 0),
+ * then a queue is empty if there is a thread free and no job is waiting.
+ */
+static int isQueueFull(POOL_ctx const* ctx) {
+    if (ctx->queueSize > 1) {
+        return ctx->queueHead == ((ctx->queueTail + 1) % ctx->queueSize);
+    } else {
+        return ctx->numThreadsBusy == ctx->numThreads ||
+               !ctx->queueEmpty;
+    }
+}
+
+void POOL_add(void* ctxVoid, POOL_function function, void *opaque) {
+    POOL_ctx* const ctx = (POOL_ctx*)ctxVoid;
     if (!ctx) { return; }
 
     pthread_mutex_lock(&ctx->queueMutex);
     {   POOL_job const job = {function, opaque};
+
         /* Wait until there is space in the queue for the new job */
-        size_t newTail = (ctx->queueTail + 1) % ctx->queueSize;
-        while (ctx->queueHead == newTail && !ctx->shutdown) {
+        while (isQueueFull(ctx) && !ctx->shutdown) {
           pthread_cond_wait(&ctx->queuePushCond, &ctx->queueMutex);
-          newTail = (ctx->queueTail + 1) % ctx->queueSize;
         }
         /* The queue is still going => there is space */
         if (!ctx->shutdown) {
+            ctx->queueEmpty = 0;
             ctx->queue[ctx->queueTail] = job;
-            ctx->queueTail = newTail;
+            ctx->queueTail = (ctx->queueTail + 1) % ctx->queueSize;
         }
     }
     pthread_mutex_unlock(&ctx->queueMutex);
@@ -183,22 +217,22 @@ struct POOL_ctx_s {
   int data;
 };
 
-POOL_ctx *POOL_create(size_t numThreads, size_t queueSize) {
+POOL_ctx* POOL_create(size_t numThreads, size_t queueSize) {
   (void)numThreads;
   (void)queueSize;
-  return (POOL_ctx *)malloc(sizeof(POOL_ctx));
+  return (POOL_ctx*)malloc(sizeof(POOL_ctx));
 }
 
-void POOL_free(POOL_ctx *ctx) {
-  if (ctx) free(ctx);
+void POOL_free(POOL_ctx* ctx) {
+    free(ctx);
 }
 
-void POOL_add(void *ctx, POOL_function function, void *opaque) {
+void POOL_add(void* ctx, POOL_function function, void* opaque) {
   (void)ctx;
   function(opaque);
 }
 
-size_t POOL_sizeof(POOL_ctx *ctx) {
+size_t POOL_sizeof(POOL_ctx* ctx) {
     if (ctx==NULL) return 0;  /* supports sizeof NULL */
     return sizeof(*ctx);
 }
diff --git contrib/zstd/lib/common/pool.h contrib/zstd/lib/common/pool.h
index 386cd674b7c0..264c5c9ca7ea 100644
--- contrib/zstd/lib/common/pool.h
+++ contrib/zstd/lib/common/pool.h
@@ -1,11 +1,12 @@
-/**
- * Copyright (c) 2016-present, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
+
 #ifndef POOL_H
 #define POOL_H
 
@@ -19,11 +20,10 @@ extern "C" {
 typedef struct POOL_ctx_s POOL_ctx;
 
 /*! POOL_create() :
-    Create a thread pool with at most `numThreads` threads.
-    `numThreads` must be at least 1.
-    The maximum number of queued jobs before blocking is `queueSize`.
-    `queueSize` must be at least 1.
-    @return : The POOL_ctx pointer on success else NULL.
+ *  Create a thread pool with at most `numThreads` threads.
+ * `numThreads` must be at least 1.
+ *  The maximum number of queued jobs before blocking is `queueSize`.
+ * @return : POOL_ctx pointer on success, else NULL.
 */
 POOL_ctx *POOL_create(size_t numThreads, size_t queueSize);
 
diff --git contrib/zstd/lib/common/threading.h contrib/zstd/lib/common/threading.h
index c0086139ea33..ab09977a86dc 100644
--- contrib/zstd/lib/common/threading.h
+++ contrib/zstd/lib/common/threading.h
@@ -1,4 +1,3 @@
-
 /**
  * Copyright (c) 2016 Tino Reichardt
  * All rights reserved.
@@ -42,14 +41,14 @@ extern "C" {
 
 /* mutex */
 #define pthread_mutex_t           CRITICAL_SECTION
-#define pthread_mutex_init(a,b)   InitializeCriticalSection((a))
+#define pthread_mutex_init(a,b)   (InitializeCriticalSection((a)), 0)
 #define pthread_mutex_destroy(a)  DeleteCriticalSection((a))
 #define pthread_mutex_lock(a)     EnterCriticalSection((a))
 #define pthread_mutex_unlock(a)   LeaveCriticalSection((a))
 
 /* condition variable */
 #define pthread_cond_t             CONDITION_VARIABLE
-#define pthread_cond_init(a, b)    InitializeConditionVariable((a))
+#define pthread_cond_init(a, b)    (InitializeConditionVariable((a)), 0)
 #define pthread_cond_destroy(a)    /* No delete */
 #define pthread_cond_wait(a, b)    SleepConditionVariableCS((a), (b), INFINITE)
 #define pthread_cond_signal(a)     WakeConditionVariable((a))
@@ -80,14 +79,14 @@ int _pthread_join(pthread_t* thread, void** value_ptr);
 #else  /* ZSTD_MULTITHREAD not defined */
 /* No multithreading support */
 
-#define pthread_mutex_t int   /* #define rather than typedef, as sometimes pthread support is implicit, resulting in duplicated symbols */
-#define pthread_mutex_init(a,b)
+#define pthread_mutex_t int   /* #define rather than typedef, because sometimes pthread support is implicit, resulting in duplicated symbols */
+#define pthread_mutex_init(a,b)    ((void)a, 0)
 #define pthread_mutex_destroy(a)
 #define pthread_mutex_lock(a)
 #define pthread_mutex_unlock(a)
 
 #define pthread_cond_t int
-#define pthread_cond_init(a,b)
+#define pthread_cond_init(a,b)     ((void)a, 0)
 #define pthread_cond_destroy(a)
 #define pthread_cond_wait(a,b)
 #define pthread_cond_signal(a)
diff --git contrib/zstd/lib/common/xxhash.c contrib/zstd/lib/common/xxhash.c
index 0b3c26c8d7ab..ae3d76fd1cc5 100644
--- contrib/zstd/lib/common/xxhash.c
+++ contrib/zstd/lib/common/xxhash.c
@@ -113,19 +113,25 @@ static void* XXH_memcpy(void* dest, const void* src, size_t size) { return memcp
 /* *************************************
 *  Compiler Specific Options
 ***************************************/
-#ifdef _MSC_VER    /* Visual Studio */
-#  pragma warning(disable : 4127)      /* disable: C4127: conditional expression is constant */
-#  define FORCE_INLINE static __forceinline
+#if defined (__GNUC__) || defined(__cplusplus) || defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L   /* C99 */
+#  define INLINE_KEYWORD inline
 #else
-#  if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L   /* C99 */
-#    ifdef __GNUC__
-#      define FORCE_INLINE static inline __attribute__((always_inline))
-#    else
-#      define FORCE_INLINE static inline
-#    endif
-#  else
-#    define FORCE_INLINE static
-#  endif /* __STDC_VERSION__ */
+#  define INLINE_KEYWORD
+#endif
+
+#if defined(__GNUC__)
+#  define FORCE_INLINE_ATTR __attribute__((always_inline))
+#elif defined(_MSC_VER)
+#  define FORCE_INLINE_ATTR __forceinline
+#else
+#  define FORCE_INLINE_ATTR
+#endif
+
+#define FORCE_INLINE_TEMPLATE static INLINE_KEYWORD FORCE_INLINE_ATTR
+
+
+#ifdef _MSC_VER
+#  pragma warning(disable : 4127)      /* disable: C4127: conditional expression is constant */
 #endif
 
 
@@ -248,7 +254,7 @@ typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess;
 *****************************/
 typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment;
 
-FORCE_INLINE U32 XXH_readLE32_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
+FORCE_INLINE_TEMPLATE U32 XXH_readLE32_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
 {
     if (align==XXH_unaligned)
         return endian==XXH_littleEndian ? XXH_read32(ptr) : XXH_swap32(XXH_read32(ptr));
@@ -256,7 +262,7 @@ FORCE_INLINE U32 XXH_readLE32_align(const void* ptr, XXH_endianess endian, XXH_a
         return endian==XXH_littleEndian ? *(const U32*)ptr : XXH_swap32(*(const U32*)ptr);
 }
 
-FORCE_INLINE U32 XXH_readLE32(const void* ptr, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE U32 XXH_readLE32(const void* ptr, XXH_endianess endian)
 {
     return XXH_readLE32_align(ptr, endian, XXH_unaligned);
 }
@@ -266,7 +272,7 @@ static U32 XXH_readBE32(const void* ptr)
     return XXH_CPU_LITTLE_ENDIAN ? XXH_swap32(XXH_read32(ptr)) : XXH_read32(ptr);
 }
 
-FORCE_INLINE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
+FORCE_INLINE_TEMPLATE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
 {
     if (align==XXH_unaligned)
         return endian==XXH_littleEndian ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr));
@@ -274,7 +280,7 @@ FORCE_INLINE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endian, XXH_a
         return endian==XXH_littleEndian ? *(const U64*)ptr : XXH_swap64(*(const U64*)ptr);
 }
 
-FORCE_INLINE U64 XXH_readLE64(const void* ptr, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE U64 XXH_readLE64(const void* ptr, XXH_endianess endian)
 {
     return XXH_readLE64_align(ptr, endian, XXH_unaligned);
 }
@@ -335,7 +341,7 @@ static U32 XXH32_round(U32 seed, U32 input)
     return seed;
 }
 
-FORCE_INLINE U32 XXH32_endian_align(const void* input, size_t len, U32 seed, XXH_endianess endian, XXH_alignment align)
+FORCE_INLINE_TEMPLATE U32 XXH32_endian_align(const void* input, size_t len, U32 seed, XXH_endianess endian, XXH_alignment align)
 {
     const BYTE* p = (const BYTE*)input;
     const BYTE* bEnd = p + len;
@@ -435,7 +441,7 @@ static U64 XXH64_mergeRound(U64 acc, U64 val)
     return acc;
 }
 
-FORCE_INLINE U64 XXH64_endian_align(const void* input, size_t len, U64 seed, XXH_endianess endian, XXH_alignment align)
+FORCE_INLINE_TEMPLATE U64 XXH64_endian_align(const void* input, size_t len, U64 seed, XXH_endianess endian, XXH_alignment align)
 {
     const BYTE* p = (const BYTE*)input;
     const BYTE* const bEnd = p + len;
@@ -584,7 +590,7 @@ XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, unsigned long
 }
 
 
-FORCE_INLINE XXH_errorcode XXH32_update_endian (XXH32_state_t* state, const void* input, size_t len, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE XXH_errorcode XXH32_update_endian (XXH32_state_t* state, const void* input, size_t len, XXH_endianess endian)
 {
     const BYTE* p = (const BYTE*)input;
     const BYTE* const bEnd = p + len;
@@ -654,7 +660,7 @@ XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* state_in, const void*
 
 
 
-FORCE_INLINE U32 XXH32_digest_endian (const XXH32_state_t* state, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE U32 XXH32_digest_endian (const XXH32_state_t* state, XXH_endianess endian)
 {
     const BYTE * p = (const BYTE*)state->mem32;
     const BYTE* const bEnd = (const BYTE*)(state->mem32) + state->memsize;
@@ -704,7 +710,7 @@ XXH_PUBLIC_API unsigned int XXH32_digest (const XXH32_state_t* state_in)
 
 /* **** XXH64 **** */
 
-FORCE_INLINE XXH_errorcode XXH64_update_endian (XXH64_state_t* state, const void* input, size_t len, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE XXH_errorcode XXH64_update_endian (XXH64_state_t* state, const void* input, size_t len, XXH_endianess endian)
 {
     const BYTE* p = (const BYTE*)input;
     const BYTE* const bEnd = p + len;
@@ -771,7 +777,7 @@ XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* state_in, const void*
 
 
 
-FORCE_INLINE U64 XXH64_digest_endian (const XXH64_state_t* state, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE U64 XXH64_digest_endian (const XXH64_state_t* state, XXH_endianess endian)
 {
     const BYTE * p = (const BYTE*)state->mem64;
     const BYTE* const bEnd = (const BYTE*)state->mem64 + state->memsize;
diff --git contrib/zstd/lib/common/zstd_common.c contrib/zstd/lib/common/zstd_common.c
index f68167238158..08384cabf59b 100644
--- contrib/zstd/lib/common/zstd_common.c
+++ contrib/zstd/lib/common/zstd_common.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/lib/common/zstd_errors.h contrib/zstd/lib/common/zstd_errors.h
index 19f1597aa340..a69387b714a8 100644
--- contrib/zstd/lib/common/zstd_errors.h
+++ contrib/zstd/lib/common/zstd_errors.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTD_ERRORS_H_398273423
@@ -37,43 +37,41 @@ extern "C" {
 /*-****************************************
  *  error codes list
  *  note : this API is still considered unstable
- *         it should not be used with a dynamic library
+ *         and shall not be used with a dynamic library.
  *         only static linking is allowed
  ******************************************/
 typedef enum {
-  ZSTD_error_no_error,
-  ZSTD_error_GENERIC,
-  ZSTD_error_prefix_unknown,
-  ZSTD_error_version_unsupported,
-  ZSTD_error_parameter_unknown,
-  ZSTD_error_frameParameter_unsupported,
-  ZSTD_error_frameParameter_unsupportedBy32bits,
-  ZSTD_error_frameParameter_windowTooLarge,
-  ZSTD_error_compressionParameter_unsupported,
-  ZSTD_error_compressionParameter_outOfBound,
-  ZSTD_error_init_missing,
-  ZSTD_error_memory_allocation,
-  ZSTD_error_stage_wrong,
-  ZSTD_error_dstSize_tooSmall,
-  ZSTD_error_srcSize_wrong,
-  ZSTD_error_corruption_detected,
-  ZSTD_error_checksum_wrong,
-  ZSTD_error_tableLog_tooLarge,
-  ZSTD_error_maxSymbolValue_tooLarge,
-  ZSTD_error_maxSymbolValue_tooSmall,
-  ZSTD_error_dictionary_corrupted,
-  ZSTD_error_dictionary_wrong,
-  ZSTD_error_dictionaryCreation_failed,
-  ZSTD_error_frameIndex_tooLarge,
-  ZSTD_error_seekableIO,
-  ZSTD_error_maxCode
+  ZSTD_error_no_error = 0,
+  ZSTD_error_GENERIC  = 1,
+  ZSTD_error_prefix_unknown                = 10,
+  ZSTD_error_version_unsupported           = 12,
+  ZSTD_error_frameParameter_unsupported    = 14,
+  ZSTD_error_frameParameter_windowTooLarge = 16,
+  ZSTD_error_corruption_detected = 20,
+  ZSTD_error_checksum_wrong      = 22,
+  ZSTD_error_dictionary_corrupted      = 30,
+  ZSTD_error_dictionary_wrong          = 32,
+  ZSTD_error_dictionaryCreation_failed = 34,
+  ZSTD_error_parameter_unsupported   = 40,
+  ZSTD_error_parameter_outOfBound    = 42,
+  ZSTD_error_tableLog_tooLarge       = 44,
+  ZSTD_error_maxSymbolValue_tooLarge = 46,
+  ZSTD_error_maxSymbolValue_tooSmall = 48,
+  ZSTD_error_stage_wrong       = 60,
+  ZSTD_error_init_missing      = 62,
+  ZSTD_error_memory_allocation = 64,
+  ZSTD_error_dstSize_tooSmall = 70,
+  ZSTD_error_srcSize_wrong    = 72,
+  ZSTD_error_frameIndex_tooLarge = 100,
+  ZSTD_error_seekableIO          = 102,
+  ZSTD_error_maxCode = 120  /* never EVER use this value directly, it may change in future versions! Use ZSTD_isError() instead */
 } ZSTD_ErrorCode;
 
 /*! ZSTD_getErrorCode() :
     convert a `size_t` function result into a `ZSTD_ErrorCode` enum type,
     which can be used to compare with enum list published above */
 ZSTDERRORLIB_API ZSTD_ErrorCode ZSTD_getErrorCode(size_t functionResult);
-ZSTDERRORLIB_API const char* ZSTD_getErrorString(ZSTD_ErrorCode code);
+ZSTDERRORLIB_API const char* ZSTD_getErrorString(ZSTD_ErrorCode code);   /**< Same as ZSTD_getErrorName, but using a `ZSTD_ErrorCode` enum argument */
 
 
 #if defined (__cplusplus)
diff --git contrib/zstd/lib/common/zstd_internal.h contrib/zstd/lib/common/zstd_internal.h
index f2c4e6249fb8..2610528608d4 100644
--- contrib/zstd/lib/common/zstd_internal.h
+++ contrib/zstd/lib/common/zstd_internal.h
@@ -1,55 +1,28 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTD_CCOMMON_H_MODULE
 #define ZSTD_CCOMMON_H_MODULE
 
-/*-*******************************************************
-*  Compiler specifics
-*********************************************************/
-#ifdef _MSC_VER    /* Visual Studio */
-#  define FORCE_INLINE static __forceinline
-#  include <intrin.h>                    /* For Visual 2005 */
-#  pragma warning(disable : 4100)        /* disable: C4100: unreferenced formal parameter */
-#  pragma warning(disable : 4127)        /* disable: C4127: conditional expression is constant */
-#  pragma warning(disable : 4204)        /* disable: C4204: non-constant aggregate initializer */
-#  pragma warning(disable : 4324)        /* disable: C4324: padded structure */
-#else
-#  if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L   /* C99 */
-#    ifdef __GNUC__
-#      define FORCE_INLINE static inline __attribute__((always_inline))
-#    else
-#      define FORCE_INLINE static inline
-#    endif
-#  else
-#    define FORCE_INLINE static
-#  endif /* __STDC_VERSION__ */
-#endif
-
-#ifdef _MSC_VER
-#  define FORCE_NOINLINE static __declspec(noinline)
-#else
-#  ifdef __GNUC__
-#    define FORCE_NOINLINE static __attribute__((__noinline__))
-#  else
-#    define FORCE_NOINLINE static
-#  endif
-#endif
-
 
 /*-*************************************
 *  Dependencies
 ***************************************/
+#include "compiler.h"
 #include "mem.h"
 #include "error_private.h"
 #define ZSTD_STATIC_LINKING_ONLY
 #include "zstd.h"
+#define FSE_STATIC_LINKING_ONLY
+#include "fse.h"
+#define HUF_STATIC_LINKING_ONLY
+#include "huf.h"
 #ifndef XXH_STATIC_LINKING_ONLY
 #  define XXH_STATIC_LINKING_ONLY  /* XXH64_state_t */
 #endif
@@ -211,20 +184,6 @@ MEM_STATIC void ZSTD_wildcopy_e(void* dst, const void* src, void* dstEnd)   /* s
 *********************************************/
 typedef struct ZSTD_stats_s ZSTD_stats_t;
 
-typedef struct {
-    U32 off;
-    U32 len;
-} ZSTD_match_t;
-
-typedef struct {
-    U32 price;
-    U32 off;
-    U32 mlen;
-    U32 litlen;
-    U32 rep[ZSTD_REP_NUM];
-} ZSTD_optimal_t;
-
-
 typedef struct seqDef_s {
     U32 offset;
     U16 litLength;
@@ -242,13 +201,31 @@ typedef struct {
     BYTE* ofCode;
     U32   longLengthID;   /* 0 == no longLength; 1 == Lit.longLength; 2 == Match.longLength; */
     U32   longLengthPos;
-    /* opt */
-    ZSTD_optimal_t* priceTable;
-    ZSTD_match_t* matchTable;
-    U32* matchLengthFreq;
-    U32* litLengthFreq;
+    U32   rep[ZSTD_REP_NUM];
+    U32   repToConfirm[ZSTD_REP_NUM];
+} seqStore_t;
+
+typedef struct {
+    U32 off;
+    U32 len;
+} ZSTD_match_t;
+
+typedef struct {
+    U32 price;
+    U32 off;
+    U32 mlen;
+    U32 litlen;
+    U32 rep[ZSTD_REP_NUM];
+} ZSTD_optimal_t;
+
+typedef struct {
     U32* litFreq;
+    U32* litLengthFreq;
+    U32* matchLengthFreq;
     U32* offCodeFreq;
+    ZSTD_match_t* matchTable;
+    ZSTD_optimal_t* priceTable;
+
     U32  matchLengthSum;
     U32  matchSum;
     U32  litLengthSum;
@@ -264,7 +241,19 @@ typedef struct {
     U32  cachedPrice;
     U32  cachedLitLength;
     const BYTE* cachedLiterals;
-} seqStore_t;
+} optState_t;
+
+typedef struct {
+    U32 hufCTable[HUF_CTABLE_SIZE_U32(255)];
+    FSE_CTable offcodeCTable[FSE_CTABLE_SIZE_U32(OffFSELog, MaxOff)];
+    FSE_CTable matchlengthCTable[FSE_CTABLE_SIZE_U32(MLFSELog, MaxML)];
+    FSE_CTable litlengthCTable[FSE_CTABLE_SIZE_U32(LLFSELog, MaxLL)];
+    U32 workspace[HUF_WORKSPACE_SIZE_U32];
+    HUF_repeat hufCTable_repeatMode;
+    FSE_repeat offcode_repeatMode;
+    FSE_repeat matchlength_repeatMode;
+    FSE_repeat litlength_repeatMode;
+} ZSTD_entropyCTables_t;
 
 const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx);
 void ZSTD_seqToCodes(const seqStore_t* seqStorePtr);
@@ -331,4 +320,16 @@ size_t ZSTD_compressStream_generic(ZSTD_CStream* zcs,
 ZSTD_parameters ZSTD_getParamsFromCDict(const ZSTD_CDict* cdict);
 
 
+typedef struct {
+    blockType_e blockType;
+    U32 lastBlock;
+    U32 origSize;
+} blockProperties_t;
+
+/*! ZSTD_getcBlockSize() :
+*   Provides the size of compressed block from block header `src` */
+size_t ZSTD_getcBlockSize(const void* src, size_t srcSize,
+                          blockProperties_t* bpPtr);
+
+
 #endif   /* ZSTD_CCOMMON_H_MODULE */
diff --git contrib/zstd/lib/compress/fse_compress.c contrib/zstd/lib/compress/fse_compress.c
index 26e8052ddcce..cc9fa73514ad 100644
--- contrib/zstd/lib/compress/fse_compress.c
+++ contrib/zstd/lib/compress/fse_compress.c
@@ -32,27 +32,6 @@
     - Public forum : https://groups.google.com/forum/#!forum/lz4c
 ****************************************************************** */
 
-/* **************************************************************
-*  Compiler specifics
-****************************************************************/
-#ifdef _MSC_VER    /* Visual Studio */
-#  define FORCE_INLINE static __forceinline
-#  include <intrin.h>                    /* For Visual 2005 */
-#  pragma warning(disable : 4127)        /* disable: C4127: conditional expression is constant */
-#  pragma warning(disable : 4214)        /* disable: C4214: non-int bitfields */
-#else
-#  if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L   /* C99 */
-#    ifdef __GNUC__
-#      define FORCE_INLINE static inline __attribute__((always_inline))
-#    else
-#      define FORCE_INLINE static inline
-#    endif
-#  else
-#    define FORCE_INLINE static
-#  endif /* __STDC_VERSION__ */
-#endif
-
-
 /* **************************************************************
 *  Includes
 ****************************************************************/
@@ -60,13 +39,16 @@
 #include <string.h>     /* memcpy, memset */
 #include <stdio.h>      /* printf (debug) */
 #include "bitstream.h"
+#include "compiler.h"
 #define FSE_STATIC_LINKING_ONLY
 #include "fse.h"
+#include "error_private.h"
 
 
 /* **************************************************************
 *  Error Management
 ****************************************************************/
+#define FSE_isError ERR_isError
 #define FSE_STATIC_ASSERT(c) { enum { FSE_static_assert = 1/(int)(!!(c)) }; }   /* use only *after* variable declarations */
 
 
@@ -781,7 +763,7 @@ size_t FSE_compress_usingCTable (void* dst, size_t dstSize,
 
 size_t FSE_compressBound(size_t size) { return FSE_COMPRESSBOUND(size); }
 
-#define CHECK_V_F(e, f) size_t const e = f; if (ERR_isError(e)) return f
+#define CHECK_V_F(e, f) size_t const e = f; if (ERR_isError(e)) return e
 #define CHECK_F(f)   { CHECK_V_F(_var_err__, f); }
 
 /* FSE_compress_wksp() :
diff --git contrib/zstd/lib/compress/huf_compress.c contrib/zstd/lib/compress/huf_compress.c
index 7af0789a9c58..2a47c1820526 100644
--- contrib/zstd/lib/compress/huf_compress.c
+++ contrib/zstd/lib/compress/huf_compress.c
@@ -50,13 +50,15 @@
 #include "fse.h"        /* header compression */
 #define HUF_STATIC_LINKING_ONLY
 #include "huf.h"
+#include "error_private.h"
 
 
 /* **************************************************************
 *  Error Management
 ****************************************************************/
+#define HUF_isError ERR_isError
 #define HUF_STATIC_ASSERT(c) { enum { HUF_static_assert = 1/(int)(!!(c)) }; }   /* use only *after* variable declarations */
-#define CHECK_V_F(e, f) size_t const e = f; if (ERR_isError(e)) return f
+#define CHECK_V_F(e, f) size_t const e = f; if (ERR_isError(e)) return e
 #define CHECK_F(f)   { CHECK_V_F(_var_err__, f); }
 
 
@@ -436,7 +438,7 @@ static void HUF_encodeSymbol(BIT_CStream_t* bitCPtr, U32 symbol, const HUF_CElt*
 
 size_t HUF_compressBound(size_t size) { return HUF_COMPRESSBOUND(size); }
 
-#define HUF_FLUSHBITS(s)  (fast ? BIT_flushBitsFast(s) : BIT_flushBits(s))
+#define HUF_FLUSHBITS(s)  BIT_flushBits(s)
 
 #define HUF_FLUSHBITS_1(stream) \
     if (sizeof((stream)->bitContainer)*8 < HUF_TABLELOG_MAX*2+7) HUF_FLUSHBITS(stream)
@@ -451,7 +453,6 @@ size_t HUF_compress1X_usingCTable(void* dst, size_t dstSize, const void* src, si
     BYTE* const oend = ostart + dstSize;
     BYTE* op = ostart;
     size_t n;
-    const unsigned fast = (dstSize >= HUF_BLOCKBOUND(srcSize));
     BIT_CStream_t bitC;
 
     /* init */
diff --git contrib/zstd/lib/compress/zstd_compress.c contrib/zstd/lib/compress/zstd_compress.c
index 9300357f2d38..0322c03eb316 100644
--- contrib/zstd/lib/compress/zstd_compress.c
+++ contrib/zstd/lib/compress/zstd_compress.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -36,13 +36,6 @@ static const U32 g_searchStrength = 8;   /* control skip over incompressible dat
 #define HASH_READ_SIZE 8
 typedef enum { ZSTDcs_created=0, ZSTDcs_init, ZSTDcs_ongoing, ZSTDcs_ending } ZSTD_compressionStage_e;
 
-/* entropy tables always have same size */
-static size_t const hufCTable_size = HUF_CTABLE_SIZE(255);
-static size_t const litlengthCTable_size = FSE_CTABLE_SIZE(LLFSELog, MaxLL);
-static size_t const offcodeCTable_size = FSE_CTABLE_SIZE(OffFSELog, MaxOff);
-static size_t const matchlengthCTable_size = FSE_CTABLE_SIZE(MLFSELog, MaxML);
-static size_t const entropyScratchSpace_size = HUF_WORKSPACE_SIZE;
-
 
 /*-*************************************
 *  Helper functions
@@ -89,8 +82,6 @@ struct ZSTD_CCtx_s {
     U32   loadedDictEnd;    /* index of end of dictionary */
     U32   forceWindow;      /* force back-references to respect limit of 1<<wLog, even for dictionary */
     ZSTD_compressionStage_e stage;
-    U32   rep[ZSTD_REP_NUM];
-    U32   repToConfirm[ZSTD_REP_NUM];
     U32   dictID;
     int   compressionLevel;
     ZSTD_parameters requestedParams;
@@ -105,16 +96,11 @@ struct ZSTD_CCtx_s {
     size_t staticSize;
 
     seqStore_t seqStore;    /* sequences storage ptrs */
+    optState_t optState;
     U32* hashTable;
     U32* hashTable3;
     U32* chainTable;
-    HUF_repeat hufCTable_repeatMode;
-    HUF_CElt* hufCTable;
-    U32 fseCTables_ready;
-    FSE_CTable* offcodeCTable;
-    FSE_CTable* matchlengthCTable;
-    FSE_CTable* litlengthCTable;
-    unsigned* entropyScratchSpace;
+    ZSTD_entropyCTables_t* entropy;
 
     /* streaming */
     char*  inBuff;
@@ -174,19 +160,9 @@ ZSTD_CCtx* ZSTD_initStaticCCtx(void *workspace, size_t workspaceSize)
     cctx->workSpaceSize = workspaceSize - sizeof(ZSTD_CCtx);
 
     /* entropy space (never moves) */
-    /* note : this code should be shared with resetCCtx, rather than copy/pasted */
-    {   void* ptr = cctx->workSpace;
-        cctx->hufCTable = (HUF_CElt*)ptr;
-        ptr = (char*)cctx->hufCTable + hufCTable_size;
-        cctx->offcodeCTable = (FSE_CTable*) ptr;
-        ptr = (char*)ptr + offcodeCTable_size;
-        cctx->matchlengthCTable = (FSE_CTable*) ptr;
-        ptr = (char*)ptr + matchlengthCTable_size;
-        cctx->litlengthCTable = (FSE_CTable*) ptr;
-        ptr = (char*)ptr + litlengthCTable_size;
-        assert(((size_t)ptr & 3) == 0);   /* ensure correct alignment */
-        cctx->entropyScratchSpace = (unsigned*) ptr;
-    }
+    if (cctx->workSpaceSize < sizeof(ZSTD_entropyCTables_t)) return NULL;
+    assert(((size_t)cctx->workSpace & 7) == 0);   /* ensure correct alignment */
+    cctx->entropy = (ZSTD_entropyCTables_t*)cctx->workSpace;
 
     return cctx;
 }
@@ -237,7 +213,7 @@ size_t ZSTD_setCCtxParameter(ZSTD_CCtx* cctx, ZSTD_CCtxParameter param, unsigned
     ZSTD_STATIC_ASSERT(ZSTD_dm_auto==0);
     ZSTD_STATIC_ASSERT(ZSTD_dm_rawContent==1);
     case ZSTD_p_forceRawDict : cctx->dictMode = (ZSTD_dictMode_e)(value>0); return 0;
-    default: return ERROR(parameter_unknown);
+    default: return ERROR(parameter_unsupported);
     }
 }
 
@@ -251,9 +227,9 @@ static void ZSTD_cLevelToCParams(ZSTD_CCtx* cctx)
     cctx->compressionLevel = ZSTD_CLEVEL_CUSTOM;
 }
 
-#define CLAMPCHECK(val,min,max) {                       \
-    if (((val)<(min)) | ((val)>(max))) {                \
-        return ERROR(compressionParameter_outOfBound);  \
+#define CLAMPCHECK(val,min,max) {            \
+    if (((val)<(min)) | ((val)>(max))) {     \
+        return ERROR(parameter_outOfBound);  \
 }   }
 
 size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned value)
@@ -349,7 +325,7 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v
         /* restrict dictionary mode, to "rawContent" or "fullDict" only */
         ZSTD_STATIC_ASSERT((U32)ZSTD_dm_fullDict > (U32)ZSTD_dm_rawContent);
         if (value > (unsigned)ZSTD_dm_fullDict)
-            return ERROR(compressionParameter_outOfBound);
+            return ERROR(parameter_outOfBound);
         cctx->dictMode = (ZSTD_dictMode_e)value;
         return 0;
 
@@ -370,31 +346,31 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v
         if (value==0) return 0;
         DEBUGLOG(5, " setting nbThreads : %u", value);
 #ifndef ZSTD_MULTITHREAD
-        if (value > 1) return ERROR(compressionParameter_unsupported);
+        if (value > 1) return ERROR(parameter_unsupported);
 #endif
         if ((value>1) && (cctx->nbThreads != value)) {
             if (cctx->staticSize)  /* MT not compatible with static alloc */
-                return ERROR(compressionParameter_unsupported);
+                return ERROR(parameter_unsupported);
             ZSTDMT_freeCCtx(cctx->mtctx);
             cctx->nbThreads = 1;
-            cctx->mtctx = ZSTDMT_createCCtx(value);
+            cctx->mtctx = ZSTDMT_createCCtx_advanced(value, cctx->customMem);
             if (cctx->mtctx == NULL) return ERROR(memory_allocation);
         }
         cctx->nbThreads = value;
         return 0;
 
     case ZSTD_p_jobSize:
-        if (cctx->nbThreads <= 1) return ERROR(compressionParameter_unsupported);
+        if (cctx->nbThreads <= 1) return ERROR(parameter_unsupported);
         assert(cctx->mtctx != NULL);
         return ZSTDMT_setMTCtxParameter(cctx->mtctx, ZSTDMT_p_sectionSize, value);
 
     case ZSTD_p_overlapSizeLog:
         DEBUGLOG(5, " setting overlap with nbThreads == %u", cctx->nbThreads);
-        if (cctx->nbThreads <= 1) return ERROR(compressionParameter_unsupported);
+        if (cctx->nbThreads <= 1) return ERROR(parameter_unsupported);
         assert(cctx->mtctx != NULL);
         return ZSTDMT_setMTCtxParameter(cctx->mtctx, ZSTDMT_p_overlapSectionLog, value);
 
-    default: return ERROR(parameter_unknown);
+    default: return ERROR(parameter_unsupported);
     }
 }
 
@@ -474,7 +450,8 @@ size_t ZSTD_checkCParams(ZSTD_compressionParameters cParams)
     CLAMPCHECK(cParams.searchLog, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
     CLAMPCHECK(cParams.searchLength, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
     CLAMPCHECK(cParams.targetLength, ZSTD_TARGETLENGTH_MIN, ZSTD_TARGETLENGTH_MAX);
-    if ((U32)(cParams.strategy) > (U32)ZSTD_btultra) return ERROR(compressionParameter_unsupported);
+    if ((U32)(cParams.strategy) > (U32)ZSTD_btultra)
+        return ERROR(parameter_unsupported);
     return 0;
 }
 
@@ -551,9 +528,7 @@ size_t ZSTD_estimateCCtxSize_advanced(ZSTD_compressionParameters cParams)
     size_t const hSize = ((size_t)1) << cParams.hashLog;
     U32    const hashLog3 = (cParams.searchLength>3) ? 0 : MIN(ZSTD_HASHLOG3_MAX, cParams.windowLog);
     size_t const h3Size = ((size_t)1) << hashLog3;
-    size_t const entropySpace = hufCTable_size + litlengthCTable_size
-                              + offcodeCTable_size + matchlengthCTable_size
-                              + entropyScratchSpace_size;
+    size_t const entropySpace = sizeof(ZSTD_entropyCTables_t);
     size_t const tableSpace = (chainSize + hSize + h3Size) * sizeof(U32);
 
     size_t const optBudget = ((MaxML+1) + (MaxLL+1) + (MaxOff+1) + (1<<Litbits))*sizeof(U32)
@@ -620,8 +595,8 @@ static size_t ZSTD_continueCCtx(ZSTD_CCtx* cctx, ZSTD_parameters params, U64 ple
     cctx->stage = ZSTDcs_init;
     cctx->dictID = 0;
     cctx->loadedDictEnd = 0;
-    { int i; for (i=0; i<ZSTD_REP_NUM; i++) cctx->rep[i] = repStartValue[i]; }
-    cctx->seqStore.litLengthSum = 0;  /* force reset of btopt stats */
+    { int i; for (i=0; i<ZSTD_REP_NUM; i++) cctx->seqStore.rep[i] = repStartValue[i]; }
+    cctx->optState.litLengthSum = 0;  /* force reset of btopt stats */
     XXH64_reset(&cctx->xxhState, 0);
     return 0;
 }
@@ -641,8 +616,10 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
     if (crp == ZSTDcrp_continue) {
         if (ZSTD_equivalentParams(params.cParams, zc->appliedParams.cParams)) {
             DEBUGLOG(5, "ZSTD_equivalentParams()==1");
-            zc->fseCTables_ready = 0;
-            zc->hufCTable_repeatMode = HUF_repeat_none;
+            zc->entropy->hufCTable_repeatMode = HUF_repeat_none;
+            zc->entropy->offcode_repeatMode = FSE_repeat_none;
+            zc->entropy->matchlength_repeatMode = FSE_repeat_none;
+            zc->entropy->litlength_repeatMode = FSE_repeat_none;
             return ZSTD_continueCCtx(zc, params, pledgedSrcSize);
     }   }
 
@@ -662,9 +639,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
         void* ptr;
 
         /* Check if workSpace is large enough, alloc a new one if needed */
-        {   size_t const entropySpace = hufCTable_size + litlengthCTable_size
-                                  + offcodeCTable_size + matchlengthCTable_size
-                                  + entropyScratchSpace_size;
+        {   size_t const entropySpace = sizeof(ZSTD_entropyCTables_t);
             size_t const optPotentialSpace = ((MaxML+1) + (MaxLL+1) + (MaxOff+1) + (1<<Litbits)) * sizeof(U32)
                                   + (ZSTD_OPT_NUM+1) * (sizeof(ZSTD_match_t)+sizeof(ZSTD_optimal_t));
             size_t const optSpace = ( (params.cParams.strategy == ZSTD_btopt)
@@ -689,16 +664,9 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
                 ptr = zc->workSpace;
 
                 /* entropy space */
-                zc->hufCTable = (HUF_CElt*)ptr;
-                ptr = (char*)zc->hufCTable + hufCTable_size;  /* note : HUF_CElt* is incomplete type, size is estimated via macro */
-                zc->offcodeCTable = (FSE_CTable*) ptr;
-                ptr = (char*)ptr + offcodeCTable_size;
-                zc->matchlengthCTable = (FSE_CTable*) ptr;
-                ptr = (char*)ptr + matchlengthCTable_size;
-                zc->litlengthCTable = (FSE_CTable*) ptr;
-                ptr = (char*)ptr + litlengthCTable_size;
-                assert(((size_t)ptr & 3) == 0);   /* ensure correct alignment */
-                zc->entropyScratchSpace = (unsigned*) ptr;
+                assert(((size_t)zc->workSpace & 3) == 0);   /* ensure correct alignment */
+                assert(zc->workSpaceSize >= sizeof(ZSTD_entropyCTables_t));
+                zc->entropy = (ZSTD_entropyCTables_t*)zc->workSpace;
         }   }
 
         /* init params */
@@ -715,39 +683,35 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
         zc->stage = ZSTDcs_init;
         zc->dictID = 0;
         zc->loadedDictEnd = 0;
-        zc->fseCTables_ready = 0;
-        zc->hufCTable_repeatMode = HUF_repeat_none;
+        zc->entropy->hufCTable_repeatMode = HUF_repeat_none;
+        zc->entropy->offcode_repeatMode = FSE_repeat_none;
+        zc->entropy->matchlength_repeatMode = FSE_repeat_none;
+        zc->entropy->litlength_repeatMode = FSE_repeat_none;
         zc->nextToUpdate = 1;
         zc->nextSrc = NULL;
         zc->base = NULL;
         zc->dictBase = NULL;
         zc->dictLimit = 0;
         zc->lowLimit = 0;
-        { int i; for (i=0; i<ZSTD_REP_NUM; i++) zc->rep[i] = repStartValue[i]; }
+        { int i; for (i=0; i<ZSTD_REP_NUM; i++) zc->seqStore.rep[i] = repStartValue[i]; }
         zc->hashLog3 = hashLog3;
-        zc->seqStore.litLengthSum = 0;
+        zc->optState.litLengthSum = 0;
 
-        /* ensure entropy tables are close together at the beginning */
-        assert((void*)zc->hufCTable == zc->workSpace);
-        assert((char*)zc->offcodeCTable == (char*)zc->hufCTable + hufCTable_size);
-        assert((char*)zc->matchlengthCTable == (char*)zc->offcodeCTable + offcodeCTable_size);
-        assert((char*)zc->litlengthCTable == (char*)zc->matchlengthCTable + matchlengthCTable_size);
-        assert((char*)zc->entropyScratchSpace == (char*)zc->litlengthCTable + litlengthCTable_size);
-        ptr = (char*)zc->entropyScratchSpace + entropyScratchSpace_size;
+        ptr = zc->entropy + 1;
 
         /* opt parser space */
         if ((params.cParams.strategy == ZSTD_btopt) || (params.cParams.strategy == ZSTD_btultra)) {
             DEBUGLOG(5, "reserving optimal parser space");
             assert(((size_t)ptr & 3) == 0);  /* ensure ptr is properly aligned */
-            zc->seqStore.litFreq = (U32*)ptr;
-            zc->seqStore.litLengthFreq = zc->seqStore.litFreq + (1<<Litbits);
-            zc->seqStore.matchLengthFreq = zc->seqStore.litLengthFreq + (MaxLL+1);
-            zc->seqStore.offCodeFreq = zc->seqStore.matchLengthFreq + (MaxML+1);
-            ptr = zc->seqStore.offCodeFreq + (MaxOff+1);
-            zc->seqStore.matchTable = (ZSTD_match_t*)ptr;
-            ptr = zc->seqStore.matchTable + ZSTD_OPT_NUM+1;
-            zc->seqStore.priceTable = (ZSTD_optimal_t*)ptr;
-            ptr = zc->seqStore.priceTable + ZSTD_OPT_NUM+1;
+            zc->optState.litFreq = (U32*)ptr;
+            zc->optState.litLengthFreq = zc->optState.litFreq + (1<<Litbits);
+            zc->optState.matchLengthFreq = zc->optState.litLengthFreq + (MaxLL+1);
+            zc->optState.offCodeFreq = zc->optState.matchLengthFreq + (MaxML+1);
+            ptr = zc->optState.offCodeFreq + (MaxOff+1);
+            zc->optState.matchTable = (ZSTD_match_t*)ptr;
+            ptr = zc->optState.matchTable + ZSTD_OPT_NUM+1;
+            zc->optState.priceTable = (ZSTD_optimal_t*)ptr;
+            ptr = zc->optState.priceTable + ZSTD_OPT_NUM+1;
         }
 
         /* table Space */
@@ -783,7 +747,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
  *        do not use with extDict variant ! */
 void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx) {
     int i;
-    for (i=0; i<ZSTD_REP_NUM; i++) cctx->rep[i] = 0;
+    for (i=0; i<ZSTD_REP_NUM; i++) cctx->seqStore.rep[i] = 0;
 }
 
 
@@ -830,16 +794,7 @@ static size_t ZSTD_copyCCtx_internal(ZSTD_CCtx* dstCCtx,
     dstCCtx->dictID       = srcCCtx->dictID;
 
     /* copy entropy tables */
-    dstCCtx->fseCTables_ready = srcCCtx->fseCTables_ready;
-    if (srcCCtx->fseCTables_ready) {
-        memcpy(dstCCtx->litlengthCTable, srcCCtx->litlengthCTable, litlengthCTable_size);
-        memcpy(dstCCtx->matchlengthCTable, srcCCtx->matchlengthCTable, matchlengthCTable_size);
-        memcpy(dstCCtx->offcodeCTable, srcCCtx->offcodeCTable, offcodeCTable_size);
-    }
-    dstCCtx->hufCTable_repeatMode = srcCCtx->hufCTable_repeatMode;
-    if (srcCCtx->hufCTable_repeatMode) {
-        memcpy(dstCCtx->hufCTable, srcCCtx->hufCTable, hufCTable_size);
-    }
+    memcpy(dstCCtx->entropy, srcCCtx->entropy, sizeof(ZSTD_entropyCTables_t));
 
     return 0;
 }
@@ -956,7 +911,8 @@ static size_t ZSTD_compressRleLiteralsBlock (void* dst, size_t dstCapacity, cons
 
 static size_t ZSTD_minGain(size_t srcSize) { return (srcSize >> 6) + 2; }
 
-static size_t ZSTD_compressLiterals (ZSTD_CCtx* zc,
+static size_t ZSTD_compressLiterals (ZSTD_entropyCTables_t * entropy,
+                                     ZSTD_strategy strategy,
                                      void* dst, size_t dstCapacity,
                                const void* src, size_t srcSize)
 {
@@ -970,28 +926,28 @@ static size_t ZSTD_compressLiterals (ZSTD_CCtx* zc,
 
     /* small ? don't even attempt compression (speed opt) */
 #   define LITERAL_NOENTROPY 63
-    {   size_t const minLitSize = zc->hufCTable_repeatMode == HUF_repeat_valid ? 6 : LITERAL_NOENTROPY;
+    {   size_t const minLitSize = entropy->hufCTable_repeatMode == HUF_repeat_valid ? 6 : LITERAL_NOENTROPY;
         if (srcSize <= minLitSize) return ZSTD_noCompressLiterals(dst, dstCapacity, src, srcSize);
     }
 
     if (dstCapacity < lhSize+1) return ERROR(dstSize_tooSmall);   /* not enough space for compression */
-    {   HUF_repeat repeat = zc->hufCTable_repeatMode;
-        int const preferRepeat = zc->appliedParams.cParams.strategy < ZSTD_lazy ? srcSize <= 1024 : 0;
+    {   HUF_repeat repeat = entropy->hufCTable_repeatMode;
+        int const preferRepeat = strategy < ZSTD_lazy ? srcSize <= 1024 : 0;
         if (repeat == HUF_repeat_valid && lhSize == 3) singleStream = 1;
         cLitSize = singleStream ? HUF_compress1X_repeat(ostart+lhSize, dstCapacity-lhSize, src, srcSize, 255, 11,
-                                      zc->entropyScratchSpace, entropyScratchSpace_size, zc->hufCTable, &repeat, preferRepeat)
+                                      entropy->workspace, sizeof(entropy->workspace), (HUF_CElt*)entropy->hufCTable, &repeat, preferRepeat)
                                 : HUF_compress4X_repeat(ostart+lhSize, dstCapacity-lhSize, src, srcSize, 255, 11,
-                                      zc->entropyScratchSpace, entropyScratchSpace_size, zc->hufCTable, &repeat, preferRepeat);
+                                      entropy->workspace, sizeof(entropy->workspace), (HUF_CElt*)entropy->hufCTable, &repeat, preferRepeat);
         if (repeat != HUF_repeat_none) { hType = set_repeat; }    /* reused the existing table */
-        else { zc->hufCTable_repeatMode = HUF_repeat_check; }       /* now have a table to reuse */
+        else { entropy->hufCTable_repeatMode = HUF_repeat_check; }       /* now have a table to reuse */
     }
 
-    if ((cLitSize==0) | (cLitSize >= srcSize - minGain)) {
-        zc->hufCTable_repeatMode = HUF_repeat_none;
+    if ((cLitSize==0) | (cLitSize >= srcSize - minGain) | ERR_isError(cLitSize)) {
+        entropy->hufCTable_repeatMode = HUF_repeat_none;
         return ZSTD_noCompressLiterals(dst, dstCapacity, src, srcSize);
     }
     if (cLitSize==1) {
-        zc->hufCTable_repeatMode = HUF_repeat_none;
+        entropy->hufCTable_repeatMode = HUF_repeat_none;
         return ZSTD_compressRleLiteralsBlock(dst, dstCapacity, src, srcSize);
     }
 
@@ -1062,17 +1018,154 @@ void ZSTD_seqToCodes(const seqStore_t* seqStorePtr)
         mlCodeTable[seqStorePtr->longLengthPos] = MaxML;
 }
 
-MEM_STATIC size_t ZSTD_compressSequences (ZSTD_CCtx* zc,
-                              void* dst, size_t dstCapacity,
-                              size_t srcSize)
+MEM_STATIC symbolEncodingType_e ZSTD_selectEncodingType(FSE_repeat* repeatMode,
+        size_t const mostFrequent, size_t nbSeq, U32 defaultNormLog)
+{
+#define MIN_SEQ_FOR_DYNAMIC_FSE   64
+#define MAX_SEQ_FOR_STATIC_FSE  1000
+
+    if ((mostFrequent == nbSeq) && (nbSeq > 2)) {
+        *repeatMode = FSE_repeat_check;
+        return set_rle;
+    }
+    if ((*repeatMode == FSE_repeat_valid) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
+        return set_repeat;
+    }
+    if ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (defaultNormLog-1)))) {
+        *repeatMode = FSE_repeat_valid;
+        return set_basic;
+    }
+    *repeatMode = FSE_repeat_check;
+    return set_compressed;
+}
+
+MEM_STATIC size_t ZSTD_buildCTable(void* dst, size_t dstCapacity,
+        FSE_CTable* CTable, U32 FSELog, symbolEncodingType_e type,
+        U32* count, U32 max,
+        BYTE const* codeTable, size_t nbSeq,
+        S16 const* defaultNorm, U32 defaultNormLog, U32 defaultMax,
+        void* workspace, size_t workspaceSize)
+{
+    BYTE* op = (BYTE*)dst;
+    BYTE const* const oend = op + dstCapacity;
+
+    switch (type) {
+    case set_rle:
+        *op = codeTable[0];
+        CHECK_F(FSE_buildCTable_rle(CTable, (BYTE)max));
+        return 1;
+    case set_repeat:
+        return 0;
+    case set_basic:
+        CHECK_F(FSE_buildCTable_wksp(CTable, defaultNorm, defaultMax, defaultNormLog, workspace, workspaceSize));
+        return 0;
+    case set_compressed: {
+        S16 norm[MaxSeq + 1];
+        size_t nbSeq_1 = nbSeq;
+        const U32 tableLog = FSE_optimalTableLog(FSELog, nbSeq, max);
+        if (count[codeTable[nbSeq-1]] > 1) {
+            count[codeTable[nbSeq-1]]--;
+            nbSeq_1--;
+        }
+        CHECK_F(FSE_normalizeCount(norm, tableLog, count, nbSeq_1, max));
+        {   size_t const NCountSize = FSE_writeNCount(op, oend - op, norm, max, tableLog);   /* overflow protected */
+            if (FSE_isError(NCountSize)) return NCountSize;
+            CHECK_F(FSE_buildCTable_wksp(CTable, norm, max, tableLog, workspace, workspaceSize));
+            return NCountSize;
+        }
+    }
+    default: return assert(0), ERROR(GENERIC);
+    }
+}
+
+MEM_STATIC size_t ZSTD_encodeSequences(void* dst, size_t dstCapacity,
+    FSE_CTable const* CTable_MatchLength, BYTE const* mlCodeTable,
+    FSE_CTable const* CTable_OffsetBits, BYTE const* ofCodeTable,
+    FSE_CTable const* CTable_LitLength, BYTE const* llCodeTable,
+    seqDef const* sequences, size_t nbSeq, int longOffsets)
+{
+    BIT_CStream_t blockStream;
+    FSE_CState_t  stateMatchLength;
+    FSE_CState_t  stateOffsetBits;
+    FSE_CState_t  stateLitLength;
+
+    CHECK_E(BIT_initCStream(&blockStream, dst, dstCapacity), dstSize_tooSmall); /* not enough space remaining */
+
+    /* first symbols */
+    FSE_initCState2(&stateMatchLength, CTable_MatchLength, mlCodeTable[nbSeq-1]);
+    FSE_initCState2(&stateOffsetBits,  CTable_OffsetBits,  ofCodeTable[nbSeq-1]);
+    FSE_initCState2(&stateLitLength,   CTable_LitLength,   llCodeTable[nbSeq-1]);
+    BIT_addBits(&blockStream, sequences[nbSeq-1].litLength, LL_bits[llCodeTable[nbSeq-1]]);
+    if (MEM_32bits()) BIT_flushBits(&blockStream);
+    BIT_addBits(&blockStream, sequences[nbSeq-1].matchLength, ML_bits[mlCodeTable[nbSeq-1]]);
+    if (MEM_32bits()) BIT_flushBits(&blockStream);
+    if (longOffsets) {
+        U32 const ofBits = ofCodeTable[nbSeq-1];
+        int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN-1);
+        if (extraBits) {
+            BIT_addBits(&blockStream, sequences[nbSeq-1].offset, extraBits);
+            BIT_flushBits(&blockStream);
+        }
+        BIT_addBits(&blockStream, sequences[nbSeq-1].offset >> extraBits,
+                    ofBits - extraBits);
+    } else {
+        BIT_addBits(&blockStream, sequences[nbSeq-1].offset, ofCodeTable[nbSeq-1]);
+    }
+    BIT_flushBits(&blockStream);
+
+    {   size_t n;
+        for (n=nbSeq-2 ; n<nbSeq ; n--) {      /* intentional underflow */
+            BYTE const llCode = llCodeTable[n];
+            BYTE const ofCode = ofCodeTable[n];
+            BYTE const mlCode = mlCodeTable[n];
+            U32  const llBits = LL_bits[llCode];
+            U32  const ofBits = ofCode;                                     /* 32b*/  /* 64b*/
+            U32  const mlBits = ML_bits[mlCode];
+                                                                            /* (7)*/  /* (7)*/
+            FSE_encodeSymbol(&blockStream, &stateOffsetBits, ofCode);       /* 15 */  /* 15 */
+            FSE_encodeSymbol(&blockStream, &stateMatchLength, mlCode);      /* 24 */  /* 24 */
+            if (MEM_32bits()) BIT_flushBits(&blockStream);                  /* (7)*/
+            FSE_encodeSymbol(&blockStream, &stateLitLength, llCode);        /* 16 */  /* 33 */
+            if (MEM_32bits() || (ofBits+mlBits+llBits >= 64-7-(LLFSELog+MLFSELog+OffFSELog)))
+                BIT_flushBits(&blockStream);                                /* (7)*/
+            BIT_addBits(&blockStream, sequences[n].litLength, llBits);
+            if (MEM_32bits() && ((llBits+mlBits)>24)) BIT_flushBits(&blockStream);
+            BIT_addBits(&blockStream, sequences[n].matchLength, mlBits);
+            if (MEM_32bits()) BIT_flushBits(&blockStream);                  /* (7)*/
+            if (longOffsets) {
+                int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN-1);
+                if (extraBits) {
+                    BIT_addBits(&blockStream, sequences[n].offset, extraBits);
+                    BIT_flushBits(&blockStream);                            /* (7)*/
+                }
+                BIT_addBits(&blockStream, sequences[n].offset >> extraBits,
+                            ofBits - extraBits);                            /* 31 */
+            } else {
+                BIT_addBits(&blockStream, sequences[n].offset, ofBits);     /* 31 */
+            }
+            BIT_flushBits(&blockStream);                                    /* (7)*/
+    }   }
+
+    FSE_flushCState(&blockStream, &stateMatchLength);
+    FSE_flushCState(&blockStream, &stateOffsetBits);
+    FSE_flushCState(&blockStream, &stateLitLength);
+
+    {   size_t const streamSize = BIT_closeCStream(&blockStream);
+        if (streamSize==0) return ERROR(dstSize_tooSmall);   /* not enough space */
+        return streamSize;
+    }
+}
+
+MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr,
+                              ZSTD_entropyCTables_t* entropy,
+                              ZSTD_compressionParameters const* cParams,
+                              void* dst, size_t dstCapacity)
 {
-    const int longOffsets = zc->appliedParams.cParams.windowLog > STREAM_ACCUMULATOR_MIN;
-    const seqStore_t* seqStorePtr = &(zc->seqStore);
+    const int longOffsets = cParams->windowLog > STREAM_ACCUMULATOR_MIN;
     U32 count[MaxSeq+1];
-    S16 norm[MaxSeq+1];
-    FSE_CTable* CTable_LitLength = zc->litlengthCTable;
-    FSE_CTable* CTable_OffsetBits = zc->offcodeCTable;
-    FSE_CTable* CTable_MatchLength = zc->matchlengthCTable;
+    FSE_CTable* CTable_LitLength = entropy->litlengthCTable;
+    FSE_CTable* CTable_OffsetBits = entropy->offcodeCTable;
+    FSE_CTable* CTable_MatchLength = entropy->matchlengthCTable;
     U32 LLtype, Offtype, MLtype;   /* compressed, raw or rle */
     const seqDef* const sequences = seqStorePtr->sequencesStart;
     const BYTE* const ofCodeTable = seqStorePtr->ofCode;
@@ -1083,13 +1176,16 @@ MEM_STATIC size_t ZSTD_compressSequences (ZSTD_CCtx* zc,
     BYTE* op = ostart;
     size_t const nbSeq = seqStorePtr->sequences - seqStorePtr->sequencesStart;
     BYTE* seqHead;
-    BYTE scratchBuffer[1<<MAX(MLFSELog,LLFSELog)];
+
+    ZSTD_STATIC_ASSERT(sizeof(entropy->workspace) >= (1<<MAX(MLFSELog,LLFSELog)));
 
     /* Compress literals */
     {   const BYTE* const literals = seqStorePtr->litStart;
         size_t const litSize = seqStorePtr->lit - literals;
-        size_t const cSize = ZSTD_compressLiterals(zc, op, dstCapacity, literals, litSize);
-        if (ZSTD_isError(cSize)) return cSize;
+        size_t const cSize = ZSTD_compressLiterals(
+                entropy, cParams->strategy, op, dstCapacity, literals, litSize);
+        if (ZSTD_isError(cSize))
+          return cSize;
         op += cSize;
     }
 
@@ -1098,177 +1194,89 @@ MEM_STATIC size_t ZSTD_compressSequences (ZSTD_CCtx* zc,
     if (nbSeq < 0x7F) *op++ = (BYTE)nbSeq;
     else if (nbSeq < LONGNBSEQ) op[0] = (BYTE)((nbSeq>>8) + 0x80), op[1] = (BYTE)nbSeq, op+=2;
     else op[0]=0xFF, MEM_writeLE16(op+1, (U16)(nbSeq - LONGNBSEQ)), op+=3;
-    if (nbSeq==0) goto _check_compressibility;
+    if (nbSeq==0) return op - ostart;
 
     /* seqHead : flags for FSE encoding type */
     seqHead = op++;
 
-#define MIN_SEQ_FOR_DYNAMIC_FSE   64
-#define MAX_SEQ_FOR_STATIC_FSE  1000
-
     /* convert length/distances into codes */
     ZSTD_seqToCodes(seqStorePtr);
-
     /* CTable for Literal Lengths */
     {   U32 max = MaxLL;
-        size_t const mostFrequent = FSE_countFast_wksp(count, &max, llCodeTable, nbSeq, zc->entropyScratchSpace);
-        if ((mostFrequent == nbSeq) && (nbSeq > 2)) {
-            *op++ = llCodeTable[0];
-            FSE_buildCTable_rle(CTable_LitLength, (BYTE)max);
-            LLtype = set_rle;
-        } else if ((zc->fseCTables_ready) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
-            LLtype = set_repeat;
-        } else if ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (LL_defaultNormLog-1)))) {
-            FSE_buildCTable_wksp(CTable_LitLength, LL_defaultNorm, MaxLL, LL_defaultNormLog, scratchBuffer, sizeof(scratchBuffer));
-            LLtype = set_basic;
-        } else {
-            size_t nbSeq_1 = nbSeq;
-            const U32 tableLog = FSE_optimalTableLog(LLFSELog, nbSeq, max);
-            if (count[llCodeTable[nbSeq-1]]>1) { count[llCodeTable[nbSeq-1]]--; nbSeq_1--; }
-            FSE_normalizeCount(norm, tableLog, count, nbSeq_1, max);
-            { size_t const NCountSize = FSE_writeNCount(op, oend-op, norm, max, tableLog);   /* overflow protected */
-              if (FSE_isError(NCountSize)) return NCountSize;
-              op += NCountSize; }
-            FSE_buildCTable_wksp(CTable_LitLength, norm, max, tableLog, scratchBuffer, sizeof(scratchBuffer));
-            LLtype = set_compressed;
+        size_t const mostFrequent = FSE_countFast_wksp(count, &max, llCodeTable, nbSeq, entropy->workspace);
+        LLtype = ZSTD_selectEncodingType(&entropy->litlength_repeatMode, mostFrequent, nbSeq, LL_defaultNormLog);
+        {   size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_LitLength, LLFSELog, (symbolEncodingType_e)LLtype,
+                    count, max, llCodeTable, nbSeq, LL_defaultNorm, LL_defaultNormLog, MaxLL,
+                    entropy->workspace, sizeof(entropy->workspace));
+            if (ZSTD_isError(countSize)) return countSize;
+            op += countSize;
     }   }
-
     /* CTable for Offsets */
     {   U32 max = MaxOff;
-        size_t const mostFrequent = FSE_countFast_wksp(count, &max, ofCodeTable, nbSeq, zc->entropyScratchSpace);
-        if ((mostFrequent == nbSeq) && (nbSeq > 2)) {
-            *op++ = ofCodeTable[0];
-            FSE_buildCTable_rle(CTable_OffsetBits, (BYTE)max);
-            Offtype = set_rle;
-        } else if ((zc->fseCTables_ready) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
-            Offtype = set_repeat;
-        } else if ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (OF_defaultNormLog-1)))) {
-            FSE_buildCTable_wksp(CTable_OffsetBits, OF_defaultNorm, MaxOff, OF_defaultNormLog, scratchBuffer, sizeof(scratchBuffer));
-            Offtype = set_basic;
-        } else {
-            size_t nbSeq_1 = nbSeq;
-            const U32 tableLog = FSE_optimalTableLog(OffFSELog, nbSeq, max);
-            if (count[ofCodeTable[nbSeq-1]]>1) { count[ofCodeTable[nbSeq-1]]--; nbSeq_1--; }
-            FSE_normalizeCount(norm, tableLog, count, nbSeq_1, max);
-            { size_t const NCountSize = FSE_writeNCount(op, oend-op, norm, max, tableLog);   /* overflow protected */
-              if (FSE_isError(NCountSize)) return NCountSize;
-              op += NCountSize; }
-            FSE_buildCTable_wksp(CTable_OffsetBits, norm, max, tableLog, scratchBuffer, sizeof(scratchBuffer));
-            Offtype = set_compressed;
+        size_t const mostFrequent = FSE_countFast_wksp(count, &max, ofCodeTable, nbSeq, entropy->workspace);
+        Offtype = ZSTD_selectEncodingType(&entropy->offcode_repeatMode, mostFrequent, nbSeq, OF_defaultNormLog);
+        {   size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_OffsetBits, OffFSELog, (symbolEncodingType_e)Offtype,
+                    count, max, ofCodeTable, nbSeq, OF_defaultNorm, OF_defaultNormLog, MaxOff,
+                    entropy->workspace, sizeof(entropy->workspace));
+            if (ZSTD_isError(countSize)) return countSize;
+            op += countSize;
     }   }
-
     /* CTable for MatchLengths */
     {   U32 max = MaxML;
-        size_t const mostFrequent = FSE_countFast_wksp(count, &max, mlCodeTable, nbSeq, zc->entropyScratchSpace);
-        if ((mostFrequent == nbSeq) && (nbSeq > 2)) {
-            *op++ = *mlCodeTable;
-            FSE_buildCTable_rle(CTable_MatchLength, (BYTE)max);
-            MLtype = set_rle;
-        } else if ((zc->fseCTables_ready) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
-            MLtype = set_repeat;
-        } else if ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (ML_defaultNormLog-1)))) {
-            FSE_buildCTable_wksp(CTable_MatchLength, ML_defaultNorm, MaxML, ML_defaultNormLog, scratchBuffer, sizeof(scratchBuffer));
-            MLtype = set_basic;
-        } else {
-            size_t nbSeq_1 = nbSeq;
-            const U32 tableLog = FSE_optimalTableLog(MLFSELog, nbSeq, max);
-            if (count[mlCodeTable[nbSeq-1]]>1) { count[mlCodeTable[nbSeq-1]]--; nbSeq_1--; }
-            FSE_normalizeCount(norm, tableLog, count, nbSeq_1, max);
-            { size_t const NCountSize = FSE_writeNCount(op, oend-op, norm, max, tableLog);   /* overflow protected */
-              if (FSE_isError(NCountSize)) return NCountSize;
-              op += NCountSize; }
-            FSE_buildCTable_wksp(CTable_MatchLength, norm, max, tableLog, scratchBuffer, sizeof(scratchBuffer));
-            MLtype = set_compressed;
+        size_t const mostFrequent = FSE_countFast_wksp(count, &max, mlCodeTable, nbSeq, entropy->workspace);
+        MLtype = ZSTD_selectEncodingType(&entropy->matchlength_repeatMode, mostFrequent, nbSeq, ML_defaultNormLog);
+        {   size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_MatchLength, MLFSELog, (symbolEncodingType_e)MLtype,
+                    count, max, mlCodeTable, nbSeq, ML_defaultNorm, ML_defaultNormLog, MaxML,
+                    entropy->workspace, sizeof(entropy->workspace));
+            if (ZSTD_isError(countSize)) return countSize;
+            op += countSize;
     }   }
 
     *seqHead = (BYTE)((LLtype<<6) + (Offtype<<4) + (MLtype<<2));
-    zc->fseCTables_ready = 0;
-
-    /* Encoding Sequences */
-    {   BIT_CStream_t blockStream;
-        FSE_CState_t  stateMatchLength;
-        FSE_CState_t  stateOffsetBits;
-        FSE_CState_t  stateLitLength;
-
-        CHECK_E(BIT_initCStream(&blockStream, op, oend-op), dstSize_tooSmall); /* not enough space remaining */
-
-        /* first symbols */
-        FSE_initCState2(&stateMatchLength, CTable_MatchLength, mlCodeTable[nbSeq-1]);
-        FSE_initCState2(&stateOffsetBits,  CTable_OffsetBits,  ofCodeTable[nbSeq-1]);
-        FSE_initCState2(&stateLitLength,   CTable_LitLength,   llCodeTable[nbSeq-1]);
-        BIT_addBits(&blockStream, sequences[nbSeq-1].litLength, LL_bits[llCodeTable[nbSeq-1]]);
-        if (MEM_32bits()) BIT_flushBits(&blockStream);
-        BIT_addBits(&blockStream, sequences[nbSeq-1].matchLength, ML_bits[mlCodeTable[nbSeq-1]]);
-        if (MEM_32bits()) BIT_flushBits(&blockStream);
-        if (longOffsets) {
-            U32 const ofBits = ofCodeTable[nbSeq-1];
-            int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN-1);
-            if (extraBits) {
-                BIT_addBits(&blockStream, sequences[nbSeq-1].offset, extraBits);
-                BIT_flushBits(&blockStream);
-            }
-            BIT_addBits(&blockStream, sequences[nbSeq-1].offset >> extraBits,
-                        ofBits - extraBits);
-        } else {
-            BIT_addBits(&blockStream, sequences[nbSeq-1].offset, ofCodeTable[nbSeq-1]);
-        }
-        BIT_flushBits(&blockStream);
-
-        {   size_t n;
-            for (n=nbSeq-2 ; n<nbSeq ; n--) {      /* intentional underflow */
-                BYTE const llCode = llCodeTable[n];
-                BYTE const ofCode = ofCodeTable[n];
-                BYTE const mlCode = mlCodeTable[n];
-                U32  const llBits = LL_bits[llCode];
-                U32  const ofBits = ofCode;                                     /* 32b*/  /* 64b*/
-                U32  const mlBits = ML_bits[mlCode];
-                                                                                /* (7)*/  /* (7)*/
-                FSE_encodeSymbol(&blockStream, &stateOffsetBits, ofCode);       /* 15 */  /* 15 */
-                FSE_encodeSymbol(&blockStream, &stateMatchLength, mlCode);      /* 24 */  /* 24 */
-                if (MEM_32bits()) BIT_flushBits(&blockStream);                  /* (7)*/
-                FSE_encodeSymbol(&blockStream, &stateLitLength, llCode);        /* 16 */  /* 33 */
-                if (MEM_32bits() || (ofBits+mlBits+llBits >= 64-7-(LLFSELog+MLFSELog+OffFSELog)))
-                    BIT_flushBits(&blockStream);                                /* (7)*/
-                BIT_addBits(&blockStream, sequences[n].litLength, llBits);
-                if (MEM_32bits() && ((llBits+mlBits)>24)) BIT_flushBits(&blockStream);
-                BIT_addBits(&blockStream, sequences[n].matchLength, mlBits);
-                if (MEM_32bits()) BIT_flushBits(&blockStream);                  /* (7)*/
-                if (longOffsets) {
-                    int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN-1);
-                    if (extraBits) {
-                        BIT_addBits(&blockStream, sequences[n].offset, extraBits);
-                        BIT_flushBits(&blockStream);                            /* (7)*/
-                    }
-                    BIT_addBits(&blockStream, sequences[n].offset >> extraBits,
-                                ofBits - extraBits);                            /* 31 */
-                } else {
-                    BIT_addBits(&blockStream, sequences[n].offset, ofBits);     /* 31 */
-                }
-                BIT_flushBits(&blockStream);                                    /* (7)*/
-        }   }
 
-        FSE_flushCState(&blockStream, &stateMatchLength);
-        FSE_flushCState(&blockStream, &stateOffsetBits);
-        FSE_flushCState(&blockStream, &stateLitLength);
+    {   size_t const streamSize = ZSTD_encodeSequences(op, oend - op,
+                CTable_MatchLength, mlCodeTable,
+                CTable_OffsetBits, ofCodeTable,
+                CTable_LitLength, llCodeTable,
+                sequences, nbSeq, longOffsets);
+        if (ZSTD_isError(streamSize)) return streamSize;
+        op += streamSize;
+    }
 
-        {   size_t const streamSize = BIT_closeCStream(&blockStream);
-            if (streamSize==0) return ERROR(dstSize_tooSmall);   /* not enough space */
-            op += streamSize;
-    }   }
+    return op - ostart;
+}
 
-    /* check compressibility */
-_check_compressibility:
-    {   size_t const minGain = ZSTD_minGain(srcSize);
-        size_t const maxCSize = srcSize - minGain;
-        if ((size_t)(op-ostart) >= maxCSize) {
-            zc->hufCTable_repeatMode = HUF_repeat_none;
-            return 0;
-    }   }
+MEM_STATIC size_t ZSTD_compressSequences(seqStore_t* seqStorePtr,
+                              ZSTD_entropyCTables_t* entropy,
+                              ZSTD_compressionParameters const* cParams,
+                              void* dst, size_t dstCapacity,
+                              size_t srcSize)
+{
+    size_t const cSize = ZSTD_compressSequences_internal(seqStorePtr, entropy, cParams,
+                                                         dst, dstCapacity);
+    size_t const minGain = ZSTD_minGain(srcSize);
+    size_t const maxCSize = srcSize - minGain;
+    /* If the srcSize <= dstCapacity, then there is enough space to write a
+     * raw uncompressed block. Since we ran out of space, the block must not
+     * be compressible, so fall back to a raw uncompressed block.
+     */
+    int const uncompressibleError = cSize == ERROR(dstSize_tooSmall) && srcSize <= dstCapacity;
+
+    if (ZSTD_isError(cSize) && !uncompressibleError)
+        return cSize;
+    /* Check compressibility */
+    if (cSize >= maxCSize || uncompressibleError) {
+        entropy->hufCTable_repeatMode = HUF_repeat_none;
+        entropy->offcode_repeatMode = FSE_repeat_none;
+        entropy->matchlength_repeatMode = FSE_repeat_none;
+        entropy->litlength_repeatMode = FSE_repeat_none;
+        return 0;
+    }
+    assert(!ZSTD_isError(cSize));
 
     /* confirm repcodes */
-    { int i; for (i=0; i<ZSTD_REP_NUM; i++) zc->rep[i] = zc->repToConfirm[i]; }
-
-    return op - ostart;
+    { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->rep[i] = seqStorePtr->repToConfirm[i]; }
+    return cSize;
 }
 
 
@@ -1475,7 +1483,7 @@ static void ZSTD_fillHashTable (ZSTD_CCtx* zc, const void* end, const U32 mls)
 }
 
 
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
 void ZSTD_compressBlock_fast_generic(ZSTD_CCtx* cctx,
                                const void* src, size_t srcSize,
                                const U32 mls)
@@ -1491,7 +1499,7 @@ void ZSTD_compressBlock_fast_generic(ZSTD_CCtx* cctx,
     const BYTE* const lowest = base + lowestIndex;
     const BYTE* const iend = istart + srcSize;
     const BYTE* const ilimit = iend - HASH_READ_SIZE;
-    U32 offset_1=cctx->rep[0], offset_2=cctx->rep[1];
+    U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
     U32 offsetSaved = 0;
 
     /* init */
@@ -1552,8 +1560,8 @@ void ZSTD_compressBlock_fast_generic(ZSTD_CCtx* cctx,
     }   }   }
 
     /* save reps for next block */
-    cctx->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
-    cctx->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
+    seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
+    seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
 
     /* Last Literals */
     {   size_t const lastLLSize = iend - anchor;
@@ -1601,7 +1609,7 @@ static void ZSTD_compressBlock_fast_extDict_generic(ZSTD_CCtx* ctx,
     const BYTE* const dictEnd = dictBase + dictLimit;
     const BYTE* const iend = istart + srcSize;
     const BYTE* const ilimit = iend - 8;
-    U32 offset_1=ctx->rep[0], offset_2=ctx->rep[1];
+    U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
 
     /* Search Loop */
     while (ip < ilimit) {  /* < instead of <=, because (ip+1) */
@@ -1667,7 +1675,7 @@ static void ZSTD_compressBlock_fast_extDict_generic(ZSTD_CCtx* ctx,
     }   }   }
 
     /* save reps for next block */
-    ctx->repToConfirm[0] = offset_1; ctx->repToConfirm[1] = offset_2;
+    seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
 
     /* Last Literals */
     {   size_t const lastLLSize = iend - anchor;
@@ -1718,7 +1726,7 @@ static void ZSTD_fillDoubleHashTable (ZSTD_CCtx* cctx, const void* end, const U3
 }
 
 
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
 void ZSTD_compressBlock_doubleFast_generic(ZSTD_CCtx* cctx,
                                  const void* src, size_t srcSize,
                                  const U32 mls)
@@ -1736,7 +1744,7 @@ void ZSTD_compressBlock_doubleFast_generic(ZSTD_CCtx* cctx,
     const BYTE* const lowest = base + lowestIndex;
     const BYTE* const iend = istart + srcSize;
     const BYTE* const ilimit = iend - HASH_READ_SIZE;
-    U32 offset_1=cctx->rep[0], offset_2=cctx->rep[1];
+    U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
     U32 offsetSaved = 0;
 
     /* init */
@@ -1823,8 +1831,8 @@ void ZSTD_compressBlock_doubleFast_generic(ZSTD_CCtx* cctx,
     }   }   }
 
     /* save reps for next block */
-    cctx->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
-    cctx->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
+    seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
+    seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
 
     /* Last Literals */
     {   size_t const lastLLSize = iend - anchor;
@@ -1873,7 +1881,7 @@ static void ZSTD_compressBlock_doubleFast_extDict_generic(ZSTD_CCtx* ctx,
     const BYTE* const dictEnd = dictBase + dictLimit;
     const BYTE* const iend = istart + srcSize;
     const BYTE* const ilimit = iend - 8;
-    U32 offset_1=ctx->rep[0], offset_2=ctx->rep[1];
+    U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
 
     /* Search Loop */
     while (ip < ilimit) {  /* < instead of <=, because (ip+1) */
@@ -1973,7 +1981,7 @@ static void ZSTD_compressBlock_doubleFast_extDict_generic(ZSTD_CCtx* ctx,
     }   }   }
 
     /* save reps for next block */
-    ctx->repToConfirm[0] = offset_1; ctx->repToConfirm[1] = offset_2;
+    seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
 
     /* Last Literals */
     {   size_t const lastLLSize = iend - anchor;
@@ -2276,7 +2284,7 @@ static size_t ZSTD_BtFindBestMatch_selectMLS_extDict (
 
 /* Update chains up to ip (excluded)
    Assumption : always within prefix (i.e. not within extDict) */
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
 U32 ZSTD_insertAndFindFirstIndex (ZSTD_CCtx* zc, const BYTE* ip, U32 mls)
 {
     U32* const hashTable  = zc->hashTable;
@@ -2300,7 +2308,7 @@ U32 ZSTD_insertAndFindFirstIndex (ZSTD_CCtx* zc, const BYTE* ip, U32 mls)
 
 
 /* inlining is important to hardwire a hot branch (template emulation) */
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
 size_t ZSTD_HcFindBestMatch_generic (
                         ZSTD_CCtx* zc,   /* Index table will be updated */
                         const BYTE* const ip, const BYTE* const iLimit,
@@ -2352,7 +2360,7 @@ size_t ZSTD_HcFindBestMatch_generic (
 }
 
 
-FORCE_INLINE size_t ZSTD_HcFindBestMatch_selectMLS (
+FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_selectMLS (
                         ZSTD_CCtx* zc,
                         const BYTE* ip, const BYTE* const iLimit,
                         size_t* offsetPtr,
@@ -2369,7 +2377,7 @@ FORCE_INLINE size_t ZSTD_HcFindBestMatch_selectMLS (
 }
 
 
-FORCE_INLINE size_t ZSTD_HcFindBestMatch_extDict_selectMLS (
+FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_extDict_selectMLS (
                         ZSTD_CCtx* zc,
                         const BYTE* ip, const BYTE* const iLimit,
                         size_t* offsetPtr,
@@ -2389,7 +2397,7 @@ FORCE_INLINE size_t ZSTD_HcFindBestMatch_extDict_selectMLS (
 /* *******************************
 *  Common parser - lazy strategy
 *********************************/
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
 void ZSTD_compressBlock_lazy_generic(ZSTD_CCtx* ctx,
                                      const void* src, size_t srcSize,
                                      const U32 searchMethod, const U32 depth)
@@ -2409,7 +2417,7 @@ void ZSTD_compressBlock_lazy_generic(ZSTD_CCtx* ctx,
                         size_t* offsetPtr,
                         U32 maxNbAttempts, U32 matchLengthSearch);
     searchMax_f const searchMax = searchMethod ? ZSTD_BtFindBestMatch_selectMLS : ZSTD_HcFindBestMatch_selectMLS;
-    U32 offset_1 = ctx->rep[0], offset_2 = ctx->rep[1], savedOffset=0;
+    U32 offset_1 = seqStorePtr->rep[0], offset_2 = seqStorePtr->rep[1], savedOffset=0;
 
     /* init */
     ip += (ip==base);
@@ -2519,8 +2527,8 @@ _storeSequence:
     }   }
 
     /* Save reps for next block */
-    ctx->repToConfirm[0] = offset_1 ? offset_1 : savedOffset;
-    ctx->repToConfirm[1] = offset_2 ? offset_2 : savedOffset;
+    seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : savedOffset;
+    seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : savedOffset;
 
     /* Last Literals */
     {   size_t const lastLLSize = iend - anchor;
@@ -2551,7 +2559,7 @@ static void ZSTD_compressBlock_greedy(ZSTD_CCtx* ctx, const void* src, size_t sr
 }
 
 
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
 void ZSTD_compressBlock_lazy_extDict_generic(ZSTD_CCtx* ctx,
                                      const void* src, size_t srcSize,
                                      const U32 searchMethod, const U32 depth)
@@ -2578,7 +2586,7 @@ void ZSTD_compressBlock_lazy_extDict_generic(ZSTD_CCtx* ctx,
                         U32 maxNbAttempts, U32 matchLengthSearch);
     searchMax_f searchMax = searchMethod ? ZSTD_BtFindBestMatch_selectMLS_extDict : ZSTD_HcFindBestMatch_extDict_selectMLS;
 
-    U32 offset_1 = ctx->rep[0], offset_2 = ctx->rep[1];
+    U32 offset_1 = seqStorePtr->rep[0], offset_2 = seqStorePtr->rep[1];
 
     /* init */
     ctx->nextToUpdate3 = ctx->nextToUpdate;
@@ -2714,7 +2722,7 @@ _storeSequence:
     }   }
 
     /* Save reps for next block */
-    ctx->repToConfirm[0] = offset_1; ctx->repToConfirm[1] = offset_2;
+    seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
 
     /* Last Literals */
     {   size_t const lastLLSize = iend - anchor;
@@ -2823,7 +2831,7 @@ static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc, void* dst, size_t dstCa
     if (current > zc->nextToUpdate + 384)
         zc->nextToUpdate = current - MIN(192, (U32)(current - zc->nextToUpdate - 384));   /* limited update after finding a very long match */
     blockCompressor(zc, src, srcSize);
-    return ZSTD_compressSequences(zc, dst, dstCapacity, srcSize);
+    return ZSTD_compressSequences(&zc->seqStore, zc->entropy, &zc->appliedParams.cParams, dst, dstCapacity, srcSize);
 }
 
 
@@ -3000,7 +3008,6 @@ static size_t ZSTD_compressContinue_internal (ZSTD_CCtx* cctx,
         return fhSize;
 }
 
-
 size_t ZSTD_compressContinue (ZSTD_CCtx* cctx,
                               void* dst, size_t dstCapacity,
                         const void* src, size_t srcSize)
@@ -3106,13 +3113,14 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
     const BYTE* const dictEnd = dictPtr + dictSize;
     short offcodeNCount[MaxOff+1];
     unsigned offcodeMaxValue = MaxOff;
-    BYTE scratchBuffer[1<<MAX(MLFSELog,LLFSELog)];
+
+    ZSTD_STATIC_ASSERT(sizeof(cctx->entropy->workspace) >= (1<<MAX(MLFSELog,LLFSELog)));
 
     dictPtr += 4;   /* skip magic number */
     cctx->dictID = cctx->appliedParams.fParams.noDictIDFlag ? 0 :  MEM_readLE32(dictPtr);
     dictPtr += 4;
 
-    {   size_t const hufHeaderSize = HUF_readCTable(cctx->hufCTable, 255, dictPtr, dictEnd-dictPtr);
+    {   size_t const hufHeaderSize = HUF_readCTable((HUF_CElt*)cctx->entropy->hufCTable, 255, dictPtr, dictEnd-dictPtr);
         if (HUF_isError(hufHeaderSize)) return ERROR(dictionary_corrupted);
         dictPtr += hufHeaderSize;
     }
@@ -3122,7 +3130,7 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
         if (FSE_isError(offcodeHeaderSize)) return ERROR(dictionary_corrupted);
         if (offcodeLog > OffFSELog) return ERROR(dictionary_corrupted);
         /* Defer checking offcodeMaxValue because we need to know the size of the dictionary content */
-        CHECK_E( FSE_buildCTable_wksp(cctx->offcodeCTable, offcodeNCount, offcodeMaxValue, offcodeLog, scratchBuffer, sizeof(scratchBuffer)),
+        CHECK_E( FSE_buildCTable_wksp(cctx->entropy->offcodeCTable, offcodeNCount, offcodeMaxValue, offcodeLog, cctx->entropy->workspace, sizeof(cctx->entropy->workspace)),
                  dictionary_corrupted);
         dictPtr += offcodeHeaderSize;
     }
@@ -3134,7 +3142,7 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
         if (matchlengthLog > MLFSELog) return ERROR(dictionary_corrupted);
         /* Every match length code must have non-zero probability */
         CHECK_F( ZSTD_checkDictNCount(matchlengthNCount, matchlengthMaxValue, MaxML));
-        CHECK_E( FSE_buildCTable_wksp(cctx->matchlengthCTable, matchlengthNCount, matchlengthMaxValue, matchlengthLog, scratchBuffer, sizeof(scratchBuffer)),
+        CHECK_E( FSE_buildCTable_wksp(cctx->entropy->matchlengthCTable, matchlengthNCount, matchlengthMaxValue, matchlengthLog, cctx->entropy->workspace, sizeof(cctx->entropy->workspace)),
                  dictionary_corrupted);
         dictPtr += matchlengthHeaderSize;
     }
@@ -3146,15 +3154,15 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
         if (litlengthLog > LLFSELog) return ERROR(dictionary_corrupted);
         /* Every literal length code must have non-zero probability */
         CHECK_F( ZSTD_checkDictNCount(litlengthNCount, litlengthMaxValue, MaxLL));
-        CHECK_E( FSE_buildCTable_wksp(cctx->litlengthCTable, litlengthNCount, litlengthMaxValue, litlengthLog, scratchBuffer, sizeof(scratchBuffer)),
+        CHECK_E( FSE_buildCTable_wksp(cctx->entropy->litlengthCTable, litlengthNCount, litlengthMaxValue, litlengthLog, cctx->entropy->workspace, sizeof(cctx->entropy->workspace)),
                  dictionary_corrupted);
         dictPtr += litlengthHeaderSize;
     }
 
     if (dictPtr+12 > dictEnd) return ERROR(dictionary_corrupted);
-    cctx->rep[0] = MEM_readLE32(dictPtr+0);
-    cctx->rep[1] = MEM_readLE32(dictPtr+4);
-    cctx->rep[2] = MEM_readLE32(dictPtr+8);
+    cctx->seqStore.rep[0] = MEM_readLE32(dictPtr+0);
+    cctx->seqStore.rep[1] = MEM_readLE32(dictPtr+4);
+    cctx->seqStore.rep[2] = MEM_readLE32(dictPtr+8);
     dictPtr += 12;
 
     {   size_t const dictContentSize = (size_t)(dictEnd - dictPtr);
@@ -3168,12 +3176,14 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
         /* All repCodes must be <= dictContentSize and != 0*/
         {   U32 u;
             for (u=0; u<3; u++) {
-                if (cctx->rep[u] == 0) return ERROR(dictionary_corrupted);
-                if (cctx->rep[u] > dictContentSize) return ERROR(dictionary_corrupted);
+                if (cctx->seqStore.rep[u] == 0) return ERROR(dictionary_corrupted);
+                if (cctx->seqStore.rep[u] > dictContentSize) return ERROR(dictionary_corrupted);
         }   }
 
-        cctx->fseCTables_ready = 1;
-        cctx->hufCTable_repeatMode = HUF_repeat_valid;
+        cctx->entropy->hufCTable_repeatMode = HUF_repeat_valid;
+        cctx->entropy->offcode_repeatMode = FSE_repeat_valid;
+        cctx->entropy->matchlength_repeatMode = FSE_repeat_valid;
+        cctx->entropy->litlength_repeatMode = FSE_repeat_valid;
         return ZSTD_loadDictionaryContent(cctx, dictPtr, dictContentSize);
     }
 }
diff --git contrib/zstd/lib/compress/zstd_opt.h contrib/zstd/lib/compress/zstd_opt.h
index e8e98915ea31..ae24732c7d84 100644
--- contrib/zstd/lib/compress/zstd_opt.h
+++ contrib/zstd/lib/compress/zstd_opt.h
@@ -1,10 +1,10 @@
-/**
- * Copyright (c) 2016-present, Przemyslaw Skibinski, Yann Collet, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -22,173 +22,173 @@
 /*-*************************************
 *  Price functions for optimal parser
 ***************************************/
-FORCE_INLINE void ZSTD_setLog2Prices(seqStore_t* ssPtr)
+static void ZSTD_setLog2Prices(optState_t* optPtr)
 {
-    ssPtr->log2matchLengthSum = ZSTD_highbit32(ssPtr->matchLengthSum+1);
-    ssPtr->log2litLengthSum = ZSTD_highbit32(ssPtr->litLengthSum+1);
-    ssPtr->log2litSum = ZSTD_highbit32(ssPtr->litSum+1);
-    ssPtr->log2offCodeSum = ZSTD_highbit32(ssPtr->offCodeSum+1);
-    ssPtr->factor = 1 + ((ssPtr->litSum>>5) / ssPtr->litLengthSum) + ((ssPtr->litSum<<1) / (ssPtr->litSum + ssPtr->matchSum));
+    optPtr->log2matchLengthSum = ZSTD_highbit32(optPtr->matchLengthSum+1);
+    optPtr->log2litLengthSum = ZSTD_highbit32(optPtr->litLengthSum+1);
+    optPtr->log2litSum = ZSTD_highbit32(optPtr->litSum+1);
+    optPtr->log2offCodeSum = ZSTD_highbit32(optPtr->offCodeSum+1);
+    optPtr->factor = 1 + ((optPtr->litSum>>5) / optPtr->litLengthSum) + ((optPtr->litSum<<1) / (optPtr->litSum + optPtr->matchSum));
 }
 
 
-MEM_STATIC void ZSTD_rescaleFreqs(seqStore_t* ssPtr, const BYTE* src, size_t srcSize)
+static void ZSTD_rescaleFreqs(optState_t* optPtr, const BYTE* src, size_t srcSize)
 {
     unsigned u;
 
-    ssPtr->cachedLiterals = NULL;
-    ssPtr->cachedPrice = ssPtr->cachedLitLength = 0;
-    ssPtr->staticPrices = 0;
+    optPtr->cachedLiterals = NULL;
+    optPtr->cachedPrice = optPtr->cachedLitLength = 0;
+    optPtr->staticPrices = 0;
 
-    if (ssPtr->litLengthSum == 0) {
-        if (srcSize <= 1024) ssPtr->staticPrices = 1;
+    if (optPtr->litLengthSum == 0) {
+        if (srcSize <= 1024) optPtr->staticPrices = 1;
 
-        assert(ssPtr->litFreq!=NULL);
+        assert(optPtr->litFreq!=NULL);
         for (u=0; u<=MaxLit; u++)
-            ssPtr->litFreq[u] = 0;
+            optPtr->litFreq[u] = 0;
         for (u=0; u<srcSize; u++)
-            ssPtr->litFreq[src[u]]++;
+            optPtr->litFreq[src[u]]++;
 
-        ssPtr->litSum = 0;
-        ssPtr->litLengthSum = MaxLL+1;
-        ssPtr->matchLengthSum = MaxML+1;
-        ssPtr->offCodeSum = (MaxOff+1);
-        ssPtr->matchSum = (ZSTD_LITFREQ_ADD<<Litbits);
+        optPtr->litSum = 0;
+        optPtr->litLengthSum = MaxLL+1;
+        optPtr->matchLengthSum = MaxML+1;
+        optPtr->offCodeSum = (MaxOff+1);
+        optPtr->matchSum = (ZSTD_LITFREQ_ADD<<Litbits);
 
         for (u=0; u<=MaxLit; u++) {
-            ssPtr->litFreq[u] = 1 + (ssPtr->litFreq[u]>>ZSTD_FREQ_DIV);
-            ssPtr->litSum += ssPtr->litFreq[u];
+            optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>ZSTD_FREQ_DIV);
+            optPtr->litSum += optPtr->litFreq[u];
         }
         for (u=0; u<=MaxLL; u++)
-            ssPtr->litLengthFreq[u] = 1;
+            optPtr->litLengthFreq[u] = 1;
         for (u=0; u<=MaxML; u++)
-            ssPtr->matchLengthFreq[u] = 1;
+            optPtr->matchLengthFreq[u] = 1;
         for (u=0; u<=MaxOff; u++)
-            ssPtr->offCodeFreq[u] = 1;
+            optPtr->offCodeFreq[u] = 1;
     } else {
-        ssPtr->matchLengthSum = 0;
-        ssPtr->litLengthSum = 0;
-        ssPtr->offCodeSum = 0;
-        ssPtr->matchSum = 0;
-        ssPtr->litSum = 0;
+        optPtr->matchLengthSum = 0;
+        optPtr->litLengthSum = 0;
+        optPtr->offCodeSum = 0;
+        optPtr->matchSum = 0;
+        optPtr->litSum = 0;
 
         for (u=0; u<=MaxLit; u++) {
-            ssPtr->litFreq[u] = 1 + (ssPtr->litFreq[u]>>(ZSTD_FREQ_DIV+1));
-            ssPtr->litSum += ssPtr->litFreq[u];
+            optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>(ZSTD_FREQ_DIV+1));
+            optPtr->litSum += optPtr->litFreq[u];
         }
         for (u=0; u<=MaxLL; u++) {
-            ssPtr->litLengthFreq[u] = 1 + (ssPtr->litLengthFreq[u]>>(ZSTD_FREQ_DIV+1));
-            ssPtr->litLengthSum += ssPtr->litLengthFreq[u];
+            optPtr->litLengthFreq[u] = 1 + (optPtr->litLengthFreq[u]>>(ZSTD_FREQ_DIV+1));
+            optPtr->litLengthSum += optPtr->litLengthFreq[u];
         }
         for (u=0; u<=MaxML; u++) {
-            ssPtr->matchLengthFreq[u] = 1 + (ssPtr->matchLengthFreq[u]>>ZSTD_FREQ_DIV);
-            ssPtr->matchLengthSum += ssPtr->matchLengthFreq[u];
-            ssPtr->matchSum += ssPtr->matchLengthFreq[u] * (u + 3);
+            optPtr->matchLengthFreq[u] = 1 + (optPtr->matchLengthFreq[u]>>ZSTD_FREQ_DIV);
+            optPtr->matchLengthSum += optPtr->matchLengthFreq[u];
+            optPtr->matchSum += optPtr->matchLengthFreq[u] * (u + 3);
         }
-        ssPtr->matchSum *= ZSTD_LITFREQ_ADD;
+        optPtr->matchSum *= ZSTD_LITFREQ_ADD;
         for (u=0; u<=MaxOff; u++) {
-            ssPtr->offCodeFreq[u] = 1 + (ssPtr->offCodeFreq[u]>>ZSTD_FREQ_DIV);
-            ssPtr->offCodeSum += ssPtr->offCodeFreq[u];
+            optPtr->offCodeFreq[u] = 1 + (optPtr->offCodeFreq[u]>>ZSTD_FREQ_DIV);
+            optPtr->offCodeSum += optPtr->offCodeFreq[u];
         }
     }
 
-    ZSTD_setLog2Prices(ssPtr);
+    ZSTD_setLog2Prices(optPtr);
 }
 
 
-FORCE_INLINE U32 ZSTD_getLiteralPrice(seqStore_t* ssPtr, U32 litLength, const BYTE* literals)
+static U32 ZSTD_getLiteralPrice(optState_t* optPtr, U32 litLength, const BYTE* literals)
 {
     U32 price, u;
 
-    if (ssPtr->staticPrices)
+    if (optPtr->staticPrices)
         return ZSTD_highbit32((U32)litLength+1) + (litLength*6);
 
     if (litLength == 0)
-        return ssPtr->log2litLengthSum - ZSTD_highbit32(ssPtr->litLengthFreq[0]+1);
+        return optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[0]+1);
 
     /* literals */
-    if (ssPtr->cachedLiterals == literals) {
-        U32 const additional = litLength - ssPtr->cachedLitLength;
-        const BYTE* literals2 = ssPtr->cachedLiterals + ssPtr->cachedLitLength;
-        price = ssPtr->cachedPrice + additional * ssPtr->log2litSum;
+    if (optPtr->cachedLiterals == literals) {
+        U32 const additional = litLength - optPtr->cachedLitLength;
+        const BYTE* literals2 = optPtr->cachedLiterals + optPtr->cachedLitLength;
+        price = optPtr->cachedPrice + additional * optPtr->log2litSum;
         for (u=0; u < additional; u++)
-            price -= ZSTD_highbit32(ssPtr->litFreq[literals2[u]]+1);
-        ssPtr->cachedPrice = price;
-        ssPtr->cachedLitLength = litLength;
+            price -= ZSTD_highbit32(optPtr->litFreq[literals2[u]]+1);
+        optPtr->cachedPrice = price;
+        optPtr->cachedLitLength = litLength;
     } else {
-        price = litLength * ssPtr->log2litSum;
+        price = litLength * optPtr->log2litSum;
         for (u=0; u < litLength; u++)
-            price -= ZSTD_highbit32(ssPtr->litFreq[literals[u]]+1);
+            price -= ZSTD_highbit32(optPtr->litFreq[literals[u]]+1);
 
         if (litLength >= 12) {
-            ssPtr->cachedLiterals = literals;
-            ssPtr->cachedPrice = price;
-            ssPtr->cachedLitLength = litLength;
+            optPtr->cachedLiterals = literals;
+            optPtr->cachedPrice = price;
+            optPtr->cachedLitLength = litLength;
         }
     }
 
     /* literal Length */
     {   const BYTE LL_deltaCode = 19;
         const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
-        price += LL_bits[llCode] + ssPtr->log2litLengthSum - ZSTD_highbit32(ssPtr->litLengthFreq[llCode]+1);
+        price += LL_bits[llCode] + optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[llCode]+1);
     }
 
     return price;
 }
 
 
-FORCE_INLINE U32 ZSTD_getPrice(seqStore_t* seqStorePtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength, const int ultra)
+FORCE_INLINE_TEMPLATE U32 ZSTD_getPrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength, const int ultra)
 {
     /* offset */
     U32 price;
     BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1);
 
-    if (seqStorePtr->staticPrices)
-        return ZSTD_getLiteralPrice(seqStorePtr, litLength, literals) + ZSTD_highbit32((U32)matchLength+1) + 16 + offCode;
+    if (optPtr->staticPrices)
+        return ZSTD_getLiteralPrice(optPtr, litLength, literals) + ZSTD_highbit32((U32)matchLength+1) + 16 + offCode;
 
-    price = offCode + seqStorePtr->log2offCodeSum - ZSTD_highbit32(seqStorePtr->offCodeFreq[offCode]+1);
+    price = offCode + optPtr->log2offCodeSum - ZSTD_highbit32(optPtr->offCodeFreq[offCode]+1);
     if (!ultra && offCode >= 20) price += (offCode-19)*2;
 
     /* match Length */
     {   const BYTE ML_deltaCode = 36;
         const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength];
-        price += ML_bits[mlCode] + seqStorePtr->log2matchLengthSum - ZSTD_highbit32(seqStorePtr->matchLengthFreq[mlCode]+1);
+        price += ML_bits[mlCode] + optPtr->log2matchLengthSum - ZSTD_highbit32(optPtr->matchLengthFreq[mlCode]+1);
     }
 
-    return price + ZSTD_getLiteralPrice(seqStorePtr, litLength, literals) + seqStorePtr->factor;
+    return price + ZSTD_getLiteralPrice(optPtr, litLength, literals) + optPtr->factor;
 }
 
 
-MEM_STATIC void ZSTD_updatePrice(seqStore_t* seqStorePtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength)
+static void ZSTD_updatePrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength)
 {
     U32 u;
 
     /* literals */
-    seqStorePtr->litSum += litLength*ZSTD_LITFREQ_ADD;
+    optPtr->litSum += litLength*ZSTD_LITFREQ_ADD;
     for (u=0; u < litLength; u++)
-        seqStorePtr->litFreq[literals[u]] += ZSTD_LITFREQ_ADD;
+        optPtr->litFreq[literals[u]] += ZSTD_LITFREQ_ADD;
 
     /* literal Length */
     {   const BYTE LL_deltaCode = 19;
         const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
-        seqStorePtr->litLengthFreq[llCode]++;
-        seqStorePtr->litLengthSum++;
+        optPtr->litLengthFreq[llCode]++;
+        optPtr->litLengthSum++;
     }
 
     /* match offset */
     {   BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1);
-        seqStorePtr->offCodeSum++;
-        seqStorePtr->offCodeFreq[offCode]++;
+        optPtr->offCodeSum++;
+        optPtr->offCodeFreq[offCode]++;
     }
 
     /* match Length */
     {   const BYTE ML_deltaCode = 36;
         const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength];
-        seqStorePtr->matchLengthFreq[mlCode]++;
-        seqStorePtr->matchLengthSum++;
+        optPtr->matchLengthFreq[mlCode]++;
+        optPtr->matchLengthSum++;
     }
 
-    ZSTD_setLog2Prices(seqStorePtr);
+    ZSTD_setLog2Prices(optPtr);
 }
 
 
@@ -203,7 +203,7 @@ MEM_STATIC void ZSTD_updatePrice(seqStore_t* seqStorePtr, U32 litLength, const B
 
 
 /* function safe only for comparisons */
-MEM_STATIC U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
+static U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
 {
     switch (length)
     {
@@ -219,7 +219,7 @@ MEM_STATIC U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
 
 /* Update hashTable3 up to ip (excluded)
    Assumption : always within prefix (i.e. not within extDict) */
-FORCE_INLINE
+static
 U32 ZSTD_insertAndFindFirstIndexHash3 (ZSTD_CCtx* zc, const BYTE* ip)
 {
     U32* const hashTable3  = zc->hashTable3;
@@ -412,11 +412,12 @@ static U32 ZSTD_BtGetAllMatches_selectMLS_extDict (
 /*-*******************************
 *  Optimal parser
 *********************************/
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
 void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
                                     const void* src, size_t srcSize, const int ultra)
 {
     seqStore_t* seqStorePtr = &(ctx->seqStore);
+    optState_t* optStatePtr = &(ctx->optState);
     const BYTE* const istart = (const BYTE*)src;
     const BYTE* ip = istart;
     const BYTE* anchor = istart;
@@ -430,16 +431,16 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
     const U32 mls = ctx->appliedParams.cParams.searchLength;
     const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
 
-    ZSTD_optimal_t* opt = seqStorePtr->priceTable;
-    ZSTD_match_t* matches = seqStorePtr->matchTable;
+    ZSTD_optimal_t* opt = optStatePtr->priceTable;
+    ZSTD_match_t* matches = optStatePtr->matchTable;
     const BYTE* inr;
     U32 offset, rep[ZSTD_REP_NUM];
 
     /* init */
     ctx->nextToUpdate3 = ctx->nextToUpdate;
-    ZSTD_rescaleFreqs(seqStorePtr, (const BYTE*)src, srcSize);
+    ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize);
     ip += (ip==prefixStart);
-    { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=ctx->rep[i]; }
+    { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
 
     /* Match Loop */
     while (ip < ilimit) {
@@ -462,7 +463,7 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
                     }
                     best_off = i - (ip == anchor);
                     do {
-                        price = ZSTD_getPrice(seqStorePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+                        price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
                         if (mlen > last_pos || price < opt[mlen].price)
                             SET_PRICE(mlen, mlen, i, litlen, price);   /* note : macro modifies last_pos */
                         mlen--;
@@ -487,7 +488,7 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
             mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
             best_mlen = matches[u].len;
             while (mlen <= best_mlen) {
-                price = ZSTD_getPrice(seqStorePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+                price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
                 if (mlen > last_pos || price < opt[mlen].price)
                     SET_PRICE(mlen, mlen, matches[u].off, litlen, price);   /* note : macro modifies last_pos */
                 mlen++;
@@ -507,12 +508,12 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
            if (opt[cur-1].mlen == 1) {
                 litlen = opt[cur-1].litlen + 1;
                 if (cur > litlen) {
-                    price = opt[cur - litlen].price + ZSTD_getLiteralPrice(seqStorePtr, litlen, inr-litlen);
+                    price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen);
                 } else
-                    price = ZSTD_getLiteralPrice(seqStorePtr, litlen, anchor);
+                    price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor);
            } else {
                 litlen = 1;
-                price = opt[cur - 1].price + ZSTD_getLiteralPrice(seqStorePtr, litlen, inr-1);
+                price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1);
            }
 
            if (cur > last_pos || price <= opt[cur].price)
@@ -554,12 +555,12 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
                            if (opt[cur].mlen == 1) {
                                 litlen = opt[cur].litlen;
                                 if (cur > litlen) {
-                                    price = opt[cur - litlen].price + ZSTD_getPrice(seqStorePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
+                                    price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
                                 } else
-                                    price = ZSTD_getPrice(seqStorePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+                                    price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
                             } else {
                                 litlen = 0;
-                                price = opt[cur].price + ZSTD_getPrice(seqStorePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
+                                price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
                             }
 
                             if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
@@ -586,12 +587,12 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
                     if (opt[cur].mlen == 1) {
                         litlen = opt[cur].litlen;
                         if (cur > litlen)
-                            price = opt[cur - litlen].price + ZSTD_getPrice(seqStorePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
+                            price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
                         else
-                            price = ZSTD_getPrice(seqStorePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+                            price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
                     } else {
                         litlen = 0;
-                        price = opt[cur].price + ZSTD_getPrice(seqStorePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
+                        price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
                     }
 
                     if (cur + mlen > last_pos || (price < opt[cur + mlen].price))
@@ -645,13 +646,13 @@ _storeSequence:   /* cur, last_pos, best_mlen, best_off have to be set */
                 if (litLength==0) offset--;
             }
 
-            ZSTD_updatePrice(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
+            ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH);
             ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
             anchor = ip = ip + mlen;
     }    }   /* for (cur=0; cur < last_pos; ) */
 
     /* Save reps for next block */
-    { int i; for (i=0; i<ZSTD_REP_NUM; i++) ctx->repToConfirm[i] = rep[i]; }
+    { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; }
 
     /* Last Literals */
     {   size_t const lastLLSize = iend - anchor;
@@ -661,11 +662,12 @@ _storeSequence:   /* cur, last_pos, best_mlen, best_off have to be set */
 }
 
 
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
 void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
                                      const void* src, size_t srcSize, const int ultra)
 {
     seqStore_t* seqStorePtr = &(ctx->seqStore);
+    optState_t* optStatePtr = &(ctx->optState);
     const BYTE* const istart = (const BYTE*)src;
     const BYTE* ip = istart;
     const BYTE* anchor = istart;
@@ -683,16 +685,16 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
     const U32 mls = ctx->appliedParams.cParams.searchLength;
     const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
 
-    ZSTD_optimal_t* opt = seqStorePtr->priceTable;
-    ZSTD_match_t* matches = seqStorePtr->matchTable;
+    ZSTD_optimal_t* opt = optStatePtr->priceTable;
+    ZSTD_match_t* matches = optStatePtr->matchTable;
     const BYTE* inr;
 
     /* init */
     U32 offset, rep[ZSTD_REP_NUM];
-    { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=ctx->rep[i]; }
+    { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
 
     ctx->nextToUpdate3 = ctx->nextToUpdate;
-    ZSTD_rescaleFreqs(seqStorePtr, (const BYTE*)src, srcSize);
+    ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize);
     ip += (ip==prefixStart);
 
     /* Match Loop */
@@ -726,7 +728,7 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
                     best_off = i - (ip==anchor);
                     litlen = opt[0].litlen;
                     do {
-                        price = ZSTD_getPrice(seqStorePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+                        price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
                         if (mlen > last_pos || price < opt[mlen].price)
                             SET_PRICE(mlen, mlen, i, litlen, price);   /* note : macro modifies last_pos */
                         mlen--;
@@ -756,7 +758,7 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
             best_mlen = matches[u].len;
             litlen = opt[0].litlen;
             while (mlen <= best_mlen) {
-                price = ZSTD_getPrice(seqStorePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+                price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
                 if (mlen > last_pos || price < opt[mlen].price)
                     SET_PRICE(mlen, mlen, matches[u].off, litlen, price);
                 mlen++;
@@ -773,12 +775,12 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
             if (opt[cur-1].mlen == 1) {
                 litlen = opt[cur-1].litlen + 1;
                 if (cur > litlen) {
-                    price = opt[cur - litlen].price + ZSTD_getLiteralPrice(seqStorePtr, litlen, inr-litlen);
+                    price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen);
                 } else
-                    price = ZSTD_getLiteralPrice(seqStorePtr, litlen, anchor);
+                    price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor);
             } else {
                 litlen = 1;
-                price = opt[cur - 1].price + ZSTD_getLiteralPrice(seqStorePtr, litlen, inr-1);
+                price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1);
             }
 
             if (cur > last_pos || price <= opt[cur].price)
@@ -826,12 +828,12 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
                             if (opt[cur].mlen == 1) {
                                 litlen = opt[cur].litlen;
                                 if (cur > litlen) {
-                                    price = opt[cur - litlen].price + ZSTD_getPrice(seqStorePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
+                                    price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
                                 } else
-                                    price = ZSTD_getPrice(seqStorePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+                                    price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
                             } else {
                                 litlen = 0;
-                                price = opt[cur].price + ZSTD_getPrice(seqStorePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
+                                price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
                             }
 
                             if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
@@ -858,12 +860,12 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
                     if (opt[cur].mlen == 1) {
                         litlen = opt[cur].litlen;
                         if (cur > litlen)
-                            price = opt[cur - litlen].price + ZSTD_getPrice(seqStorePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
+                            price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
                         else
-                            price = ZSTD_getPrice(seqStorePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+                            price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
                     } else {
                         litlen = 0;
-                        price = opt[cur].price + ZSTD_getPrice(seqStorePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
+                        price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
                     }
 
                     if (cur + mlen > last_pos || (price < opt[cur + mlen].price))
@@ -918,13 +920,13 @@ _storeSequence:   /* cur, last_pos, best_mlen, best_off have to be set */
                 if (litLength==0) offset--;
             }
 
-            ZSTD_updatePrice(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
+            ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH);
             ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
             anchor = ip = ip + mlen;
     }    }   /* for (cur=0; cur < last_pos; ) */
 
     /* Save reps for next block */
-    { int i; for (i=0; i<ZSTD_REP_NUM; i++) ctx->repToConfirm[i] = rep[i]; }
+    { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; }
 
     /* Last Literals */
     {   size_t lastLLSize = iend - anchor;
diff --git contrib/zstd/lib/compress/zstdmt_compress.c contrib/zstd/lib/compress/zstdmt_compress.c
index 0cee01eacb86..8564bc439214 100644
--- contrib/zstd/lib/compress/zstdmt_compress.c
+++ contrib/zstd/lib/compress/zstdmt_compress.c
@@ -1,15 +1,16 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
 /* ======   Tuning parameters   ====== */
-#define ZSTDMT_NBTHREADS_MAX 128
+#define ZSTDMT_NBTHREADS_MAX 256
+#define ZSTDMT_OVERLAPLOG_DEFAULT 6
 
 
 /* ======   Compiler specifics   ====== */
@@ -73,6 +74,7 @@ static unsigned long long GetCurrentClockTimeMicroseconds(void)
 
 
 /* =====   Buffer Pool   ===== */
+/* a single Buffer Pool can be invoked from multiple threads in parallel */
 
 typedef struct buffer_s {
     void* start;
@@ -82,6 +84,8 @@ typedef struct buffer_s {
 static const buffer_t g_nullBuffer = { NULL, 0 };
 
 typedef struct ZSTDMT_bufferPool_s {
+    pthread_mutex_t poolMutex;
+    size_t bufferSize;
     unsigned totalBuffers;
     unsigned nbBuffers;
     ZSTD_customMem cMem;
@@ -90,10 +94,15 @@ typedef struct ZSTDMT_bufferPool_s {
 
 static ZSTDMT_bufferPool* ZSTDMT_createBufferPool(unsigned nbThreads, ZSTD_customMem cMem)
 {
-    unsigned const maxNbBuffers = 2*nbThreads + 2;
+    unsigned const maxNbBuffers = 2*nbThreads + 3;
     ZSTDMT_bufferPool* const bufPool = (ZSTDMT_bufferPool*)ZSTD_calloc(
         sizeof(ZSTDMT_bufferPool) + (maxNbBuffers-1) * sizeof(buffer_t), cMem);
     if (bufPool==NULL) return NULL;
+    if (pthread_mutex_init(&bufPool->poolMutex, NULL)) {
+        ZSTD_free(bufPool, cMem);
+        return NULL;
+    }
+    bufPool->bufferSize = 64 KB;
     bufPool->totalBuffers = maxNbBuffers;
     bufPool->nbBuffers = 0;
     bufPool->cMem = cMem;
@@ -106,6 +115,7 @@ static void ZSTDMT_freeBufferPool(ZSTDMT_bufferPool* bufPool)
     if (!bufPool) return;   /* compatibility with free on NULL */
     for (u=0; u<bufPool->totalBuffers; u++)
         ZSTD_free(bufPool->bTable[u].start, bufPool->cMem);
+    pthread_mutex_destroy(&bufPool->poolMutex);
     ZSTD_free(bufPool, bufPool->cMem);
 }
 
@@ -116,65 +126,85 @@ static size_t ZSTDMT_sizeof_bufferPool(ZSTDMT_bufferPool* bufPool)
                             + (bufPool->totalBuffers - 1) * sizeof(buffer_t);
     unsigned u;
     size_t totalBufferSize = 0;
+    pthread_mutex_lock(&bufPool->poolMutex);
     for (u=0; u<bufPool->totalBuffers; u++)
         totalBufferSize += bufPool->bTable[u].size;
+    pthread_mutex_unlock(&bufPool->poolMutex);
 
     return poolSize + totalBufferSize;
 }
 
-/** ZSTDMT_getBuffer() :
- *  assumption : invocation from main thread only ! */
-static buffer_t ZSTDMT_getBuffer(ZSTDMT_bufferPool* pool, size_t bSize)
+static void ZSTDMT_setBufferSize(ZSTDMT_bufferPool* bufPool, size_t bSize)
 {
-    if (pool->nbBuffers) {   /* try to use an existing buffer */
-        buffer_t const buf = pool->bTable[--(pool->nbBuffers)];
+    bufPool->bufferSize = bSize;
+}
+
+/** ZSTDMT_getBuffer() :
+ *  assumption : bufPool must be valid */
+static buffer_t ZSTDMT_getBuffer(ZSTDMT_bufferPool* bufPool)
+{
+    size_t const bSize = bufPool->bufferSize;
+    DEBUGLOG(5, "ZSTDMT_getBuffer");
+    pthread_mutex_lock(&bufPool->poolMutex);
+    if (bufPool->nbBuffers) {   /* try to use an existing buffer */
+        buffer_t const buf = bufPool->bTable[--(bufPool->nbBuffers)];
         size_t const availBufferSize = buf.size;
-        if ((availBufferSize >= bSize) & (availBufferSize <= 10*bSize))
+        if ((availBufferSize >= bSize) & (availBufferSize <= 10*bSize)) {
             /* large enough, but not too much */
+            pthread_mutex_unlock(&bufPool->poolMutex);
             return buf;
+        }
         /* size conditions not respected : scratch this buffer, create new one */
-        ZSTD_free(buf.start, pool->cMem);
+        DEBUGLOG(5, "existing buffer does not meet size conditions => freeing");
+        ZSTD_free(buf.start, bufPool->cMem);
     }
+    pthread_mutex_unlock(&bufPool->poolMutex);
     /* create new buffer */
+    DEBUGLOG(5, "create a new buffer");
     {   buffer_t buffer;
-        void* const start = ZSTD_malloc(bSize, pool->cMem);
-        if (start==NULL) bSize = 0;
+        void* const start = ZSTD_malloc(bSize, bufPool->cMem);
         buffer.start = start;   /* note : start can be NULL if malloc fails ! */
-        buffer.size = bSize;
+        buffer.size = (start==NULL) ? 0 : bSize;
         return buffer;
     }
 }
 
 /* store buffer for later re-use, up to pool capacity */
-static void ZSTDMT_releaseBuffer(ZSTDMT_bufferPool* pool, buffer_t buf)
-{
-    if (buf.start == NULL) return;   /* release on NULL */
-    if (pool->nbBuffers < pool->totalBuffers) {
-        pool->bTable[pool->nbBuffers++] = buf;   /* store for later re-use */
+static void ZSTDMT_releaseBuffer(ZSTDMT_bufferPool* bufPool, buffer_t buf)
+{
+    if (buf.start == NULL) return;   /* compatible with release on NULL */
+    DEBUGLOG(5, "ZSTDMT_releaseBuffer");
+    pthread_mutex_lock(&bufPool->poolMutex);
+    if (bufPool->nbBuffers < bufPool->totalBuffers) {
+        bufPool->bTable[bufPool->nbBuffers++] = buf;  /* stored for later use */
+        pthread_mutex_unlock(&bufPool->poolMutex);
         return;
     }
+    pthread_mutex_unlock(&bufPool->poolMutex);
     /* Reached bufferPool capacity (should not happen) */
-    ZSTD_free(buf.start, pool->cMem);
+    DEBUGLOG(5, "buffer pool capacity reached => freeing ");
+    ZSTD_free(buf.start, bufPool->cMem);
 }
 
 
 /* =====   CCtx Pool   ===== */
+/* a single CCtx Pool can be invoked from multiple threads in parallel */
 
 typedef struct {
+    pthread_mutex_t poolMutex;
     unsigned totalCCtx;
     unsigned availCCtx;
     ZSTD_customMem cMem;
     ZSTD_CCtx* cctx[1];   /* variable size */
 } ZSTDMT_CCtxPool;
 
-/* assumption : CCtxPool invocation only from main thread */
-
 /* note : all CCtx borrowed from the pool should be released back to the pool _before_ freeing the pool */
 static void ZSTDMT_freeCCtxPool(ZSTDMT_CCtxPool* pool)
 {
     unsigned u;
     for (u=0; u<pool->totalCCtx; u++)
         ZSTD_freeCCtx(pool->cctx[u]);  /* note : compatible with free on NULL */
+    pthread_mutex_destroy(&pool->poolMutex);
     ZSTD_free(pool, pool->cMem);
 }
 
@@ -186,6 +216,10 @@ static ZSTDMT_CCtxPool* ZSTDMT_createCCtxPool(unsigned nbThreads,
     ZSTDMT_CCtxPool* const cctxPool = (ZSTDMT_CCtxPool*) ZSTD_calloc(
         sizeof(ZSTDMT_CCtxPool) + (nbThreads-1)*sizeof(ZSTD_CCtx*), cMem);
     if (!cctxPool) return NULL;
+    if (pthread_mutex_init(&cctxPool->poolMutex, NULL)) {
+        ZSTD_free(cctxPool, cMem);
+        return NULL;
+    }
     cctxPool->cMem = cMem;
     cctxPool->totalCCtx = nbThreads;
     cctxPool->availCCtx = 1;   /* at least one cctx for single-thread mode */
@@ -198,50 +232,57 @@ static ZSTDMT_CCtxPool* ZSTDMT_createCCtxPool(unsigned nbThreads,
 /* only works during initialization phase, not during compression */
 static size_t ZSTDMT_sizeof_CCtxPool(ZSTDMT_CCtxPool* cctxPool)
 {
-    unsigned const nbThreads = cctxPool->totalCCtx;
-    size_t const poolSize = sizeof(*cctxPool)
-                            + (nbThreads-1)*sizeof(ZSTD_CCtx*);
-    unsigned u;
-    size_t totalCCtxSize = 0;
-    for (u=0; u<nbThreads; u++)
-        totalCCtxSize += ZSTD_sizeof_CCtx(cctxPool->cctx[u]);
-
-    return poolSize + totalCCtxSize;
+    pthread_mutex_lock(&cctxPool->poolMutex);
+    {   unsigned const nbThreads = cctxPool->totalCCtx;
+        size_t const poolSize = sizeof(*cctxPool)
+                                + (nbThreads-1)*sizeof(ZSTD_CCtx*);
+        unsigned u;
+        size_t totalCCtxSize = 0;
+        for (u=0; u<nbThreads; u++) {
+            totalCCtxSize += ZSTD_sizeof_CCtx(cctxPool->cctx[u]);
+        }
+        pthread_mutex_unlock(&cctxPool->poolMutex);
+        return poolSize + totalCCtxSize;
+    }
 }
 
-static ZSTD_CCtx* ZSTDMT_getCCtx(ZSTDMT_CCtxPool* pool)
+static ZSTD_CCtx* ZSTDMT_getCCtx(ZSTDMT_CCtxPool* cctxPool)
 {
-    if (pool->availCCtx) {
-        pool->availCCtx--;
-        return pool->cctx[pool->availCCtx];
-    }
-    return ZSTD_createCCtx();   /* note : can be NULL, when creation fails ! */
+    DEBUGLOG(5, "ZSTDMT_getCCtx");
+    pthread_mutex_lock(&cctxPool->poolMutex);
+    if (cctxPool->availCCtx) {
+        cctxPool->availCCtx--;
+        {   ZSTD_CCtx* const cctx = cctxPool->cctx[cctxPool->availCCtx];
+            pthread_mutex_unlock(&cctxPool->poolMutex);
+            return cctx;
+    }   }
+    pthread_mutex_unlock(&cctxPool->poolMutex);
+    DEBUGLOG(5, "create one more CCtx");
+    return ZSTD_createCCtx_advanced(cctxPool->cMem);   /* note : can be NULL, when creation fails ! */
 }
 
 static void ZSTDMT_releaseCCtx(ZSTDMT_CCtxPool* pool, ZSTD_CCtx* cctx)
 {
     if (cctx==NULL) return;   /* compatibility with release on NULL */
+    pthread_mutex_lock(&pool->poolMutex);
     if (pool->availCCtx < pool->totalCCtx)
         pool->cctx[pool->availCCtx++] = cctx;
-    else
+    else {
         /* pool overflow : should not happen, since totalCCtx==nbThreads */
+        DEBUGLOG(5, "CCtx pool overflow : free cctx");
         ZSTD_freeCCtx(cctx);
+    }
+    pthread_mutex_unlock(&pool->poolMutex);
 }
 
 
 /* =====   Thread worker   ===== */
 
 typedef struct {
-    buffer_t buffer;
-    size_t filled;
-} inBuff_t;
-
-typedef struct {
-    ZSTD_CCtx* cctx;
     buffer_t src;
     const void* srcStart;
-    size_t   srcSize;
     size_t   dictSize;
+    size_t   srcSize;
     buffer_t dstBuff;
     size_t   cSize;
     size_t   dstFlushed;
@@ -253,6 +294,8 @@ typedef struct {
     pthread_cond_t* jobCompleted_cond;
     ZSTD_parameters params;
     const ZSTD_CDict* cdict;
+    ZSTDMT_CCtxPool* cctxPool;
+    ZSTDMT_bufferPool* bufPool;
     unsigned long long fullFrameSize;
 } ZSTDMT_jobDescription;
 
@@ -260,37 +303,56 @@ typedef struct {
 void ZSTDMT_compressChunk(void* jobDescription)
 {
     ZSTDMT_jobDescription* const job = (ZSTDMT_jobDescription*)jobDescription;
+    ZSTD_CCtx* cctx = ZSTDMT_getCCtx(job->cctxPool);
     const void* const src = (const char*)job->srcStart + job->dictSize;
-    buffer_t const dstBuff = job->dstBuff;
+    buffer_t dstBuff = job->dstBuff;
     DEBUGLOG(5, "job (first:%u) (last:%u) : dictSize %u, srcSize %u",
                  job->firstChunk, job->lastChunk, (U32)job->dictSize, (U32)job->srcSize);
+
+    if (cctx==NULL) {
+        job->cSize = ERROR(memory_allocation);
+        goto _endJob;
+    }
+
+    if (dstBuff.start == NULL) {
+        dstBuff = ZSTDMT_getBuffer(job->bufPool);
+        if (dstBuff.start==NULL) {
+            job->cSize = ERROR(memory_allocation);
+            goto _endJob;
+        }
+        job->dstBuff = dstBuff;
+    }
+
     if (job->cdict) {  /* should only happen for first segment */
-        size_t const initError = ZSTD_compressBegin_usingCDict_advanced(job->cctx, job->cdict, job->params.fParams, job->fullFrameSize);
+        size_t const initError = ZSTD_compressBegin_usingCDict_advanced(cctx, job->cdict, job->params.fParams, job->fullFrameSize);
         DEBUGLOG(5, "using CDict");
         if (ZSTD_isError(initError)) { job->cSize = initError; goto _endJob; }
     } else {  /* srcStart points at reloaded section */
         if (!job->firstChunk) job->params.fParams.contentSizeFlag = 0;  /* ensure no srcSize control */
-        {   size_t const dictModeError = ZSTD_setCCtxParameter(job->cctx, ZSTD_p_forceRawDict, 1);  /* Force loading dictionary in "content-only" mode (no header analysis) */
-            size_t const initError = ZSTD_compressBegin_advanced(job->cctx, job->srcStart, job->dictSize, job->params, job->fullFrameSize);
+        {   size_t const dictModeError = ZSTD_setCCtxParameter(cctx, ZSTD_p_forceRawDict, 1);  /* Force loading dictionary in "content-only" mode (no header analysis) */
+            size_t const initError = ZSTD_compressBegin_advanced(cctx, job->srcStart, job->dictSize, job->params, job->fullFrameSize);
             if (ZSTD_isError(initError) || ZSTD_isError(dictModeError)) { job->cSize = initError; goto _endJob; }
-            ZSTD_setCCtxParameter(job->cctx, ZSTD_p_forceWindow, 1);
+            ZSTD_setCCtxParameter(cctx, ZSTD_p_forceWindow, 1);
     }   }
     if (!job->firstChunk) {  /* flush and overwrite frame header when it's not first segment */
-        size_t const hSize = ZSTD_compressContinue(job->cctx, dstBuff.start, dstBuff.size, src, 0);
+        size_t const hSize = ZSTD_compressContinue(cctx, dstBuff.start, dstBuff.size, src, 0);
         if (ZSTD_isError(hSize)) { job->cSize = hSize; goto _endJob; }
-        ZSTD_invalidateRepCodes(job->cctx);
+        ZSTD_invalidateRepCodes(cctx);
     }
 
     DEBUGLOG(5, "Compressing : ");
     DEBUG_PRINTHEX(4, job->srcStart, 12);
     job->cSize = (job->lastChunk) ?
-                 ZSTD_compressEnd     (job->cctx, dstBuff.start, dstBuff.size, src, job->srcSize) :
-                 ZSTD_compressContinue(job->cctx, dstBuff.start, dstBuff.size, src, job->srcSize);
+                 ZSTD_compressEnd     (cctx, dstBuff.start, dstBuff.size, src, job->srcSize) :
+                 ZSTD_compressContinue(cctx, dstBuff.start, dstBuff.size, src, job->srcSize);
     DEBUGLOG(5, "compressed %u bytes into %u bytes   (first:%u) (last:%u)",
                 (unsigned)job->srcSize, (unsigned)job->cSize, job->firstChunk, job->lastChunk);
     DEBUGLOG(5, "dstBuff.size : %u ; => %s", (U32)dstBuff.size, ZSTD_getErrorName(job->cSize));
 
 _endJob:
+    ZSTDMT_releaseCCtx(job->cctxPool, cctx);
+    ZSTDMT_releaseBuffer(job->bufPool, job->src);
+    job->src = g_nullBuffer; job->srcStart = NULL;
     PTHREAD_MUTEX_LOCK(job->jobCompleted_mutex);
     job->jobCompleted = 1;
     job->jobScanned = 0;
@@ -303,15 +365,19 @@ _endJob:
 /* =====   Multi-threaded compression   ===== */
 /* ------------------------------------------ */
 
+typedef struct {
+    buffer_t buffer;
+    size_t filled;
+} inBuff_t;
+
 struct ZSTDMT_CCtx_s {
     POOL_ctx* factory;
     ZSTDMT_jobDescription* jobs;
-    ZSTDMT_bufferPool* buffPool;
+    ZSTDMT_bufferPool* bufPool;
     ZSTDMT_CCtxPool* cctxPool;
     pthread_mutex_t jobCompleted_mutex;
     pthread_cond_t jobCompleted_cond;
     size_t targetSectionSize;
-    size_t marginSize;
     size_t inBuffSize;
     size_t dictSize;
     size_t targetDictSize;
@@ -324,7 +390,7 @@ struct ZSTDMT_CCtx_s {
     unsigned nextJobID;
     unsigned frameEnded;
     unsigned allJobsCompleted;
-    unsigned overlapRLog;
+    unsigned overlapLog;
     unsigned long long frameContentSize;
     size_t sectionSize;
     ZSTD_customMem cMem;
@@ -347,7 +413,8 @@ ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem)
     U32 nbJobs = nbThreads + 2;
     DEBUGLOG(3, "ZSTDMT_createCCtx_advanced");
 
-    if ((nbThreads < 1) | (nbThreads > ZSTDMT_NBTHREADS_MAX)) return NULL;
+    if (nbThreads < 1) return NULL;
+    nbThreads = MIN(nbThreads , ZSTDMT_NBTHREADS_MAX);
     if ((cMem.customAlloc!=NULL) ^ (cMem.customFree!=NULL))
         /* invalid custom allocator */
         return NULL;
@@ -358,18 +425,24 @@ ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem)
     mtctx->nbThreads = nbThreads;
     mtctx->allJobsCompleted = 1;
     mtctx->sectionSize = 0;
-    mtctx->overlapRLog = 3;
-    mtctx->factory = POOL_create(nbThreads, 1);
+    mtctx->overlapLog = ZSTDMT_OVERLAPLOG_DEFAULT;
+    mtctx->factory = POOL_create(nbThreads, 0);
     mtctx->jobs = ZSTDMT_allocJobsTable(&nbJobs, cMem);
     mtctx->jobIDMask = nbJobs - 1;
-    mtctx->buffPool = ZSTDMT_createBufferPool(nbThreads, cMem);
+    mtctx->bufPool = ZSTDMT_createBufferPool(nbThreads, cMem);
     mtctx->cctxPool = ZSTDMT_createCCtxPool(nbThreads, cMem);
-    if (!mtctx->factory | !mtctx->jobs | !mtctx->buffPool | !mtctx->cctxPool) {
+    if (!mtctx->factory | !mtctx->jobs | !mtctx->bufPool | !mtctx->cctxPool) {
+        ZSTDMT_freeCCtx(mtctx);
+        return NULL;
+    }
+    if (pthread_mutex_init(&mtctx->jobCompleted_mutex, NULL)) {
+        ZSTDMT_freeCCtx(mtctx);
+        return NULL;
+    }
+    if (pthread_cond_init(&mtctx->jobCompleted_cond, NULL)) {
         ZSTDMT_freeCCtx(mtctx);
         return NULL;
     }
-    pthread_mutex_init(&mtctx->jobCompleted_mutex, NULL);   /* Todo : check init function return */
-    pthread_cond_init(&mtctx->jobCompleted_cond, NULL);
     DEBUGLOG(3, "mt_cctx created, for %u threads", nbThreads);
     return mtctx;
 }
@@ -386,15 +459,13 @@ static void ZSTDMT_releaseAllJobResources(ZSTDMT_CCtx* mtctx)
     unsigned jobID;
     DEBUGLOG(3, "ZSTDMT_releaseAllJobResources");
     for (jobID=0; jobID <= mtctx->jobIDMask; jobID++) {
-        ZSTDMT_releaseBuffer(mtctx->buffPool, mtctx->jobs[jobID].dstBuff);
+        ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[jobID].dstBuff);
         mtctx->jobs[jobID].dstBuff = g_nullBuffer;
-        ZSTDMT_releaseBuffer(mtctx->buffPool, mtctx->jobs[jobID].src);
+        ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[jobID].src);
         mtctx->jobs[jobID].src = g_nullBuffer;
-        ZSTDMT_releaseCCtx(mtctx->cctxPool, mtctx->jobs[jobID].cctx);
-        mtctx->jobs[jobID].cctx = NULL;
     }
     memset(mtctx->jobs, 0, (mtctx->jobIDMask+1)*sizeof(ZSTDMT_jobDescription));
-    ZSTDMT_releaseBuffer(mtctx->buffPool, mtctx->inBuff.buffer);
+    ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->inBuff.buffer);
     mtctx->inBuff.buffer = g_nullBuffer;
     mtctx->allJobsCompleted = 1;
 }
@@ -404,7 +475,7 @@ size_t ZSTDMT_freeCCtx(ZSTDMT_CCtx* mtctx)
     if (mtctx==NULL) return 0;   /* compatible with free on NULL */
     POOL_free(mtctx->factory);
     if (!mtctx->allJobsCompleted) ZSTDMT_releaseAllJobResources(mtctx); /* stop workers first */
-    ZSTDMT_freeBufferPool(mtctx->buffPool);  /* release job resources into pools first */
+    ZSTDMT_freeBufferPool(mtctx->bufPool);  /* release job resources into pools first */
     ZSTD_free(mtctx->jobs, mtctx->cMem);
     ZSTDMT_freeCCtxPool(mtctx->cctxPool);
     ZSTD_freeCDict(mtctx->cdictLocal);
@@ -418,11 +489,11 @@ size_t ZSTDMT_sizeof_CCtx(ZSTDMT_CCtx* mtctx)
 {
     if (mtctx == NULL) return 0;   /* supports sizeof NULL */
     return sizeof(*mtctx)
-        + POOL_sizeof(mtctx->factory)
-        + ZSTDMT_sizeof_bufferPool(mtctx->buffPool)
-        + (mtctx->jobIDMask+1) * sizeof(ZSTDMT_jobDescription)
-        + ZSTDMT_sizeof_CCtxPool(mtctx->cctxPool)
-        + ZSTD_sizeof_CDict(mtctx->cdictLocal);
+            + POOL_sizeof(mtctx->factory)
+            + ZSTDMT_sizeof_bufferPool(mtctx->bufPool)
+            + (mtctx->jobIDMask+1) * sizeof(ZSTDMT_jobDescription)
+            + ZSTDMT_sizeof_CCtxPool(mtctx->cctxPool)
+            + ZSTD_sizeof_CDict(mtctx->cdictLocal);
 }
 
 size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSDTMT_parameter parameter, unsigned value)
@@ -434,10 +505,10 @@ size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSDTMT_parameter parameter,
         return 0;
     case ZSTDMT_p_overlapSectionLog :
         DEBUGLOG(5, "ZSTDMT_p_overlapSectionLog : %u", value);
-        mtctx->overlapRLog = (value >= 9) ? 0 : 9 - value;
+        mtctx->overlapLog = (value >= 9) ? 9 : value;
         return 0;
     default :
-        return ERROR(compressionParameter_unsupported);
+        return ERROR(parameter_unsupported);
     }
 }
 
@@ -459,12 +530,13 @@ static unsigned computeNbChunks(size_t srcSize, unsigned windowLog, unsigned nbT
 
 
 size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
-                           void* dst, size_t dstCapacity,
-                     const void* src, size_t srcSize,
-                     const ZSTD_CDict* cdict,
-                           ZSTD_parameters const params,
-                           unsigned overlapRLog)
+                               void* dst, size_t dstCapacity,
+                         const void* src, size_t srcSize,
+                         const ZSTD_CDict* cdict,
+                               ZSTD_parameters const params,
+                               unsigned overlapLog)
 {
+    unsigned const overlapRLog = (overlapLog>9) ? 0 : 9-overlapLog;
     size_t const overlapSize = (overlapRLog>=9) ? 0 : (size_t)1 << (params.cParams.windowLog - overlapRLog);
     unsigned nbChunks = computeNbChunks(srcSize, params.cParams.windowLog, mtctx->nbThreads);
     size_t const proposedChunkSize = (srcSize + (nbChunks-1)) / nbChunks;
@@ -473,6 +545,7 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
     size_t remainingSrcSize = srcSize;
     unsigned const compressWithinDst = (dstCapacity >= ZSTD_compressBound(srcSize)) ? nbChunks : (unsigned)(dstCapacity / ZSTD_compressBound(avgChunkSize));  /* presumes avgChunkSize >= 256 KB, which should be the case */
     size_t frameStartPos = 0, dstBufferPos = 0;
+    XXH64_state_t xxh64;
 
     DEBUGLOG(4, "nbChunks  : %2u   (chunkSize : %u bytes)   ", nbChunks, (U32)avgChunkSize);
     if (nbChunks==1) {   /* fallback to single-thread mode */
@@ -480,7 +553,9 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
         if (cdict) return ZSTD_compress_usingCDict_advanced(cctx, dst, dstCapacity, src, srcSize, cdict, params.fParams);
         return ZSTD_compress_advanced(cctx, dst, dstCapacity, src, srcSize, NULL, 0, params);
     }
-    assert(avgChunkSize >= 256 KB);  /* condition for ZSTD_compressBound(A) + ZSTD_compressBound(B) <= ZSTD_compressBound(A+B), which is useful to avoid allocating extra buffers */
+    assert(avgChunkSize >= 256 KB);  /* condition for ZSTD_compressBound(A) + ZSTD_compressBound(B) <= ZSTD_compressBound(A+B), which is required for compressWithinDst */
+    ZSTDMT_setBufferSize(mtctx->bufPool, ZSTD_compressBound(avgChunkSize) );
+    XXH64_reset(&xxh64, 0);
 
     if (nbChunks > mtctx->jobIDMask+1) {  /* enlarge job table */
         U32 nbJobs = nbChunks;
@@ -496,17 +571,10 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
             size_t const chunkSize = MIN(remainingSrcSize, avgChunkSize);
             size_t const dstBufferCapacity = ZSTD_compressBound(chunkSize);
             buffer_t const dstAsBuffer = { (char*)dst + dstBufferPos, dstBufferCapacity };
-            buffer_t const dstBuffer = u < compressWithinDst ? dstAsBuffer : ZSTDMT_getBuffer(mtctx->buffPool, dstBufferCapacity);
-            ZSTD_CCtx* const cctx = ZSTDMT_getCCtx(mtctx->cctxPool);
+            buffer_t const dstBuffer = u < compressWithinDst ? dstAsBuffer : g_nullBuffer;
             size_t dictSize = u ? overlapSize : 0;
 
-            if ((cctx==NULL) || (dstBuffer.start==NULL)) {
-                mtctx->jobs[u].cSize = ERROR(memory_allocation);   /* job result */
-                mtctx->jobs[u].jobCompleted = 1;
-                nbChunks = u+1;   /* only wait and free u jobs, instead of initially expected nbChunks ones */
-                break;   /* let's wait for previous jobs to complete, but don't start new ones */
-            }
-
+            mtctx->jobs[u].src = g_nullBuffer;
             mtctx->jobs[u].srcStart = srcStart + frameStartPos - dictSize;
             mtctx->jobs[u].dictSize = dictSize;
             mtctx->jobs[u].srcSize = chunkSize;
@@ -516,13 +584,18 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
             /* do not calculate checksum within sections, but write it in header for first section */
             if (u!=0) mtctx->jobs[u].params.fParams.checksumFlag = 0;
             mtctx->jobs[u].dstBuff = dstBuffer;
-            mtctx->jobs[u].cctx = cctx;
+            mtctx->jobs[u].cctxPool = mtctx->cctxPool;
+            mtctx->jobs[u].bufPool = mtctx->bufPool;
             mtctx->jobs[u].firstChunk = (u==0);
             mtctx->jobs[u].lastChunk = (u==nbChunks-1);
             mtctx->jobs[u].jobCompleted = 0;
             mtctx->jobs[u].jobCompleted_mutex = &mtctx->jobCompleted_mutex;
             mtctx->jobs[u].jobCompleted_cond = &mtctx->jobCompleted_cond;
 
+            if (params.fParams.checksumFlag) {
+                XXH64_update(&xxh64, srcStart + frameStartPos, chunkSize);
+            }
+
             DEBUGLOG(5, "posting job %u   (%u bytes)", u, (U32)chunkSize);
             DEBUG_PRINTHEX(6, mtctx->jobs[u].srcStart, 12);
             POOL_add(mtctx->factory, ZSTDMT_compressChunk, &mtctx->jobs[u]);
@@ -533,8 +606,8 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
     }   }
 
     /* collect result */
-    {   unsigned chunkID;
-        size_t error = 0, dstPos = 0;
+    {   size_t error = 0, dstPos = 0;
+        unsigned chunkID;
         for (chunkID=0; chunkID<nbChunks; chunkID++) {
             DEBUGLOG(5, "waiting for chunk %u ", chunkID);
             PTHREAD_MUTEX_LOCK(&mtctx->jobCompleted_mutex);
@@ -545,8 +618,6 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
             pthread_mutex_unlock(&mtctx->jobCompleted_mutex);
             DEBUGLOG(5, "ready to write chunk %u ", chunkID);
 
-            ZSTDMT_releaseCCtx(mtctx->cctxPool, mtctx->jobs[chunkID].cctx);
-            mtctx->jobs[chunkID].cctx = NULL;
             mtctx->jobs[chunkID].srcStart = NULL;
             {   size_t const cSize = mtctx->jobs[chunkID].cSize;
                 if (ZSTD_isError(cSize)) error = cSize;
@@ -556,13 +627,25 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
                         memmove((char*)dst + dstPos, mtctx->jobs[chunkID].dstBuff.start, cSize);  /* may overlap when chunk compressed within dst */
                     if (chunkID >= compressWithinDst) {  /* chunk compressed into its own buffer, which must be released */
                         DEBUGLOG(5, "releasing buffer %u>=%u", chunkID, compressWithinDst);
-                        ZSTDMT_releaseBuffer(mtctx->buffPool, mtctx->jobs[chunkID].dstBuff);
+                        ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[chunkID].dstBuff);
                     }
                     mtctx->jobs[chunkID].dstBuff = g_nullBuffer;
                 }
                 dstPos += cSize ;
             }
-        }
+        }  /* for (chunkID=0; chunkID<nbChunks; chunkID++) */
+
+        DEBUGLOG(4, "checksumFlag : %u ", params.fParams.checksumFlag);
+        if (params.fParams.checksumFlag) {
+            U32 const checksum = (U32)XXH64_digest(&xxh64);
+            if (dstPos + 4 > dstCapacity) {
+                error = ERROR(dstSize_tooSmall);
+            } else {
+                DEBUGLOG(4, "writing checksum : %08X \n", checksum);
+                MEM_writeLE32((char*)dst + dstPos, checksum);
+                dstPos += 4;
+        }   }
+
         if (!error) DEBUGLOG(4, "compressed size : %u  ", (U32)dstPos);
         return error ? error : dstPos;
     }
@@ -574,10 +657,10 @@ size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* mtctx,
                      const void* src, size_t srcSize,
                            int compressionLevel)
 {
-    U32 const overlapRLog = (compressionLevel >= ZSTD_maxCLevel()) ? 0 : 3;
+    U32 const overlapLog = (compressionLevel >= ZSTD_maxCLevel()) ? 9 : ZSTDMT_OVERLAPLOG_DEFAULT;
     ZSTD_parameters params = ZSTD_getParams(compressionLevel, srcSize, 0);
     params.fParams.contentSizeFlag = 1;
-    return ZSTDMT_compress_advanced(mtctx, dst, dstCapacity, src, srcSize, NULL, params, overlapRLog);
+    return ZSTDMT_compress_advanced(mtctx, dst, dstCapacity, src, srcSize, NULL, params, overlapLog);
 }
 
 
@@ -615,8 +698,8 @@ size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
     if (zcs->nbThreads==1) {
         DEBUGLOG(4, "single thread mode");
         return ZSTD_initCStream_internal(zcs->cctxPool->cctx[0],
-                                dict, dictSize, cdict,
-                                params, pledgedSrcSize);
+                                        dict, dictSize, cdict,
+                                        params, pledgedSrcSize);
     }
 
     if (zcs->allJobsCompleted == 0) {   /* previous compression not correctly finished */
@@ -642,18 +725,16 @@ size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
         zcs->cdict = cdict;
     }
 
-    zcs->targetDictSize = (zcs->overlapRLog>=9) ? 0 : (size_t)1 << (zcs->params.cParams.windowLog - zcs->overlapRLog);
-    DEBUGLOG(4, "overlapRLog : %u ", zcs->overlapRLog);
+    zcs->targetDictSize = (zcs->overlapLog==0) ? 0 : (size_t)1 << (zcs->params.cParams.windowLog - (9 - zcs->overlapLog));
+    DEBUGLOG(4, "overlapLog : %u ", zcs->overlapLog);
     DEBUGLOG(4, "overlap Size : %u KB", (U32)(zcs->targetDictSize>>10));
     zcs->targetSectionSize = zcs->sectionSize ? zcs->sectionSize : (size_t)1 << (zcs->params.cParams.windowLog + 2);
     zcs->targetSectionSize = MAX(ZSTDMT_SECTION_SIZE_MIN, zcs->targetSectionSize);
     zcs->targetSectionSize = MAX(zcs->targetDictSize, zcs->targetSectionSize);
     DEBUGLOG(4, "Section Size : %u KB", (U32)(zcs->targetSectionSize>>10));
-    zcs->marginSize = zcs->targetSectionSize >> 2;
-    zcs->inBuffSize = zcs->targetDictSize + zcs->targetSectionSize + zcs->marginSize;
-    zcs->inBuff.buffer = ZSTDMT_getBuffer(zcs->buffPool, zcs->inBuffSize);
-    if (zcs->inBuff.buffer.start == NULL) return ERROR(memory_allocation);
-    zcs->inBuff.filled = 0;
+    zcs->inBuffSize = zcs->targetDictSize + zcs->targetSectionSize;
+    ZSTDMT_setBufferSize(zcs->bufPool, MAX(zcs->inBuffSize, ZSTD_compressBound(zcs->targetSectionSize)) );
+    zcs->inBuff.buffer = g_nullBuffer;
     zcs->dictSize = 0;
     zcs->doneJobID = 0;
     zcs->nextJobID = 0;
@@ -664,8 +745,9 @@ size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
 }
 
 size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx,
-                                const void* dict, size_t dictSize,
-                                ZSTD_parameters params, unsigned long long pledgedSrcSize)
+                             const void* dict, size_t dictSize,
+                                   ZSTD_parameters params,
+                                   unsigned long long pledgedSrcSize)
 {
     DEBUGLOG(5, "ZSTDMT_initCStream_advanced");
     return ZSTDMT_initCStream_internal(mtctx, dict, dictSize, NULL, params, pledgedSrcSize);
@@ -701,19 +783,8 @@ size_t ZSTDMT_initCStream(ZSTDMT_CCtx* zcs, int compressionLevel) {
 
 static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsigned endFrame)
 {
-    size_t const dstBufferCapacity = ZSTD_compressBound(srcSize);
-    buffer_t const dstBuffer = ZSTDMT_getBuffer(zcs->buffPool, dstBufferCapacity);
-    ZSTD_CCtx* const cctx = ZSTDMT_getCCtx(zcs->cctxPool);
     unsigned const jobID = zcs->nextJobID & zcs->jobIDMask;
 
-    if ((cctx==NULL) || (dstBuffer.start==NULL)) {
-        zcs->jobs[jobID].jobCompleted = 1;
-        zcs->nextJobID++;
-        ZSTDMT_waitForAllJobsCompleted(zcs);
-        ZSTDMT_releaseAllJobResources(zcs);
-        return ERROR(memory_allocation);
-    }
-
     DEBUGLOG(4, "preparing job %u to compress %u bytes with %u preload ",
                 zcs->nextJobID, (U32)srcSize, (U32)zcs->dictSize);
     zcs->jobs[jobID].src = zcs->inBuff.buffer;
@@ -726,8 +797,9 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi
     if (zcs->nextJobID) zcs->jobs[jobID].params.fParams.checksumFlag = 0;
     zcs->jobs[jobID].cdict = zcs->nextJobID==0 ? zcs->cdict : NULL;
     zcs->jobs[jobID].fullFrameSize = zcs->frameContentSize;
-    zcs->jobs[jobID].dstBuff = dstBuffer;
-    zcs->jobs[jobID].cctx = cctx;
+    zcs->jobs[jobID].dstBuff = g_nullBuffer;
+    zcs->jobs[jobID].cctxPool = zcs->cctxPool;
+    zcs->jobs[jobID].bufPool = zcs->bufPool;
     zcs->jobs[jobID].firstChunk = (zcs->nextJobID==0);
     zcs->jobs[jobID].lastChunk = endFrame;
     zcs->jobs[jobID].jobCompleted = 0;
@@ -735,11 +807,13 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi
     zcs->jobs[jobID].jobCompleted_mutex = &zcs->jobCompleted_mutex;
     zcs->jobs[jobID].jobCompleted_cond = &zcs->jobCompleted_cond;
 
+    if (zcs->params.fParams.checksumFlag)
+        XXH64_update(&zcs->xxhState, (const char*)zcs->inBuff.buffer.start + zcs->dictSize, srcSize);
+
     /* get a new buffer for next input */
     if (!endFrame) {
         size_t const newDictSize = MIN(srcSize + zcs->dictSize, zcs->targetDictSize);
-        DEBUGLOG(5, "ZSTDMT_createCompressionJob::endFrame = %u", endFrame);
-        zcs->inBuff.buffer = ZSTDMT_getBuffer(zcs->buffPool, zcs->inBuffSize);
+        zcs->inBuff.buffer = ZSTDMT_getBuffer(zcs->bufPool);
         if (zcs->inBuff.buffer.start == NULL) {   /* not enough memory to allocate next input buffer */
             zcs->jobs[jobID].jobCompleted = 1;
             zcs->nextJobID++;
@@ -747,26 +821,20 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi
             ZSTDMT_releaseAllJobResources(zcs);
             return ERROR(memory_allocation);
         }
-        DEBUGLOG(5, "inBuff currently filled to %u", (U32)zcs->inBuff.filled);
         zcs->inBuff.filled -= srcSize + zcs->dictSize - newDictSize;
-        DEBUGLOG(5, "new job : inBuff filled to %u, with %u dict and %u src",
-                    (U32)zcs->inBuff.filled, (U32)newDictSize,
-                    (U32)(zcs->inBuff.filled - newDictSize));
         memmove(zcs->inBuff.buffer.start,
             (const char*)zcs->jobs[jobID].srcStart + zcs->dictSize + srcSize - newDictSize,
             zcs->inBuff.filled);
-        DEBUGLOG(5, "new inBuff pre-filled");
         zcs->dictSize = newDictSize;
     } else {   /* if (endFrame==1) */
-        DEBUGLOG(5, "ZSTDMT_createCompressionJob::endFrame = %u", endFrame);
         zcs->inBuff.buffer = g_nullBuffer;
         zcs->inBuff.filled = 0;
         zcs->dictSize = 0;
         zcs->frameEnded = 1;
-        if (zcs->nextJobID == 0)
+        if (zcs->nextJobID == 0) {
             /* single chunk exception : checksum is calculated directly within worker thread */
             zcs->params.fParams.checksumFlag = 0;
-    }
+    }   }
 
     DEBUGLOG(4, "posting job %u : %u bytes  (end:%u) (note : doneJob = %u=>%u)",
                 zcs->nextJobID,
@@ -804,11 +872,8 @@ static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsi
                 ZSTDMT_releaseAllJobResources(zcs);
                 return job.cSize;
             }
-            ZSTDMT_releaseCCtx(zcs->cctxPool, job.cctx);
-            zcs->jobs[wJobID].cctx = NULL;
             DEBUGLOG(5, "zcs->params.fParams.checksumFlag : %u ", zcs->params.fParams.checksumFlag);
             if (zcs->params.fParams.checksumFlag) {
-                XXH64_update(&zcs->xxhState, (const char*)job.srcStart + job.dictSize, job.srcSize);
                 if (zcs->frameEnded && (zcs->doneJobID+1 == zcs->nextJobID)) {  /* write checksum at end of last section */
                     U32 const checksum = (U32)XXH64_digest(&zcs->xxhState);
                     DEBUGLOG(5, "writing checksum : %08X \n", checksum);
@@ -816,9 +881,6 @@ static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsi
                     job.cSize += 4;
                     zcs->jobs[wJobID].cSize += 4;
             }   }
-            ZSTDMT_releaseBuffer(zcs->buffPool, job.src);
-            zcs->jobs[wJobID].srcStart = NULL;
-            zcs->jobs[wJobID].src = g_nullBuffer;
             zcs->jobs[wJobID].jobScanned = 1;
         }
         {   size_t const toWrite = MIN(job.cSize - job.dstFlushed, output->size - output->pos);
@@ -828,7 +890,7 @@ static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsi
             job.dstFlushed += toWrite;
         }
         if (job.dstFlushed == job.cSize) {   /* output buffer fully flushed => move to next one */
-            ZSTDMT_releaseBuffer(zcs->buffPool, job.dstBuff);
+            ZSTDMT_releaseBuffer(zcs->bufPool, job.dstBuff);
             zcs->jobs[wJobID].dstBuff = g_nullBuffer;
             zcs->jobs[wJobID].jobCompleted = 0;
             zcs->doneJobID++;
@@ -852,18 +914,18 @@ size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
                                      ZSTD_inBuffer* input,
                                      ZSTD_EndDirective endOp)
 {
-    size_t const newJobThreshold = mtctx->dictSize + mtctx->targetSectionSize + mtctx->marginSize;
+    size_t const newJobThreshold = mtctx->dictSize + mtctx->targetSectionSize;
     assert(output->pos <= output->size);
     assert(input->pos  <= input->size);
     if ((mtctx->frameEnded) && (endOp==ZSTD_e_continue)) {
         /* current frame being ended. Only flush/end are allowed. Or start new frame with init */
         return ERROR(stage_wrong);
     }
-    if (mtctx->nbThreads==1) {
+    if (mtctx->nbThreads==1) {  /* delegate to single-thread (synchronous) */
         return ZSTD_compressStream_generic(mtctx->cctxPool->cctx[0], output, input, endOp);
     }
 
-    /* single-pass shortcut (note : this is blocking-mode) */
+    /* single-pass shortcut (note : this is synchronous-mode) */
     if ( (mtctx->nextJobID==0)      /* just started */
       && (mtctx->inBuff.filled==0)  /* nothing buffered */
       && (endOp==ZSTD_e_end)        /* end order */
@@ -871,24 +933,29 @@ size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
         size_t const cSize = ZSTDMT_compress_advanced(mtctx,
                 (char*)output->dst + output->pos, output->size - output->pos,
                 (const char*)input->src + input->pos, input->size - input->pos,
-                mtctx->cdict, mtctx->params, mtctx->overlapRLog);
+                mtctx->cdict, mtctx->params, mtctx->overlapLog);
         if (ZSTD_isError(cSize)) return cSize;
         input->pos = input->size;
         output->pos += cSize;
-        ZSTDMT_releaseBuffer(mtctx->buffPool, mtctx->inBuff.buffer);  /* was allocated in initStream */
+        ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->inBuff.buffer);  /* was allocated in initStream */
         mtctx->allJobsCompleted = 1;
         mtctx->frameEnded = 1;
         return 0;
     }
 
     /* fill input buffer */
-    if ((input->src) && (mtctx->inBuff.buffer.start)) {   /* support NULL input */
-        size_t const toLoad = MIN(input->size - input->pos, mtctx->inBuffSize - mtctx->inBuff.filled);
-        DEBUGLOG(2, "inBuff:%08X;  inBuffSize=%u;  ToCopy=%u", (U32)(size_t)mtctx->inBuff.buffer.start, (U32)mtctx->inBuffSize, (U32)toLoad);
-        memcpy((char*)mtctx->inBuff.buffer.start + mtctx->inBuff.filled, (const char*)input->src + input->pos, toLoad);
-        input->pos += toLoad;
-        mtctx->inBuff.filled += toLoad;
-    }
+    if (input->size > input->pos) {   /* support NULL input */
+        if (mtctx->inBuff.buffer.start == NULL) {
+            mtctx->inBuff.buffer = ZSTDMT_getBuffer(mtctx->bufPool);
+            if (mtctx->inBuff.buffer.start == NULL) return ERROR(memory_allocation);
+            mtctx->inBuff.filled = 0;
+        }
+        {   size_t const toLoad = MIN(input->size - input->pos, mtctx->inBuffSize - mtctx->inBuff.filled);
+            DEBUGLOG(5, "inBuff:%08X;  inBuffSize=%u;  ToCopy=%u", (U32)(size_t)mtctx->inBuff.buffer.start, (U32)mtctx->inBuffSize, (U32)toLoad);
+            memcpy((char*)mtctx->inBuff.buffer.start + mtctx->inBuff.filled, (const char*)input->src + input->pos, toLoad);
+            input->pos += toLoad;
+            mtctx->inBuff.filled += toLoad;
+    }   }
 
     if ( (mtctx->inBuff.filled >= newJobThreshold)  /* filled enough : let's compress */
       && (mtctx->nextJobID <= mtctx->doneJobID + mtctx->jobIDMask) ) {   /* avoid overwriting job round buffer */
diff --git contrib/zstd/lib/compress/zstdmt_compress.h contrib/zstd/lib/compress/zstdmt_compress.h
index fad63b6d8610..0f0fc2b03fc6 100644
--- contrib/zstd/lib/compress/zstdmt_compress.h
+++ contrib/zstd/lib/compress/zstdmt_compress.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
  #ifndef ZSTDMT_COMPRESS_H
@@ -15,10 +15,11 @@
  #endif
 
 
-/* Note : All prototypes defined in this file are labelled experimental.
- *        No guarantee of API continuity is provided on any of them.
- *        In fact, the expectation is that these prototypes will be replaced
- *        by ZSTD_compress_generic() API in the near future */
+/* Note : This is an internal API.
+ *        Some methods are still exposed (ZSTDLIB_API),
+ *        because it used to be the only way to invoke MT compression.
+ *        Now, it's recommended to use ZSTD_compress_generic() instead.
+ *        These methods will stop being exposed in a future version */
 
 /* ===   Dependencies   === */
 #include <stddef.h>                /* size_t */
@@ -67,7 +68,7 @@ ZSTDLIB_API size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
                                      const void* src, size_t srcSize,
                                      const ZSTD_CDict* cdict,
                                            ZSTD_parameters const params,
-                                           unsigned overlapRLog);
+                                           unsigned overlapLog);
 
 ZSTDLIB_API size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx,
                                         const void* dict, size_t dictSize,   /* dict can be released after init, a local copy is preserved within zcs */
diff --git contrib/zstd/lib/decompress/huf_decompress.c contrib/zstd/lib/decompress/huf_decompress.c
index 2a1b70ea5ef2..79ded96bf613 100644
--- contrib/zstd/lib/decompress/huf_decompress.c
+++ contrib/zstd/lib/decompress/huf_decompress.c
@@ -32,38 +32,22 @@
     - Public forum : https://groups.google.com/forum/#!forum/lz4c
 ****************************************************************** */
 
-/* **************************************************************
-*  Compiler specifics
-****************************************************************/
-#ifdef _MSC_VER    /* Visual Studio */
-#  define FORCE_INLINE static __forceinline
-#  pragma warning(disable : 4127)        /* disable: C4127: conditional expression is constant */
-#else
-#  if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L   /* C99 */
-#    ifdef __GNUC__
-#      define FORCE_INLINE static inline __attribute__((always_inline))
-#    else
-#      define FORCE_INLINE static inline
-#    endif
-#  else
-#    define FORCE_INLINE static
-#  endif /* __STDC_VERSION__ */
-#endif
-
-
 /* **************************************************************
 *  Dependencies
 ****************************************************************/
 #include <string.h>     /* memcpy, memset */
 #include "bitstream.h"  /* BIT_* */
+#include "compiler.h"
 #include "fse.h"        /* header compression */
 #define HUF_STATIC_LINKING_ONLY
 #include "huf.h"
+#include "error_private.h"
 
 
 /* **************************************************************
 *  Error Management
 ****************************************************************/
+#define HUF_isError ERR_isError
 #define HUF_STATIC_ASSERT(c) { enum { HUF_static_assert = 1/(int)(!!(c)) }; }   /* use only *after* variable declarations */
 
 
@@ -180,7 +164,7 @@ static BYTE HUF_decodeSymbolX2(BIT_DStream_t* Dstream, const HUF_DEltX2* dt, con
     if (MEM_64bits()) \
         HUF_DECODE_SYMBOLX2_0(ptr, DStreamPtr)
 
-FORCE_INLINE size_t HUF_decodeStreamX2(BYTE* p, BIT_DStream_t* const bitDPtr, BYTE* const pEnd, const HUF_DEltX2* const dt, const U32 dtLog)
+HINT_INLINE size_t HUF_decodeStreamX2(BYTE* p, BIT_DStream_t* const bitDPtr, BYTE* const pEnd, const HUF_DEltX2* const dt, const U32 dtLog)
 {
     BYTE* const pStart = p;
 
@@ -639,7 +623,7 @@ static U32 HUF_decodeLastSymbolX4(void* op, BIT_DStream_t* DStream, const HUF_DE
     if (MEM_64bits()) \
         ptr += HUF_decodeSymbolX4(ptr, DStreamPtr, dt, dtLog)
 
-FORCE_INLINE size_t HUF_decodeStreamX4(BYTE* p, BIT_DStream_t* bitDPtr, BYTE* const pEnd, const HUF_DEltX4* const dt, const U32 dtLog)
+HINT_INLINE size_t HUF_decodeStreamX4(BYTE* p, BIT_DStream_t* bitDPtr, BYTE* const pEnd, const HUF_DEltX4* const dt, const U32 dtLog)
 {
     BYTE* const pStart = p;
 
@@ -917,11 +901,11 @@ static const algo_time_t algoTime[16 /* Quantization */][3 /* single, double, qu
 *   Tells which decoder is likely to decode faster,
 *   based on a set of pre-determined metrics.
 *   @return : 0==HUF_decompress4X2, 1==HUF_decompress4X4 .
-*   Assumption : 0 < cSrcSize < dstSize <= 128 KB */
+*   Assumption : 0 < cSrcSize, dstSize <= 128 KB */
 U32 HUF_selectDecoder (size_t dstSize, size_t cSrcSize)
 {
     /* decoder timing evaluation */
-    U32 const Q = (U32)(cSrcSize * 16 / dstSize);   /* Q < 16 since dstSize > cSrcSize */
+    U32 const Q = cSrcSize >= dstSize ? 15 : (U32)(cSrcSize * 16 / dstSize);   /* Q < 16 */
     U32 const D256 = (U32)(dstSize >> 8);
     U32 const DTime0 = algoTime[Q][0].tableTime + (algoTime[Q][0].decode256Time * D256);
     U32 DTime1 = algoTime[Q][1].tableTime + (algoTime[Q][1].decode256Time * D256);
@@ -977,7 +961,7 @@ size_t HUF_decompress4X_hufOnly_wksp(HUF_DTable* dctx, void* dst,
 {
     /* validation checks */
     if (dstSize == 0) return ERROR(dstSize_tooSmall);
-    if ((cSrcSize >= dstSize) || (cSrcSize <= 1)) return ERROR(corruption_detected);   /* invalid */
+    if (cSrcSize == 0) return ERROR(corruption_detected);
 
     {   U32 const algoNb = HUF_selectDecoder(dstSize, cSrcSize);
         return algoNb ? HUF_decompress4X4_DCtx_wksp(dctx, dst, dstSize, cSrc, cSrcSize, workSpace, wkspSize):
diff --git contrib/zstd/lib/decompress/zstd_decompress.c contrib/zstd/lib/decompress/zstd_decompress.c
index 003d703a5eb3..d2bc545e52c5 100644
--- contrib/zstd/lib/decompress/zstd_decompress.c
+++ contrib/zstd/lib/decompress/zstd_decompress.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -53,15 +53,6 @@
 #  include "zstd_legacy.h"
 #endif
 
-#if defined(_MSC_VER) && !defined(_M_IA64)  /* _mm_prefetch() is not defined for ia64 */
-#  include <mmintrin.h>   /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */
-#  define ZSTD_PREFETCH(ptr)   _mm_prefetch((const char*)ptr, _MM_HINT_T0)
-#elif defined(__GNUC__)
-#  define ZSTD_PREFETCH(ptr)   __builtin_prefetch(ptr, 0, 0)
-#else
-#  define ZSTD_PREFETCH(ptr)   /* disabled */
-#endif
-
 
 /*-*************************************
 *  Errors
@@ -95,7 +86,7 @@ typedef struct {
     HUF_DTable hufTable[HUF_DTABLE_SIZE(HufLog)];  /* can accommodate HUF_decompress4X */
     U32 workspace[HUF_DECOMPRESS_WORKSPACE_SIZE_U32];
     U32 rep[ZSTD_REP_NUM];
-} ZSTD_entropyTables_t;
+} ZSTD_entropyDTables_t;
 
 struct ZSTD_DCtx_s
 {
@@ -103,7 +94,7 @@ struct ZSTD_DCtx_s
     const FSE_DTable* MLTptr;
     const FSE_DTable* OFTptr;
     const HUF_DTable* HUFptr;
-    ZSTD_entropyTables_t entropy;
+    ZSTD_entropyDTables_t entropy;
     const void* previousDstEnd;   /* detect continuity */
     const void* base;             /* start of current segment */
     const void* vBase;            /* virtual start of previous segment if it was just before current one */
@@ -304,15 +295,18 @@ size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t src
                 return ZSTD_skippableHeaderSize; /* magic number + frame length */
             memset(zfhPtr, 0, sizeof(*zfhPtr));
             zfhPtr->frameContentSize = MEM_readLE32((const char *)src + 4);
-            zfhPtr->windowSize = 0; /* windowSize==0 means a frame is skippable */
+            zfhPtr->frameType = ZSTD_skippableFrame;
+            zfhPtr->windowSize = 0;
             return 0;
         }
         return ERROR(prefix_unknown);
     }
 
     /* ensure there is enough `srcSize` to fully read/decode frame header */
-    { size_t const fhsize = ZSTD_frameHeaderSize(src, srcSize);
-      if (srcSize < fhsize) return fhsize; }
+    {   size_t const fhsize = ZSTD_frameHeaderSize(src, srcSize);
+        if (srcSize < fhsize) return fhsize;
+        zfhPtr->headerSize = (U32)fhsize;
+    }
 
     {   BYTE const fhdByte = ip[4];
         size_t pos = 5;
@@ -320,24 +314,23 @@ size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t src
         U32 const checksumFlag = (fhdByte>>2)&1;
         U32 const singleSegment = (fhdByte>>5)&1;
         U32 const fcsID = fhdByte>>6;
-        U32 const windowSizeMax = 1U << ZSTD_WINDOWLOG_MAX;
-        U32 windowSize = 0;
+        U64 windowSize = 0;
         U32 dictID = 0;
-        U64 frameContentSize = 0;
+        U64 frameContentSize = ZSTD_CONTENTSIZE_UNKNOWN;
         if ((fhdByte & 0x08) != 0)
-            return ERROR(frameParameter_unsupported);   /* reserved bits, must be zero */
+            return ERROR(frameParameter_unsupported); /* reserved bits, must be zero */
+
         if (!singleSegment) {
             BYTE const wlByte = ip[pos++];
             U32 const windowLog = (wlByte >> 3) + ZSTD_WINDOWLOG_ABSOLUTEMIN;
             if (windowLog > ZSTD_WINDOWLOG_MAX)
                 return ERROR(frameParameter_windowTooLarge);
-            windowSize = (1U << windowLog);
+            windowSize = (1ULL << windowLog);
             windowSize += (windowSize >> 3) * (wlByte&7);
         }
-
         switch(dictIDSizeCode)
         {
-            default:   /* impossible */
+            default: assert(0);  /* impossible */
             case 0 : break;
             case 1 : dictID = ip[pos]; pos++; break;
             case 2 : dictID = MEM_readLE16(ip+pos); pos+=2; break;
@@ -345,14 +338,15 @@ size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t src
         }
         switch(fcsID)
         {
-            default:   /* impossible */
+            default: assert(0);  /* impossible */
             case 0 : if (singleSegment) frameContentSize = ip[pos]; break;
             case 1 : frameContentSize = MEM_readLE16(ip+pos)+256; break;
             case 2 : frameContentSize = MEM_readLE32(ip+pos); break;
             case 3 : frameContentSize = MEM_readLE64(ip+pos); break;
         }
-        if (!windowSize) windowSize = (U32)frameContentSize;
-        if (windowSize > windowSizeMax) return ERROR(frameParameter_windowTooLarge);
+        if (singleSegment) windowSize = frameContentSize;
+
+        zfhPtr->frameType = ZSTD_frame;
         zfhPtr->frameContentSize = frameContentSize;
         zfhPtr->windowSize = windowSize;
         zfhPtr->dictID = dictID;
@@ -362,10 +356,10 @@ size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t src
 }
 
 /** ZSTD_getFrameContentSize() :
-*   compatible with legacy mode
-*   @return : decompressed size of the single frame pointed to be `src` if known, otherwise
-*             - ZSTD_CONTENTSIZE_UNKNOWN if the size cannot be determined
-*             - ZSTD_CONTENTSIZE_ERROR if an error occurred (e.g. invalid magic number, srcSize too small) */
+ *  compatible with legacy mode
+ * @return : decompressed size of the single frame pointed to be `src` if known, otherwise
+ *         - ZSTD_CONTENTSIZE_UNKNOWN if the size cannot be determined
+ *         - ZSTD_CONTENTSIZE_ERROR if an error occurred (e.g. invalid magic number, srcSize too small) */
 unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize)
 {
 #if defined(ZSTD_LEGACY_SUPPORT) && (ZSTD_LEGACY_SUPPORT >= 1)
@@ -374,17 +368,14 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize)
         return ret == 0 ? ZSTD_CONTENTSIZE_UNKNOWN : ret;
     }
 #endif
-    {   ZSTD_frameHeader fParams;
-        if (ZSTD_getFrameHeader(&fParams, src, srcSize) != 0) return ZSTD_CONTENTSIZE_ERROR;
-        if (fParams.windowSize == 0) {
-            /* Either skippable or empty frame, size == 0 either way */
+    {   ZSTD_frameHeader zfh;
+        if (ZSTD_getFrameHeader(&zfh, src, srcSize) != 0)
+            return ZSTD_CONTENTSIZE_ERROR;
+        if (zfh.frameType == ZSTD_skippableFrame) {
             return 0;
-        } else if (fParams.frameContentSize != 0) {
-            return fParams.frameContentSize;
         } else {
-            return ZSTD_CONTENTSIZE_UNKNOWN;
-        }
-    }
+            return zfh.frameContentSize;
+    }   }
 }
 
 /** ZSTD_findDecompressedSize() :
@@ -442,7 +433,8 @@ unsigned long long ZSTD_findDecompressedSize(const void* src, size_t srcSize)
 *   compatible with legacy mode
 *   @return : decompressed size if known, 0 otherwise
               note : 0 can mean any of the following :
-                   - decompressed size is not present within frame header
+                   - frame content is empty
+                   - decompressed size field is not present in frame header
                    - frame header unknown / not supported
                    - frame header not complete (`srcSize` too small) */
 unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize)
@@ -460,19 +452,13 @@ static size_t ZSTD_decodeFrameHeader(ZSTD_DCtx* dctx, const void* src, size_t he
     size_t const result = ZSTD_getFrameHeader(&(dctx->fParams), src, headerSize);
     if (ZSTD_isError(result)) return result;  /* invalid header */
     if (result>0) return ERROR(srcSize_wrong);   /* headerSize too small */
-    if (dctx->fParams.dictID && (dctx->dictID != dctx->fParams.dictID)) return ERROR(dictionary_wrong);
+    if (dctx->fParams.dictID && (dctx->dictID != dctx->fParams.dictID))
+        return ERROR(dictionary_wrong);
     if (dctx->fParams.checksumFlag) XXH64_reset(&dctx->xxhState, 0);
     return 0;
 }
 
 
-typedef struct
-{
-    blockType_e blockType;
-    U32 lastBlock;
-    U32 origSize;
-} blockProperties_t;
-
 /*! ZSTD_getcBlockSize() :
 *   Provides the size of compressed block from block header `src` */
 size_t ZSTD_getcBlockSize(const void* src, size_t srcSize,
@@ -958,7 +944,7 @@ static seq_t ZSTD_decodeSequence(seqState_t* seqState)
 }
 
 
-FORCE_INLINE
+HINT_INLINE
 size_t ZSTD_execSequence(BYTE* op,
                          BYTE* const oend, seq_t sequence,
                          const BYTE** litPtr, const BYTE* const litLimit,
@@ -1102,7 +1088,7 @@ static size_t ZSTD_decompressSequences(
 }
 
 
-FORCE_INLINE seq_t ZSTD_decodeSequenceLong_generic(seqState_t* seqState, int const longOffsets)
+FORCE_INLINE_TEMPLATE seq_t ZSTD_decodeSequenceLong_generic(seqState_t* seqState, int const longOffsets)
 {
     seq_t seq;
 
@@ -1202,7 +1188,7 @@ static seq_t ZSTD_decodeSequenceLong(seqState_t* seqState, unsigned const window
     }
 }
 
-FORCE_INLINE
+HINT_INLINE
 size_t ZSTD_execSequenceLong(BYTE* op,
                                 BYTE* const oend, seq_t sequence,
                                 const BYTE** litPtr, const BYTE* const litLimit,
@@ -1338,7 +1324,7 @@ static size_t ZSTD_decompressSequencesLong(
             seq_t const sequence = ZSTD_decodeSequenceLong(&seqState, windowSize32);
             size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[(seqNb-ADVANCED_SEQS) & STOSEQ_MASK], &litPtr, litEnd, base, vBase, dictEnd);
             if (ZSTD_isError(oneSeqSize)) return oneSeqSize;
-            ZSTD_PREFETCH(sequence.match);
+            PREFETCH(sequence.match);
             sequences[seqNb&STOSEQ_MASK] = sequence;
             op += oneSeqSize;
         }
@@ -1440,28 +1426,26 @@ size_t ZSTD_generateNxBytes(void* dst, size_t dstCapacity, BYTE byte, size_t len
 size_t ZSTD_findFrameCompressedSize(const void *src, size_t srcSize)
 {
 #if defined(ZSTD_LEGACY_SUPPORT) && (ZSTD_LEGACY_SUPPORT >= 1)
-    if (ZSTD_isLegacy(src, srcSize)) return ZSTD_findFrameCompressedSizeLegacy(src, srcSize);
+    if (ZSTD_isLegacy(src, srcSize))
+        return ZSTD_findFrameCompressedSizeLegacy(src, srcSize);
 #endif
-    if (srcSize >= ZSTD_skippableHeaderSize &&
-            (MEM_readLE32(src) & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START) {
+    if ( (srcSize >= ZSTD_skippableHeaderSize)
+      && (MEM_readLE32(src) & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START ) {
         return ZSTD_skippableHeaderSize + MEM_readLE32((const BYTE*)src + 4);
     } else {
         const BYTE* ip = (const BYTE*)src;
         const BYTE* const ipstart = ip;
         size_t remainingSize = srcSize;
-        ZSTD_frameHeader fParams;
-
-        size_t const headerSize = ZSTD_frameHeaderSize(ip, remainingSize);
-        if (ZSTD_isError(headerSize)) return headerSize;
+        ZSTD_frameHeader zfh;
 
-        /* Frame Header */
-        {   size_t const ret = ZSTD_getFrameHeader(&fParams, ip, remainingSize);
+        /* Extract Frame Header */
+        {   size_t const ret = ZSTD_getFrameHeader(&zfh, src, srcSize);
             if (ZSTD_isError(ret)) return ret;
             if (ret > 0) return ERROR(srcSize_wrong);
         }
 
-        ip += headerSize;
-        remainingSize -= headerSize;
+        ip += zfh.headerSize;
+        remainingSize -= zfh.headerSize;
 
         /* Loop on each block */
         while (1) {
@@ -1469,7 +1453,8 @@ size_t ZSTD_findFrameCompressedSize(const void *src, size_t srcSize)
             size_t const cBlockSize = ZSTD_getcBlockSize(ip, remainingSize, &blockProperties);
             if (ZSTD_isError(cBlockSize)) return cBlockSize;
 
-            if (ZSTD_blockHeaderSize + cBlockSize > remainingSize) return ERROR(srcSize_wrong);
+            if (ZSTD_blockHeaderSize + cBlockSize > remainingSize)
+                return ERROR(srcSize_wrong);
 
             ip += ZSTD_blockHeaderSize + cBlockSize;
             remainingSize -= ZSTD_blockHeaderSize + cBlockSize;
@@ -1477,7 +1462,7 @@ size_t ZSTD_findFrameCompressedSize(const void *src, size_t srcSize)
             if (blockProperties.lastBlock) break;
         }
 
-        if (fParams.checksumFlag) {   /* Frame content checksum */
+        if (zfh.checksumFlag) {   /* Final frame content checksum */
             if (remainingSize < 4) return ERROR(srcSize_wrong);
             ip += 4;
             remainingSize -= 4;
@@ -1490,8 +1475,8 @@ size_t ZSTD_findFrameCompressedSize(const void *src, size_t srcSize)
 /*! ZSTD_decompressFrame() :
 *   @dctx must be properly initialized */
 static size_t ZSTD_decompressFrame(ZSTD_DCtx* dctx,
-                                 void* dst, size_t dstCapacity,
-                                 const void** srcPtr, size_t *srcSizePtr)
+                                   void* dst, size_t dstCapacity,
+                             const void** srcPtr, size_t *srcSizePtr)
 {
     const BYTE* ip = (const BYTE*)(*srcPtr);
     BYTE* const ostart = (BYTE* const)dst;
@@ -1500,13 +1485,15 @@ static size_t ZSTD_decompressFrame(ZSTD_DCtx* dctx,
     size_t remainingSize = *srcSizePtr;
 
     /* check */
-    if (remainingSize < ZSTD_frameHeaderSize_min+ZSTD_blockHeaderSize) return ERROR(srcSize_wrong);
+    if (remainingSize < ZSTD_frameHeaderSize_min+ZSTD_blockHeaderSize)
+        return ERROR(srcSize_wrong);
 
     /* Frame Header */
     {   size_t const frameHeaderSize = ZSTD_frameHeaderSize(ip, ZSTD_frameHeaderSize_prefix);
         if (ZSTD_isError(frameHeaderSize)) return frameHeaderSize;
-        if (remainingSize < frameHeaderSize+ZSTD_blockHeaderSize) return ERROR(srcSize_wrong);
-        CHECK_F(ZSTD_decodeFrameHeader(dctx, ip, frameHeaderSize));
+        if (remainingSize < frameHeaderSize+ZSTD_blockHeaderSize)
+            return ERROR(srcSize_wrong);
+        CHECK_F( ZSTD_decodeFrameHeader(dctx, ip, frameHeaderSize) );
         ip += frameHeaderSize; remainingSize -= frameHeaderSize;
     }
 
@@ -1538,14 +1525,15 @@ static size_t ZSTD_decompressFrame(ZSTD_DCtx* dctx,
         }
 
         if (ZSTD_isError(decodedSize)) return decodedSize;
-        if (dctx->fParams.checksumFlag) XXH64_update(&dctx->xxhState, op, decodedSize);
+        if (dctx->fParams.checksumFlag)
+            XXH64_update(&dctx->xxhState, op, decodedSize);
         op += decodedSize;
         ip += cBlockSize;
         remainingSize -= cBlockSize;
         if (blockProperties.lastBlock) break;
     }
 
-    if (dctx->fParams.checksumFlag) {   /* Frame content checksum verification */
+    if (dctx->fParams.checksumFlag) { /* Frame content checksum verification */
         U32 const checkCalc = (U32)XXH64_digest(&dctx->xxhState);
         U32 checkRead;
         if (remainingSize<4) return ERROR(checksum_wrong);
@@ -1567,17 +1555,13 @@ static size_t ZSTD_DDictDictSize(const ZSTD_DDict* ddict);
 static size_t ZSTD_decompressMultiFrame(ZSTD_DCtx* dctx,
                                         void* dst, size_t dstCapacity,
                                   const void* src, size_t srcSize,
-                                  const void *dict, size_t dictSize,
+                                  const void* dict, size_t dictSize,
                                   const ZSTD_DDict* ddict)
 {
     void* const dststart = dst;
+    assert(dict==NULL || ddict==NULL);  /* either dict or ddict set, not both */
 
     if (ddict) {
-        if (dict) {
-            /* programmer error, these two cases should be mutually exclusive */
-            return ERROR(GENERIC);
-        }
-
         dict = ZSTD_DDictDictContent(ddict);
         dictSize = ZSTD_DDictDictSize(ddict);
     }
@@ -1590,7 +1574,7 @@ static size_t ZSTD_decompressMultiFrame(ZSTD_DCtx* dctx,
             size_t decodedSize;
             size_t const frameSize = ZSTD_findFrameCompressedSizeLegacy(src, srcSize);
             if (ZSTD_isError(frameSize)) return frameSize;
-            /* legacy support is incompatible with static dctx */
+            /* legacy support is not compatible with static dctx */
             if (dctx->staticSize) return ERROR(memory_allocation);
 
             decodedSize = ZSTD_decompressLegacy(dst, dstCapacity, src, frameSize, dict, dictSize);
@@ -1613,16 +1597,13 @@ static size_t ZSTD_decompressMultiFrame(ZSTD_DCtx* dctx,
                     return ERROR(srcSize_wrong);
                 skippableSize = MEM_readLE32((const BYTE *)src + 4) +
                                 ZSTD_skippableHeaderSize;
-                if (srcSize < skippableSize) {
-                    return ERROR(srcSize_wrong);
-                }
+                if (srcSize < skippableSize) return ERROR(srcSize_wrong);
 
                 src = (const BYTE *)src + skippableSize;
                 srcSize -= skippableSize;
                 continue;
-            } else {
-                return ERROR(prefix_unknown);
             }
+            return ERROR(prefix_unknown);
         }
 
         if (ddict) {
@@ -1638,12 +1619,11 @@ static size_t ZSTD_decompressMultiFrame(ZSTD_DCtx* dctx,
         {   const size_t res = ZSTD_decompressFrame(dctx, dst, dstCapacity,
                                                     &src, &srcSize);
             if (ZSTD_isError(res)) return res;
-            /* don't need to bounds check this, ZSTD_decompressFrame will have
-             * already */
+            /* no need to bound check, ZSTD_decompressFrame already has */
             dst = (BYTE*)dst + res;
             dstCapacity -= res;
         }
-    }
+    }  /* while (srcSize >= ZSTD_frameHeaderSize_prefix) */
 
     if (srcSize) return ERROR(srcSize_wrong); /* input not entirely consumed */
 
@@ -1742,7 +1722,7 @@ size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, c
             return 0;
         }
         dctx->expected = 0;   /* not necessary to copy more */
-
+        /* fall-through */
     case ZSTDds_decodeFrameHeader:
         assert(src != NULL);
         memcpy(dctx->headerBuffer + ZSTD_frameHeaderSize_prefix, src, dctx->expected);
@@ -1853,7 +1833,7 @@ static size_t ZSTD_refDictContent(ZSTD_DCtx* dctx, const void* dict, size_t dict
 /* ZSTD_loadEntropy() :
  * dict : must point at beginning of a valid zstd dictionary
  * @return : size of entropy tables read */
-static size_t ZSTD_loadEntropy(ZSTD_entropyTables_t* entropy, const void* const dict, size_t const dictSize)
+static size_t ZSTD_loadEntropy(ZSTD_entropyDTables_t* entropy, const void* const dict, size_t const dictSize)
 {
     const BYTE* dictPtr = (const BYTE*)dict;
     const BYTE* const dictEnd = dictPtr + dictSize;
@@ -1931,8 +1911,9 @@ static size_t ZSTD_decompress_insertDictionary(ZSTD_DCtx* dctx, const void* dict
 
 size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx* dctx, const void* dict, size_t dictSize)
 {
-    CHECK_F(ZSTD_decompressBegin(dctx));
-    if (dict && dictSize) CHECK_E(ZSTD_decompress_insertDictionary(dctx, dict, dictSize), dictionary_corrupted);
+    CHECK_F( ZSTD_decompressBegin(dctx) );
+    if (dict && dictSize)
+        CHECK_E(ZSTD_decompress_insertDictionary(dctx, dict, dictSize), dictionary_corrupted);
     return 0;
 }
 
@@ -1943,7 +1924,7 @@ struct ZSTD_DDict_s {
     void* dictBuffer;
     const void* dictContent;
     size_t dictSize;
-    ZSTD_entropyTables_t entropy;
+    ZSTD_entropyDTables_t entropy;
     U32 dictID;
     U32 entropyPresent;
     ZSTD_customMem cMem;
@@ -1961,7 +1942,7 @@ static size_t ZSTD_DDictDictSize(const ZSTD_DDict* ddict)
 
 size_t ZSTD_decompressBegin_usingDDict(ZSTD_DCtx* dstDCtx, const ZSTD_DDict* ddict)
 {
-    CHECK_F(ZSTD_decompressBegin(dstDCtx));
+    CHECK_F( ZSTD_decompressBegin(dstDCtx) );
     if (ddict) {   /* support begin on NULL */
         dstDCtx->dictID = ddict->dictID;
         dstDCtx->base = ddict->dictContent;
@@ -2142,7 +2123,7 @@ unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict)
  *  ZSTD_getFrameHeader(), which will provide a more precise error code. */
 unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize)
 {
-    ZSTD_frameHeader zfp = { 0 , 0 , 0 , 0 };
+    ZSTD_frameHeader zfp = { 0, 0, ZSTD_frame, 0, 0, 0 };
     size_t const hError = ZSTD_getFrameHeader(&zfp, src, srcSize);
     if (ZSTD_isError(hError)) return 0;
     return zfp.dictID;
@@ -2237,7 +2218,7 @@ size_t ZSTD_setDStreamParameter(ZSTD_DStream* zds,
 {
     switch(paramType)
     {
-        default : return ERROR(parameter_unknown);
+        default : return ERROR(parameter_unsupported);
         case DStream_p_maxWindowSize : zds->maxWindowSize = paramValue ? paramValue : (U32)(-1); break;
     }
     return 0;
@@ -2254,16 +2235,19 @@ size_t ZSTD_estimateDStreamSize(size_t windowSize)
     size_t const blockSize = MIN(windowSize, ZSTD_BLOCKSIZE_MAX);
     size_t const inBuffSize = blockSize;  /* no block can be larger */
     size_t const outBuffSize = windowSize + blockSize + (WILDCOPY_OVERLENGTH * 2);
-    return sizeof(ZSTD_DStream) + ZSTD_estimateDCtxSize() + inBuffSize + outBuffSize;
+    return ZSTD_estimateDCtxSize() + inBuffSize + outBuffSize;
 }
 
 ZSTDLIB_API size_t ZSTD_estimateDStreamSize_fromFrame(const void* src, size_t srcSize)
 {
-    ZSTD_frameHeader fh;
-    size_t const err = ZSTD_getFrameHeader(&fh, src, srcSize);
+    U32 const windowSizeMax = 1U << ZSTD_WINDOWLOG_MAX;
+    ZSTD_frameHeader zfh;
+    size_t const err = ZSTD_getFrameHeader(&zfh, src, srcSize);
     if (ZSTD_isError(err)) return err;
     if (err>0) return ERROR(srcSize_wrong);
-    return ZSTD_estimateDStreamSize(fh.windowSize);
+    if (zfh.windowSize > windowSizeMax)
+        return ERROR(frameParameter_windowTooLarge);
+    return ZSTD_estimateDStreamSize((size_t)zfh.windowSize);
 }
 
 
@@ -2314,16 +2298,14 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
                         size_t const dictSize = zds->ddict ? zds->ddict->dictSize : 0;
                         /* legacy support is incompatible with static dctx */
                         if (zds->staticSize) return ERROR(memory_allocation);
-                        CHECK_F(ZSTD_initLegacyStream(&zds->legacyContext, zds->previousLegacyVersion, legacyVersion,
-                                                       dict, dictSize));
+                        CHECK_F(ZSTD_initLegacyStream(&zds->legacyContext,
+                                    zds->previousLegacyVersion, legacyVersion,
+                                    dict, dictSize));
                         zds->legacyVersion = zds->previousLegacyVersion = legacyVersion;
-                        return ZSTD_decompressLegacyStream(zds->legacyContext, zds->legacyVersion, output, input);
-                    } else {
-                        return hSize; /* error */
+                        return ZSTD_decompressLegacyStream(zds->legacyContext, legacyVersion, output, input);
                     }
-#else
-                    return hSize;
 #endif
+                    return hSize; /* error */
                 }
                 if (hSize != 0) {   /* need more input */
                     size_t const toLoad = hSize - zds->lhSize;   /* if hSize!=0, hSize > zds->lhSize */
@@ -2374,8 +2356,8 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
             if (zds->fParams.windowSize > zds->maxWindowSize) return ERROR(frameParameter_windowTooLarge);
 
             /* Adapt buffer sizes to frame header instructions */
-            {   size_t const blockSize = MIN(zds->fParams.windowSize, ZSTD_BLOCKSIZE_MAX);
-                size_t const neededOutSize = zds->fParams.windowSize + blockSize + WILDCOPY_OVERLENGTH * 2;
+            {   size_t const blockSize = (size_t)(MIN(zds->fParams.windowSize, ZSTD_BLOCKSIZE_MAX));
+                size_t const neededOutSize = (size_t)(zds->fParams.windowSize + blockSize + WILDCOPY_OVERLENGTH * 2);
                 zds->blockSize = blockSize;
                 if ((zds->inBuffSize < blockSize) || (zds->outBuffSize < neededOutSize)) {
                     size_t const bufferSize = blockSize + neededOutSize;
@@ -2400,7 +2382,7 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
                     zds->outBuffSize = neededOutSize;
             }   }
             zds->streamStage = zdss_read;
-            /* pass-through */
+            /* fall-through */
 
         case zdss_read:
             DEBUGLOG(5, "stage zdss_read");
@@ -2425,8 +2407,7 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
             }   }
             if (ip==iend) { someMoreWork = 0; break; }   /* no more input */
             zds->streamStage = zdss_load;
-            /* pass-through */
-
+            /* fall-through */
         case zdss_load:
             {   size_t const neededInSize = ZSTD_nextSrcSizeToDecompress(zds);
                 size_t const toLoad = neededInSize - zds->inPos;   /* should always be <= remaining space within inBuff */
@@ -2448,8 +2429,7 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
                     zds->outEnd = zds->outStart +  decodedSize;
             }   }
             zds->streamStage = zdss_flush;
-            /* pass-through */
-
+            /* fall-through */
         case zdss_flush:
             {   size_t const toFlushSize = zds->outEnd - zds->outStart;
                 size_t const flushedSize = ZSTD_limitCopy(op, oend-op, zds->outBuff + zds->outStart, toFlushSize);
diff --git contrib/zstd/lib/deprecated/zbuff.h contrib/zstd/lib/deprecated/zbuff.h
index f62091976c76..e6ea84ad3b45 100644
--- contrib/zstd/lib/deprecated/zbuff.h
+++ contrib/zstd/lib/deprecated/zbuff.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 /* ***************************************************************
diff --git contrib/zstd/lib/deprecated/zbuff_common.c contrib/zstd/lib/deprecated/zbuff_common.c
index 9fff6eb2095e..2de45bec1705 100644
--- contrib/zstd/lib/deprecated/zbuff_common.c
+++ contrib/zstd/lib/deprecated/zbuff_common.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 /*-*************************************
@@ -23,4 +23,3 @@ unsigned ZBUFF_isError(size_t errorCode) { return ERR_isError(errorCode); }
 /*! ZBUFF_getErrorName() :
 *   provides error code string from function result (useful for debugging) */
 const char* ZBUFF_getErrorName(size_t errorCode) { return ERR_getErrorName(errorCode); }
-
diff --git contrib/zstd/lib/deprecated/zbuff_compress.c contrib/zstd/lib/deprecated/zbuff_compress.c
index 5a37a0027ae6..4444e95d8fd1 100644
--- contrib/zstd/lib/deprecated/zbuff_compress.c
+++ contrib/zstd/lib/deprecated/zbuff_compress.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/lib/deprecated/zbuff_decompress.c contrib/zstd/lib/deprecated/zbuff_decompress.c
index d9c155e08eb8..a819d7f40429 100644
--- contrib/zstd/lib/deprecated/zbuff_decompress.c
+++ contrib/zstd/lib/deprecated/zbuff_decompress.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/lib/dictBuilder/cover.c contrib/zstd/lib/dictBuilder/cover.c
index 06c1b9fadb7a..3d445ae8b81d 100644
--- contrib/zstd/lib/dictBuilder/cover.c
+++ contrib/zstd/lib/dictBuilder/cover.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 /* *****************************************************************************
@@ -714,11 +714,9 @@ typedef struct COVER_best_s {
  * Initialize the `COVER_best_t`.
  */
 static void COVER_best_init(COVER_best_t *best) {
-  if (!best) {
-    return;
-  }
-  pthread_mutex_init(&best->mutex, NULL);
-  pthread_cond_init(&best->cond, NULL);
+  if (best==NULL) return; /* compatible with init on NULL */
+  (void)pthread_mutex_init(&best->mutex, NULL);
+  (void)pthread_cond_init(&best->cond, NULL);
   best->liveJobs = 0;
   best->dict = NULL;
   best->dictSize = 0;
diff --git contrib/zstd/lib/dictBuilder/zdict.c contrib/zstd/lib/dictBuilder/zdict.c
index 742586eacdd2..c2871c2ccfbc 100644
--- contrib/zstd/lib/dictBuilder/zdict.c
+++ contrib/zstd/lib/dictBuilder/zdict.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -695,7 +695,7 @@ static size_t ZDICT_analyzeEntropy(void*  dstBuffer, size_t maxDstSize,
         DISPLAYLEVEL(1, "Not enough memory \n");
         goto _cleanup;
     }
-    if (offcodeMax>OFFCODE_MAX) { eSize = ERROR(dictionary_wrong); goto _cleanup; }   /* too large dictionary */
+    if (offcodeMax>OFFCODE_MAX) { eSize = ERROR(dictionaryCreation_failed); goto _cleanup; }   /* too large dictionary */
     for (u=0; u<256; u++) countLit[u] = 1;   /* any character must be described */
     for (u=0; u<=offcodeMax; u++) offcodeCount[u] = 1;
     for (u=0; u<=MaxML; u++) matchLengthCount[u] = 1;
diff --git contrib/zstd/lib/dictBuilder/zdict.h contrib/zstd/lib/dictBuilder/zdict.h
index 7bfbb351a1dd..3d72a465e5e7 100644
--- contrib/zstd/lib/dictBuilder/zdict.h
+++ contrib/zstd/lib/dictBuilder/zdict.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef DICTBUILDER_H_001
diff --git contrib/zstd/lib/legacy/zstd_legacy.h contrib/zstd/lib/legacy/zstd_legacy.h
index 3c9798f880e0..1126e24669f3 100644
--- contrib/zstd/lib/legacy/zstd_legacy.h
+++ contrib/zstd/lib/legacy/zstd_legacy.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTD_LEGACY_H
@@ -123,6 +123,7 @@ MEM_STATIC size_t ZSTD_decompressLegacy(
                const void* dict,size_t dictSize)
 {
     U32 const version = ZSTD_isLegacy(src, compressedSize);
+    (void)dst; (void)dstCapacity; (void)dict; (void)dictSize;  /* unused when ZSTD_LEGACY_SUPPORT >= 8 */
     switch(version)
     {
 #if (ZSTD_LEGACY_SUPPORT <= 1)
@@ -223,6 +224,7 @@ MEM_STATIC size_t ZSTD_freeLegacyStreamContext(void* legacyContext, U32 version)
         case 1 :
         case 2 :
         case 3 :
+            (void)legacyContext;
             return ERROR(version_unsupported);
 #if (ZSTD_LEGACY_SUPPORT <= 4)
         case 4 : return ZBUFFv04_freeDCtx((ZBUFFv04_DCtx*)legacyContext);
@@ -250,6 +252,7 @@ MEM_STATIC size_t ZSTD_initLegacyStream(void** legacyContext, U32 prevVersion, U
         case 1 :
         case 2 :
         case 3 :
+            (void)dict; (void)dictSize;
             return 0;
 #if (ZSTD_LEGACY_SUPPORT <= 4)
         case 4 :
@@ -306,6 +309,7 @@ MEM_STATIC size_t ZSTD_decompressLegacyStream(void* legacyContext, U32 version,
         case 1 :
         case 2 :
         case 3 :
+            (void)legacyContext; (void)output; (void)input;
             return ERROR(version_unsupported);
 #if (ZSTD_LEGACY_SUPPORT <= 4)
         case 4 :
diff --git contrib/zstd/lib/legacy/zstd_v01.c contrib/zstd/lib/legacy/zstd_v01.c
index cf5354d6a9b6..45f421ae6f2c 100644
--- contrib/zstd/lib/legacy/zstd_v01.c
+++ contrib/zstd/lib/legacy/zstd_v01.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/lib/legacy/zstd_v01.h contrib/zstd/lib/legacy/zstd_v01.h
index 13cb3acfdc3b..a91c6a133bac 100644
--- contrib/zstd/lib/legacy/zstd_v01.h
+++ contrib/zstd/lib/legacy/zstd_v01.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTD_V01_H_28739879432
diff --git contrib/zstd/lib/legacy/zstd_v02.c contrib/zstd/lib/legacy/zstd_v02.c
index 3cf8f4778250..dc1ec0e7c678 100644
--- contrib/zstd/lib/legacy/zstd_v02.c
+++ contrib/zstd/lib/legacy/zstd_v02.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/lib/legacy/zstd_v02.h contrib/zstd/lib/legacy/zstd_v02.h
index d14f0293cbe2..63cb3b8d578f 100644
--- contrib/zstd/lib/legacy/zstd_v02.h
+++ contrib/zstd/lib/legacy/zstd_v02.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTD_V02_H_4174539423
diff --git contrib/zstd/lib/legacy/zstd_v03.c contrib/zstd/lib/legacy/zstd_v03.c
index f438330a4692..8257de7e6cd3 100644
--- contrib/zstd/lib/legacy/zstd_v03.c
+++ contrib/zstd/lib/legacy/zstd_v03.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/lib/legacy/zstd_v03.h contrib/zstd/lib/legacy/zstd_v03.h
index 07f7597bb7c3..e38e0109b136 100644
--- contrib/zstd/lib/legacy/zstd_v03.h
+++ contrib/zstd/lib/legacy/zstd_v03.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTD_V03_H_298734209782
diff --git contrib/zstd/lib/legacy/zstd_v04.c contrib/zstd/lib/legacy/zstd_v04.c
index 8b8e23cb09cb..951561a6cc8c 100644
--- contrib/zstd/lib/legacy/zstd_v04.c
+++ contrib/zstd/lib/legacy/zstd_v04.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -2776,7 +2776,7 @@ static size_t ZSTD_decodeFrameHeader_Part2(ZSTD_DCtx* zc, const void* src, size_
     size_t result;
     if (srcSize != zc->headerSize) return ERROR(srcSize_wrong);
     result = ZSTD_getFrameParams(&(zc->params), src, srcSize);
-    if ((MEM_32bits()) && (zc->params.windowLog > 25)) return ERROR(frameParameter_unsupportedBy32bits);
+    if ((MEM_32bits()) && (zc->params.windowLog > 25)) return ERROR(frameParameter_unsupported);
     return result;
 }
 
diff --git contrib/zstd/lib/legacy/zstd_v04.h contrib/zstd/lib/legacy/zstd_v04.h
index 1b5439d39249..a7d6623305f2 100644
--- contrib/zstd/lib/legacy/zstd_v04.h
+++ contrib/zstd/lib/legacy/zstd_v04.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTD_V04_H_91868324769238
diff --git contrib/zstd/lib/legacy/zstd_v05.c contrib/zstd/lib/legacy/zstd_v05.c
index e929618a3bf5..4a1d4d4bd931 100644
--- contrib/zstd/lib/legacy/zstd_v05.c
+++ contrib/zstd/lib/legacy/zstd_v05.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -2888,7 +2888,7 @@ static size_t ZSTDv05_decodeFrameHeader_Part2(ZSTDv05_DCtx* zc, const void* src,
     if (srcSize != zc->headerSize)
         return ERROR(srcSize_wrong);
     result = ZSTDv05_getFrameParams(&(zc->params), src, srcSize);
-    if ((MEM_32bits()) && (zc->params.windowLog > 25)) return ERROR(frameParameter_unsupportedBy32bits);
+    if ((MEM_32bits()) && (zc->params.windowLog > 25)) return ERROR(frameParameter_unsupported);
     return result;
 }
 
diff --git contrib/zstd/lib/legacy/zstd_v05.h contrib/zstd/lib/legacy/zstd_v05.h
index 8ce662fd9fc6..a333bd127bd8 100644
--- contrib/zstd/lib/legacy/zstd_v05.h
+++ contrib/zstd/lib/legacy/zstd_v05.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTDv05_H
diff --git contrib/zstd/lib/legacy/zstd_v06.c contrib/zstd/lib/legacy/zstd_v06.c
index 26f0929da6fd..a285a09016f6 100644
--- contrib/zstd/lib/legacy/zstd_v06.c
+++ contrib/zstd/lib/legacy/zstd_v06.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -3084,7 +3084,7 @@ size_t ZSTDv06_getFrameParams(ZSTDv06_frameParams* fparamsPtr, const void* src,
 static size_t ZSTDv06_decodeFrameHeader(ZSTDv06_DCtx* zc, const void* src, size_t srcSize)
 {
     size_t const result = ZSTDv06_getFrameParams(&(zc->fParams), src, srcSize);
-    if ((MEM_32bits()) && (zc->fParams.windowLog > 25)) return ERROR(frameParameter_unsupportedBy32bits);
+    if ((MEM_32bits()) && (zc->fParams.windowLog > 25)) return ERROR(frameParameter_unsupported);
     return result;
 }
 
diff --git contrib/zstd/lib/legacy/zstd_v06.h contrib/zstd/lib/legacy/zstd_v06.h
index 10c9c7725974..ee043a179090 100644
--- contrib/zstd/lib/legacy/zstd_v06.h
+++ contrib/zstd/lib/legacy/zstd_v06.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTDv06_H
diff --git contrib/zstd/lib/legacy/zstd_v07.c contrib/zstd/lib/legacy/zstd_v07.c
index 6669b71cea40..ad392e90b61e 100644
--- contrib/zstd/lib/legacy/zstd_v07.c
+++ contrib/zstd/lib/legacy/zstd_v07.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/lib/legacy/zstd_v07.h contrib/zstd/lib/legacy/zstd_v07.h
index cc95c661bc9a..68d18e9636bf 100644
--- contrib/zstd/lib/legacy/zstd_v07.h
+++ contrib/zstd/lib/legacy/zstd_v07.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTDv07_H_235446
diff --git contrib/zstd/lib/zstd.h contrib/zstd/lib/zstd.h
index 58e9a5606db8..13b4563fd69a 100644
--- contrib/zstd/lib/zstd.h
+++ contrib/zstd/lib/zstd.h
@@ -2,11 +2,10 @@
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
-
 #if defined (__cplusplus)
 extern "C" {
 #endif
@@ -59,7 +58,7 @@ extern "C" {
 /*------   Version   ------*/
 #define ZSTD_VERSION_MAJOR    1
 #define ZSTD_VERSION_MINOR    3
-#define ZSTD_VERSION_RELEASE  0
+#define ZSTD_VERSION_RELEASE  1
 
 #define ZSTD_VERSION_NUMBER  (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE)
 ZSTDLIB_API unsigned ZSTD_versionNumber(void);   /**< useful to check dll version */
@@ -425,13 +424,6 @@ typedef struct {
     ZSTD_frameParameters fParams;
 } ZSTD_parameters;
 
-typedef struct {
-    unsigned long long frameContentSize;
-    size_t windowSize;
-    unsigned dictID;
-    unsigned checksumFlag;
-} ZSTD_frameHeader;
-
 /*= Custom memory allocation functions */
 typedef void* (*ZSTD_allocFunction) (void* opaque, size_t size);
 typedef void  (*ZSTD_freeFunction) (void* opaque, void* address);
@@ -809,7 +801,6 @@ ZSTDLIB_API size_t ZSTD_compressContinue(ZSTD_CCtx* cctx, void* dst, size_t dstC
 ZSTDLIB_API size_t ZSTD_compressEnd(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize);
 
 
-
 /*-
   Buffer-less streaming decompression (synchronous mode)
 
@@ -874,6 +865,15 @@ ZSTDLIB_API size_t ZSTD_compressEnd(ZSTD_CCtx* cctx, void* dst, size_t dstCapaci
 */
 
 /*=====   Buffer-less streaming decompression functions  =====*/
+typedef enum { ZSTD_frame, ZSTD_skippableFrame } ZSTD_frameType_e;
+typedef struct {
+    unsigned long long frameContentSize; /* ZSTD_CONTENTSIZE_UNKNOWN means this field is not available. 0 means "empty" */
+    unsigned long long windowSize;       /* can be very large, up to <= frameContentSize */
+    ZSTD_frameType_e frameType;          /* if == ZSTD_skippableFrame, frameContentSize is the size of skippable content */
+    unsigned headerSize;
+    unsigned dictID;
+    unsigned checksumFlag;
+} ZSTD_frameHeader;
 ZSTDLIB_API size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize);   /**< doesn't consume input */
 ZSTDLIB_API size_t ZSTD_decompressBegin(ZSTD_DCtx* dctx);
 ZSTDLIB_API size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx* dctx, const void* dict, size_t dictSize);
@@ -953,7 +953,9 @@ typedef enum {
                               * Special: value 0 means "do not change strategy". */
 
     /* frame parameters */
-    ZSTD_p_contentSizeFlag=200, /* Content size is written into frame header _whenever known_ (default:1) */
+    ZSTD_p_contentSizeFlag=200, /* Content size is written into frame header _whenever known_ (default:1)
+                              * note that content size must be known at the beginning,
+                              * it is sent using ZSTD_CCtx_setPledgedSrcSize() */
     ZSTD_p_checksumFlag,     /* A 32-bits checksum of content is written at end of frame (default:0) */
     ZSTD_p_dictIDFlag,       /* When applicable, dictID of dictionary is provided in frame header (default:1) */
 
diff --git contrib/zstd/programs/.gitignore contrib/zstd/programs/.gitignore
index eeaf051d6edf..701830c777c2 100644
--- contrib/zstd/programs/.gitignore
+++ contrib/zstd/programs/.gitignore
@@ -1,8 +1,12 @@
 # local binary (Makefile)
 zstd
 zstd32
+zstd4
 zstd-compress
 zstd-decompress
+zstd-frugal
+zstd-small
+zstd-nolegacy
 
 # Object files
 *.o
diff --git contrib/zstd/programs/Makefile contrib/zstd/programs/Makefile
index 8b080d446606..c5469cfc4def 100644
--- contrib/zstd/programs/Makefile
+++ contrib/zstd/programs/Makefile
@@ -39,9 +39,10 @@ endif
 
 CPPFLAGS+= -I$(ZSTDDIR) -I$(ZSTDDIR)/common -I$(ZSTDDIR)/compress \
            -I$(ZSTDDIR)/dictBuilder \
+           -DZSTD_NEWAPI \
            -DXXH_NAMESPACE=ZSTD_   # because xxhash.o already compiled with this macro from library
 CFLAGS  ?= -O3
-DEBUGFLAGS = -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
+DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
             -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
             -Wstrict-prototypes -Wundef -Wpointer-arith -Wformat-security \
             -Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
@@ -131,12 +132,15 @@ else
 LZ4_MSG := $(NO_LZ4_MSG)
 endif
 
-.PHONY: default all clean clean_decomp_o install uninstall generate_res
-
+.PHONY: default
 default: zstd-release
 
+.PHONY: all
 all: zstd
 
+.PHONY: allVariants
+allVariants: zstd zstd-compress zstd-decompress zstd-small zstd-nolegacy
+
 $(ZSTDDECOMP_O): CFLAGS += $(ALIGN_LOOP)
 
 zstd zstd4 : CPPFLAGS += $(THREAD_CPP) $(ZLIBCPP) $(LZMACPP)
@@ -153,8 +157,9 @@ zstd zstd4 : $(ZSTDLIB_FILES) zstdcli.o fileio.o bench.o datagen.o dibio.o
 ifneq (,$(filter Windows%,$(OS)))
 	windres/generate_res.bat
 endif
-	$(CC) $(FLAGS) $^ $(RES_FILE) -o zstd$(EXT) $(LDFLAGS)
+	$(CC) $(FLAGS) $^ $(RES_FILE) -o $@$(EXT) $(LDFLAGS)
 
+.PHONY: zstd-release
 zstd-release: DEBUGFLAGS :=
 zstd-release: zstd
 
@@ -165,8 +170,8 @@ ifneq (,$(filter Windows%,$(OS)))
 endif
 	$(CC) -m32 $(FLAGS) $^ $(RES32_FILE) -o $@$(EXT)
 
-zstd-nolegacy : clean_decomp_o
-	$(MAKE) zstd ZSTD_LEGACY_SUPPORT=0
+zstd-nolegacy : $(ZSTD_FILES) $(ZDICT_FILES) zstdcli.o fileio.c bench.o datagen.o dibio.o
+	$(CC) $(FLAGS) $^ -o $@$(EXT) $(LDFLAGS)
 
 zstd-nomt : THREAD_CPP :=
 zstd-nomt : THREAD_LD :=
@@ -197,9 +202,9 @@ zstd-pgo : clean zstd
 	$(MAKE) zstd MOREFLAGS=-fprofile-use
 
 # minimal target, with only zstd compression and decompression. no bench. no legacy.
-zstd-small: CFLAGS = "-Os -s"
+zstd-small: CFLAGS = -Os -s
 zstd-frugal zstd-small: $(ZSTD_FILES) zstdcli.c fileio.c
-	$(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT $^ -o zstd$(EXT)
+	$(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT $^ -o $@$(EXT)
 
 zstd-decompress: $(ZSTDCOMMON_FILES) $(ZSTDDECOMP_FILES) zstdcli.c fileio.c
 	$(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOCOMPRESS $^ -o $@$(EXT)
@@ -207,34 +212,37 @@ zstd-decompress: $(ZSTDCOMMON_FILES) $(ZSTDDECOMP_FILES) zstdcli.c fileio.c
 zstd-compress: $(ZSTDCOMMON_FILES) $(ZSTDCOMP_FILES) zstdcli.c fileio.c
 	$(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NODECOMPRESS $^ -o $@$(EXT)
 
-# zstd is now built with Multi-threading by default
+# zstd is now built with multithreading enabled y default
 zstdmt: zstd
 
+.PHONY: generate_res
 generate_res:
 	windres/generate_res.bat
 
+.PHONY: clean
 clean:
 	$(MAKE) -C $(ZSTDDIR) clean
 	@$(RM) $(ZSTDDIR)/decompress/*.o $(ZSTDDIR)/decompress/zstd_decompress.gcda
 	@$(RM) core *.o tmp* result* *.gcda dictionary *.zst \
         zstd$(EXT) zstd32$(EXT) zstd-compress$(EXT) zstd-decompress$(EXT) \
+        zstd-small$(EXT) zstd-frugal$(EXT) zstd-nolegacy$(EXT) zstd4$(EXT) \
         *.gcda default.profraw have_zlib$(EXT)
 	@echo Cleaning completed
 
-clean_decomp_o:
-	@$(RM) $(ZSTDDECOMP_O)
-
 MD2ROFF = ronn
 MD2ROFF_FLAGS = --roff --warnings --manual="User Commands" --organization="zstd $(ZSTD_VERSION)"
 
 zstd.1: zstd.1.md
 	cat $^ | $(MD2ROFF) $(MD2ROFF_FLAGS) | sed -n '/^\.\\\".*/!p' > $@
 
+.PHONY: man
 man: zstd.1
 
+.PHONY: clean-man
 clean-man:
 	rm zstd.1
 
+.PHONY: preview-man
 preview-man: clean-man man
 	man ./zstd.1
 
@@ -243,6 +251,10 @@ preview-man: clean-man man
 #-----------------------------------------------------------------------------
 ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS))
 
+.PHONY: list
+list:
+	@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' | xargs
+
 ifneq (,$(filter $(shell uname),SunOS))
 INSTALL ?= ginstall
 else
@@ -263,6 +275,7 @@ INSTALL_PROGRAM ?= $(INSTALL) -m 755
 INSTALL_SCRIPT  ?= $(INSTALL) -m 755
 INSTALL_MAN     ?= $(INSTALL) -m 644
 
+.PHONY: install
 install: zstd
 	@echo Installing binaries
 	@$(INSTALL) -d -m 755 $(DESTDIR)$(BINDIR)/ $(DESTDIR)$(MANDIR)/
@@ -278,6 +291,7 @@ install: zstd
 	@ln -sf zstd.1 $(DESTDIR)$(MANDIR)/unzstd.1
 	@echo zstd installation completed
 
+.PHONY: uninstall
 uninstall:
 	@$(RM) $(DESTDIR)$(BINDIR)/zstdgrep
 	@$(RM) $(DESTDIR)$(BINDIR)/zstdless
@@ -288,4 +302,5 @@ uninstall:
 	@$(RM) $(DESTDIR)$(MANDIR)/unzstd.1
 	@$(RM) $(DESTDIR)$(MANDIR)/zstd.1
 	@echo zstd programs successfully uninstalled
+
 endif
diff --git contrib/zstd/programs/README.md contrib/zstd/programs/README.md
index bd8fba069952..8b65dfdb3f24 100644
--- contrib/zstd/programs/README.md
+++ contrib/zstd/programs/README.md
@@ -3,44 +3,54 @@ Command Line Interface for Zstandard library
 
 Command Line Interface (CLI) can be created using the `make` command without any additional parameters.
 There are however other Makefile targets that create different variations of CLI:
-- `zstd` : default CLI supporting gzip-like arguments; includes dictionary builder, benchmark, and support for decompression of legacy zstd versions
-- `zstd32` : Same as `zstd`, but forced to compile in 32-bits mode
-- `zstd_nolegacy` : Same as `zstd` except of support for decompression of legacy zstd versions
-- `zstd-small` : CLI optimized for minimal size; without dictionary builder, benchmark, and support for decompression of legacy zstd versions
-- `zstd-compress` : compressor-only version of CLI; without dictionary builder, benchmark, and support for decompression of legacy zstd versions
-- `zstd-decompress` : decompressor-only version of CLI; without dictionary builder, benchmark, and support for decompression of legacy zstd versions
+- `zstd` : default CLI supporting gzip-like arguments; includes dictionary builder, benchmark, and support for decompression of legacy zstd formats
+- `zstd_nolegacy` : Same as `zstd` but without support for legacy zstd formats
+- `zstd-small` : CLI optimized for minimal size; no dictionary builder, no benchmark, and no support for legacy zstd formats
+- `zstd-compress` : version of CLI which can only compress into zstd format
+- `zstd-decompress` : version of CLI which can only decompress zstd format
 
 
 #### Compilation variables
-`zstd` tries to detect and use the following features automatically :
+`zstd` scope can be altered by modifying the following compilation variables :
 
 - __HAVE_THREAD__ : multithreading is automatically enabled when `pthread` is detected.
-  It's possible to disable multithread support, by either compiling `zstd-nomt` target or using HAVE_THREAD=0 variable.
+  It's possible to disable multithread support, by setting HAVE_THREAD=0 .
   Example : make zstd HAVE_THREAD=0
   It's also possible to force compilation with multithread support, using HAVE_THREAD=1.
   In which case, linking stage will fail if `pthread` library cannot be found.
   This might be useful to prevent silent feature disabling.
 
 - __HAVE_ZLIB__ : `zstd` can compress and decompress files in `.gz` format.
-  This is done through command `--format=gzip`.
+  This is ordered through command `--format=gzip`.
   Alternatively, symlinks named `gzip` or `gunzip` will mimic intended behavior.
   `.gz` support is automatically enabled when `zlib` library is detected at build time.
-  It's possible to disable `.gz` support, by either compiling `zstd-nogz` target or using HAVE_ZLIB=0 variable.
+  It's possible to disable `.gz` support, by setting HAVE_ZLIB=0.
   Example : make zstd HAVE_ZLIB=0
   It's also possible to force compilation with zlib support, using HAVE_ZLIB=1.
   In which case, linking stage will fail if `zlib` library cannot be found.
   This might be useful to prevent silent feature disabling.
 
 - __HAVE_LZMA__ : `zstd` can compress and decompress files in `.xz` and `.lzma` formats.
-  This is done through commands `--format=xz` and `--format=lzma` respectively.
+  This is ordered through commands `--format=xz` and `--format=lzma` respectively.
   Alternatively, symlinks named `xz`, `unxz`, `lzma`, or `unlzma` will mimic intended behavior.
   `.xz` and `.lzma` support is automatically enabled when `lzma` library is detected at build time.
-  It's possible to disable `.xz` and `.lzma` support, by either compiling `zstd-noxz` target or using HAVE_LZMA=0 variable.
+  It's possible to disable `.xz` and `.lzma` support, by setting HAVE_LZMA=0 .
   Example : make zstd HAVE_LZMA=0
   It's also possible to force compilation with lzma support, using HAVE_LZMA=1.
   In which case, linking stage will fail if `lzma` library cannot be found.
   This might be useful to prevent silent feature disabling.
 
+- __ZSTD_LEGACY_SUPPORT__ : `zstd` can decompress files compressed by older versions of `zstd`.
+  Starting v0.8.0, all versions of `zstd` produce frames compliant with the [specification](../doc/zstd_compression_format.md), and are therefore compatible.
+  But older versions (< v0.8.0) produced different, incompatible, frames.
+  By default, `zstd` supports decoding legacy formats >= v0.4.0 (`ZSTD_LEGACY_SUPPORT=4`).
+  This can be altered by modifying this compilation variable.
+  `ZSTD_LEGACY_SUPPORT=1` means "support all formats >= v0.1.0".
+  `ZSTD_LEGACY_SUPPORT=2` means "support all formats >= v0.2.0", and so on.
+  `ZSTD_LEGACY_SUPPORT=0` means _DO NOT_ support any legacy format.
+  if `ZSTD_LEGACY_SUPPORT >= 8`, it's the same as `0`, since there is no legacy format after `7`.
+  Note : `zstd` only supports decoding older formats, and cannot generate any legacy format.
+
 
 #### Aggregation of parameters
 CLI supports aggregation of parameters i.e. `-b1`, `-e18`, and `-i1` can be joined into `-b1e18i1`.
@@ -61,7 +71,7 @@ will rely more and more on previously decoded content to compress the rest of th
 
 Usage of the dictionary builder and created dictionaries with CLI:
 
-1. Create the dictionary : `zstd --train FullPathToTrainingSet/* -o dictionaryName`
+1. Create the dictionary : `zstd --train PathToTrainingSet/* -o dictionaryName`
 2. Compress with the dictionary: `zstd FILE -D dictionaryName`
 3. Decompress with the dictionary: `zstd --decompress FILE.zst -D dictionaryName`
 
@@ -70,8 +80,8 @@ Usage of the dictionary builder and created dictionaries with CLI:
 CLI includes in-memory compression benchmark module for zstd.
 The benchmark is conducted using given filenames. The files are read into memory and joined together.
 It makes benchmark more precise as it eliminates I/O overhead.
-Many filenames can be supplied as multiple parameters, parameters with wildcards or
-names of directories can be used as parameters with the `-r` option.
+Multiple filenames can be supplied, as multiple parameters, with wildcards,
+or names of directories can be used as parameters with `-r` option.
 
 The benchmark measures ratio, compressed size, compression and decompression speed.
 One can select compression levels starting from `-b` and ending with `-e`.
@@ -101,13 +111,14 @@ Advanced arguments :
  -v     : verbose mode; specify multiple times to increase verbosity
  -q     : suppress warnings; specify twice to suppress errors too
  -c     : force write to standard output, even if it is the console
+ -l     : print information about zstd compressed files
 --ultra : enable levels beyond 19, up to 22 (requires more memory)
- -T#    : use # threads for compression (default:1)
- -B#    : select size of each job (default:0==automatic)
 --no-dictID : don't write dictID into header (dictionary compression)
 --[no-]check : integrity check (default:enabled)
  -r     : operate recursively on directories
 --format=gzip : compress files to the .gz format
+--format=xz : compress files to the .xz format
+--format=lzma : compress files to the .lzma format
 --test  : test compressed file integrity
 --[no-]sparse : sparse mode (default:disabled)
  -M#    : Set a memory usage limit for decompression
diff --git contrib/zstd/programs/bench.c contrib/zstd/programs/bench.c
index f9493e3b0707..2b48a4663a86 100644
--- contrib/zstd/programs/bench.c
+++ contrib/zstd/programs/bench.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/programs/bench.h contrib/zstd/programs/bench.h
index 77a527f8ff82..5f8d61a25b30 100644
--- contrib/zstd/programs/bench.h
+++ contrib/zstd/programs/bench.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/programs/datagen.c contrib/zstd/programs/datagen.c
index d0116b97232f..b1da8e78b31e 100644
--- contrib/zstd/programs/datagen.c
+++ contrib/zstd/programs/datagen.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/programs/datagen.h contrib/zstd/programs/datagen.h
index 094056b696ca..5b1b7c47cc5d 100644
--- contrib/zstd/programs/datagen.h
+++ contrib/zstd/programs/datagen.h
@@ -1,11 +1,13 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
+
+
 #ifndef DATAGEN_H
 #define DATAGEN_H
 
diff --git contrib/zstd/programs/dibio.c contrib/zstd/programs/dibio.c
index 31cde5c95db1..ab2dc285a273 100644
--- contrib/zstd/programs/dibio.c
+++ contrib/zstd/programs/dibio.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/programs/dibio.h contrib/zstd/programs/dibio.h
index 84f7d580283d..0227239b26db 100644
--- contrib/zstd/programs/dibio.h
+++ contrib/zstd/programs/dibio.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 /* This library is designed for a single-threaded console application.
diff --git contrib/zstd/programs/fileio.c contrib/zstd/programs/fileio.c
index 276735a0ecdc..92561edaa71e 100644
--- contrib/zstd/programs/fileio.c
+++ contrib/zstd/programs/fileio.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -925,230 +925,6 @@ int FIO_compressFilename(const char* dstFileName, const char* srcFileName,
     return result;
 }
 
-typedef struct {
-    int numActualFrames;
-    int numSkippableFrames;
-    unsigned long long decompressedSize;
-    int decompUnavailable;
-    unsigned long long compressedSize;
-    int usesCheck;
-} fileInfo_t;
-
-/*
- * Reads information from file, stores in *info
- * if successful, returns 0, returns 1 for frame analysis error, returns 2 for file not compressed with zstd
- * returns 3 for cases in which file could not be opened.
- */
-static int getFileInfo(fileInfo_t* info, const char* inFileName){
-    int detectError = 0;
-    FILE* const srcFile = FIO_openSrcFile(inFileName);
-    if (srcFile == NULL) {
-        DISPLAY("Error: could not open source file %s\n", inFileName);
-        return 3;
-    }
-    info->compressedSize = (unsigned long long)UTIL_getFileSize(inFileName);
-    /* begin analyzing frame */
-    for ( ; ; ) {
-        BYTE headerBuffer[ZSTD_FRAMEHEADERSIZE_MAX];
-        size_t const numBytesRead = fread(headerBuffer, 1, sizeof(headerBuffer), srcFile);
-        if (numBytesRead < ZSTD_frameHeaderSize_min) {
-            if (feof(srcFile) && numBytesRead == 0 && info->compressedSize > 0) {
-                break;
-            }
-            else if (feof(srcFile)) {
-                DISPLAY("Error: reached end of file with incomplete frame\n");
-                detectError = 2;
-                break;
-            }
-            else {
-                DISPLAY("Error: did not reach end of file but ran out of frames\n");
-                detectError = 1;
-                break;
-            }
-        }
-        {
-            U32 const magicNumber = MEM_readLE32(headerBuffer);
-            if (magicNumber == ZSTD_MAGICNUMBER) {
-                U64 const frameContentSize = ZSTD_getFrameContentSize(headerBuffer, numBytesRead);
-                if (frameContentSize == ZSTD_CONTENTSIZE_ERROR || frameContentSize == ZSTD_CONTENTSIZE_UNKNOWN) {
-                    info->decompUnavailable = 1;
-                }
-                else {
-                    info->decompressedSize += frameContentSize;
-                }
-                {
-                    /* move to the end of the frame header */
-                    size_t const headerSize = ZSTD_frameHeaderSize(headerBuffer, numBytesRead);
-                    if (ZSTD_isError(headerSize)) {
-                        DISPLAY("Error: could not determine frame header size\n");
-                        detectError = 1;
-                        break;
-                    }
-                    {
-                        int const ret = fseek(srcFile, ((long)headerSize)-((long)numBytesRead), SEEK_CUR);
-                        if (ret != 0) {
-                            DISPLAY("Error: could not move to end of frame header\n");
-                            detectError = 1;
-                            break;
-                        }
-                    }
-                }
-
-                /* skip the rest of the blocks in the frame */
-                {
-                    int lastBlock = 0;
-                    do {
-                        BYTE blockHeaderBuffer[3];
-                        U32 blockHeader;
-                        int blockSize;
-                        size_t const readBytes = fread(blockHeaderBuffer, 1, 3, srcFile);
-                        if (readBytes != 3) {
-                            DISPLAY("There was a problem reading the block header\n");
-                            detectError = 1;
-                            break;
-                        }
-                        blockHeader = MEM_readLE24(blockHeaderBuffer);
-                        lastBlock = blockHeader & 1;
-                        blockSize = blockHeader >> 3;
-                        {
-                            int const ret = fseek(srcFile, blockSize, SEEK_CUR);
-                            if (ret != 0) {
-                                DISPLAY("Error: could not skip to end of block\n");
-                                detectError = 1;
-                                break;
-                            }
-                        }
-                    } while (lastBlock != 1);
-
-                    if (detectError) {
-                        break;
-                    }
-                }
-                {
-                    /* check if checksum is used */
-                    BYTE const frameHeaderDescriptor = headerBuffer[4];
-                    int const contentChecksumFlag = (frameHeaderDescriptor & (1 << 2)) >> 2;
-                    if (contentChecksumFlag) {
-                        int const ret = fseek(srcFile, 4, SEEK_CUR);
-                        info->usesCheck = 1;
-                        if (ret != 0) {
-                            DISPLAY("Error: could not skip past checksum\n");
-                            detectError = 1;
-                            break;
-                        }
-                    }
-                }
-                info->numActualFrames++;
-            }
-            else if (magicNumber == ZSTD_MAGIC_SKIPPABLE_START) {
-                BYTE frameSizeBuffer[4];
-                size_t const readBytes = fread(frameSizeBuffer, 1, 4, srcFile);
-                if (readBytes != 4) {
-                    DISPLAY("There was an error reading skippable frame size");
-                    detectError = 1;
-                    break;
-                }
-                {
-                    U32 const frameSize = MEM_readLE32(frameSizeBuffer);
-                    int const ret = LONG_SEEK(srcFile, frameSize, SEEK_CUR);
-                    if (ret != 0) {
-                        DISPLAY("Error: could not find end of skippable frame\n");
-                        detectError = 1;
-                        break;
-                    }
-                }
-                info->numSkippableFrames++;
-            }
-            else {
-                detectError = 2;
-                break;
-            }
-        }
-    }
-    fclose(srcFile);
-    return detectError;
-}
-
-static void displayInfo(const char* inFileName, fileInfo_t* info, int displayLevel){
-    double const compressedSizeMB = (double)info->compressedSize/(1 MB);
-    double const decompressedSizeMB = (double)info->decompressedSize/(1 MB);
-    double const ratio = (info->compressedSize == 0) ? 0 : ((double)info->decompressedSize)/info->compressedSize;
-    const char* const checkString = (info->usesCheck ? "XXH64" : "None");
-    if (displayLevel <= 2) {
-        if (!info->decompUnavailable) {
-            DISPLAYOUT("Skippable  Non-Skippable  Compressed  Uncompressed  Ratio  Check  Filename\n");
-            DISPLAYOUT("%9d  %13d  %7.2f MB  %9.2f MB  %5.3f  %5s  %s\n",
-                    info->numSkippableFrames, info->numActualFrames, compressedSizeMB, decompressedSizeMB,
-                    ratio, checkString, inFileName);
-        }
-        else {
-            DISPLAYOUT("Skippable  Non-Skippable  Compressed  Check  Filename\n");
-            DISPLAYOUT("%9d  %13d  %7.2f MB  %5s  %s\n",
-                    info->numSkippableFrames, info->numActualFrames, compressedSizeMB, checkString, inFileName);
-        }
-    }
-    else{
-        DISPLAYOUT("# Zstandard Frames: %d\n", info->numActualFrames);
-        DISPLAYOUT("# Skippable Frames: %d\n", info->numSkippableFrames);
-        DISPLAYOUT("Compressed Size: %.2f MB (%llu B)\n", compressedSizeMB, info->compressedSize);
-        if (!info->decompUnavailable) {
-            DISPLAYOUT("Decompressed Size: %.2f MB (%llu B)\n", decompressedSizeMB, info->decompressedSize);
-            DISPLAYOUT("Ratio: %.4f\n", ratio);
-        }
-        DISPLAYOUT("Check: %s\n", checkString);
-        DISPLAYOUT("\n");
-    }
-}
-
-
-static int FIO_listFile(const char* inFileName, int displayLevel, unsigned fileNo, unsigned numFiles){
-    /* initialize info to avoid warnings */
-    fileInfo_t info;
-    memset(&info, 0, sizeof(info));
-    DISPLAYOUT("%s (%u/%u):\n", inFileName, fileNo, numFiles);
-    {
-        int const error = getFileInfo(&info, inFileName);
-        if (error == 1) {
-            /* display error, but provide output */
-            DISPLAY("An error occurred with getting file info\n");
-        }
-        else if (error == 2) {
-            DISPLAYOUT("File %s not compressed with zstd\n", inFileName);
-            if (displayLevel > 2) {
-                DISPLAYOUT("\n");
-            }
-            return 1;
-        }
-        else if (error == 3) {
-            /* error occurred with opening the file */
-            if (displayLevel > 2) {
-                DISPLAYOUT("\n");
-            }
-            return 1;
-        }
-        displayInfo(inFileName, &info, displayLevel);
-        return error;
-    }
-}
-
-int FIO_listMultipleFiles(unsigned numFiles, const char** filenameTable, int displayLevel){
-    if (numFiles == 0) {
-        DISPLAYOUT("No files given\n");
-        return 0;
-    }
-    DISPLAYOUT("===========================================\n");
-    DISPLAYOUT("Printing information about compressed files\n");
-    DISPLAYOUT("===========================================\n");
-    DISPLAYOUT("Number of files listed: %u\n", numFiles);
-    {
-        int error = 0;
-        unsigned u;
-        for (u=0; u<numFiles;u++) {
-            error |= FIO_listFile(filenameTable[u], displayLevel, u+1, numFiles);
-        }
-        return error;
-    }
-}
 
 int FIO_compressMultipleFilenames(const char** inFileNamesTable, unsigned nbFiles,
                                   const char* suffix,
@@ -1194,10 +970,8 @@ int FIO_compressMultipleFilenames(const char** inFileNamesTable, unsigned nbFile
             missed_files += FIO_compressFilename_dstFile(ress, dstFileName, inFileNamesTable[u], compressionLevel);
     }   }
 
-    /* Close & Free */
     FIO_freeCResources(ress);
     free(dstFileName);
-
     return missed_files;
 }
 
@@ -1208,8 +982,8 @@ int FIO_compressMultipleFilenames(const char** inFileNamesTable, unsigned nbFile
 #ifndef ZSTD_NODECOMPRESS
 
 /* **************************************************************************
-*  Decompression
-****************************************************************************/
+ *  Decompression
+ ***************************************************************************/
 typedef struct {
     void*  srcBuffer;
     size_t srcBufferLoaded;
@@ -1616,7 +1390,7 @@ static unsigned long long FIO_decompressLz4Frame(dRess_t* ress,
             /* Write Block */
             if (decodedBytes) {
                 if (fwrite(ress->dstBuffer, 1, decodedBytes, ress->dstFile) != decodedBytes) {
-                    DISPLAYLEVEL(1, "zstd: %s \n", strerr(errno));
+                    DISPLAYLEVEL(1, "zstd: %s \n", strerror(errno));
                     decodingError = 1; break;
                 }
                 filesize += decodedBytes;
@@ -1878,4 +1652,231 @@ int FIO_decompressMultipleFilenames(const char** srcNamesTable, unsigned nbFiles
     return missingFiles + skippedFiles;
 }
 
+
+
+/* **************************************************************************
+ *  .zst file info (--list command)
+ ***************************************************************************/
+
+typedef struct {
+    int numActualFrames;
+    int numSkippableFrames;
+    unsigned long long decompressedSize;
+    int decompUnavailable;
+    unsigned long long compressedSize;
+    int usesCheck;
+} fileInfo_t;
+
+/** getFileInfo() :
+ *  Reads information from file, stores in *info
+ * @return : 0 if successful
+ *           1 for frame analysis error
+ *           2 for file not compressed with zstd
+ *           3 for cases in which file could not be opened.
+ */
+static int getFileInfo(fileInfo_t* info, const char* inFileName){
+    int detectError = 0;
+    FILE* const srcFile = FIO_openSrcFile(inFileName);
+    if (srcFile == NULL) {
+        DISPLAY("Error: could not open source file %s\n", inFileName);
+        return 3;
+    }
+    info->compressedSize = (unsigned long long)UTIL_getFileSize(inFileName);
+
+    /* begin analyzing frame */
+    for ( ; ; ) {
+        BYTE headerBuffer[ZSTD_FRAMEHEADERSIZE_MAX];
+        size_t const numBytesRead = fread(headerBuffer, 1, sizeof(headerBuffer), srcFile);
+        if (numBytesRead < ZSTD_frameHeaderSize_min) {
+            if (feof(srcFile) && numBytesRead == 0 && info->compressedSize > 0) {
+                break;
+            }
+            else if (feof(srcFile)) {
+                DISPLAY("Error: reached end of file with incomplete frame\n");
+                detectError = 2;
+                break;
+            }
+            else {
+                DISPLAY("Error: did not reach end of file but ran out of frames\n");
+                detectError = 1;
+                break;
+            }
+        }
+        {   U32 const magicNumber = MEM_readLE32(headerBuffer);
+            /* Zstandard frame */
+            if (magicNumber == ZSTD_MAGICNUMBER) {
+                U64 const frameContentSize = ZSTD_getFrameContentSize(headerBuffer, numBytesRead);
+                if (frameContentSize == ZSTD_CONTENTSIZE_ERROR || frameContentSize == ZSTD_CONTENTSIZE_UNKNOWN) {
+                    info->decompUnavailable = 1;
+                } else {
+                    info->decompressedSize += frameContentSize;
+                }
+                /* move to the end of the frame header */
+                {   size_t const headerSize = ZSTD_frameHeaderSize(headerBuffer, numBytesRead);
+                    if (ZSTD_isError(headerSize)) {
+                        DISPLAY("Error: could not determine frame header size\n");
+                        detectError = 1;
+                        break;
+                    }
+                    {   int const ret = fseek(srcFile, ((long)headerSize)-((long)numBytesRead), SEEK_CUR);
+                        if (ret != 0) {
+                            DISPLAY("Error: could not move to end of frame header\n");
+                            detectError = 1;
+                            break;
+                }   }   }
+
+                /* skip the rest of the blocks in the frame */
+                {   int lastBlock = 0;
+                    do {
+                        BYTE blockHeaderBuffer[3];
+                        size_t const readBytes = fread(blockHeaderBuffer, 1, 3, srcFile);
+                        if (readBytes != 3) {
+                            DISPLAY("There was a problem reading the block header\n");
+                            detectError = 1;
+                            break;
+                        }
+                        {   U32 const blockHeader = MEM_readLE24(blockHeaderBuffer);
+                            U32 const blockTypeID = (blockHeader >> 1) & 3;
+                            U32 const isRLE = (blockTypeID == 1);
+                            U32 const isWrongBlock = (blockTypeID == 3);
+                            long const blockSize = isRLE ? 1 : (long)(blockHeader >> 3);
+                            if (isWrongBlock) {
+                                DISPLAY("Error: unsupported block type \n");
+                                detectError = 1;
+                                break;
+                            }
+                            lastBlock = blockHeader & 1;
+                            {   int const ret = fseek(srcFile, blockSize, SEEK_CUR);
+                                if (ret != 0) {
+                                    DISPLAY("Error: could not skip to end of block\n");
+                                    detectError = 1;
+                                    break;
+                        }   }   }
+                    } while (lastBlock != 1);
+
+                    if (detectError) break;
+                }
+
+                /* check if checksum is used */
+                {   BYTE const frameHeaderDescriptor = headerBuffer[4];
+                    int const contentChecksumFlag = (frameHeaderDescriptor & (1 << 2)) >> 2;
+                    if (contentChecksumFlag) {
+                        int const ret = fseek(srcFile, 4, SEEK_CUR);
+                        info->usesCheck = 1;
+                        if (ret != 0) {
+                            DISPLAY("Error: could not skip past checksum\n");
+                            detectError = 1;
+                            break;
+                }   }   }
+                info->numActualFrames++;
+            }
+            /* Skippable frame */
+            else if ((magicNumber & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START) {
+                U32 const frameSize = MEM_readLE32(headerBuffer + 4);
+                long const seek = (long)(8 + frameSize - numBytesRead);
+                int const ret = LONG_SEEK(srcFile, seek, SEEK_CUR);
+                if (ret != 0) {
+                    DISPLAY("Error: could not find end of skippable frame\n");
+                    detectError = 1;
+                    break;
+                }
+                info->numSkippableFrames++;
+            }
+            /* unknown content */
+            else {
+                detectError = 2;
+                break;
+            }
+        }
+    }  /* end analyzing frame */
+    fclose(srcFile);
+    return detectError;
+}
+
+static void displayInfo(const char* inFileName, fileInfo_t* info, int displayLevel){
+    unsigned const unit = info->compressedSize < (1 MB) ? (1 KB) : (1 MB);
+    const char* const unitStr = info->compressedSize < (1 MB) ? "KB" : "MB";
+    double const compressedSizeUnit = (double)info->compressedSize / unit;
+    double const decompressedSizeUnit = (double)info->decompressedSize / unit;
+    double const ratio = (info->compressedSize == 0) ? 0 : ((double)info->decompressedSize)/info->compressedSize;
+    const char* const checkString = (info->usesCheck ? "XXH64" : "None");
+    if (displayLevel <= 2) {
+        if (!info->decompUnavailable) {
+            DISPLAYOUT("Skippable  Non-Skippable  Compressed  Uncompressed  Ratio  Check  Filename\n");
+            DISPLAYOUT("%9d  %13d  %7.2f %2s  %9.2f %2s  %5.3f  %5s  %s\n",
+                    info->numSkippableFrames, info->numActualFrames,
+                    compressedSizeUnit, unitStr, decompressedSizeUnit, unitStr,
+                    ratio, checkString, inFileName);
+        } else {
+            DISPLAYOUT("Skippable  Non-Skippable  Compressed  Check  Filename\n");
+            DISPLAYOUT("%9d  %13d  %7.2f MB  %5s  %s\n",
+                    info->numSkippableFrames, info->numActualFrames,
+                    compressedSizeUnit, checkString, inFileName);
+        }
+    } else {
+        DISPLAYOUT("# Zstandard Frames: %d\n", info->numActualFrames);
+        DISPLAYOUT("# Skippable Frames: %d\n", info->numSkippableFrames);
+        DISPLAYOUT("Compressed Size: %.2f %2s (%llu B)\n",
+                    compressedSizeUnit, unitStr, info->compressedSize);
+        if (!info->decompUnavailable) {
+            DISPLAYOUT("Decompressed Size: %.2f %2s (%llu B)\n",
+                    decompressedSizeUnit, unitStr, info->decompressedSize);
+            DISPLAYOUT("Ratio: %.4f\n", ratio);
+        }
+        DISPLAYOUT("Check: %s\n", checkString);
+        DISPLAYOUT("\n");
+    }
+}
+
+
+static int FIO_listFile(const char* inFileName, int displayLevel, unsigned fileNo, unsigned numFiles){
+    /* initialize info to avoid warnings */
+    fileInfo_t info;
+    memset(&info, 0, sizeof(info));
+    DISPLAYOUT("%s (%u/%u):\n", inFileName, fileNo, numFiles);
+    {
+        int const error = getFileInfo(&info, inFileName);
+        if (error == 1) {
+            /* display error, but provide output */
+            DISPLAY("An error occurred with getting file info\n");
+        }
+        else if (error == 2) {
+            DISPLAYOUT("File %s not compressed with zstd\n", inFileName);
+            if (displayLevel > 2) {
+                DISPLAYOUT("\n");
+            }
+            return 1;
+        }
+        else if (error == 3) {
+            /* error occurred with opening the file */
+            if (displayLevel > 2) {
+                DISPLAYOUT("\n");
+            }
+            return 1;
+        }
+        displayInfo(inFileName, &info, displayLevel);
+        return error;
+    }
+}
+
+int FIO_listMultipleFiles(unsigned numFiles, const char** filenameTable, int displayLevel){
+    if (numFiles == 0) {
+        DISPLAYOUT("No files given\n");
+        return 0;
+    }
+    DISPLAYOUT("===========================================\n");
+    DISPLAYOUT("Printing information about compressed files\n");
+    DISPLAYOUT("===========================================\n");
+    DISPLAYOUT("Number of files listed: %u\n", numFiles);
+    {
+        int error = 0;
+        unsigned u;
+        for (u=0; u<numFiles;u++) {
+            error |= FIO_listFile(filenameTable[u], displayLevel, u+1, numFiles);
+        }
+        return error;
+    }
+}
+
+
 #endif /* #ifndef ZSTD_NODECOMPRESS */
diff --git contrib/zstd/programs/fileio.h contrib/zstd/programs/fileio.h
index 9d9167df9ef5..8008e97dd5f3 100644
--- contrib/zstd/programs/fileio.h
+++ contrib/zstd/programs/fileio.h
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/programs/platform.h contrib/zstd/programs/platform.h
index 74412cde332e..fb2e9b173d2a 100644
--- contrib/zstd/programs/platform.h
+++ contrib/zstd/programs/platform.h
@@ -1,12 +1,10 @@
-/**
- * platform.h - compiler and OS detection
- *
- * Copyright (c) 2016-present, Przemyslaw Skibinski, Yann Collet, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef PLATFORM_H_MODULE
diff --git contrib/zstd/programs/util.h contrib/zstd/programs/util.h
index dd971e0f884b..7b553661cde3 100644
--- contrib/zstd/programs/util.h
+++ contrib/zstd/programs/util.h
@@ -1,12 +1,10 @@
-/**
- * util.h - utility functions
- *
- * Copyright (c) 2016-present, Przemyslaw Skibinski, Yann Collet, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef UTIL_H_MODULE
diff --git contrib/zstd/programs/zstd.1 contrib/zstd/programs/zstd.1
index 5df45db2153e..5a91eea281f4 100644
--- contrib/zstd/programs/zstd.1
+++ contrib/zstd/programs/zstd.1
@@ -1,5 +1,5 @@
 .
-.TH "ZSTD" "1" "June 2017" "zstd 1.3.0" "User Commands"
+.TH "ZSTD" "1" "August 2017" "zstd 1.3.1" "User Commands"
 .
 .SH "NAME"
 \fBzstd\fR \- zstd, zstdmt, unzstd, zstdcat \- Compress or decompress \.zst files
@@ -105,7 +105,7 @@ unlocks high compression levels 20+ (maximum 22), using a lot more memory\. Note
 .
 .TP
 \fB\-T#\fR, \fB\-\-threads=#\fR
-Compress using \fB#\fR threads (default: 1)\. If \fB#\fR is 0, attempt to detect and use the number of physical CPU cores\. This modifier does nothing if \fBzstd\fR is compiled without multithread support\.
+Compress using \fB#\fR threads (default: 1)\. If \fB#\fR is 0, attempt to detect and use the number of physical CPU cores\. In all cases, the nb of threads is capped to ZSTDMT_NBTHREADS_MAX==256\. This modifier does nothing if \fBzstd\fR is compiled without multithread support\.
 .
 .TP
 \fB\-D file\fR
@@ -149,7 +149,7 @@ display help/long help and exit
 .
 .TP
 \fB\-V\fR, \fB\-\-version\fR
-display version number and exit
+display version number and exit\. Advanced : \fB\-vV\fR also displays supported formats\. \fB\-vvV\fR also displays POSIX support\.
 .
 .TP
 \fB\-v\fR
diff --git contrib/zstd/programs/zstd.1.md contrib/zstd/programs/zstd.1.md
index 24e25a2f3af1..4310afa1aaf8 100644
--- contrib/zstd/programs/zstd.1.md
+++ contrib/zstd/programs/zstd.1.md
@@ -108,6 +108,7 @@ the last one takes effect.
 * `-T#`, `--threads=#`:
     Compress using `#` threads (default: 1).
     If `#` is 0, attempt to detect and use the number of physical CPU cores.
+    In all cases, the nb of threads is capped to ZSTDMT_NBTHREADS_MAX==256.
     This modifier does nothing if `zstd` is compiled without multithread support.
 * `-D file`:
     use `file` as Dictionary to compress or decompress FILE(s)
@@ -139,7 +140,9 @@ the last one takes effect.
 * `-h`/`-H`, `--help`:
     display help/long help and exit
 * `-V`, `--version`:
-    display version number and exit
+    display version number and exit.
+    Advanced : `-vV` also displays supported formats.
+    `-vvV` also displays POSIX support.
 * `-v`:
     verbose mode
 * `-q`, `--quiet`:
diff --git contrib/zstd/programs/zstdcli.c contrib/zstd/programs/zstdcli.c
index 8bd45925bee6..e7eb71db6e37 100644
--- contrib/zstd/programs/zstdcli.c
+++ contrib/zstd/programs/zstdcli.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -16,7 +16,7 @@
 #endif
 
 #ifndef ZSTDCLI_CLEVEL_MAX
-#  define ZSTDCLI_CLEVEL_MAX 19   /* when not using --ultra */
+#  define ZSTDCLI_CLEVEL_MAX 19   /* without using --ultra */
 #endif
 
 
@@ -26,14 +26,15 @@
 **************************************/
 #include "platform.h" /* IS_CONSOLE, PLATFORM_POSIX_VERSION */
 #include "util.h"     /* UTIL_HAS_CREATEFILELIST, UTIL_createFileList */
+#include <stdio.h>    /* fprintf(), stdin, stdout, stderr */
 #include <string.h>   /* strcmp, strlen */
 #include <errno.h>    /* errno */
-#include "fileio.h"
+#include "fileio.h"   /* stdinmark, stdoutmark, ZSTD_EXTENSION */
 #ifndef ZSTD_NOBENCH
 #  include "bench.h"  /* BMK_benchFiles, BMK_SetNbSeconds */
 #endif
 #ifndef ZSTD_NODICT
-#  include "dibio.h"
+#  include "dibio.h"  /* ZDICT_cover_params_t, DiB_trainFromFiles() */
 #endif
 #define ZSTD_STATIC_LINKING_ONLY   /* ZSTD_maxCLevel */
 #include "zstd.h"     /* ZSTD_VERSION_STRING */
@@ -64,7 +65,7 @@
 #define MB *(1 <<20)
 #define GB *(1U<<30)
 
-#define DEFAULT_DISPLAY_LEVEL 1
+#define DISPLAY_LEVEL_DEFAULT 2
 
 static const char*    g_defaultDictName = "dictionary";
 static const unsigned g_defaultMaxDictSize = 110 KB;
@@ -79,7 +80,7 @@ static U32 g_overlapLog = OVERLAP_LOG_DEFAULT;
 **************************************/
 #define DISPLAY(...)         fprintf(g_displayOut, __VA_ARGS__)
 #define DISPLAYLEVEL(l, ...) { if (g_displayLevel>=l) { DISPLAY(__VA_ARGS__); } }
-static int g_displayLevel = DEFAULT_DISPLAY_LEVEL;   /* 0 : no display,  1: errors,  2 : + result + interaction + warnings,  3 : + progression,  4 : + information */
+static int g_displayLevel = DISPLAY_LEVEL_DEFAULT;   /* 0 : no display,  1: errors,  2 : + result + interaction + warnings,  3 : + progression,  4 : + information */
 static FILE* g_displayOut;
 
 
@@ -88,12 +89,12 @@ static FILE* g_displayOut;
 **************************************/
 static int usage(const char* programName)
 {
-    DISPLAY( "Usage :\n");
-    DISPLAY( "      %s [args] [FILE(s)] [-o file]\n", programName);
+    DISPLAY( "Usage : \n");
+    DISPLAY( "      %s [args] [FILE(s)] [-o file] \n", programName);
     DISPLAY( "\n");
-    DISPLAY( "FILE    : a filename\n");
+    DISPLAY( "FILE    : a filename \n");
     DISPLAY( "          with no FILE, or when FILE is - , read standard input\n");
-    DISPLAY( "Arguments :\n");
+    DISPLAY( "Arguments : \n");
 #ifndef ZSTD_NOCOMPRESS
     DISPLAY( " -#     : # compression level (1-%d, default:%d) \n", ZSTDCLI_CLEVEL_MAX, ZSTDCLI_CLEVEL_DEFAULT);
 #endif
@@ -105,7 +106,7 @@ static int usage(const char* programName)
     DISPLAY( " -f     : overwrite output without prompting and (de)compress links \n");
     DISPLAY( "--rm    : remove source file(s) after successful de/compression \n");
     DISPLAY( " -k     : preserve source file(s) (default) \n");
-    DISPLAY( " -h/-H  : display help/long help and exit\n");
+    DISPLAY( " -h/-H  : display help/long help and exit \n");
     return 0;
 }
 
@@ -114,12 +115,12 @@ static int usage_advanced(const char* programName)
     DISPLAY(WELCOME_MESSAGE);
     usage(programName);
     DISPLAY( "\n");
-    DISPLAY( "Advanced arguments :\n");
-    DISPLAY( " -V     : display Version number and exit\n");
+    DISPLAY( "Advanced arguments : \n");
+    DISPLAY( " -V     : display Version number and exit \n");
     DISPLAY( " -v     : verbose mode; specify multiple times to increase verbosity\n");
     DISPLAY( " -q     : suppress warnings; specify twice to suppress errors too\n");
     DISPLAY( " -c     : force write to standard output, even if it is the console\n");
-    DISPLAY( " -l     : print information about zstd compressed files.\n");
+    DISPLAY( " -l     : print information about zstd compressed files \n");
 #ifndef ZSTD_NOCOMPRESS
     DISPLAY( "--ultra : enable levels beyond %i, up to %i (requires more memory)\n", ZSTDCLI_CLEVEL_MAX, ZSTD_maxCLevel());
 #ifdef ZSTD_MULTITHREAD
@@ -151,11 +152,10 @@ static int usage_advanced(const char* programName)
 #endif
 #endif
     DISPLAY( " -M#    : Set a memory usage limit for decompression \n");
-    DISPLAY( "--list  : list information about a zstd compressed file \n");
     DISPLAY( "--      : All arguments after \"--\" are treated as files \n");
 #ifndef ZSTD_NODICT
     DISPLAY( "\n");
-    DISPLAY( "Dictionary builder :\n");
+    DISPLAY( "Dictionary builder : \n");
     DISPLAY( "--train ## : create a dictionary from a training set of files \n");
     DISPLAY( "--train-cover[=k=#,d=#,steps=#] : use the cover algorithm with optional args\n");
     DISPLAY( "--train-legacy[=s=#] : use the legacy algorithm with selectivity (default: %u)\n", g_defaultSelectivityLevel);
@@ -165,12 +165,12 @@ static int usage_advanced(const char* programName)
 #endif
 #ifndef ZSTD_NOBENCH
     DISPLAY( "\n");
-    DISPLAY( "Benchmark arguments :\n");
+    DISPLAY( "Benchmark arguments : \n");
     DISPLAY( " -b#    : benchmark file(s), using # compression level (default : 1) \n");
     DISPLAY( " -e#    : test all compression levels from -bX to # (default: 1)\n");
-    DISPLAY( " -i#    : minimum evaluation time in seconds (default : 3s)\n");
+    DISPLAY( " -i#    : minimum evaluation time in seconds (default : 3s) \n");
     DISPLAY( " -B#    : cut file into independent blocks of size # (default: no block)\n");
-    DISPLAY( "--priority=rt : set process priority to real-time\n");
+    DISPLAY( "--priority=rt : set process priority to real-time \n");
 #endif
     return 0;
 }
@@ -313,6 +313,35 @@ static unsigned parseCompressionParameters(const char* stringPtr, ZSTD_compressi
     return 1;
 }
 
+static void printVersion(void)
+{
+    DISPLAY(WELCOME_MESSAGE);
+    /* format support */
+    DISPLAYLEVEL(3, "*** supports: zstd");
+#if defined(ZSTD_LEGACY_SUPPORT) && (ZSTD_LEGACY_SUPPORT>0) && (ZSTD_LEGACY_SUPPORT<8)
+    DISPLAYLEVEL(3, ", zstd legacy v0.%d+", ZSTD_LEGACY_SUPPORT);
+#endif
+#ifdef ZSTD_GZCOMPRESS
+    DISPLAYLEVEL(3, ", gzip");
+#endif
+#ifdef ZSTD_LZ4COMPRESS
+    DISPLAYLEVEL(3, ", lz4");
+#endif
+#ifdef ZSTD_LZMACOMPRESS
+    DISPLAYLEVEL(3, ", lzma, xz ");
+#endif
+    DISPLAYLEVEL(3, "\n");
+    /* posix support */
+#ifdef _POSIX_C_SOURCE
+    DISPLAYLEVEL(4, "_POSIX_C_SOURCE defined: %ldL\n", (long) _POSIX_C_SOURCE);
+#endif
+#ifdef _POSIX_VERSION
+    DISPLAYLEVEL(4, "_POSIX_VERSION defined: %ldL \n", (long) _POSIX_VERSION);
+#endif
+#ifdef PLATFORM_POSIX_VERSION
+    DISPLAYLEVEL(4, "PLATFORM_POSIX_VERSION defined: %ldL\n", (long) PLATFORM_POSIX_VERSION);
+#endif
+}
 
 typedef enum { zom_compress, zom_decompress, zom_test, zom_bench, zom_train, zom_list } zstd_operation_mode;
 
@@ -492,7 +521,7 @@ int main(int argCount, const char* argv[])
                     switch(argument[0])
                     {
                         /* Display help */
-                    case 'V': g_displayOut=stdout; DISPLAY(WELCOME_MESSAGE); CLEAN_RETURN(0);   /* Version Only */
+                    case 'V': g_displayOut=stdout; printVersion(); CLEAN_RETURN(0);   /* Version Only */
                     case 'H':
                     case 'h': g_displayOut=stdout; CLEAN_RETURN(usage_advanced(programName));
 
@@ -635,24 +664,18 @@ int main(int argCount, const char* argv[])
         filenameTable[filenameIdx++] = argument;
     }
 
-    if (lastCommand) { DISPLAY("error : command must be followed by argument \n"); CLEAN_RETURN(1); }  /* forgotten argument */
+    if (lastCommand) { /* forgotten argument */
+        DISPLAY("error : command must be followed by argument \n");
+        CLEAN_RETURN(1);
+    }
 
     /* Welcome message (if verbose) */
     DISPLAYLEVEL(3, WELCOME_MESSAGE);
-#ifdef _POSIX_C_SOURCE
-    DISPLAYLEVEL(4, "_POSIX_C_SOURCE defined: %ldL\n", (long) _POSIX_C_SOURCE);
-#endif
-#ifdef _POSIX_VERSION
-    DISPLAYLEVEL(4, "_POSIX_VERSION defined: %ldL\n", (long) _POSIX_VERSION);
-#endif
-#ifdef PLATFORM_POSIX_VERSION
-    DISPLAYLEVEL(4, "PLATFORM_POSIX_VERSION defined: %ldL\n", (long) PLATFORM_POSIX_VERSION);
-#endif
 
     if (nbThreads == 0) {
         /* try to guess */
         nbThreads = UTIL_countPhysicalCores();
-        DISPLAYLEVEL(3, "Note: %d physical core(s) detected\n", nbThreads);
+        DISPLAYLEVEL(3, "Note: %d physical core(s) detected \n", nbThreads);
     }
 
     g_utilDisplayLevel = g_displayLevel;
@@ -679,10 +702,17 @@ int main(int argCount, const char* argv[])
         }
     }
 #endif
+
     if (operation == zom_list) {
+#ifndef ZSTD_NODECOMPRESS
         int const ret = FIO_listMultipleFiles(filenameIdx, filenameTable, g_displayLevel);
         CLEAN_RETURN(ret);
+#else
+        DISPLAY("file information is not supported \n");
+        CLEAN_RETURN(1);
+#endif
     }
+
     /* Check if benchmark is selected */
     if (operation==zom_bench) {
 #ifndef ZSTD_NOBENCH
@@ -692,7 +722,7 @@ int main(int argCount, const char* argv[])
         BMK_setNbSeconds(bench_nbSeconds);
         BMK_benchFiles(filenameTable, filenameIdx, dictFileName, cLevel, cLevelLast, &compressionParams, setRealTimePrio);
 #endif
-        (void)bench_nbSeconds;
+        (void)bench_nbSeconds; (void)blockSize; (void)setRealTimePrio;
         goto _end;
     }
 
@@ -719,6 +749,10 @@ int main(int argCount, const char* argv[])
         goto _end;
     }
 
+#ifndef ZSTD_NODECOMPRESS
+    if (operation==zom_test) { outFileName=nulmark; FIO_setRemoveSrcFile(0); } /* test mode */
+#endif
+
     /* No input filename ==> use stdin and stdout */
     filenameIdx += !filenameIdx;   /* filenameTable[0] is stdin by default */
     if (!strcmp(filenameTable[0], stdinmark) && !outFileName) outFileName = stdoutmark;   /* when input is stdin, default output is stdout */
@@ -759,11 +793,11 @@ int main(int argCount, const char* argv[])
         else
           operationResult = FIO_compressMultipleFilenames(filenameTable, filenameIdx, outFileName ? outFileName : suffix, dictFileName, cLevel, &compressionParams);
 #else
+        (void)suffix;
         DISPLAY("Compression not supported\n");
 #endif
     } else {  /* decompression or test */
 #ifndef ZSTD_NODECOMPRESS
-        if (operation==zom_test) { outFileName=nulmark; FIO_setRemoveSrcFile(0); } /* test mode */
         FIO_setMemLimit(memLimit);
         if (filenameIdx==1 && outFileName)
             operationResult = FIO_decompressFilename(outFileName, filenameTable[0], dictFileName);
diff --git contrib/zstd/tests/Makefile contrib/zstd/tests/Makefile
index 82f12887bf9b..3be79c159057 100644
--- contrib/zstd/tests/Makefile
+++ contrib/zstd/tests/Makefile
@@ -73,13 +73,13 @@ DECODECORPUS_TESTTIME ?= -T30
 
 default: fullbench
 
-all: fullbench fuzzer zstreamtest paramgrill datagen zbufftest decodecorpus
+all: fullbench fuzzer zstreamtest paramgrill datagen decodecorpus
 
-all32: fullbench32 fuzzer32 zstreamtest32 zbufftest32
+all32: fullbench32 fuzzer32 zstreamtest32
 
-allnothread: fullbench fuzzer paramgrill datagen zbufftest decodecorpus
+allnothread: fullbench fuzzer paramgrill datagen  decodecorpus
 
-dll: fuzzer-dll zstreamtest-dll zbufftest-dll
+dll: fuzzer-dll zstreamtest-dll
 
 zstd:
 	$(MAKE) -C $(PRGDIR) $@
@@ -108,11 +108,11 @@ fullbench-dll: $(PRGDIR)/datagen.c fullbench.c
 	$(MAKE) -C $(ZSTDDIR) libzstd
 	$(CC) $(FLAGS) $^ -o $@$(EXT) -DZSTD_DLL_IMPORT=1 $(ZSTDDIR)/dll/libzstd.dll
 
-fuzzer   : $(ZSTD_FILES) $(ZDICT_FILES) $(PRGDIR)/datagen.c fuzzer.c
-	$(CC)      $(FLAGS) $^ -o $@$(EXT)
-
-fuzzer32 : $(ZSTD_FILES) $(ZDICT_FILES) $(PRGDIR)/datagen.c fuzzer.c
-	$(CC) -m32 $(FLAGS) $^ -o $@$(EXT)
+fuzzer : CPPFLAGS += $(MULTITHREAD_CPP)
+fuzzer : LDFLAGS += $(MULTITHREAD_LD)
+fuzzer32: CFLAGS += -m32
+fuzzer fuzzer32 : $(ZSTD_FILES) $(ZDICT_FILES) $(PRGDIR)/datagen.c fuzzer.c
+	$(CC) $(FLAGS) $^ -o $@$(EXT)
 
 fuzzer-dll : LDFLAGS+= -L$(ZSTDDIR) -lzstd
 fuzzer-dll : $(ZSTDDIR)/common/xxhash.c $(PRGDIR)/datagen.c fuzzer.c
@@ -192,7 +192,7 @@ else
 	$(CC) $(FLAGS) $^ -o $@$(EXT) -Wl,-rpath=$(ZSTDDIR) $(ZSTDDIR)/libzstd.so
 endif
 
-pool  : pool.c $(ZSTDDIR)/common/pool.c $(ZSTDDIR)/common/threading.c
+poolTests  : poolTests.c $(ZSTDDIR)/common/pool.c $(ZSTDDIR)/common/threading.c
 	$(CC)    $(FLAGS) $(MULTITHREAD) $^ -o $@$(EXT)
 
 namespaceTest:
@@ -213,7 +213,7 @@ clean:
         fuzzer-dll$(EXT) zstreamtest-dll$(EXT) zbufftest-dll$(EXT)\
         zstreamtest$(EXT) zstreamtest32$(EXT) \
         datagen$(EXT) paramgrill$(EXT) roundTripCrash$(EXT) longmatch$(EXT) \
-        symbols$(EXT) invalidDictionaries$(EXT) legacy$(EXT) pool$(EXT) \
+        symbols$(EXT) invalidDictionaries$(EXT) legacy$(EXT) poolTests$(EXT) \
 	decodecorpus$(EXT)
 	@echo Cleaning completed
 
@@ -280,7 +280,7 @@ test-zstd: zstd zstd-playTests
 test-zstd32: ZSTD = $(PRGDIR)/zstd32
 test-zstd32: zstd32 zstd-playTests
 
-test-zstd-nolegacy: ZSTD = $(PRGDIR)/zstd
+test-zstd-nolegacy: ZSTD = $(PRGDIR)/zstd-nolegacy
 test-zstd-nolegacy: zstd-nolegacy zstd-playTests
 
 test-gzstd: gzstd
@@ -375,7 +375,7 @@ test-decodecorpus-cli: decodecorpus
 	cd ..
 	@rm -rf testdir
 
-test-pool: pool
-	$(QEMU_SYS) ./pool
+test-pool: poolTests
+	$(QEMU_SYS) ./poolTests
 
 endif
diff --git contrib/zstd/tests/datagencli.c contrib/zstd/tests/datagencli.c
index 8a81939d16de..bf9601f20976 100644
--- contrib/zstd/tests/datagencli.c
+++ contrib/zstd/tests/datagencli.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/tests/decodecorpus.c contrib/zstd/tests/decodecorpus.c
index eaf07457894f..23166bd67f0a 100644
--- contrib/zstd/tests/decodecorpus.c
+++ contrib/zstd/tests/decodecorpus.c
@@ -1,10 +1,10 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #include <limits.h>
diff --git contrib/zstd/tests/files/huffman-compressed-larger contrib/zstd/tests/files/huffman-compressed-larger
new file mode 100644
index 000000000000..f594f1ae9816
Binary files /dev/null and contrib/zstd/tests/files/huffman-compressed-larger differ
diff --git contrib/zstd/tests/fullbench.c contrib/zstd/tests/fullbench.c
index 81de5157b8e1..78a70940f9d2 100644
--- contrib/zstd/tests/fullbench.c
+++ contrib/zstd/tests/fullbench.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -91,12 +91,6 @@ static size_t BMK_findMaxMem(U64 requiredMem)
 /*_*******************************************************
 *  Benchmark wrappers
 *********************************************************/
-typedef struct {
-    blockType_e blockType;
-    U32 unusedBits;
-    U32 origSize;
-} blockProperties_t;
-
 size_t local_ZSTD_compress(void* dst, size_t dstSize, void* buff2, const void* src, size_t srcSize)
 {
     (void)buff2;
@@ -120,7 +114,6 @@ size_t local_ZSTD_decodeLiteralsBlock(void* dst, size_t dstSize, void* buff2, co
     return ZSTD_decodeLiteralsBlock((ZSTD_DCtx*)g_zdc, buff2, g_cSize);
 }
 
-extern size_t ZSTD_getcBlockSize(const void* src, size_t srcSize, blockProperties_t* bpPtr);
 extern size_t ZSTD_decodeSeqHeaders(ZSTD_DCtx* dctx, int* nbSeq, const void* src, size_t srcSize);
 size_t local_ZSTD_decodeSeqHeaders(void* dst, size_t dstSize, void* buff2, const void* src, size_t srcSize)
 {
diff --git contrib/zstd/tests/fuzz/Makefile contrib/zstd/tests/fuzz/Makefile
new file mode 100644
index 000000000000..da22ed0d0baa
--- /dev/null
+++ contrib/zstd/tests/fuzz/Makefile
@@ -0,0 +1,108 @@
+# ##########################################################################
+# Copyright (c) 2016-present, Facebook, Inc.
+# All rights reserved.
+#
+# This Makefile is validated for Linux, and macOS targets
+#
+# This source code is licensed under the BSD-style license found in the
+# LICENSE file in the root directory of this source tree. An additional grant
+# of patent rights can be found in the PATENTS file in the same directory.
+# ##########################################################################
+
+CFLAGS ?= -O3
+CXXFLAGS ?= -O3
+
+ZSTDDIR = ../../lib
+PRGDIR = ../../programs
+
+FUZZ_CPPFLAGS := -I$(ZSTDDIR) -I$(ZSTDDIR)/common -I$(ZSTDDIR)/compress \
+	-I$(ZSTDDIR)/dictBuilder -I$(ZSTDDIR)/deprecated -I$(PRGDIR) \
+	-DZSTD_DEBUG=1 -DMEM_FORCE_MEMORY_ACCESS=0 \
+	-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION $(CPPFLAGS)
+FUZZ_CFLAGS := -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
+	-Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
+	-Wstrict-prototypes -Wundef -Wformat-security \
+	-Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
+	-Wredundant-decls \
+	-g -fno-omit-frame-pointer $(CFLAGS)
+FUZZ_CXXFLAGS := -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
+	-Wstrict-aliasing=1 -Wswitch-enum \
+	-Wdeclaration-after-statement -Wstrict-prototypes -Wundef \
+	-Wformat-security -Wvla -Wformat=2 -Winit-self -Wfloat-equal \
+	-Wwrite-strings -Wredundant-decls \
+	-g -fno-omit-frame-pointer -std=c++11 $(CXXFLAGS)
+FUZZ_LDFLAGS := $(LDFLAGS)
+FUZZ_ARFLAGS := $(ARFLAGS)
+FUZZ_TARGET_FLAGS = $(FUZZ_CPPFLAGS) $(FUZZ_CXXFLAGS) $(FUZZ_LDFLAGS)
+
+FUZZ_HEADERS := fuzz_helpers.h fuzz.h
+
+ZSTDCOMMON_FILES := $(ZSTDDIR)/common/*.c
+ZSTDCOMP_FILES   := $(ZSTDDIR)/compress/*.c
+ZSTDDECOMP_FILES := $(ZSTDDIR)/decompress/*.c
+ZSTD_FILES       := $(ZSTDDECOMP_FILES) $(ZSTDCOMMON_FILES) $(ZSTDCOMP_FILES)
+
+ZSTD_OBJ  := $(patsubst %.c,%.o, $(wildcard $(ZSTD_FILES)))
+
+LIBFUZZER ?= -lFuzzer
+
+.PHONY: default all clean
+
+default: all
+
+all: round_trip simple_decompress
+
+%.o: %.c
+	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $^ -c -o $@
+
+simple_round_trip: $(FUZZ_HEADERS) $(ZSTD_OBJ) simple_round_trip.o
+	$(CXX) $(FUZZ_TARGET_FLAGS) $(ZSTD_OBJ) simple_round_trip.o $(LIBFUZZER) -o $@
+
+stream_round_trip: $(FUZZ_HEADERS) $(ZSTD_OBJ) stream_round_trip.o
+	$(CXX) $(FUZZ_TARGET_FLAGS) $(ZSTD_OBJ) stream_round_trip.o $(LIBFUZZER) -o $@
+
+simple_decompress: $(FUZZ_HEADERS) $(ZSTD_OBJ) simple_decompress.o
+	$(CXX) $(FUZZ_TARGET_FLAGS) $(ZSTD_OBJ) simple_decompress.o $(LIBFUZZER) -o $@
+
+stream_decompress: $(FUZZ_HEADERS) $(ZSTD_OBJ) stream_decompress.o
+	$(CXX) $(FUZZ_TARGET_FLAGS) $(ZSTD_OBJ) stream_decompress.o $(LIBFUZZER) -o $@
+
+libregression.a: $(FUZZ_HEADERS) $(PRGDIR)/util.h regression_driver.o
+	$(AR) $(FUZZ_ARFLAGS) $@ regression_driver.o
+
+%-regression: libregression.a
+	$(RM) $*
+	$(MAKE) $* LDFLAGS="$(FUZZ_LDFLAGS) -L." LIBFUZZER=-lregression
+
+%-regression-test: %-regression
+	./$* corpora/$*
+
+regression-test: \
+	simple_round_trip-regression-test \
+	stream_round_trip-regression-test \
+	simple_decompress-regression-test \
+	stream_decompress-regression-test
+
+%-msan: clean
+	$(MAKE) $* CFLAGS="-fsanitize=memory $(FUZZ_CFLAGS)" \
+		CXXFLAGS="-fsanitize=memory $(FUZZ_CXXFLAGS)"
+
+UASAN_FLAGS := -fsanitize=address,undefined -fno-sanitize-recover=undefined \
+	-fno-sanitize=pointer-overflow
+%-uasan: clean
+	$(MAKE) $* CFLAGS="$(FUZZ_CFLAGS) $(UASAN_FLAGS)" \
+		CXXFLAGS="$(FUZZ_CXXFLAGS) $(UASAN_FLAGS)"
+
+# Install libfuzzer (not usable for MSAN testing)
+# Provided for convienence. To use this library run make libFuzzer and
+# set LDFLAGS=-L.
+.PHONY: libFuzzer
+libFuzzer:
+	@$(RM) -rf Fuzzer
+	@git clone https://chromium.googlesource.com/chromium/llvm-project/llvm/lib/Fuzzer
+	@./Fuzzer/build.sh
+
+clean:
+	@$(MAKE) -C $(ZSTDDIR) clean
+	@$(RM) -f *.a *.o
+	@$(RM) -f simple_round_trip stream_round_trip simple_decompress stream_decompress
diff --git contrib/zstd/tests/fuzz/README.md contrib/zstd/tests/fuzz/README.md
new file mode 100644
index 000000000000..38a4f3d1ab02
--- /dev/null
+++ contrib/zstd/tests/fuzz/README.md
@@ -0,0 +1,34 @@
+# Fuzzing
+
+Each fuzzing target can be built with multiple engines.
+
+## LibFuzzer
+
+You can install `libFuzzer` with `make libFuzzer`. Then you can make each target
+with `make target LDFLAGS=-L. CC=clang CXX=clang++`.
+
+## AFL
+
+The regression driver also serves as a binary for `afl-fuzz`. You can make each
+target with one of these commands:
+
+```
+make target-regression CC=afl-clang CXX=afl-clang++
+AFL_MSAN=1 make target-regression-msan CC=afl-clang CXX=afl-clang++
+AFL_ASAN=1 make target-regression-uasan CC=afl-clang CXX=afl-clang++
+```
+
+Then run as `./target @@`.
+
+## Regression Testing
+
+Each fuzz target has a corpus checked into the repo under `fuzz/corpora/`.
+You can run regression tests on the corpora to ensure that inputs which
+previously exposed bugs still pass. You can make these targets to run the
+regression tests with different sanitizers.
+
+```
+make regression-test
+make regression-test-msan
+make regression-test-uasan
+```
diff --git contrib/zstd/tests/fuzz/fuzz.h contrib/zstd/tests/fuzz/fuzz.h
new file mode 100644
index 000000000000..5b71aba89b43
--- /dev/null
+++ contrib/zstd/tests/fuzz/fuzz.h
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2016-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+/**
+ * Fuzz target interface.
+ * Fuzz targets have some common parameters passed as macros during compilation.
+ * Check the documentation for each individual fuzzer for more parameters.
+ *
+ * @param STATEFULL_FUZZING:
+ *        Define this to reuse state between fuzzer runs. This can be useful to
+ *        test code paths which are only executed when contexts are reused.
+ *        WARNING: Makes reproducing crashes much harder.
+ *        Default: Not defined.
+ * @param FUZZ_RNG_SEED_SIZE:
+ *        The number of bytes of the source to look at when constructing a seed
+ *        for the deterministic RNG.
+ *        Default: 128.
+ * @param ZSTD_DEBUG:
+ *        This is a parameter for the zstd library. Defining `ZSTD_DEBUG=1`
+ *        enables assert() statements in the zstd library. Higher levels enable
+ *        logging, so aren't recommended. Defining `ZSTD_DEBUG=1` is
+ *        recommended.
+ * @param MEM_FORCE_MEMORY_ACCESS:
+ *        This flag controls how the zstd library accesses unaligned memory.
+ *        It can be undefined, or 0 through 2. If it is undefined, it selects
+ *        the method to use based on the compiler. If testing with UBSAN set
+ *        MEM_FORCE_MEMORY_ACCESS=0 to use the standard compliant method.
+ * @param FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+ *        This is the canonical flag to enable deterministic builds for fuzzing.
+ *        Changes to zstd for fuzzing are gated behind this define.
+ *        It is recommended to define this when building zstd for fuzzing.
+ */
+
+#ifndef FUZZ_H
+#define FUZZ_H
+
+#ifndef FUZZ_RNG_SEED_SIZE
+#  define FUZZ_RNG_SEED_SIZE 128
+#endif
+
+#include <stddef.h>
+#include <stdint.h>
+
+int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size);
+
+#endif
diff --git contrib/zstd/tests/fuzz/fuzz_helpers.h contrib/zstd/tests/fuzz/fuzz_helpers.h
new file mode 100644
index 000000000000..5f07fa4de935
--- /dev/null
+++ contrib/zstd/tests/fuzz/fuzz_helpers.h
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2016-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+/**
+ * Helper functions for fuzzing.
+ */
+
+#ifndef FUZZ_HELPERS_H
+#define FUZZ_HELPERS_H
+
+#include "fuzz.h"
+#include "xxhash.h"
+#include <stdint.h>
+#include <stdio.h>
+
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+
+#define FUZZ_QUOTE_IMPL(str) #str
+#define FUZZ_QUOTE(str) FUZZ_QUOTE_IMPL(str)
+
+/**
+ * Asserts for fuzzing that are always enabled.
+ */
+#define FUZZ_ASSERT_MSG(cond, msg)                                             \
+  ((cond) ? (void)0                                                            \
+          : (fprintf(stderr, "%s: %u: Assertion: `%s' failed. %s\n", __FILE__, \
+                     __LINE__, FUZZ_QUOTE(cond), (msg)),                       \
+             abort()))
+#define FUZZ_ASSERT(cond) FUZZ_ASSERT_MSG((cond), "");
+
+#if defined(__GNUC__)
+#define FUZZ_STATIC static __inline __attribute__((unused))
+#elif defined(__cplusplus) ||                                                  \
+    (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
+#define FUZZ_STATIC static inline
+#elif defined(_MSC_VER)
+#define FUZZ_STATIC static __inline
+#else
+#define FUZZ_STATIC static
+#endif
+
+/**
+ * Determininistically constructs a seed based on the fuzz input.
+ * Only looks at the first FUZZ_RNG_SEED_SIZE bytes of the input.
+ */
+FUZZ_STATIC uint32_t FUZZ_seed(const uint8_t *src, size_t size) {
+  size_t const toHash = MIN(FUZZ_RNG_SEED_SIZE, size);
+  return XXH32(src, toHash, 0);
+}
+
+#define FUZZ_rotl32(x, r) (((x) << (r)) | ((x) >> (32 - (r))))
+FUZZ_STATIC uint32_t FUZZ_rand(uint32_t *state) {
+  static const uint32_t prime1 = 2654435761U;
+  static const uint32_t prime2 = 2246822519U;
+  uint32_t rand32 = *state;
+  rand32 *= prime1;
+  rand32 += prime2;
+  rand32 = FUZZ_rotl32(rand32, 13);
+  *state = rand32;
+  return rand32 >> 5;
+}
+
+#endif
diff --git contrib/zstd/tests/fuzz/regression_driver.c contrib/zstd/tests/fuzz/regression_driver.c
new file mode 100644
index 000000000000..eee5f0a2a2b2
--- /dev/null
+++ contrib/zstd/tests/fuzz/regression_driver.c
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2016-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+#include "fuzz.h"
+#include "fuzz_helpers.h"
+#include "util.h"
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char const **argv) {
+  size_t const kMaxFileSize = (size_t)1 << 20;
+  int const kFollowLinks = 1;
+  char *fileNamesBuf = NULL;
+  char const **files = argv + 1;
+  unsigned numFiles = argc - 1;
+  uint8_t *buffer = NULL;
+  size_t bufferSize = 0;
+  unsigned i;
+  int ret;
+
+#ifdef UTIL_HAS_CREATEFILELIST
+  files = UTIL_createFileList(files, numFiles, &fileNamesBuf, &numFiles,
+                              kFollowLinks);
+  FUZZ_ASSERT(files);
+#endif
+
+  for (i = 0; i < numFiles; ++i) {
+    char const *fileName = files[i];
+    size_t const fileSize = UTIL_getFileSize(fileName);
+    size_t readSize;
+    FILE *file;
+
+    /* Check that it is a regular file, and that the fileSize is valid */
+    FUZZ_ASSERT_MSG(UTIL_isRegFile(fileName), fileName);
+    FUZZ_ASSERT_MSG(fileSize <= kMaxFileSize, fileName);
+    /* Ensure we have a large enough buffer allocated */
+    if (fileSize > bufferSize) {
+      free(buffer);
+      buffer = (uint8_t *)malloc(fileSize);
+      FUZZ_ASSERT_MSG(buffer, fileName);
+      bufferSize = fileSize;
+    }
+    /* Open the file */
+    file = fopen(fileName, "rb");
+    FUZZ_ASSERT_MSG(file, fileName);
+    /* Read the file */
+    readSize = fread(buffer, 1, fileSize, file);
+    FUZZ_ASSERT_MSG(readSize == fileSize, fileName);
+    /* Close the file */
+    fclose(file);
+    /* Run the fuzz target */
+    LLVMFuzzerTestOneInput(buffer, fileSize);
+  }
+
+  ret = 0;
+  free(buffer);
+#ifdef UTIL_HAS_CREATEFILELIST
+  UTIL_freeFileList(files, fileNamesBuf);
+#endif
+  return ret;
+}
diff --git contrib/zstd/tests/fuzz/simple_decompress.c contrib/zstd/tests/fuzz/simple_decompress.c
new file mode 100644
index 000000000000..c22ad7c5301c
--- /dev/null
+++ contrib/zstd/tests/fuzz/simple_decompress.c
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+/**
+ * This fuzz target attempts to decompress the fuzzed data with the simple
+ * decompression function to ensure the decompressor never crashes.
+ */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "fuzz_helpers.h"
+#include "zstd.h"
+
+static ZSTD_DCtx *dctx = NULL;
+static void* rBuf = NULL;
+static size_t bufSize = 0;
+
+int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
+{
+    size_t const neededBufSize = MAX(20 * size, (size_t)256 << 10);
+
+    /* Allocate all buffers and contexts if not already allocated */
+    if (neededBufSize > bufSize) {
+        free(rBuf);
+        rBuf = malloc(neededBufSize);
+        bufSize = neededBufSize;
+        FUZZ_ASSERT(rBuf);
+    }
+    if (!dctx) {
+        dctx = ZSTD_createDCtx();
+        FUZZ_ASSERT(dctx);
+    }
+    ZSTD_decompressDCtx(dctx, rBuf, neededBufSize, src, size);
+
+#ifndef STATEFULL_FUZZING
+    ZSTD_freeDCtx(dctx); dctx = NULL;
+#endif
+    return 0;
+}
diff --git contrib/zstd/tests/fuzz/simple_round_trip.c contrib/zstd/tests/fuzz/simple_round_trip.c
new file mode 100644
index 000000000000..703ea582630a
--- /dev/null
+++ contrib/zstd/tests/fuzz/simple_round_trip.c
@@ -0,0 +1,81 @@
+/**
+ * Copyright (c) 2016-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+/**
+ * This fuzz target performs a zstd round-trip test (compress & decompress),
+ * compares the result with the original, and calls abort() on corruption.
+ */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "fuzz_helpers.h"
+#include "zstd.h"
+
+static const int kMaxClevel = 19;
+
+static ZSTD_CCtx *cctx = NULL;
+static ZSTD_DCtx *dctx = NULL;
+static void* cBuf = NULL;
+static void* rBuf = NULL;
+static size_t bufSize = 0;
+static uint32_t seed;
+
+static size_t roundTripTest(void *result, size_t resultCapacity,
+                            void *compressed, size_t compressedCapacity,
+                            const void *src, size_t srcSize)
+{
+  int const cLevel = FUZZ_rand(&seed) % kMaxClevel;
+  size_t const cSize = ZSTD_compressCCtx(cctx, compressed, compressedCapacity,
+                                         src, srcSize, cLevel);
+  if (ZSTD_isError(cSize)) {
+    fprintf(stderr, "Compression error: %s\n", ZSTD_getErrorName(cSize));
+    return cSize;
+  }
+  return ZSTD_decompressDCtx(dctx, result, resultCapacity, compressed, cSize);
+}
+
+int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
+{
+    size_t const neededBufSize = ZSTD_compressBound(size);
+
+    seed = FUZZ_seed(src, size);
+
+    /* Allocate all buffers and contexts if not already allocated */
+    if (neededBufSize > bufSize) {
+        free(cBuf);
+        free(rBuf);
+        cBuf = malloc(neededBufSize);
+        rBuf = malloc(neededBufSize);
+        bufSize = neededBufSize;
+        FUZZ_ASSERT(cBuf && rBuf);
+    }
+    if (!cctx) {
+        cctx = ZSTD_createCCtx();
+        FUZZ_ASSERT(cctx);
+    }
+    if (!dctx) {
+        dctx = ZSTD_createDCtx();
+        FUZZ_ASSERT(dctx);
+    }
+
+    {
+        size_t const result =
+            roundTripTest(rBuf, neededBufSize, cBuf, neededBufSize, src, size);
+        FUZZ_ASSERT_MSG(!ZSTD_isError(result), ZSTD_getErrorName(result));
+        FUZZ_ASSERT_MSG(result == size, "Incorrect regenerated size");
+        FUZZ_ASSERT_MSG(!memcmp(src, rBuf, size), "Corruption!");
+    }
+#ifndef STATEFULL_FUZZING
+    ZSTD_freeCCtx(cctx); cctx = NULL;
+    ZSTD_freeDCtx(dctx); dctx = NULL;
+#endif
+    return 0;
+}
diff --git contrib/zstd/tests/fuzz/stream_decompress.c contrib/zstd/tests/fuzz/stream_decompress.c
new file mode 100644
index 000000000000..778a426dec7c
--- /dev/null
+++ contrib/zstd/tests/fuzz/stream_decompress.c
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+/**
+ * This fuzz target attempts to decompress the fuzzed data with the simple
+ * decompression function to ensure the decompressor never crashes.
+ */
+
+#define ZSTD_STATIC_LINKING_ONLY
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "fuzz_helpers.h"
+#include "zstd.h"
+
+static size_t const kBufSize = ZSTD_BLOCKSIZE_ABSOLUTEMAX;
+
+static ZSTD_DStream *dstream = NULL;
+static void* buf = NULL;
+uint32_t seed;
+
+static ZSTD_outBuffer makeOutBuffer(void)
+{
+  ZSTD_outBuffer buffer = { buf, 0, 0 };
+
+  buffer.size = (FUZZ_rand(&seed) % kBufSize) + 1;
+  FUZZ_ASSERT(buffer.size <= kBufSize);
+
+  return buffer;
+}
+
+static ZSTD_inBuffer makeInBuffer(const uint8_t **src, size_t *size)
+{
+  ZSTD_inBuffer buffer = { *src, 0, 0 };
+
+  FUZZ_ASSERT(*size > 0);
+  buffer.size = (FUZZ_rand(&seed) % *size) + 1;
+  FUZZ_ASSERT(buffer.size <= *size);
+  *src += buffer.size;
+  *size -= buffer.size;
+
+  return buffer;
+}
+
+int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
+{
+    seed = FUZZ_seed(src, size);
+
+    /* Allocate all buffers and contexts if not already allocated */
+    if (!buf) {
+      buf = malloc(kBufSize);
+      FUZZ_ASSERT(buf);
+    }
+
+    if (!dstream) {
+        dstream = ZSTD_createDStream();
+        FUZZ_ASSERT(dstream);
+        FUZZ_ASSERT(!ZSTD_isError(ZSTD_initDStream(dstream)));
+    } else {
+        FUZZ_ASSERT(!ZSTD_isError(ZSTD_resetDStream(dstream)));
+    }
+
+    while (size > 0) {
+        ZSTD_inBuffer in = makeInBuffer(&src, &size);
+        while (in.pos != in.size) {
+            ZSTD_outBuffer out = makeOutBuffer();
+            size_t const rc = ZSTD_decompressStream(dstream, &out, &in);
+            if (ZSTD_isError(rc)) goto error;
+            if (rc == 0) FUZZ_ASSERT(!ZSTD_isError(ZSTD_resetDStream(dstream)));
+        }
+    }
+
+error:
+#ifndef STATEFULL_FUZZING
+    ZSTD_freeDStream(dstream); dstream = NULL;
+#endif
+    return 0;
+}
diff --git contrib/zstd/tests/fuzz/stream_round_trip.c contrib/zstd/tests/fuzz/stream_round_trip.c
new file mode 100644
index 000000000000..17c7dfdd29a7
--- /dev/null
+++ contrib/zstd/tests/fuzz/stream_round_trip.c
@@ -0,0 +1,153 @@
+/**
+ * Copyright (c) 2016-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+/**
+ * This fuzz target performs a zstd round-trip test (compress & decompress),
+ * compares the result with the original, and calls abort() on corruption.
+ */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "fuzz_helpers.h"
+#include "zstd.h"
+
+static const int kMaxClevel = 19;
+
+static ZSTD_CStream *cstream = NULL;
+static ZSTD_DCtx *dctx = NULL;
+static uint8_t* cBuf = NULL;
+static uint8_t* rBuf = NULL;
+static size_t bufSize = 0;
+static uint32_t seed;
+
+static ZSTD_outBuffer makeOutBuffer(uint8_t *dst, size_t capacity)
+{
+  ZSTD_outBuffer buffer = { dst, 0, 0 };
+
+  FUZZ_ASSERT(capacity > 0);
+  buffer.size = (FUZZ_rand(&seed) % capacity) + 1;
+  FUZZ_ASSERT(buffer.size <= capacity);
+
+  return buffer;
+}
+
+static ZSTD_inBuffer makeInBuffer(const uint8_t **src, size_t *size)
+{
+  ZSTD_inBuffer buffer = { *src, 0, 0 };
+
+  FUZZ_ASSERT(*size > 0);
+  buffer.size = (FUZZ_rand(&seed) % *size) + 1;
+  FUZZ_ASSERT(buffer.size <= *size);
+  *src += buffer.size;
+  *size -= buffer.size;
+
+  return buffer;
+}
+
+static size_t compress(uint8_t *dst, size_t capacity,
+                       const uint8_t *src, size_t srcSize)
+{
+    int cLevel = FUZZ_rand(&seed) % kMaxClevel;
+    size_t dstSize = 0;
+    FUZZ_ASSERT(!ZSTD_isError(ZSTD_initCStream(cstream, cLevel)));
+
+    while (srcSize > 0) {
+        ZSTD_inBuffer in = makeInBuffer(&src, &srcSize);
+        /* Mode controls the action. If mode == -1 we pick a new mode */
+        int mode = -1;
+        while (in.pos < in.size) {
+          ZSTD_outBuffer out = makeOutBuffer(dst, capacity);
+          /* Previous action finished, pick a new mode. */
+          if (mode == -1) mode = FUZZ_rand(&seed) % 10;
+          switch (mode) {
+            case 0: /* fall-though */
+            case 1: /* fall-though */
+            case 2: {
+                size_t const ret = ZSTD_flushStream(cstream, &out);
+                FUZZ_ASSERT_MSG(!ZSTD_isError(ret), ZSTD_getErrorName(ret));
+                if (ret == 0) mode = -1;
+                break;
+            }
+            case 3: {
+                size_t ret = ZSTD_endStream(cstream, &out);
+                FUZZ_ASSERT_MSG(!ZSTD_isError(ret), ZSTD_getErrorName(ret));
+                /* Reset the compressor when the frame is finished */
+                if (ret == 0) {
+                    cLevel = FUZZ_rand(&seed) % kMaxClevel;
+                    ret = ZSTD_initCStream(cstream, cLevel);
+                    FUZZ_ASSERT(!ZSTD_isError(ret));
+                    mode = -1;
+                }
+                break;
+            }
+            default: {
+                size_t const ret = ZSTD_compressStream(cstream, &out, &in);
+                FUZZ_ASSERT_MSG(!ZSTD_isError(ret), ZSTD_getErrorName(ret));
+                mode = -1;
+            }
+          }
+          dst += out.pos;
+          dstSize += out.pos;
+          capacity -= out.pos;
+        }
+    }
+    for (;;) {
+        ZSTD_outBuffer out = makeOutBuffer(dst, capacity);
+        size_t const ret = ZSTD_endStream(cstream, &out);
+        FUZZ_ASSERT_MSG(!ZSTD_isError(ret), ZSTD_getErrorName(ret));
+
+        dst += out.pos;
+        dstSize += out.pos;
+        capacity -= out.pos;
+        if (ret == 0) break;
+    }
+    return dstSize;
+}
+
+int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
+{
+    size_t const neededBufSize = ZSTD_compressBound(size) * 2;
+
+    seed = FUZZ_seed(src, size);
+
+    /* Allocate all buffers and contexts if not already allocated */
+    if (neededBufSize > bufSize) {
+        free(cBuf);
+        free(rBuf);
+        cBuf = (uint8_t*)malloc(neededBufSize);
+        rBuf = (uint8_t*)malloc(neededBufSize);
+        bufSize = neededBufSize;
+        FUZZ_ASSERT(cBuf && rBuf);
+    }
+    if (!cstream) {
+        cstream = ZSTD_createCStream();
+        FUZZ_ASSERT(cstream);
+    }
+    if (!dctx) {
+        dctx = ZSTD_createDCtx();
+        FUZZ_ASSERT(dctx);
+    }
+
+    {
+        size_t const cSize = compress(cBuf, neededBufSize, src, size);
+        size_t const rSize =
+            ZSTD_decompressDCtx(dctx, rBuf, neededBufSize, cBuf, cSize);
+        FUZZ_ASSERT_MSG(!ZSTD_isError(rSize), ZSTD_getErrorName(rSize));
+        FUZZ_ASSERT_MSG(rSize == size, "Incorrect regenerated size");
+        FUZZ_ASSERT_MSG(!memcmp(src, rBuf, size), "Corruption!");
+    }
+
+#ifndef STATEFULL_FUZZING
+    ZSTD_freeCStream(cstream); cstream = NULL;
+    ZSTD_freeDCtx(dctx); dctx = NULL;
+#endif
+    return 0;
+}
diff --git contrib/zstd/tests/fuzzer.c contrib/zstd/tests/fuzzer.c
index b8f514785542..0c13a6e488ad 100644
--- contrib/zstd/tests/fuzzer.c
+++ contrib/zstd/tests/fuzzer.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -51,14 +51,14 @@ static const U32 nbTestsDefault = 30000;
 /*-************************************
 *  Display Macros
 **************************************/
-#define DISPLAY(...)          fprintf(stderr, __VA_ARGS__)
+#define DISPLAY(...)          fprintf(stdout, __VA_ARGS__)
 #define DISPLAYLEVEL(l, ...)  if (g_displayLevel>=l) { DISPLAY(__VA_ARGS__); }
 static U32 g_displayLevel = 2;
 
 #define DISPLAYUPDATE(l, ...) if (g_displayLevel>=l) { \
             if ((FUZ_clockSpan(g_displayClock) > g_refreshRate) || (g_displayLevel>=4)) \
             { g_displayClock = clock(); DISPLAY(__VA_ARGS__); \
-            if (g_displayLevel>=4) fflush(stderr); } }
+            if (g_displayLevel>=4) fflush(stdout); } }
 static const clock_t g_refreshRate = CLOCKS_PER_SEC / 6;
 static clock_t g_displayClock = 0;
 
@@ -97,7 +97,165 @@ static unsigned FUZ_highbit32(U32 v32)
 
 
 /*=============================================
-*   Basic Unit tests
+*   Memory Tests
+=============================================*/
+#if defined(__APPLE__) && defined(__MACH__)
+
+#include <malloc/malloc.h>    /* malloc_size */
+
+typedef struct {
+    unsigned long long totalMalloc;
+    size_t currentMalloc;
+    size_t peakMalloc;
+    unsigned nbMalloc;
+    unsigned nbFree;
+} mallocCounter_t;
+
+static const mallocCounter_t INIT_MALLOC_COUNTER = { 0, 0, 0, 0, 0 };
+
+static void* FUZ_mallocDebug(void* counter, size_t size)
+{
+    mallocCounter_t* const mcPtr = (mallocCounter_t*)counter;
+    void* const ptr = malloc(size);
+    if (ptr==NULL) return NULL;
+    DISPLAYLEVEL(4, "allocating %u KB => effectively %u KB \n",
+        (U32)(size >> 10), (U32)(malloc_size(ptr) >> 10));  /* OS-X specific */
+    mcPtr->totalMalloc += size;
+    mcPtr->currentMalloc += size;
+    if (mcPtr->currentMalloc > mcPtr->peakMalloc)
+        mcPtr->peakMalloc = mcPtr->currentMalloc;
+    mcPtr->nbMalloc += 1;
+    return ptr;
+}
+
+static void FUZ_freeDebug(void* counter, void* address)
+{
+    mallocCounter_t* const mcPtr = (mallocCounter_t*)counter;
+    DISPLAYLEVEL(4, "freeing %u KB \n", (U32)(malloc_size(address) >> 10));
+    mcPtr->nbFree += 1;
+    mcPtr->currentMalloc -= malloc_size(address);  /* OS-X specific */
+    free(address);
+}
+
+static void FUZ_displayMallocStats(mallocCounter_t count)
+{
+    DISPLAYLEVEL(3, "peak:%6u KB,  nbMallocs:%2u, total:%6u KB \n",
+        (U32)(count.peakMalloc >> 10),
+        count.nbMalloc,
+        (U32)(count.totalMalloc >> 10));
+}
+
+#define CHECK_Z(f) {                               \
+    size_t const err = f;                          \
+    if (ZSTD_isError(err)) {                       \
+        DISPLAY("Error => %s : %s ",               \
+                #f, ZSTD_getErrorName(err));       \
+        exit(1);                                   \
+}   }
+
+static int FUZ_mallocTests(unsigned seed, double compressibility, unsigned part)
+{
+    size_t const inSize = 64 MB + 16 MB + 4 MB + 1 MB + 256 KB + 64 KB; /* 85.3 MB */
+    size_t const outSize = ZSTD_compressBound(inSize);
+    void* const inBuffer = malloc(inSize);
+    void* const outBuffer = malloc(outSize);
+
+    /* test only played in verbose mode, as they are long */
+    if (g_displayLevel<3) return 0;
+
+    /* Create compressible noise */
+    if (!inBuffer || !outBuffer) {
+        DISPLAY("Not enough memory, aborting\n");
+        exit(1);
+    }
+    RDG_genBuffer(inBuffer, inSize, compressibility, 0. /*auto*/, seed);
+
+    /* simple compression tests */
+    if (part <= 1)
+    {   int compressionLevel;
+        for (compressionLevel=1; compressionLevel<=6; compressionLevel++) {
+            mallocCounter_t malcount = INIT_MALLOC_COUNTER;
+            ZSTD_customMem const cMem = { FUZ_mallocDebug, FUZ_freeDebug, &malcount };
+            ZSTD_CCtx* const cctx = ZSTD_createCCtx_advanced(cMem);
+            CHECK_Z( ZSTD_compressCCtx(cctx, outBuffer, outSize, inBuffer, inSize, compressionLevel) );
+            ZSTD_freeCCtx(cctx);
+            DISPLAYLEVEL(3, "compressCCtx level %i : ", compressionLevel);
+            FUZ_displayMallocStats(malcount);
+    }   }
+
+    /* streaming compression tests */
+    if (part <= 2)
+    {   int compressionLevel;
+        for (compressionLevel=1; compressionLevel<=6; compressionLevel++) {
+            mallocCounter_t malcount = INIT_MALLOC_COUNTER;
+            ZSTD_customMem const cMem = { FUZ_mallocDebug, FUZ_freeDebug, &malcount };
+            ZSTD_CCtx* const cstream = ZSTD_createCStream_advanced(cMem);
+            ZSTD_outBuffer out = { outBuffer, outSize, 0 };
+            ZSTD_inBuffer in = { inBuffer, inSize, 0 };
+            CHECK_Z( ZSTD_initCStream(cstream, compressionLevel) );
+            CHECK_Z( ZSTD_compressStream(cstream, &out, &in) );
+            CHECK_Z( ZSTD_endStream(cstream, &out) );
+            ZSTD_freeCStream(cstream);
+            DISPLAYLEVEL(3, "compressStream level %i : ", compressionLevel);
+            FUZ_displayMallocStats(malcount);
+    }   }
+
+    /* advanced MT API test */
+    if (part <= 3)
+    {   U32 nbThreads;
+        for (nbThreads=1; nbThreads<=4; nbThreads++) {
+            int compressionLevel;
+            for (compressionLevel=1; compressionLevel<=6; compressionLevel++) {
+                mallocCounter_t malcount = INIT_MALLOC_COUNTER;
+                ZSTD_customMem const cMem = { FUZ_mallocDebug, FUZ_freeDebug, &malcount };
+                ZSTD_CCtx* const cctx = ZSTD_createCCtx_advanced(cMem);
+                ZSTD_outBuffer out = { outBuffer, outSize, 0 };
+                ZSTD_inBuffer in = { inBuffer, inSize, 0 };
+                CHECK_Z( ZSTD_CCtx_setParameter(cctx, ZSTD_p_compressionLevel, (U32)compressionLevel) );
+                CHECK_Z( ZSTD_CCtx_setParameter(cctx, ZSTD_p_nbThreads, nbThreads) );
+                while ( ZSTD_compress_generic(cctx, &out, &in, ZSTD_e_end) ) {}
+                ZSTD_freeCCtx(cctx);
+                DISPLAYLEVEL(3, "compress_generic,-T%u,end level %i : ",
+                                nbThreads, compressionLevel);
+                FUZ_displayMallocStats(malcount);
+    }   }   }
+
+    /* advanced MT streaming API test */
+    if (part <= 4)
+    {   U32 nbThreads;
+        for (nbThreads=1; nbThreads<=4; nbThreads++) {
+            int compressionLevel;
+            for (compressionLevel=1; compressionLevel<=6; compressionLevel++) {
+                mallocCounter_t malcount = INIT_MALLOC_COUNTER;
+                ZSTD_customMem const cMem = { FUZ_mallocDebug, FUZ_freeDebug, &malcount };
+                ZSTD_CCtx* const cctx = ZSTD_createCCtx_advanced(cMem);
+                ZSTD_outBuffer out = { outBuffer, outSize, 0 };
+                ZSTD_inBuffer in = { inBuffer, inSize, 0 };
+                CHECK_Z( ZSTD_CCtx_setParameter(cctx, ZSTD_p_compressionLevel, (U32)compressionLevel) );
+                CHECK_Z( ZSTD_CCtx_setParameter(cctx, ZSTD_p_nbThreads, nbThreads) );
+                CHECK_Z( ZSTD_compress_generic(cctx, &out, &in, ZSTD_e_continue) );
+                while ( ZSTD_compress_generic(cctx, &out, &in, ZSTD_e_end) ) {}
+                ZSTD_freeCCtx(cctx);
+                DISPLAYLEVEL(3, "compress_generic,-T%u,continue level %i : ",
+                                nbThreads, compressionLevel);
+                FUZ_displayMallocStats(malcount);
+    }   }   }
+
+    return 0;
+}
+
+#else
+
+static int FUZ_mallocTests(unsigned seed, double compressibility, unsigned part)
+{
+    (void)seed; (void)compressibility; (void)part;
+    return 0;
+}
+
+#endif
+
+/*=============================================
+*   Unit tests
 =============================================*/
 
 #define CHECK_V(var, fn)  size_t const var = fn; if (ZSTD_isError(var)) goto _output_error
@@ -108,7 +266,8 @@ static int basicUnitTests(U32 seed, double compressibility)
 {
     size_t const CNBuffSize = 5 MB;
     void* const CNBuffer = malloc(CNBuffSize);
-    void* const compressedBuffer = malloc(ZSTD_compressBound(CNBuffSize));
+    size_t const compressedBufferSize = ZSTD_compressBound(CNBuffSize);
+    void* const compressedBuffer = malloc(compressedBufferSize);
     void* const decodedBuffer = malloc(CNBuffSize);
     ZSTD_DCtx* dctx = ZSTD_createDCtx();
     int testResult = 0;
@@ -136,10 +295,20 @@ static int basicUnitTests(U32 seed, double compressibility)
 
 
     DISPLAYLEVEL(4, "test%3i : compress %u bytes : ", testNb++, (U32)CNBuffSize);
-    CHECKPLUS(r, ZSTD_compress(compressedBuffer, ZSTD_compressBound(CNBuffSize),
-                               CNBuffer, CNBuffSize, 1),
-              cSize=r );
-    DISPLAYLEVEL(4, "OK (%u bytes : %.2f%%)\n", (U32)cSize, (double)cSize/CNBuffSize*100);
+    {   ZSTD_CCtx* cctx = ZSTD_createCCtx();
+        if (cctx==NULL) goto _output_error;
+        CHECKPLUS(r, ZSTD_compressCCtx(cctx,
+                            compressedBuffer, compressedBufferSize,
+                            CNBuffer, CNBuffSize, 1),
+                  cSize=r );
+        DISPLAYLEVEL(4, "OK (%u bytes : %.2f%%)\n", (U32)cSize, (double)cSize/CNBuffSize*100);
+
+        DISPLAYLEVEL(4, "test%3i : size of cctx for level 1 : ", testNb++);
+        {   size_t const cctxSize = ZSTD_sizeof_CCtx(cctx);
+            DISPLAYLEVEL(4, "%u bytes \n", (U32)cctxSize);
+        }
+        ZSTD_freeCCtx(cctx);
+    }
 
 
     DISPLAYLEVEL(4, "test%3i : ZSTD_getFrameContentSize test : ", testNb++);
@@ -216,7 +385,7 @@ static int basicUnitTests(U32 seed, double compressibility)
 
             DISPLAYLEVEL(4, "test%3i : simple compression test with static CCtx : ", testNb++);
             CHECKPLUS(r, ZSTD_compressCCtx(staticCCtx,
-                            compressedBuffer, ZSTD_compressBound(CNBuffSize),
+                            compressedBuffer, compressedBufferSize,
                             CNBuffer, CNBuffSize, STATIC_CCTX_LEVEL),
                       cSize=r );
             DISPLAYLEVEL(4, "OK (%u bytes : %.2f%%)\n",
@@ -285,7 +454,7 @@ static int basicUnitTests(U32 seed, double compressibility)
 
         DISPLAYLEVEL(4, "test%3i : compress %u bytes with 2 threads : ", testNb++, (U32)CNBuffSize);
         CHECKPLUS(r, ZSTDMT_compressCCtx(mtctx,
-                                compressedBuffer, ZSTD_compressBound(CNBuffSize),
+                                compressedBuffer, compressedBufferSize,
                                 CNBuffer, CNBuffSize,
                                 1),
                   cSize=r );
@@ -311,6 +480,23 @@ static int basicUnitTests(U32 seed, double compressibility)
         }   }
         DISPLAYLEVEL(4, "OK \n");
 
+        DISPLAYLEVEL(4, "test%3i : compress -T2 with checksum : ", testNb++);
+        {   ZSTD_parameters params = ZSTD_getParams(1, CNBuffSize, 0);
+            params.fParams.checksumFlag = 1;
+            params.fParams.contentSizeFlag = 1;
+            CHECKPLUS(r, ZSTDMT_compress_advanced(mtctx,
+                                    compressedBuffer, compressedBufferSize,
+                                    CNBuffer, CNBuffSize,
+                                    NULL, params, 3 /*overlapRLog*/),
+                      cSize=r );
+        }
+        DISPLAYLEVEL(4, "OK (%u bytes : %.2f%%)\n", (U32)cSize, (double)cSize/CNBuffSize*100);
+
+        DISPLAYLEVEL(4, "test%3i : decompress %u bytes : ", testNb++, (U32)CNBuffSize);
+        { size_t const r = ZSTD_decompress(decodedBuffer, CNBuffSize, compressedBuffer, cSize);
+          if (r != CNBuffSize) goto _output_error; }
+        DISPLAYLEVEL(4, "OK \n");
+
         ZSTDMT_freeCCtx(mtctx);
     }
 
@@ -372,7 +558,7 @@ static int basicUnitTests(U32 seed, double compressibility)
 
         DISPLAYLEVEL(4, "test%3i : compress with flat dictionary : ", testNb++);
         cSize = 0;
-        CHECKPLUS(r, ZSTD_compressEnd(ctxOrig, compressedBuffer, ZSTD_compressBound(CNBuffSize),
+        CHECKPLUS(r, ZSTD_compressEnd(ctxOrig, compressedBuffer, compressedBufferSize,
                                            (const char*)CNBuffer + dictSize, CNBuffSize - dictSize),
                   cSize += r);
         DISPLAYLEVEL(4, "OK (%u bytes : %.2f%%)\n", (U32)cSize, (double)cSize/CNBuffSize*100);
@@ -388,7 +574,7 @@ static int basicUnitTests(U32 seed, double compressibility)
         DISPLAYLEVEL(4, "test%3i : compress with duplicated context : ", testNb++);
         {   size_t const cSizeOrig = cSize;
             cSize = 0;
-            CHECKPLUS(r, ZSTD_compressEnd(ctxDuplicated, compressedBuffer, ZSTD_compressBound(CNBuffSize),
+            CHECKPLUS(r, ZSTD_compressEnd(ctxDuplicated, compressedBuffer, compressedBufferSize,
                                                (const char*)CNBuffer + dictSize, CNBuffSize - dictSize),
                       cSize += r);
             if (cSize != cSizeOrig) goto _output_error;   /* should be identical ==> same size */
@@ -434,9 +620,9 @@ static int basicUnitTests(U32 seed, double compressibility)
             CHECKPLUS(r, ZSTD_compressEnd(ctxDuplicated, compressedBuffer, ZSTD_compressBound(testSize),
                                           (const char*)CNBuffer + dictSize, testSize),
                       cSize = r);
-            {   ZSTD_frameHeader fp;
-                if (ZSTD_getFrameHeader(&fp, compressedBuffer, cSize)) goto _output_error;
-                if ((fp.frameContentSize != testSize) && (fp.frameContentSize != 0)) goto _output_error;
+            {   ZSTD_frameHeader zfh;
+                if (ZSTD_getFrameHeader(&zfh, compressedBuffer, cSize)) goto _output_error;
+                if ((zfh.frameContentSize != testSize) && (zfh.frameContentSize != 0)) goto _output_error;
         }   }
         DISPLAYLEVEL(4, "OK \n");
 
@@ -473,7 +659,7 @@ static int basicUnitTests(U32 seed, double compressibility)
         DISPLAYLEVEL(4, "OK : %u \n", dictID);
 
         DISPLAYLEVEL(4, "test%3i : compress with dictionary : ", testNb++);
-        cSize = ZSTD_compress_usingDict(cctx, compressedBuffer, ZSTD_compressBound(CNBuffSize),
+        cSize = ZSTD_compress_usingDict(cctx, compressedBuffer, compressedBufferSize,
                                         CNBuffer, CNBuffSize,
                                         dictBuffer, dictSize, 4);
         if (ZSTD_isError(cSize)) goto _output_error;
@@ -511,7 +697,7 @@ static int basicUnitTests(U32 seed, double compressibility)
                                             1 /* byReference */, ZSTD_dm_auto,
                                             cParams, ZSTD_defaultCMem);
             DISPLAYLEVEL(4, "(size : %u) : ", (U32)ZSTD_sizeof_CDict(cdict));
-            cSize = ZSTD_compress_usingCDict(cctx, compressedBuffer, ZSTD_compressBound(CNBuffSize),
+            cSize = ZSTD_compress_usingCDict(cctx, compressedBuffer, compressedBufferSize,
                                                  CNBuffer, CNBuffSize, cdict);
             ZSTD_freeCDict(cdict);
             if (ZSTD_isError(cSize)) goto _output_error;
@@ -546,7 +732,7 @@ static int basicUnitTests(U32 seed, double compressibility)
                     goto _output_error;
                 }
                 cSize = ZSTD_compress_usingCDict(cctx,
-                                compressedBuffer, ZSTD_compressBound(CNBuffSize),
+                                compressedBuffer, compressedBufferSize,
                                 CNBuffer, CNBuffSize, cdict);
                 if (ZSTD_isError(cSize)) {
                     DISPLAY("ZSTD_compress_usingCDict failed ");
@@ -560,7 +746,7 @@ static int basicUnitTests(U32 seed, double compressibility)
         {   ZSTD_frameParameters const fParams = { 0 /* frameSize */, 1 /* checksum */, 1 /* noDictID*/ };
             ZSTD_compressionParameters const cParams = ZSTD_getCParams(1, CNBuffSize, dictSize);
             ZSTD_CDict* const cdict = ZSTD_createCDict_advanced(dictBuffer, dictSize, 1 /*byRef*/, ZSTD_dm_auto, cParams, ZSTD_defaultCMem);
-            cSize = ZSTD_compress_usingCDict_advanced(cctx, compressedBuffer, ZSTD_compressBound(CNBuffSize),
+            cSize = ZSTD_compress_usingCDict_advanced(cctx, compressedBuffer, compressedBufferSize,
                                                  CNBuffer, CNBuffSize, cdict, fParams);
             ZSTD_freeCDict(cdict);
             if (ZSTD_isError(cSize)) goto _output_error;
@@ -584,7 +770,7 @@ static int basicUnitTests(U32 seed, double compressibility)
         DISPLAYLEVEL(4, "test%3i : ZSTD_compress_advanced, no dictID : ", testNb++);
         {   ZSTD_parameters p = ZSTD_getParams(3, CNBuffSize, dictSize);
             p.fParams.noDictIDFlag = 1;
-            cSize = ZSTD_compress_advanced(cctx, compressedBuffer, ZSTD_compressBound(CNBuffSize),
+            cSize = ZSTD_compress_advanced(cctx, compressedBuffer, compressedBufferSize,
                                            CNBuffer, CNBuffSize,
                                            dictBuffer, dictSize, p);
             if (ZSTD_isError(cSize)) goto _output_error;
@@ -821,6 +1007,42 @@ static int basicUnitTests(U32 seed, double compressibility)
       if (r != _3BYTESTESTLENGTH) goto _output_error; }
     DISPLAYLEVEL(4, "OK \n");
 
+    DISPLAYLEVEL(4, "test%3i : incompressible data and ill suited dictionary : ", testNb++);
+    RDG_genBuffer(CNBuffer, CNBuffSize, 0.0, 0.1, seed);
+    {   /* Train a dictionary on low characters */
+        size_t dictSize = 16 KB;
+        void* const dictBuffer = malloc(dictSize);
+        size_t const totalSampleSize = 1 MB;
+        size_t const sampleUnitSize = 8 KB;
+        U32 const nbSamples = (U32)(totalSampleSize / sampleUnitSize);
+        size_t* const samplesSizes = (size_t*) malloc(nbSamples * sizeof(size_t));
+        if (!dictBuffer || !samplesSizes) goto _output_error;
+        { U32 u; for (u=0; u<nbSamples; u++) samplesSizes[u] = sampleUnitSize; }
+        dictSize = ZDICT_trainFromBuffer(dictBuffer, dictSize, CNBuffer, samplesSizes, nbSamples);
+        if (ZDICT_isError(dictSize)) goto _output_error;
+        /* Reverse the characters to make the dictionary ill suited */
+        {   U32 u;
+            for (u = 0; u < CNBuffSize; ++u) {
+              ((BYTE*)CNBuffer)[u] = 255 - ((BYTE*)CNBuffer)[u];
+            }
+        }
+        {   /* Compress the data */
+            size_t const inputSize = 500;
+            size_t const outputSize = ZSTD_compressBound(inputSize);
+            void* const outputBuffer = malloc(outputSize);
+            ZSTD_CCtx* const cctx = ZSTD_createCCtx();
+            if (!outputBuffer || !cctx) goto _output_error;
+            CHECK(ZSTD_compress_usingDict(cctx, outputBuffer, outputSize, CNBuffer, inputSize, dictBuffer, dictSize, 1));
+            free(outputBuffer);
+            ZSTD_freeCCtx(cctx);
+        }
+
+        free(dictBuffer);
+        free(samplesSizes);
+    }
+    DISPLAYLEVEL(4, "OK \n");
+
+
     /* findFrameCompressedSize on skippable frames */
     DISPLAYLEVEL(4, "test%3i : frame compressed size of skippable frame : ", testNb++);
     {   const char* frame = "\x50\x2a\x4d\x18\x05\x0\x0\0abcde";
@@ -892,6 +1114,7 @@ static size_t FUZ_randomLength(U32* seed, U32 maxLog)
         goto _output_error;                                   \
 }   }
 
+#undef CHECK_Z
 #define CHECK_Z(f) {                                          \
     size_t const err = f;                                     \
     if (ZSTD_isError(err)) {                                  \
@@ -1006,17 +1229,17 @@ static int fuzzerTests(U32 seed, U32 nbTests, unsigned startTest, U32 const maxD
                   CHECK(endCheck != endMark, "ZSTD_compressCCtx : dst buffer overflow"); }
         }   }
 
+        /* frame header decompression test */
+        {   ZSTD_frameHeader zfh;
+            CHECK_Z( ZSTD_getFrameHeader(&zfh, cBuffer, cSize) );
+            CHECK(zfh.frameContentSize != sampleSize, "Frame content size incorrect");
+        }
+
         /* Decompressed size test */
         {   unsigned long long const rSize = ZSTD_findDecompressedSize(cBuffer, cSize);
             CHECK(rSize != sampleSize, "decompressed size incorrect");
         }
 
-        /* frame header decompression test */
-        {   ZSTD_frameHeader dParams;
-            CHECK_Z( ZSTD_getFrameHeader(&dParams, cBuffer, cSize) );
-            CHECK(dParams.frameContentSize != sampleSize, "Frame content size incorrect");
-        }
-
         /* successful decompression test */
         {   size_t const margin = (FUZ_rand(&lseed) & 1) ? 0 : (FUZ_rand(&lseed) & 31) + 1;
             size_t const dSize = ZSTD_decompress(dstBuffer, sampleSize + margin, cBuffer, cSize);
@@ -1223,6 +1446,19 @@ static unsigned readU32FromChar(const char** stringPtr)
     return result;
 }
 
+/** longCommandWArg() :
+ *  check if *stringPtr is the same as longCommand.
+ *  If yes, @return 1 and advances *stringPtr to the position which immediately follows longCommand.
+ *  @return 0 and doesn't modify *stringPtr otherwise.
+ */
+static unsigned longCommandWArg(const char** stringPtr, const char* longCommand)
+{
+    size_t const comSize = strlen(longCommand);
+    int const result = !strncmp(*stringPtr, longCommand, comSize);
+    if (result) *stringPtr += comSize;
+    return result;
+}
+
 int main(int argc, const char** argv)
 {
     U32 seed = 0;
@@ -1235,6 +1471,7 @@ int main(int argc, const char** argv)
     U32 mainPause = 0;
     U32 maxDuration = 0;
     int bigTests = 1;
+    U32 memTestsOnly = 0;
     const char* const programName = argv[0];
 
     /* Check command line */
@@ -1245,6 +1482,9 @@ int main(int argc, const char** argv)
         /* Handle commands. Aggregated commands are allowed */
         if (argument[0]=='-') {
 
+            if (longCommandWArg(&argument, "--memtest=")) { memTestsOnly = readU32FromChar(&argument); continue; }
+
+            if (!strcmp(argument, "--memtest")) { memTestsOnly=1; continue; }
             if (!strcmp(argument, "--no-big-tests")) { bigTests=0; continue; }
 
             argument++;
@@ -1316,6 +1556,11 @@ int main(int argc, const char** argv)
     DISPLAY("Seed = %u\n", seed);
     if (proba!=FUZ_compressibility_default) DISPLAY("Compressibility : %u%%\n", proba);
 
+    if (memTestsOnly) {
+        g_displayLevel = MAX(3, g_displayLevel);
+        return FUZ_mallocTests(seed, ((double)proba) / 100, memTestsOnly);
+    }
+
     if (nbTests < testNb) nbTests = testNb;
 
     if (testNb==0)
diff --git contrib/zstd/tests/invalidDictionaries.c contrib/zstd/tests/invalidDictionaries.c
index fe8b23b5e19f..83fe439d4c43 100644
--- contrib/zstd/tests/invalidDictionaries.c
+++ contrib/zstd/tests/invalidDictionaries.c
@@ -1,3 +1,12 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ */
+
 #include <stddef.h>
 #include "zstd.h"
 
diff --git contrib/zstd/tests/legacy.c contrib/zstd/tests/legacy.c
index e84e31273734..962b2c9c3c9d 100644
--- contrib/zstd/tests/legacy.c
+++ contrib/zstd/tests/legacy.c
@@ -1,10 +1,10 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 /*
@@ -226,4 +226,3 @@ const char* const EXPECTED =
     "snowden is snowed in / he's now then in his snow den / when does the snow end?\n"
     "goodbye little dog / you dug some holes in your day / they'll be hard to fill.\n"
     "when life shuts a door, / just open it. it’s a door. / that is how doors work.\n";
-
diff --git contrib/zstd/tests/longmatch.c contrib/zstd/tests/longmatch.c
index 61b81b359a40..ef79337f56d5 100644
--- contrib/zstd/tests/longmatch.c
+++ contrib/zstd/tests/longmatch.c
@@ -1,3 +1,13 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ */
+
+
 #include <stdio.h>
 #include <stddef.h>
 #include <stdlib.h>
diff --git contrib/zstd/tests/namespaceTest.c contrib/zstd/tests/namespaceTest.c
index dd63186d119f..6f6c74fd63d9 100644
--- contrib/zstd/tests/namespaceTest.c
+++ contrib/zstd/tests/namespaceTest.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/tests/paramgrill.c contrib/zstd/tests/paramgrill.c
index da06ccb52aab..ed13e1dacca8 100644
--- contrib/zstd/tests/paramgrill.c
+++ contrib/zstd/tests/paramgrill.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/tests/playTests.sh contrib/zstd/tests/playTests.sh
index 2e1cc6826f11..bc8584e7a9f0 100755
--- contrib/zstd/tests/playTests.sh
+++ contrib/zstd/tests/playTests.sh
@@ -7,17 +7,17 @@ die() {
 
 roundTripTest() {
     if [ -n "$3" ]; then
-        local_c="$3"
-        local_p="$2"
+        cLevel="$3"
+        proba="$2"
     else
-        local_c="$2"
-        local_p=""
+        cLevel="$2"
+        proba=""
     fi
 
     rm -f tmp1 tmp2
-    $ECHO "roundTripTest: ./datagen $1 $local_p | $ZSTD -v$local_c | $ZSTD -d"
-    ./datagen $1 $local_p | $MD5SUM > tmp1
-    ./datagen $1 $local_p | $ZSTD --ultra -v$local_c | $ZSTD -d  | $MD5SUM > tmp2
+    $ECHO "roundTripTest: ./datagen $1 $proba | $ZSTD -v$cLevel | $ZSTD -d"
+    ./datagen $1 $proba | $MD5SUM > tmp1
+    ./datagen $1 $proba | $ZSTD --ultra -v$cLevel | $ZSTD -d  | $MD5SUM > tmp2
     $DIFF -q tmp1 tmp2
 }
 
@@ -383,6 +383,14 @@ $ZSTD -t --rm tmp1.zst
 test -f tmp1.zst   # check file is still present
 split -b16384 tmp1.zst tmpSplit.
 $ZSTD -t tmpSplit.* && die "bad file not detected !"
+./datagen | $ZSTD -c | $ZSTD -t
+
+
+
+$ECHO "\n**** golden files tests **** "
+
+$ZSTD -t -r files
+$ZSTD -c -r files | $ZSTD -t
 
 
 $ECHO "\n**** benchmark mode tests **** "
@@ -625,16 +633,15 @@ roundTripTest -g35000000 -P75 10
 roundTripTest -g35000000 -P75 11
 roundTripTest -g35000000 -P75 12
 
-roundTripTest -g18000000 -P80 13
-roundTripTest -g18000000 -P80 14
-roundTripTest -g18000000 -P80 15
-roundTripTest -g18000000 -P80 16
-roundTripTest -g18000000 -P80 17
-
-roundTripTest -g50000000 -P94 18
-roundTripTest -g50000000 -P94 19
+roundTripTest -g18000013 -P80 13
+roundTripTest -g18000014 -P80 14
+roundTripTest -g18000015 -P80 15
+roundTripTest -g18000016 -P80 16
+roundTripTest -g18000017 -P80 17
+roundTripTest -g18000018 -P94 18
+roundTripTest -g18000019 -P94 19
 
-roundTripTest -g99000000 -P99 20
+roundTripTest -g68000020 -P99 20
 roundTripTest -g6000000000 -P99 1
 
 fileRoundTripTest -g4193M -P99 1
@@ -644,7 +651,8 @@ then
     $ECHO "\n**** zstdmt long round-trip tests **** "
     roundTripTest -g99000000 -P99 "20 -T2"
     roundTripTest -g6000000000 -P99 "1 -T2"
-    fileRoundTripTest -g4193M -P98 " -T0"
+    roundTripTest -g1500000000 -P97 "1 -T999"
+    fileRoundTripTest -g4195M -P98 " -T0"
 else
     $ECHO "\n**** no multithreading, skipping zstdmt tests **** "
 fi
diff --git contrib/zstd/tests/pool.c contrib/zstd/tests/poolTests.c
similarity index 62%
rename from contrib/zstd/tests/pool.c
rename to contrib/zstd/tests/poolTests.c
index adc5947df629..f3d5c382ae57 100644
--- contrib/zstd/tests/pool.c
+++ contrib/zstd/tests/poolTests.c
@@ -1,5 +1,16 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ */
+
+
 #include "pool.h"
 #include "threading.h"
+#include "util.h"
 #include <stddef.h>
 #include <stdio.h>
 
@@ -50,21 +61,45 @@ int testOrder(size_t numThreads, size_t queueSize) {
   return 0;
 }
 
+void waitFn(void *opaque) {
+  (void)opaque;
+  UTIL_sleepMilli(1);
+}
+
+/* Tests for deadlock */
+int testWait(size_t numThreads, size_t queueSize) {
+  struct data data;
+  POOL_ctx *ctx = POOL_create(numThreads, queueSize);
+  ASSERT_TRUE(ctx);
+  {
+    size_t i;
+    for (i = 0; i < 16; ++i) {
+        POOL_add(ctx, &waitFn, &data);
+    }
+  }
+  POOL_free(ctx);
+  return 0;
+}
+
 int main(int argc, const char **argv) {
   size_t numThreads;
   for (numThreads = 1; numThreads <= 4; ++numThreads) {
     size_t queueSize;
-    for (queueSize = 1; queueSize <= 2; ++queueSize) {
+    for (queueSize = 0; queueSize <= 2; ++queueSize) {
       if (testOrder(numThreads, queueSize)) {
         printf("FAIL: testOrder\n");
         return 1;
       }
+      if (testWait(numThreads, queueSize)) {
+        printf("FAIL: testWait\n");
+        return 1;
+      }
     }
   }
   printf("PASS: testOrder\n");
   (void)argc;
   (void)argv;
-  return (POOL_create(0, 1) || POOL_create(1, 0)) ? printf("FAIL: testInvalid\n"), 1
-                                                  : printf("PASS: testInvalid\n"), 0;
+  return (POOL_create(0, 1)) ? printf("FAIL: testInvalid\n"), 1
+                             : printf("PASS: testInvalid\n"), 0;
   return 0;
 }
diff --git contrib/zstd/tests/roundTripCrash.c contrib/zstd/tests/roundTripCrash.c
index 77c6737eebdb..0b478f6cab3e 100644
--- contrib/zstd/tests/roundTripCrash.c
+++ contrib/zstd/tests/roundTripCrash.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 /*
diff --git contrib/zstd/tests/symbols.c contrib/zstd/tests/symbols.c
index 8920187f37f7..f08542dbf669 100644
--- contrib/zstd/tests/symbols.c
+++ contrib/zstd/tests/symbols.c
@@ -1,3 +1,13 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ */
+
+
 #include <stdio.h>
 #include "zstd_errors.h"
 #define ZSTD_STATIC_LINKING_ONLY
diff --git contrib/zstd/tests/zbufftest.c contrib/zstd/tests/zbufftest.c
index 601aa808d027..fe08fdab5bed 100644
--- contrib/zstd/tests/zbufftest.c
+++ contrib/zstd/tests/zbufftest.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/tests/zstreamtest.c contrib/zstd/tests/zstreamtest.c
index 9b2b8eaf81b7..dd044342ea80 100644
--- contrib/zstd/tests/zstreamtest.c
+++ contrib/zstd/tests/zstreamtest.c
@@ -1,10 +1,10 @@
-/**
+/*
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -95,19 +95,6 @@ unsigned int FUZ_rand(unsigned int* seedPtr)
     return rand32 >> 5;
 }
 
-static void* allocFunction(void* opaque, size_t size)
-{
-    void* address = malloc(size);
-    (void)opaque;
-    return address;
-}
-
-static void freeFunction(void* opaque, void* address)
-{
-    (void)opaque;
-    free(address);
-}
-
 
 /*======================================================
 *   Basic Unit tests
@@ -1390,13 +1377,12 @@ static int fuzzerTests_newAPI(U32 seed, U32 nbTests, unsigned startTest, double
         /* multi-segments compression test */
         XXH64_reset(&xxhState, 0);
         {   ZSTD_outBuffer outBuff = { cBuffer, cBufferSize, 0 } ;
-            U32 n;
-            for (n=0, cSize=0, totalTestSize=0 ; totalTestSize < maxTestSize ; n++) {
+            for (cSize=0, totalTestSize=0 ; (totalTestSize < maxTestSize) ; ) {
                 /* compress random chunks into randomly sized dst buffers */
                 size_t const randomSrcSize = FUZ_randomLength(&lseed, maxSampleLog);
                 size_t const srcSize = MIN(maxTestSize-totalTestSize, randomSrcSize);
                 size_t const srcStart = FUZ_rand(&lseed) % (srcBufferSize - srcSize);
-                size_t const randomDstSize = FUZ_randomLength(&lseed, maxSampleLog);
+                size_t const randomDstSize = FUZ_randomLength(&lseed, maxSampleLog+1);
                 size_t const dstBuffSize = MIN(cBufferSize - cSize, randomDstSize);
                 ZSTD_EndDirective const flush = (FUZ_rand(&lseed) & 15) ? ZSTD_e_continue : ZSTD_e_flush;
                 ZSTD_inBuffer inBuff = { srcBuffer+srcStart, srcSize, 0 };
@@ -1415,7 +1401,7 @@ static int fuzzerTests_newAPI(U32 seed, U32 nbTests, unsigned startTest, double
             {   size_t remainingToFlush = (size_t)(-1);
                 while (remainingToFlush) {
                     ZSTD_inBuffer inBuff = { NULL, 0, 0 };
-                    size_t const randomDstSize = FUZ_randomLength(&lseed, maxSampleLog);
+                    size_t const randomDstSize = FUZ_randomLength(&lseed, maxSampleLog+1);
                     size_t const adjustedDstSize = MIN(cBufferSize - cSize, randomDstSize);
                     outBuff.size = outBuff.pos + adjustedDstSize;
                     DISPLAYLEVEL(5, "End-flush into dst buffer of size %u \n", (U32)adjustedDstSize);
@@ -1543,7 +1529,6 @@ int main(int argc, const char** argv)
     int bigTests = (sizeof(size_t) == 8);
     e_api selected_api = simple_api;
     const char* const programName = argv[0];
-    ZSTD_customMem const customMem = { allocFunction, freeFunction, NULL };
     ZSTD_customMem const customNULL = ZSTD_defaultCMem;
 
     /* Check command line */
@@ -1657,10 +1642,7 @@ int main(int argc, const char** argv)
 
     if (testNb==0) {
         result = basicUnitTests(0, ((double)proba) / 100, customNULL);  /* constant seed for predictability */
-        if (!result) {
-            DISPLAYLEVEL(3, "Unit tests using customMem :\n")
-            result = basicUnitTests(0, ((double)proba) / 100, customMem);  /* use custom memory allocation functions */
-    }   }
+    }
 
     if (!result) {
         switch(selected_api)
diff --git contrib/zstd/zlibWrapper/examples/zwrapbench.c contrib/zstd/zlibWrapper/examples/zwrapbench.c
index 1fc2117f69a7..050c9db63218 100644
--- contrib/zstd/zlibWrapper/examples/zwrapbench.c
+++ contrib/zstd/zlibWrapper/examples/zwrapbench.c
@@ -1,10 +1,10 @@
-/**
- * Copyright (c) 2016-present, Yann Collet, Przemyslaw Skibinski, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/zlibWrapper/gzcompatibility.h contrib/zstd/zlibWrapper/gzcompatibility.h
index e2ec1addb732..ac9020acc15b 100644
--- contrib/zstd/zlibWrapper/gzcompatibility.h
+++ contrib/zstd/zlibWrapper/gzcompatibility.h
@@ -1,10 +1,10 @@
-/**
- * Copyright (c) 2016-present, Przemyslaw Skibinski, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
@@ -12,9 +12,9 @@
 #if ZLIB_VERNUM <= 0x1240
 ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
 ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
-ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); 
+ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
 ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
- 
+
 #if !defined(_WIN32) && defined(Z_LARGE64)
 #  define z_off64_t off64_t
 #else
@@ -38,7 +38,7 @@ struct gzFile_s {
 
 #if ZLIB_VERNUM <= 0x1270
 #if defined(_WIN32) && !defined(Z_SOLO)
-#    include <stddef.h>         /* for wchar_t */ 
+#    include <stddef.h>         /* for wchar_t */
 ZEXTERN gzFile         ZEXPORT gzopen_w OF((const wchar_t *path,
                                             const char *mode));
 #endif
diff --git contrib/zstd/zlibWrapper/gzlib.c contrib/zstd/zlibWrapper/gzlib.c
index aa94206a8811..8235cff4fda1 100644
--- contrib/zstd/zlibWrapper/gzlib.c
+++ contrib/zstd/zlibWrapper/gzlib.c
@@ -1,5 +1,5 @@
 /* gzlib.c contains minimal changes required to be compiled with zlibWrapper:
- * - gz_statep was converted to union to work with -Wstrict-aliasing=1      */ 
+ * - gz_statep was converted to union to work with -Wstrict-aliasing=1      */
 
 /* gzlib.c -- zlib functions common to reading and writing gzip files
  * Copyright (C) 2004-2017 Mark Adler
diff --git contrib/zstd/zlibWrapper/gzread.c contrib/zstd/zlibWrapper/gzread.c
index d37aaa1d4c25..88fc06c77f42 100644
--- contrib/zstd/zlibWrapper/gzread.c
+++ contrib/zstd/zlibWrapper/gzread.c
@@ -1,6 +1,6 @@
 /* gzread.c contains minimal changes required to be compiled with zlibWrapper:
- * - gz_statep was converted to union to work with -Wstrict-aliasing=1      */ 
- 
+ * - gz_statep was converted to union to work with -Wstrict-aliasing=1      */
+
  /* gzread.c -- zlib functions for reading gzip files
  * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
  * For conditions of distribution and use, see http://www.zlib.net/zlib_license.html
diff --git contrib/zstd/zlibWrapper/gzwrite.c contrib/zstd/zlibWrapper/gzwrite.c
index bcda4774aeeb..d1250b90084d 100644
--- contrib/zstd/zlibWrapper/gzwrite.c
+++ contrib/zstd/zlibWrapper/gzwrite.c
@@ -1,6 +1,6 @@
 /* gzwrite.c contains minimal changes required to be compiled with zlibWrapper:
- * - gz_statep was converted to union to work with -Wstrict-aliasing=1      */ 
- 
+ * - gz_statep was converted to union to work with -Wstrict-aliasing=1      */
+
  /* gzwrite.c -- zlib functions for writing gzip files
  * Copyright (C) 2004-2017 Mark Adler
  * For conditions of distribution and use, see http://www.zlib.net/zlib_license.html
diff --git contrib/zstd/zlibWrapper/zstd_zlibwrapper.c contrib/zstd/zlibWrapper/zstd_zlibwrapper.c
index ade3b88cd1f4..272369a2874c 100644
--- contrib/zstd/zlibWrapper/zstd_zlibwrapper.c
+++ contrib/zstd/zlibWrapper/zstd_zlibwrapper.c
@@ -1,10 +1,10 @@
-/**
- * Copyright (c) 2016-present, Przemyslaw Skibinski, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 
diff --git contrib/zstd/zlibWrapper/zstd_zlibwrapper.h contrib/zstd/zlibWrapper/zstd_zlibwrapper.h
index 0ebd87612eea..f8f36800928e 100644
--- contrib/zstd/zlibWrapper/zstd_zlibwrapper.h
+++ contrib/zstd/zlibWrapper/zstd_zlibwrapper.h
@@ -1,10 +1,10 @@
-/**
- * Copyright (c) 2016-present, Przemyslaw Skibinski, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
  * All rights reserved.
  *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
  */
 
 #ifndef ZSTD_ZLIBWRAPPER_H
@@ -32,7 +32,7 @@ const char * zstdVersion(void);
 /*** COMPRESSION ***/
 /* ZWRAP_useZSTDcompression() enables/disables zstd compression during runtime.
    By default zstd compression is disabled. To enable zstd compression please use one of the methods:
-   - compilation with the additional option -DZWRAP_USE_ZSTD=1 
+   - compilation with the additional option -DZWRAP_USE_ZSTD=1
    - using '#define ZWRAP_USE_ZSTD 1' in source code before '#include "zstd_zlibwrapper.h"'
    - calling ZWRAP_useZSTDcompression(1)
    All above-mentioned methods will enable zstd compression for all threads.
@@ -45,13 +45,13 @@ int ZWRAP_isUsingZSTDcompression(void);
 /* Changes a pledged source size for a given compression stream.
    It will change ZSTD compression parameters what may improve compression speed and/or ratio.
    The function should be called just after deflateInit() or deflateReset() and before deflate() or deflateSetDictionary().
-   It's only helpful when data is compressed in blocks. 
-   There will be no change in case of deflateInit() or deflateReset() immediately followed by deflate(strm, Z_FINISH) 
+   It's only helpful when data is compressed in blocks.
+   There will be no change in case of deflateInit() or deflateReset() immediately followed by deflate(strm, Z_FINISH)
    as this case is automatically detected.  */
 int ZWRAP_setPledgedSrcSize(z_streamp strm, unsigned long long pledgedSrcSize);
 
 /* Similar to deflateReset but preserves dictionary set using deflateSetDictionary.
-   It should improve compression speed because there will be less calls to deflateSetDictionary 
+   It should improve compression speed because there will be less calls to deflateSetDictionary
    When using zlib compression this method redirects to deflateReset. */
 int ZWRAP_deflateReset_keepDict(z_streamp strm);
 
diff --git etc/defaults/periodic.conf etc/defaults/periodic.conf
index 789921d27bba..801733301318 100644
--- etc/defaults/periodic.conf
+++ etc/defaults/periodic.conf
@@ -181,9 +181,6 @@ weekly_locate_enable="YES"				# Update locate weekly
 # 320.whatis
 weekly_whatis_enable="YES"				# Update whatis weekly
 
-# 330.catman
-weekly_catman_enable="NO"				# Preformat man pages
-
 # 340.noid
 weekly_noid_enable="NO"					# Find unowned files
 weekly_noid_dirs="/"					# Look here
diff --git etc/mtree/BSD.tests.dist etc/mtree/BSD.tests.dist
index 632e4d70e909..874cfc4bd477 100644
--- etc/mtree/BSD.tests.dist
+++ etc/mtree/BSD.tests.dist
@@ -8,6 +8,8 @@
     bin
         cat
         ..
+        chflags
+        ..
         chmod
         ..
         date
@@ -22,6 +24,8 @@
         ..
         ls
         ..
+        mkdir
+        ..
         mv
         ..
         pax
@@ -30,6 +34,10 @@
         ..
         pwait
         ..
+        rcp
+        ..
+        rmdir
+        ..
         sh
             builtins
             ..
diff --git etc/periodic/security/100.chksetuid etc/periodic/security/100.chksetuid
index da8d29d985ea..670ae9792021 100755
--- etc/periodic/security/100.chksetuid
+++ etc/periodic/security/100.chksetuid
@@ -45,7 +45,13 @@ if check_yesno_period security_status_chksetuid_enable
 then
 	echo ""
 	echo 'Checking setuid files and devices:'
-	MP=`mount -t ufs,zfs | awk '$0 !~ /no(suid|exec)/ { print $3 }'`
+	IFS=$'\n'	# Don't split mount points with spaces or tabs
+	MP=`mount -t ufs,zfs | awk '
+		$0 !~ /no(suid|exec)/ {
+			sub(/^.* on \//, "/");
+			sub(/ \(.*\)/, "");
+			print $0
+		}'`
 	find -sx $MP /dev/null \( ! -fstype local \) -prune -o -type f \
 	    \( -perm -u+x -or -perm -g+x -or -perm -o+x \) \
 	    \( -perm -u+s -or -perm -g+s \) -exec ls -liTd \{\} \+ |
diff --git etc/periodic/security/110.neggrpperm etc/periodic/security/110.neggrpperm
index bd94015951bd..55974eae6345 100755
--- etc/periodic/security/110.neggrpperm
+++ etc/periodic/security/110.neggrpperm
@@ -43,7 +43,13 @@ if check_yesno_period security_status_neggrpperm_enable
 then
 	echo ""
 	echo 'Checking negative group permissions:'
-	MP=`mount -t ufs,zfs | awk '$0 !~ /no(suid|exec)/ { print $3 }'`
+	IFS=$'\n'	# Don't split mount points with spaces or tabs
+	MP=`mount -t ufs,zfs | awk '
+		$0 !~ /no(suid|exec)/ {
+			sub(/^.* on \//, "/");
+			sub(/ \(.*\)/, "");
+			print $0
+		}'`
 	n=$(find -sx $MP /dev/null \( ! -fstype local \) -prune -o -type f \
 	    \( \( ! -perm +010 -and -perm +001 \) -or \
 	    \( ! -perm +020 -and -perm +002 \) -or \
diff --git etc/periodic/security/security.functions etc/periodic/security/security.functions
index c2c757a3789d..00a89075dbfd 100644
--- etc/periodic/security/security.functions
+++ etc/periodic/security/security.functions
@@ -48,6 +48,7 @@ rc=0
 #   LABEL is the base name of the ${LOG}/${label}.{today,yesterday} files.
 
 check_diff() {
+  unset IFS
   rc=0
   if [ "$1" = "new_only" ]; then
     shift
diff --git etc/periodic/weekly/330.catman etc/periodic/weekly/330.catman
deleted file mode 100755
index 1ba2f7e9a973..000000000000
--- etc/periodic/weekly/330.catman
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/sh -
-#
-# $FreeBSD$
-#
-
-# If there is a global system configuration file, suck it in.
-#
-if [ -r /etc/defaults/periodic.conf ]
-then
-    . /etc/defaults/periodic.conf
-    source_periodic_confs
-fi
-
-case "$weekly_catman_enable" in
-    [Yy][Ee][Ss])
-	if [ ! -d /usr/share/man/cat1 ]
-	then
-	    echo '$weekly_catman_enable is set but /usr/share/man/cat1' \
-		"doesn't exist"
-	    rc=2
-	else
-	    echo ""
-	    echo "Reformatting manual pages:"
-
-	    MANPATH=`/usr/bin/manpath -q`
-	    if [ $? = 0 ]
-	    then
-		if [ -z "${MANPATH}" ]
-		then
-		    echo "manpath failed to find any manpath directories"
-		    rc=3
-		else
-		    man_locales=`/usr/bin/manpath -qL`
-		    rc=0
-
-		    # Preformat original, non-localized manpages
-		    echo /usr/libexec/catman.local -r "$MANPATH" |
-			su -fm man || rc=3
-
-		    # Preformat localized manpages.
-		    if [ -n "$man_locales" ]
-		    then
-			for i in $man_locales
-			do
-			    echo /usr/libexec/catman.local -Lr \
-				"$MANPATH" | LC_ALL=$i su -fm man || rc=3
-			done
-		    fi
-		fi
-	    else
-		rc=3
-	    fi
-	fi;;
-
-    *)  rc=0;;
-esac
-
-exit $rc
diff --git etc/periodic/weekly/Makefile etc/periodic/weekly/Makefile
index 865ef5340def..c32420a2be65 100644
--- etc/periodic/weekly/Makefile
+++ etc/periodic/weekly/Makefile
@@ -13,7 +13,7 @@ FILES+=	310.locate
 .endif
 
 .if ${MK_MAN_UTILS} != "no"
-FILES+=	320.whatis 330.catman
+FILES+=	320.whatis
 .endif
 
 .include <bsd.prog.mk>
diff --git gnu/usr.bin/binutils/libbfd/Makefile.amd64 gnu/usr.bin/binutils/libbfd/Makefile.amd64
index 31e6e3e8bbda..31ad0d9302be 100644
--- gnu/usr.bin/binutils/libbfd/Makefile.amd64
+++ gnu/usr.bin/binutils/libbfd/Makefile.amd64
@@ -9,7 +9,6 @@ DEFAULT_VECTOR=	bfd_elf64_x86_64_freebsd_vec
 
 SRCS+=	elf64-x86-64.c \
 	efi-app-x86_64.c \
-	efi-app-ia32.c \
 	elf64.c \
 	elf64-gen.c \
 	elf64-target.h \
diff --git kerberos5/libexec/kpasswdd/Makefile kerberos5/libexec/kpasswdd/Makefile
index 81836a81ecd9..ec36c24fc034 100644
--- kerberos5/libexec/kpasswdd/Makefile
+++ kerberos5/libexec/kpasswdd/Makefile
@@ -2,7 +2,7 @@
 
 PROG=	kpasswdd
 MAN=	kpasswdd.8
-CFLAGS+=-I${KRB5DIR}/lib/roken -I${.CURDIR:H:H}/lib/libhdb ${LDAPCFLAGS}
+CFLAGS+=-I${KRB5DIR}/lib/roken -I${KRB5DIR}/lib/libhdb ${LDAPCFLAGS}
 LIBADD=	kadm5srv hdb krb5 roken vers asn1
 DPADD=	${LDAPDPADD}
 LDADD=	${LDAPLDADD}
diff --git lib/clang/Makefile.inc lib/clang/Makefile.inc
new file mode 100644
index 000000000000..a0b4eea76882
--- /dev/null
+++ lib/clang/Makefile.inc
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.include <bsd.compiler.mk>
+
+.if ${COMPILER_TYPE} == "clang"
+DEBUG_FILES_CFLAGS= -gline-tables-only
+.else
+DEBUG_FILES_CFLAGS= -g1
+.endif
diff --git lib/clang/include/clang/Basic/Version.inc lib/clang/include/clang/Basic/Version.inc
index 7a9a4f7cc287..51e63ee37ccd 100644
--- lib/clang/include/clang/Basic/Version.inc
+++ lib/clang/include/clang/Basic/Version.inc
@@ -8,4 +8,4 @@
 
 #define	CLANG_VENDOR			"FreeBSD "
 
-#define	SVN_REVISION			"311219"
+#define	SVN_REVISION			"312559"
diff --git lib/clang/include/lld/Config/Version.inc lib/clang/include/lld/Config/Version.inc
index c506bdf0fc83..4dad50070d43 100644
--- lib/clang/include/lld/Config/Version.inc
+++ lib/clang/include/lld/Config/Version.inc
@@ -4,5 +4,5 @@
 #define LLD_VERSION_STRING "5.0.0"
 #define LLD_VERSION_MAJOR 5
 #define LLD_VERSION_MINOR 0
-#define LLD_REVISION_STRING "311219"
+#define LLD_REVISION_STRING "312559"
 #define LLD_REPOSITORY_STRING "FreeBSD"
diff --git lib/clang/include/llvm/Support/VCSRevision.h lib/clang/include/llvm/Support/VCSRevision.h
index 8060bd4818f8..a1682db4a641 100644
--- lib/clang/include/llvm/Support/VCSRevision.h
+++ lib/clang/include/llvm/Support/VCSRevision.h
@@ -1,2 +1,2 @@
 /* $FreeBSD$ */
-#define LLVM_REVISION "svn-r311219"
+#define LLVM_REVISION "svn-r312559"
diff --git lib/csu/mips/crti.S lib/csu/mips/crti.S
index 1553f9e13b91..7289f0a91f47 100644
--- lib/csu/mips/crti.S
+++ lib/csu/mips/crti.S
@@ -1,7 +1,9 @@
 #include <machine/asm.h>
 __FBSDID("$FreeBSD$");
 
+#ifndef __clang__
 	.gnu_attribute 4, 0
+#endif
 	.section .init,"ax",%progbits
 	.align 4
 	.globl	_init
diff --git lib/csu/mips/crtn.S lib/csu/mips/crtn.S
index 8cef67ffec08..ad81a7b5f3c6 100644
--- lib/csu/mips/crtn.S
+++ lib/csu/mips/crtn.S
@@ -1,7 +1,9 @@
 #include <machine/asm.h>
 __FBSDID("$FreeBSD$");
 
+#ifndef __clang__
 	.gnu_attribute 4, 0
+#endif
 	.section .init,"ax",%progbits
 	.align 4
 	.set noreorder
diff --git lib/libc/amd64/sys/Makefile.inc lib/libc/amd64/sys/Makefile.inc
index d208f0fcc111..d49bab7daf18 100644
--- lib/libc/amd64/sys/Makefile.inc
+++ lib/libc/amd64/sys/Makefile.inc
@@ -1,7 +1,11 @@
 #	from: Makefile.inc,v 1.1 1993/09/03 19:04:23 jtc Exp
 # $FreeBSD$
 
-SRCS+=	amd64_get_fsbase.c amd64_get_gsbase.c amd64_set_fsbase.c \
+SRCS+=	\
+	amd64_detect_rdfsgsbase.c \
+	amd64_get_fsbase.c \
+	amd64_get_gsbase.c \
+	amd64_set_fsbase.c \
 	amd64_set_gsbase.c
 
 MDASM=	vfork.S brk.S cerror.S exect.S getcontext.S \
diff --git lib/libc/amd64/sys/amd64_detect_rdfsgsbase.c lib/libc/amd64/sys/amd64_detect_rdfsgsbase.c
new file mode 100644
index 000000000000..7a7f94249c94
--- /dev/null
+++ lib/libc/amd64/sys/amd64_detect_rdfsgsbase.c
@@ -0,0 +1,63 @@
+/*-
+ * Copyright (c) 2017 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Konstantin Belousov <kib@FreeBSD.org>
+ * under sponsorship from the FreeBSD Foundation.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#define	IN_RTLD	1
+#include <sys/param.h>
+#undef IN_RTLD
+#include <machine/cpufunc.h>
+#include <machine/specialreg.h>
+#include "amd64_detect_rdfsgsbase.h"
+#include "libc_private.h"
+
+static int state = RDFSGS_UNKNOWN;
+
+int
+amd64_detect_rdfsgsbase(void)
+{
+	u_int p[4];
+
+	if (__predict_true(state != RDFSGS_UNKNOWN))
+		return (state);
+
+	if (__getosreldate() >= P_OSREL_WRFSBASE) {
+		do_cpuid(0x0, p);
+		if (p[0] >= 0x7) {
+			cpuid_count(0x7, 0x0, p);
+			if ((p[1] & CPUID_STDEXT_FSGSBASE) != 0) {
+				state = RDFSGS_SUPPORTED;
+				return (state);
+			}
+		}
+	}
+	state = RDFSGS_UNSUPPORTED;
+	return (state);
+}
diff --git lib/libc/amd64/sys/amd64_detect_rdfsgsbase.h lib/libc/amd64/sys/amd64_detect_rdfsgsbase.h
new file mode 100644
index 000000000000..ecd9e7d816fc
--- /dev/null
+++ lib/libc/amd64/sys/amd64_detect_rdfsgsbase.h
@@ -0,0 +1,43 @@
+/*-
+ * Copyright (c) 2017 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Konstantin Belousov <kib@FreeBSD.org>
+ * under sponsorship from the FreeBSD Foundation.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _AMD64_DETECT_RDFSGSBASE_H_
+#define _AMD64_DETECT_RDFSGSBASE_H_
+
+enum {
+	RDFSGS_UNKNOWN,
+	RDFSGS_SUPPORTED,
+	RDFSGS_UNSUPPORTED,
+};
+
+int amd64_detect_rdfsgsbase(void);
+
+#endif
diff --git lib/libc/amd64/sys/amd64_get_fsbase.c lib/libc/amd64/sys/amd64_get_fsbase.c
index ff5eb8f305ae..afe1e7a81521 100644
--- lib/libc/amd64/sys/amd64_get_fsbase.c
+++ lib/libc/amd64/sys/amd64_get_fsbase.c
@@ -1,7 +1,11 @@
 /*-
  * Copyright (c) 2003 Peter Wemm
+ * Copyright (c) 2017 The FreeBSD Foundation
  * All rights reserved.
  *
+ * Portions of this software were developed by Konstantin Belousov
+ * under sponsorship from the FreeBSD Foundation.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -27,11 +31,18 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include <sys/types.h>
+#include <machine/cpufunc.h>
 #include <machine/sysarch.h>
+#include "amd64_detect_rdfsgsbase.h"
 
 int
 amd64_get_fsbase(void **addr)
 {
 
+	if (amd64_detect_rdfsgsbase() == RDFSGS_SUPPORTED) {
+		*addr = (void *)rdfsbase();
+		return (0);
+	}
 	return (sysarch(AMD64_GET_FSBASE, addr));
 }
diff --git lib/libc/amd64/sys/amd64_get_gsbase.c lib/libc/amd64/sys/amd64_get_gsbase.c
index ddbf977f5dd1..2e4fa114b585 100644
--- lib/libc/amd64/sys/amd64_get_gsbase.c
+++ lib/libc/amd64/sys/amd64_get_gsbase.c
@@ -1,7 +1,11 @@
 /*-
  * Copyright (c) 2003 Peter Wemm
+ * Copyright (c) 2017 The FreeBSD Foundation
  * All rights reserved.
  *
+ * Portions of this software were developed by Konstantin Belousov
+ * under sponsorship from the FreeBSD Foundation.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -27,11 +31,18 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include <sys/types.h>
+#include <machine/cpufunc.h>
 #include <machine/sysarch.h>
+#include "amd64_detect_rdfsgsbase.h"
 
 int
 amd64_get_gsbase(void **addr)
 {
 
+	if  (amd64_detect_rdfsgsbase() == RDFSGS_SUPPORTED) {
+		*addr = (void *)rdgsbase();
+		return (0);
+	}
 	return (sysarch(AMD64_GET_GSBASE, addr));
 }
diff --git lib/libc/amd64/sys/amd64_set_fsbase.c lib/libc/amd64/sys/amd64_set_fsbase.c
index e0914859a1ae..be43b4f895b8 100644
--- lib/libc/amd64/sys/amd64_set_fsbase.c
+++ lib/libc/amd64/sys/amd64_set_fsbase.c
@@ -1,7 +1,11 @@
 /*-
  * Copyright (c) 2003 Peter Wemm
+ * Copyright (c) 2017 The FreeBSD Foundation
  * All rights reserved.
  *
+ * Portions of this software were developed by Konstantin Belousov
+ * under sponsorship from the FreeBSD Foundation.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -27,11 +31,18 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include <sys/types.h>
+#include <machine/cpufunc.h>
 #include <machine/sysarch.h>
+#include "amd64_detect_rdfsgsbase.h"
 
 int
 amd64_set_fsbase(void *addr)
 {
 
+	if (amd64_detect_rdfsgsbase() == RDFSGS_SUPPORTED) {
+		wrfsbase((uintptr_t)addr);
+		return (0);
+	}
 	return (sysarch(AMD64_SET_FSBASE, &addr));
 }
diff --git lib/libc/amd64/sys/amd64_set_gsbase.c lib/libc/amd64/sys/amd64_set_gsbase.c
index f8963288ac07..da9b830a9691 100644
--- lib/libc/amd64/sys/amd64_set_gsbase.c
+++ lib/libc/amd64/sys/amd64_set_gsbase.c
@@ -1,7 +1,11 @@
 /*-
  * Copyright (c) 2003 Peter Wemm
+ * Copyright (c) 2017 The FreeBSD Foundation
  * All rights reserved.
  *
+ * Portions of this software were developed by Konstantin Belousov
+ * under sponsorship from the FreeBSD Foundation.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -27,11 +31,18 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include <sys/types.h>
+#include <machine/cpufunc.h>
 #include <machine/sysarch.h>
+#include "amd64_detect_rdfsgsbase.h"
 
 int
 amd64_set_gsbase(void *addr)
 {
 
+	if (amd64_detect_rdfsgsbase() == RDFSGS_SUPPORTED) {
+		wrgsbase((uintptr_t)addr);
+		return (0);
+	}
 	return (sysarch(AMD64_SET_GSBASE, &addr));
 }
diff --git lib/libc/gen/fnmatch.c lib/libc/gen/fnmatch.c
index 5a988af06c2a..bc5799104fe8 100644
--- lib/libc/gen/fnmatch.c
+++ lib/libc/gen/fnmatch.c
@@ -249,7 +249,7 @@ rangematch(const char *pattern, wchar_t test, int flags, char **newp,
 	 * consistency with the regular expression syntax.
 	 * J.T. Conklin (conklin@ngai.kaleida.com)
 	 */
-	if ( (negate = (*pattern == '!' || *pattern == '^')) )
+	if ((negate = (*pattern == '!' || *pattern == '^')))
 		++pattern;
 
 	if (flags & FNM_CASEFOLD)
diff --git lib/libc/gen/getmntinfo.c lib/libc/gen/getmntinfo.c
index 0acc9bb219b8..bf2080719900 100644
--- lib/libc/gen/getmntinfo.c
+++ lib/libc/gen/getmntinfo.c
@@ -38,6 +38,9 @@ __FBSDID("$FreeBSD$");
 #include <sys/mount.h>
 #include <stdlib.h>
 
+#define	MAX_TRIES	3
+#define	SCALING_FACTOR	2
+
 /*
  * Return information about mounted filesystems.
  */
@@ -47,20 +50,21 @@ getmntinfo(struct statfs **mntbufp, int mode)
 	static struct statfs *mntbuf;
 	static int mntsize;
 	static long bufsize;
+	unsigned tries = 0;
 
 	if (mntsize <= 0 && (mntsize = getfsstat(0, 0, MNT_NOWAIT)) < 0)
 		return (0);
 	if (bufsize > 0 && (mntsize = getfsstat(mntbuf, bufsize, mode)) < 0)
 		return (0);
-	while (bufsize <= mntsize * sizeof(struct statfs)) {
-		if (mntbuf)
-			free(mntbuf);
-		bufsize = (mntsize + 1) * sizeof(struct statfs);
-		if ((mntbuf = malloc(bufsize)) == NULL)
+	while (tries++ < MAX_TRIES && bufsize <= mntsize * sizeof(*mntbuf)) {
+		bufsize = (mntsize * SCALING_FACTOR) * sizeof(*mntbuf);
+		if ((mntbuf = reallocf(mntbuf, bufsize)) == NULL)
 			return (0);
 		if ((mntsize = getfsstat(mntbuf, bufsize, mode)) < 0)
 			return (0);
 	}
 	*mntbufp = mntbuf;
+	if (mntsize > (bufsize / sizeof(*mntbuf)))
+		return (bufsize / sizeof(*mntbuf));
 	return (mntsize);
 }
diff --git lib/libc/locale/setlocale.c lib/libc/locale/setlocale.c
index 68656f3128ed..cb91d37997a5 100644
--- lib/libc/locale/setlocale.c
+++ lib/libc/locale/setlocale.c
@@ -42,48 +42,48 @@ __FBSDID("$FreeBSD$");
 #include <errno.h>
 #include <limits.h>
 #include <locale.h>
-#include <paths.h>	/* for _PATH_LOCALE */
+#include <paths.h>			/* for _PATH_LOCALE */
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 #include "collate.h"
-#include "lmonetary.h"	/* for __monetary_load_locale() */
-#include "lnumeric.h"	/* for __numeric_load_locale() */
-#include "lmessages.h"	/* for __messages_load_locale() */
+#include "lmonetary.h"			/* for __monetary_load_locale() */
+#include "lnumeric.h"			/* for __numeric_load_locale() */
+#include "lmessages.h"			/* for __messages_load_locale() */
 #include "setlocale.h"
 #include "ldpart.h"
-#include "../stdtime/timelocal.h" /* for __time_load_locale() */
+#include "../stdtime/timelocal.h"	/* for __time_load_locale() */
 
 /*
  * Category names for getenv()
  */
 static const char categories[_LC_LAST][12] = {
-    "LC_ALL",
-    "LC_COLLATE",
-    "LC_CTYPE",
-    "LC_MONETARY",
-    "LC_NUMERIC",
-    "LC_TIME",
-    "LC_MESSAGES",
+	"LC_ALL",
+	"LC_COLLATE",
+	"LC_CTYPE",
+	"LC_MONETARY",
+	"LC_NUMERIC",
+	"LC_TIME",
+	"LC_MESSAGES",
 };
 
 /*
  * Current locales for each category
  */
 static char current_categories[_LC_LAST][ENCODING_LEN + 1] = {
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
-    "C",
+	"C",
+	"C",
+	"C",
+	"C",
+	"C",
+	"C",
+	"C",
 };
 
 /*
  * Path to locale storage directory
  */
-char	*_PathLocale;
+char   *_PathLocale;
 
 /*
  * The locales we are going to try and load
@@ -93,21 +93,20 @@ static char saved_categories[_LC_LAST][ENCODING_LEN + 1];
 
 static char current_locale_string[_LC_LAST * (ENCODING_LEN + 1/*"/"*/ + 1)];
 
-static char	*currentlocale(void);
-static char	*loadlocale(int);
+static char *currentlocale(void);
+static char *loadlocale(int);
 const char *__get_locale_env(int);
 
 char *
 setlocale(int category, const char *locale)
 {
 	int i, j, len, saverr;
-        const char *env, *r;
+	const char *env, *r;
 
 	if (category < LC_ALL || category >= _LC_LAST) {
 		errno = EINVAL;
 		return (NULL);
 	}
-
 	if (locale == NULL)
 		return (category != LC_ALL ?
 		    current_categories[category] : currentlocale());
@@ -162,13 +161,13 @@ setlocale(int category, const char *locale)
 			}
 			do {
 				if (i == _LC_LAST)
-					break;  /* Too many slashes... */
+					break;	/* Too many slashes... */
 				if ((len = r - locale) > ENCODING_LEN) {
 					errno = EINVAL;
 					return (NULL);
 				}
 				(void)strlcpy(new_categories[i], locale,
-					      len + 1);
+				    len + 1);
 				i++;
 				while (*r == '/')
 					r++;
@@ -178,7 +177,7 @@ setlocale(int category, const char *locale)
 			} while (*locale);
 			while (i < _LC_LAST) {
 				(void)strcpy(new_categories[i],
-					     new_categories[i-1]);
+				    new_categories[i - 1]);
 				i++;
 			}
 		}
@@ -193,7 +192,7 @@ setlocale(int category, const char *locale)
 			saverr = errno;
 			for (j = 1; j < i; j++) {
 				(void)strcpy(new_categories[j],
-					     saved_categories[j]);
+				    saved_categories[j]);
 				if (loadlocale(j) == NULL) {
 					(void)strcpy(new_categories[j], "C");
 					(void)loadlocale(j);
@@ -218,7 +217,7 @@ currentlocale(void)
 			for (i = 2; i < _LC_LAST; ++i) {
 				(void)strcat(current_locale_string, "/");
 				(void)strcat(current_locale_string,
-					     current_categories[i]);
+				    current_categories[i]);
 			}
 			break;
 		}
@@ -230,16 +229,15 @@ loadlocale(int category)
 {
 	char *new = new_categories[category];
 	char *old = current_categories[category];
-	int (*func)(const char *);
+	int (*func) (const char *);
 	int saved_errno;
 
 	if ((new[0] == '.' &&
-	     (new[1] == '\0' || (new[1] == '.' && new[2] == '\0'))) ||
+	    (new[1] == '\0' || (new[1] == '.' && new[2] == '\0'))) ||
 	    strchr(new, '/') != NULL) {
 		errno = EINVAL;
 		return (NULL);
 	}
-
 	saved_errno = errno;
 	errno = __detect_path_locale();
 	if (errno != 0)
@@ -285,22 +283,22 @@ loadlocale(int category)
 const char *
 __get_locale_env(int category)
 {
-        const char *env;
+	const char *env;
 
-        /* 1. check LC_ALL. */
-        env = getenv(categories[0]);
+	/* 1. check LC_ALL. */
+	env = getenv(categories[0]);
 
-        /* 2. check LC_* */
+	/* 2. check LC_* */
 	if (env == NULL || !*env)
-                env = getenv(categories[category]);
+		env = getenv(categories[category]);
 
-        /* 3. check LANG */
+	/* 3. check LANG */
 	if (env == NULL || !*env)
-                env = getenv("LANG");
+		env = getenv("LANG");
 
-        /* 4. if none is set, fall to "C" */
+	/* 4. if none is set, fall to "C" */
 	if (env == NULL || !*env)
-                env = "C";
+		env = "C";
 
 	return (env);
 }
@@ -326,4 +324,3 @@ __detect_path_locale(void)
 	}
 	return (0);
 }
-
diff --git lib/libc/locale/setrunelocale.c lib/libc/locale/setrunelocale.c
index 842f06da6aea..e4aff1e3eeb2 100644
--- lib/libc/locale/setrunelocale.c
+++ lib/libc/locale/setrunelocale.c
@@ -38,7 +38,7 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-#define __RUNETYPE_INTERNAL 1
+#define	__RUNETYPE_INTERNAL 1
 
 #include <runetype.h>
 #include <errno.h>
@@ -72,7 +72,7 @@ destruct_ctype(void *v)
 {
 	struct xlocale_ctype *l = v;
 
-	if (&_DefaultRuneLocale != l->runes) 
+	if (&_DefaultRuneLocale != l->runes)
 		free(l->runes);
 	free(l);
 }
@@ -81,7 +81,7 @@ const _RuneLocale *
 __getCurrentRuneLocale(void)
 {
 
-	return XLOCALE_CTYPE(__get_locale())->runes;
+	return (XLOCALE_CTYPE(__get_locale())->runes);
 }
 
 static void
@@ -144,7 +144,7 @@ __setrunelocale(struct xlocale_ctype *l, const char *encoding)
 	else if (strcmp(rl->__encoding, "EUC-TW") == 0)
 		ret = _EUC_TW_init(l, rl);
 	else if (strcmp(rl->__encoding, "GB18030") == 0)
- 		ret = _GB18030_init(l, rl);
+		ret = _GB18030_init(l, rl);
 	else if (strcmp(rl->__encoding, "GB2312") == 0)
 		ret = _GB2312_init(l, rl);
 	else if (strcmp(rl->__encoding, "GBK") == 0)
@@ -204,10 +204,9 @@ __ctype_load(const char *locale, locale_t unused __unused)
 	struct xlocale_ctype *l = calloc(sizeof(struct xlocale_ctype), 1);
 
 	l->header.header.destructor = destruct_ctype;
-	if (__setrunelocale(l, locale))
-	{
+	if (__setrunelocale(l, locale)) {
 		free(l);
-		return NULL;
+		return (NULL);
 	}
-	return l;
+	return (l);
 }
diff --git lib/libc/locale/xlocale_private.h lib/libc/locale/xlocale_private.h
index 77b9ff4ee44f..e9917a5f5d62 100644
--- lib/libc/locale/xlocale_private.h
+++ lib/libc/locale/xlocale_private.h
@@ -40,6 +40,14 @@
 #include <machine/atomic.h>
 #include "setlocale.h"
 
+/**
+ * The XLC_ values are indexes into the components array.  They are defined in
+ * the same order as the LC_ values in locale.h, but without the LC_ALL zero
+ * value.  Translating from LC_X to XLC_X is done by subtracting one.
+ *
+ * Any reordering of this enum should ensure that these invariants are not
+ * violated.
+ */
 enum {
 	XLC_COLLATE = 0,
 	XLC_CTYPE,
@@ -50,6 +58,19 @@ enum {
 	XLC_LAST
 };
 
+_Static_assert(XLC_LAST - XLC_COLLATE == 6, "XLC values should be contiguous");
+_Static_assert(XLC_COLLATE == LC_COLLATE - 1,
+               "XLC_COLLATE doesn't match the LC_COLLATE value.");
+_Static_assert(XLC_CTYPE == LC_CTYPE - 1,
+               "XLC_CTYPE doesn't match the LC_CTYPE value.");
+_Static_assert(XLC_MONETARY == LC_MONETARY - 1,
+               "XLC_MONETARY doesn't match the LC_MONETARY value.");
+_Static_assert(XLC_NUMERIC == LC_NUMERIC - 1,
+               "XLC_NUMERIC doesn't match the LC_NUMERIC value.");
+_Static_assert(XLC_TIME == LC_TIME - 1,
+               "XLC_TIME doesn't match the LC_TIME value.");
+_Static_assert(XLC_MESSAGES == LC_MESSAGES - 1,
+               "XLC_MESSAGES doesn't match the LC_MESSAGES value.");
 
 /**
  * Header used for objects that are reference counted.  Objects may optionally
diff --git lib/libc/mips/Symbol.map lib/libc/mips/Symbol.map
index 9791359c93f6..fd15554fe9d9 100644
--- lib/libc/mips/Symbol.map
+++ lib/libc/mips/Symbol.map
@@ -43,10 +43,6 @@ FBSDprivate_1.0 {
 
 	_set_tp;
 	___longjmp;
-	__umodsi3;
-	__modsi3;
-	__udivsi3;
-	__divsi3;
 	__makecontext;
 	__longjmp;
 	signalcontext;
diff --git lib/libc/tests/gen/Makefile lib/libc/tests/gen/Makefile
index 6685552a139b..bd00cd2ddd6f 100644
--- lib/libc/tests/gen/Makefile
+++ lib/libc/tests/gen/Makefile
@@ -8,6 +8,7 @@ ATF_TESTS_C+=		fmtmsg_test
 ATF_TESTS_C+=		fnmatch2_test
 ATF_TESTS_C+=		fpclassify2_test
 ATF_TESTS_C+=		ftw_test
+ATF_TESTS_C+=		getmntinfo_test
 ATF_TESTS_C+=		glob2_test
 ATF_TESTS_C+=		popen_test
 ATF_TESTS_C+=		posix_spawn_test
diff --git lib/libc/tests/gen/getmntinfo_test.c lib/libc/tests/gen/getmntinfo_test.c
new file mode 100644
index 000000000000..183fa84ed0e6
--- /dev/null
+++ lib/libc/tests/gen/getmntinfo_test.c
@@ -0,0 +1,86 @@
+/*-
+ * Copyright (c) 2017 Conrad Meyer <cem@FreeBSD.org>
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+/*
+ * Limited test program for getmntinfo(3), a non-standard BSDism.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/mount.h>
+#include <sys/ucred.h>
+
+#include <errno.h>
+
+#include <atf-c.h>
+
+static void
+check_mntinfo(struct statfs *mntinfo, int n)
+{
+	int i;
+
+	for (i = 0; i < n; i++) {
+		ATF_REQUIRE_MSG(mntinfo[i].f_version == STATFS_VERSION, "%ju",
+		    (uintmax_t)mntinfo[i].f_version);
+		ATF_REQUIRE(mntinfo[i].f_namemax <= sizeof(mntinfo[0].f_mntonname));
+	}
+}
+
+ATF_TC_WITHOUT_HEAD(getmntinfo_test);
+ATF_TC_BODY(getmntinfo_test, tc)
+{
+	int nmnts;
+	struct statfs *mntinfo;
+
+	/* Test bogus mode */
+	nmnts = getmntinfo(&mntinfo, 199);
+	ATF_REQUIRE_MSG(nmnts == 0 && errno == EINVAL,
+	    "getmntinfo() succeeded; errno=%d", errno);
+
+	/* Valid modes */
+	nmnts = getmntinfo(&mntinfo, MNT_NOWAIT);
+	ATF_REQUIRE_MSG(nmnts != 0, "getmntinfo(MNT_NOWAIT) failed; errno=%d",
+	    errno);
+
+	check_mntinfo(mntinfo, nmnts);
+	memset(mntinfo, 0xdf, sizeof(*mntinfo) * nmnts);
+
+	nmnts = getmntinfo(&mntinfo, MNT_WAIT);
+	ATF_REQUIRE_MSG(nmnts != 0, "getmntinfo(MNT_WAIT) failed; errno=%d",
+	    errno);
+
+	check_mntinfo(mntinfo, nmnts);
+}
+
+ATF_TP_ADD_TCS(tp)
+{
+
+	ATF_TP_ADD_TC(tp, getmntinfo_test);
+
+	return (atf_no_error());
+}
diff --git lib/libcompiler_rt/Makefile.inc lib/libcompiler_rt/Makefile.inc
index 856da2fe7a4d..0d0d8e951451 100644
--- lib/libcompiler_rt/Makefile.inc
+++ lib/libcompiler_rt/Makefile.inc
@@ -32,6 +32,7 @@ SRCF+=		divdi3
 SRCF+=		divmoddi4
 SRCF+=		divmodsi4
 SRCF+=		divsc3
+SRCF+=		divsi3
 SRCF+=		divtc3
 SRCF+=		divti3
 SRCF+=		divxc3
@@ -56,18 +57,12 @@ SRCF+=		fixunsxfsi
 SRCF+=		fixunsxfti
 SRCF+=		fixxfdi
 SRCF+=		fixxfti
-SRCF+=		floatdidf
-SRCF+=		floatdisf
 SRCF+=		floatditf
-SRCF+=		floatdixf
 SRCF+=		floatsitf
 SRCF+=		floattidf
 SRCF+=		floattisf
 SRCF+=		floattixf
-SRCF+=		floatundidf
-SRCF+=		floatundisf
 SRCF+=		floatunditf
-SRCF+=		floatundixf
 SRCF+=		floatunsidf
 SRCF+=		floatunsisf
 SRCF+=		floatuntidf
@@ -78,6 +73,7 @@ SRCF+=		int_util
 SRCF+=		lshrdi3
 SRCF+=		lshrti3
 SRCF+=		moddi3
+SRCF+=		modsi3
 SRCF+=		modti3
 SRCF+=		muldc3
 SRCF+=		muldi3
@@ -120,10 +116,29 @@ SRCF+=		udivdi3
 SRCF+=		udivmoddi4
 SRCF+=		udivmodsi4
 SRCF+=		udivmodti4
+SRCF+=		udivsi3
 SRCF+=		udivti3
 SRCF+=		umoddi3
+SRCF+=		umodsi3
 SRCF+=		umodti3
 
+# Avoid using SSE2 instructions on i386, if unsupported.
+.if ${MACHINE_CPUARCH} == "i386" && empty(MACHINE_CPU:Msse2)
+SRCS+=		floatdidf.c
+SRCS+=		floatdisf.c
+SRCS+=		floatdixf.c
+SRCS+=		floatundidf.c
+SRCS+=		floatundisf.c
+SRCS+=		floatundixf.c
+.else
+SRCF+=		floatdidf
+SRCF+=		floatdisf
+SRCF+=		floatdixf
+SRCF+=		floatundidf
+SRCF+=		floatundisf
+SRCF+=		floatundixf
+.endif
+
 # __cpu_model support, only used on x86
 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
 SRCF+=		cpu_model
@@ -176,13 +191,6 @@ SRCF+=		comparedf2
 SRCF+=		comparesf2
 .endif
 
-.if ${MACHINE_CPUARCH} != "mips"
-SRCF+=		divsi3
-SRCF+=		modsi3
-SRCF+=		udivsi3
-SRCF+=		umodsi3
-.endif
-
 # FreeBSD-specific atomic intrinsics.
 .if ${MACHINE_CPUARCH} == "arm"
 .PATH:		${SRCTOP}/sys/arm/arm
diff --git lib/libedit/chartype.c lib/libedit/chartype.c
index 9cb54ac11a7b..44fb953f8581 100644
--- lib/libedit/chartype.c
+++ lib/libedit/chartype.c
@@ -223,6 +223,7 @@ ct_mbrtowc(wchar_t *wc, const char *s, size_t n)
 
 size_t
 ct_mbrtowc(wchar_t *wc, const char *s, size_t n)
+{
 	if (s == NULL)
 		return 0;
 	if (n == 0)
diff --git lib/libefivar/Makefile lib/libefivar/Makefile
index d7f7898e8446..b4368ce9e97c 100644
--- lib/libefivar/Makefile
+++ lib/libefivar/Makefile
@@ -64,4 +64,4 @@ WARNS?=		9
 
 .include <bsd.lib.mk>
 
-CFLAGS+= -Wno-cast-align -Wno-unused-parameter
+CFLAGS+= -fno-strict-aliasing -Wno-cast-align -Wno-unused-parameter
diff --git lib/libefivar/efivar-dp-format.c lib/libefivar/efivar-dp-format.c
index 491476378f6d..ca122ef63c36 100644
--- lib/libefivar/efivar-dp-format.c
+++ lib/libefivar/efivar-dp-format.c
@@ -36,6 +36,8 @@ __FBSDID("$FreeBSD$");
 #include <stdio.h>
 #include <string.h>
 
+#include "efichar.h"
+
 #include "efi-osdep.h"
 #include "efivar-dp.h"
 
@@ -1872,9 +1874,12 @@ DevPathToTextFilePath (
   )
 {
   FILEPATH_DEVICE_PATH  *Fp;
+  char *name = NULL;
 
   Fp = DevPath;
-  UefiDevicePathLibCatPrint (Str, "%s", Fp->PathName);
+  ucs2_to_utf8(Fp->PathName, &name);
+  UefiDevicePathLibCatPrint (Str, "File(%s)", name);
+  free(name);
 }
 
 /**
@@ -2425,3 +2430,9 @@ efidp_format_device_path(char *buf, size_t len, const_efidp dp, ssize_t max)
 
 	return retval;
 }
+
+size_t
+efidp_size(const_efidp dp)
+{
+	return GetDevicePathSize(__DECONST(EFI_DEVICE_PATH_PROTOCOL *, dp));
+}
diff --git lib/libefivar/efivar-dp-parse.c lib/libefivar/efivar-dp-parse.c
index c1ca9b72afca..1a280d70cfe3 100644
--- lib/libefivar/efivar-dp-parse.c
+++ lib/libefivar/efivar-dp-parse.c
@@ -38,6 +38,8 @@ __FBSDID("$FreeBSD$");
 #include <string.h>
 #include <wchar.h>
 
+#include "efichar.h"
+
 #include "efi-osdep.h"
 #include "efivar-dp.h"
 
@@ -3031,21 +3033,15 @@ DevPathFromTextFilePath (
 
   StrCpyS (File->PathName, StrLen (TextDeviceNode) + 1, TextDeviceNode);
 #else
+  size_t len = (sizeof (FILEPATH_DEVICE_PATH) + StrLen (TextDeviceNode) * 2);
+  efi_char * v;
   File = (FILEPATH_DEVICE_PATH *) CreateDeviceNode (
                                     MEDIA_DEVICE_PATH,
                                     MEDIA_FILEPATH_DP,
-                                    (UINT16) (sizeof (FILEPATH_DEVICE_PATH) + StrLen (TextDeviceNode) + 1)
+				    (UINT16)len
                                     );
-
-  /* 
-   * Note: We'd have to change the Tianocore header files to fix this
-   * to not need a cast.  Instead we just cast it here. The Interface
-   * to the user may have issues since this won't be a UCS-2
-   * string. Also note that in the original code, a NUL wasn't
-   * allocated for the end of the string, but we copy that below. This
-   * has been corrected.
-   */
-  StrCpyS ((char *)File->PathName, StrLen (TextDeviceNode) + 1, TextDeviceNode);
+  v = File->PathName;
+  utf8_to_ucs2(TextDeviceNode, &v, &len);
 #endif
 
   return (EFI_DEVICE_PATH_PROTOCOL *) File;
@@ -3560,6 +3556,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP
   {"Media",                   DevPathFromTextMedia                   },
   {"Fv",                      DevPathFromTextFv                      },
   {"FvFile",                  DevPathFromTextFvFile                  },
+  {"File",                    DevPathFromTextFilePath                },
   {"Offset",                  DevPathFromTextRelativeOffsetRange     },
   {"RamDisk",                 DevPathFromTextRamDisk                 },
   {"VirtualDisk",             DevPathFromTextVirtualDisk             },
diff --git lib/libefivar/efivar-dp.h lib/libefivar/efivar-dp.h
index 94dd1189cebe..f620a67550a0 100644
--- lib/libefivar/efivar-dp.h
+++ lib/libefivar/efivar-dp.h
@@ -62,4 +62,6 @@ ssize_t efidp_format_device_path(char *buf, size_t len, const_efidp dp,
     ssize_t max);
 ssize_t efidp_parse_device_path(char *path, efidp out, size_t max);
 
+size_t efidp_size(const_efidp);
+
 #endif /* _EFIVAR_DP_H_ */
diff --git lib/libefivar/efivar.c lib/libefivar/efivar.c
index bce4a1449ab2..4e02eb80caef 100644
--- lib/libefivar/efivar.c
+++ lib/libefivar/efivar.c
@@ -225,8 +225,13 @@ efi_get_next_variable_name(efi_guid_t **guid, char **name)
 	if (efi_open_dev() == -1)
 		return -1;
 
+	/*
+	 * Always allocate enough for an extra NUL on the end, but don't tell
+	 * the IOCTL about it so we can NUL terminate the name before converting
+	 * it to UTF8.
+	 */
 	if (buf == NULL)
-		buf = malloc(buflen);
+		buf = malloc(buflen + sizeof(efi_char));
 
 again:
 	efi_var_reset(&var);
@@ -244,21 +249,23 @@ again:
 	rv = ioctl(efi_fd, EFIIOC_VAR_NEXT, &var);
 	if (rv == 0 && var.name == NULL) {
 		/*
-		 * oops, too little space. Try again.
+		 * Variable name not long enough, so allocate more space for the
+		 * name and try again. As above, mind the NUL we add.
 		 */
-		void *new = realloc(buf, buflen);
-		buflen = var.namesize;
+		void *new = realloc(buf, var.namesize + sizeof(efi_char));
 		if (new == NULL) {
 			rv = -1;
 			errno = ENOMEM;
 			goto done;
 		}
+		buflen = var.namesize;
 		buf = new;
 		goto again;
 	}
 
 	if (rv == 0) {
-		*name = NULL; /* XXX */
+		free(*name);			/* Free last name, to avoid leaking */
+		*name = NULL;			/* Force ucs2_to_utf8 to malloc new space */
 		var.name[var.namesize / sizeof(efi_char)] = 0;	/* EFI doesn't NUL terminate */
 		rv = ucs2_to_utf8(var.name, name);
 		if (rv != 0)
@@ -269,9 +276,11 @@ again:
 errout:
 
 	/* XXX The linux interface expects name to be a static buffer -- fix or leak memory? */
+	/* XXX for the moment, we free just before we'd leak, but still leak last one */
 done:
-	if (errno == ENOENT) {
+	if (rv != 0 && errno == ENOENT) {
 		errno = 0;
+		free(*name);			/* Free last name, to avoid leaking */
 		return 0;
 	}
 
diff --git lib/libgeom/geom_util.c lib/libgeom/geom_util.c
index 54844c6e451c..73c305a4201b 100644
--- lib/libgeom/geom_util.c
+++ lib/libgeom/geom_util.c
@@ -56,8 +56,6 @@ g_open(const char *name, int dowrite)
 	path = g_device_path_open(name, &fd, dowrite);
 	if (path != NULL)
 		free(path);
-	if (fd == -1)
-		return (-1);
 	return (fd);
 }
 
@@ -281,58 +279,45 @@ g_device_path_open(const char *devpath, int *fdp, int dowrite)
 	/* Make sure that we can fail. */
 	if (fdp != NULL)
 		*fdp = -1;
+
 	/* Use the device node if we're able to open it. */
-	do {
-		fd = open(devpath, dowrite ? O_RDWR : O_RDONLY);
-		if (fd == -1)
-			break;
-		/*
-		 * Let try to get sectorsize, which will prove it is a GEOM
-		 * provider. 
-		 */
-		if (g_sectorsize(fd) == -1) {
-			close(fd);
-			errno = EFTYPE;
-			return (NULL);
-		}
+	fd = open(devpath, dowrite ? O_RDWR : O_RDONLY);
+	if (fd != -1) {
 		if ((path = strdup(devpath)) == NULL) {
 			close(fd);
 			return (NULL);
 		}
-		if (fdp != NULL)
-			*fdp = fd;
-		else
-			close(fd);
-		return (path);
-	} while (0);
+		goto fd_ok;
+	}
 
 	/* If we're not given an absolute path, assume /dev/ prefix. */
-	if (*devpath != '/') {
-		asprintf(&path, "%s%s", _PATH_DEV, devpath);
-		if (path == NULL)
-			return (NULL);
-		fd = open(path, dowrite ? O_RDWR : O_RDONLY);
-		if (fd == -1) {
-			free(path);
-			return (NULL);
-		}
-		/*
-		 * Let try to get sectorsize, which will prove it is a GEOM
-		 * provider.
-		 */
-		if (g_sectorsize(fd) == -1) {
-			free(path);
-			close(fd);
-			errno = EFTYPE;
-			return (NULL);
-		}
-		if (fdp != NULL)
-			*fdp = fd;
-		else
-			close(fd);
-		return (path);
+	if (*devpath == '/')
+		return (NULL);
+
+	asprintf(&path, "%s%s", _PATH_DEV, devpath);
+	if (path == NULL)
+		return (NULL);
+	fd = open(path, dowrite ? O_RDWR : O_RDONLY);
+	if (fd == -1) {
+		free(path);
+		return (NULL);
 	}
-	return (NULL);
+
+fd_ok:
+	/*
+	 * Let try to get sectorsize, which will prove it is a GEOM provider.
+	 */
+	if (g_sectorsize(fd) == -1) {
+		free(path);
+		close(fd);
+		errno = EFTYPE;
+		return (NULL);
+	}
+	if (fdp != NULL)
+		*fdp = fd;
+	else
+		close(fd);
+	return (path);
 }
 
 char *
diff --git lib/libpmc/libpmc.c lib/libpmc/libpmc.c
index 0e54b68dabbf..8193769bdedb 100644
--- lib/libpmc/libpmc.c
+++ lib/libpmc/libpmc.c
@@ -232,6 +232,11 @@ static const struct pmc_event_descr skylake_event_table[] =
 	__PMC_EV_ALIAS_SKYLAKE()
 };
 
+static const struct pmc_event_descr skylake_xeon_event_table[] =
+{
+	__PMC_EV_ALIAS_SKYLAKE_XEON()
+};
+
 static const struct pmc_event_descr ivybridge_event_table[] =
 {
 	__PMC_EV_ALIAS_IVYBRIDGE()
@@ -328,6 +333,7 @@ PMC_MDEP_TABLE(haswell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC,
 PMC_MDEP_TABLE(broadwell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
 PMC_MDEP_TABLE(broadwell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
 PMC_MDEP_TABLE(skylake, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
+PMC_MDEP_TABLE(skylake_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
 PMC_MDEP_TABLE(ivybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
 PMC_MDEP_TABLE(ivybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
 PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
@@ -383,6 +389,7 @@ PMC_CLASS_TABLE_DESC(haswell_xeon, IAP, haswell_xeon, iap);
 PMC_CLASS_TABLE_DESC(broadwell, IAP, broadwell, iap);
 PMC_CLASS_TABLE_DESC(broadwell_xeon, IAP, broadwell_xeon, iap);
 PMC_CLASS_TABLE_DESC(skylake, IAP, skylake, iap);
+PMC_CLASS_TABLE_DESC(skylake_xeon, IAP, skylake_xeon, iap);
 PMC_CLASS_TABLE_DESC(ivybridge, IAP, ivybridge, iap);
 PMC_CLASS_TABLE_DESC(ivybridge_xeon, IAP, ivybridge_xeon, iap);
 PMC_CLASS_TABLE_DESC(sandybridge, IAP, sandybridge, iap);
@@ -721,6 +728,8 @@ static struct pmc_event_alias core2_aliases_without_iaf[] = {
 #define broadwell_xeon_aliases_without_iaf	core2_aliases_without_iaf
 #define skylake_aliases			core2_aliases
 #define skylake_aliases_without_iaf	core2_aliases_without_iaf
+#define skylake_xeon_aliases		core2_aliases
+#define skylake_xeon_aliases_without_iaf	core2_aliases_without_iaf
 #define ivybridge_aliases		core2_aliases
 #define ivybridge_aliases_without_iaf	core2_aliases_without_iaf
 #define ivybridge_xeon_aliases		core2_aliases
@@ -1017,27 +1026,28 @@ iap_allocate_pmc(enum pmc_event pe, char *ctrspec,
 				return (-1);
 		} else if (cpu_info.pm_cputype == PMC_CPU_INTEL_SANDYBRIDGE ||
 		    cpu_info.pm_cputype == PMC_CPU_INTEL_SANDYBRIDGE_XEON ||
-			cpu_info.pm_cputype == PMC_CPU_INTEL_IVYBRIDGE ||
-			cpu_info.pm_cputype == PMC_CPU_INTEL_IVYBRIDGE_XEON ) {
+		    cpu_info.pm_cputype == PMC_CPU_INTEL_IVYBRIDGE ||
+		    cpu_info.pm_cputype == PMC_CPU_INTEL_IVYBRIDGE_XEON ) {
 			if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
 				n = pmc_parse_mask(iap_rsp_mask_sb_sbx_ib, p, &rsp);
 			} else
 				return (-1);
 		} else if (cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL ||
-			cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL_XEON) {
+		    cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL_XEON) {
 			if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
 				n = pmc_parse_mask(iap_rsp_mask_haswell, p, &rsp);
 			} else
 				return (-1);
 		} else if (cpu_info.pm_cputype == PMC_CPU_INTEL_BROADWELL ||
-			cpu_info.pm_cputype == PMC_CPU_INTEL_BROADWELL_XEON) {
+		    cpu_info.pm_cputype == PMC_CPU_INTEL_BROADWELL_XEON) {
 			/* Broadwell is defined to use same mask as haswell */
 			if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
 				n = pmc_parse_mask(iap_rsp_mask_haswell, p, &rsp);
 			} else
 				return (-1);
 
-		} else if (cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE) {
+		} else if (cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE ||
+		    cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE_XEON) {
 			if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
 				n = pmc_parse_mask(iap_rsp_mask_skylake, p, &rsp);
 			} else
@@ -3007,6 +3017,10 @@ pmc_event_names_of_class(enum pmc_class cl, const char ***eventnames,
 			ev = skylake_event_table;
 			count = PMC_EVENT_TABLE_SIZE(skylake);
 			break;
+		case PMC_CPU_INTEL_SKYLAKE_XEON:
+			ev = skylake_xeon_event_table;
+			count = PMC_EVENT_TABLE_SIZE(skylake_xeon);
+			break;
 		case PMC_CPU_INTEL_IVYBRIDGE:
 			ev = ivybridge_event_table;
 			count = PMC_EVENT_TABLE_SIZE(ivybridge);
@@ -3386,6 +3400,9 @@ pmc_init(void)
 	case PMC_CPU_INTEL_SKYLAKE:
 		PMC_MDEP_INIT_INTEL_V2(skylake);
 		break;
+	case PMC_CPU_INTEL_SKYLAKE_XEON:
+		PMC_MDEP_INIT_INTEL_V2(skylake_xeon);
+		break;
 	case PMC_CPU_INTEL_IVYBRIDGE:
 		PMC_MDEP_INIT_INTEL_V2(ivybridge);
 		break;
@@ -3595,7 +3612,13 @@ _pmc_name_of_event(enum pmc_event pe, enum pmc_cputype cpu)
 			break;
 		case PMC_CPU_INTEL_SKYLAKE:
 			ev = skylake_event_table;
-			evfence = skylake_event_table + PMC_EVENT_TABLE_SIZE(skylake);
+			evfence = skylake_event_table +
+			    PMC_EVENT_TABLE_SIZE(skylake);
+			break;
+		case PMC_CPU_INTEL_SKYLAKE_XEON:
+			ev = skylake_xeon_event_table;
+			evfence = skylake_xeon_event_table +
+			    PMC_EVENT_TABLE_SIZE(skylake_xeon);
 			break;
 		case PMC_CPU_INTEL_IVYBRIDGE:
 			ev = ivybridge_event_table;
diff --git lib/libproc/_libproc.h lib/libproc/_libproc.h
index 4797c56012d8..e29d56c60d63 100644
--- lib/libproc/_libproc.h
+++ lib/libproc/_libproc.h
@@ -72,7 +72,7 @@ struct proc_handle {
 	struct map_info *mappings;	/* File mappings for proc. */
 	size_t	maparrsz;		/* Map array size. */
 	size_t	nmappings;		/* Number of mappings. */
-	prmap_t	*exec_map;		/* Executable text mapping. */
+	size_t	exec_map;		/* Executable text mapping index. */
 	lwpstatus_t lwps;		/* Process status. */
 	struct procstat *procstat;	/* libprocstat handle. */
 	char	execpath[PATH_MAX];	/* Path to program executable. */
diff --git lib/libproc/proc_rtld.c lib/libproc/proc_rtld.c
index 7774a3e48423..9016be8392f6 100644
--- lib/libproc/proc_rtld.c
+++ lib/libproc/proc_rtld.c
@@ -62,7 +62,7 @@ map_iter(const rd_loadobj_t *lop, void *arg)
 	rdl2prmap(lop, &mapping->map);
 	if (strcmp(lop->rdl_path, phdl->execpath) == 0 &&
 	    (lop->rdl_prot & RD_RDL_X) != 0)
-		phdl->exec_map = &mapping->map;
+		phdl->exec_map = phdl->nmappings;
 
 	file = NULL;
 	if (lop->rdl_path[0] != '\0') {
diff --git lib/libproc/proc_sym.c lib/libproc/proc_sym.c
index da6c150e2a40..02c85f5908af 100644
--- lib/libproc/proc_sym.c
+++ lib/libproc/proc_sym.c
@@ -511,7 +511,8 @@ _proc_name2map(struct proc_handle *p, const char *name)
 			return (&p->mappings[i]);
 	}
 	if (strcmp(name, "a.out") == 0)
-		return (_proc_addr2map(p, p->exec_map->pr_vaddr));
+		return (_proc_addr2map(p,
+		    p->mappings[p->exec_map].map.pr_vaddr));
 	return (NULL);
 }
 
diff --git lib/libstand/nfs.c lib/libstand/nfs.c
index 322acb8d5275..7e2e1ababacc 100644
--- lib/libstand/nfs.c
+++ lib/libstand/nfs.c
@@ -382,7 +382,7 @@ nfs_readlink(struct nfs_iodesc *d, char *buf)
 	buf[repl->len] = 0;
 done:
 	free(pkt);
-	return (0);
+	return (rc);
 }
 #endif
 
diff --git lib/libstand/tftp.c lib/libstand/tftp.c
index 922142c2a807..9bef4643d25f 100644
--- lib/libstand/tftp.c
+++ lib/libstand/tftp.c
@@ -467,6 +467,7 @@ tftp_open(const char *path, struct open_file *f)
 
 	if (res) {
 		free(tftpfile->path);
+		free(tftpfile->pkt);
 		free(tftpfile);
 		return (res);
 	}
diff --git lib/libsysdecode/Makefile lib/libsysdecode/Makefile
index 073cb7ad804a..b87fd979a987 100644
--- lib/libsysdecode/Makefile
+++ lib/libsysdecode/Makefile
@@ -42,6 +42,7 @@ MLINKS+=sysdecode_enum.3 sysdecode_acltype.3 \
 	sysdecode_enum.3 sysdecode_minherit_flags.3 \
 	sysdecode_enum.3 sysdecode_msgctl_cmd.3 \
 	sysdecode_enum.3 sysdecode_nfssvc_flags.3 \
+	sysdecode_enum.3 sysdecode_pathconf_name.3 \
 	sysdecode_enum.3 sysdecode_prio_which.3 \
 	sysdecode_enum.3 sysdecode_procctl_cmd.3 \
 	sysdecode_enum.3 sysdecode_ptrace_request.3 \
@@ -63,11 +64,13 @@ MLINKS+=sysdecode_enum.3 sysdecode_acltype.3 \
 	sysdecode_enum.3 sysdecode_socketdomain.3 \
 	sysdecode_enum.3 sysdecode_sockettype.3 \
 	sysdecode_enum.3 sysdecode_sockopt_level.3 \
+	sysdecode_enum.3 sysdecode_sysarch_number.3 \
 	sysdecode_enum.3 sysdecode_umtx_op.3 \
 	sysdecode_enum.3 sysdecode_vmresult.3 \
 	sysdecode_enum.3 sysdecode_whence.3
 MLINKS+=sysdecode_fcntl_arg.3 sysdecode_fcntl_arg_p.3
 MLINKS+=sysdecode_mask.3 sysdecode_accessmode.3 \
+	sysdecode_mask.3 sysdecode_atflags.3 \
 	sysdecode_mask.3 sysdecode_capfcntlrights.3 \
 	sysdecode_mask.3 sysdecode_fcntl_fileflags.3 \
 	sysdecode_mask.3 sysdecode_fileflags.3 \
diff --git lib/libsysdecode/flags.c lib/libsysdecode/flags.c
index eb28820a0365..68ea0e678f58 100644
--- lib/libsysdecode/flags.c
+++ lib/libsysdecode/flags.c
@@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/stat.h>
 #include <sys/thr.h>
 #include <sys/umtx.h>
+#include <machine/sysarch.h>
 #include <netinet/in.h>
 #include <netinet/sctp.h>
 #include <netinet/tcp.h>
@@ -250,6 +251,13 @@ sysdecode_atfd(int fd)
 	return (NULL);
 }
 
+bool
+sysdecode_atflags(FILE *fp, int flag, int *rem)
+{
+
+	return (print_mask_int(fp, atflags, flag, rem));
+}
+
 static struct name_table semctlops[] = {
 	X(GETNCNT) X(GETPID) X(GETVAL) X(GETALL) X(GETZCNT) X(SETVAL) X(SETALL)
 	X(IPC_RMID) X(IPC_SET) X(IPC_STAT) XEND
@@ -947,6 +955,13 @@ sysdecode_mmap_flags(FILE *fp, int flags, int *rem)
 	return (printed);
 }
 
+const char *
+sysdecode_pathconf_name(int name)
+{
+
+	return (lookup_value(pathconfname, name));
+}
+
 const char *
 sysdecode_rtprio_function(int function)
 {
@@ -988,6 +1003,13 @@ sysdecode_sigcode(int sig, int si_code)
 	}
 }
 
+const char *
+sysdecode_sysarch_number(int number)
+{
+
+	return (lookup_value(sysarchnum, number));
+}
+
 bool
 sysdecode_umtx_cvwait_flags(FILE *fp, u_long flags, u_long *rem)
 {
diff --git lib/libsysdecode/mktables lib/libsysdecode/mktables
index 35bbfaef783d..c43bcab1e90f 100644
--- lib/libsysdecode/mktables
+++ lib/libsysdecode/mktables
@@ -91,6 +91,7 @@ _EOF_
 
 gen_table "accessmode"      "[A-Z]_OK[[:space:]]+0?x?[0-9A-Fa-f]+"         "sys/unistd.h"
 gen_table "acltype"         "ACL_TYPE_[A-Z4_]+[[:space:]]+0x[0-9]+"        "sys/acl.h"
+gen_table "atflags"         "AT_[A-Z_]+[[:space:]]+0x[0-9]+"               "sys/fcntl.h"
 gen_table "capfcntl"        "CAP_FCNTL_[A-Z]+[[:space:]]+\(1"              "sys/capsicum.h"
 gen_table "extattrns"       "EXTATTR_NAMESPACE_[A-Z]+[[:space:]]+0x[0-9]+" "sys/extattr.h"
 gen_table "fadvisebehav"    "POSIX_FADV_[A-Z]+[[:space:]]+[0-9]+"          "sys/fcntl.h"
@@ -109,6 +110,7 @@ gen_table "filemode"        "S_[A-Z]+[[:space:]]+[0-6]{7}"                 "sys/
 gen_table "mountflags"      "MNT_[A-Z]+[[:space:]]+0x[0-9]+"               "sys/mount.h"
 gen_table "msyncflags"      "MS_[A-Z]+[[:space:]]+0x[0-9]+"                "sys/mman.h"
 gen_table "nfssvcflags"     "NFSSVC_[A-Z0-9]+[[:space:]]+0x[0-9]+"         "nfs/nfssvc.h"
+gen_table "pathconfname"    "_PC_[A-Z4_]+[[:space:]]+[0-9]+"               "sys/unistd.h"
 gen_table "prio"            "PRIO_[A-Z]+[[:space:]]+[0-9]"                 "sys/resource.h"
 gen_table "procctlcmd"      "PROC_[A-Z_]+[[:space:]]+[0-9]"                 "sys/procctl.h"	"PROC_TRACE_CTL_"
 gen_table "ptraceop"        "PT_[[:alnum:]_]+[[:space:]]+[0-9]+"           "sys/ptrace.h"
@@ -153,6 +155,11 @@ gen_table "sigcode"         "SI_[A-Z]+[[:space:]]+0(x[0-9abcdef]+)?"       "sys/
 gen_table "umtxcvwaitflags" "CVWAIT_[A-Z_]+[[:space:]]+0x[0-9]+"           "sys/umtx.h"
 gen_table "umtxrwlockflags" "URWLOCK_PREFER_READER[[:space:]]+0x[0-9]+"    "sys/umtx.h"
 gen_table "caprights"       "CAP_[A-Z_]+[[:space:]]+CAPRIGHT\([0-9],[[:space:]]+0x[0-9]{16}ULL\)"   "sys/capsicum.h"
+if [ -e "${include_dir}/x86/sysarch.h" ]; then
+	gen_table "sysarchnum" "(AMD64|I386)_[A-Z86_]+[[:space:]]+[0-9]+"  "x86/sysarch.h"
+else
+	gen_table "sysarchnum" "[A-Z_]+[[:space:]]+[0-9]+"                 "machine/sysarch.h"
+fi
 
 # Generate a .depend file for our output file
 if [ -n "$output_file" ]; then
diff --git lib/libsysdecode/sysdecode.h lib/libsysdecode/sysdecode.h
index 7619fa51736a..ea6cd341349d 100644
--- lib/libsysdecode/sysdecode.h
+++ lib/libsysdecode/sysdecode.h
@@ -42,6 +42,7 @@ int	sysdecode_abi_to_freebsd_errno(enum sysdecode_abi _abi, int _error);
 bool	sysdecode_access_mode(FILE *_fp, int _mode, int *_rem);
 const char *sysdecode_acltype(int _type);
 const char *sysdecode_atfd(int _fd);
+bool	sysdecode_atflags(FILE *_fp, int _flags, int *_rem);
 bool	sysdecode_cap_fcntlrights(FILE *_fp, uint32_t _rights, uint32_t *_rem);
 void	sysdecode_cap_rights(FILE *_fp, cap_rights_t *_rightsp);
 const char *sysdecode_extattrnamespace(int _namespace);
@@ -73,6 +74,7 @@ bool	sysdecode_msg_flags(FILE *_fp, int _flags, int *_rem);
 bool	sysdecode_msync_flags(FILE *_fp, int _flags, int *_rem);
 const char *sysdecode_nfssvc_flags(int _flags);
 bool	sysdecode_open_flags(FILE *_fp, int _flags, int *_rem);
+const char *sysdecode_pathconf_name(int _name);
 bool	sysdecode_pipe2_flags(FILE *_fp, int _flags, int *_rem);
 const char *sysdecode_prio_which(int _which);
 const char *sysdecode_procctl_cmd(int _cmd);
@@ -105,6 +107,7 @@ bool	sysdecode_socket_type(FILE *_fp, int _type, int *_rem);
 const char *sysdecode_sockopt_level(int _level);
 const char *sysdecode_sockopt_name(int _level, int _optname);
 const char *sysdecode_syscallname(enum sysdecode_abi _abi, unsigned int _code);
+const char *sysdecode_sysarch_number(int _number);
 bool	sysdecode_thr_create_flags(FILE *_fp, int _flags, int *_rem);
 bool	sysdecode_umtx_cvwait_flags(FILE *_fp, u_long _flags, u_long *_rem);
 const char *sysdecode_umtx_op(int _op);
diff --git lib/libsysdecode/sysdecode_enum.3 lib/libsysdecode/sysdecode_enum.3
index a1aa3ba51a91..be646ed07e3a 100644
--- lib/libsysdecode/sysdecode_enum.3
+++ lib/libsysdecode/sysdecode_enum.3
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd June 3, 2017
+.Dd September 3, 2017
 .Dt sysdecode_enum 3
 .Os
 .Sh NAME
@@ -46,6 +46,7 @@
 .Nm sysdecode_minherit_flags ,
 .Nm sysdecode_msgctl_cmd ,
 .Nm sysdecode_nfssvc_flags ,
+.Nm sysdecode_pathconf_name ,
 .Nm sysdecode_prio_which ,
 .Nm sysdecode_procctl_cmd ,
 .Nm sysdecode_ptrace_request ,
@@ -67,6 +68,7 @@
 .Nm sysdecode_socketdomain ,
 .Nm sysdecode_sockettype ,
 .Nm sysdecode_sockopt_level ,
+.Nm sysdecode_sysarch_number ,
 .Nm sysdecode_umtx_op ,
 .Nm sysdecode_vmresult ,
 .Nm sysdecode_whence
@@ -110,6 +112,8 @@
 .Ft const char *
 .Fn sysdecode_nfssvc_flags "int flags"
 .Ft const char *
+.Fn sysdecode_pathconf_name "int name"
+.Ft const char *
 .Fn sysdecode_prio_which "int which"
 .Ft const char *
 .Fn sysdecode_procctl_cmd "int cmd"
@@ -152,6 +156,8 @@
 .Ft const char *
 .Fn sysdecode_sockopt_level "int level"
 .Ft const char *
+.Fn sysdecode_sysarch_number "int number"
+.Ft const char *
 .Fn sysdecode_umtx_op "int op"
 .Ft const char *
 .Fn sysdecode_vmresult "int result"
@@ -186,6 +192,7 @@ Most of these functions decode an argument passed to a system call:
 .It Fn sysdecode_minherit_inherit Ta Xr minherit 2 Ta Fa inherit
 .It Fn sysdecode_msgctl_cmd Ta Xr msgctl 2 Ta Fa cmd
 .It Fn sysdecode_nfssvc_flags Ta Xr nfssvc 2 Ta Fa flags
+.It Fn sysdecode_pathconf_name Ta Xr pathconf 2 Ta Fa name
 .It Fn sysdecode_prio_which Ta Xr getpriority 2 Ta Fa which
 .It Fn sysdecode_procctl_cmd Ta Xr procctl 2 Ta Fa cmd
 .It Fn sysdecode_ptrace_request Ta Xr ptrace 2 Ta Fa request
@@ -198,6 +205,7 @@ Most of these functions decode an argument passed to a system call:
 .It Fn sysdecode_shutdown_how Ta Xr shutdown 2 Ta Fa how
 .It Fn sysdecode_sigprocmask_how Ta Xr sigprocmask 2 Ta Fa how
 .It Fn sysdecode_sockopt_level Ta Xr getsockopt 2 Ta Fa level
+.It Fn sysdecode_sysarch_number Ta Xr sysarch 2 Ta Fa number
 .It Fn sysdecode_umtx_op Ta Xr _umtx_op 2 Ta Fa op
 .It Fn sysdecode_whence Ta Xr lseek 2 Ta Fa whence
 .El
diff --git lib/libsysdecode/sysdecode_mask.3 lib/libsysdecode/sysdecode_mask.3
index 5ab007b1568a..0708938db163 100644
--- lib/libsysdecode/sysdecode_mask.3
+++ lib/libsysdecode/sysdecode_mask.3
@@ -25,12 +25,13 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 2, 2017
+.Dd September 3, 2017
 .Dt sysdecode_mask 3
 .Os
 .Sh NAME
 .Nm sysdecode_mask ,
 .Nm sysdecode_accessmode ,
+.Nm sysdecode_atflags ,
 .Nm sysdecode_capfcntlrights ,
 .Nm sysdecode_fcntl_fileflags ,
 .Nm sysdecode_fileflags ,
@@ -66,6 +67,8 @@
 .Ft bool
 .Fn sysdecode_access_mode "FILE *fp" "int mode" "int *rem"
 .Ft bool
+.Fn sysdecode_atflags "FILE *fp" "int flags" "int *rem"
+.Ft bool
 .Fn sysdecode_cap_fcntlrights "FILE *fp" "uint32_t rights" "uint32_t *rem"
 .Ft bool
 .Fn sysdecode_fcntl_fileflags "FILE *fp" "int flags" "int *rem"
@@ -148,6 +151,7 @@ Most of these functions decode an argument passed to a system call:
 .Bl -column "Fn sysdecode_flock_operation" "Xr cap_fcntls_limit 2"
 .It Sy Function Ta Sy System Call Ta Sy Argument
 .It Fn sysdecode_access_mode Ta Xr access 2 Ta Fa mode
+.It Fn sysdecode_atflags Ta Xr chflagsat 2 , Xr fstatat 2 Ta Fa atflag , Fa flag
 .It Fn sysdecode_cap_fcntlrights Ta Xr cap_fcntls_limit 2 Ta Fa fcntlrights
 .It Fn sysdecode_fileflags Ta Xr chflags 2 Ta Fa flags
 .It Fn sysdecode_filemode Ta Xr chmod 2 , Xr open 2 Ta mode
diff --git lib/msun/src/catrig.c lib/msun/src/catrig.c
index ebfe3567c168..b304f213fa6d 100644
--- lib/msun/src/catrig.c
+++ lib/msun/src/catrig.c
@@ -469,8 +469,13 @@ clog_for_large_values(double complex z)
 
 	/*
 	 * Avoid overflow in hypot() when x and y are both very large.
-	 * Divide x and y by E, and then add 1 to the logarithm.  This depends
-	 * on E being larger than sqrt(2).
+	 * Divide x and y by E, and then add 1 to the logarithm.  This
+	 * depends on E being larger than sqrt(2), since the return value of
+	 * hypot cannot overflow if neither argument is greater in magnitude
+	 * than 1/sqrt(2) of the maximum value of the return type.  Likewise
+	 * this determines the necessary threshold for using this method
+	 * (however, actually use 1/2 instead as it is simpler).
+	 *
 	 * Dividing by E causes an insignificant loss of accuracy; however
 	 * this method is still poor since it is uneccessarily slow.
 	 */
diff --git lib/msun/src/catrigl.c lib/msun/src/catrigl.c
index 41357e864456..b79857082700 100644
--- lib/msun/src/catrigl.c
+++ lib/msun/src/catrigl.c
@@ -57,10 +57,15 @@ __FBSDID("$FreeBSD$");
 #undef signbit
 #define signbit(x)	(__builtin_signbitl(x))
 
+#if LDBL_MAX_EXP != 0x4000
+#error "Unsupported long double format"
+#endif
+
 static const long double
 A_crossover =		10,
 B_crossover =		0.6417,
 FOUR_SQRT_MIN =		0x1p-8189L,
+HALF_MAX =		0x1p16383L,
 QUARTER_SQRT_MAX =	0x1p8189L,
 RECIP_EPSILON =		1 / LDBL_EPSILON,
 SQRT_MIN =		0x1p-8191L;
@@ -307,7 +312,7 @@ clog_for_large_values(long double complex z)
 		ay = t;
 	}
 
-	if (ax > LDBL_MAX / 2)
+	if (ax > HALF_MAX)
 		return (CMPLXL(logl(hypotl(x / m_e, y / m_e)) + 1,
 		    atan2l(y, x)));
 
diff --git lib/msun/src/s_csqrtl.c lib/msun/src/s_csqrtl.c
index ea2ef27b5088..01cc4090e964 100644
--- lib/msun/src/s_csqrtl.c
+++ lib/msun/src/s_csqrtl.c
@@ -42,8 +42,16 @@ __FBSDID("$FreeBSD$");
  */
 #pragma	STDC CX_LIMITED_RANGE	ON
 
-/* We risk spurious overflow for components >= LDBL_MAX / (1 + sqrt(2)). */
-#define	THRESH	(LDBL_MAX / 2.414213562373095048801688724209698L)
+/*
+ * We risk spurious overflow for components >= LDBL_MAX / (1 + sqrt(2)).
+ * Rather than determining the fully precise value at which we might
+ * overflow, just use a threshold of approximately LDBL_MAX / 4.
+ */
+#if LDBL_MAX_EXP != 0x4000
+#error "Unsupported long double format"
+#else
+#define	THRESH	0x1p16382L
+#endif
 
 long double complex
 csqrtl(long double complex z)
diff --git lib/msun/tests/csqrt_test.c lib/msun/tests/csqrt_test.c
index 89de14b0da3e..9f596ed67596 100644
--- lib/msun/tests/csqrt_test.c
+++ lib/msun/tests/csqrt_test.c
@@ -214,28 +214,94 @@ test_nans(void)
 
 /*
  * Test whether csqrt(a + bi) works for inputs that are large enough to
- * cause overflow in hypot(a, b) + a. In this case we are using
- *	csqrt(115 + 252*I) == 14 + 9*I
- * scaled up to near MAX_EXP.
+ * cause overflow in hypot(a, b) + a.  Each of the tests is scaled up to
+ * near MAX_EXP.
  */
 static void
 test_overflow(int maxexp)
 {
 	long double a, b;
 	long double complex result;
+	int exp, i;
+
+	assert(maxexp > 0 && maxexp % 2 == 0);
+
+	for (i = 0; i < 4; i++) {
+		exp = maxexp - 2 * i;
+
+		/* csqrt(115 + 252*I) == 14 + 9*I */
+		a = ldexpl(115 * 0x1p-8, exp);
+		b = ldexpl(252 * 0x1p-8, exp);
+		result = t_csqrt(CMPLXL(a, b));
+		assert(creall(result) == ldexpl(14 * 0x1p-4, exp / 2));
+		assert(cimagl(result) == ldexpl(9 * 0x1p-4, exp / 2));
+
+		/* csqrt(-11 + 60*I) = 5 + 6*I */
+		a = ldexpl(-11 * 0x1p-6, exp);
+		b = ldexpl(60 * 0x1p-6, exp);
+		result = t_csqrt(CMPLXL(a, b));
+		assert(creall(result) == ldexpl(5 * 0x1p-3, exp / 2));
+		assert(cimagl(result) == ldexpl(6 * 0x1p-3, exp / 2));
+
+		/* csqrt(225 + 0*I) == 15 + 0*I */
+		a = ldexpl(225 * 0x1p-8, exp);
+		b = 0;
+		result = t_csqrt(CMPLXL(a, b));
+		assert(creall(result) == ldexpl(15 * 0x1p-4, exp / 2));
+		assert(cimagl(result) == 0);
+	}
+}
 
-	a = ldexpl(115 * 0x1p-8, maxexp);
-	b = ldexpl(252 * 0x1p-8, maxexp);
-	result = t_csqrt(CMPLXL(a, b));
-	assert(creall(result) == ldexpl(14 * 0x1p-4, maxexp / 2));
-	assert(cimagl(result) == ldexpl(9 * 0x1p-4, maxexp / 2));
+/*
+ * Test that precision is maintained for some large squares.  Set all or
+ * some bits in the lower mantdig/2 bits, square the number, and try to
+ * recover the sqrt.  Note:
+ * 	(x + xI)**2 = 2xxI
+ */
+static void
+test_precision(int maxexp, int mantdig)
+{
+	long double b, x;
+	long double complex result;
+	uint64_t mantbits, sq_mantbits;
+	int exp, i;
+
+	assert(maxexp > 0 && maxexp % 2 == 0);
+	assert(mantdig <= 64);
+	mantdig = rounddown(mantdig, 2);
+
+	for (exp = 0; exp <= maxexp; exp += 2) {
+		mantbits = ((uint64_t)1 << (mantdig / 2 )) - 1;
+		for (i = 0;
+		     i < 100 && mantbits > ((uint64_t)1 << (mantdig / 2 - 1));
+		     i++, mantbits--) {
+			sq_mantbits = mantbits * mantbits;
+			/*
+			 * sq_mantibts is a mantdig-bit number.  Divide by
+			 * 2**mantdig to normalize it to [0.5, 1), where,
+			 * note, the binary power will be -1.  Raise it by
+			 * 2**exp for the test.  exp is even.  Lower it by
+			 * one to reach a final binary power which is also
+			 * even.  The result should be exactly
+			 * representable, given that mantdig is less than or
+			 * equal to the available precision.
+			 */
+			b = ldexpl((long double)sq_mantbits,
+			    exp - 1 - mantdig);
+			x = ldexpl(mantbits, (exp - 2 - mantdig) / 2);
+			assert(b == x * x * 2);
+			result = t_csqrt(CMPLXL(0, b));
+			assert(creall(result) == x);
+			assert(cimagl(result) == x);
+		}
+	}
 }
 
 int
 main(void)
 {
 
-	printf("1..15\n");
+	printf("1..18\n");
 
 	/* Test csqrt() */
 	t_csqrt = _csqrt;
@@ -255,41 +321,56 @@ main(void)
 	test_overflow(DBL_MAX_EXP);
 	printf("ok 5 - csqrt\n");
 
+	test_precision(DBL_MAX_EXP, DBL_MANT_DIG);
+	printf("ok 6 - csqrt\n");
+
 	/* Now test csqrtf() */
 	t_csqrt = _csqrtf;
 
 	test_finite();
-	printf("ok 6 - csqrt\n");
+	printf("ok 7 - csqrt\n");
 
 	test_zeros();
-	printf("ok 7 - csqrt\n");
+	printf("ok 8 - csqrt\n");
 
 	test_infinities();
-	printf("ok 8 - csqrt\n");
+	printf("ok 9 - csqrt\n");
 
 	test_nans();
-	printf("ok 9 - csqrt\n");
+	printf("ok 10 - csqrt\n");
 
 	test_overflow(FLT_MAX_EXP);
-	printf("ok 10 - csqrt\n");
+	printf("ok 11 - csqrt\n");
+
+	test_precision(FLT_MAX_EXP, FLT_MANT_DIG);
+	printf("ok 12 - csqrt\n");
 
 	/* Now test csqrtl() */
 	t_csqrt = csqrtl;
 
 	test_finite();
-	printf("ok 11 - csqrt\n");
+	printf("ok 13 - csqrt\n");
 
 	test_zeros();
-	printf("ok 12 - csqrt\n");
+	printf("ok 14 - csqrt\n");
 
 	test_infinities();
-	printf("ok 13 - csqrt\n");
+	printf("ok 15 - csqrt\n");
 
 	test_nans();
-	printf("ok 14 - csqrt\n");
+	printf("ok 16 - csqrt\n");
 
 	test_overflow(LDBL_MAX_EXP);
-	printf("ok 15 - csqrt\n");
+	printf("ok 17 - csqrt\n");
+
+	test_precision(LDBL_MAX_EXP,
+#ifndef __i386__
+	    LDBL_MANT_DIG
+#else
+	    DBL_MANT_DIG
+#endif
+	    );
+	printf("ok 18 - csqrt\n");
 
 	return (0);
 }
diff --git lib/msun/tests/trig_test.c lib/msun/tests/trig_test.c
index 2289af45b4d4..d333a5276355 100644
--- lib/msun/tests/trig_test.c
+++ lib/msun/tests/trig_test.c
@@ -158,11 +158,6 @@ ATF_TC_BODY(reduction, tc)
 	};
 #endif
 
-#if defined(__clang__) && \
-	((__clang_major__ >= 5))
-	atf_tc_expect_fail("test fails with clang 5.0+ - bug 220989");
-#endif
-
 	unsigned i;
 
 	for (i = 0; i < nitems(f_pi_odd); i++) {
diff --git libexec/getty/gettytab.5 libexec/getty/gettytab.5
index 0011f3ac65ad..b1ddda2dd5c3 100644
--- libexec/getty/gettytab.5
+++ libexec/getty/gettytab.5
@@ -28,7 +28,7 @@
 .\"     from: @(#)gettytab.5	8.4 (Berkeley) 4/19/94
 .\" $FreeBSD$
 .\" "
-.Dd February 2, 2017
+.Dd August 23, 2017
 .Dt GETTYTAB 5
 .Os
 .Sh NAME
@@ -130,6 +130,8 @@ hangup line on last close
 .It "ig	bool	false	ignore garbage characters in login name"
 .It "im	str" Ta Dv NULL
 .Ta No "initial (banner) message"
+.It "iM	str" Ta Dv NULL
+.Ta No "execute named file to generate initial (banner) message"
 .It "in	str" Ta So Li ^C
 .Sc Ta No "interrupt character"
 .It "is	num	unused	input speed"
@@ -146,7 +148,7 @@ hangup line on last close
 .It "mb	bool	false	do flow control based on carrier"
 .It "nc	bool	false	terminal does not supply carrier (set clocal)"
 .It "nl	bool	false	terminal has (or might have) a newline character"
-.It "np	bool	false	terminal uses no parity (i.e. 8-bit characters)"
+.It "np	bool	false	terminal uses no parity (i.e., 8-bit characters)"
 .It "nx	str	default	next table (for auto speed selection)"
 .It "o0	num	unused	tty output flags to write messages"
 .It "o1	num	unused	tty output flags to read login name"
diff --git libexec/getty/gettytab.h libexec/getty/gettytab.h
index 67ad95fa1768..83b17f013740 100644
--- libexec/getty/gettytab.h
+++ libexec/getty/gettytab.h
@@ -88,6 +88,7 @@ struct gettyflags {
 #define AC	gettystrs[28].value
 #define AL	gettystrs[29].value
 #define DF	gettystrs[30].value
+#define IMP	gettystrs[31].value
 
 /*
  * Numeric definitions.
diff --git libexec/getty/init.c libexec/getty/init.c
index 6959e8d56235..a7077a332665 100644
--- libexec/getty/init.c
+++ libexec/getty/init.c
@@ -82,6 +82,7 @@ struct	gettystrs gettystrs[] = {
 	{ "ac" },			/* modem answer-chat */
 	{ "al" },			/* user to auto-login */
 	{ "df", datefmt},		/* format for strftime() */
+	{ "iM" },			/* initial message program */
 	{ 0 }
 };
 
diff --git libexec/getty/main.c libexec/getty/main.c
index 94ecb0779cec..9b2c964873bf 100644
--- libexec/getty/main.c
+++ libexec/getty/main.c
@@ -324,6 +324,8 @@ main(int argc, char *argv[])
 		}
 		first_time = 0;
 
+		if (IMP && *IMP && !(PL && PP))
+			system(IMP);
 		if (IM && *IM && !(PL && PP))
 			putf(IM);
 		if (setjmp(timeout)) {
diff --git libexec/makewhatis.local/Makefile libexec/makewhatis.local/Makefile
index 91872846202b..5038085cc4e3 100644
--- libexec/makewhatis.local/Makefile
+++ libexec/makewhatis.local/Makefile
@@ -3,7 +3,5 @@
 SCRIPTS=	makewhatis.local.sh
 MAN=		makewhatis.local.8
 SCRIPTSDIR=	${LIBEXECDIR}
-LINKS=		${SCRIPTSDIR}/makewhatis.local ${SCRIPTSDIR}/catman.local
-MLINKS=		makewhatis.local.8 catman.local.8
 
 .include <bsd.prog.mk>
diff --git libexec/makewhatis.local/makewhatis.local.8 libexec/makewhatis.local/makewhatis.local.8
index dfe252fdd961..b3ef432bda00 100644
--- libexec/makewhatis.local/makewhatis.local.8
+++ libexec/makewhatis.local/makewhatis.local.8
@@ -27,22 +27,19 @@
 .Dt MAKEWHATIS.LOCAL 8
 .Os
 .Sh NAME
-.Nm makewhatis.local , catman.local
-.Nd start makewhatis or catman for local file systems
+.Nm makewhatis.local
+.Nd start makewhatis for local file systems
 .Sh SYNOPSIS
 .Nm /usr/libexec/makewhatis.local
 .Op options
 .Ar directories ...
-.Nm /usr/libexec/catman.local
-.Op options
-.Ar directories ...
 .Sh DESCRIPTION
 The
 .Nm
 utility starts
 .Xr makewhatis 1
 only for file systems physically mounted on the system
-where the
+where
 .Nm
 is being executed.
 Running makewhatis
@@ -53,25 +50,14 @@ your NFS server -- all NFS clients start makewhatis at the same time!
 So use this wrapper for
 .Xr cron 8
 instead of calling makewhatis directly.
-The
-.Nm catman.local
-utility is using for same purposes as
-.Nm
-but for
-.Xr catman 1 .
 .Sh FILES
 .Bl -tag -width /etc/periodic/weekly/320.whatis.XXX -compact
 .It Pa /etc/periodic/weekly/320.whatis
 run
 .Nm
 every week
-.It Pa /etc/periodic/weekly/330.catman
-run
-.Nm catman.local
-every week
 .El
 .Sh SEE ALSO
-.Xr catman 1 ,
 .Xr find 1 ,
 .Xr makewhatis 1 ,
 .Xr cron 8 ,
diff --git libexec/makewhatis.local/makewhatis.local.sh libexec/makewhatis.local/makewhatis.local.sh
index 8be25300b75d..777c0c0153c4 100644
--- libexec/makewhatis.local/makewhatis.local.sh
+++ libexec/makewhatis.local/makewhatis.local.sh
@@ -31,8 +31,6 @@
 # /usr may kill your NFS server -- all clients start makewhatis at the same
 # time! So use this wrapper instead calling makewhatis directly.
 #
-# PS: this wrapper works also for catman(1)
-#
 # $FreeBSD$
 
 PATH=/bin:/usr/bin:$PATH; export PATH
diff --git libexec/rtld-elf/Makefile libexec/rtld-elf/Makefile
index 5c4ecb4fe956..e6841375d133 100644
--- libexec/rtld-elf/Makefile
+++ libexec/rtld-elf/Makefile
@@ -47,6 +47,9 @@ CFLAGS+=	-DPIC $(DEBUG)
 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
 CFLAGS+=	-fvisibility=hidden
 .endif
+.if ${MACHINE_CPUARCH} == "mips"
+CFLAGS.reloc.c+=-fno-jump-tables
+.endif
 LDFLAGS+=	-shared -Wl,-Bsymbolic -Wl,-z,defs
 LIBADD=		c_pic
 .if ${MK_TOOLCHAIN} == "no"
diff --git libexec/rtld-elf/arm/reloc.c libexec/rtld-elf/arm/reloc.c
index c1d50c0282d1..e5e1a8bce9ce 100644
--- libexec/rtld-elf/arm/reloc.c
+++ libexec/rtld-elf/arm/reloc.c
@@ -18,11 +18,18 @@ __FBSDID("$FreeBSD$");
 #include "rtld.h"
 #include "paths.h"
 
+#ifdef __ARM_FP
+/*
+ * On processors that have hard floating point supported, we also support
+ * running soft float binaries. If we're being built with hard float support,
+ * check the ELF headers to make sure that this is a hard float binary. If it is
+ * a soft float binary, force the dynamic linker to use the alternative soft
+ * float path.
+ */
 void
 arm_abi_variant_hook(Elf_Auxinfo **aux_info)
 {
 	Elf_Word ehdr;
-	struct stat sb;
 
 	/*
 	 * If we're running an old kernel that doesn't provide any data fail
@@ -39,17 +46,6 @@ arm_abi_variant_hook(Elf_Auxinfo **aux_info)
 	if ((ehdr & EF_ARM_VFP_FLOAT) != 0)
 		return;
 
-	/*
-	 * If there's no /usr/libsoft, then we don't have a system with both
-	 * hard and soft float. In that case, hope for the best and just
-	 * return. Such systems are required to have all soft or all hard
-	 * float ABI binaries and libraries. This is, at best, a transition
-	 * compatibility hack. Once we're fully hard-float, this should
-	 * be removed.
-	 */
-	if (stat("/usr/libsoft", &sb) != 0 || !S_ISDIR(sb.st_mode))
-		return;
-
 	/*
 	 * This is a soft float ABI binary. We need to use the soft float
 	 * settings.
@@ -60,6 +56,7 @@ arm_abi_variant_hook(Elf_Auxinfo **aux_info)
 	ld_standard_library_path = SOFT_STANDARD_LIBRARY_PATH;
 	ld_env_prefix = LD_SOFT_;
 }
+#endif
 
 void
 init_pltgot(Obj_Entry *obj)
diff --git libexec/rtld-elf/arm/rtld_machdep.h libexec/rtld-elf/arm/rtld_machdep.h
index de57929c1a4a..3c812a341349 100644
--- libexec/rtld-elf/arm/rtld_machdep.h
+++ libexec/rtld-elf/arm/rtld_machdep.h
@@ -31,6 +31,7 @@
 
 #include <sys/types.h>
 #include <machine/atomic.h>
+#include <machine/acle-compat.h>
 
 struct Struct_Obj_Entry;
 
@@ -74,7 +75,11 @@ extern void *__tls_get_addr(tls_index *ti);
 
 extern void arm_abi_variant_hook(Elf_Auxinfo **);
 
+#ifdef __ARM_FP
 #define md_abi_variant_hook(x)		arm_abi_variant_hook(x)
 #define RTLD_VARIANT_ENV_NAMES
+#else
+#define md_abi_variant_hook(x)
+#endif
 
 #endif
diff --git libexec/rtld-elf/mips/reloc.c libexec/rtld-elf/mips/reloc.c
index f816a89912ea..c50611d061d1 100644
--- libexec/rtld-elf/mips/reloc.c
+++ libexec/rtld-elf/mips/reloc.c
@@ -67,21 +67,98 @@ __FBSDID("$FreeBSD$");
 #define GOT1_RESERVED_FOR_RTLD(got)	((got)[1] & GOT1_MASK)
 #endif
 
+#ifdef __mips_n64
+/*
+ * ELF64 MIPS encodes the relocs uniquely.  The first 32-bits of info contain
+ * the symbol index.  The top 32-bits contain three relocation types encoded
+ * in big-endian integer with first relocation in LSB.  This means for little
+ * endian we have to byte swap that integer (r_type).
+ */
+#define	Elf_Sxword			Elf64_Sxword
+#define	ELF_R_NXTTYPE_64_P(r_type)	((((r_type) >> 8) & 0xff) == R_TYPE(64))
+#if BYTE_ORDER == LITTLE_ENDIAN
+#undef ELF_R_SYM
+#undef ELF_R_TYPE
+#define ELF_R_SYM(r_info)		((r_info) & 0xffffffff)
+#define ELF_R_TYPE(r_info)		bswap32((r_info) >> 32)
+#endif
+#else
+#define	ELF_R_NXTTYPE_64_P(r_type)	(0)
+#define	Elf_Sxword			Elf32_Sword
+#endif
+
+void _rtld_pltbind_start(void);
+
 void
 init_pltgot(Obj_Entry *obj)
 {
+
 	if (obj->pltgot != NULL) {
 		obj->pltgot[0] = (Elf_Addr) &_rtld_bind_start;
 		if (GOT1_RESERVED_FOR_RTLD(obj->pltgot))
 			obj->pltgot[1] = (Elf_Addr) obj | GOT1_MASK;
 	}
+	if (obj->mips_pltgot != NULL) {
+		obj->mips_pltgot[0] = (Elf_Addr) &_rtld_pltbind_start;
+		obj->mips_pltgot[1] = (Elf_Addr) obj;
+	}
 }
 
 int
 do_copy_relocations(Obj_Entry *dstobj)
 {
-	/* Do nothing */
-	return 0;
+	const Obj_Entry *srcobj, *defobj;
+	const Elf_Rel *rellim;
+	const Elf_Rel *rel;
+	const Elf_Sym *srcsym;
+	const Elf_Sym *dstsym;
+	const void *srcaddr;
+	const char *name;
+	void *dstaddr;
+	SymLook req;
+	size_t size;
+	int res;
+
+	/*
+	 * COPY relocs are invalid outside of the main program
+	 */
+	assert(dstobj->mainprog);
+
+	rellim = (const Elf_Rel *)((caddr_t)dstobj->rel + dstobj->relsize);
+	for (rel = dstobj->rel; rel < rellim; rel++) {
+		if (ELF_R_TYPE(rel->r_info) != R_MIPS_COPY)
+			continue;
+
+		dstaddr = (void *)(dstobj->relocbase + rel->r_offset);
+		dstsym = dstobj->symtab + ELF_R_SYM(rel->r_info);
+		name = dstobj->strtab + dstsym->st_name;
+		size = dstsym->st_size;
+
+		symlook_init(&req, name);
+		req.ventry = fetch_ventry(dstobj, ELF_R_SYM(rel->r_info));
+		req.flags = SYMLOOK_EARLY;
+
+		for (srcobj = globallist_next(dstobj); srcobj != NULL;
+		     srcobj = globallist_next(srcobj)) {
+			res = symlook_obj(&req, srcobj);
+			if (res == 0) {
+				srcsym = req.sym_out;
+				defobj = req.defobj_out;
+				break;
+			}
+		}
+		if (srcobj == NULL) {
+			_rtld_error(
+"Undefined symbol \"%s\" referenced from COPY relocation in %s",
+			    name, dstobj->path);
+			return (-1);
+		}
+
+		srcaddr = (const void *)(defobj->relocbase + srcsym->st_value);
+		memcpy(dstaddr, srcaddr, size);
+	}
+
+	return (0);
 }
 
 void _rtld_relocate_nonplt_self(Elf_Dyn *, Elf_Addr);
@@ -90,26 +167,6 @@ void _rtld_relocate_nonplt_self(Elf_Dyn *, Elf_Addr);
  * It is possible for the compiler to emit relocations for unaligned data.
  * We handle this situation with these inlines.
  */
-#ifdef __mips_n64
-/*
- * ELF64 MIPS encodes the relocs uniquely.  The first 32-bits of info contain
- * the symbol index.  The top 32-bits contain three relocation types encoded
- * in big-endian integer with first relocation in LSB.  This means for little
- * endian we have to byte swap that integer (r_type).
- */
-#define	Elf_Sxword			Elf64_Sxword
-#define	ELF_R_NXTTYPE_64_P(r_type)	((((r_type) >> 8) & 0xff) == R_TYPE(64))
-#if BYTE_ORDER == LITTLE_ENDIAN
-#undef ELF_R_SYM
-#undef ELF_R_TYPE
-#define ELF_R_SYM(r_info)		((r_info) & 0xffffffff)
-#define ELF_R_TYPE(r_info)		bswap32((r_info) >> 32)
-#endif
-#else
-#define	ELF_R_NXTTYPE_64_P(r_type)	(0)
-#define	Elf_Sxword			Elf32_Sword
-#endif
-
 static __inline Elf_Sxword
 load_ptr(void *where, size_t len)
 {
@@ -475,6 +532,20 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags,
 			break;
 		}
 
+		case R_TYPE(COPY):
+			/*
+			 * These are deferred until all other relocations have
+			 * been done. All we do here is make sure that the
+			 * COPY relocation is not in a shared library. They
+			 * are allowed only in executable files.
+			 */
+			if (!obj->mainprog) {
+				_rtld_error("%s: Unexpected R_MIPS_COPY "
+				    "relocation in shared library", obj->path);
+				return (-1);
+			}
+			break;
+			
 #ifdef __mips_n64
 		case R_TYPE(TLS_DTPMOD64):
 #else
@@ -581,23 +652,25 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags,
 int
 reloc_plt(Obj_Entry *obj)
 {
-#if 0
 	const Elf_Rel *rellim;
 	const Elf_Rel *rel;
-		
-	dbg("reloc_plt obj:%p pltrel:%p sz:%s", obj, obj->pltrel, (int)obj->pltrelsize);
-	dbg("gottable %p num syms:%s", obj->pltgot, obj->symtabno );
-	dbg("*****************************************************");
-	rellim = (const Elf_Rel *)((char *)obj->pltrel +
-	    obj->pltrelsize);
-	for (rel = obj->pltrel;  rel < rellim;  rel++) {
+
+	rellim = (const Elf_Rel *)((char *)obj->pltrel + obj->pltrelsize);
+	for (rel = obj->pltrel; rel < rellim; rel++) {
 		Elf_Addr *where;
-		where = (Elf_Addr *)(obj->relocbase + rel->r_offset);
-		*where += (Elf_Addr )obj->relocbase;
+
+		switch (ELF_R_TYPE(rel->r_info)) {
+		case R_MIPS_JUMP_SLOT:
+			where = (Elf_Addr *)(obj->relocbase + rel->r_offset);
+			*where += (Elf_Addr )obj->relocbase;
+			break;
+		default:
+			_rtld_error("Unknown relocation type %u in PLT",
+			    (unsigned int)ELF_R_TYPE(rel->r_info));
+			return (-1);
+		}
 	}
 
-#endif
-	/* PLT fixups were done above in the GOT relocation. */
 	return (0);
 }
 
@@ -607,9 +680,34 @@ reloc_plt(Obj_Entry *obj)
 int
 reloc_jmpslots(Obj_Entry *obj, int flags, RtldLockState *lockstate)
 {
-	/* Do nothing */
-	obj->jmpslots_done = true;
-	
+	const Obj_Entry *defobj;
+	const Elf_Rel *rellim;
+	const Elf_Rel *rel;
+	const Elf_Sym *def;
+
+	rellim = (const Elf_Rel *)((char *)obj->pltrel + obj->pltrelsize);
+	for (rel = obj->pltrel; rel < rellim; rel++) {
+		Elf_Addr *where;
+
+		switch (ELF_R_TYPE(rel->r_info)) {
+		case R_MIPS_JUMP_SLOT:
+			def = find_symdef(ELF_R_SYM(rel->r_info), obj,
+			    &defobj, SYMLOOK_IN_PLT | flags, NULL, lockstate);
+			if (def == NULL) {
+				dbg("reloc_jmpslots: sym not found");
+				return (-1);
+			}
+
+			where = (Elf_Addr *)(obj->relocbase + rel->r_offset);
+			*where = (Elf_Addr)(defobj->relocbase + def->st_value);
+			break;
+		default:
+			_rtld_error("Unknown relocation type %u in PLT",
+			    (unsigned int)ELF_R_TYPE(rel->r_info));
+			return (-1);
+		}
+	}
+
 	return (0);
 }
 
@@ -635,9 +733,11 @@ reloc_jmpslot(Elf_Addr *where, Elf_Addr target, const Obj_Entry *defobj,
     		const Obj_Entry *obj, const Elf_Rel *rel)
 {
 
-	/* Do nothing */
+	assert(ELF_R_TYPE(rel->r_info) == R_MIPS_JUMP_SLOT);
 
-	return target;
+	if (*where != target && !ld_bind_not)
+		*where = target;
+	return (target);
 }
 
 void
diff --git libexec/rtld-elf/mips/rtld_start.S libexec/rtld-elf/mips/rtld_start.S
index a35fced83889..64d51eed1b63 100644
--- libexec/rtld-elf/mips/rtld_start.S
+++ libexec/rtld-elf/mips/rtld_start.S
@@ -100,30 +100,46 @@ END(rtld_start)
 #define	XCALLFRAME_A4		(0*SZREG)
 #endif
 
+/*
+ * Trampoline for "old" PLT stubs which use .got entries.
+ */
 	.globl	_rtld_bind_start
 	.ent	_rtld_bind_start
 _rtld_bind_start:
 	.frame	sp, XCALLFRAME_SIZ, $15
+	.cfi_startproc simple
+	.cfi_register ra, $15
 	move	v1, gp			/* save old GP */
 #if defined(__mips_o32) || defined(__mips_o64)
 	PTR_ADDU t9, 8			/* modify T9 to point at .cpload */
 #endif
 	SETUP_GP
 	PTR_SUBU sp, XCALLFRAME_SIZ	/* save arguments and sp value in stack */
+	.cfi_def_cfa sp, XCALLFRAME_SIZ
 	SETUP_GP64(XCALLFRAME_GP, _rtld_bind_start)
 	SAVE_GP(XCALLFRAME_GP)
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_S	a4,  XCALLFRAME_A4(sp)
+	.cfi_rel_offset a4, XCALLFRAME_A4
 	REG_S	a5,  XCALLFRAME_A5(sp)
+	.cfi_rel_offset a5, XCALLFRAME_A5
 	REG_S	a6,  XCALLFRAME_A6(sp)
+	.cfi_rel_offset a6, XCALLFRAME_A6
 	REG_S	a7,  XCALLFRAME_A7(sp)
+	.cfi_rel_offset a7, XCALLFRAME_A7
 #endif
 	REG_S	a0,  XCALLFRAME_A0(sp)
+	.cfi_rel_offset a0, XCALLFRAME_A0
 	REG_S	a1,  XCALLFRAME_A1(sp)
+	.cfi_rel_offset a1, XCALLFRAME_A1
 	REG_S	a2,  XCALLFRAME_A2(sp)
+	.cfi_rel_offset a2, XCALLFRAME_A2
 	REG_S	a3,  XCALLFRAME_A3(sp)
+	.cfi_rel_offset a3, XCALLFRAME_A3
 	REG_S	$15,  XCALLFRAME_RA(sp)	/* ra is in t7/t3 */
+	.cfi_rel_offset ra, XCALLFRAME_RA
 	REG_S	s0,  XCALLFRAME_S0(sp)
+	.cfi_rel_offset s0, XCALLFRAME_S0
 	move	s0, sp
 
 	move	a0, v1			/* old GP */
@@ -147,20 +163,122 @@ _rtld_bind_start:
 
 	move	sp, s0
 	REG_L	ra, XCALLFRAME_RA(sp)
+	.cfi_restore ra
 	REG_L	s0, XCALLFRAME_S0(sp)
+	.cfi_restore s0
 	REG_L	a0, XCALLFRAME_A0(sp)
+	.cfi_restore a0
 	REG_L	a1, XCALLFRAME_A1(sp)
+	.cfi_restore a1
 	REG_L	a2, XCALLFRAME_A2(sp)
+	.cfi_restore a2
 	REG_L	a3, XCALLFRAME_A3(sp)
+	.cfi_restore a3
 #if defined(__mips_n32) || defined(__mips_n64)
 	REG_L	a4, XCALLFRAME_A4(sp)
+	.cfi_restore a4
 	REG_L	a5, XCALLFRAME_A5(sp)
+	.cfi_restore a5
 	REG_L	a6, XCALLFRAME_A6(sp)
+	.cfi_restore a6
 	REG_L	a7, XCALLFRAME_A7(sp)
+	.cfi_restore a7
 #endif
 	RESTORE_GP64
 	PTR_ADDU sp, XCALLFRAME_SIZ
 	move	t9, v0
 	jr	t9
 	nop
+	.cfi_endproc
 END(_rtld_bind_start)
+
+
+/*
+ * Trampoline for PLT stubs using .pltrel entries and .got.plt.
+ */
+	.globl	_rtld_pltbind_start
+	.ent	_rtld_pltbind_start
+_rtld_pltbind_start:
+	.frame	sp, XCALLFRAME_SIZ, $15
+	.cfi_startproc simple
+	.cfi_register ra, $15
+#if defined(__mips_o32)
+	move	v1, gp			/* save pointer to .got.plt */
+#else
+	move	v1, t2			/* save pointer to .got.plt */
+#endif
+#if defined(__mips_o32) || defined(__mips_o64)
+	PTR_ADDU t9, 8			/* modify T9 to point at .cpload */
+#endif
+	SETUP_GP
+	PTR_SUBU sp, XCALLFRAME_SIZ	/* save arguments and sp value in stack */
+	.cfi_def_cfa sp, XCALLFRAME_SIZ
+	SETUP_GP64(XCALLFRAME_GP, _rtld_pltbind_start)
+	SAVE_GP(XCALLFRAME_GP)
+#if defined(__mips_n32) || defined(__mips_n64)
+	REG_S	a4,  XCALLFRAME_A4(sp)
+	.cfi_rel_offset a4, XCALLFRAME_A4
+	REG_S	a5,  XCALLFRAME_A5(sp)
+	.cfi_rel_offset a5, XCALLFRAME_A5
+	REG_S	a6,  XCALLFRAME_A6(sp)
+	.cfi_rel_offset a6, XCALLFRAME_A6
+	REG_S	a7,  XCALLFRAME_A7(sp)
+	.cfi_rel_offset a7, XCALLFRAME_A7
+#endif
+	REG_S	a0,  XCALLFRAME_A0(sp)
+	.cfi_rel_offset a0, XCALLFRAME_A0
+	REG_S	a1,  XCALLFRAME_A1(sp)
+	.cfi_rel_offset a1, XCALLFRAME_A1
+	REG_S	a2,  XCALLFRAME_A2(sp)
+	.cfi_rel_offset a2, XCALLFRAME_A2
+	REG_S	a3,  XCALLFRAME_A3(sp)
+	.cfi_rel_offset a3, XCALLFRAME_A3
+	REG_S	$15,  XCALLFRAME_RA(sp)	/* ra is in t7/t3 */
+	.cfi_rel_offset ra, XCALLFRAME_RA
+	REG_S	s0,  XCALLFRAME_S0(sp)
+	.cfi_rel_offset s0, XCALLFRAME_S0
+	move	s0, sp
+
+	move	a0, v1			/* .got.plt */
+#if defined(__mips_n64)
+	ld	a0, 8(a0)		/* object = .got.plt[1] */
+	sll	a1, t8, 4		/* PLT entry index to .rel.plt offset */
+#else
+	lw	a0, 4(a0)		/* object = .got.plt[1] */
+	sll	a1, t8, 3		/* PLT entry index to .rel.plt offset */
+#endif
+
+	PTR_LA	t9, _C_LABEL(_rtld_bind)
+	jalr	t9
+	nop
+
+	move	sp, s0
+	REG_L	ra, XCALLFRAME_RA(sp)
+	.cfi_restore ra
+	REG_L	s0, XCALLFRAME_S0(sp)
+	.cfi_restore s0
+	REG_L	a0, XCALLFRAME_A0(sp)
+	.cfi_restore a0
+	REG_L	a1, XCALLFRAME_A1(sp)
+	.cfi_restore a1
+	REG_L	a2, XCALLFRAME_A2(sp)
+	.cfi_restore a2
+	REG_L	a3, XCALLFRAME_A3(sp)
+	.cfi_restore a3
+#if defined(__mips_n32) || defined(__mips_n64)
+	REG_L	a4, XCALLFRAME_A4(sp)
+	.cfi_restore a4
+	REG_L	a5, XCALLFRAME_A5(sp)
+	.cfi_restore a5
+	REG_L	a6, XCALLFRAME_A6(sp)
+	.cfi_restore a6
+	REG_L	a7, XCALLFRAME_A7(sp)
+	.cfi_restore a7
+#endif
+	RESTORE_GP64
+	PTR_ADDU sp, XCALLFRAME_SIZ
+	move	t9, v0
+	jr	t9
+	nop
+	.cfi_endproc
+END(_rtld_pltbind_start)
diff --git libexec/rtld-elf/rtld.1 libexec/rtld-elf/rtld.1
index fc68867879a8..0327aa1fa81f 100644
--- libexec/rtld-elf/rtld.1
+++ libexec/rtld-elf/rtld.1
@@ -351,7 +351,7 @@ execution environments.
 The verification only uses Unix
 .Dv DACs ,
 ignores
-.Dv ACLs
+.Dv ACLs ,
 and is naturally prone to race conditions.
 Environments which rely on such restrictions are weak
 and breakable on their own.
diff --git libexec/rtld-elf/rtld.c libexec/rtld-elf/rtld.c
index c3d2f3bd4c89..78e6299a9fdf 100644
--- libexec/rtld-elf/rtld.c
+++ libexec/rtld-elf/rtld.c
@@ -571,7 +571,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp)
 	close(fd);
 	if (obj_main == NULL)
 	    rtld_die();
-	max_stack_flags = obj->stack_flags;
+	max_stack_flags = obj_main->stack_flags;
     } else {				/* Main program already loaded. */
 	dbg("processing main program's program header");
 	assert(aux_info[AT_PHDR] != NULL);
@@ -1257,6 +1257,12 @@ digest_dynamic1(Obj_Entry *obj, int early, const Elf_Dyn **dyn_rpath,
 	case DT_MIPS_RLD_MAP:
 		*((Elf_Addr *)(dynp->d_un.d_ptr)) = (Elf_Addr) &r_debug;
 		break;
+
+	case DT_MIPS_PLTGOT:
+		obj->mips_pltgot = (Elf_Addr *) (obj->relocbase +
+		    dynp->d_un.d_ptr);
+		break;
+		
 #endif
 
 #ifdef __powerpc64__
diff --git libexec/rtld-elf/rtld.h libexec/rtld-elf/rtld.h
index 19fb8fc51a19..e6c2c3a70752 100644
--- libexec/rtld-elf/rtld.h
+++ libexec/rtld-elf/rtld.h
@@ -187,6 +187,7 @@ typedef struct Struct_Obj_Entry {
     Elf_Word local_gotno;	/* Number of local GOT entries */
     Elf_Word symtabno;		/* Number of dynamic symbols */
     Elf_Word gotsym;		/* First dynamic symbol in GOT */
+    Elf_Addr *mips_pltgot;	/* Second PLT GOT */
 #endif
 #ifdef __powerpc64__
     Elf_Addr glink;		/* GLINK PLT call stub section */
diff --git release/amd64/make-memstick.sh release/amd64/make-memstick.sh
index 52e17cc97b5f..3a151579abe7 100755
--- release/amd64/make-memstick.sh
+++ release/amd64/make-memstick.sh
@@ -10,6 +10,8 @@
 # $FreeBSD$
 #
 
+set -e
+
 PATH=/bin:/usr/bin:/sbin:/usr/sbin
 export PATH
 
@@ -30,11 +32,7 @@ fi
 
 echo '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab
 echo 'root_rw_mount="NO"' > ${1}/etc/rc.conf.local
-makefs -B little -o label=FreeBSD_Install ${2}.part ${1}
-if [ $? -ne 0 ]; then
-	echo "makefs failed"
-	exit 1
-fi
+makefs -B little -o label=FreeBSD_Install -o version=2 ${2}.part ${1}
 rm ${1}/etc/fstab
 rm ${1}/etc/rc.conf.local
 
diff --git release/amd64/mkisoimages.sh release/amd64/mkisoimages.sh
index 153f31f6c7b8..e7bfa83b0ceb 100644
--- release/amd64/mkisoimages.sh
+++ release/amd64/mkisoimages.sh
@@ -23,7 +23,7 @@
 # extra-bits-dir, if provided, contains additional files to be merged
 # into base-bits-dir as part of making the image.
 
-if [ "x$1" = "x-b" ]; then
+if [ "$1" = "-b" ]; then
 	# This is highly x86-centric and will be used directly below.
 	bootable="-o bootimage=i386;$4/boot/cdboot -o no-emul-boot"
 
diff --git release/arm/BEAGLEBONE.conf release/arm/BEAGLEBONE.conf
index f9bb1625d6ed..0ac54bf27c7a 100644
--- release/arm/BEAGLEBONE.conf
+++ release/arm/BEAGLEBONE.conf
@@ -9,7 +9,7 @@ EMBEDDED_TARGET_ARCH="armv6"
 EMBEDDEDPORTS="sysutils/u-boot-beaglebone"
 KERNEL="BEAGLEBONE"
 WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x88000000"
-IMAGE_SIZE="1G"
+IMAGE_SIZE="1536M"
 PART_SCHEME="MBR"
 FAT_SIZE="2m"
 FAT_TYPE="12"
diff --git release/arm/CUBIEBOARD.conf release/arm/CUBIEBOARD.conf
index 181eb6ac0063..da0fc461dae0 100644
--- release/arm/CUBIEBOARD.conf
+++ release/arm/CUBIEBOARD.conf
@@ -9,7 +9,7 @@ EMBEDDED_TARGET_ARCH="armv6"
 EMBEDDEDPORTS="sysutils/u-boot-cubieboard"
 KERNEL="ALLWINNER_UP"
 WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x42000000"
-IMAGE_SIZE="1G"
+IMAGE_SIZE="1536M"
 PART_SCHEME="MBR"
 FAT_SIZE="32m -b 1m"
 FAT_TYPE="16"
diff --git release/arm/GUMSTIX.conf release/arm/GUMSTIX.conf
index 38445b15ea73..b592e777bfa2 100644
--- release/arm/GUMSTIX.conf
+++ release/arm/GUMSTIX.conf
@@ -9,7 +9,7 @@ EMBEDDED_TARGET_ARCH="armv6"
 EMBEDDEDPORTS="sysutils/u-boot-duovero"
 KERNEL="GUMSTIX"
 WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x88000000"
-IMAGE_SIZE="1G"
+IMAGE_SIZE="1536M"
 PART_SCHEME="MBR"
 FAT_SIZE="2m"
 FAT_TYPE="12"
diff --git release/arm/PANDABOARD.conf release/arm/PANDABOARD.conf
index 0b238dfc1805..b16af564beb8 100644
--- release/arm/PANDABOARD.conf
+++ release/arm/PANDABOARD.conf
@@ -9,7 +9,7 @@ EMBEDDED_TARGET_ARCH="armv6"
 EMBEDDEDPORTS="sysutils/u-boot-pandaboard"
 KERNEL="PANDABOARD"
 WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x88000000"
-IMAGE_SIZE="1G"
+IMAGE_SIZE="1536M"
 PART_SCHEME="MBR"
 FAT_SIZE="2m"
 FAT_TYPE="12"
diff --git release/arm/RPI-B.conf release/arm/RPI-B.conf
index b97b7d09b76c..0aec2d0e7276 100644
--- release/arm/RPI-B.conf
+++ release/arm/RPI-B.conf
@@ -9,7 +9,7 @@ EMBEDDED_TARGET_ARCH="armv6"
 EMBEDDEDPORTS="sysutils/u-boot-rpi"
 KERNEL="RPI-B"
 WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x2000000"
-IMAGE_SIZE="1G"
+IMAGE_SIZE="1536M"
 PART_SCHEME="MBR"
 FAT_SIZE="17m"
 FAT_TYPE="16"
diff --git release/arm64/RPI3.conf release/arm64/RPI3.conf
index 48464159f7df..a8eaff9bf04d 100644
--- release/arm64/RPI3.conf
+++ release/arm64/RPI3.conf
@@ -10,7 +10,7 @@ EMBEDDED_TARGET_ARCH="aarch64"
 EMBEDDEDPORTS="sysutils/u-boot-rpi3 security/ca_root_nss"
 KERNEL="GENERIC"
 WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x42000000"
-IMAGE_SIZE="2G"
+IMAGE_SIZE="2560M"
 PART_SCHEME="MBR"
 FAT_SIZE="50m -b 1m"
 FAT_TYPE="16"
diff --git release/arm64/make-memstick.sh release/arm64/make-memstick.sh
index 760f362a0d18..8bcbb4677e04 100755
--- release/arm64/make-memstick.sh
+++ release/arm64/make-memstick.sh
@@ -32,7 +32,7 @@ fi
 
 echo '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab
 echo 'root_rw_mount="NO"' > ${1}/etc/rc.conf.local
-makefs -B little -o label=FreeBSD_Install ${2}.part ${1}
+makefs -B little -o label=FreeBSD_Install -o version=2 ${2}.part ${1}
 rm ${1}/etc/fstab
 rm ${1}/etc/rc.conf.local
 
diff --git release/i386/make-memstick.sh release/i386/make-memstick.sh
index f824382ec4b0..1d2ce552427a 100755
--- release/i386/make-memstick.sh
+++ release/i386/make-memstick.sh
@@ -10,6 +10,8 @@
 # $FreeBSD$
 #
 
+set -e
+
 PATH=/bin:/usr/bin:/sbin:/usr/sbin
 export PATH
 
@@ -30,11 +32,7 @@ fi
 
 echo '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab
 echo 'root_rw_mount="NO"' > ${1}/etc/rc.conf.local
-makefs -B little -o label=FreeBSD_Install ${2}.part ${1}
-if [ $? -ne 0 ]; then
-	echo "makefs failed"
-	exit 1
-fi
+makefs -B little -o label=FreeBSD_Install -o version=2 ${2}.part ${1}
 rm ${1}/etc/fstab
 rm ${1}/etc/rc.conf.local
 
diff --git release/i386/mkisoimages.sh release/i386/mkisoimages.sh
index c6c25173b37b..1eeb9ddc3a75 100644
--- release/i386/mkisoimages.sh
+++ release/i386/mkisoimages.sh
@@ -23,7 +23,7 @@
 # extra-bits-dir, if provided, contains additional files to be merged
 # into base-bits-dir as part of making the image.
 
-if [ "x$1" = "x-b" ]; then
+if [ "$1" = "-b" ]; then
 	# This is highly x86-centric and will be used directly below.
 	bootable="-o bootimage=i386;$4/boot/cdboot -o no-emul-boot"
 	shift
diff --git release/powerpc/make-memstick.sh release/powerpc/make-memstick.sh
index 3c1cfa400746..ae78783cc192 100755
--- release/powerpc/make-memstick.sh
+++ release/powerpc/make-memstick.sh
@@ -10,6 +10,8 @@
 # $FreeBSD$
 #
 
+set -e
+
 PATH=/bin:/usr/bin:/sbin:/usr/sbin
 export PATH
 
@@ -35,11 +37,7 @@ fi
 echo '/dev/da0s3 / ufs ro,noatime 1 1' > ${1}/etc/fstab
 echo 'root_rw_mount="NO"' > ${1}/etc/rc.conf.local
 rm -f ${tempfile}
-makefs -B big ${tempfile} ${1}
-if [ $? -ne 0 ]; then
-  echo "makefs failed"
-  exit 1
-fi
+makefs -B big -o version=2 ${tempfile} ${1}
 rm ${1}/etc/fstab
 rm ${1}/etc/rc.conf.local
 
diff --git release/powerpc/mkisoimages.sh release/powerpc/mkisoimages.sh
index e69f32dd634d..34b91ffbd1ad 100644
--- release/powerpc/mkisoimages.sh
+++ release/powerpc/mkisoimages.sh
@@ -23,7 +23,7 @@
 # extra-bits-dir, if provided, contains additional files to be merged
 # into base-bits-dir as part of making the image.
 
-if [ "x$1" = "x-b" ]; then
+if [ "$1" = "-b" ]; then
 	# Apple boot code
 	uudecode -o /tmp/hfs-boot-block.bz2 "`dirname "$0"`/hfs-boot.bz2.uu"
 	bzip2 -d /tmp/hfs-boot-block.bz2
diff --git release/sparc64/mkisoimages.sh release/sparc64/mkisoimages.sh
index 10c11b4b79af..3cc0d9ad0591 100644
--- release/sparc64/mkisoimages.sh
+++ release/sparc64/mkisoimages.sh
@@ -40,7 +40,7 @@ echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > "$BASEBITSDIR/etc/fstab"
 makefs -t cd9660 -o rockridge -o label="$LABEL" -o publisher="$publisher" "$NAME.tmp" "$@"
 rm -f "$BASEBITSDIR/etc/fstab"
 
-if [ "x$BOPT" != "x-b" ]; then
+if [ "$BOPT" != "-b" ]; then
 	mv "$NAME.tmp" "$NAME"
 	exit 0
 fi
diff --git release/tools/ec2.conf release/tools/ec2.conf
index 4a7a1e809ec7..924e7876001d 100644
--- release/tools/ec2.conf
+++ release/tools/ec2.conf
@@ -11,12 +11,12 @@ export VM_EXTRA_PACKAGES="ec2-scripts firstboot-freebsd-update firstboot-pkgs du
 # Set to a list of third-party software to enable in rc.conf(5).
 export VM_RC_LIST="ec2_configinit ec2_fetchkey ec2_ephemeralswap ec2_loghostkey firstboot_freebsd_update firstboot_pkgs"
 
-# Build with a 2 GB UFS partition; the growfs rc.d script will expand
+# Build with a 3 GB UFS partition; the growfs rc.d script will expand
 # the partition to fill the root disk after the EC2 instance is launched.
 # Note that if this is set to <N>G, we will end up with an <N+1> GB disk
 # image since VMSIZE is the size of the UFS partition, not the disk which
 # it resides within.
-export VMSIZE=2048M
+export VMSIZE=3072M
 
 # No swap space; the ec2_ephemeralswap rc.d script will allocate swap
 # space on EC2 ephemeral disks.  (If they exist -- the T2 low-cost instances
diff --git release/tools/gce.conf release/tools/gce.conf
index 082ac0dafd19..0d7dc841a6b9 100644
--- release/tools/gce.conf
+++ release/tools/gce.conf
@@ -5,12 +5,15 @@
 
 # Set to a list of packages to install.
 export VM_EXTRA_PACKAGES="firstboot-freebsd-update firstboot-pkgs \
-	google-cloud-sdk google-daemon panicmail sudo firstboot-growfs \
-	google-startup-scripts"
+	google-cloud-sdk panicmail sudo firstboot-growfs \
+	sysutils/py-google-compute-engine"
 
 # Set to a list of third-party software to enable in rc.conf(5).
 export VM_RC_LIST="google_accounts_manager ntpd sshd firstboot_growfs \
-	firstboot_pkgs firstboot_freebsd_update google_startup"
+	firstboot_pkgs firstboot_freebsd_update google_startup \
+	google_accounts_daemon google_clock_skew_daemon
+	google_instance_setup google_ip_forwarding_daemon
+	google_network_setup"
 
 vm_extra_install_base() {
 	echo 'search google.internal' > ${DESTDIR}/etc/resolv.conf
diff --git sbin/fsck_ffs/setup.c sbin/fsck_ffs/setup.c
index f97a3fed0f83..62e27053a2b8 100644
--- sbin/fsck_ffs/setup.c
+++ sbin/fsck_ffs/setup.c
@@ -36,6 +36,7 @@ static const char sccsid[] = "@(#)setup.c	8.10 (Berkeley) 5/9/95";
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
+#include <sys/disk.h>
 #include <sys/stat.h>
 #define FSTYPENAMES
 #include <sys/disklabel.h>
@@ -465,7 +466,9 @@ sblock_init(void)
 static int
 calcsb(char *dev, int devfd, struct fs *fs)
 {
-	struct fsrecovery fsr;
+	struct fsrecovery *fsr;
+	char *fsrbuf;
+	u_int secsize;
 
 	/*
 	 * We need fragments-per-group and the partition-size.
@@ -475,32 +478,62 @@ calcsb(char *dev, int devfd, struct fs *fs)
 	 * overwritten by a boot block, we fail. But usually they are
 	 * there and we can use them.
 	 */
-	if (blread(devfd, (char *)&fsr,
-	    (SBLOCK_UFS2 - sizeof(fsr)) / dev_bsize, sizeof(fsr)) ||
-	    fsr.fsr_magic != FS_UFS2_MAGIC)
+	if (ioctl(devfd, DIOCGSECTORSIZE, &secsize) == -1)
+		return (0);
+	fsrbuf = Malloc(secsize);
+	if (fsrbuf == NULL)
+		errx(EEXIT, "calcsb: cannot allocate recovery buffer");
+	if (blread(devfd, fsrbuf,
+	    (SBLOCK_UFS2 - secsize) / dev_bsize, secsize) != 0)
+		return (0);
+	fsr = (struct fsrecovery *)&fsrbuf[secsize - sizeof *fsr];
+	if (fsr->fsr_magic != FS_UFS2_MAGIC)
 		return (0);
 	memset(fs, 0, sizeof(struct fs));
-	fs->fs_fpg = fsr.fsr_fpg;
-	fs->fs_fsbtodb = fsr.fsr_fsbtodb;
-	fs->fs_sblkno = fsr.fsr_sblkno;
-	fs->fs_magic = fsr.fsr_magic;
-	fs->fs_ncg = fsr.fsr_ncg;
+	fs->fs_fpg = fsr->fsr_fpg;
+	fs->fs_fsbtodb = fsr->fsr_fsbtodb;
+	fs->fs_sblkno = fsr->fsr_sblkno;
+	fs->fs_magic = fsr->fsr_magic;
+	fs->fs_ncg = fsr->fsr_ncg;
+	free(fsrbuf);
 	return (1);
 }
 
 /*
  * Check to see if recovery information exists.
+ * Return 1 if it exists or cannot be created.
+ * Return 0 if it does not exist and can be created.
  */
 static int
 chkrecovery(int devfd)
 {
-	struct fsrecovery fsr;
+	struct fsrecovery *fsr;
+	char *fsrbuf;
+	u_int secsize;
 
-	if (blread(devfd, (char *)&fsr,
-	    (SBLOCK_UFS2 - sizeof(fsr)) / dev_bsize, sizeof(fsr)) ||
-	    fsr.fsr_magic != FS_UFS2_MAGIC)
-		return (0);
-	return (1);
+	/*
+	 * Could not determine if backup material exists, so do not
+	 * offer to create it.
+	 */
+	if (ioctl(devfd, DIOCGSECTORSIZE, &secsize) == -1 ||
+	    (fsrbuf = Malloc(secsize)) == NULL ||
+	    blread(devfd, fsrbuf, (SBLOCK_UFS2 - secsize) / dev_bsize,
+	      secsize) != 0)
+		return (1);
+	/*
+	 * Recovery material has already been created, so do not
+	 * need to create it again.
+	 */
+	fsr = (struct fsrecovery *)&fsrbuf[secsize - sizeof *fsr];
+	if (fsr->fsr_magic == FS_UFS2_MAGIC) {
+		free(fsrbuf);
+		return (1);
+	}
+	/*
+	 * Recovery material has not been created and can be if desired.
+	 */
+	free(fsrbuf);
+	return (0);
 }
 
 /*
@@ -511,17 +544,24 @@ chkrecovery(int devfd)
 static void
 saverecovery(int readfd, int writefd)
 {
-	struct fsrecovery fsr;
+	struct fsrecovery *fsr;
+	char *fsrbuf;
+	u_int secsize;
 
 	if (sblock.fs_magic != FS_UFS2_MAGIC ||
-	    blread(readfd, (char *)&fsr,
-	    (SBLOCK_UFS2 - sizeof(fsr)) / dev_bsize, sizeof(fsr)))
+	    ioctl(readfd, DIOCGSECTORSIZE, &secsize) == -1 ||
+	    (fsrbuf = Malloc(secsize)) == NULL ||
+	    blread(readfd, fsrbuf, (SBLOCK_UFS2 - secsize) / dev_bsize,
+	      secsize) != 0) {
+		printf("RECOVERY DATA COULD NOT BE CREATED\n");
 		return;
-	fsr.fsr_magic = sblock.fs_magic;
-	fsr.fsr_fpg = sblock.fs_fpg;
-	fsr.fsr_fsbtodb = sblock.fs_fsbtodb;
-	fsr.fsr_sblkno = sblock.fs_sblkno;
-	fsr.fsr_ncg = sblock.fs_ncg;
-	blwrite(writefd, (char *)&fsr, (SBLOCK_UFS2 - sizeof(fsr)) / dev_bsize,
-	    sizeof(fsr));
+	}
+	fsr = (struct fsrecovery *)&fsrbuf[secsize - sizeof *fsr];
+	fsr->fsr_magic = sblock.fs_magic;
+	fsr->fsr_fpg = sblock.fs_fpg;
+	fsr->fsr_fsbtodb = sblock.fs_fsbtodb;
+	fsr->fsr_sblkno = sblock.fs_sblkno;
+	fsr->fsr_ncg = sblock.fs_ncg;
+	blwrite(writefd, fsrbuf, (SBLOCK_UFS2 - secsize) / secsize, secsize);
+	free(fsrbuf);
 }
diff --git sbin/geom/class/eli/geli.8 sbin/geom/class/eli/geli.8
index 7b3f9a5f8c30..e773cce7b4c9 100644
--- sbin/geom/class/eli/geli.8
+++ sbin/geom/class/eli/geli.8
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd August 3, 2016
+.Dd August 26, 2017
 .Dt GELI 8
 .Os
 .Sh NAME
@@ -51,7 +51,7 @@ utility:
 .Pp
 .Nm
 .Cm init
-.Op Fl bgPTv
+.Op Fl bdgPTv
 .Op Fl a Ar aalgo
 .Op Fl B Ar backupfile
 .Op Fl e Ar ealgo
@@ -88,7 +88,7 @@ utility:
 .Ar prov
 .Nm
 .Cm configure
-.Op Fl bBgGtT
+.Op Fl bBdDgGtT
 .Ar prov ...
 .Nm
 .Cm setkey
@@ -279,6 +279,9 @@ To inhibit backups, you can use
 .Pa none
 as the
 .Ar backupfile .
+.It Fl d
+While booting from this encrypted root filesystem enable visibility of
+passphrase length.
 .It Fl e Ar ealgo
 Encryption algorithm to use.
 Currently supported algorithms are:
@@ -490,6 +493,12 @@ For more information, see the description of the
 subcommand.
 .It Fl B
 Remove the BOOT flag from the given providers.
+.It Fl d
+While booting from this encrypted root filesystem enable visibility of
+passphrase length.
+.It Fl D
+While booting from this encrypted root filesystem disable visibility of
+passphrase length.
 .It Fl g
 Enable booting from this encrypted root filesystem.
 The boot loader prompts for the passphrase and loads
diff --git sbin/geom/class/eli/geom_eli.c sbin/geom/class/eli/geom_eli.c
index 26233d9afdf6..1b88bfa8bc73 100644
--- sbin/geom/class/eli/geom_eli.c
+++ sbin/geom/class/eli/geom_eli.c
@@ -82,7 +82,7 @@ static int eli_backup_create(struct gctl_req *req, const char *prov,
 /*
  * Available commands:
  *
- * init [-bgPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov
+ * init [-bdgPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov
  * label - alias for 'init'
  * attach [-dprv] [-j passfile] [-k keyfile] prov
  * detach [-fl] prov ...
@@ -107,6 +107,7 @@ struct g_command class_commands[] = {
 		{ 'a', "aalgo", "", G_TYPE_STRING },
 		{ 'b', "boot", NULL, G_TYPE_BOOL },
 		{ 'B', "backupfile", "", G_TYPE_STRING },
+		{ 'd', "displaypass", NULL, G_TYPE_BOOL },
 		{ 'e', "ealgo", "", G_TYPE_STRING },
 		{ 'g', "geliboot", NULL, G_TYPE_BOOL },
 		{ 'i', "iterations", "-1", G_TYPE_NUMBER },
@@ -119,13 +120,14 @@ struct g_command class_commands[] = {
 		{ 'V', "mdversion", "-1", G_TYPE_NUMBER },
 		G_OPT_SENTINEL
 	    },
-	    "[-bgPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov"
+	    "[-bdgPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov"
 	},
 	{ "label", G_FLAG_VERBOSE, eli_main,
 	    {
 		{ 'a', "aalgo", "", G_TYPE_STRING },
 		{ 'b', "boot", NULL, G_TYPE_BOOL },
 		{ 'B', "backupfile", "", G_TYPE_STRING },
+		{ 'd', "displaypass", NULL, G_TYPE_BOOL },
 		{ 'e', "ealgo", "", G_TYPE_STRING },
 		{ 'g', "geliboot", NULL, G_TYPE_BOOL },
 		{ 'i', "iterations", "-1", G_TYPE_NUMBER },
@@ -182,13 +184,15 @@ struct g_command class_commands[] = {
 	    {
 		{ 'b', "boot", NULL, G_TYPE_BOOL },
 		{ 'B', "noboot", NULL, G_TYPE_BOOL },
+		{ 'd', "displaypass", NULL, G_TYPE_BOOL },
+		{ 'D', "nodisplaypass", NULL, G_TYPE_BOOL },
 		{ 'g', "geliboot", NULL, G_TYPE_BOOL },
 		{ 'G', "nogeliboot", NULL, G_TYPE_BOOL },
 		{ 't', "trim", NULL, G_TYPE_BOOL },
 		{ 'T', "notrim", NULL, G_TYPE_BOOL },
 		G_OPT_SENTINEL
 	    },
-	    "[-bBgGtT] prov ..."
+	    "[-bBdDgGtT] prov ..."
 	},
 	{ "setkey", G_FLAG_VERBOSE, eli_main,
 	    {
@@ -708,6 +712,8 @@ eli_init(struct gctl_req *req)
 		md.md_flags |= G_ELI_FLAG_BOOT;
 	if (gctl_get_int(req, "geliboot"))
 		md.md_flags |= G_ELI_FLAG_GELIBOOT;
+	if (gctl_get_int(req, "displaypass"))
+		md.md_flags |= G_ELI_FLAG_GELIDISPLAYPASS;
 	if (gctl_get_int(req, "notrim"))
 		md.md_flags |= G_ELI_FLAG_NODELETE;
 	md.md_ealgo = CRYPTO_ALGORITHM_MIN - 1;
@@ -912,7 +918,7 @@ eli_attach(struct gctl_req *req)
 
 static void
 eli_configure_detached(struct gctl_req *req, const char *prov, int boot,
- int geliboot, int trim)
+    int geliboot, int displaypass, int trim)
 {
 	struct g_eli_metadata md;
 	bool changed = 0;
@@ -948,6 +954,21 @@ eli_configure_detached(struct gctl_req *req, const char *prov, int boot,
 		changed = 1;
 	}
 
+	if (displaypass == 1 && (md.md_flags & G_ELI_FLAG_GELIDISPLAYPASS)) {
+		if (verbose)
+			printf("GELIDISPLAYPASS flag already configured for %s.\n", prov);
+	} else if (displaypass == 0 &&
+	    !(md.md_flags & G_ELI_FLAG_GELIDISPLAYPASS)) {
+		if (verbose)
+			printf("GELIDISPLAYPASS flag not configured for %s.\n", prov);
+	} else if (displaypass >= 0) {
+		if (displaypass)
+			md.md_flags |= G_ELI_FLAG_GELIDISPLAYPASS;
+		else
+			md.md_flags &= ~G_ELI_FLAG_GELIDISPLAYPASS;
+		changed = 1;
+	}
+
 	if (trim == 0 && (md.md_flags & G_ELI_FLAG_NODELETE)) {
 		if (verbose)
 			printf("TRIM disable flag already configured for %s.\n", prov);
@@ -971,8 +992,9 @@ static void
 eli_configure(struct gctl_req *req)
 {
 	const char *prov;
-	bool boot, noboot, geliboot, nogeliboot, trim, notrim;
-	int doboot, dogeliboot, dotrim;
+	bool boot, noboot, geliboot, nogeliboot, displaypass, nodisplaypass;
+	bool trim, notrim;
+	int doboot, dogeliboot, dodisplaypass, dotrim;
 	int i, nargs;
 
 	nargs = gctl_get_int(req, "nargs");
@@ -985,6 +1007,8 @@ eli_configure(struct gctl_req *req)
 	noboot = gctl_get_int(req, "noboot");
 	geliboot = gctl_get_int(req, "geliboot");
 	nogeliboot = gctl_get_int(req, "nogeliboot");
+	displaypass = gctl_get_int(req, "displaypass");
+	nodisplaypass = gctl_get_int(req, "nodisplaypass");
 	trim = gctl_get_int(req, "trim");
 	notrim = gctl_get_int(req, "notrim");
 
@@ -1008,6 +1032,16 @@ eli_configure(struct gctl_req *req)
 	else if (nogeliboot)
 		dogeliboot = 0;
 
+	dodisplaypass = -1;
+	if (displaypass && nodisplaypass) {
+		gctl_error(req, "Options -d and -D are mutually exclusive.");
+		return;
+	}
+	if (displaypass)
+		dodisplaypass = 1;
+	else if (nodisplaypass)
+		dodisplaypass = 0;
+
 	dotrim = -1;
 	if (trim && notrim) {
 		gctl_error(req, "Options -t and -T are mutually exclusive.");
@@ -1018,7 +1052,8 @@ eli_configure(struct gctl_req *req)
 	else if (notrim)
 		dotrim = 0;
 
-	if (doboot == -1 && dogeliboot == -1 && dotrim == -1) {
+	if (doboot == -1 && dogeliboot == -1 && dodisplaypass == -1 &&
+	    dotrim == -1) {
 		gctl_error(req, "No option given.");
 		return;
 	}
@@ -1028,8 +1063,10 @@ eli_configure(struct gctl_req *req)
 	/* Now the rest. */
 	for (i = 0; i < nargs; i++) {
 		prov = gctl_get_ascii(req, "arg%d", i);
-		if (!eli_is_attached(prov))
-			eli_configure_detached(req, prov, doboot, dogeliboot, dotrim);
+		if (!eli_is_attached(prov)) {
+			eli_configure_detached(req, prov, doboot, dogeliboot,
+			    dodisplaypass, dotrim);
+		}
 	}
 }
 
diff --git sbin/geom/class/virstor/geom_virstor.c sbin/geom/class/virstor/geom_virstor.c
index 7b83852eba89..66dab0d5c624 100644
--- sbin/geom/class/virstor/geom_virstor.c
+++ sbin/geom/class/virstor/geom_virstor.c
@@ -140,61 +140,6 @@ virstor_main(struct gctl_req *req, unsigned flags)
 	*/
 }
 
-static void
-pathgen(const char *name, char *path, size_t size)
-{
-
-	if (strncmp(name, _PATH_DEV, sizeof(_PATH_DEV) - 1) != 0)
-		snprintf(path, size, "%s%s", _PATH_DEV, name);
-	else
-		strlcpy(path, name, size);
-}
-
-static int
-my_g_metadata_store(const char *name, u_char *md, size_t size)
-{
-	char path[MAXPATHLEN];
-	unsigned sectorsize;
-	off_t mediasize;
-	u_char *sector;
-	int error, fd;
-
-	pathgen(name, path, sizeof(path));
-	sector = NULL;
-	error = 0;
-
-	fd = open(path, O_RDWR);
-	if (fd == -1)
-		return (errno);
-	mediasize = g_get_mediasize(name);
-	if (mediasize == 0) {
-		error = errno;
-		goto out;
-	}
-	sectorsize = g_get_sectorsize(name);
-	if (sectorsize == 0) {
-		error = errno;
-		goto out;
-	}
-	assert(sectorsize >= size);
-	sector = malloc(sectorsize);
-	if (sector == NULL) {
-		error = ENOMEM;
-		goto out;
-	}
-	bcopy(md, sector, size);
-	if (pwrite(fd, sector, sectorsize, mediasize - sectorsize) !=
-	    (ssize_t)sectorsize) {
-		error = errno;
-		goto out;
-	}
-out:
-	if (sector != NULL)
-		free(sector);
-	close(fd);
-	return (error);
-}
-
 /*
  * Labels a new geom Meaning: parses and checks the parameters, calculates &
  * writes metadata to the relevant providers so when the next round of
@@ -464,7 +409,7 @@ virstor_label(struct gctl_req *req)
 			err(1, "Cannot allocate sector of %zu bytes", ssize);
 		bzero(sect, ssize);
 		virstor_metadata_encode(&md, sect);
-		error = my_g_metadata_store(name, sect, ssize);
+		error = g_metadata_store(name, sect, ssize);
 		free(sect);
 		if (error != 0) {
 			if (verbose)
diff --git sbin/geom/misc/subr.c sbin/geom/misc/subr.c
index cf0d9b00cf85..5f5ca9115bc6 100644
--- sbin/geom/misc/subr.c
+++ sbin/geom/misc/subr.c
@@ -302,6 +302,7 @@ g_metadata_store(const char *name, const unsigned char *md, size_t size)
 		goto out;
 	}
 	bcopy(md, sector, size);
+	bzero(sector + size, sectorsize - size);
 	if (pwrite(fd, sector, sectorsize, mediasize - sectorsize) !=
 	    sectorsize) {
 		error = errno;
diff --git sbin/mdconfig/mdconfig.8 sbin/mdconfig/mdconfig.8
index a437e40d58ec..cf05d8f43efb 100644
--- sbin/mdconfig/mdconfig.8
+++ sbin/mdconfig/mdconfig.8
@@ -37,7 +37,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 10, 2015
+.Dd August 28, 2017
 .Dt MDCONFIG 8
 .Os
 .Sh NAME
@@ -55,6 +55,7 @@
 .Op Fl u Ar unit
 .Op Fl x Ar sectors/track
 .Op Fl y Ar heads/cylinder
+.Op Fl L Ar label
 .Nm
 .Fl d
 .Fl u Ar unit
@@ -189,6 +190,12 @@ and
 options can be used to specify a synthetic geometry.
 This is useful for constructing bootable images for later download to
 other devices.
+.It Fl L Ar label
+Associate a label (arbitrary string) with the new memory disk.
+The label can then be inspected with
+.Bd -literal -offset indent
+.Nm Fl l v
+.Ed
 .It Fl o Oo Cm no Oc Ns Ar option
 Set or reset options.
 .Bl -tag -width indent
diff --git sbin/mdconfig/mdconfig.c sbin/mdconfig/mdconfig.c
index 12c2a82c44d7..a76af2c7fdb0 100644
--- sbin/mdconfig/mdconfig.c
+++ sbin/mdconfig/mdconfig.c
@@ -79,7 +79,7 @@ usage(void)
 
 	fprintf(stderr,
 "usage: mdconfig -a -t type [-n] [-o [no]option] ... [-f file]\n"
-"                [-s size] [-S sectorsize] [-u unit]\n"
+"                [-s size] [-S sectorsize] [-u unit] [-L label]\n"
 "                [-x sectors/track] [-y heads/cylinder]\n"
 "       mdconfig -d -u unit [-o [no]force]\n"
 "       mdconfig -r -u unit -s size [-o [no]force]\n"
@@ -102,15 +102,17 @@ main(int argc, char **argv)
 
 	bzero(&mdio, sizeof(mdio));
 	mdio.md_file = malloc(PATH_MAX);
-	if (mdio.md_file == NULL)
+	mdio.md_label = malloc(PATH_MAX);
+	if (mdio.md_file == NULL || mdio.md_label == NULL)
 		err(1, "could not allocate memory");
 	vflag = 0;
 	bzero(mdio.md_file, PATH_MAX);
+	bzero(mdio.md_label, PATH_MAX);
 
 	if (argc == 1)
 		usage();
 
-	while ((ch = getopt(argc, argv, "ab:df:lno:rs:S:t:u:vx:y:")) != -1) {
+	while ((ch = getopt(argc, argv, "ab:df:lno:rs:S:t:u:vx:y:L:")) != -1) {
 		switch (ch) {
 		case 'a':
 			if (action != UNSET && action != ATTACH)
@@ -243,6 +245,9 @@ main(int argc, char **argv)
 		case 'y':
 			mdio.md_fwheads = strtoul(optarg, &p, 0);
 			break;
+		case 'L':
+			strlcpy(mdio.md_label, optarg, PATH_MAX);
+			break;
 		default:
 			usage();
 		}
@@ -422,7 +427,8 @@ md_list(const char *units, int opt, const char *fflag)
 	struct gclass *gcl;
 	void *sq;
 	int retcode, ffound, ufound;
-	char *type, *file, *length;
+	char *length;
+	const char *type, *file, *label;
 
 	type = file = length = NULL;
 
@@ -477,10 +483,14 @@ md_list(const char *units, int opt, const char *fflag)
 				printf("\t%s\t", type);
 				if (length != NULL)
 					md_prthumanval(length);
-				if (file != NULL) {
-					printf("\t%s", file);
-					file = NULL;
-				}
+				if (file == NULL)
+					file = "-";
+				printf("\t%s", file);
+				file = NULL;
+				label = geom_config_get(gc, "label");
+				if (label == NULL)
+					label = "";
+				printf("\t%s", label);
 			}
 			opt |= OPT_DONE;
 			if ((opt & OPT_LIST) && !(opt & OPT_VERBOSE))
diff --git sbin/newfs/mkfs.c sbin/newfs/mkfs.c
index 3cbfad8c49d7..dbfab4536bd6 100644
--- sbin/newfs/mkfs.c
+++ sbin/newfs/mkfs.c
@@ -121,7 +121,8 @@ mkfs(struct partition *pp, char *fsys)
 	ino_t maxinum;
 	int minfragsperinode;	/* minimum ratio of frags to inodes */
 	char tmpbuf[100];	/* XXX this will break in about 2,500 years */
-	struct fsrecovery fsr;
+	struct fsrecovery *fsr;
+	char *fsrbuf;
 	union {
 		struct fs fdummy;
 		char cdummy[SBLOCKSIZE];
@@ -442,6 +443,8 @@ restart:
 	sblock.fs_sbsize = fragroundup(&sblock, sizeof(struct fs));
 	if (sblock.fs_sbsize > SBLOCKSIZE)
 		sblock.fs_sbsize = SBLOCKSIZE;
+	if (sblock.fs_sbsize < realsectorsize)
+		sblock.fs_sbsize = realsectorsize;
 	sblock.fs_minfree = minfree;
 	if (metaspace > 0 && metaspace < sblock.fs_fpg / 2)
 		sblock.fs_metaspace = blknum(&sblock, metaspace);
@@ -514,7 +517,7 @@ restart:
 	/*
 	 * Wipe out old UFS1 superblock(s) if necessary.
 	 */
-	if (!Nflag && Oflag != 1) {
+	if (!Nflag && Oflag != 1 && realsectorsize <= SBLOCK_UFS1) {
 		i = bread(&disk, part_ofs + SBLOCK_UFS1 / disk.d_bsize, chdummy, SBLOCKSIZE);
 		if (i == -1)
 			err(1, "can't read old UFS1 superblock: %s", disk.d_error);
@@ -623,18 +626,20 @@ restart:
 	 * The recovery information only works for UFS2 filesystems.
 	 */
 	if (sblock.fs_magic == FS_UFS2_MAGIC) {
-		i = bread(&disk,
-		    part_ofs + (SBLOCK_UFS2 - sizeof(fsr)) / disk.d_bsize,
-		    (char *)&fsr, sizeof(fsr));
-		if (i == -1)
+		if ((fsrbuf = malloc(realsectorsize)) == NULL || bread(&disk,
+		    part_ofs + (SBLOCK_UFS2 - realsectorsize) / disk.d_bsize,
+		    fsrbuf, realsectorsize) == -1)
 			err(1, "can't read recovery area: %s", disk.d_error);
-		fsr.fsr_magic = sblock.fs_magic;
-		fsr.fsr_fpg = sblock.fs_fpg;
-		fsr.fsr_fsbtodb = sblock.fs_fsbtodb;
-		fsr.fsr_sblkno = sblock.fs_sblkno;
-		fsr.fsr_ncg = sblock.fs_ncg;
-		wtfs((SBLOCK_UFS2 - sizeof(fsr)) / disk.d_bsize, sizeof(fsr),
-		    (char *)&fsr);
+		fsr =
+		    (struct fsrecovery *)&fsrbuf[realsectorsize - sizeof *fsr];
+		fsr->fsr_magic = sblock.fs_magic;
+		fsr->fsr_fpg = sblock.fs_fpg;
+		fsr->fsr_fsbtodb = sblock.fs_fsbtodb;
+		fsr->fsr_sblkno = sblock.fs_sblkno;
+		fsr->fsr_ncg = sblock.fs_ncg;
+		wtfs((SBLOCK_UFS2 - realsectorsize) / disk.d_bsize,
+		    realsectorsize, fsrbuf);
+		free(fsrbuf);
 	}
 	/*
 	 * Update information about this partition in pack
diff --git sbin/nvmecontrol/identify.c sbin/nvmecontrol/identify.c
index c7da98e4acb6..e7994520ded5 100644
--- sbin/nvmecontrol/identify.c
+++ sbin/nvmecontrol/identify.c
@@ -66,8 +66,9 @@ print_controller(struct nvme_controller_data *cdata)
 		printf("Unlimited\n");
 	else
 		printf("%d\n", PAGE_SIZE * (1 << cdata->mdts));
-
+	printf("Controller ID:              0x%02x\n", cdata->ctrlr_id);
 	printf("\n");
+
 	printf("Admin Command Set Attributes\n");
 	printf("============================\n");
 	printf("Security Send/Receive:       %s\n",
diff --git share/man/man4/Makefile share/man/man4/Makefile
index 92e423730f3b..ac7b430a967f 100644
--- share/man/man4/Makefile
+++ share/man/man4/Makefile
@@ -46,6 +46,7 @@ MAN=	aac.4 \
 	amdpm.4 \
 	${_amdsbwd.4} \
 	${_amdsmb.4} \
+	${_amdsmn.4} \
 	${_amdtemp.4} \
 	${_bxe.4} \
 	amr.4 \
@@ -252,6 +253,7 @@ MAN=	aac.4 \
 	led.4 \
 	lge.4 \
 	${_linux.4} \
+	liquidio.4 \
 	lm75.4 \
 	lmc.4 \
 	lo.4 \
@@ -373,7 +375,9 @@ MAN=	aac.4 \
 	ng_vlan.4 \
 	nmdm.4 \
 	nsp.4 \
-	${_ntb_hw.4} \
+	${_ntb.4} \
+	${_ntb_hw_intel.4} \
+	${_ntb_hw_plx.4} \
 	${_ntb_transport.4} \
 	${_if_ntb.4} \
 	null.4 \
@@ -686,7 +690,6 @@ MLINKS+=netintro.4 net.4 \
 	netintro.4 networking.4
 MLINKS+=${_nfe.4} ${_if_nfe.4}
 MLINKS+=nge.4 if_nge.4
-MLINKS+=${_ntb_hw.4} ${_ntb.4}
 MLINKS+=${_nxge.4} ${_if_nxge.4}
 MLINKS+=ow.4 onewire.4
 MLINKS+=pccbb.4 cbb.4
@@ -768,6 +771,7 @@ _attimer.4=	attimer.4
 _aibs.4=	aibs.4
 _amdsbwd.4=	amdsbwd.4
 _amdsmb.4=	amdsmb.4
+_amdsmn.4=	amdsmn.4
 _amdtemp.4=	amdtemp.4
 _asmc.4=	asmc.4
 _bxe.4=		bxe.4
@@ -834,7 +838,8 @@ _xnb.4=		xnb.4
 _if_ntb.4=	if_ntb.4
 _ioat.4=	ioat.4
 _ntb.4=		ntb.4
-_ntb_hw.4=	ntb_hw.4
+_ntb_hw_intel.4=	ntb_hw_intel.4
+_ntb_hw_plx.4=	ntb_hw_plx.4
 _ntb_transport.4=ntb_transport.4
 _qlxge.4=	qlxge.4
 _qlxgb.4=	qlxgb.4
@@ -888,6 +893,7 @@ MAN+=		iser.4
 
 .if ${MK_OFED} != "no"
 MAN+=		mlx4ib.4
+MAN+=		mlx5ib.4
 .endif
 
 .if ${MK_TESTS} != "no"
diff --git share/man/man4/altq.4 share/man/man4/altq.4
index 38fd8395f2ca..898dc49dace8 100644
--- share/man/man4/altq.4
+++ share/man/man4/altq.4
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd April 12, 2017
+.Dd August 28, 2017
 .Dt ALTQ 4
 .Os
 .Sh NAME
@@ -152,6 +152,7 @@ They have been applied to the following hardware drivers:
 .Xr ixgbe 4 ,
 .Xr jme 4 ,
 .Xr le 4 ,
+.Xr liquidio 4 ,
 .Xr msk 4 ,
 .Xr mxge 4 ,
 .Xr my 4 ,
diff --git share/man/man4/amdsmn.4 share/man/man4/amdsmn.4
new file mode 100644
index 000000000000..8e279cc00319
--- /dev/null
+++ share/man/man4/amdsmn.4
@@ -0,0 +1,64 @@
+.\"-
+.\" Copyright (c) 2017 Conrad Meyer <cem@FreeBSD.org>
+.\" 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.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 5, 2017
+.Dt AMDSMN 4
+.Os
+.Sh NAME
+.Nm amdsmn
+.Nd device driver for
+.Tn AMD
+processor System Management Network
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device amdsmn"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+amdsmn_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for resources on the System Management Network bus
+in
+.Tn AMD
+Family 17h processors.
+.Sh SEE ALSO
+.Xr loader 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 12.0 .
+.Sh AUTHORS
+.An Conrad Meyer Aq Mt cem@FreeBSD.org
diff --git share/man/man4/amdtemp.4 share/man/man4/amdtemp.4
index 2b9bcc3c20b4..8d1764f7e877 100644
--- share/man/man4/amdtemp.4
+++ share/man/man4/amdtemp.4
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 27, 2015
+.Dd September 5, 2017
 .Dt AMDTEMP 4
 .Os
 .Sh NAME
@@ -53,7 +53,7 @@ The
 driver provides support for the on-die digital thermal sensor present
 in
 .Tn AMD
-Family 0Fh, 10h, 11h, 12h, 14h, 15h, and 16h processors.
+Family 0Fh, 10h, 11h, 12h, 14h, 15h, 16h, and 17h processors.
 .Pp
 For Family 0Fh processors, the
 .Nm
@@ -64,8 +64,8 @@ The driver also creates
 in the corresponding CPU device's sysctl tree, displaying the maximum
 temperature of the two sensors located in each CPU core.
 .Pp
-For Family 10h, 11h, 12h, 14h, 15h, and 16h processors, the driver reports each
-package's temperature through a sysctl node, named
+For Family 10h, 11h, 12h, 14h, 15h, 16h, and 17h processors, the driver reports
+each package's temperature through a sysctl node, named
 .Va dev.amdtemp.%d.core0.sensor0 .
 The driver also creates
 .Va dev.cpu.%d.temperature
@@ -107,5 +107,5 @@ specified maximum case temperature and maximum thermal power dissipation
 according to
 .Rs
 .%T BIOS and Kernel Developer's Guide (BKDG) for AMD Processors
-.%U http://developer.amd.com/documentation/guides/Pages/default.aspx
+.%U http://developer.amd.com/resources/developer-guides-manuals/
 .Re
diff --git share/man/man4/ddb.4 share/man/man4/ddb.4
index fffd6cf6ced7..07419894ccea 100644
--- share/man/man4/ddb.4
+++ share/man/man4/ddb.4
@@ -60,7 +60,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 3, 2017
+.Dd August 24, 2017
 .Dt DDB 4
 .Os
 .Sh NAME
@@ -782,7 +782,7 @@ Lock owner.
 .It Ic show Cm lockchain Ar addr
 Show all threads a particular thread at address
 .Ar addr
-is waiting on based on non-sleepable and non-spin locks.
+is waiting on based on non-spin locks.
 .\"
 .Pp
 .It Ic show Cm lockedbufs
@@ -960,8 +960,9 @@ Useful for long debugging sessions.
 .\"
 .Pp
 .It Ic show Cm sleepchain
-Show all the threads a particular thread is waiting on based on
-sleepable locks.
+Deprecated.
+Now an alias for
+.Ic show Cm lockchain .
 .\"
 .Pp
 .It Ic show Cm sleepq
diff --git share/man/man4/hv_vss.4 share/man/man4/hv_vss.4
index 0cfa66b19abf..627880fa9d75 100644
--- share/man/man4/hv_vss.4
+++ share/man/man4/hv_vss.4
@@ -66,7 +66,7 @@ VM, and sends the result back to Hyper-V host.
 .Pp
 Generally,
 .Xr hv_vss_daemon 8
-takes the responsiblity to freeze/thaw UFS file system,
+takes the responsibility to freeze/thaw UFS file system,
 and it is automatically launched after system boots. When Hyper-V host wants to
 take a snapshot of the
 .Fx
diff --git share/man/man4/if_ntb.4 share/man/man4/if_ntb.4
index 6f52d7774264..5629eb4fe4b4 100644
--- share/man/man4/if_ntb.4
+++ share/man/man4/if_ntb.4
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd July 29, 2016
+.Dd September 2, 2017
 .Dt IF_NTB 4
 .Os
 .Sh NAME
@@ -35,6 +35,8 @@
 To compile this driver into your kernel,
 place the following lines in your kernel configuration file:
 .Bd -ragged -offset indent
+.Cd "device ntb"
+.Cd "device ntb_transport"
 .Cd "device if_ntb"
 .Ed
 .Pp
@@ -48,7 +50,7 @@ The following tunables are settable from the
 .Xr loader 8 :
 .Bl -ohang
 .It Va hw.if_ntb.num_queues
-Number of transport queues to use per interface.
+Limits maximal number of queues per interface.
 Default is unlimited.
 .El
 .Sh DESCRIPTION
@@ -56,12 +58,10 @@ The
 .Nm
 driver attaches on top of the
 .Xr ntb_transport 4
-driver to utilize its resources to create virtual Ethernet interface between
-the systems.
-Interface capabilities depend on the underlying transport.
-Typical MTU is about 64KB to reduce overhead.
-By default one queue is used, but more may be configured.
-The MAC address for interface is randomly generated.
+driver to utilize one or more of its packet queues to create virtual
+Ethernet network interface between the systems.
+Typical MTU for the interface is about 64KB to reduce overhead.
+Default MAC address for the interface is randomly generated.
 .Pp
 The
 .Nm
diff --git share/man/man4/liquidio.4 share/man/man4/liquidio.4
new file mode 100644
index 000000000000..75cd3aa59708
--- /dev/null
+++ share/man/man4/liquidio.4
@@ -0,0 +1,133 @@
+.\"  BSD LICENSE
+.\"
+.\"  Copyright(c) 2017 Cavium, Inc.. All rights reserved.
+.\"  All rights reserved.
+.\"
+.\"  Redistribution and use in source and binary forms, with or without
+.\"  modification, are permitted provided that the following conditions
+.\"  are met:
+.\"
+.\"    * Redistributions of source code must retain the above copyright
+.\"      notice, this list of conditions and the following disclaimer.
+.\"    * 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.
+.\"    * Neither the name of Cavium, Inc. 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 COPYRIGHT HOLDERS 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 COPYRIGHT
+.\"  OWNER(S) 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.
+.\" $FreeBSD$
+.\"
+.Dd August 17, 2017
+.Dt LIQUIDIO 4
+.Os
+.Sh NAME
+.Nm liquidio
+.Nd "Cavium 10Gb/25Gb Ethernet driver for the FreeBSD operating system"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device lio"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_lio_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for 23XX 10Gb/25Gb Ethernet adapters.
+The driver supports Jumbo Frames, Transmit/Receive checksum
+offload, TCP segmentation offload (TSO), Large Receive Offload (LRO),
+VLAN tag insertion/extraction, VLAN checksum offload,
+VLAN TSO, and Receive Side Steering (RSS)
+.Pp
+Support for Jumbo Frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+The maximum MTU size for Jumbo Frames is 16000.
+.Pp
+For more information on configuring this device, see ifconfig(8).
+.Sh HARDWARE
+The
+.Nm
+driver supports the following cards:
+.Pp
+.Bl -bullet -compact
+.It
+LiquidIO II CN2350 210SV/225SV
+.It
+LiquidIO II CN2360 210SV/225SV
+.El
+.Sh LOADER TUBABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Pp
+.Bl -tag -width indent
+.It Va hw.lio.fw_type
+.Pp
+String that specifies type of firmware to be loaded.
+Default is "nic". Use "none" to load firmware from flash.
+.It Va hw.lio.num_queues_per_pf0
+.Pp
+Unsigned integers that specify number of queues per PF0.
+Valid range is 0 to 64.
+Use 0 to derive autoconfigures based on the number of
+cpus with a max of 8
+.It Va hw.lio.num_queues_per_pf1
+.Pp
+Unsigned integers that specify number of queues per PF1.
+Valid range is 0 to 64.
+Use 0 to derive autoconfigures based on the number of
+cpus with a max of 8
+.It Va hw.lio.console_bitmask
+.Pp
+Bitmask indicating which consoles have debug output
+redirected to syslog.
+.It Va hw.lio.rss
+.Pp
+To enable/disable driver RSS support
+.It Va hw.lio.hwlro
+.Pp
+To enable/disable hardware LRO
+.Sh SUPPORT
+For general information and support,
+go to the Cavium support website at:
+.Pa http://support.cavium.com .
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 12.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Derek Chickles Aq Mt derek.chickles@cavium.com .
diff --git share/man/man4/mlx5ib.4 share/man/man4/mlx5ib.4
new file mode 100644
index 000000000000..092627596765
--- /dev/null
+++ share/man/man4/mlx5ib.4
@@ -0,0 +1,124 @@
+.\" Copyright (c) 2017 Mellanox Technologies
+.\" 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.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY AUTHOR 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 AUTHOR 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 23, 2017
+.Dt MLX5IB 4
+.Os
+.Sh NAME
+.Nm mlx5ib
+.Nd "Mellanox ConnectX-4 and ConnectX-4 LX based 100Gb, 50Gb, 40Gb, 25Gb and 10Gb network adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place these lines in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options COMPAT_LINUXKPI"
+.Cd "device mlx5"
+.Cd "device mlx5ib"
+.Ed
+.Pp
+To load the driver as a module at run-time,
+run this command as root:
+.Bd -literal -offset indent
+kldload mlx5ib
+.Ed
+.Pp
+To load the driver as a
+module at boot time, place this line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mlx5ib_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for infiniband and Remote DMA over Converged Ethernet,
+RoCE, for PCI Express network adapters based on ConnectX-4 and ConnectX-4 LX.
+.br
+For further hardware information and questions related to hardware
+requirements, see
+.Pa http://www.mellanox.com/ .
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports 100Gb, 50Gb, 40Gb, 25Gb and 10Gb network adapters.
+ConnectX-4 supports: 10/20/25/40/50/56/100Gb/s speeds.
+ConnectX-4 LX supports: 10/25/40/50Gb/s speeds (and reduced power consumption):
+.Pp
+.Bl -bullet -compact
+.It
+Mellanox MCX455A-ECAT
+.It
+Mellanox MCX456A-ECAT
+.It
+Mellanox MCX415A-CCAT
+.It
+Mellanox MCX416A-CCAT
+.It
+Mellanox MCX455A-FCAT
+.It
+Mellanox MCX456A-FCAT
+.It
+Mellanox MCX415A-BCAT
+.It
+Mellanox MCX416A-BCAT
+.It
+Mellanox MCX4131A-GCAT
+.It
+Mellanox MCX4131A-BCAT
+.It
+Mellanox MCX4121A-ACAT
+.It
+Mellanox MCX4111A-ACAT
+.It
+Mellanox MCX4121A-XCAT
+.It
+Mellanox MCX4111A-XCAT
+.El
+.Sh SUPPORT
+For general information and support,
+go to the Mellanox support website at:
+.Pa http://www.mellanox.com/ .
+.Pp
+If an issue is identified with this driver with a supported adapter,
+email all the specific information related to the issue to
+.Aq Mt freebsd-drivers@mellanox.com .
+.Sh SEE ALSO
+.Xr mlx5en 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 12.x .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Mellanox Technologies <freebsd-drivers@mellanox.com> .
diff --git share/man/man4/ntb.4 share/man/man4/ntb.4
new file mode 100644
index 000000000000..598852dd3fe1
--- /dev/null
+++ share/man/man4/ntb.4
@@ -0,0 +1,91 @@
+.\"
+.\" Copyright (c) 2017 Alexander Motin <mav@FreeBSD.org>
+.\" 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.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 2, 2017
+.Dt NTB 4
+.Os
+.Sh NAME
+.Nm ntb
+.Nd Non-Transparent Bridge subsystem
+.Sh SYNOPSIS
+To compile it into your kernel,
+place the following lines in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ntb"
+.Ed
+.Pp
+Or, to load it as a module at boot, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ntb_load="YES"
+.Ed
+.Pp
+The following tunables are settable from the
+.Xr loader 8 :
+.Bl -ohang
+.It Va hw.ntb.debug_level
+Driver debug level.
+The default value is 0, higher means more verbose.
+.It Va hint.ntb_hw. Ns Ar X Ns Va .config
+Configures a set of NTB functions, separated by commas,
+and their resource allocation.
+Each function can be configured as: "[<name>][:<mw>[:<spad>[:<db>]]]", where:
+.Va name
+is a name of the driver to attach (empty means any),
+.Va mw
+is a number of memory windows to allocate (empty means all available),
+.Va spad
+is a number of scratchpad registers to allocate (empty means all available),
+.Va db
+is a number of doorbells to allocate (empty means all available).
+The default configuration is empty string, which means single function
+with all available resources, allowing any driver to attach.
+.El
+.Sh DESCRIPTION
+Non-Transparent Bridges allow to connect two computer systems with PCIe
+link(s), providing each of them limited access to others memory space,
+scratchpad registers and interrupts.
+The
+.Nm
+subsystem uses those resources provided in generic way by hardware drivers
+and splits them between several functions, according to specified
+configuration.
+.Sh SEE ALSO
+.Xr if_ntb 4 ,
+.Xr ntb_transport 4 ,
+.Xr ntb_hw_intel 4 ,
+.Xr ntb_hw_plx 4
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+subsystem was developed by Intel and originally written by
+.An Carl Delsey Aq Mt carl@FreeBSD.org .
+Later improvements were done by
+.An Conrad E. Meyer Aq Mt cem@FreeBSD.org
+and
+.An Alexander Motin Aq Mt mav@FreeBSD.org .
diff --git share/man/man4/ntb_hw.4 share/man/man4/ntb_hw_intel.4
similarity index 63%
rename from share/man/man4/ntb_hw.4
rename to share/man/man4/ntb_hw_intel.4
index 6bc11ba3f2ef..423dc9650785 100644
--- share/man/man4/ntb_hw.4
+++ share/man/man4/ntb_hw_intel.4
@@ -1,5 +1,5 @@
 .\"
-.\" Copyright (c) 2016 Alexander Motin <mav@FreeBSD.org>
+.\" Copyright (c) 2016-2017 Alexander Motin <mav@FreeBSD.org>
 .\" All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
@@ -25,66 +25,45 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd July 28, 2016
-.Dt NTB_HW 4
+.Dd August 30, 2017
+.Dt NTB_HW_INTEL 4
 .Os
 .Sh NAME
-.Nm ntb ,
-.Nm ntb_hw
+.Nm ntb_hw_intel
 .Nd Intel(R) Non-Transparent Bridge driver
 .Sh SYNOPSIS
 To compile this driver into your kernel,
 place the following lines in your kernel configuration file:
 .Bd -ragged -offset indent
-.Cd "device ntb_hw"
+.Cd "device ntb"
+.Cd "device ntb_hw_intel"
 .Ed
 .Pp
 Or, to load the driver as a module at boot, place the following line in
 .Xr loader.conf 5 :
 .Bd -literal -offset indent
-ntb_hw_load="YES"
+ntb_hw_intel_load="YES"
 .Ed
-.Pp
-The following tunables are settable from the
-.Xr loader 8 :
-.Bl -ohang
-.It Va hw.ntb.debug_level
-Driver debug level.
-The default value is 0, higher means more verbose.
-.It Va hint.ntb_hw. Ns Ar X Ns Va .config
-Configures NTB resources split between several consumer devices.
-Configuration of multiple consumer devices separated by commas.
-Each device can be configured as: "<name>[:<mw>[:<spad>[:<db>]]]", where:
-.Va name
-is a name of the driver which should attach the device (empty means any),
-.Va mw
-is a number of memory windows to allocate (empty means all available),
-.Va spad
-is a number of scratchpad registers to allocate (empty means all available),
-.Va db
-is a number of doorbells to allocate (empty means all available).
-The default configuration is empty string, which means single device
-with all available resources allowing any driver attachment.
-.El
 .Sh DESCRIPTION
-The NTB allows you to connect two computer systems using a PCIe link if they
-have the correct equipment and connectors.
-The
-.Nm ntb_hw
-driver provides support for the Non-Transparent Bridge (NTB) in the Intel S1200
-and Xeon E3/E5 processor families.
 The
-.Nm
-driver hides hardware details, exposing memory windows, scratchpads and
-doorbells via hardware independent KPI.
+.Nm ntb_hw_intel
+driver provides support for the Non-Transparent Bridge (NTB) hardware in
+Intel Xeon E3/E5 and S1200 processor families, which allow one of their PCIe
+ports to be switched from transparent to non-transparent bridge mode.
+In this mode bridge looks not as a PCI bridge, but as PCI endpoint device.
+The driver hides hardware details, exposing memory windows, scratchpads
+and doorbells of the other side via hardware independent KPI to
+.Xr ntb 4
+subsystem.
 .Pp
-The hardware provides 2-3 memory windows to the other system's memory,
-16 scratchpad registers and 14/34 doorbells to interrupt the other system.
+The hardware provides 2 or 3 memory windows to the other system's memory,
+16 scratchpad registers and 14 or 34 doorbells to interrupt the other system.
 On Xeon processors one of memory windows is typically consumed by the driver
-to workaround multiple hardware erratas.
+itself to workaround multiple hardware erratas.
 .Sh CONFIGURATION
 The NTB configuration should be set by BIOS.
-It includes enabling NTB, choosing between NTB-to-NTB or NTB-to-Root Port mode,
+It includes enabling NTB, choosing between NTB-to-NTB (back-to-back) or
+NTB-to-Root Port mode,
 enabling split BAR mode (one of two 64-bit BARs can be split into two 32-bit
 ones) and configuring BAR sizes in bits (from 12 to 29/39) for both NTB sides.
 .Pp
@@ -93,7 +72,8 @@ all BAR sizes are set to 20 (1 MiB).
 This needs to be done on both systems.
 .Sh SEE ALSO
 .Xr if_ntb 4 ,
-.Xr ntb_transport 4
+.Xr ntb_transport 4 ,
+.Xr ntb 4 ,
 .Sh AUTHORS
 .An -nosplit
 The
diff --git share/man/man4/ntb_hw_plx.4 share/man/man4/ntb_hw_plx.4
new file mode 100644
index 000000000000..54500a11a9a3
--- /dev/null
+++ share/man/man4/ntb_hw_plx.4
@@ -0,0 +1,118 @@
+.\"
+.\" Copyright (c) 2017 Alexander Motin <mav@FreeBSD.org>
+.\" 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.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 30, 2017
+.Dt NTB_HW_PLX 4
+.Os
+.Sh NAME
+.Nm ntb_hw_plx
+.Nd PLX/Avago/Broadcom Non-Transparent Bridge driver
+.Sh SYNOPSIS
+To compile this driver into your kernel,
+place the following lines in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ntb"
+.Cd "device ntb_hw_plx"
+.Ed
+.Pp
+Or, to load the driver as a module at boot, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ntb_hw_plx_load="YES"
+.Ed
+.Pp
+The following tunables are settable from the
+.Xr loader 8 :
+.Bl -ohang
+.It Va hint.ntb_hw. Ns Ar X Ns Va .b2b
+Being set to 1 (default) tells the driver attached to Virtual Interface of the
+NTB that it works in NTB-to-NTB (back-to-back) mode, 0 -- NTB-to-Root Port.
+Driver attached to Link Interface (visible from Root Port side) switches to
+NTB-to-Root Port mode automatically, but one attached to Virtual Interface
+can't detect what is on the other side and require external knowledge.
+.El
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Non-Transparent Bridge (NTB) hardware in
+PLX PCIe bridge chips, which allow up to two of their PCIe ports to be
+switched from transparent to non-transparent bridge mode.
+In this mode bridge looks not as a PCI bridge, but as PCI endpoint device.
+The driver hides hardware details, exposing memory windows, scratchpads
+and doorbells of the other side via hardware independent KPI to
+.Xr ntb 4
+subsystem.
+.Pp
+Each PLX NTB provides up to 2 64-bit or 4 32-bit memory windows to the
+other system's memory, 6 or 12 scratchpad registers and 16 doorbells to
+interrupt the other system.
+In NTB-to-NTB mode one of memory windows (or half of it, if bigger then 1MB)
+is consumed by the driver itself to access scratchpad and doorbell registers
+of the other side.
+.Sh HARDWARE
+The following PLX/Avago/Broadcom chips are supported by the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+PEX 8713
+.It
+PEX 8717
+.It
+PEX 8725
+.It
+PEX 8733
+.It
+PEX 8749
+.El
+.Pp
+, but it may also work with other compatible ones.
+.Sh CONFIGURATION
+The basic chip configuration should be done by serial EEPROM or via i2c.
+It includes enabling NTB on one or both sides (choosing between NTB-to-NTB
+(back-to-back) and NTB-to-Root Port modes) and configuring BARs sizes.
+.Pp
+The recommended mode is NTB-to-NTB mode, since while NTB-to-Root Port is
+generally supported by the driver, it require PCI hotplug handling on the
+Root Port, that may be difficult or cause different kinds of problems.
+.Sh SEE ALSO
+.Xr if_ntb 4 ,
+.Xr ntb_transport 4 ,
+.Xr ntb 4 ,
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Alexander Motin Aq Mt mav@FreeBSD.org .
+.Sh BUGS
+There is no way to protect your system from malicious behavior on the other
+system once the link is brought up.
+Anyone with root or kernel access on the other system can read or write to
+any location on your system.
+In other words, only connect two systems that completely trust each other.
diff --git share/man/man4/ntb_transport.4 share/man/man4/ntb_transport.4
index 43b412cd8f5f..ef12b2a013eb 100644
--- share/man/man4/ntb_transport.4
+++ share/man/man4/ntb_transport.4
@@ -1,5 +1,5 @@
 .\"
-.\" Copyright (c) 2016 Alexander Motin <mav@FreeBSD.org>
+.\" Copyright (c) 2016-2017 Alexander Motin <mav@FreeBSD.org>
 .\" All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
@@ -25,14 +25,21 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd July 29, 2016
+.Dd September 2, 2017
 .Dt NTB_TRANSPORT 4
 .Os
 .Sh NAME
 .Nm ntb_transport
 .Nd Packet-oriented transport for Non-Transparent Bridges
 .Sh SYNOPSIS
-To load the driver as a module at boot, place the following line in
+To compile this driver into your kernel,
+place the following lines in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ntb"
+.Cd "device ntb_transport"
+.Ed
+.Pp
+Or, to load the driver as a module at boot, place the following line in
 .Xr loader.conf 5 :
 .Bd -literal -offset indent
 ntb_transport_load="YES"
@@ -45,28 +52,44 @@ The following tunables are settable from the
 Driver debug level.
 The default value is 0, higher means more verbose.
 .It Va hint.ntb_transport. Ns Ar X Ns Va .config
-Configures queues allocation for consumer devices, separated by commas.
-Each device can be configured as: "<name>[:<queues>]", where:
+Configures a set of the transport consumers, separated by commas.
+Each consumer can be configured as: "[<name>][:<queues>]", where:
 .Va name
-is a name of the driver which should attach the device (empty means any),
+is a name of the driver to attach (empty means any),
 .Va queues
-is a number of queues to allocate (empty means automatic),
-The default configuration is empty string, which means single device
-with one queue per memory window allowing any driver attachment.
+is a number of queues to allocate (empty means automatic).
+The default configuration is empty string, which means single consumer
+with one queue per memory window, allowing any driver to attach.
 .El
 .Sh DESCRIPTION
 The
 .Nm
 driver attaches on top of the
 .Nm ntb
-driver to utilize its resources to create set of bidirectional queues,
+driver to utilize its resources to create a set of bidirectional queues,
 delivering packets between the systems.
-The primary purpose of this is to be used by
+The primary purpose of this driver is to be used by
 .Nm if_ntb
 network interface, but other consumers may also be developed using KPI.
+.Pp
+Each
+.Nm
+require from underlying
+.Nm ntb
+instance:
+.Bl -bullet -compact
+.It
+1 or more memory windows;
+.It
+6 scratchpads, plus 2 more for each additional memory window;
+.It
+1 doorbell for each memory window or configured queue.
+.El
 .Sh SEE ALSO
 .Xr if_ntb 4 ,
-.Xr ntb_hw 4
+.Xr ntb 4 ,
+.Xr ntb_hw_intel 4 ,
+.Xr ntb_hw_plx 4
 .Sh AUTHORS
 .An -nosplit
 The
diff --git share/man/man4/siba.4 share/man/man4/siba.4
index 7fcb5e656a37..2e54216d0aea 100644
--- share/man/man4/siba.4
+++ share/man/man4/siba.4
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd June 3, 2016
+.Dd September 13, 2017
 .Dt SIBA 4
 .Os
 .Sh NAME
@@ -75,7 +75,7 @@ The
 device driver first appeared in
 .Fx 8.0 .
 The driver was rewritten for
-.Fx 11.0 .
+.Fx 11.0
 to support the common Broadcom
 .Xr bhnd 4
 bus interface.
diff --git share/man/man4/tty.4 share/man/man4/tty.4
index ef5bed8be554..0806d30041a4 100644
--- share/man/man4/tty.4
+++ share/man/man4/tty.4
@@ -360,9 +360,9 @@ is cleared in the terminal.
 The total number of input and output bytes
 through all terminal devices
 are available via the
-.Va kern.tk_nin
+.Va kern.tty_nin
 and
-.Va kern.tk_nout
+.Va kern.tty_nout
 read-only
 .Xr sysctl 8
 variables.
diff --git share/man/man4/vlan.4 share/man/man4/vlan.4
index 480d026ae5c3..ba2dfe101cd1 100644
--- share/man/man4/vlan.4
+++ share/man/man4/vlan.4
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd June 8, 2016
+.Dd August 28, 2017
 .Dt VLAN 4
 .Os
 .Sh NAME
@@ -135,6 +135,7 @@ in hardware:
 .Xr ixgb 4 ,
 .Xr ixgbe 4 ,
 .Xr jme 4 ,
+.Xr liquidio 4 ,
 .Xr msk 4 ,
 .Xr mxge 4 ,
 .Xr nxge 4 ,
diff --git share/man/man5/periodic.conf.5 share/man/man5/periodic.conf.5
index abcf4a358d24..01f6817c6d62 100644
--- share/man/man5/periodic.conf.5
+++ share/man/man5/periodic.conf.5
@@ -593,15 +593,6 @@ if you want to run
 This script regenerates the database used by the
 .Xr apropos 1
 command.
-.It Va weekly_catman_enable
-.Pq Vt bool
-Set to
-.Dq Li YES
-if you want to run
-.Pa /usr/libexec/catman.local .
-This script processes all out of date manual pages, speeding up the
-.Xr man 1
-command at the expense of disk space.
 .It Va weekly_noid_enable
 .Pq Vt bool
 Set to
diff --git share/man/man5/rc.conf.5 share/man/man5/rc.conf.5
index a03f4de5cb95..eb4a0fca9f16 100644
--- share/man/man5/rc.conf.5
+++ share/man/man5/rc.conf.5
@@ -4453,7 +4453,6 @@ configuration file.
 .It Pa /etc/rc.conf.local
 .El
 .Sh SEE ALSO
-.Xr catman 1 ,
 .Xr chmod 1 ,
 .Xr gdb 1 ,
 .Xr info 1 ,
diff --git share/man/man5/src.conf.5 share/man/man5/src.conf.5
index 692879f4cb1e..0d67b68cb1c1 100644
--- share/man/man5/src.conf.5
+++ share/man/man5/src.conf.5
@@ -1069,7 +1069,6 @@ Only the uncompressed versions will be installed.
 .It Va WITHOUT_MAN_UTILS
 Set to not build utilities for manual pages,
 .Xr apropos 1 ,
-.Xr catman 1 ,
 .Xr makewhatis 1 ,
 .Xr man 1 ,
 .Xr whatis 1 ,
diff --git share/man/man5/tmpfs.5 share/man/man5/tmpfs.5
index 48a6fbb50dc5..1774924dae69 100644
--- share/man/man5/tmpfs.5
+++ share/man/man5/tmpfs.5
@@ -54,7 +54,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 20, 2017
+.Dd September 8, 2017
 .Dt TMPFS 5
 .Os
 .Sh NAME
@@ -131,7 +131,9 @@ the file system size, which can be limited with the
 .Cm size
 option.
 .It Cm size
-Specifies the total file system size in bytes.
+Specifies the total file system size in bytes, unless suffixed
+with one of k, m, g, t, or p, which denote byte, kilobyte,
+megabyte, gigabyte, terabyte and petabyte respectively.
 If zero (the default) or a value larger than SIZE_MAX - PAGE_SIZE
 is given, the available amount of memory (including
 main memory and swap space) will be used.
diff --git share/man/man7/tests.7 share/man/man7/tests.7
index 1e98d5e3454a..a40cf6af001c 100644
--- share/man/man7/tests.7
+++ share/man/man7/tests.7
@@ -26,7 +26,7 @@
 .\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 .\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd March 22, 2017
+.Dd August 21, 2017
 .Dt TESTS 7
 .Os
 .Sh NAME
@@ -59,10 +59,9 @@ hierarchy.
 This manual page describes how to run the test suite and how to configure
 some of its optional features.
 .Ss Installing the test suite
-The test suite is not yet installed by default as part of
-.Fx ,
-but this is bound to change during the development of
-.Fx 11.0 .
+The test suite is installed by default as of
+.Fx
+11.0-RELEASE.
 .Pp
 If the
 .Pa /usr/tests
diff --git share/misc/committers-ports.dot share/misc/committers-ports.dot
index d0fcfec66aa4..072289a68397 100644
--- share/misc/committers-ports.dot
+++ share/misc/committers-ports.dot
@@ -43,6 +43,7 @@ node [color=lightblue2, style=filled, bgcolor=black];
 ache [label="Andrey Chernov\nache@FreeBSD.org\n1994/11/15"]
 acm [label="Jose Alonso Cardenas Marquez\nacm@FreeBSD.org\n2006/07/18"]
 adamw [label="Adam Weinberger\nadamw@FreeBSD.org\n2002/10/16"]
+adridg [label="Adriaan de Groot\nadridg@FreeBSD.org\n2017/09/08"]
 ahze [label="Michael Johnson\nahze@FreeBSD.org\n2004/10/29"]
 ak [label="Alex Kozlov\nak@FreeBSD.org\n2012/02/29"]
 ale [label="Alex Dupre\nale@FreeBSD.org\n2004/01/12"]
@@ -195,6 +196,7 @@ pclin [label="Po-Chien Lin\npclin@FreeBSD.org\n2013/02/11"]
 pgj [label="Gabor Pali\npgj@FreeBSD.org\n2009/04/12"]
 pgollucci [label="Philip M. Gollucci\npgollucci@FreeBSD.org\n2008/07/21"]
 philip [label="Philip Paeps\nphilip@FreeBSD.org\n2005/10/19"]
+pizzamig [label="Luca Pizzamiglio\npizzamig@FreeBSD.org\n2017/08/25"]
 rafan [label="Rong-En Fan\nrafan@FreeBSD.org\n2006/06/23"]
 rakuco [label="Raphael Kubo da Costa\nrakuco@FreeBSD.org\n2011/08/22"]
 rene [label="Rene Ladan\nrene@FreeBSD.org\n2010/04/11"]
@@ -214,6 +216,7 @@ scheidell [label="Michael Scheidell\nscheidell@FreeBSD.org\n2011/11/06"]
 sem [label="Sergey Matveychuk\nsem@FreeBSD.org\n2004/07/07"]
 sergei [label="Sergei Kolobov\nsergei@FreeBSD.org\n2003/10/21"]
 shaun [label="Shaun Amott\nshaun@FreeBSD.org\n2006/06/19"]
+shurd [label="Stephen Hurd\nshurd@FreeBSD.org\n2014/06/14"]
 simon [label="Simon L. Nielsen\nsimon@FreeBSD.org\n2005/01/08"]
 skreuzer [label="Steven Kreuzer\nskreuzer@FreeBSD.org\n2009/03/25"]
 sobomax[label="Maxim Sobolev\nsobomax@FreeBSD.org\n2000/05/17"]
@@ -337,6 +340,7 @@ culot -> marino
 culot -> wg
 
 db -> tj
+db -> shurd
 
 decke -> sperber
 
@@ -468,6 +472,7 @@ lifanov -> ultima
 
 lioux -> pat
 
+lme -> pizzamig
 lme -> tobik
 
 lwhsu -> yzlin
@@ -544,6 +549,8 @@ novel -> rm
 obrien -> mharo
 obrien -> gerald
 
+olivier -> pizzamig
+
 osa -> vg
 
 pat -> adamw
@@ -569,6 +576,7 @@ pi -> tz
 
 rafan -> chinsan
 
+rakuco -> adridg
 rakuco -> alonso
 rakuco -> tcberner
 
@@ -597,6 +605,7 @@ shaun -> timur
 shaun -> matthew
 
 skreuzer -> gnn
+skreuzer -> shurd
 
 sobomax -> demon
 sobomax -> glewis
@@ -635,6 +644,8 @@ tabthorpe -> rene
 tabthorpe -> zi
 tabthorpe -> gblach
 
+tcberner -> adridg
+
 thierry -> jadawin
 thierry -> riggs
 
diff --git share/misc/committers-src.dot share/misc/committers-src.dot
index 3a0fd2d7cd4a..c99731b6cf80 100644
--- share/misc/committers-src.dot
+++ share/misc/committers-src.dot
@@ -222,6 +222,7 @@ kensmith [label="Ken Smith\nkensmith@FreeBSD.org\n2004/01/23"]
 kevans [label="Kyle Evans\nkevans@FreeBSD.org\n2017/06/20"]
 kevlo [label="Kevin Lo\nkevlo@FreeBSD.org\n2006/07/23"]
 kib [label="Konstantin Belousov\nkib@FreeBSD.org\n2006/06/03"]
+kibab [label="Ilya Bakulin\nkibab@FreeBSD.org\n2017/09/02"]
 kmacy [label="Kip Macy\nkmacy@FreeBSD.org\n2005/06/01"]
 kp [label="Kristof Provost\nkp@FreeBSD.org\n2015/03/22"]
 landonf [label="Landon Fuller\nlandonf@FreeBSD.org\n2016/05/31"]
@@ -303,6 +304,7 @@ se [label="Stefan Esser\nse@FreeBSD.org\n1994/08/26"]
 sephe [label="Sepherosa Ziehau\nsephe@FreeBSD.org\n2007/03/28"]
 sepotvin [label="Stephane E. Potvin\nsepotvin@FreeBSD.org\n2007/02/15"]
 sgalabov [label="Stanislav Galabov\nsgalabov@FreeBSD.org\n2016/02/24"]
+shurd [label="Stephen Hurd\nshurd@FreeBSD.org\n2017/09/02"]
 simon [label="Simon L. Nielsen\nsimon@FreeBSD.org\n2006/03/07"]
 sjg [label="Simon J. Gerraty\nsjg@FreeBSD.org\n2012/10/23"]
 skra [label="Svatopluk Kraus\nskra@FreeBSD.org\n2015/10/28"]
@@ -524,6 +526,7 @@ imp -> furuta
 imp -> joe
 imp -> jon
 imp -> keichii
+imp -> kibab
 imp -> mb
 imp -> mr
 imp -> neel
@@ -759,6 +762,7 @@ sam -> sephe
 
 sbruno -> hiren
 sbruno -> jimharris
+sbruno -> shurd
 
 schweikh -> dds
 
diff --git share/misc/pci_vendors share/misc/pci_vendors
index 56bbc26ae5fb..83283e8b1ae7 100644
--- share/misc/pci_vendors
+++ share/misc/pci_vendors
@@ -3,8 +3,8 @@
 #
 #	List of PCI ID's
 #
-#	Version: 2017.07.27
-#	Date:    2017-07-27 03:15:02
+#	Version: 2017.09.01
+#	Date:    2017-09-01 03:15:02
 #
 #	Maintained by Albert Pool, Martin Mares, and other volunteers from
 #	the PCI ID Project at http://pci-ids.ucw.cz/.
@@ -41,7 +41,8 @@
 	0680  Ultra ATA/133 IDE RAID CONTROLLER CARD
 # Wrong ID used in subsystem ID of the TELES.S0/PCI 2.x ISDN adapter
 00a7  Teles AG (Wrong ID)
-0100  Ncipher Corp Ltd
+# nee nCipher
+0100  Thales e-Security
 0123  General Dynamics
 # 018a is not LevelOne but there is a board misprogrammed
 018a  LevelOne
@@ -327,6 +328,7 @@
 		1033 8336  SAS1068
 	0056  SAS1064ET PCI-Express Fusion-MPT SAS
 		1014 03bb  ServeRAID BR10il SAS/SATA Controller v2
+		8086 34dc  AXX4SASMOD RAID Controller
 	0057  M1064E MegaRAID SAS
 		8086 346c  Embedded Software RAID Technology II (ESTRII)
 	0058  SAS1068E PCI-Express Fusion-MPT SAS
@@ -369,7 +371,16 @@
 		1028 1f38  PERC H710 Mini (for monolithics)
 		15d9 0690  LSI MegaRAID ROMB
 		8086 3510  RMS25PB080 RAID Controller
+		8086 3511  RMS25PB040 RAID Controller
+		8086 3512  RMT3PB080 RAID Controller
 		8086 3513  RMS25CB080 RAID Controller
+		8086 3514  RMS25CB040 RAID Controller
+		8086 351c  RMS25PB080N RAID Controller
+		8086 351d  RMS25CB080N RAID Controller
+		8086 9265  RS25DB080 RAID Controller
+		8086 9268  RS25AB080 RAID Controller
+		8086 9285  RS25NB008 RAID Controller
+		8086 9288  RS25SB008 RAID Controller
 	005c  SAS1064A PCI-X Fusion-MPT SAS
 	005d  MegaRAID SAS-3 3108 [Invader]
 		1000 9361  MegaRAID SAS 9361-8i
@@ -389,6 +400,12 @@
 		17aa 1052  ThinkServer RAID 720i
 		17aa 1053  ThinkServer RAID 720ix
 		1d49 0600  ThinkSystem RAID 730-8i 1GB Cache PCIe 12Gb Adapter
+		8086 351e  RMS3CC080 RAID Controller
+		8086 351f  RMS3CC040 RAID Controller
+		8086 9360  RS3DC080 RAID Controller
+		8086 9362  RS3DC040 RAID Controller
+		8086 9380  RS3SC008 RAID Controller
+		8086 9381  RS3MC044 RAID Controller
 	005e  SAS1066 PCI-X Fusion-MPT SAS
 	005f  MegaRAID SAS-3 3008 [Fury]
 		1028 1f44  PERC H330 Adapter
@@ -444,6 +461,7 @@
 		1028 1f20  PERC H200 Embedded
 		1028 1f22  Internal Tape Adapter
 		8086 350f  RMS2LL040 RAID Controller
+		8086 3700  SSD 910 Series
 	0073  MegaRAID SAS 2008 [Falcon]
 		1000 9240  MegaRAID SAS 9240-8i
 		1000 9241  MegaRAID SAS 9240-4i
@@ -499,12 +517,18 @@
 		1043 8480  PIKE-2108 16PD
 		1734 1176  RAID Ctrl SAS 6G 5/6 512MB (D2616)
 		1734 1177  RAID Ctrl SAS 6G 0/1 (D2607)
-		8086 9256  MegaRAID SAS 9260DE-8i
+		8086 350b  RMS2MH080 RAID Controller
+		8086 9256  MegaRAID SAS 9260DE-8i RS2BL080DE
 		8086 9260  RAID Controller RS2BL040
 		8086 9261  RAID Controller RS2BL080
-		8086 9264  Warm Beach (Caster Lite)
+		8086 9264  RAID Controller RT3WB080 Warm Beach (Caster Lite)
 		8086 9267  RAID Controller RS2VB040
 		8086 9268  RAID Controller RS2VB080
+		8086 9275  RAID Controller RS2PI008DE
+		8086 9276  RAID Controller RS2WG160
+		8086 9280  RAID Controller RS2PI008
+		8086 9282  RAID Controller RS2MB044
+		8086 9290  RAID Controller RS2SG244
 	007c  MegaRAID SAS 1078DE
 		1014 0395  ServeRAID-AR10is SAS/SATA Controller
 	007e  SSS6200 PCI-Express Flash SSD
@@ -535,6 +559,14 @@
 		1000 3040  9207-8e SAS2.1 HBA
 		1000 3050  SAS9217-8i
 		1590 0044  H220i
+		8086 3000  RS25GB008 RAID Controller
+		8086 3060  RS25FB044 RAID Controller
+		8086 3516  RMS25JB080 RAID Controller
+		8086 3517  RMS25JB040 RAID Controller
+		8086 3518  RMS25KB080 RAID Controller
+		8086 3519  RMS25KB040 RAID Controller
+		8086 351a  RMS25LB040 RAID Controller
+		8086 351b  RMS25LB080 RAID Controller
 	008f  53c875J
 		1092 8000  FirePort 40 SCSI Controller
 		1092 8760  FirePort 40 Dual SCSI Host Adapter
@@ -2267,6 +2299,7 @@
 		1462 3050  R9 270 Gaming OC
 		148c 2016  Trinidad PRO [Radeon R9 370 OEM]
 		1682 2015  Trinidad PRO [Radeon R7 370]
+		174b 2015  NITRO Radeon R7 370
 		174b 2016  Trinidad PRO [Radeon R9 370 OEM]
 		1787 2016  Trinidad PRO [Radeon R9 370 OEM]
 	6816  Pitcairn
@@ -2437,7 +2470,7 @@
 	6842  Thames LE [Radeon HD 7000M Series]
 	6843  Thames [Radeon HD 7670M]
 	6863  Vega 10 XTX [Radeon Vega Frontier Edition]
-	687f  Vega [Radeon RX Vega]
+	687f  Vega 10 XT [Radeon RX Vega 64]
 	6888  Cypress XT [FirePro V8800]
 	6889  Cypress PRO [FirePro V7800]
 		1002 0301  FirePro V7800P
@@ -3427,6 +3460,7 @@
 	aad8  Tonga HDMI Audio [Radeon R9 285/380]
 		174b aad8  Radeon R9 285/380 HDMI Audio
 	aae8  Fiji HDMI/DP Audio [Radeon R9 Nano / FURY/FURY X]
+	aaf0  Ellesmere [Radeon RX 580]
 	ac00  Theater 600 Pro
 	ac02  TV Wonder HD 600 PCIe
 	ac12  Theater HD T507 (DVB-T) TV tuner/capture device
@@ -5964,7 +5998,10 @@
 	0074  U4 HT Bridge
 # should be 14e4:1645
 	1645  Broadcom NetXtreme BCM5701 Gigabit Ethernet
-	2001  PCI Express SSD
+	2001  S1X NVMe Controller
+	2002  S3ELab NVMe Controller
+	2003  S3X NVMe Controller
+	2005  ANS2 NVMe Controller
 106c  Hynix Semiconductor
 	8139  8139c 100BaseTX Ethernet Controller
 	8801  Dual Pentium ISA/PCI Motherboard
@@ -6034,10 +6071,10 @@
 		1077 02a7  QL45212-DE 25GbE Adapter
 		1077 e4f6  FastLinQ QL45211H 25GbE Adapter
 		1077 e4f7  FastLinQ QL45212H 25GbE Adapter
-	165c  FastLinQ QL45000 Series 40GbE Controller (FCoE)
+	165c  FastLinQ QL45000 Series 10/25/40/50GbE Controller (FCoE)
 		1077 e4f1  FastLinQ QL45462H 40GbE FCoE Adapter
 		1077 e4f2  FastLinQ QL45461H 40GbE FCoE Adapter
-	165e  FastLinQ QL45000 Series 40GbE Controller (iSCSI)
+	165e  FastLinQ QL45000 Series 10/25/40/50GbE Controller (iSCSI)
 		1077 e4f1  FastLinQ QL45462H 40GbE iSCSI Adapter
 		1077 e4f2  FastLinQ QL45461H 40GbE iSCSI Adapter
 	1664  FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF)
@@ -7612,6 +7649,7 @@
 		1885 0701  Tsunami FPGA PMC with Altera Stratix S30
 	9733  PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch
 		1d49 0001  ThinkSystem 1610-4P NVMe Switch Adapter
+		1d49 0002  ThinkSystem 810-4P NVMe Switch Adapter
 	9749  PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch
 	a100  Blackmagic Design DeckLink
 	bb04  B&B 3PCIOSD1A Isolated PCI Serial
@@ -10753,6 +10791,7 @@
 	1b82  GP104
 	1b83  GP104
 	1b84  GP104 [GeForce GTX 1060 3GB]
+	1b87  GP104 [P104-100]
 	1ba0  GP104M [GeForce GTX 1080 Mobile]
 	1ba1  GP104M [GeForce GTX 1070 Mobile]
 	1bb0  GP104GL [Quadro P5000]
@@ -10768,6 +10807,8 @@
 	1c01  GP106
 	1c02  GP106 [GeForce GTX 1060 3GB]
 	1c03  GP106 [GeForce GTX 1060 6GB]
+	1c07  GP106 [P106-100]
+	1c09  GP106 [P106-090]
 	1c20  GP106M [GeForce GTX 1060 Mobile]
 	1c30  GP106GL [Quadro P2000]
 	1c35  GP106
@@ -10788,7 +10829,7 @@
 	1cb2  GP107GL [Quadro P600]
 	1cb3  GP107GL [Quadro P400]
 	1d01  GP108 [GeForce GT 1030]
-	1d10  GP108 [GeForce MX150]
+	1d10  GP108M [GeForce MX150]
 	1d81  GV100
 10df  Emulex Corporation
 	0720  OneConnect NIC (Skyhawk)
@@ -10962,6 +11003,7 @@
 		1025 0813  Aspire R7-571
 		103c 194e  ProBook 455 G1 Notebook
 		103c 1985  Pavilion 17-e163sg Notebook PC
+		17aa 3832  Yoga 520
 	522a  RTS522A PCI Express Card Reader
 	5249  RTS5249 PCI Express Card Reader
 		103c 1909  ZBook 15
@@ -13048,6 +13090,7 @@
 1179  Toshiba America Info Systems
 	0102  Extended IDE Controller
 	0103  EX-IDE Type-B
+	010f  NVMe Controller
 	0404  DVD Decoder card
 	0406  Tecra Video Capture device
 	0407  DVD Decoder card (Version 2)
@@ -16574,6 +16617,7 @@
 	a822  NVMe SSD Controller 172Xa
 		1014 0621  PCIe3 1.6TB NVMe Flash Adapter II x8
 		1014 0622  PCIe3 3.2TB NVMe Flash Adapter II x8
+		1014 0629  PCIe3 6.4TB NVMe Flash Adapter II x8
 		1028 1fd9  Express Flash PM1725a 800GB SFF
 		1028 1fda  Express Flash PM1725a 1.6TB SFF
 		1028 1fdb  Express Flash PM1725a 3.2TB SFF
@@ -16988,6 +17032,7 @@
 	1655  NetXtreme BCM5717 Gigabit Ethernet PCIe
 	1656  NetXtreme BCM5718 Gigabit Ethernet PCIe
 	1657  NetXtreme BCM5719 Gigabit Ethernet PCIe
+		1014 0420  FC 5260/5899 4-port 1 GbE Adapter for Power
 		103c 169d  Ethernet 1Gb 4-port 331FLR Adapter
 		103c 22be  Ethernet 1Gb 4-port 331i Adapter
 		103c 3383  Ethernet 1Gb 4-port 331T Adapter
@@ -18253,6 +18298,7 @@
 	1012  MT27600 Family [Connect-IB Virtual Function]
 	1013  MT27700 Family [ConnectX-4]
 		15b3 0006  MCX416A-BCAT, ConnectX-4 EN, 40/56GbE 2P, PCIe3.0 x16
+		15b3 0008  ConnectX-4 Stand-up dual-port 100GbE MCX416A-CCAT
 		15b3 0033  ConnectX-4 VPI IB EDR/100 GbE Single Port QSFP28 Adapter
 		15b3 0034  ConnectX-4 VPI IB EDR/100 GbE Dual Port QSFP28 Adapter
 		15b3 0050  ConnectX-4 100 GbE Dual Port QSFP28 Adapter
@@ -18349,6 +18395,7 @@
 	0014  RamSan Flash SSD
 	0015  ZBox
 15b7  Sandisk Corp
+	2001  Skyhawk Series NVME SSD
 15b8  ADDI-DATA GmbH
 	1001  APCI1516 SP controller (16 digi outputs)
 	1003  APCI1032 SP controller (32 digi inputs w/ opto coupler)
@@ -19099,6 +19146,10 @@
 		177d 0005  CN2360 [LiquidIO II] 2-port 10GbE Intelligent adapter
 		177d 0006  CN2360 [LiquidIO II] 2-port 25GbE Intelligent adapter
 		177d 0007  CN2350 [LiquidIO II] 2-port 25GbE Intelligent adapter
+		177d 0008  CN2350 [LiquidIO II] 2-port 10GbE SFP+ Intelligent adapter
+		177d 0009  CN2360 [LiquidIO II] 2-port 10GbE SFP+ Intelligent adapter
+		177d 000a  CN2350 [LiquidIO II] 2-port 10GBASE-T Intelligent adapter
+		177d 000b  CN2360 [LiquidIO II] 2-port 10GBASE-T Intelligent adapter
 	9703  CN23XX [LiquidIO II] NVMe Controller
 	9712  CN23XX [LiquidIO II] SRIOV Virtual Function
 		177d 0003  CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function
@@ -19360,6 +19411,7 @@
 	1a07  KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL]
 	1a08  KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL_QSFP]
 	1a09  Arria10 PCIe Darklite Design [DNPCIe_80G_A10_LL]
+	1a0a  VirtexUS PCIe Darklite Design [DNVUF2_HPC_PCIe]
 17e4  Sectra AB
 	0001  KK671 Cardbus encryption board
 	0002  KK672 Cardbus encryption board
@@ -19370,8 +19422,8 @@
 	0021  EN2210 [c.Link] MoCA Network Controller (Coax)
 	0025  EN2510 [c.Link] MoCA Network Controller (Coax, PCIe interface)
 	0027  EN2710 [c.Link] MoCA 2.0 Network Controller (Coax, PCIe interface)
-	3706  MoCA 2.0 Network Controller (Coax, PCIe interface)
-	3711  MoCA 2.5 Network Controller (Coax, PCIe interface)
+	3700  MoCA 2.0 Network Controller (Coax, PCIe interface)
+	3710  MoCA 2.5 Network Controller (Coax, PCIe interface)
 17ee  Connect Components Ltd
 17f2  Albatron Corp.
 17f3  RDC Semiconductor, Inc.
@@ -20570,6 +20622,7 @@
 	0003  Ultrastar SN100 Series NVMe SSD
 		1014 04f5  PCIe3 1.6TB NVMe Flash Adapter
 		1014 04f6  PCIe3 3.2TB NVMe Flash Adapter
+	0023  Ultrastar SN200 Series NVMe SSD
 1c5f  Beijing Memblaze Technology Co. Ltd.
 	0540  PBlaze4 NVMe SSD
 # http://www.nicevt.ru/ (in Russian)
@@ -20608,6 +20661,65 @@
 	0007  ExaNIC X40
 1cf7  Subspace Dynamics
 1d00  Pure Storage
+1d0f  Amazon.com, Inc.
+	cd01  NVMe SSD Controller
+	ec20  Elastic Network Adapter (ENA)
+1d17  Zhaoxin
+	070f  ZX-100 PCI Express Root Port
+	0710  ZX-100/ZX-200 PCI Express Root Port
+	0711  ZX-100/ZX-200 PCI Express Root Port
+	0712  ZX-100/ZX-200 PCI Express Root Port
+	0713  ZX-100/ZX-200 PCI Express Root Port
+	0714  ZX-100/ZX-200 PCI Express Root Port
+	0715  ZX-100/ZX-200 PCI Express Root Port
+	0716  ZX-D PCI Express Root Port
+	0717  ZX-D PCI Express Root Port
+	0718  ZX-D PCI Express Root Port
+	0719  ZX-D PCI Express Root Port
+	071a  ZX-D PCI Express Root Port
+	071b  ZX-D PCI Express Root Port
+	071c  ZX-D PCI Express Root Port
+	071d  ZX-D PCI Express Root Port
+	071e  ZX-D PCI Express Root Port
+	071f  ZX-200 Upstream Port of PCI Express Switch
+	0720  ZX-200 PCIE RC6 controller
+	0721  ZX-200 Downstream Port of PCI Express Switch
+	0722  ZX-200 PCIE P2C bridge
+	1000  ZX-D Standard Host Bridge
+	1001  ZX-D Miscellaneous Bus
+	3001  ZX-100 Standard Host Bridge
+	300a  ZX-100 Miscellaneous Bus
+	3038  ZX-100/ZX-200 Standard Universal PCI to USB Host Controller
+	3104  ZX-100/ZX-200 Standard Enhanced PCI to USB Host Controller
+	31b0  ZX-100/ZX-D Standard Host Bridge
+	31b1  ZX-100/ZX-D Standard Host Bridge
+	31b2  ZX-100/ZX-D DRAM Controller
+	31b3  ZX-100/ZX-D Power Management Controller
+	31b4  ZX-100/ZX-D I/O APIC
+	31b5  ZX-100/ZX-D Scratch Device
+	31b7  ZX-100/ZX-D Standard Host Bridge
+	31b8  ZX-100/ZX-D PCI to PCI Bridge
+	3288  ZX-100/ZX-D High Definition Audio Controller
+	345b  ZX-100/ZX-D Miscellaneous Bus
+	3a02  ZX-100 C-320 GPU
+	3a03  ZX-D C-860 GPU
+	9002  ZX-100/ZX-200 EIDE Controller
+	9003  ZX-100 EIDE Controller
+	9045  ZX-100/ZX-D RAID Accelerator
+	9046  ZX-D RAID Accelerator
+	9083  ZX-100/ZX-200 StorX AHCI Controller
+	9084  ZX-100 StorX AHCI Controller
+	9100  ZX-200 Cross bus
+	9101  ZX-200 Traffic Controller
+	9141  ZX-100 High Definition Audio Controller
+	9142  ZX-D High Definition Audio Controller
+	9180  ZX-200 Networking Gigabit Ethernet Adapter
+	9202  ZX-100 USB eXtensible Host Controller
+	9203  ZX-200 USB eXtensible Host Controller
+	9286  ZX-D eMMC Host Controller
+	9300  ZX-D eSPI Host Controller
+	95d0  ZX-100 Universal SD Host Controller
+	f410  ZX-100/ZX-D PCI Com Port
 1d18  RME
 	0001  Fireface UFX+
 1d1d  CNEX Labs
@@ -20630,6 +20742,8 @@
 1d62  Nebbiolo Technologies
 1d65  Imagine Communications Corp.
 	04de  Taurus/McKinley
+1d6a  Aquantia Corp.
+	d107  AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion]
 1d6c  Atomic Rules LLC
 	1001  A5PL-E1
 	1002  A5PL-E7
@@ -21305,6 +21419,8 @@
 	6178  DVB-S2 4 Tuner PCIe Card
 		544d 6904  TBS6904 DVB-S2 Quad Tuner PCIe Card
 		544d 6905  TBS6905 DVB-S2 Quad Tuner PCIe Card
+		6205 0001  TBS6205 DVB-T2/T/C Quad TV Tuner PCIe Card
+		6209 0001  TBS6209 DVB-T2/C2/T/C/ISDB-T OctaTV Tuner
 5452  SCANLAB AG
 	3443  RTC4
 5455  Technische University Berlin
@@ -21336,6 +21452,8 @@
 	c147  Virtualized Graphics Device
 5854  GoTView
 5ace  Beholder International Ltd.
+6205  TBS Technologies (wrong ID)
+6209  TBS Technologies (wrong ID)
 631c  SmartInfra Ltd
 	1652  PXI-1652 Signal Generator
 	2504  PXI-2504 Signal Interrogator
@@ -23211,6 +23329,7 @@
 		17aa 0000  ThinkServer X710 AnyFabric for 10GbE SFP+
 		17aa 4001  ThinkServer X710-4 AnyFabric for 10GbE SFP+
 		17aa 4002  ThinkServer X710-2 AnyFabric for 10GbE SFP+
+		19e5 d11c  Ethernet 2-port X710 10Gb SFP+ Adapter SP330
 		8086 0000  Ethernet Converged Network Adapter X710
 		8086 0001  Ethernet Converged Network Adapter X710-4
 		8086 0002  Ethernet Converged Network Adapter X710-4
@@ -24639,8 +24758,11 @@
 		1590 00e8  100Gb 1-port OP101 QSFP28 x16 PCIe Gen3 with Intel Omni-Path Adapter
 		1590 021c  Apollo 100Gb 1-port Intel Omni-Path Architecture 860z Mezzanine FIO Adapter
 		15d9 0934  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, SIOM Module
+		15d9 099b  Omni-path HFI Mezz AOC, 1 Port, PCIe x16.
 		1cb8 0001  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600 QSFP28
 		1cb8 0002  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC6600 Fixed Port
+		1cb8 0003  Omni-Path HFI Adapter 100 Series, 2 Port, 2 PCIe x16, Earth Simulation QSFP28
+		1cb8 0004  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600E QSFP28
 		8086 2628  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16
 		8086 2629  Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x8
 		8086 262a  Omni-Path HFI Adapter 100 Series, 2 Ports, Split PCIe x16
@@ -27363,6 +27485,8 @@
 	5912  HD Graphics 630
 	5916  HD Graphics 620
 		17aa 224f  ThinkPad X1 Carbon 5th Gen
+	591d  HD Graphics P630
+	591f  Intel Kaby Lake Host Bridge
 	5a84  Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics Controller
 	5a88  Celeron N3350/Pentium N4200/Atom E3900 Series Imaging Unit
 	5a98  Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster
@@ -28049,6 +28173,7 @@
 	9d17  Sunrise Point-LP PCI Express Root Port #8
 	9d18  Sunrise Point-LP PCI Express Root Port #9
 		17aa 382a  B51-80 Laptop
+	9d19  Sunrise Point-LP PCI Express Root Port #10
 	9d21  Sunrise Point-LP PMC
 		1028 06f3  Latitude 3570
 		17aa 224f  ThinkPad X1 Carbon 5th Gen
@@ -28069,6 +28194,7 @@
 		1028 06f3  Latitude 3570
 		17aa 224f  ThinkPad X1 Carbon 5th Gen
 		17aa 382a  B51-80 Laptop
+	9d35  Sunrise Point-LP Integrated Sensor Hub
 	9d3a  Sunrise Point-LP CSME HECI #1
 		1028 06f3  Latitude 3570
 		17aa 224f  ThinkPad X1 Carbon 5th Gen
@@ -28077,6 +28203,7 @@
 		17aa 382a  B51-80 Laptop
 	9d48  Sunrise Point-LP LPC Controller
 		1028 06f3  Latitude 3570
+	9d56  Sunrise Point-LP LPC Controller
 	9d58  Sunrise Point-LP LPC Controller
 		17aa 224f  ThinkPad X1 Carbon 5th Gen
 	9d60  Sunrise Point-LP Serial IO I2C Controller #0
@@ -28091,6 +28218,7 @@
 	9d70  Sunrise Point-LP HD Audio
 		1028 06f3  Latitude 3570
 		17aa 382a  B51-80 Laptop
+	9d71  Sunrise Point-LP HD Audio
 	a000  Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge
 		1458 5000  GA-D525TUD
 		8086 4f4d  DeskTop Board D510MO
@@ -28190,6 +28318,7 @@
 	a169  Sunrise Point-H PCI Root Port #19
 	a16a  Sunrise Point-H PCI Root Port #20
 	a170  Sunrise Point-H HD Audio
+	a171  CM238 HD Audio Controller
 	a182  Lewisburg SATA Controller [AHCI mode]
 	a186  Lewisburg SATA Controller [RAID mode]
 	a190  Lewisburg PCI Express Root Port #1
diff --git share/mk/bsd.lib.mk share/mk/bsd.lib.mk
index 3c6fb3812a00..db66b7f189b1 100644
--- share/mk/bsd.lib.mk
+++ share/mk/bsd.lib.mk
@@ -69,8 +69,8 @@ TAG_ARGS=	-T ${TAGS:[*]:S/ /,/g}
 
 .if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \
     empty(DEBUG_FLAGS:M-gdwarf*)
-SHARED_CFLAGS+= -g
-SHARED_CXXFLAGS+= -g
+CFLAGS+= ${DEBUG_FILES_CFLAGS}
+CXXFLAGS+= ${DEBUG_FILES_CFLAGS}
 CTFFLAGS+= -g
 .endif
 
@@ -327,9 +327,9 @@ _EXTRADEPEND:
 SHLINSTALLFLAGS+= -fschg
 .endif
 .endif
-# Install libraries with -S to avoid linker races with WORLDTMP and risk
-# of modifying in-use libraries when installing to a running system.
-# It is safe to avoid this for NO_ROOT builds that are only creating an image.
+# Install libraries with -S to avoid risk of modifying in-use libraries when
+# installing to a running system.  It is safe to avoid this for NO_ROOT builds
+# that are only creating an image.
 .if !defined(NO_SAFE_LIBINSTALL) && !defined(NO_ROOT)
 SHLINSTALLFLAGS+= -S
 .endif
diff --git share/mk/bsd.prog.mk share/mk/bsd.prog.mk
index b9a6444610db..b66424b1d193 100644
--- share/mk/bsd.prog.mk
+++ share/mk/bsd.prog.mk
@@ -39,7 +39,7 @@ CFLAGS+=${CRUNCH_CFLAGS}
 .else
 .if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \
     empty(DEBUG_FLAGS:M-gdwarf-*)
-CFLAGS+= -g
+CFLAGS+= ${DEBUG_FILES_CFLAGS}
 CTFFLAGS+= -g
 .endif
 .endif
diff --git share/mk/bsd.sys.mk share/mk/bsd.sys.mk
index 2eaf973618ed..dbda6fee087f 100644
--- share/mk/bsd.sys.mk
+++ share/mk/bsd.sys.mk
@@ -212,6 +212,10 @@ SSP_CFLAGS?=	-fstack-protector
 CFLAGS+=	${SSP_CFLAGS}
 .endif # SSP && !ARM && !MIPS
 
+# Additional flags passed in CFLAGS and CXXFLAGS when MK_DEBUG_FILES is
+# enabled.
+DEBUG_FILES_CFLAGS?= -g
+
 # Allow user-specified additional warning flags, plus compiler and file
 # specific flag overrides, unless we've overriden this...
 .if ${MK_WARNS} != "no"
diff --git sys/amd64/amd64/cpu_switch.S sys/amd64/amd64/cpu_switch.S
index 86198ab1a8c2..a8217f31aabd 100644
--- sys/amd64/amd64/cpu_switch.S
+++ sys/amd64/amd64/cpu_switch.S
@@ -87,7 +87,6 @@ END(cpu_throw)
 ENTRY(cpu_switch)
 	/* Switch to new thread.  First, save context. */
 	movq	TD_PCB(%rdi),%r8
-	orl	$PCB_FULL_IRET,PCB_FLAGS(%r8)
 
 	movq	(%rsp),%rax			/* Hardware registers */
 	movq	%r15,PCB_R15(%r8)
@@ -99,6 +98,30 @@ ENTRY(cpu_switch)
 	movq	%rbx,PCB_RBX(%r8)
 	movq	%rax,PCB_RIP(%r8)
 
+	testl	$PCB_FULL_IRET,PCB_FLAGS(%r8)
+	jnz	2f
+	orl	$PCB_FULL_IRET,PCB_FLAGS(%r8)
+	testl	$TDP_KTHREAD,TD_PFLAGS(%rdi)
+	jnz	2f
+	testb	$CPUID_STDEXT_FSGSBASE,cpu_stdext_feature(%rip)
+	jz	2f
+	movl	%fs,%eax
+	cmpl	$KUF32SEL,%eax
+	jne	1f
+	rdfsbase %rax
+	movq	%rax,PCB_FSBASE(%r8)
+1:	movl	%gs,%eax
+	cmpl	$KUG32SEL,%eax
+	jne	2f
+	movq	%rdx,%r12
+	movl	$MSR_KGSBASE,%ecx		/* Read user gs base */
+	rdmsr
+	shlq	$32,%rdx
+	orq	%rdx,%rax
+	movq	%rax,PCB_GSBASE(%r8)
+	movq	%r12,%rdx
+
+2:
 	testl	$PCB_DBREGS,PCB_FLAGS(%r8)
 	jnz	store_dr			/* static predict not taken */
 done_store_dr:
diff --git sys/amd64/amd64/exception.S sys/amd64/amd64/exception.S
index e947bcba6c6c..d3c11082958a 100644
--- sys/amd64/amd64/exception.S
+++ sys/amd64/amd64/exception.S
@@ -187,12 +187,13 @@ alltraps_testi:
 	jz	alltraps_pushregs_no_rdi
 	sti
 alltraps_pushregs_no_rdi:
-	movq	%rsi,TF_RSI(%rsp)
 	movq	%rdx,TF_RDX(%rsp)
+	movq	%rax,TF_RAX(%rsp)
+alltraps_pushregs_no_rax:
+	movq	%rsi,TF_RSI(%rsp)
 	movq	%rcx,TF_RCX(%rsp)
 	movq	%r8,TF_R8(%rsp)
 	movq	%r9,TF_R9(%rsp)
-	movq	%rax,TF_RAX(%rsp)
 	movq	%rbx,TF_RBX(%rsp)
 	movq	%rbp,TF_RBP(%rsp)
 	movq	%r10,TF_R10(%rsp)
@@ -326,22 +327,44 @@ IDTVEC(prot)
 prot_addrf:
 	movq	$0,TF_ADDR(%rsp)
 	movq	%rdi,TF_RDI(%rsp)	/* free up a GP register */
+	movq	%rax,TF_RAX(%rsp)
+	movq	%rdx,TF_RDX(%rsp)
+	movw	%fs,TF_FS(%rsp)
+	movw	%gs,TF_GS(%rsp)
 	leaq	doreti_iret(%rip),%rdi
 	cmpq	%rdi,TF_RIP(%rsp)
-	je	1f			/* kernel but with user gsbase!! */
+	je	5f			/* kernel but with user gsbase!! */
 	testb	$SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */
-	jz	2f			/* already running with kernel GS.base */
-1:	swapgs
-2:	movq	PCPU(CURPCB),%rdi
-	orl	$PCB_FULL_IRET,PCB_FLAGS(%rdi)	/* always full iret from GPF */
-	movw	%fs,TF_FS(%rsp)
-	movw	%gs,TF_GS(%rsp)
+	jz	6f			/* already running with kernel GS.base */
+	testb	$CPUID_STDEXT_FSGSBASE,cpu_stdext_feature(%rip)
+	jz	2f
+	cmpw	$KUF32SEL,TF_FS(%rsp)
+	jne	1f
+	rdfsbase %rax
+1:	cmpw	$KUG32SEL,TF_GS(%rsp)
+	jne	2f
+	rdgsbase %rdx
+2:	swapgs
+	movq	PCPU(CURPCB),%rdi
+	testb	$CPUID_STDEXT_FSGSBASE,cpu_stdext_feature(%rip)
+	jz	4f
+	cmpw	$KUF32SEL,TF_FS(%rsp)
+	jne	3f
+	movq	%rax,PCB_FSBASE(%rdi)
+3:	cmpw	$KUG32SEL,TF_GS(%rsp)
+	jne	4f
+	movq	%rdx,PCB_GSBASE(%rdi)
+4:	orl	$PCB_FULL_IRET,PCB_FLAGS(%rdi)	/* always full iret from GPF */
 	movw	%es,TF_ES(%rsp)
 	movw	%ds,TF_DS(%rsp)
 	testl	$PSL_I,TF_RFLAGS(%rsp)
-	jz	alltraps_pushregs_no_rdi
+	jz	alltraps_pushregs_no_rax
 	sti
-	jmp	alltraps_pushregs_no_rdi
+	jmp	alltraps_pushregs_no_rax
+
+5:	swapgs
+6:	movq	PCPU(CURPCB),%rdi
+	jmp	4b
 
 /*
  * Fast syscall entry point.  We enter here with just our new %cs/%ss set,
@@ -349,8 +372,8 @@ prot_addrf:
  * pointer.  We have to juggle a few things around to find our stack etc.
  * swapgs gives us access to our PCPU space only.
  *
- * We do not support invoking this from a custom %cs or %ss (e.g. using
- * entries from an LDT).
+ * We do not support invoking this from a custom segment registers,
+ * esp. %cs, %ss, %fs, %gs, e.g. using entries from an LDT.
  */
 IDTVEC(fast_syscall)
 	swapgs
@@ -503,6 +526,23 @@ IDTVEC(nmi)
 nmi_fromuserspace:
 	incl	%ebx
 	swapgs
+	testb	$CPUID_STDEXT_FSGSBASE,cpu_stdext_feature(%rip)
+	jz	2f
+	movq	PCPU(CURPCB),%rdi
+	testq	%rdi,%rdi
+	jz	2f
+	cmpw	$KUF32SEL,TF_FS(%rsp)
+	jne	1f
+	rdfsbase %rax
+	movq	%rax,PCB_FSBASE(%rdi)
+1:	cmpw	$KUG32SEL,TF_GS(%rsp)
+	jne	2f
+	movl	$MSR_KGSBASE,%ecx
+	rdmsr
+	shlq	$32,%rdx
+	orq	%rdx,%rax
+	movq	%rax,PCB_GSBASE(%rdi)
+2:
 /* Note: this label is also used by ddb and gdb: */
 nmi_calltrap:
 	FAKE_MCOUNT(TF_RIP(%rsp))
@@ -705,6 +745,7 @@ doreti_exit:
 	jz	ld_regs
 	testl	$PCB_FULL_IRET,PCB_FLAGS(%r8)
 	jz	ld_regs
+	andl	$~PCB_FULL_IRET,PCB_FLAGS(%r8)
 	testl	$TF_HASSEGS,TF_FLAGS(%rsp)
 	je	set_segs
 
diff --git sys/amd64/amd64/machdep.c sys/amd64/amd64/machdep.c
index a7f1c90f421a..9cfcc6fe2057 100644
--- sys/amd64/amd64/machdep.c
+++ sys/amd64/amd64/machdep.c
@@ -372,6 +372,7 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
 	sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */
 	get_fpcontext(td, &sf.sf_uc.uc_mcontext, xfpusave, xfpusave_len);
 	fpstate_drop(td);
+	update_pcb_bases(pcb);
 	sf.sf_uc.uc_mcontext.mc_fsbase = pcb->pcb_fsbase;
 	sf.sf_uc.uc_mcontext.mc_gsbase = pcb->pcb_gsbase;
 	bzero(sf.sf_uc.uc_mcontext.mc_spare,
@@ -442,7 +443,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
 	regs->tf_fs = _ufssel;
 	regs->tf_gs = _ugssel;
 	regs->tf_flags = TF_HASSEGS;
-	set_pcb_flags(pcb, PCB_FULL_IRET);
 	PROC_LOCK(p);
 	mtx_lock(&psp->ps_mtx);
 }
@@ -548,6 +548,7 @@ sys_sigreturn(td, uap)
 		return (ret);
 	}
 	bcopy(&ucp->uc_mcontext.mc_rdi, regs, sizeof(*regs));
+	update_pcb_bases(pcb);
 	pcb->pcb_fsbase = ucp->uc_mcontext.mc_fsbase;
 	pcb->pcb_gsbase = ucp->uc_mcontext.mc_gsbase;
 
@@ -559,7 +560,6 @@ sys_sigreturn(td, uap)
 #endif
 
 	kern_sigprocmask(td, SIG_SETMASK, &ucp->uc_sigmask, NULL, 0);
-	set_pcb_flags(pcb, PCB_FULL_IRET);
 	return (EJUSTRETURN);
 }
 
@@ -587,11 +587,11 @@ exec_setregs(struct thread *td, struct image_params *imgp, u_long stack)
 	else
 		mtx_unlock(&dt_lock);
 	
+	update_pcb_bases(pcb);
 	pcb->pcb_fsbase = 0;
 	pcb->pcb_gsbase = 0;
 	clear_pcb_flags(pcb, PCB_32BIT);
 	pcb->pcb_initial_fpucw = __INITIAL_FPUCW__;
-	set_pcb_flags(pcb, PCB_FULL_IRET);
 
 	bzero((char *)regs, sizeof(struct trapframe));
 	regs->tf_rip = imgp->entry_addr;
@@ -2135,6 +2135,7 @@ get_mcontext(struct thread *td, mcontext_t *mcp, int flags)
 	mcp->mc_flags = tp->tf_flags;
 	mcp->mc_len = sizeof(*mcp);
 	get_fpcontext(td, mcp, NULL, 0);
+	update_pcb_bases(pcb);
 	mcp->mc_fsbase = pcb->pcb_fsbase;
 	mcp->mc_gsbase = pcb->pcb_gsbase;
 	mcp->mc_xfpustate = 0;
@@ -2205,11 +2206,11 @@ set_mcontext(struct thread *td, mcontext_t *mcp)
 		tp->tf_fs = mcp->mc_fs;
 		tp->tf_gs = mcp->mc_gs;
 	}
+	set_pcb_flags(pcb, PCB_FULL_IRET);
 	if (mcp->mc_flags & _MC_HASBASES) {
 		pcb->pcb_fsbase = mcp->mc_fsbase;
 		pcb->pcb_gsbase = mcp->mc_gsbase;
 	}
-	set_pcb_flags(pcb, PCB_FULL_IRET);
 	return (0);
 }
 
@@ -2480,6 +2481,71 @@ user_dbreg_trap(void)
         return 0;
 }
 
+/*
+ * The pcb_flags is only modified by current thread, or by other threads
+ * when current thread is stopped.  However, current thread may change it
+ * from the interrupt context in cpu_switch(), or in the trap handler.
+ * When we read-modify-write pcb_flags from C sources, compiler may generate
+ * code that is not atomic regarding the interrupt handler.  If a trap or
+ * interrupt happens and any flag is modified from the handler, it can be
+ * clobbered with the cached value later.  Therefore, we implement setting
+ * and clearing flags with single-instruction functions, which do not race
+ * with possible modification of the flags from the trap or interrupt context,
+ * because traps and interrupts are executed only on instruction boundary.
+ */
+void
+set_pcb_flags_raw(struct pcb *pcb, const u_int flags)
+{
+
+	__asm __volatile("orl %1,%0"
+	    : "=m" (pcb->pcb_flags) : "ir" (flags), "m" (pcb->pcb_flags)
+	    : "cc", "memory");
+
+}
+
+/*
+ * The support for RDFSBASE, WRFSBASE and similar instructions for %gs
+ * base requires that kernel saves MSR_FSBASE and MSR_{K,}GSBASE into
+ * pcb if user space modified the bases.  We must save on the context
+ * switch or if the return to usermode happens through the doreti.
+ *
+ * Tracking of both events is performed by the pcb flag PCB_FULL_IRET,
+ * which have a consequence that the base MSRs must be saved each time
+ * the PCB_FULL_IRET flag is set.  We disable interrupts to sync with
+ * context switches.
+ */
+void
+set_pcb_flags(struct pcb *pcb, const u_int flags)
+{
+	register_t r;
+
+	if (curpcb == pcb &&
+	    (flags & PCB_FULL_IRET) != 0 &&
+	    (pcb->pcb_flags & PCB_FULL_IRET) == 0 &&
+	    (cpu_stdext_feature & CPUID_STDEXT_FSGSBASE) != 0) {
+		r = intr_disable();
+		if ((pcb->pcb_flags & PCB_FULL_IRET) == 0) {
+			if (rfs() == _ufssel)
+				pcb->pcb_fsbase = rdfsbase();
+			if (rgs() == _ugssel)
+				pcb->pcb_gsbase = rdmsr(MSR_KGSBASE);
+		}
+		set_pcb_flags_raw(pcb, flags);
+		intr_restore(r);
+	} else {
+		set_pcb_flags_raw(pcb, flags);
+	}
+}
+
+void
+clear_pcb_flags(struct pcb *pcb, const u_int flags)
+{
+
+	__asm __volatile("andl %1,%0"
+	    : "=m" (pcb->pcb_flags) : "ir" (~flags), "m" (pcb->pcb_flags)
+	    : "cc", "memory");
+}
+
 #ifdef KDB
 
 /*
diff --git sys/amd64/amd64/ptrace_machdep.c sys/amd64/amd64/ptrace_machdep.c
index dbb3f13f947f..169e15c1755e 100644
--- sys/amd64/amd64/ptrace_machdep.c
+++ sys/amd64/amd64/ptrace_machdep.c
@@ -117,15 +117,17 @@ cpu_ptrace_xstate(struct thread *td, int req, void *addr, int data)
 static void
 cpu_ptrace_setbase(struct thread *td, int req, register_t r)
 {
+	struct pcb *pcb;
 
+	pcb = td->td_pcb;
+	set_pcb_flags(pcb, PCB_FULL_IRET);
 	if (req == PT_SETFSBASE) {
-		td->td_pcb->pcb_fsbase = r;
+		pcb->pcb_fsbase = r;
 		td->td_frame->tf_fs = _ufssel;
 	} else {
-		td->td_pcb->pcb_gsbase = r;
+		pcb->pcb_gsbase = r;
 		td->td_frame->tf_gs = _ugssel;
 	}
-	set_pcb_flags(td->td_pcb, PCB_FULL_IRET);
 }
 
 #ifdef COMPAT_FREEBSD32
@@ -136,6 +138,7 @@ static int
 cpu32_ptrace(struct thread *td, int req, void *addr, int data)
 {
 	struct savefpu *fpstate;
+	struct pcb *pcb;
 	uint32_t r;
 	int error;
 
@@ -167,8 +170,10 @@ cpu32_ptrace(struct thread *td, int req, void *addr, int data)
 			error = EINVAL;
 			break;
 		}
-		r = req == PT_GETFSBASE ? td->td_pcb->pcb_fsbase :
-		    td->td_pcb->pcb_gsbase;
+		pcb = td->td_pcb;
+		if (td == curthread)
+			update_pcb_bases(pcb);
+		r = req == PT_GETFSBASE ? pcb->pcb_fsbase : pcb->pcb_gsbase;
 		error = copyout(&r, addr, sizeof(r));
 		break;
 
@@ -197,6 +202,7 @@ int
 cpu_ptrace(struct thread *td, int req, void *addr, int data)
 {
 	register_t *r, rv;
+	struct pcb *pcb;
 	int error;
 
 #ifdef COMPAT_FREEBSD32
@@ -221,8 +227,10 @@ cpu_ptrace(struct thread *td, int req, void *addr, int data)
 
 	case PT_GETFSBASE:
 	case PT_GETGSBASE:
-		r = req == PT_GETFSBASE ? &td->td_pcb->pcb_fsbase :
-		    &td->td_pcb->pcb_gsbase;
+		pcb = td->td_pcb;
+		if (td == curthread)
+			update_pcb_bases(pcb);
+		r = req == PT_GETFSBASE ? &pcb->pcb_fsbase : &pcb->pcb_gsbase;
 		error = copyout(r, addr, sizeof(*r));
 		break;
 
diff --git sys/amd64/amd64/sys_machdep.c sys/amd64/amd64/sys_machdep.c
index 7480bcd87fd7..ead718cb0190 100644
--- sys/amd64/amd64/sys_machdep.c
+++ sys/amd64/amd64/sys_machdep.c
@@ -254,39 +254,45 @@ sysarch(struct thread *td, struct sysarch_args *uap)
 		error = amd64_set_ioperm(td, &iargs);
 		break;
 	case I386_GET_FSBASE:
+		update_pcb_bases(pcb);
 		i386base = pcb->pcb_fsbase;
 		error = copyout(&i386base, uap->parms, sizeof(i386base));
 		break;
 	case I386_SET_FSBASE:
 		error = copyin(uap->parms, &i386base, sizeof(i386base));
 		if (!error) {
+			set_pcb_flags(pcb, PCB_FULL_IRET);
 			pcb->pcb_fsbase = i386base;
 			td->td_frame->tf_fs = _ufssel;
 			update_gdt_fsbase(td, i386base);
 		}
 		break;
 	case I386_GET_GSBASE:
+		update_pcb_bases(pcb);
 		i386base = pcb->pcb_gsbase;
 		error = copyout(&i386base, uap->parms, sizeof(i386base));
 		break;
 	case I386_SET_GSBASE:
 		error = copyin(uap->parms, &i386base, sizeof(i386base));
 		if (!error) {
+			set_pcb_flags(pcb, PCB_FULL_IRET);
 			pcb->pcb_gsbase = i386base;
 			td->td_frame->tf_gs = _ugssel;
 			update_gdt_gsbase(td, i386base);
 		}
 		break;
 	case AMD64_GET_FSBASE:
-		error = copyout(&pcb->pcb_fsbase, uap->parms, sizeof(pcb->pcb_fsbase));
+		update_pcb_bases(pcb);
+		error = copyout(&pcb->pcb_fsbase, uap->parms,
+		    sizeof(pcb->pcb_fsbase));
 		break;
 		
 	case AMD64_SET_FSBASE:
 		error = copyin(uap->parms, &a64base, sizeof(a64base));
 		if (!error) {
 			if (a64base < VM_MAXUSER_ADDRESS) {
-				pcb->pcb_fsbase = a64base;
 				set_pcb_flags(pcb, PCB_FULL_IRET);
+				pcb->pcb_fsbase = a64base;
 				td->td_frame->tf_fs = _ufssel;
 			} else
 				error = EINVAL;
@@ -294,15 +300,17 @@ sysarch(struct thread *td, struct sysarch_args *uap)
 		break;
 
 	case AMD64_GET_GSBASE:
-		error = copyout(&pcb->pcb_gsbase, uap->parms, sizeof(pcb->pcb_gsbase));
+		update_pcb_bases(pcb);
+		error = copyout(&pcb->pcb_gsbase, uap->parms,
+		    sizeof(pcb->pcb_gsbase));
 		break;
 
 	case AMD64_SET_GSBASE:
 		error = copyin(uap->parms, &a64base, sizeof(a64base));
 		if (!error) {
 			if (a64base < VM_MAXUSER_ADDRESS) {
-				pcb->pcb_gsbase = a64base;
 				set_pcb_flags(pcb, PCB_FULL_IRET);
+				pcb->pcb_gsbase = a64base;
 				td->td_frame->tf_gs = _ugssel;
 			} else
 				error = EINVAL;
diff --git sys/amd64/amd64/vm_machdep.c sys/amd64/amd64/vm_machdep.c
index b8b06c62207e..f71378b36f81 100644
--- sys/amd64/amd64/vm_machdep.c
+++ sys/amd64/amd64/vm_machdep.c
@@ -172,6 +172,7 @@ cpu_fork(struct thread *td1, struct proc *p2, struct thread *td2, int flags)
 
 	/* Ensure that td1's pcb is up to date. */
 	fpuexit(td1);
+	update_pcb_bases(td1->td_pcb);
 
 	/* Point the pcb to the top of the stack */
 	pcb2 = get_pcb_td(td2);
@@ -238,7 +239,7 @@ cpu_fork(struct thread *td1, struct proc *p2, struct thread *td2, int flags)
 	pcb2->pcb_tssp = NULL;
 
 	/* New segment registers. */
-	set_pcb_flags(pcb2, PCB_FULL_IRET);
+	set_pcb_flags_raw(pcb2, PCB_FULL_IRET);
 
 	/* Copy the LDT, if necessary. */
 	mdp1 = &td1->td_proc->p_md;
@@ -433,13 +434,14 @@ cpu_copy_thread(struct thread *td, struct thread *td0)
 	 * Those not loaded individually below get their default
 	 * values here.
 	 */
+	update_pcb_bases(td0->td_pcb);
 	bcopy(td0->td_pcb, pcb2, sizeof(*pcb2));
 	clear_pcb_flags(pcb2, PCB_FPUINITDONE | PCB_USERFPUINITDONE |
 	    PCB_KERNFPU);
 	pcb2->pcb_save = get_pcb_user_save_pcb(pcb2);
 	bcopy(get_pcb_user_save_td(td0), pcb2->pcb_save,
 	    cpu_max_ext_state_size);
-	set_pcb_flags(pcb2, PCB_FULL_IRET);
+	set_pcb_flags_raw(pcb2, PCB_FULL_IRET);
 
 	/*
 	 * Create a new fresh stack for the new thread.
diff --git sys/amd64/conf/GENERIC sys/amd64/conf/GENERIC
index 784e1cdf1115..bf5e209ad3bd 100644
--- sys/amd64/conf/GENERIC
+++ sys/amd64/conf/GENERIC
@@ -29,6 +29,7 @@ options 	PREEMPTION		# Enable kernel thread preemption
 options 	INET			# InterNETworking
 options 	INET6			# IPv6 communications protocols
 options 	IPSEC			# IP (v4/v6) security
+options 	IPSEC_SUPPORT		# Allow kldload of ipsec and tcpmd5
 options 	TCP_OFFLOAD		# TCP offload
 options 	TCP_HHOOK		# hhook(9) framework for TCP
 options 	SCTP			# Stream Control Transmission Protocol
diff --git sys/amd64/conf/MMCCAM sys/amd64/conf/GENERIC-MMCCAM
similarity index 82%
rename from sys/amd64/conf/MMCCAM
rename to sys/amd64/conf/GENERIC-MMCCAM
index c8bbeb817f5c..09343ade072a 100644
--- sys/amd64/conf/MMCCAM
+++ sys/amd64/conf/GENERIC-MMCCAM
@@ -4,7 +4,7 @@
 
 include         MINIMAL
 
-ident		MMCCAM
+ident		GENERIC-MMCCAM
 
 # Access GPT-formatted and labeled root volume
 options         GEOM_PART_GPT
@@ -28,9 +28,9 @@ device		virtio_balloon		# VirtIO Memory Balloon device
 device		pass
 device		scbus
 device		da
-device		mmccam
 
-options	MMCCAM
+options	       MMCCAM
+
 # Add CAMDEBUG stuff
-options CAMDEBUG
-options CAM_DEBUG_FLAGS=(CAM_DEBUG_INFO|CAM_DEBUG_PROBE|CAM_DEBUG_PERIPH|CAM_DEBUG_TRACE)
+options	       CAMDEBUG
+options	       CAM_DEBUG_FLAGS=(CAM_DEBUG_INFO|CAM_DEBUG_PROBE|CAM_DEBUG_PERIPH)
diff --git sys/amd64/conf/NOTES sys/amd64/conf/NOTES
index 346c20a5be1b..bd4bd7c9e60d 100644
--- sys/amd64/conf/NOTES
+++ sys/amd64/conf/NOTES
@@ -395,9 +395,14 @@ device		iwn6000g2bfw
 device		iwn6050fw
 device		wpifw
 
-# Intel Non-Transparent Bridge (NTB) hardware
-device		ntb_hw	# Hardware Abstraction Layer for the NTB
-device		if_ntb	# Simulated ethernet device using the NTB
+#
+# Non-Transparent Bridge (NTB) drivers
+#
+device		if_ntb		# Virtual NTB network interface
+device		ntb_transport	# NTB packet transport driver
+device		ntb		# NTB hardware interface
+device		ntb_hw_intel	# Intel NTB hardware driver
+device		ntb_hw_plx	# PLX NTB hardware driver
 
 #
 #XXX this stores pointers in a 32bit field that is defined by the hardware
@@ -583,6 +588,11 @@ device		cpuctl
 #
 options 	ENABLE_ALART		# Control alarm on Intel intpm driver
 
+#
+# AMD System Management Network (SMN)
+#
+device		amdsmn
+
 #
 # Number of initial kernel page table pages used for early bootstrap.
 # This number should include enough pages to map the kernel and any
diff --git sys/amd64/include/asmacros.h sys/amd64/include/asmacros.h
index 606b59f40702..004f0835e19d 100644
--- sys/amd64/include/asmacros.h
+++ sys/amd64/include/asmacros.h
@@ -177,7 +177,12 @@
 	movw	%es,TF_ES(%rsp) ;					\
 	movw	%ds,TF_DS(%rsp) ;					\
 	movl	$TF_HASSEGS,TF_FLAGS(%rsp) ;				\
-	cld
+	cld ;								\
+	testb	$SEL_RPL_MASK,TF_CS(%rsp) ; /* come from kernel ? */	\
+	jz	2f ;		/* yes, leave PCB_FULL_IRET alone */	\
+	movq	PCPU(CURPCB),%r8 ;					\
+	andl	$~PCB_FULL_IRET,PCB_FLAGS(%r8) ;			\
+2:
 
 #define POP_FRAME							\
 	movq	TF_RDI(%rsp),%rdi ;					\
diff --git sys/amd64/include/param.h sys/amd64/include/param.h
index a619e3950d63..9fc6ca40649e 100644
--- sys/amd64/include/param.h
+++ sys/amd64/include/param.h
@@ -89,7 +89,7 @@
  * CACHE_LINE_SIZE is the compile-time maximum cache line size for an
  * architecture.  It should be used with appropriate caution.
  */
-#define	CACHE_LINE_SHIFT	7
+#define	CACHE_LINE_SHIFT	6
 #define	CACHE_LINE_SIZE		(1 << CACHE_LINE_SHIFT)
 
 /* Size of the level 1 page table units */
diff --git sys/amd64/include/pcb.h sys/amd64/include/pcb.h
index 9abd986a2ace..f7c6a27c7e96 100644
--- sys/amd64/include/pcb.h
+++ sys/amd64/include/pcb.h
@@ -119,40 +119,15 @@ struct susppcb {
 #ifdef _KERNEL
 struct trapframe;
 
-/*
- * The pcb_flags is only modified by current thread, or by other threads
- * when current thread is stopped.  However, current thread may change it
- * from the interrupt context in cpu_switch(), or in the trap handler.
- * When we read-modify-write pcb_flags from C sources, compiler may generate
- * code that is not atomic regarding the interrupt handler.  If a trap or
- * interrupt happens and any flag is modified from the handler, it can be
- * clobbered with the cached value later.  Therefore, we implement setting
- * and clearing flags with single-instruction functions, which do not race
- * with possible modification of the flags from the trap or interrupt context,
- * because traps and interrupts are executed only on instruction boundary.
- */
-static __inline void
-set_pcb_flags(struct pcb *pcb, const u_int flags)
-{
-
-	__asm __volatile("orl %1,%0"
-	    : "=m" (pcb->pcb_flags) : "ir" (flags), "m" (pcb->pcb_flags)
-	    : "cc");
-}
-
-static __inline void
-clear_pcb_flags(struct pcb *pcb, const u_int flags)
-{
-
-	__asm __volatile("andl %1,%0"
-	    : "=m" (pcb->pcb_flags) : "ir" (~flags), "m" (pcb->pcb_flags)
-	    : "cc");
-}
-
+void	clear_pcb_flags(struct pcb *pcb, const u_int flags);
 void	makectx(struct trapframe *, struct pcb *);
+void	set_pcb_flags(struct pcb *pcb, const u_int flags);
+void	set_pcb_flags_raw(struct pcb *pcb, const u_int flags);
 int	savectx(struct pcb *) __returns_twice;
 void	resumectx(struct pcb *);
 
+/* Ensure that pcb_gsbase and pcb_fsbase are up to date */
+#define	update_pcb_bases(pcb)	set_pcb_flags((pcb), PCB_FULL_IRET)
 #endif
 
 #endif /* _AMD64_PCB_H_ */
diff --git sys/amd64/vmm/intel/vmx_msr.c sys/amd64/vmm/intel/vmx_msr.c
index 91b2c01b24e2..a48cb76e1c70 100644
--- sys/amd64/vmm/intel/vmx_msr.c
+++ sys/amd64/vmm/intel/vmx_msr.c
@@ -31,10 +31,12 @@ __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
 #include <sys/systm.h>
+#include <sys/proc.h>
 
 #include <machine/clock.h>
 #include <machine/cpufunc.h>
 #include <machine/md_var.h>
+#include <machine/pcb.h>
 #include <machine/specialreg.h>
 #include <machine/vmm.h>
 
@@ -356,7 +358,8 @@ vmx_msr_guest_enter(struct vmx *vmx, int vcpuid)
 {
 	uint64_t *guest_msrs = vmx->guest_msrs[vcpuid];
 
-	/* Save host MSRs (if any) and restore guest MSRs */
+	/* Save host MSRs (in particular, KGSBASE) and restore guest MSRs */
+	update_pcb_bases(curpcb);
 	wrmsr(MSR_LSTAR, guest_msrs[IDX_MSR_LSTAR]);
 	wrmsr(MSR_CSTAR, guest_msrs[IDX_MSR_CSTAR]);
 	wrmsr(MSR_STAR, guest_msrs[IDX_MSR_STAR]);
diff --git sys/arm/allwinner/a10_gpio.c sys/arm/allwinner/a10_gpio.c
index b1862707da6c..8b75e6ddb575 100644
--- sys/arm/allwinner/a10_gpio.c
+++ sys/arm/allwinner/a10_gpio.c
@@ -195,6 +195,9 @@ struct a10_gpio_softc {
 #define	A10_GPIO_GP_INT_STA		0x214
 #define	A10_GPIO_GP_INT_DEB		0x218
 
+static int a10_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *value);
+static int a10_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value);
+
 #define	A10_GPIO_WRITE(_sc, _off, _val)		\
     bus_space_write_4(_sc->sc_bst, _sc->sc_bsh, _off, _val)
 #define	A10_GPIO_READ(_sc, _off)		\
@@ -316,29 +319,44 @@ a10_gpio_set_drv(struct a10_gpio_softc *sc, uint32_t pin, uint32_t drive)
 static int
 a10_gpio_pin_configure(struct a10_gpio_softc *sc, uint32_t pin, uint32_t flags)
 {
+	u_int val;
 	int err = 0;
 
 	/* Must be called with lock held. */
 	A10_GPIO_LOCK_ASSERT(sc);
 
+	if (pin > sc->padconf->npins)
+		return (EINVAL);
+
 	/* Manage input/output. */
-	if (flags & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)) {
-		if (flags & GPIO_PIN_OUTPUT)
-			err = a10_gpio_set_function(sc, pin, A10_GPIO_OUTPUT);
-		else
+	if (flags & GPIO_PIN_INPUT) {
+		err = a10_gpio_set_function(sc, pin, A10_GPIO_INPUT);
+	} else if (flags & GPIO_PIN_OUTPUT) {
+		if (flags & GPIO_PIN_PRESET_LOW) {
+			a10_gpio_pin_set(sc->sc_dev, pin, 0);
+		} else if (flags & GPIO_PIN_PRESET_HIGH) {
+			a10_gpio_pin_set(sc->sc_dev, pin, 1);
+		} else {
+			/* Read the pin and preset output to current state. */
 			err = a10_gpio_set_function(sc, pin, A10_GPIO_INPUT);
+			if (err == 0) {
+				a10_gpio_pin_get(sc->sc_dev, pin, &val);
+				a10_gpio_pin_set(sc->sc_dev, pin, val); 
+			}
+		}
+		if (err == 0)
+			err = a10_gpio_set_function(sc, pin, A10_GPIO_OUTPUT);
 	}
 
 	if (err)
 		return (err);
 
 	/* Manage Pull-up/pull-down. */
-	if (flags & (GPIO_PIN_PULLUP | GPIO_PIN_PULLDOWN)) {
-		if (flags & GPIO_PIN_PULLUP)
-			a10_gpio_set_pud(sc, pin, A10_GPIO_PULLUP);
-		else
-			a10_gpio_set_pud(sc, pin, A10_GPIO_PULLDOWN);
-	} else
+	if (flags & GPIO_PIN_PULLUP)
+		a10_gpio_set_pud(sc, pin, A10_GPIO_PULLUP);
+	else if (flags & GPIO_PIN_PULLDOWN)
+		a10_gpio_set_pud(sc, pin, A10_GPIO_PULLDOWN);
+	else
 		a10_gpio_set_pud(sc, pin, A10_GPIO_NONE);
 
 	return (0);
@@ -525,6 +543,73 @@ a10_gpio_pin_toggle(device_t dev, uint32_t pin)
 	return (0);
 }
 
+static int
+a10_gpio_pin_access_32(device_t dev, uint32_t first_pin, uint32_t clear_pins,
+    uint32_t change_pins, uint32_t *orig_pins)
+{
+	struct a10_gpio_softc *sc;
+	uint32_t bank, data, pin;
+
+	sc = device_get_softc(dev);
+	if (first_pin > sc->padconf->npins)
+		return (EINVAL);
+
+	/*
+	 * We require that first_pin refers to the first pin in a bank, because
+	 * this API is not about convenience, it's for making a set of pins
+	 * change simultaneously (required) with reasonably high performance
+	 * (desired); we need to do a read-modify-write on a single register.
+	 */
+	bank = sc->padconf->pins[first_pin].port;
+	pin = sc->padconf->pins[first_pin].pin;
+	if (pin != 0)
+		return (EINVAL);
+
+	A10_GPIO_LOCK(sc);
+	data = A10_GPIO_READ(sc, A10_GPIO_GP_DAT(bank));
+	if ((clear_pins | change_pins) != 0) 
+		A10_GPIO_WRITE(sc, A10_GPIO_GP_DAT(bank),
+		    (data & ~clear_pins) ^ change_pins);
+	A10_GPIO_UNLOCK(sc);
+
+	if (orig_pins != NULL)
+		*orig_pins = data;
+
+	return (0);
+}
+
+static int
+a10_gpio_pin_config_32(device_t dev, uint32_t first_pin, uint32_t num_pins,
+    uint32_t *pin_flags)
+{
+	struct a10_gpio_softc *sc;
+	uint32_t bank, pin;
+	int err;
+
+	sc = device_get_softc(dev);
+	if (first_pin > sc->padconf->npins)
+		return (EINVAL);
+
+	bank = sc->padconf->pins[first_pin].port;
+	if (sc->padconf->pins[first_pin].pin != 0)
+		return (EINVAL);
+
+	/*
+	 * The configuration for a bank of pins is scattered among several
+	 * registers; we cannot g'tee to simultaneously change the state of all
+	 * the pins in the flags array.  So just loop through the array
+	 * configuring each pin for now.  If there was a strong need, it might
+	 * be possible to support some limited simultaneous config, such as
+	 * adjacent groups of 8 pins that line up the same as the config regs.
+	 */
+	for (err = 0, pin = first_pin; err == 0 && pin < num_pins; ++pin) {
+		if (pin_flags[pin] & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT))
+			err = a10_gpio_pin_configure(sc, pin, pin_flags[pin]);
+	}
+
+	return (err);
+}
+
 static int
 aw_find_pinnum_by_name(struct a10_gpio_softc *sc, const char *pinname)
 {
@@ -780,6 +865,8 @@ static device_method_t a10_gpio_methods[] = {
 	DEVMETHOD(gpio_pin_get,		a10_gpio_pin_get),
 	DEVMETHOD(gpio_pin_set,		a10_gpio_pin_set),
 	DEVMETHOD(gpio_pin_toggle,	a10_gpio_pin_toggle),
+	DEVMETHOD(gpio_pin_access_32,	a10_gpio_pin_access_32),
+	DEVMETHOD(gpio_pin_config_32,	a10_gpio_pin_config_32),
 	DEVMETHOD(gpio_map_gpios,	a10_gpio_map_gpios),
 
 	/* ofw_bus interface */
diff --git sys/arm/arm/generic_timer.c sys/arm/arm/generic_timer.c
index 2f0457044f47..1ddf93c4efa5 100644
--- sys/arm/arm/generic_timer.c
+++ sys/arm/arm/generic_timer.c
@@ -249,17 +249,23 @@ arm_tmr_start(struct eventtimer *et, sbintime_t first,
 
 }
 
+static void
+arm_tmr_disable(bool physical)
+{
+	int ctrl;
+
+	ctrl = get_ctrl(physical);
+	ctrl &= ~GT_CTRL_ENABLE;
+	set_ctrl(ctrl, physical);
+}
+
 static int
 arm_tmr_stop(struct eventtimer *et)
 {
 	struct arm_tmr_softc *sc;
-	int ctrl;
 
 	sc = (struct arm_tmr_softc *)et->et_priv;
-
-	ctrl = get_ctrl(sc->physical);
-	ctrl &= ~GT_CTRL_ENABLE;
-	set_ctrl(ctrl, sc->physical);
+	arm_tmr_disable(sc->physical);
 
 	return (0);
 }
@@ -412,6 +418,13 @@ arm_tmr_attach(device_t dev)
 		}
 	}
 
+	/* Disable the virtual timer until we are ready */
+	if (sc->res[2] != NULL)
+		arm_tmr_disable(false);
+	/* And the physical */
+	if (sc->physical)
+		arm_tmr_disable(true);
+
 	arm_tmr_timecount.tc_frequency = sc->clkfreq;
 	tc_init(&arm_tmr_timecount);
 
diff --git sys/arm/at91/at91_twi.c sys/arm/at91/at91_twi.c
index 8549406c57c5..a0926800356c 100644
--- sys/arm/at91/at91_twi.c
+++ sys/arm/at91/at91_twi.c
@@ -160,8 +160,8 @@ at91_twi_attach(device_t dev)
 
 	if ((sc->iicbus = device_add_child(dev, "iicbus", -1)) == NULL)
 		device_printf(dev, "could not allocate iicbus instance\n");
-	/* probe and attach the iicbus */
-	bus_generic_attach(dev);
+	/* Probe and attach the iicbus when interrupts are available. */
+	config_intrhook_oneshot((ich_func_t)bus_generic_attach, dev);
 out:
 	if (err)
 		at91_twi_deactivate(dev);
diff --git sys/arm/broadcom/bcm2835/bcm2835_bsc.c sys/arm/broadcom/bcm2835/bcm2835_bsc.c
index e149d5d0b2db..8c21aad0ec04 100644
--- sys/arm/broadcom/bcm2835/bcm2835_bsc.c
+++ sys/arm/broadcom/bcm2835/bcm2835_bsc.c
@@ -309,7 +309,10 @@ bcm_bsc_attach(device_t dev)
 		return (ENXIO);
 	}
 
-	return (bus_generic_attach(dev));
+	/* Probe and attach the iicbus when interrupts are available. */
+	config_intrhook_oneshot((ich_func_t)bus_generic_attach, dev);
+
+	return (0);
 }
 
 static int
diff --git sys/arm/broadcom/bcm2835/bcm2836_mp.c sys/arm/broadcom/bcm2835/bcm2836_mp.c
index 6caaa504fbb1..0f2565a2e8ae 100644
--- sys/arm/broadcom/bcm2835/bcm2836_mp.c
+++ sys/arm/broadcom/bcm2835/bcm2836_mp.c
@@ -117,7 +117,9 @@ bcm2836_mp_start_ap(platform_t plat)
 		/* set entry point to mailbox 3 */
 		BSWR4(MBOX3SET_CORE(i),
 		    (uint32_t)pmap_kextract((vm_offset_t)mpentry));
-		wmb();
+		/* Firmware put cores in WFE state, need SEV to wake up. */
+		dsb();
+		sev();
 
 		/* wait for bootup */
 		retry = 1000;
diff --git sys/arm/conf/ARMADA38X sys/arm/conf/ARMADA38X
index 718c728e0e06..7134f8832809 100644
--- sys/arm/conf/ARMADA38X
+++ sys/arm/conf/ARMADA38X
@@ -48,6 +48,9 @@ device		neta
 # PCI
 device		pci
 
+# RTC
+device		mv_rtc
+
 # Interrupt controllers
 device		gic
 options 	INTRNG
diff --git sys/arm/conf/BEAGLEBONE-MMCCAM sys/arm/conf/BEAGLEBONE-MMCCAM
index 3d83352e79c0..d498512bd84f 100644
--- sys/arm/conf/BEAGLEBONE-MMCCAM
+++ sys/arm/conf/BEAGLEBONE-MMCCAM
@@ -6,16 +6,18 @@
 #
 # $FreeBSD$
 
+#NO_UNIVERSE
+
 include		BEAGLEBONE
 
+options		MMCCAM
+
 # Add CAMDEBUG stuff
 options 	CAMDEBUG
-options 	CAM_DEBUG_FLAGS=(CAM_DEBUG_INFO|CAM_DEBUG_PROBE|CAM_DEBUG_PERIPH|CAM_DEBUG_TRACE)
+options 	CAM_DEBUG_FLAGS=(CAM_DEBUG_INFO|CAM_DEBUG_PROBE|CAM_DEBUG_PERIPH)
 
 # pass(4) device
 device		pass
-device		mmccam
-options		MMCCAM
 
 nodevice	mmc
 nodevice	mmcsd
diff --git sys/arm/conf/IMX6-MMCCAM sys/arm/conf/IMX6-MMCCAM
new file mode 100644
index 000000000000..c76d9dc700f0
--- /dev/null
+++ sys/arm/conf/IMX6-MMCCAM
@@ -0,0 +1,23 @@
+#
+# IMX6-MMCCAM
+#
+# Custom kernel for IMX6 plus MMCCAM as opposed to the prior MMC stack. It is
+# present to keep it building in tree since it wouldn't work in LINT.
+#
+# $FreeBSD$
+
+#NO_UNIVERSE
+
+include		IMX6
+
+options		MMCCAM
+
+# Add CAMDEBUG stuff
+options 	CAMDEBUG
+options 	CAM_DEBUG_FLAGS=(CAM_DEBUG_INFO|CAM_DEBUG_PROBE|CAM_DEBUG_PERIPH)
+
+# pass(4) device
+device		pass
+
+nodevice	mmc
+nodevice	mmcsd
diff --git sys/arm/freescale/imx/imx_gpio.c sys/arm/freescale/imx/imx_gpio.c
index fe4955c856b7..e704ebd4c39b 100644
--- sys/arm/freescale/imx/imx_gpio.c
+++ sys/arm/freescale/imx/imx_gpio.c
@@ -667,6 +667,72 @@ imx51_gpio_pin_toggle(device_t dev, uint32_t pin)
 	return (0);
 }
 
+static int
+imx51_gpio_pin_access_32(device_t dev, uint32_t first_pin, uint32_t clear_pins,
+    uint32_t change_pins, uint32_t *orig_pins)
+{
+	struct imx51_gpio_softc *sc;
+
+	if (first_pin != 0)
+		return (EINVAL);
+
+	sc = device_get_softc(dev);
+
+	if (orig_pins != NULL)
+		*orig_pins = READ4(sc, IMX_GPIO_PSR_REG);
+
+	if ((clear_pins | change_pins) != 0) {
+		mtx_lock_spin(&sc->sc_mtx);
+		WRITE4(sc, IMX_GPIO_DR_REG,
+		    (READ4(sc, IMX_GPIO_DR_REG) & ~clear_pins) ^ change_pins);
+		mtx_unlock_spin(&sc->sc_mtx);
+	}
+
+	return (0);
+}
+
+static int
+imx51_gpio_pin_config_32(device_t dev, uint32_t first_pin, uint32_t num_pins,
+    uint32_t *pin_flags)
+{
+	struct imx51_gpio_softc *sc;
+	u_int i;
+	uint32_t bit, drclr, drset, flags, oeclr, oeset, pads;
+
+	sc = device_get_softc(dev);
+
+	if (first_pin != 0 || num_pins > sc->gpio_npins)
+		return (EINVAL);
+
+	drclr = drset = oeclr = oeset = 0;
+	pads = READ4(sc, IMX_GPIO_PSR_REG);
+
+	for (i = 0; i < num_pins; ++i) {
+		bit = 1u << i;
+		flags = pin_flags[i];
+		if (flags & GPIO_PIN_INPUT) {
+			oeclr |= bit;
+		} else if (flags & GPIO_PIN_OUTPUT) {
+			oeset |= bit;
+			if (flags & GPIO_PIN_PRESET_LOW)
+				drclr |= bit;
+			else if (flags & GPIO_PIN_PRESET_HIGH)
+				drset |= bit;
+			else /* Drive whatever it's now pulled to. */
+				drset |= pads & bit;
+		}
+	}
+
+	mtx_lock_spin(&sc->sc_mtx);
+	WRITE4(sc, IMX_GPIO_DR_REG,
+	    (READ4(sc, IMX_GPIO_DR_REG) & ~drclr) | drset);
+	WRITE4(sc, IMX_GPIO_OE_REG,
+	    (READ4(sc, IMX_GPIO_OE_REG) & ~oeclr) | oeset);
+	mtx_unlock_spin(&sc->sc_mtx);
+
+	return (0);
+}
+
 static int
 imx51_gpio_probe(device_t dev)
 {
@@ -790,6 +856,8 @@ static device_method_t imx51_gpio_methods[] = {
 	DEVMETHOD(gpio_pin_get,		imx51_gpio_pin_get),
 	DEVMETHOD(gpio_pin_set,		imx51_gpio_pin_set),
 	DEVMETHOD(gpio_pin_toggle,	imx51_gpio_pin_toggle),
+	DEVMETHOD(gpio_pin_access_32,	imx51_gpio_pin_access_32),
+	DEVMETHOD(gpio_pin_config_32,	imx51_gpio_pin_config_32),
 	{0, 0},
 };
 
diff --git sys/arm/freescale/imx/imx_i2c.c sys/arm/freescale/imx/imx_i2c.c
index b58684f165e6..3b6d4aadb227 100644
--- sys/arm/freescale/imx/imx_i2c.c
+++ sys/arm/freescale/imx/imx_i2c.c
@@ -443,7 +443,8 @@ no_recovery:
 
 	/* We don't do a hardware reset here because iicbus_attach() does it. */
 
-	bus_generic_attach(dev);
+	/* Probe and attach the iicbus when interrupts are available. */
+	config_intrhook_oneshot((ich_func_t)bus_generic_attach, dev);
 	return (0);
 }
 
diff --git sys/arm/mv/armada38x/rtc.c sys/arm/mv/armada38x/armada38x_rtc.c
similarity index 96%
rename from sys/arm/mv/armada38x/rtc.c
rename to sys/arm/mv/armada38x/armada38x_rtc.c
index a24a559ba72b..2f4139f2cc5c 100644
--- sys/arm/mv/armada38x/rtc.c
+++ sys/arm/mv/armada38x/armada38x_rtc.c
@@ -126,9 +126,15 @@ static driver_t mv_rtc_driver = {
 	sizeof(struct mv_rtc_softc),
 };
 
+static struct ofw_compat_data mv_rtc_compat[] = {
+	{"marvell,armada-380-rtc",	true},
+	{"marvell,armada-8k-rtc",	true},
+	{NULL,				false},
+};
+
 static devclass_t mv_rtc_devclass;
 
-DRIVER_MODULE(mv_rtc, simplebus, mv_rtc_driver, mv_rtc_devclass, 0, 0);
+DRIVER_MODULE(a38x_rtc, simplebus, mv_rtc_driver, mv_rtc_devclass, 0, 0);
 
 static void
 mv_rtc_reset(device_t dev)
@@ -174,7 +180,7 @@ mv_rtc_probe(device_t dev)
 	if (!ofw_bus_status_okay(dev))
 		return (ENXIO);
 
-	if (!ofw_bus_is_compatible(dev, "marvell,armada-380-rtc"))
+	if (!ofw_bus_search_compatible(dev, mv_rtc_compat)->ocd_data)
 		return (ENXIO);
 
 	device_set_desc(dev, "Marvell Integrated RTC");
diff --git sys/arm/mv/armada38x/files.armada38x sys/arm/mv/armada38x/files.armada38x
index 5459bba54d1f..37fa7de34224 100644
--- sys/arm/mv/armada38x/files.armada38x
+++ sys/arm/mv/armada38x/files.armada38x
@@ -7,6 +7,6 @@ arm/mv/armada/wdt.c		optional fdt
 arm/mv/armada38x/armada38x.c	standard
 arm/mv/armada38x/armada38x_mp.c	optional smp
 arm/mv/armada38x/pmsu.c		standard
-arm/mv/armada38x/rtc.c		standard
+arm/mv/armada38x/armada38x_rtc.c	optional mv_rtc fdt
 arm/mv/armada38x/armada38x_pl310.c	optional pl310
 dev/sdhci/sdhci_fdt.c		optional sdhci
diff --git sys/arm/ti/ti_cpuid.c sys/arm/ti/ti_cpuid.c
index ca64c811dfaf..354d7325c459 100644
--- sys/arm/ti/ti_cpuid.c
+++ sys/arm/ti/ti_cpuid.c
@@ -272,11 +272,7 @@ am335x_get_revision(void)
 static void
 ti_cpu_ident(void *dummy)
 {
-	phandle_t root;
-
-	root = OF_finddevice("/");
-	if (!ofw_bus_node_is_compatible(root, "ti,omap4") &&
-	    !ofw_bus_node_is_compatible(root, "ti,am33xx"))
+	if (!ti_soc_is_supported())
 		return;
 	switch(ti_chip()) {
 	case CHIP_OMAP_4:
diff --git sys/arm/ti/ti_cpuid.h sys/arm/ti/ti_cpuid.h
index 715f080e5ff7..7b2eb1618292 100644
--- sys/arm/ti/ti_cpuid.h
+++ sys/arm/ti/ti_cpuid.h
@@ -80,4 +80,10 @@ static __inline int ti_chip(void)
 
 uint32_t ti_revision(void);
 
+static __inline bool ti_soc_is_supported(void)
+{
+
+	return (_ti_chip != -1);
+}
+
 #endif  /* _TI_CPUID_H_ */
diff --git sys/arm/ti/ti_i2c.c sys/arm/ti/ti_i2c.c
index 55336ffcb650..a8ccadba0dbd 100644
--- sys/arm/ti/ti_i2c.c
+++ sys/arm/ti/ti_i2c.c
@@ -37,11 +37,6 @@
  * incorporate that sometime in the future.  The idea being that for transaction
  * larger than a certain size the DMA engine is used, for anything less the
  * normal interrupt/fifo driven option is used.
- *
- *
- * WARNING: This driver uses mtx_sleep and interrupts to perform transactions,
- * which means you can't do a transaction during startup before the interrupts
- * have been enabled.  Hint - the freebsd function config_intrhook_establish().
  */
 
 #include <sys/cdefs.h>
@@ -909,8 +904,8 @@ ti_i2c_attach(device_t dev)
 		goto out;
 	}
 
-	/* Probe and attach the iicbus */
-	bus_generic_attach(dev);
+	/* Probe and attach the iicbus when interrupts are available. */
+	config_intrhook_oneshot((ich_func_t)bus_generic_attach, dev);
 
 out:
 	if (err) {
diff --git sys/arm/ti/ti_scm.c sys/arm/ti/ti_scm.c
index bc7861828f16..daeb89e5ccf8 100644
--- sys/arm/ti/ti_scm.c
+++ sys/arm/ti/ti_scm.c
@@ -67,6 +67,7 @@ __FBSDID("$FreeBSD$");
 #include <dev/fdt/fdt_pinctrl.h>
 
 #include "ti_scm.h"
+#include "ti_cpuid.h"
 
 static struct resource_spec ti_scm_res_spec[] = {
 	{ SYS_RES_MEMORY,	0,	RF_ACTIVE },	/* Control memory window */
@@ -86,6 +87,10 @@ static struct ti_scm_softc *ti_scm_sc;
 static int
 ti_scm_probe(device_t dev)
 {
+
+	if (!ti_soc_is_supported())
+		return (ENXIO);
+
 	if (!ofw_bus_status_okay(dev))
 		return (ENXIO);
 
diff --git sys/arm64/arm64/genassym.c sys/arm64/arm64/genassym.c
index 5df003cd8735..00b77a435867 100644
--- sys/arm64/arm64/genassym.c
+++ sys/arm64/arm64/genassym.c
@@ -50,12 +50,15 @@ ASSYM(PCB_SINGLE_STEP_SHIFT, PCB_SINGLE_STEP_SHIFT);
 ASSYM(PCB_REGS, offsetof(struct pcb, pcb_x));
 ASSYM(PCB_SP, offsetof(struct pcb, pcb_sp));
 ASSYM(PCB_TPIDRRO, offsetof(struct pcb, pcb_tpidrro_el0));
-ASSYM(PCB_L0ADDR, offsetof(struct pcb, pcb_l0addr));
 ASSYM(PCB_ONFAULT, offsetof(struct pcb, pcb_onfault));
 ASSYM(PCB_FLAGS, offsetof(struct pcb, pcb_flags));
 
+ASSYM(P_MD, offsetof(struct proc, p_md));
+ASSYM(MD_L0ADDR, offsetof(struct mdproc, md_l0addr));
+
 ASSYM(SF_UC, offsetof(struct sigframe, sf_uc));
 
+ASSYM(TD_PROC, offsetof(struct thread, td_proc));
 ASSYM(TD_PCB, offsetof(struct thread, td_pcb));
 ASSYM(TD_FLAGS, offsetof(struct thread, td_flags));
 ASSYM(TD_FRAME, offsetof(struct thread, td_frame));
diff --git sys/arm64/arm64/identcpu.c sys/arm64/arm64/identcpu.c
index 97a91da52fa5..74bedf90ccc3 100644
--- sys/arm64/arm64/identcpu.c
+++ sys/arm64/arm64/identcpu.c
@@ -80,6 +80,7 @@ struct cpu_desc {
 	uint64_t	id_aa64isar1;
 	uint64_t	id_aa64mmfr0;
 	uint64_t	id_aa64mmfr1;
+	uint64_t	id_aa64mmfr2;
 	uint64_t	id_aa64pfr0;
 	uint64_t	id_aa64pfr1;
 };
@@ -88,14 +89,15 @@ struct cpu_desc cpu_desc[MAXCPU];
 static u_int cpu_print_regs;
 #define	PRINT_ID_AA64_AFR0	0x00000001
 #define	PRINT_ID_AA64_AFR1	0x00000002
-#define	PRINT_ID_AA64_DFR0	0x00000004
-#define	PRINT_ID_AA64_DFR1	0x00000008
-#define	PRINT_ID_AA64_ISAR0	0x00000010
-#define	PRINT_ID_AA64_ISAR1	0x00000020
-#define	PRINT_ID_AA64_MMFR0	0x00000040
-#define	PRINT_ID_AA64_MMFR1	0x00000080
-#define	PRINT_ID_AA64_PFR0	0x00000100
-#define	PRINT_ID_AA64_PFR1	0x00000200
+#define	PRINT_ID_AA64_DFR0	0x00000010
+#define	PRINT_ID_AA64_DFR1	0x00000020
+#define	PRINT_ID_AA64_ISAR0	0x00000100
+#define	PRINT_ID_AA64_ISAR1	0x00000200
+#define	PRINT_ID_AA64_MMFR0	0x00001000
+#define	PRINT_ID_AA64_MMFR1	0x00002000
+#define	PRINT_ID_AA64_MMFR2	0x00004000
+#define	PRINT_ID_AA64_PFR0	0x00010000
+#define	PRINT_ID_AA64_PFR1	0x00020000
 
 struct cpu_parts {
 	u_int		part_id;
@@ -120,8 +122,13 @@ struct cpu_implementers {
 /* ARM Ltd. */
 static const struct cpu_parts cpu_parts_arm[] = {
 	{ CPU_PART_FOUNDATION, "Foundation-Model" },
+	{ CPU_PART_CORTEX_A35, "Cortex-A35" },
 	{ CPU_PART_CORTEX_A53, "Cortex-A53" },
+	{ CPU_PART_CORTEX_A55, "Cortex-A55" },
 	{ CPU_PART_CORTEX_A57, "Cortex-A57" },
+	{ CPU_PART_CORTEX_A72, "Cortex-A72" },
+	{ CPU_PART_CORTEX_A73, "Cortex-A73" },
+	{ CPU_PART_CORTEX_A75, "Cortex-A75" },
 	CPU_PART_NONE,
 };
 /* Cavium */
@@ -300,14 +307,53 @@ print_cpu_features(u_int cpu)
 
 	/* AArch64 Instruction Set Attribute Register 1 */
 	if (cpu == 0 || (cpu_print_regs & PRINT_ID_AA64_ISAR1) != 0) {
-		printf(" Instruction Set Attributes 1 = <%#lx>\n",
-		    cpu_desc[cpu].id_aa64isar1);
+		printed = 0;
+		printf(" Instruction Set Attributes 1 = <");
+
+		switch (ID_AA64ISAR1_DPB(cpu_desc[cpu].id_aa64isar1)) {
+		case ID_AA64ISAR1_DPB_NONE:
+			break;
+		case ID_AA64ISAR1_DPB_IMPL:
+			printf("%sDC CVAP", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown DC CVAP", SEP_STR);
+			break;
+		}
+
+		if ((cpu_desc[cpu].id_aa64isar1 & ~ID_AA64ISAR1_MASK) != 0)
+			printf("%s%#lx", SEP_STR,
+			    cpu_desc[cpu].id_aa64isar1 & ~ID_AA64ISAR1_MASK);
+		printf(">\n");
 	}
 
 	/* AArch64 Processor Feature Register 0 */
 	if (cpu == 0 || (cpu_print_regs & PRINT_ID_AA64_PFR0) != 0) {
 		printed = 0;
 		printf("         Processor Features 0 = <");
+
+		switch (ID_AA64PFR0_SVE(cpu_desc[cpu].id_aa64pfr0)) {
+		case ID_AA64PFR0_SVE_NONE:
+			break;
+		case ID_AA64PFR0_SVE_IMPL:
+			printf("%sSVE", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown SVE", SEP_STR);
+			break;
+		}
+
+		switch (ID_AA64PFR0_RAS(cpu_desc[cpu].id_aa64pfr0)) {
+		case ID_AA64PFR0_RAS_NONE:
+			break;
+		case ID_AA64PFR0_RAS_V1:
+			printf("%sRASv1", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown RAS", SEP_STR);
+			break;
+		}
+
 		switch (ID_AA64PFR0_GIC(cpu_desc[cpu].id_aa64pfr0)) {
 		case ID_AA64PFR0_GIC_CPUIF_NONE:
 			break;
@@ -325,6 +371,9 @@ print_cpu_features(u_int cpu)
 		case ID_AA64PFR0_ADV_SIMD_IMPL:
 			printf("%sAdvSIMD", SEP_STR);
 			break;
+		case ID_AA64PFR0_ADV_SIMD_HP:
+			printf("%sAdvSIMD+HP", SEP_STR);
+			break;
 		default:
 			printf("%sUnknown AdvSIMD", SEP_STR);
 			break;
@@ -336,6 +385,9 @@ print_cpu_features(u_int cpu)
 		case ID_AA64PFR0_FP_IMPL:
 			printf("%sFloat", SEP_STR);
 			break;
+		case ID_AA64PFR0_FP_HP:
+			printf("%sFloat+HP", SEP_STR);
+			break;
 		default:
 			printf("%sUnknown Float", SEP_STR);
 			break;
@@ -509,6 +561,9 @@ print_cpu_features(u_int cpu)
 		case ID_AA64MMFR0_PA_RANGE_256T:
 			printf("%s256TB PA", SEP_STR);
 			break;
+		case ID_AA64MMFR0_PA_RANGE_4P:
+			printf("%s4PB PA", SEP_STR);
+			break;
 		default:
 			printf("%sUnknown PA Range", SEP_STR);
 			break;
@@ -525,12 +580,37 @@ print_cpu_features(u_int cpu)
 		printed = 0;
 		printf("      Memory Model Features 1 = <");
 
+		switch (ID_AA64MMFR1_XNX(cpu_desc[cpu].id_aa64mmfr1)) {
+		case ID_AA64MMFR1_XNX_NONE:
+			break;
+		case ID_AA64MMFR1_XNX_IMPL:
+			printf("%sEL2 XN", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown XNX", SEP_STR);
+			break;
+		}
+
+		switch (ID_AA64MMFR1_SPEC_SEI(cpu_desc[cpu].id_aa64mmfr1)) {
+		case ID_AA64MMFR1_SPEC_SEI_NONE:
+			break;
+		case ID_AA64MMFR1_SPEC_SEI_IMPL:
+			printf("%sSpecSEI", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown SpecSEI", SEP_STR);
+			break;
+		}
+
 		switch (ID_AA64MMFR1_PAN(cpu_desc[cpu].id_aa64mmfr1)) {
 		case ID_AA64MMFR1_PAN_NONE:
 			break;
 		case ID_AA64MMFR1_PAN_IMPL:
 			printf("%sPAN", SEP_STR);
 			break;
+		case ID_AA64MMFR1_PAN_ATS1E1:
+			printf("%sPAN+AT", SEP_STR);
+			break;
 		default:
 			printf("%sUnknown PAN", SEP_STR);
 			break;
@@ -550,9 +630,12 @@ print_cpu_features(u_int cpu)
 		switch (ID_AA64MMFR1_HPDS(cpu_desc[cpu].id_aa64mmfr1)) {
 		case ID_AA64MMFR1_HPDS_NONE:
 			break;
-		case ID_AA64MMFR1_HPDS_IMPL:
+		case ID_AA64MMFR1_HPDS_HPD:
 			printf("%sHPDS", SEP_STR);
 			break;
+		case ID_AA64MMFR1_HPDS_TTPBHA:
+			printf("%sTTPBHA", SEP_STR);
+			break;
 		default:
 			printf("%sUnknown HPDS", SEP_STR);
 			break;
@@ -600,10 +683,88 @@ print_cpu_features(u_int cpu)
 		printf(">\n");
 	}
 
+	/* AArch64 Memory Model Feature Register 2 */
+	if (cpu == 0 || (cpu_print_regs & PRINT_ID_AA64_MMFR2) != 0) {
+		printed = 0;
+		printf("      Memory Model Features 2 = <");
+
+		switch (ID_AA64MMFR2_VA_RANGE(cpu_desc[cpu].id_aa64mmfr2)) {
+		case ID_AA64MMFR2_VA_RANGE_48:
+			printf("%s48b VA", SEP_STR);
+			break;
+		case ID_AA64MMFR2_VA_RANGE_52:
+			printf("%s52b VA", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown VA Range", SEP_STR);
+			break;
+		}
+
+		switch (ID_AA64MMFR2_IESB(cpu_desc[cpu].id_aa64mmfr2)) {
+		case ID_AA64MMFR2_IESB_NONE:
+			break;
+		case ID_AA64MMFR2_IESB_IMPL:
+			printf("%sIESB", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown IESB", SEP_STR);
+			break;
+		}
+
+		switch (ID_AA64MMFR2_LSM(cpu_desc[cpu].id_aa64mmfr2)) {
+		case ID_AA64MMFR2_LSM_NONE:
+			break;
+		case ID_AA64MMFR2_LSM_IMPL:
+			printf("%sLSM", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown LSM", SEP_STR);
+			break;
+		}
+
+		switch (ID_AA64MMFR2_UAO(cpu_desc[cpu].id_aa64mmfr2)) {
+		case ID_AA64MMFR2_UAO_NONE:
+			break;
+		case ID_AA64MMFR2_UAO_IMPL:
+			printf("%sUAO", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown UAO", SEP_STR);
+			break;
+		}
+
+		switch (ID_AA64MMFR2_CNP(cpu_desc[cpu].id_aa64mmfr2)) {
+		case ID_AA64MMFR2_CNP_NONE:
+			break;
+		case ID_AA64MMFR2_CNP_IMPL:
+			printf("%sCnP", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown CnP", SEP_STR);
+			break;
+		}
+
+		if ((cpu_desc[cpu].id_aa64mmfr2 & ~ID_AA64MMFR2_MASK) != 0)
+			printf("%s%#lx", SEP_STR,
+			    cpu_desc[cpu].id_aa64mmfr2 & ~ID_AA64MMFR2_MASK);
+		printf(">\n");
+	}
+
 	/* AArch64 Debug Feature Register 0 */
 	if (cpu == 0 || (cpu_print_regs & PRINT_ID_AA64_DFR0) != 0) {
 		printed = 0;
 		printf("             Debug Features 0 = <");
+		switch(ID_AA64DFR0_PMS_VER(cpu_desc[cpu].id_aa64dfr0)) {
+		case ID_AA64DFR0_PMS_VER_NONE:
+			break;
+		case ID_AA64DFR0_PMS_VER_V1:
+			printf("%sSPE v1", SEP_STR);
+			break;
+		default:
+			printf("%sUnknown SPE", SEP_STR);
+			break;
+		}
+
 		printf("%s%lu CTX Breakpoints", SEP_STR,
 		    ID_AA64DFR0_CTX_CMPS(cpu_desc[cpu].id_aa64dfr0));
 
@@ -648,6 +809,9 @@ print_cpu_features(u_int cpu)
 		case ID_AA64DFR0_DEBUG_VER_8_VHE:
 			printf("%sDebug v8+VHE", SEP_STR);
 			break;
+		case ID_AA64DFR0_DEBUG_VER_8_2:
+			printf("%sDebug v8.2", SEP_STR);
+			break;
 		default:
 			printf("%sUnknown Debug", SEP_STR);
 			break;
@@ -727,14 +891,19 @@ identify_cpu(void)
 	cpu_desc[cpu].mpidr = get_mpidr();
 	CPU_AFFINITY(cpu) = cpu_desc[cpu].mpidr & CPU_AFF_MASK;
 
-	cpu_desc[cpu].id_aa64dfr0 = READ_SPECIALREG(id_aa64dfr0_el1);
-	cpu_desc[cpu].id_aa64dfr1 = READ_SPECIALREG(id_aa64dfr1_el1);
-	cpu_desc[cpu].id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
-	cpu_desc[cpu].id_aa64isar1 = READ_SPECIALREG(id_aa64isar1_el1);
-	cpu_desc[cpu].id_aa64mmfr0 = READ_SPECIALREG(id_aa64mmfr0_el1);
-	cpu_desc[cpu].id_aa64mmfr1 = READ_SPECIALREG(id_aa64mmfr1_el1);
-	cpu_desc[cpu].id_aa64pfr0 = READ_SPECIALREG(id_aa64pfr0_el1);
-	cpu_desc[cpu].id_aa64pfr1 = READ_SPECIALREG(id_aa64pfr1_el1);
+	cpu_desc[cpu].id_aa64dfr0 = READ_SPECIALREG(ID_AA64DFR0_EL1);
+	cpu_desc[cpu].id_aa64dfr1 = READ_SPECIALREG(ID_AA64DFR1_EL1);
+	cpu_desc[cpu].id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
+	cpu_desc[cpu].id_aa64isar1 = READ_SPECIALREG(ID_AA64ISAR1_EL1);
+	cpu_desc[cpu].id_aa64mmfr0 = READ_SPECIALREG(ID_AA64MMFR0_EL1);
+	cpu_desc[cpu].id_aa64mmfr1 = READ_SPECIALREG(ID_AA64MMFR1_EL1);
+#ifdef NOTYET
+	cpu_desc[cpu].id_aa64mmfr2 = READ_SPECIALREG(ID_AA64MMFR2_EL1);
+#else
+	cpu_desc[cpu].id_aa64mmfr2 = 0;
+#endif
+	cpu_desc[cpu].id_aa64pfr0 = READ_SPECIALREG(ID_AA64PFR0_EL1);
+	cpu_desc[cpu].id_aa64pfr1 = READ_SPECIALREG(ID_AA64PFR1_EL1);
 
 	if (cpu != 0) {
 		/*
@@ -787,6 +956,8 @@ identify_cpu(void)
 			cpu_print_regs |= PRINT_ID_AA64_MMFR0;
 		if (cpu_desc[cpu].id_aa64mmfr1 != cpu_desc[0].id_aa64mmfr1)
 			cpu_print_regs |= PRINT_ID_AA64_MMFR1;
+		if (cpu_desc[cpu].id_aa64mmfr2 != cpu_desc[0].id_aa64mmfr2)
+			cpu_print_regs |= PRINT_ID_AA64_MMFR2;
 
 		if (cpu_desc[cpu].id_aa64pfr0 != cpu_desc[0].id_aa64pfr0)
 			cpu_print_regs |= PRINT_ID_AA64_PFR0;
diff --git sys/arm64/arm64/mp_machdep.c sys/arm64/arm64/mp_machdep.c
index ab1171c777d3..99c0a745eaaf 100644
--- sys/arm64/arm64/mp_machdep.c
+++ sys/arm64/arm64/mp_machdep.c
@@ -67,6 +67,7 @@ __FBSDID("$FreeBSD$");
 #ifdef FDT
 #include <dev/ofw/openfirm.h>
 #include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
 #include <dev/ofw/ofw_cpu.h>
 #endif
 
@@ -74,6 +75,23 @@ __FBSDID("$FreeBSD$");
 
 #include "pic_if.h"
 
+#define	MP_QUIRK_CPULIST	0x01	/* The list of cpus may be wrong, */
+					/* don't panic if one fails to start */
+static uint32_t mp_quirks;
+
+#ifdef FDT
+static struct {
+	const char *compat;
+	uint32_t quirks;
+} fdt_quirks[] = {
+	{ "arm,foundation-aarch64",	MP_QUIRK_CPULIST },
+	{ "arm,fvp-base",		MP_QUIRK_CPULIST },
+	/* This is incorrect in some DTS files */
+	{ "arm,vfp-base",		MP_QUIRK_CPULIST },
+	{ NULL, 0 },
+};
+#endif
+
 typedef void intr_ipi_send_t(void *, cpuset_t, u_int);
 typedef void intr_ipi_handler_t(void *);
 
@@ -465,13 +483,16 @@ start_cpu(u_int id, uint64_t target_cpu)
 		 * start the requested CPU. If psci_cpu_on returns PSCI_MISSING
 		 * to indicate we are unable to use it to start the given CPU.
 		 */
-		KASSERT(err == PSCI_MISSING,
+		KASSERT(err == PSCI_MISSING ||
+		    (mp_quirks & MP_QUIRK_CPULIST) == MP_QUIRK_CPULIST,
 		    ("Failed to start CPU %u (%lx)\n", id, target_cpu));
 
 		pcpu_destroy(pcpup);
 		kmem_free(kernel_arena, (vm_offset_t)dpcpu[cpuid - 1],
 		    DPCPU_SIZE);
 		dpcpu[cpuid - 1] = NULL;
+		mp_ncpus--;
+
 		/* Notify the user that the CPU failed to start */
 		printf("Failed to start CPU %u (%lx)\n", id, target_cpu);
 	} else
@@ -556,6 +577,10 @@ cpu_init_fdt(u_int id, phandle_t node, u_int addr_size, pcell_t *reg)
 void
 cpu_mp_start(void)
 {
+#ifdef FDT
+	phandle_t node;
+	int i;
+#endif
 
 	mtx_init(&ap_boot_mtx, "ap boot", NULL, MTX_SPIN);
 
@@ -570,6 +595,13 @@ cpu_mp_start(void)
 #endif
 #ifdef FDT
 	case ARM64_BUS_FDT:
+		node = OF_peer(0);
+		for (i = 0; fdt_quirks[i].compat != NULL; i++) {
+			if (ofw_bus_node_is_compatible(node,
+			    fdt_quirks[i].compat) != 0) {
+				mp_quirks = fdt_quirks[i].quirks;
+			}
+		}
 		KASSERT(cpu0 >= 0, ("Current CPU was not found"));
 		ofw_cpu_early_foreach(cpu_init_fdt, true);
 		break;
diff --git sys/arm64/arm64/pmap.c sys/arm64/arm64/pmap.c
index e6d17acf6fd0..e26e0a0a65d4 100644
--- sys/arm64/arm64/pmap.c
+++ sys/arm64/arm64/pmap.c
@@ -2331,7 +2331,6 @@ pmap_remove(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
 	pd_entry_t *l0, *l1, *l2;
 	pt_entry_t l3_paddr, *l3;
 	struct spglist free;
-	int anyvalid;
 
 	/*
 	 * Perform an unsynchronized read.  This is, however, safe.
@@ -2339,7 +2338,6 @@ pmap_remove(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
 	if (pmap->pm_stats.resident_count == 0)
 		return;
 
-	anyvalid = 0;
 	SLIST_INIT(&free);
 
 	PMAP_LOCK(pmap);
@@ -2429,8 +2427,6 @@ pmap_remove(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
 	}
 	if (lock != NULL)
 		rw_wunlock(lock);
-	if (anyvalid)
-		pmap_invalidate_all(pmap);
 	PMAP_UNLOCK(pmap);
 	pmap_free_zero_pages(&free);
 }
@@ -2620,13 +2616,10 @@ pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot)
 
 			pmap_set(l3p, nbits);
 			/* XXX: Use pmap_invalidate_range */
-			pmap_invalidate_page(pmap, va);
+			pmap_invalidate_page(pmap, sva);
 		}
 	}
 	PMAP_UNLOCK(pmap);
-
-	/* TODO: Only invalidate entries we are touching */
-	pmap_invalidate_all(pmap);
 }
 
 /*
@@ -4662,8 +4655,9 @@ pmap_activate(struct thread *td)
 
 	critical_enter();
 	pmap = vmspace_pmap(td->td_proc->p_vmspace);
-	td->td_pcb->pcb_l0addr = vtophys(pmap->pm_l0);
-	__asm __volatile("msr ttbr0_el1, %0" : : "r"(td->td_pcb->pcb_l0addr));
+	td->td_proc->p_md.md_l0addr = vtophys(pmap->pm_l0);
+	__asm __volatile("msr ttbr0_el1, %0" : :
+	    "r"(td->td_proc->p_md.md_l0addr));
 	pmap_invalidate_all(pmap);
 	critical_exit();
 }
diff --git sys/arm64/arm64/swtch.S sys/arm64/arm64/swtch.S
index 016e81ac5e3c..1ff32098f033 100644
--- sys/arm64/arm64/swtch.S
+++ sys/arm64/arm64/swtch.S
@@ -86,14 +86,15 @@ ENTRY(cpu_throw)
 	 */
 
 	/* Switch to the new pmap */
-	ldr	x5, [x4, #PCB_L0ADDR]
+	ldr	x28, [x1, #TD_PROC]
+	ldr	x5, [x28, #(P_MD + MD_L0ADDR)]
 	msr	ttbr0_el1, x5
 	isb
 
 	/* Invalidate the TLB */
-	dsb	sy
-	tlbi	vmalle1is
-	dsb	sy
+	dsb	ishst
+	tlbi	vmalle1
+	dsb	ish
 	isb
 
 	/* If we are single stepping, enable it */
@@ -186,15 +187,18 @@ ENTRY(cpu_switch)
 	 * to a user process.
 	 */
 
+	/* Load the new proc address */
+	ldr	x28, [x1, #TD_PROC]
+
 	/* Switch to the new pmap */
-	ldr	x5, [x4, #PCB_L0ADDR]
+	ldr	x5, [x28, #(P_MD + MD_L0ADDR)]
 	msr	ttbr0_el1, x5
 	isb
 
 	/* Invalidate the TLB */
-	dsb	sy
-	tlbi	vmalle1is
-	dsb	sy
+	dsb	ishst
+	tlbi	vmalle1
+	dsb	ish
 	isb
 
 	/*
diff --git sys/arm64/arm64/vm_machdep.c sys/arm64/arm64/vm_machdep.c
index e5a337e29fdb..e8c63b5c4023 100644
--- sys/arm64/arm64/vm_machdep.c
+++ sys/arm64/arm64/vm_machdep.c
@@ -91,7 +91,7 @@ cpu_fork(struct thread *td1, struct proc *p2, struct thread *td2, int flags)
 	td2->td_pcb = pcb2;
 	bcopy(td1->td_pcb, pcb2, sizeof(*pcb2));
 
-	td2->td_pcb->pcb_l0addr =
+	td2->td_proc->p_md.md_l0addr =
 	    vtophys(vmspace_pmap(td2->td_proc->p_vmspace)->pm_l0);
 
 	tf = (struct trapframe *)STACKALIGN((struct trapframe *)pcb2 - 1);
diff --git sys/arm64/conf/GENERIC sys/arm64/conf/GENERIC
index 06c05b309fa7..4b580cd51089 100644
--- sys/arm64/conf/GENERIC
+++ sys/arm64/conf/GENERIC
@@ -29,6 +29,7 @@ options 	PREEMPTION		# Enable kernel thread preemption
 options 	INET			# InterNETworking
 options 	INET6			# IPv6 communications protocols
 options 	IPSEC			# IP (v4/v6) security
+options		IPSEC_SUPPORT		# Allow kldload of ipsec and tcpmd5
 options 	TCP_HHOOK		# hhook(9) framework for TCP
 options 	TCP_OFFLOAD		# TCP offload
 options 	SCTP			# Stream Control Transmission Protocol
@@ -118,6 +119,7 @@ options 	PCI_HP			# PCI-Express native HotPlug
 options 	PCI_IOV		# PCI SR-IOV support
 
 # Ethernet NICs
+device		mdio
 device		mii
 device		miibus		# MII bus support
 device		awg		# Allwinner EMAC Gigabit Ethernet
@@ -125,6 +127,7 @@ device		axgbe		# AMD Opteron A1100 integrated NIC
 device		em		# Intel PRO/1000 Gigabit Ethernet Family
 device		ix		# Intel 10Gb Ethernet Family
 device		msk		# Marvell/SysKonnect Yukon II Gigabit Ethernet
+device		neta		# Marvell Armada 370/38x/XP/3700 NIC
 device  	smc		# SMSC LAN91C111
 device		vnic		# Cavium ThunderX NIC
 device		al_eth		# Annapurna Alpine Ethernet NIC
@@ -146,6 +149,7 @@ device		dwmmc
 
 # Serial (COM) ports
 device		uart		# Generic UART driver
+device		uart_mvebu	# Armada 3700 UART driver
 device		uart_ns8250	# ns8250-type UART driver
 device		uart_snps
 device		pl011
@@ -157,7 +161,9 @@ device		aw_usbphy		# Allwinner USB PHY
 device		dwcotg			# DWC OTG controller
 device		ohci			# OHCI USB interface
 device		ehci			# EHCI USB interface (USB 2.0)
+device		ehci_mv			# Marvell EHCI USB interface
 device		xhci			# XHCI PCI->USB interface (USB 3.0)
+device		xhci_mv			# Marvell XHCI USB interface
 device		usb			# USB Bus (required)
 device		ukbd			# Keyboard
 device		umass			# Disks/Mass storage - Requires scbus and da
@@ -187,6 +193,7 @@ device		aw_nmi		# Allwinner NMI support
 
 # Real-time clock support
 device		aw_rtc		# Allwinner Real-time Clock
+device		mv_rtc		# Marvell Real-time Clock
 
 # Watchdog controllers
 device		aw_wdog		# Allwinner Watchdog
diff --git sys/arm64/conf/GENERIC-MMCCAM sys/arm64/conf/GENERIC-MMCCAM
new file mode 100644
index 000000000000..0d1e91cd58c8
--- /dev/null
+++ sys/arm64/conf/GENERIC-MMCCAM
@@ -0,0 +1,22 @@
+#
+# GENERIC-MMCCAM
+#
+# Custom kernel for arm64 plus MMCCAM as opposed to the prior MMC stack. It is
+# present to keep it building in tree since it wouldn't work in LINT.
+#
+# $FreeBSD$
+
+#NO_UNIVERSE
+
+include		GENERIC
+
+# Add CAMDEBUG stuff
+options 	CAMDEBUG
+options 	CAM_DEBUG_FLAGS=(CAM_DEBUG_INFO|CAM_DEBUG_PROBE|CAM_DEBUG_PERIPH)
+
+# pass(4) device
+device		pass
+options		MMCCAM
+
+nodevice	mmc
+nodevice	mmcsd
diff --git sys/arm64/include/armreg.h sys/arm64/include/armreg.h
index 9175bacacd96..c8d381e019bd 100644
--- sys/arm64/include/armreg.h
+++ sys/arm64/include/armreg.h
@@ -167,12 +167,13 @@
 #define	ICC_SRE_EL2_EN		(1U << 3)
 
 /* ID_AA64DFR0_EL1 */
-#define	ID_AA64DFR0_MASK		0xf0f0ffff
+#define	ID_AA64DFR0_MASK		0x0000000ff0f0fffful
 #define	ID_AA64DFR0_DEBUG_VER_SHIFT	0
 #define	ID_AA64DFR0_DEBUG_VER_MASK	(0xf << ID_AA64DFR0_DEBUG_VER_SHIFT)
 #define	ID_AA64DFR0_DEBUG_VER(x)	((x) & ID_AA64DFR0_DEBUG_VER_MASK)
 #define	 ID_AA64DFR0_DEBUG_VER_8	(0x6 << ID_AA64DFR0_DEBUG_VER_SHIFT)
 #define	 ID_AA64DFR0_DEBUG_VER_8_VHE	(0x7 << ID_AA64DFR0_DEBUG_VER_SHIFT)
+#define	 ID_AA64DFR0_DEBUG_VER_8_2	(0x8 << ID_AA64DFR0_DEBUG_VER_SHIFT)
 #define	ID_AA64DFR0_TRACE_VER_SHIFT	4
 #define	ID_AA64DFR0_TRACE_VER_MASK	(0xf << ID_AA64DFR0_TRACE_VER_SHIFT)
 #define	ID_AA64DFR0_TRACE_VER(x)	((x) & ID_AA64DFR0_TRACE_VER_MASK)
@@ -197,6 +198,11 @@
 #define	ID_AA64DFR0_CTX_CMPS_MASK	(0xf << ID_AA64DFR0_CTX_CMPS_SHIFT)
 #define	ID_AA64DFR0_CTX_CMPS(x)		\
     ((((x) >> ID_AA64DFR0_CTX_CMPS_SHIFT) & 0xf) + 1)
+#define	ID_AA64DFR0_PMS_VER_SHIFT	32
+#define	ID_AA64DFR0_PMS_VER_MASK	(0xful << ID_AA64DFR0_PMS_VER_SHIFT)
+#define	ID_AA64DFR0_PMS_VER(x)	((x) & ID_AA64DFR0_PMS_VER_MASK)
+#define	 ID_AA64DFR0_PMS_VER_NONE	(0x0ul << ID_AA64DFR0_PMS_VER_SHIFT)
+#define	 ID_AA64DFR0_PMS_VER_V1		(0x1ul << ID_AA64DFR0_PMS_VER_SHIFT)
 
 /* ID_AA64ISAR0_EL1 */
 #define	ID_AA64ISAR0_MASK		0xf0fffff0
@@ -232,6 +238,14 @@
 #define	 ID_AA64ISAR0_RDM_NONE		(0x0 << ID_AA64ISAR0_RDM_SHIFT)
 #define	 ID_AA64ISAR0_RDM_IMPL		(0x1 << ID_AA64ISAR0_RDM_SHIFT)
 
+/* ID_AA64ISAR1_EL1 */
+#define	ID_AA64ISAR1_MASK		0x0000000f
+#define	ID_AA64ISAR1_DPB_SHIFT		0
+#define	ID_AA64ISAR1_DPB_MASK		(0xf << ID_AA64ISAR1_DPB_SHIFT)
+#define	ID_AA64ISAR1_DPB(x)		((x) & ID_AA64ISAR1_DPB_MASK)
+#define	 ID_AA64ISAR1_DPB_NONE		(0x0 << ID_AA64ISAR1_DPB_SHIFT)
+#define	 ID_AA64ISAR1_DPB_IMPL		(0x1 << ID_AA64ISAR1_DPB_SHIFT)
+
 /* ID_AA64MMFR0_EL1 */
 #define	ID_AA64MMFR0_MASK		0xffffffff
 #define	ID_AA64MMFR0_PA_RANGE_SHIFT	0
@@ -243,6 +257,7 @@
 #define	 ID_AA64MMFR0_PA_RANGE_4T	(0x3 << ID_AA64MMFR0_PA_RANGE_SHIFT)
 #define	 ID_AA64MMFR0_PA_RANGE_16T	(0x4 << ID_AA64MMFR0_PA_RANGE_SHIFT)
 #define	 ID_AA64MMFR0_PA_RANGE_256T	(0x5 << ID_AA64MMFR0_PA_RANGE_SHIFT)
+#define	 ID_AA64MMFR0_PA_RANGE_4P	(0x6 << ID_AA64MMFR0_PA_RANGE_SHIFT)
 #define	ID_AA64MMFR0_ASID_BITS_SHIFT	4
 #define	ID_AA64MMFR0_ASID_BITS_MASK	(0xf << ID_AA64MMFR0_ASID_BITS_SHIFT)
 #define	ID_AA64MMFR0_ASID_BITS(x)	((x) & ID_AA64MMFR0_ASID_BITS_MASK)
@@ -280,7 +295,7 @@
 #define	 ID_AA64MMFR0_TGRAN4_NONE	(0xf << ID_AA64MMFR0_TGRAN4_SHIFT)
 
 /* ID_AA64MMFR1_EL1 */
-#define	ID_AA64MMFR1_MASK		0x00ffffff
+#define	ID_AA64MMFR1_MASK		0xffffffff
 #define	ID_AA64MMFR1_HAFDBS_SHIFT	0
 #define	ID_AA64MMFR1_HAFDBS_MASK	(0xf << ID_AA64MMFR1_HAFDBS_SHIFT)
 #define	ID_AA64MMFR1_HAFDBS(x)		((x) & ID_AA64MMFR1_HAFDBS_MASK)
@@ -301,7 +316,8 @@
 #define	ID_AA64MMFR1_HPDS_MASK		(0xf << ID_AA64MMFR1_HPDS_SHIFT)
 #define	ID_AA64MMFR1_HPDS(x)		((x) & ID_AA64MMFR1_HPDS_MASK)
 #define	 ID_AA64MMFR1_HPDS_NONE		(0x0 << ID_AA64MMFR1_HPDS_SHIFT)
-#define	 ID_AA64MMFR1_HPDS_IMPL		(0x1 << ID_AA64MMFR1_HPDS_SHIFT)
+#define	 ID_AA64MMFR1_HPDS_HPD		(0x1 << ID_AA64MMFR1_HPDS_SHIFT)
+#define	 ID_AA64MMFR1_HPDS_TTPBHA	(0x2 << ID_AA64MMFR1_HPDS_SHIFT)
 #define	ID_AA64MMFR1_LO_SHIFT		16
 #define	ID_AA64MMFR1_LO_MASK		(0xf << ID_AA64MMFR1_LO_SHIFT)
 #define	ID_AA64MMFR1_LO(x)		((x) & ID_AA64MMFR1_LO_MASK)
@@ -313,9 +329,48 @@
 #define	 ID_AA64MMFR1_PAN_NONE		(0x0 << ID_AA64MMFR1_PAN_SHIFT)
 #define	 ID_AA64MMFR1_PAN_IMPL		(0x1 << ID_AA64MMFR1_PAN_SHIFT)
 #define	 ID_AA64MMFR1_PAN_ATS1E1	(0x2 << ID_AA64MMFR1_PAN_SHIFT)
+#define	ID_AA64MMFR1_SPEC_SEI_SHIFT	24
+#define	ID_AA64MMFR1_SPEC_SEI_MASK	(0xf << ID_AA64MMFR1_SPEC_SEI_SHIFT)
+#define	ID_AA64MMFR1_SPEC_SEI(x)	((x) & ID_AA64MMFR1_SPEC_SEI_MASK)
+#define	 ID_AA64MMFR1_SPEC_SEI_NONE	(0x0 << ID_AA64MMFR1_SPEC_SEI_SHIFT)
+#define	 ID_AA64MMFR1_SPEC_SEI_IMPL	(0x1 << ID_AA64MMFR1_SPEC_SEI_SHIFT)
+#define	ID_AA64MMFR1_XNX_SHIFT		28
+#define	ID_AA64MMFR1_XNX_MASK		(0xf << ID_AA64MMFR1_XNX_SHIFT)
+#define	ID_AA64MMFR1_XNX(x)		((x) & ID_AA64MMFR1_XNX_MASK)
+#define	 ID_AA64MMFR1_XNX_NONE		(0x0 << ID_AA64MMFR1_XNX_SHIFT)
+#define	 ID_AA64MMFR1_XNX_IMPL		(0x1 << ID_AA64MMFR1_XNX_SHIFT)
+
+/* ID_AA64MMFR2_EL1 */
+#define	ID_AA64MMFR2_EL1		S3_0_C0_C7_2
+#define	ID_AA64MMFR2_MASK		0x000fffff
+#define	ID_AA64MMFR2_CNP_SHIFT		0
+#define	ID_AA64MMFR2_CNP_MASK		(0xf << ID_AA64MMFR2_CNP_SHIFT)
+#define	ID_AA64MMFR2_CNP(x)		((x) & ID_AA64MMFR2_CNP_MASK)
+#define	 ID_AA64MMFR2_CNP_NONE		(0x0 << ID_AA64MMFR2_CNP_SHIFT)
+#define	 ID_AA64MMFR2_CNP_IMPL		(0x1 << ID_AA64MMFR2_CNP_SHIFT)
+#define	ID_AA64MMFR2_UAO_SHIFT		4
+#define	ID_AA64MMFR2_UAO_MASK		(0xf << ID_AA64MMFR2_UAO_SHIFT)
+#define	ID_AA64MMFR2_UAO(x)		((x) & ID_AA64MMFR2_UAO_MASK)
+#define	 ID_AA64MMFR2_UAO_NONE		(0x0 << ID_AA64MMFR2_UAO_SHIFT)
+#define	 ID_AA64MMFR2_UAO_IMPL		(0x1 << ID_AA64MMFR2_UAO_SHIFT)
+#define	ID_AA64MMFR2_LSM_SHIFT		8
+#define	ID_AA64MMFR2_LSM_MASK		(0xf << ID_AA64MMFR2_LSM_SHIFT)
+#define	ID_AA64MMFR2_LSM(x)		((x) & ID_AA64MMFR2_LSM_MASK)
+#define	 ID_AA64MMFR2_LSM_NONE		(0x0 << ID_AA64MMFR2_LSM_SHIFT)
+#define	 ID_AA64MMFR2_LSM_IMPL		(0x1 << ID_AA64MMFR2_LSM_SHIFT)
+#define	ID_AA64MMFR2_IESB_SHIFT		12
+#define	ID_AA64MMFR2_IESB_MASK		(0xf << ID_AA64MMFR2_IESB_SHIFT)
+#define	ID_AA64MMFR2_IESB(x)		((x) & ID_AA64MMFR2_IESB_MASK)
+#define	 ID_AA64MMFR2_IESB_NONE		(0x0 << ID_AA64MMFR2_IESB_SHIFT)
+#define	 ID_AA64MMFR2_IESB_IMPL		(0x1 << ID_AA64MMFR2_IESB_SHIFT)
+#define	ID_AA64MMFR2_VA_RANGE_SHIFT	16
+#define	ID_AA64MMFR2_VA_RANGE_MASK	(0xf << ID_AA64MMFR2_VA_RANGE_SHIFT)
+#define	ID_AA64MMFR2_VA_RANGE(x)	((x) & ID_AA64MMFR2_VA_RANGE_MASK)
+#define	 ID_AA64MMFR2_VA_RANGE_48	(0x0 << ID_AA64MMFR2_VA_RANGE_SHIFT)
+#define	 ID_AA64MMFR2_VA_RANGE_52	(0x1 << ID_AA64MMFR2_VA_RANGE_SHIFT)
 
 /* ID_AA64PFR0_EL1 */
-#define	ID_AA64PFR0_MASK		0x0fffffff
+#define	ID_AA64PFR0_MASK		0x0000000ffffffffful
 #define	ID_AA64PFR0_EL0_SHIFT		0
 #define	ID_AA64PFR0_EL0_MASK		(0xf << ID_AA64PFR0_EL0_SHIFT)
 #define	ID_AA64PFR0_EL0(x)		((x) & ID_AA64PFR0_EL0_MASK)
@@ -342,11 +397,13 @@
 #define	ID_AA64PFR0_FP_MASK		(0xf << ID_AA64PFR0_FP_SHIFT)
 #define	ID_AA64PFR0_FP(x)		((x) & ID_AA64PFR0_FP_MASK)
 #define	 ID_AA64PFR0_FP_IMPL		(0x0 << ID_AA64PFR0_FP_SHIFT)
+#define	 ID_AA64PFR0_FP_HP		(0x1 << ID_AA64PFR0_FP_SHIFT)
 #define	 ID_AA64PFR0_FP_NONE		(0xf << ID_AA64PFR0_FP_SHIFT)
 #define	ID_AA64PFR0_ADV_SIMD_SHIFT	20
 #define	ID_AA64PFR0_ADV_SIMD_MASK	(0xf << ID_AA64PFR0_ADV_SIMD_SHIFT)
 #define	ID_AA64PFR0_ADV_SIMD(x)		((x) & ID_AA64PFR0_ADV_SIMD_MASK)
 #define	 ID_AA64PFR0_ADV_SIMD_IMPL	(0x0 << ID_AA64PFR0_ADV_SIMD_SHIFT)
+#define	 ID_AA64PFR0_ADV_SIMD_HP	(0x1 << ID_AA64PFR0_ADV_SIMD_SHIFT)
 #define	 ID_AA64PFR0_ADV_SIMD_NONE	(0xf << ID_AA64PFR0_ADV_SIMD_SHIFT)
 #define	ID_AA64PFR0_GIC_BITS		0x4 /* Number of bits in GIC field */
 #define	ID_AA64PFR0_GIC_SHIFT		24
@@ -354,6 +411,16 @@
 #define	ID_AA64PFR0_GIC(x)		((x) & ID_AA64PFR0_GIC_MASK)
 #define	 ID_AA64PFR0_GIC_CPUIF_NONE	(0x0 << ID_AA64PFR0_GIC_SHIFT)
 #define	 ID_AA64PFR0_GIC_CPUIF_EN	(0x1 << ID_AA64PFR0_GIC_SHIFT)
+#define	ID_AA64PFR0_RAS_SHIFT		28
+#define	ID_AA64PFR0_RAS_MASK		(0xf << ID_AA64PFR0_RAS_SHIFT)
+#define	ID_AA64PFR0_RAS(x)		((x) & ID_AA64PFR0_RAS_MASK)
+#define	 ID_AA64PFR0_RAS_NONE		(0x0 << ID_AA64PFR0_RAS_SHIFT)
+#define	 ID_AA64PFR0_RAS_V1		(0x1 << ID_AA64PFR0_RAS_SHIFT)
+#define	ID_AA64PFR0_SVE_SHIFT		32
+#define	ID_AA64PFR0_SVE_MASK		(0xful << ID_AA64PFR0_SVE_SHIFT)
+#define	ID_AA64PFR0_SVE(x)		((x) & ID_AA64PFR0_SVE_MASK)
+#define	 ID_AA64PFR0_SVE_NONE		(0x0ul << ID_AA64PFR0_SVE_SHIFT)
+#define	 ID_AA64PFR0_SVE_IMPL		(0x1ul << ID_AA64PFR0_SVE_SHIFT)
 
 /* MAIR_EL1 - Memory Attribute Indirection Register */
 #define	MAIR_ATTR_MASK(idx)	(0xff << ((n)* 8))
diff --git sys/arm64/include/cpu.h sys/arm64/include/cpu.h
index 764383785176..51e86c1e7671 100644
--- sys/arm64/include/cpu.h
+++ sys/arm64/include/cpu.h
@@ -80,8 +80,13 @@
 
 #define	CPU_PART_THUNDER	0x0A1
 #define	CPU_PART_FOUNDATION	0xD00
+#define	CPU_PART_CORTEX_A35	0xD04
 #define	CPU_PART_CORTEX_A53	0xD03
+#define	CPU_PART_CORTEX_A55	0xD05
 #define	CPU_PART_CORTEX_A57	0xD07
+#define	CPU_PART_CORTEX_A72	0xD08
+#define	CPU_PART_CORTEX_A73	0xD09
+#define	CPU_PART_CORTEX_A75	0xD0A
 
 #define	CPU_REV_THUNDER_1_0	0x00
 #define	CPU_REV_THUNDER_1_1	0x01
diff --git sys/arm64/include/pcb.h sys/arm64/include/pcb.h
index 602c0d6f8248..bd8b1b4235a8 100644
--- sys/arm64/include/pcb.h
+++ sys/arm64/include/pcb.h
@@ -43,7 +43,6 @@ struct pcb {
 	uint64_t	pcb_sp;
 	uint64_t	pcb_tpidr_el0;
 	uint64_t	pcb_tpidrro_el0;
-	vm_offset_t	pcb_l0addr;
 
 	/* Fault handler, the error value is passed in x0 */
 	vm_offset_t	pcb_onfault;
diff --git sys/arm64/include/proc.h sys/arm64/include/proc.h
index 86dedbff0579..cae67386b0c8 100644
--- sys/arm64/include/proc.h
+++ sys/arm64/include/proc.h
@@ -40,7 +40,7 @@ struct mdthread {
 };
 
 struct mdproc {
-	int dummy;
+	vm_offset_t	md_l0addr;
 };
 
 #define	KINFO_PROC_SIZE	1088
diff --git sys/boot/common/loader.8 sys/boot/common/loader.8
index 55cbad4b1dae..7af7343d99dd 100644
--- sys/boot/common/loader.8
+++ sys/boot/common/loader.8
@@ -487,6 +487,11 @@ That happens before entering single-user mode or multi-user
 mode (but after executing the
 .Va init_script
 if enabled).
+This functionality has generally been eclipsed by rerooting.
+See
+.Xr reboot 8
+.Fl r
+for details.
 .It Va init_path
 Sets the list of binaries which the kernel will try to run as the initial
 process.
@@ -508,6 +513,11 @@ if the script terminates with a non-zero exit code,
 or if a SIGTERM is delivered to the
 .Xr init 8
 process (PID 1).
+This functionality has generally been eclipsed by rerooting.
+See
+.Xr reboot 8
+.Fl r
+for details.
 .It Va init_shell
 Defines the shell binary to be used for executing the various shell scripts.
 The default is
diff --git sys/boot/efi/boot1/Makefile sys/boot/efi/boot1/Makefile
index 72ede441263a..189ab6aaca69 100644
--- sys/boot/efi/boot1/Makefile
+++ sys/boot/efi/boot1/Makefile
@@ -10,7 +10,13 @@ PROG=		boot1.sym
 INTERNALPROG=
 WARNS?=		6
 
-.if ${MK_ZFS} != "no"
+# We implement a slightly non-standard %S in that it always takes a
+# CHAR16 that's common in UEFI-land instead of a wchar_t. This only
+# seems to matter on arm64 where wchar_t defaults to an int instead
+# of a short. There's no good cast to use here so just ignore the
+# warnings for now.
+CWARNFLAGS.boot1.c+=	-Wno-format
+
 # Disable warnings that are currently incompatible with the zfs boot code
 CWARNFLAGS.zfs_module.c += -Wno-array-bounds
 CWARNFLAGS.zfs_module.c += -Wno-cast-align
@@ -25,7 +31,6 @@ CWARNFLAGS.skein.c += -Wno-missing-variable-declarations
 .else if ${COMPILER_TYPE} == "gcc"
 CWARNFLAGS.skein.c += -Wno-missing-declarations
 .endif
-.endif
 
 # architecture-specific loader code
 SRCS=	boot1.c self_reloc.c start.S ufs_module.c
@@ -78,13 +83,15 @@ CFLAGS+=	-fPIC
 LDFLAGS+=	-Wl,-znocombreloc
 .endif
 
+LIBEFI=		${.OBJDIR}/../libefi/libefi.a
+
 #
 # Add libstand for the runtime functions used by the compiler - for example
 # __aeabi_* (arm) or __divdi3 (i386).
 # as well as required string and memory functions for all platforms.
 #
-DPADD+=		${LIBSTAND}
-LDADD+=		-lstand
+DPADD+=		${LIBEFI} ${LIBSTAND}
+LDADD+=		${LIBEFI} -lstand
 
 DPADD+=		${LDSCRIPT}
 
@@ -119,7 +126,6 @@ boot1.o: ${.CURDIR}/../../common/ufsread.c
 # created by generate-fat.sh
 
 .include "${.CURDIR}/Makefile.fat"
-BOOT1_MAXSIZE?=	131072
 
 boot1.efifat: boot1.efi
 	@set -- `ls -l ${.ALLSRC}`; \
@@ -129,9 +135,7 @@ boot1.efifat: boot1.efi
 	    exit 1; \
 	fi
 	echo ${.OBJDIR}
-	uudecode ${.CURDIR}/fat-${MACHINE}.tmpl.bz2.uu
-	mv fat-${MACHINE}.tmpl.bz2 ${.TARGET}.bz2
-	bzip2 -f -d ${.TARGET}.bz2
+	xz -d -c ${.CURDIR}/fat-${MACHINE}.tmpl.xz > ${.TARGET}
 	${DD} if=${.ALLSRC} of=${.TARGET} seek=${BOOT1_OFFSET} conv=notrunc
 
 CLEANFILES= boot1.efi boot1.efifat
diff --git sys/boot/efi/boot1/Makefile.fat sys/boot/efi/boot1/Makefile.fat
index c86a7c3f585f..1d40fa8ab54c 100644
--- sys/boot/efi/boot1/Makefile.fat
+++ sys/boot/efi/boot1/Makefile.fat
@@ -1,4 +1,4 @@
 # This file autogenerated by generate-fat.sh - DO NOT EDIT
 # $FreeBSD$
 BOOT1_OFFSET=0x2d
-BOOT1_MAXSIZE=131072
+BOOT1_MAXSIZE=393216
diff --git sys/boot/efi/boot1/boot1.c sys/boot/efi/boot1/boot1.c
index fb60dcc7083e..e2152f52bc0e 100644
--- sys/boot/efi/boot1/boot1.c
+++ sys/boot/efi/boot1/boot1.c
@@ -29,10 +29,14 @@ __FBSDID("$FreeBSD$");
 
 #include <efi.h>
 #include <eficonsctl.h>
+typedef CHAR16 efi_char;
+#include <efichar.h>
 
 #include "boot_module.h"
 #include "paths.h"
 
+static void efi_panic(EFI_STATUS s, const char *fmt, ...) __dead2 __printflike(2, 3);
+
 static const boot_module_t *boot_modules[] =
 {
 #ifdef EFI_ZFS_BOOT
@@ -47,16 +51,11 @@ static const boot_module_t *boot_modules[] =
 /* The initial number of handles used to query EFI for partitions. */
 #define NUM_HANDLES_INIT	24
 
-EFI_STATUS efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE* Xsystab);
-
-EFI_SYSTEM_TABLE *systab;
-EFI_BOOT_SERVICES *bs;
-static EFI_HANDLE *image;
-
 static EFI_GUID BlockIoProtocolGUID = BLOCK_IO_PROTOCOL;
 static EFI_GUID DevicePathGUID = DEVICE_PATH_PROTOCOL;
 static EFI_GUID LoadedImageGUID = LOADED_IMAGE_PROTOCOL;
 static EFI_GUID ConsoleControlGUID = EFI_CONSOLE_CONTROL_PROTOCOL_GUID;
+static EFI_GUID FreeBSDBootVarGUID = FREEBSD_BOOT_VAR_GUID;
 
 /*
  * Provide Malloc / Free backed by EFIs AllocatePool / FreePool which ensures
@@ -68,7 +67,7 @@ Malloc(size_t len, const char *file __unused, int line __unused)
 {
 	void *out;
 
-	if (bs->AllocatePool(EfiLoaderData, len, &out) == EFI_SUCCESS)
+	if (BS->AllocatePool(EfiLoaderData, len, &out) == EFI_SUCCESS)
 		return (out);
 
 	return (NULL);
@@ -78,7 +77,24 @@ void
 Free(void *buf, const char *file __unused, int line __unused)
 {
 	if (buf != NULL)
-		(void)bs->FreePool(buf);
+		(void)BS->FreePool(buf);
+}
+
+static EFI_STATUS
+efi_setenv_freebsd_wcs(const char *varname, CHAR16 *valstr)
+{
+	CHAR16 *var = NULL;
+	size_t len;
+	EFI_STATUS rv;
+
+	utf8_to_ucs2(varname, &var, &len);
+	if (var == NULL)
+		return (EFI_OUT_OF_RESOURCES);
+	rv = RS->SetVariable(var, &FreeBSDBootVarGUID,
+	    EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
+	    (ucs2len(valstr) + 1) * sizeof(efi_char), valstr);
+	free(var);
+	return (rv);
 }
 
 /*
@@ -88,7 +104,7 @@ Free(void *buf, const char *file __unused, int line __unused)
 static BOOLEAN
 nodes_match(EFI_DEVICE_PATH *imgpath, EFI_DEVICE_PATH *devpath)
 {
-	int len;
+	size_t len;
 
 	if (imgpath == NULL || imgpath->Type != devpath->Type ||
 	    imgpath->SubType != devpath->SubType)
@@ -141,178 +157,6 @@ devpath_last(EFI_DEVICE_PATH *devpath)
 	return (devpath);
 }
 
-/*
- * devpath_node_str is a basic output method for a devpath node which
- * only understands a subset of the available sub types.
- *
- * If we switch to UEFI 2.x then we should update it to use:
- * EFI_DEVICE_PATH_TO_TEXT_PROTOCOL.
- */
-static int
-devpath_node_str(char *buf, size_t size, EFI_DEVICE_PATH *devpath)
-{
-
-	switch (devpath->Type) {
-	case MESSAGING_DEVICE_PATH:
-		switch (devpath->SubType) {
-		case MSG_ATAPI_DP: {
-			ATAPI_DEVICE_PATH *atapi;
-
-			atapi = (ATAPI_DEVICE_PATH *)(void *)devpath;
-			return snprintf(buf, size, "ata(%s,%s,0x%x)",
-			    (atapi->PrimarySecondary == 1) ?  "Sec" : "Pri",
-			    (atapi->SlaveMaster == 1) ?  "Slave" : "Master",
-			    atapi->Lun);
-		}
-		case MSG_USB_DP: {
-			USB_DEVICE_PATH *usb;
-
-			usb = (USB_DEVICE_PATH *)devpath;
-			return snprintf(buf, size, "usb(0x%02x,0x%02x)",
-			    usb->ParentPortNumber, usb->InterfaceNumber);
-		}
-		case MSG_SCSI_DP: {
-			SCSI_DEVICE_PATH *scsi;
-
-			scsi = (SCSI_DEVICE_PATH *)(void *)devpath;
-			return snprintf(buf, size, "scsi(0x%02x,0x%02x)",
-			    scsi->Pun, scsi->Lun);
-		}
-		case MSG_SATA_DP: {
-			SATA_DEVICE_PATH *sata;
-
-			sata = (SATA_DEVICE_PATH *)(void *)devpath;
-			return snprintf(buf, size, "sata(0x%x,0x%x,0x%x)",
-			    sata->HBAPortNumber, sata->PortMultiplierPortNumber,
-			    sata->Lun);
-		}
-		default:
-			return snprintf(buf, size, "msg(0x%02x)",
-			    devpath->SubType);
-		}
-		break;
-	case HARDWARE_DEVICE_PATH:
-		switch (devpath->SubType) {
-		case HW_PCI_DP: {
-			PCI_DEVICE_PATH *pci;
-
-			pci = (PCI_DEVICE_PATH *)devpath;
-			return snprintf(buf, size, "pci(0x%02x,0x%02x)",
-			    pci->Device, pci->Function);
-		}
-		default:
-			return snprintf(buf, size, "hw(0x%02x)",
-			    devpath->SubType);
-		}
-		break;
-	case ACPI_DEVICE_PATH: {
-		ACPI_HID_DEVICE_PATH *acpi;
-
-		acpi = (ACPI_HID_DEVICE_PATH *)(void *)devpath;
-		if ((acpi->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {
-			switch (EISA_ID_TO_NUM(acpi->HID)) {
-			case 0x0a03:
-				return snprintf(buf, size, "pciroot(0x%x)",
-				    acpi->UID);
-			case 0x0a08:
-				return snprintf(buf, size, "pcieroot(0x%x)",
-				    acpi->UID);
-			case 0x0604:
-				return snprintf(buf, size, "floppy(0x%x)",
-				    acpi->UID);
-			case 0x0301:
-				return snprintf(buf, size, "keyboard(0x%x)",
-				    acpi->UID);
-			case 0x0501:
-				return snprintf(buf, size, "serial(0x%x)",
-				    acpi->UID);
-			case 0x0401:
-				return snprintf(buf, size, "parallelport(0x%x)",
-				    acpi->UID);
-			default:
-				return snprintf(buf, size, "acpi(pnp%04x,0x%x)",
-				    EISA_ID_TO_NUM(acpi->HID), acpi->UID);
-			}
-		}
-
-		return snprintf(buf, size, "acpi(0x%08x,0x%x)", acpi->HID,
-		    acpi->UID);
-	}
-	case MEDIA_DEVICE_PATH:
-		switch (devpath->SubType) {
-		case MEDIA_CDROM_DP: {
-			CDROM_DEVICE_PATH *cdrom;
-
-			cdrom = (CDROM_DEVICE_PATH *)(void *)devpath;
-			return snprintf(buf, size, "cdrom(%x)",
-			    cdrom->BootEntry);
-		}
-		case MEDIA_HARDDRIVE_DP: {
-			HARDDRIVE_DEVICE_PATH *hd;
-
-			hd = (HARDDRIVE_DEVICE_PATH *)(void *)devpath;
-			return snprintf(buf, size, "hd(%x)",
-			    hd->PartitionNumber);
-		}
-		default:
-			return snprintf(buf, size, "media(0x%02x)",
-			    devpath->SubType);
-		}
-	case BBS_DEVICE_PATH:
-		return snprintf(buf, size, "bbs(0x%02x)", devpath->SubType);
-	case END_DEVICE_PATH_TYPE:
-		return (0);
-	}
-
-	return snprintf(buf, size, "type(0x%02x, 0x%02x)", devpath->Type,
-	    devpath->SubType);
-}
-
-/*
- * devpath_strlcat appends a text description of devpath to buf but not more
- * than size - 1 characters followed by NUL-terminator.
- */
-int
-devpath_strlcat(char *buf, size_t size, EFI_DEVICE_PATH *devpath)
-{
-	size_t len, used;
-	const char *sep;
-
-	sep = "";
-	used = 0;
-	while (!IsDevicePathEnd(devpath)) {
-		len = snprintf(buf, size - used, "%s", sep);
-		used += len;
-		if (used > size)
-			return (used);
-		buf += len;
-
-		len = devpath_node_str(buf, size - used, devpath);
-		used += len;
-		if (used > size)
-			return (used);
-		buf += len;
-		devpath = NextDevicePathNode(devpath);
-		sep = ":";
-	}
-
-	return (used);
-}
-
-/*
- * devpath_str is convenience method which returns the text description of
- * devpath using a static buffer, so it isn't thread safe!
- */
-char *
-devpath_str(EFI_DEVICE_PATH *devpath)
-{
-	static char buf[256];
-
-	devpath_strlcat(buf, sizeof(buf), devpath);
-
-	return buf;
-}
-
 /*
  * load_loader attempts to load the loader image data.
  *
@@ -400,14 +244,14 @@ try_boot(void)
 		buf = NULL;
 	}
 
-	if ((status = bs->LoadImage(TRUE, image, devpath_last(dev->devpath),
+	if ((status = BS->LoadImage(TRUE, IH, devpath_last(dev->devpath),
 	    loaderbuf, loadersize, &loaderhandle)) != EFI_SUCCESS) {
 		printf("Failed to load image provided by %s, size: %zu, (%lu)\n",
 		     mod->name, loadersize, EFI_ERROR_CODE(status));
 		goto errout;
 	}
 
-	if ((status = bs->HandleProtocol(loaderhandle, &LoadedImageGUID,
+	if ((status = BS->HandleProtocol(loaderhandle, &LoadedImageGUID,
 	    (VOID**)&loaded_image)) != EFI_SUCCESS) {
 		printf("Failed to query LoadedImage provided by %s (%lu)\n",
 		    mod->name, EFI_ERROR_CODE(status));
@@ -433,7 +277,7 @@ try_boot(void)
 	DSTALL(1000000);
 	DPRINTF(".\n");
 
-	if ((status = bs->StartImage(loaderhandle, NULL, NULL)) !=
+	if ((status = BS->StartImage(loaderhandle, NULL, NULL)) !=
 	    EFI_SUCCESS) {
 		printf("Failed to start image provided by %s (%lu)\n",
 		    mod->name, EFI_ERROR_CODE(status));
@@ -467,7 +311,7 @@ probe_handle(EFI_HANDLE h, EFI_DEVICE_PATH *imgpath, BOOLEAN *preferred)
 	UINTN i;
 
 	/* Figure out if we're dealing with an actual partition. */
-	status = bs->HandleProtocol(h, &DevicePathGUID, (void **)&devpath);
+	status = BS->HandleProtocol(h, &DevicePathGUID, (void **)&devpath);
 	if (status == EFI_UNSUPPORTED)
 		return (status);
 
@@ -476,10 +320,14 @@ probe_handle(EFI_HANDLE h, EFI_DEVICE_PATH *imgpath, BOOLEAN *preferred)
 		    EFI_ERROR_CODE(status));
 		return (status);
 	}
-
-	DPRINTF("probing: %s\n", devpath_str(devpath));
-
-	status = bs->HandleProtocol(h, &BlockIoProtocolGUID, (void **)&blkio);
+#ifdef EFI_DEBUG
+	{
+		CHAR16 *text = efi_devpath_name(devpath);
+		DPRINTF("probing: %S\n", text);
+		efi_free_devpath_name(text);
+	}
+#endif
+	status = BS->HandleProtocol(h, &BlockIoProtocolGUID, (void **)&blkio);
 	if (status == EFI_UNSUPPORTED)
 		return (status);
 
@@ -496,11 +344,9 @@ probe_handle(EFI_HANDLE h, EFI_DEVICE_PATH *imgpath, BOOLEAN *preferred)
 
 	/* Run through each module, see if it can load this partition */
 	for (i = 0; i < NUM_BOOT_MODULES; i++) {
-		if ((status = bs->AllocatePool(EfiLoaderData,
-		    sizeof(*devinfo), (void **)&devinfo)) !=
-		    EFI_SUCCESS) {
-			DPRINTF("\nFailed to allocate devinfo (%lu)\n",
-			    EFI_ERROR_CODE(status));
+		devinfo = malloc(sizeof(*devinfo));
+		if (devinfo == NULL) {
+			DPRINTF("\nFailed to allocate devinfo\n");
 			continue;
 		}
 		devinfo->dev = blkio;
@@ -513,7 +359,7 @@ probe_handle(EFI_HANDLE h, EFI_DEVICE_PATH *imgpath, BOOLEAN *preferred)
 		status = boot_modules[i]->probe(devinfo);
 		if (status == EFI_SUCCESS)
 			return (EFI_SUCCESS);
-		(void)bs->FreePool(devinfo);
+		free(devinfo);
 	}
 
 	return (EFI_UNSUPPORTED);
@@ -565,14 +411,16 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE *Xsystab)
 	EFI_CONSOLE_CONTROL_PROTOCOL *ConsoleControl = NULL;
 	SIMPLE_TEXT_OUTPUT_INTERFACE *conout = NULL;
 	UINTN i, max_dim, best_mode, cols, rows, hsize, nhandles;
+	CHAR16 *text;
 
 	/* Basic initialization*/
-	systab = Xsystab;
-	image = Ximage;
-	bs = Xsystab->BootServices;
+	ST = Xsystab;
+	IH = Ximage;
+	BS = ST->BootServices;
+	RS = ST->RuntimeServices;
 
 	/* Set up the console, so printf works. */
-	status = bs->LocateProtocol(&ConsoleControlGUID, NULL,
+	status = BS->LocateProtocol(&ConsoleControlGUID, NULL,
 	    (VOID **)&ConsoleControl);
 	if (status == EFI_SUCCESS)
 		(void)ConsoleControl->SetMode(ConsoleControl,
@@ -580,7 +428,7 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE *Xsystab)
 	/*
 	 * Reset the console and find the best text mode.
 	 */
-	conout = systab->ConOut;
+	conout = ST->ConOut;
 	conout->Reset(conout, TRUE);
 	max_dim = best_mode = 0;
 	for (i = 0; ; i++) {
@@ -607,34 +455,55 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE *Xsystab)
 	}
 	putchar('\n');
 
+	/* Determine the devpath of our image so we can prefer it. */
+	status = BS->HandleProtocol(IH, &LoadedImageGUID, (VOID**)&img);
+	imgpath = NULL;
+	if (status == EFI_SUCCESS) {
+		text = efi_devpath_name(img->FilePath);
+		printf("   Load Path: %S\n", text);
+		efi_setenv_freebsd_wcs("Boot1Path", text);
+		efi_free_devpath_name(text);
+
+		status = BS->HandleProtocol(img->DeviceHandle, &DevicePathGUID,
+		    (void **)&imgpath);
+		if (status != EFI_SUCCESS) {
+			DPRINTF("Failed to get image DevicePath (%lu)\n",
+			    EFI_ERROR_CODE(status));
+		} else {
+			text = efi_devpath_name(imgpath);
+			printf("   Load Device: %S\n", text);
+			efi_setenv_freebsd_wcs("Boot1Dev", text);
+			efi_free_devpath_name(text);
+		}
+
+	}
+
 	/* Get all the device handles */
 	hsize = (UINTN)NUM_HANDLES_INIT * sizeof(EFI_HANDLE);
-	if ((status = bs->AllocatePool(EfiLoaderData, hsize, (void **)&handles))
-	    != EFI_SUCCESS)
-		panic("Failed to allocate %d handles (%lu)", NUM_HANDLES_INIT,
-		    EFI_ERROR_CODE(status));
+	handles = malloc(hsize);
+	if (handles == NULL) {
+		printf("Failed to allocate %d handles\n", NUM_HANDLES_INIT);
+	}
 
-	status = bs->LocateHandle(ByProtocol, &BlockIoProtocolGUID, NULL,
+	status = BS->LocateHandle(ByProtocol, &BlockIoProtocolGUID, NULL,
 	    &hsize, handles);
 	switch (status) {
 	case EFI_SUCCESS:
 		break;
 	case EFI_BUFFER_TOO_SMALL:
-		(void)bs->FreePool(handles);
-		if ((status = bs->AllocatePool(EfiLoaderData, hsize,
-		    (void **)&handles)) != EFI_SUCCESS) {
-			panic("Failed to allocate %zu handles (%lu)", hsize /
-			    sizeof(*handles), EFI_ERROR_CODE(status));
-		}
-		status = bs->LocateHandle(ByProtocol, &BlockIoProtocolGUID,
+		free(handles);
+		handles = malloc(hsize);
+		if (handles == NULL)
+			efi_panic(EFI_OUT_OF_RESOURCES, "Failed to allocate %d handles\n",
+			    NUM_HANDLES_INIT);
+		status = BS->LocateHandle(ByProtocol, &BlockIoProtocolGUID,
 		    NULL, &hsize, handles);
 		if (status != EFI_SUCCESS)
-			panic("Failed to get device handles (%lu)\n",
-			    EFI_ERROR_CODE(status));
+			efi_panic(status, "Failed to get device handles\n");
 		break;
 	default:
-		panic("Failed to get device handles (%lu)",
-		    EFI_ERROR_CODE(status));
+		efi_panic(status, "Failed to get device handles\n");
+		break;
 	}
 
 	/* Scan all partitions, probing with all modules. */
@@ -642,18 +511,6 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE *Xsystab)
 	printf("   Probing %zu block devices...", nhandles);
 	DPRINTF("\n");
 
-	/* Determine the devpath of our image so we can prefer it. */
-	status = bs->HandleProtocol(image, &LoadedImageGUID, (VOID**)&img);
-	imgpath = NULL;
-	if (status == EFI_SUCCESS) {
-		status = bs->HandleProtocol(img->DeviceHandle, &DevicePathGUID,
-		    (void **)&imgpath);
-		if (status != EFI_SUCCESS)
-			DPRINTF("Failed to get image DevicePath (%lu)\n",
-			    EFI_ERROR_CODE(status));
-		DPRINTF("boot1 imagepath: %s\n", devpath_str(imgpath));
-	}
-
 	for (i = 0; i < nhandles; i++)
 		probe_handle_status(handles[i], imgpath);
 	printf(" done\n");
@@ -667,7 +524,7 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE *Xsystab)
 	try_boot();
 
 	/* If we get here, we're out of luck... */
-	panic("No bootable partitions found!");
+	efi_panic(EFI_LOAD_ERROR, "No bootable partitions found!");
 }
 
 /*
@@ -689,8 +546,12 @@ add_device(dev_info_t **devinfop, dev_info_t *devinfo)
 	dev->next = devinfo;
 }
 
-void
-panic(const char *fmt, ...)
+/*
+ * OK. We totally give up. Exit back to EFI with a sensible status so
+ * it can try the next option on the list.
+ */
+static void
+efi_panic(EFI_STATUS s, const char *fmt, ...)
 {
 	va_list ap;
 
@@ -700,7 +561,7 @@ panic(const char *fmt, ...)
 	va_end(ap);
 	printf("\n");
 
-	while (1) {}
+	BS->Exit(IH, s, 0, NULL);
 }
 
 void
@@ -711,9 +572,9 @@ putchar(int c)
 	if (c == '\n') {
 		buf[0] = '\r';
 		buf[1] = 0;
-		systab->ConOut->OutputString(systab->ConOut, buf);
+		ST->ConOut->OutputString(ST->ConOut, buf);
 	}
 	buf[0] = c;
 	buf[1] = 0;
-	systab->ConOut->OutputString(systab->ConOut, buf);
+	ST->ConOut->OutputString(ST->ConOut, buf);
 }
diff --git sys/boot/efi/boot1/boot_module.h sys/boot/efi/boot1/boot_module.h
index 1917da240310..bfade34fe9cb 100644
--- sys/boot/efi/boot1/boot_module.h
+++ sys/boot/efi/boot1/boot_module.h
@@ -37,7 +37,7 @@
 
 #ifdef EFI_DEBUG
 #define DPRINTF(fmt, args...) printf(fmt, ##args)
-#define DSTALL(d) bs->Stall(d)
+#define DSTALL(d) BS->Stall(d)
 #else
 #define DPRINTF(fmt, ...) {}
 #define DSTALL(d) {}
@@ -106,10 +106,4 @@ extern const boot_module_t zfs_module;
 /* Functions available to modules. */
 extern void add_device(dev_info_t **devinfop, dev_info_t *devinfo);
 extern int vsnprintf(char *str, size_t sz, const char *fmt, va_list ap);
-
-extern EFI_SYSTEM_TABLE *systab;
-extern EFI_BOOT_SERVICES *bs;
-
-extern int devpath_strlcat(char *buf, size_t size, EFI_DEVICE_PATH *devpath);
-extern char *devpath_str(EFI_DEVICE_PATH *devpath);
 #endif
diff --git sys/boot/efi/boot1/fat-amd64.tmpl.bz2.uu sys/boot/efi/boot1/fat-amd64.tmpl.bz2.uu
deleted file mode 100644
index a3ec32d14512..000000000000
--- sys/boot/efi/boot1/fat-amd64.tmpl.bz2.uu
+++ /dev/null
@@ -1,26 +0,0 @@
-FAT template boot filesystem created by generate-fat.sh
-DO NOT EDIT
-$FreeBSD$
-begin 644 fat-amd64.tmpl.bz2
-M0EIH.3%!62936?$)3$,`&U9_____Z^KJZ_^N_^O^Z_^[ON_NK^JJ^KZNKNNJ
-MZNKNZOJ^P`+\#$!0$#1D-,@#)DT#1B&AIDQ,AD:#1HTR`-#)D80Q!D:,)D``
-M#1@F30```&@`$JJ9!_HU4:",3!,F0&C(83`F30T`T!B&!,F`(P3`"#0,@`/2
-M::`#0!D`,C1`T9#3(`R9-`T8AH:9,3(9&@T:-,@#0R9&$,09&C"9```T8)DT
-M```!H``JBD@_2B:FF9)IHQ/1#:@-`:`R#(T`&@:-`!H8FAH:::'J::-`9&1Z
-MFF!'HAB8U/1/*8---3EV+*<ZL\S9BXEC[6I",BE$0BDA$1$%G66TH6PF$0(0
-MXDA!"&<HJ,=-W=K>PZ5:L^\19>>T2K3OA>TUS8M>VJ_;9P7"8;&7&8R51N>F
-M1E%A#6+F9*H@$(9J<K2V7=DH[YSK)LDN618]0S$3"M6JK5JU:M9J*5)44444
-M45JU%:5::U:M6K<:T42HHHHHHYI:J)44444,+B;R5>%%%%%%%$>!!!!!!!!!
-M!!!!!!!#76C@<C1HT:-&C1!!!!!!!!!TX&#!@P8,&#J8Y*BBBBBBBB'@<#!@
-MP8,&#"$4*******.?ZO)U59NW9Y_5RB9=SGK%AO91D/,RW:JUEWJ7CICT$M,
-M]]>OM;-N%^W[!<=H[<-1<QY)W<`%BRT<D`+3375[\FOS\YBD0`RSL8,UV51>
-MRR"SVLL>LG*Z1G+K%N;);>IIYL-7L*D<B5U+2/2:5J6K7K+ON7S<-ZW[`8;$
-M9ESS6Y>[Q-SH;5D;RU_+ZK.+TEMX%K(QQ813V:GS1ZT;"R\!H$K/Z:=%386M
-MPJL.<K?C*J6@DI)\#6KU=,@V3:-JW3>.`X;BN0SS2,I;U*I;;.]O5ZMI9CMV
-MY(;8*\CXX-SPW(^Z5WIWPW0V@?7DLGZ@QJQHC6!J-\U[>@T$2F)3"7UM2V+:
-M+YMFW;MO6^<-@L)R7+<WLVJEO,&HNI+>XU0JB(L,KI:F[OD%ZUC=-0WB\7C?
-M."P'%83CL1BM$RLHD):&7,DOSLY1=2Y,H_EOG`<%YS0,!Q&$XS]')8CXEXP_
-MFX2-7*,#%P;!Q]V)E#BO"83#?\V3C..Y#E,1?L5S&,NC%DQI>;+`DS>NQL5?
-?+6IF915V$0"$)@`M+"Q)@(_9+!?^+N2*<*$AXA*8A@``
-`
-end
diff --git sys/boot/efi/boot1/fat-amd64.tmpl.xz sys/boot/efi/boot1/fat-amd64.tmpl.xz
new file mode 100644
index 000000000000..fb5f94e0e9b6
Binary files /dev/null and sys/boot/efi/boot1/fat-amd64.tmpl.xz differ
diff --git sys/boot/efi/boot1/fat-arm.tmpl.bz2.uu sys/boot/efi/boot1/fat-arm.tmpl.bz2.uu
deleted file mode 100644
index 23e063ee23d7..000000000000
--- sys/boot/efi/boot1/fat-arm.tmpl.bz2.uu
+++ /dev/null
@@ -1,26 +0,0 @@
-FAT template boot filesystem created by generate-fat.sh
-DO NOT EDIT
-$FreeBSD$
-begin 644 fat-arm.tmpl.bz2
-M0EIH.3%!62936>#67)H`&U9_____Z^KJZ_ZN_^O^J_^[OJ[NK^JJ^KZNKNNJ
-MZNKNZOJ^P`+\```"``:`T::-`:8@P@&1D-!H:808)B:#0`T``,$T#!,@PC09
-M#33"9,0`T(`!H#1IHT!IB#"`9&0T&AIA!@F)H-`#0``P30,$R#"-!D--,)DQ
-M`#0@`&@-&FC0&F(,(!D9#0:&F$&"8F@T`-``#!-`P3(,(T&0TTPF3$`-`522
-M$_(H2-DT0T:8C(T!H!ZC30R-&@-`,@&C1H:`:#1M3(T,@:::/1#331FII@)@
-M)Z:)RK5N6<7,O<%[)S4ZD(ODD1"*2"(B(+E99)"P2A$"$.#(((0Z^BHO)97*
-MKNTS2;//!6_,:)5IVI>LPGUM8_)MV&_QO'$<Q>Y;`J/TETR.=50:\2B`0AF9
-M<_.ME;:;0N<9%D%\Q['*&6B4*U:JM6K5JUQ12I)1111116K45I*TJU:M6K<:
-MZ424444448Y-1)111111[F<_6R+%BQ8L6+$X3333333333333333=7Z\E2M6
-MK5JU:M--------->R44444447N#[%BQ8L6+%BQ-M)*******,!0HHHHHHHY[
-M-RR5757;.MS?HE)GL[:M-Q)&/TG09Q6MZ%)XJ4><D]5[S5M>^]M6W8C@..T=
-MV&HOX\@T$`%JWHY$`-/ZV!A?)K>YEEZ1`#*,&#,]G484F/7/RDR%Y<?]FG8X
-M&-?VUWJ*AR)+Z32//:9[#4M6R;8-FVK<,1OG$8K*LE&JR>4Q?U[J:^S$]EPK
-MD81)^D"<A>%H^>2OU:FLC31KK??,_$ES74S%+)U7JU5D:VQD)R-2U3"7[FWW
-M-DPVV;ANV^9-R&"T;G,A>6EJ3:=EVE6ENKC#PZG.]=9:75*G=>-4N\OA]'=-
-M`L[RN\MM/>Z'8:6Q.RAWU+=HOHDCZ6H?8_!^+:-JVS^6Z;UP'#<ERG-[$W'`
-MJ+^19>>T*HB+3GM+4VVS(NQ)&K?`_9IW\,PS#$;QOG"<-QV*QFB8^2)!)H).
-M7(_@P9(R$G)DC<L1NV\;UGV_<)Q'&?FY+%?$Z1Q?DWR/?DC@8W"M'(_<RTBJ
-M2'#=^XK8.,U[CN0Q'_,5MV,Y;F,`QI',DW7EU-_(S>MYF,_-.IT<D58,0"$)
-60`75I:D;]&V2<%_XNY(IPH2'!K+DT```
-`
-end
diff --git sys/boot/efi/boot1/fat-arm.tmpl.xz sys/boot/efi/boot1/fat-arm.tmpl.xz
new file mode 100644
index 000000000000..bb253fcfaf27
Binary files /dev/null and sys/boot/efi/boot1/fat-arm.tmpl.xz differ
diff --git sys/boot/efi/boot1/fat-arm64.tmpl.bz2.uu sys/boot/efi/boot1/fat-arm64.tmpl.bz2.uu
deleted file mode 100644
index 1101deb0227f..000000000000
--- sys/boot/efi/boot1/fat-arm64.tmpl.bz2.uu
+++ /dev/null
@@ -1,26 +0,0 @@
-FAT template boot filesystem created by generate-fat.sh
-DO NOT EDIT
-$FreeBSD$
-begin 644 fat-arm64.tmpl.bz2
-M0EIH.3%!629364C65#T`&U;_____Z^KJZ_^N_^O^J_^[OJ[NK^JJ^KZNKNNJ
-MZNKNZOJ^P`+\#0``0`#0#)D&@TR8AD`,0!D--&`@:!H&@`!B#)IHR:--#(9,
-MAA`8F@Q,0,#52`_U4?J@`&AH```:`:``````T-`T&@R&@T``````````$``T
-M`R9!H-,F(9`#$`9#31@(&@:!H``8@R::,FC30R&3(80&)H,3$#`521(]I1I)
-MF*:8C1Z`F0:`TR,@:&C30:`R!HTT,$!DTT-J:&@R&C)IA,:F33(S4]-3`--$
-MZ--B6=6F1M!<28FJA"+E)$0B<@B(B"TK+:2%L)0B!"'(D$$(9F:@LRO+Q;TL
-MNJ9YY2QZK1*-0US5+UM6R;E?-T_QQG*=-<9#J:#>R[!&-40;(2B`0AE9=956
-MO+"IH&,8M=KEBF(3,A$H5JU%:M6K5K1-.A)------6K35I*TJU:M6K<RU323
-M333338A4FDFFFFFFMX;;,<,#`P,#`P,".`@0($"!`@0($"!`@0J5,OJY*%:M
-M6K5JU:I4J5*E2I4J*E2I4J5*EQ<9OW>[LK*RLK*RLK*INY)IIIIIIL6F3333
-M333=7VLL91VEN[UP[M$I,5X--+@R1:XKTL?G%LL>,D\Y*-*DU+6MB^YMF\7S
-MB,!S6CMPUEU'H'B0`4V-'(@!JKN]^?Z<]*UB`&/9J#*9N@O9.H6FYDN5AT,L
-MS-UAW-A;:O3J61R=".=)EY-(TK3M8US8NM;1N&\<%Q%^Y3"9%=8Z-AUMYA;W
-MPYKK)5;?@6D;$DWL"J0LE*.Q]RA>Q[,;.QH%VDM/KGE)[.JBX4T=56_.0JD:
-MUL&Q73$OR;=NF^?PXKCL%SF=:1FKO&W%A1)O,YWU&FM;1N]W0QW=6U*UDS]Q
-M0M\CN\G:L^KT%O2U%G0;335JJYFAG8I,5$D?:UC\'Z/U;QO7`<)_3CL!R7/=
-M%B=L<+`H+J1;6??%$1%*H8[34M_N$+V0O6O;YJ7!95E7%<9?L%R7-83#:)BY
-M(D$F?DZ4B^,W)%W)SY(X;B/[<9?L\P'_-*YC<N>PGRLLY=[?HU\D?[A\BDOL
-MP)20P6A<ERG+;5S'-<YT&$OF&Z3IKLPY'3DPI,"1F-ET\-^SUZ&2DBC-1`(0
-6E`!:TJ9&`C?I,%_XNY(IPH2"1K*AZ```
-`
-end
diff --git sys/boot/efi/boot1/fat-arm64.tmpl.xz sys/boot/efi/boot1/fat-arm64.tmpl.xz
new file mode 100644
index 000000000000..15df643393fc
Binary files /dev/null and sys/boot/efi/boot1/fat-arm64.tmpl.xz differ
diff --git sys/boot/efi/boot1/fat-i386.tmpl.bz2.uu sys/boot/efi/boot1/fat-i386.tmpl.bz2.uu
deleted file mode 100644
index 74c734d2d371..000000000000
--- sys/boot/efi/boot1/fat-i386.tmpl.bz2.uu
+++ /dev/null
@@ -1,26 +0,0 @@
-FAT template boot filesystem created by generate-fat.sh
-DO NOT EDIT
-$FreeBSD$
-begin 644 fat-i386.tmpl.bz2
-M0EIH.3%!629361/"1&$`&U;_____Z^KJZ_ZN_^O^J_^[OJ[NK^JJ^KZNKNNJ
-MZNKNZOJ^P`+\#0``0`#0&C31H#3$&$`R,AH-#3"#!,30:`&@`!@F@8)D&$:#
-M(::83)B`&@:J0:?ZJ/U30`,@```-`,F@``````R-```R``````````$``T!H
-MTT:`TQ!A`,C(:#0TP@P3$T&@!H``8)H&"9!A&@R&FF$R8@!H"JB(GM*:(3VI
-MJ:;29-DF)ZC1H#)IA&0,C1H`R`VH#3$#(#R(R#(T8FFR$P(R8&AHQ3TTU.M/
-M4CH56XJBSBR%$R"%HBA""$HA"$(0*M)8Q06(C!"`@@OXA`@@[^28LHY?+JTZ
-MY4-*\Q4]=JDWP-DUR\;EM6^<1OW+<Q@,99V]K,<"*#>(;UG$,HJ0@""#-QRL
-MK%;U%@U#)LDM5=:+-(N(1@I4IJ5*E2I54DID4DDDDDE*E)2BI1I4J5*EU;!)
-M%))))))CE"2*222222VAMLQPP,#`P,#`P(X"!`@0($"!`@0($"!"A0[?7Q3*
-M5*E2I4J5"A0H4*%"A04*%"A0H4+.ST&QK*RLK*RLK*RA>Q22222226J1))))
-M)))E.[CDIL[6:1_==<1)HM-I)YW&BA1::S+:)65-0B]%&'M(M<V2\;ANU\XC
-MDN@P6KK!L*\/4/(@`3U-7$@`^+([2[^_Q8V$(`,J\&!FM!,;2+'JN_BM,?5?
-M]<L]7Q:]TM\Q0QVOF&%%<Q:Q[:EL&S7C+-RWS@N,Y+G,!B+A<VSZ\M;XG"\:
-M2OF*-[X56%V1<"`HB+(LZB&<]^9>0NH;>IIW;(JNVEFI;>C')YXV5+]XBB)\
-M[ZEVKL@W3>-^_IQW*<UT6$T3U7N9.RG317VA\.:ZL*J]MKV=;9^M.HBT^EF6
-M68O<S8-.I\NM.KV7E;C6TJ*9&IE4G.PA%#\6O?HW;^%\X#AN0Y3FN@Z;#=9D
-M/V./M9BO$L;+8B:$(3K:ZF<+>(%VV;@O/<5F69<ES'/=%TV"Q&*U3*10B$7C
-MQ3(=>*8X9GXH9&+#BAR'^.4Y;FM,Y[HL!@OY8;$?8S;J7G.0^F*'/Q;^<WV%
-MPQ&*#I-2P'4=5NF"PF&_UB.*Q778RU,6)C18D5_$SNVQL5?-;,[6*$V>A`$$
-7$8`%A.GB7Z'$1=)_XNY(IPH2`GA(C"``
-`
-end
diff --git sys/boot/efi/boot1/fat-i386.tmpl.xz sys/boot/efi/boot1/fat-i386.tmpl.xz
new file mode 100644
index 000000000000..2cde337b62f0
Binary files /dev/null and sys/boot/efi/boot1/fat-i386.tmpl.xz differ
diff --git sys/boot/efi/boot1/generate-fat.sh sys/boot/efi/boot1/generate-fat.sh
index d9dfb27de250..f6bda6f5f11f 100755
--- sys/boot/efi/boot1/generate-fat.sh
+++ sys/boot/efi/boot1/generate-fat.sh
@@ -13,50 +13,14 @@
 
 FAT_SIZE=1600 			#Size in 512-byte blocks of the produced image
 
-BOOT1_SIZE=128k
+BOOT1_OFFSET=2d
+BOOT1_SIZE=384k
 
-#
-# Known filenames
-# amd64:   BOOTx64.efi
-# arm64:   BOOTaa64.efi
-# arm:     BOOTarm.efi
-# i386:    BOOTia32.efi
-#
-if [ -z "$2" ]; then
-	echo "Usage: $0 arch boot-filename"
+if [ $(id -u) != 0 ]; then
+	echo "${0##*/}: must run as root" >&2
 	exit 1
 fi
 
-ARCH=$1
-FILENAME=$2
-
-# Generate 800K FAT image
-OUTPUT_FILE=fat-${ARCH}.tmpl
-
-dd if=/dev/zero of=$OUTPUT_FILE bs=512 count=$FAT_SIZE
-DEVICE=`mdconfig -a -f $OUTPUT_FILE`
-newfs_msdos -F 12 -L EFI $DEVICE
-mkdir stub
-mount -t msdosfs /dev/$DEVICE stub
-
-# Create and bless a directory for the boot loader
-mkdir -p stub/efi/boot
-
-# Make a dummy file for boot1
-echo 'Boot1 START' | dd of=stub/efi/boot/$FILENAME cbs=$BOOT1_SIZE count=1 conv=block
-# Provide a fallback startup.nsh
-echo $FILENAME > stub/efi/boot/startup.nsh
-
-umount stub
-mdconfig -d -u $DEVICE
-rmdir stub
-
-# Locate the offset of the fake file
-BOOT1_OFFSET=$(hd $OUTPUT_FILE | grep 'Boot1 START' | cut -f 1 -d ' ')
-
-# Convert to number of blocks
-BOOT1_OFFSET=$(echo 0x$BOOT1_OFFSET | awk '{printf("%x\n",$1/512);}')
-
 # Record maximum boot1 size in bytes
 case $BOOT1_SIZE in
 *k)
@@ -72,11 +36,44 @@ echo "# \$FreeBSD\$" >> Makefile.fat
 echo "BOOT1_OFFSET=0x$BOOT1_OFFSET" >> Makefile.fat
 echo "BOOT1_MAXSIZE=$BOOT1_MAXSIZE" >> Makefile.fat
 
-bzip2 $OUTPUT_FILE
-echo 'FAT template boot filesystem created by generate-fat.sh' > $OUTPUT_FILE.bz2.uu
-echo 'DO NOT EDIT' >> $OUTPUT_FILE.bz2.uu
-echo "\$FreeBSD\$" >> $OUTPUT_FILE.bz2.uu
-
-uuencode $OUTPUT_FILE.bz2 $OUTPUT_FILE.bz2 >> $OUTPUT_FILE.bz2.uu
-rm $OUTPUT_FILE.bz2
-
+while read ARCH FILENAME; do
+	# Generate 800K FAT image
+	OUTPUT_FILE=fat-${ARCH}.tmpl
+
+	dd if=/dev/zero of=$OUTPUT_FILE bs=512 count=$FAT_SIZE
+	DEVICE=`mdconfig -a -f $OUTPUT_FILE`
+	newfs_msdos -F 12 -L EFI $DEVICE
+	mkdir stub
+	mount -t msdosfs /dev/$DEVICE stub
+
+	# Create and bless a directory for the boot loader
+	mkdir -p stub/efi/boot
+
+	# Make a dummy file for boot1
+	echo 'Boot1 START' | dd of=stub/efi/boot/$FILENAME cbs=$BOOT1_SIZE count=1 conv=block
+	# Provide a fallback startup.nsh
+	echo $FILENAME > stub/efi/boot/startup.nsh
+
+	umount stub
+	mdconfig -d -u $DEVICE
+	rmdir stub
+
+	# Locate the offset of the fake file
+	OFFSET=$(hd $OUTPUT_FILE | grep 'Boot1 START' | cut -f 1 -d ' ')
+
+	# Convert to number of blocks
+	OFFSET=$(echo 0x$OFFSET | awk '{printf("%x\n",$1/512);}')
+
+	# Validate the offset
+	if [ $OFFSET != $BOOT1_OFFSET ]; then
+		echo "Incorrect offset $OFFSET != $BOOT1_OFFSET" >&2
+		exit 1
+	fi
+
+	xz -f $OUTPUT_FILE
+done <<EOF
+	amd64	BOOTx64.efi
+	arm64	BOOTaa64.efi
+	arm	BOOTarm.efi
+	i386	BOOTia32.efi
+EOF
diff --git sys/boot/efi/boot1/ufs_module.c sys/boot/efi/boot1/ufs_module.c
index 0860a860fdf5..4a8016fad2ce 100644
--- sys/boot/efi/boot1/ufs_module.c
+++ sys/boot/efi/boot1/ufs_module.c
@@ -101,8 +101,13 @@ load(const char *filepath, dev_info_t *dev, void **bufp, size_t *bufsize)
 	ssize_t read;
 	void *buf;
 
-	DPRINTF("Loading '%s' from %s\n", filepath, devpath_str(dev->devpath));
-
+#ifdef EFI_DEBUG
+	{
+		CHAR16 *text = efi_devpath_name(dev->devpath);
+		DPRINTF("Loading '%s' from %S\n", filepath, text);
+		efi_free_devpath_name(text);
+	}
+#endif
 	if (init_dev(dev) < 0) {
 		DPRINTF("Failed to init device\n");
 		return (EFI_UNSUPPORTED);
@@ -118,7 +123,7 @@ load(const char *filepath, dev_info_t *dev, void **bufp, size_t *bufsize)
 		return (EFI_INVALID_PARAMETER);
 	}
 
-	if ((status = bs->AllocatePool(EfiLoaderData, size, &buf)) !=
+	if ((status = BS->AllocatePool(EfiLoaderData, size, &buf)) !=
 	    EFI_SUCCESS) {
 		printf("Failed to allocate read buffer %zu for '%s' (%lu)\n",
 		    size, filepath, EFI_ERROR_CODE(status));
@@ -129,7 +134,7 @@ load(const char *filepath, dev_info_t *dev, void **bufp, size_t *bufsize)
 	if ((size_t)read != size) {
 		printf("Failed to read '%s' (%zd != %zu)\n", filepath, read,
 		    size);
-		(void)bs->FreePool(buf);
+		(void)BS->FreePool(buf);
 		return (EFI_INVALID_PARAMETER);
 	}
 
diff --git sys/boot/efi/boot1/zfs_module.c sys/boot/efi/boot1/zfs_module.c
index bf861ccaaf73..e1d1a5a35f17 100644
--- sys/boot/efi/boot1/zfs_module.c
+++ sys/boot/efi/boot1/zfs_module.c
@@ -118,7 +118,7 @@ probe(dev_info_t *dev)
 	EFI_STATUS status;
 
 	/* ZFS consumes the dev on success so we need a copy. */
-	if ((status = bs->AllocatePool(EfiLoaderData, sizeof(*dev),
+	if ((status = BS->AllocatePool(EfiLoaderData, sizeof(*dev),
 	    (void**)&tdev)) != EFI_SUCCESS) {
 		DPRINTF("Failed to allocate tdev (%lu)\n",
 		    EFI_ERROR_CODE(status));
@@ -127,7 +127,7 @@ probe(dev_info_t *dev)
 	memcpy(tdev, dev, sizeof(*dev));
 
 	if (vdev_probe(vdev_read, tdev, &spa) != 0) {
-		(void)bs->FreePool(tdev);
+		(void)BS->FreePool(tdev);
 		return (EFI_UNSUPPORTED);
 	}
 
@@ -150,9 +150,14 @@ load(const char *filepath, dev_info_t *devinfo, void **bufp, size_t *bufsize)
 
 	spa = devinfo->devdata;
 
-	DPRINTF("load: '%s' spa: '%s', devpath: %s\n", filepath, spa->spa_name,
-	    devpath_str(devinfo->devpath));
-
+#ifdef EFI_DEBUG
+	{
+		CHAR16 *text = efi_devpath_name(devinfo->devpath);
+		DPRINTF("load: '%s' spa: '%s', devpath: %S\n", filepath,
+		    spa->spa_name, text);
+		efi_free_devpath_name(text);
+	}
+#endif
 	if ((err = zfs_spa_init(spa)) != 0) {
 		DPRINTF("Failed to load pool '%s' (%d)\n", spa->spa_name, err);
 		return (EFI_NOT_FOUND);
@@ -180,7 +185,7 @@ load(const char *filepath, dev_info_t *devinfo, void **bufp, size_t *bufsize)
 		return (EFI_INVALID_PARAMETER);
 	}
 
-	if ((status = bs->AllocatePool(EfiLoaderData, (UINTN)st.st_size, &buf))
+	if ((status = BS->AllocatePool(EfiLoaderData, (UINTN)st.st_size, &buf))
 	    != EFI_SUCCESS) {
 		printf("Failed to allocate load buffer %jd for pool '%s' for '%s' "
 		    "(%lu)\n", (intmax_t)st.st_size, spa->spa_name, filepath, EFI_ERROR_CODE(status));
@@ -190,7 +195,7 @@ load(const char *filepath, dev_info_t *devinfo, void **bufp, size_t *bufsize)
 	if ((err = dnode_read(spa, &dn, 0, buf, st.st_size)) != 0) {
 		printf("Failed to read node from %s (%d)\n", spa->spa_name,
 		    err);
-		(void)bs->FreePool(buf);
+		(void)BS->FreePool(buf);
 		return (EFI_INVALID_PARAMETER);
 	}
 
diff --git sys/boot/efi/include/efiapi.h sys/boot/efi/include/efiapi.h
index 92eb5131f2d7..8bab2173c0a5 100644
--- sys/boot/efi/include/efiapi.h
+++ sys/boot/efi/include/efiapi.h
@@ -247,7 +247,7 @@ EFI_STATUS
 typedef
 EFI_STATUS
 (EFIAPI *EFI_SET_VARIABLE) (
-    IN CHAR16                       *VariableName,
+    IN const CHAR16                 *VariableName,
     IN EFI_GUID                     *VendorGuid,
     IN UINT32                       Attributes,
     IN UINTN                        DataSize,
@@ -353,7 +353,7 @@ EFI_STATUS
     IN EFI_STATUS                   ExitStatus,
     IN UINTN                        ExitDataSize,
     IN CHAR16                       *ExitData OPTIONAL
-    );
+    ) __dead2;
 
 typedef
 EFI_STATUS
diff --git sys/boot/efi/include/efichar.h sys/boot/efi/include/efichar.h
index 49952e9778a4..2fa4ed44792c 100644
--- sys/boot/efi/include/efichar.h
+++ sys/boot/efi/include/efichar.h
@@ -31,5 +31,6 @@
 
 int ucs2_to_utf8(const efi_char *, char **);
 int utf8_to_ucs2(const char *, efi_char **, size_t *);
+int ucs2len(const efi_char *);
 
 #endif /* _BOOT_EFI_EFICHAR_H_ */
diff --git sys/boot/efi/include/efidevp.h sys/boot/efi/include/efidevp.h
index 4f252472a80c..cda6b41fdd4f 100644
--- sys/boot/efi/include/efidevp.h
+++ sys/boot/efi/include/efidevp.h
@@ -52,7 +52,7 @@ typedef struct _EFI_DEVICE_PATH {
 
 #define DevicePathType(a)           ( ((a)->Type) & EFI_DP_TYPE_MASK )
 #define DevicePathSubType(a)        ( (a)->SubType )
-#define DevicePathNodeLength(a)     ( ((a)->Length[0]) | ((a)->Length[1] << 8) )
+#define DevicePathNodeLength(a)     ((size_t)(((a)->Length[0]) | ((a)->Length[1] << 8)))
 #define NextDevicePathNode(a)       ( (EFI_DEVICE_PATH *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a)))
 #define IsDevicePathType(a, t)      ( DevicePathType(a) == t )
 #define IsDevicePathEndType(a)      IsDevicePathType(a, END_DEVICE_PATH_TYPE)
diff --git sys/boot/efi/include/efilib.h sys/boot/efi/include/efilib.h
index 2804a9154494..f625e59e4ff9 100644
--- sys/boot/efi/include/efilib.h
+++ sys/boot/efi/include/efilib.h
@@ -61,6 +61,7 @@ typedef struct pdinfo
 } pdinfo_t;
 
 pdinfo_list_t *efiblk_get_pdinfo_list(struct devsw *dev);
+pdinfo_t *efiblk_get_pdinfo(struct devdesc *dev);
 
 void *efi_get_table(EFI_GUID *tbl);
 
@@ -89,8 +90,10 @@ EFI_STATUS errno_to_efi_status(int errno);
 void efi_time_init(void);
 void efi_time_fini(void);
 
+EFI_STATUS efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE* Xsystab);
+
 EFI_STATUS main(int argc, CHAR16 *argv[]);
-void exit(EFI_STATUS status);
+void exit(EFI_STATUS status) __dead2;
 void delay(int usecs);
 
 /* EFI environment initialization. */
diff --git sys/boot/efi/include/efizfs.h sys/boot/efi/include/efizfs.h
index 887d756fc111..511bd3826c66 100644
--- sys/boot/efi/include/efizfs.h
+++ sys/boot/efi/include/efizfs.h
@@ -45,6 +45,7 @@ extern uint64_t pool_guid;
 
 extern void efi_zfs_probe(void);
 extern zfsinfo_list_t *efizfs_get_zfsinfo_list(void);
+extern EFI_HANDLE efizfs_get_handle_by_guid(uint64_t);
 
 #endif
 
diff --git sys/boot/efi/libefi/Makefile sys/boot/efi/libefi/Makefile
index 100eb196d8c3..8fcf25956b47 100644
--- sys/boot/efi/libefi/Makefile
+++ sys/boot/efi/libefi/Makefile
@@ -11,7 +11,7 @@ LIB=	efi
 INTERNALLIB=
 WARNS?=	2
 
-SRCS=	delay.c devpath.c efi_console.c efinet.c efipart.c env.c errno.c \
+SRCS=	delay.c devpath.c efi_console.c efichar.c efinet.c efipart.c env.c errno.c \
 	handles.c wchar.c libefi.c efi_driver_utils.c efizfs.c devicename.c
 
 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
@@ -56,4 +56,6 @@ CFLAGS+= ${FORMAT_EXTENSIONS}
 CFLAGS+= -DTERM_EMU
 .endif
 
+CFLAGS+= -DLIBEFI
+
 .include <bsd.lib.mk>
diff --git sys/boot/efi/libefi/efichar.c sys/boot/efi/libefi/efichar.c
index 20022710b932..dad4e963300c 100644
--- sys/boot/efi/libefi/efichar.c
+++ sys/boot/efi/libefi/efichar.c
@@ -29,15 +29,30 @@ __FBSDID("$FreeBSD$");
 
 #include <sys/types.h>
 #include <errno.h>
+#ifdef LIBEFI
+#include <stand.h>
+#else
 #include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#endif
 #include <sys/efi.h>
 #include <machine/efi.h>
 
 #include "efichar.h"
 
+int
+ucs2len(const efi_char *str)
+{
+	int i;
+
+	i = 0;
+	while (*str++)
+		i++;
+	return (i);
+}
+
 /*
  * If nm were converted to utf8, what what would strlen
  * return on the resulting string?
diff --git sys/boot/efi/libefi/efipart.c sys/boot/efi/libefi/efipart.c
index adcb0b551008..13c70c8151cf 100644
--- sys/boot/efi/libefi/efipart.c
+++ sys/boot/efi/libefi/efipart.c
@@ -101,16 +101,33 @@ static pdinfo_list_t hdinfo;
 static EFI_HANDLE *efipart_handles = NULL;
 static UINTN efipart_nhandles = 0;
 
-static pdinfo_t *
-efiblk_get_pdinfo(pdinfo_list_t *pdi, int unit)
+pdinfo_list_t *
+efiblk_get_pdinfo_list(struct devsw *dev)
 {
-	pdinfo_t *pd;
+	if (dev->dv_type == DEVT_DISK)
+		return (&hdinfo);
+	if (dev->dv_type == DEVT_CD)
+		return (&cdinfo);
+	if (dev->dv_type == DEVT_FD)
+		return (&fdinfo);
+	return (NULL);
+}
+
+pdinfo_t *
+efiblk_get_pdinfo(struct devdesc *dev)
+{
+	pdinfo_list_t *pdi;
+	pdinfo_t *pd = NULL;
+
+	pdi = efiblk_get_pdinfo_list(dev->d_dev);
+	if (pdi == NULL)
+		return (pd);
 
 	STAILQ_FOREACH(pd, pdi, pd_link) {
-		if (pd->pd_unit == unit)
+		if (pd->pd_unit == dev->d_unit)
 			return (pd);
 	}
-	return (NULL);
+	return (pd);
 }
 
 static int
@@ -671,24 +688,11 @@ efipart_printhd(int verbose)
 	return (efipart_print_common(&efipart_hddev, &hdinfo, verbose));
 }
 
-pdinfo_list_t *
-efiblk_get_pdinfo_list(struct devsw *dev)
-{
-	if (dev->dv_type == DEVT_DISK)
-		return (&hdinfo);
-	if (dev->dv_type == DEVT_CD)
-		return (&cdinfo);
-	if (dev->dv_type == DEVT_FD)
-		return (&fdinfo);
-	return (NULL);
-}
-
 static int
 efipart_open(struct open_file *f, ...)
 {
 	va_list args;
 	struct disk_devdesc *dev;
-	pdinfo_list_t *pdi;
 	pdinfo_t *pd;
 	EFI_BLOCK_IO *blkio;
 	EFI_STATUS status;
@@ -699,11 +703,7 @@ efipart_open(struct open_file *f, ...)
 	if (dev == NULL)
 		return (EINVAL);
 
-	pdi = efiblk_get_pdinfo_list(dev->d_dev);
-	if (pdi == NULL)
-		return (EINVAL);
-
-	pd = efiblk_get_pdinfo(pdi, dev->d_unit);
+	pd = efiblk_get_pdinfo((struct devdesc *)dev);
 	if (pd == NULL)
 		return (EIO);
 
@@ -723,9 +723,20 @@ efipart_open(struct open_file *f, ...)
 		pd->pd_bcache = bcache_allocate();
 
 	if (dev->d_dev->dv_type == DEVT_DISK) {
-		return (disk_open(dev,
+		int rc;
+
+		rc = disk_open(dev,
 		    blkio->Media->BlockSize * (blkio->Media->LastBlock + 1),
-		    blkio->Media->BlockSize));
+		    blkio->Media->BlockSize);
+		if (rc != 0) {
+			pd->pd_open--;
+			if (pd->pd_open == 0) {
+				pd->pd_blkio = NULL;
+				bcache_free(pd->pd_bcache);
+				pd->pd_bcache = NULL;
+			}
+		}
+		return (rc);
 	}
 	return (0);
 }
@@ -734,17 +745,13 @@ static int
 efipart_close(struct open_file *f)
 {
 	struct disk_devdesc *dev;
-	pdinfo_list_t *pdi;
 	pdinfo_t *pd;
 
 	dev = (struct disk_devdesc *)(f->f_devdata);
 	if (dev == NULL)
 		return (EINVAL);
-	pdi = efiblk_get_pdinfo_list(dev->d_dev);
-	if (pdi == NULL)
-		return (EINVAL);
 
-	pd = efiblk_get_pdinfo(pdi, dev->d_unit);
+	pd = efiblk_get_pdinfo((struct devdesc *)dev);
 	if (pd == NULL)
 		return (EINVAL);
 
@@ -763,18 +770,14 @@ static int
 efipart_ioctl(struct open_file *f, u_long cmd, void *data)
 {
 	struct disk_devdesc *dev;
-	pdinfo_list_t *pdi;
 	pdinfo_t *pd;
 	int rc;
 
 	dev = (struct disk_devdesc *)(f->f_devdata);
 	if (dev == NULL)
 		return (EINVAL);
-	pdi = efiblk_get_pdinfo_list(dev->d_dev);
-	if (pdi == NULL)
-		return (EINVAL);
 
-	pd = efiblk_get_pdinfo(pdi, dev->d_unit);
+	pd = efiblk_get_pdinfo((struct devdesc *)dev);
 	if (pd == NULL)
 		return (EINVAL);
 
@@ -847,17 +850,13 @@ efipart_strategy(void *devdata, int rw, daddr_t blk, size_t size,
 {
 	struct bcache_devdata bcd;
 	struct disk_devdesc *dev;
-	pdinfo_list_t *pdi;
 	pdinfo_t *pd;
 
 	dev = (struct disk_devdesc *)devdata;
 	if (dev == NULL)
 		return (EINVAL);
-	pdi = efiblk_get_pdinfo_list(dev->d_dev);
-	if (pdi == NULL)
-		return (EINVAL);
 
-	pd = efiblk_get_pdinfo(pdi, dev->d_unit);
+	pd = efiblk_get_pdinfo((struct devdesc *)dev);
 	if (pd == NULL)
 		return (EINVAL);
 
@@ -881,7 +880,6 @@ efipart_realstrategy(void *devdata, int rw, daddr_t blk, size_t size,
     char *buf, size_t *rsize)
 {
 	struct disk_devdesc *dev = (struct disk_devdesc *)devdata;
-	pdinfo_list_t *pdi;
 	pdinfo_t *pd;
 	EFI_BLOCK_IO *blkio;
 	uint64_t off, disk_blocks, d_offset = 0;
@@ -893,11 +891,7 @@ efipart_realstrategy(void *devdata, int rw, daddr_t blk, size_t size,
 	if (dev == NULL || blk < 0)
 		return (EINVAL);
 
-	pdi = efiblk_get_pdinfo_list(dev->d_dev);
-	if (pdi == NULL)
-		return (EINVAL);
-
-	pd = efiblk_get_pdinfo(pdi, dev->d_unit);
+	pd = efiblk_get_pdinfo((struct devdesc *)dev);
 	if (pd == NULL)
 		return (EINVAL);
 
@@ -930,7 +924,8 @@ efipart_realstrategy(void *devdata, int rw, daddr_t blk, size_t size,
 		readstart = off / blkio->Media->BlockSize;
 
 		if (diskend <= readstart) {
-			*rsize = 0;
+			if (rsize != NULL)
+				*rsize = 0;
 
 			return (EIO);
 		}
diff --git sys/boot/efi/libefi/efizfs.c sys/boot/efi/libefi/efizfs.c
index 364e2661953f..8a93b9965db0 100644
--- sys/boot/efi/libefi/efizfs.c
+++ sys/boot/efi/libefi/efizfs.c
@@ -52,6 +52,19 @@ efizfs_get_zfsinfo_list(void)
 	return (&zfsinfo);
 }
 
+EFI_HANDLE
+efizfs_get_handle_by_guid(uint64_t guid)
+{
+	zfsinfo_t *zi;
+
+	STAILQ_FOREACH(zi, &zfsinfo, zi_link) {
+		if (zi->zi_pool_guid == guid) {
+			return (zi->zi_handle);
+		}
+	}
+	return (NULL);
+}
+
 static void
 insert_zfs(EFI_HANDLE handle, uint64_t guid)
 {
diff --git sys/boot/efi/libefi/libefi.c sys/boot/efi/libefi/libefi.c
index 0807eb58af87..e0a721f58b32 100644
--- sys/boot/efi/libefi/libefi.c
+++ sys/boot/efi/libefi/libefi.c
@@ -37,27 +37,6 @@ EFI_SYSTEM_TABLE	*ST;
 EFI_BOOT_SERVICES	*BS;
 EFI_RUNTIME_SERVICES	*RS;
 
-static EFI_PHYSICAL_ADDRESS heap;
-static UINTN heapsize;
-
-static CHAR16 *
-arg_skipsep(CHAR16 *argp)
-{
-
-	while (*argp == ' ' || *argp == '\t' || *argp == '\n')
-		argp++;
-	return (argp);
-}
-
-static CHAR16 *
-arg_skipword(CHAR16 *argp)
-{
-
-	while (*argp && *argp != ' ' && *argp != '\t' && *argp != '\n')
-		argp++;
-	return (argp);
-}
-
 void *
 efi_get_table(EFI_GUID *tbl)
 {
@@ -71,128 +50,3 @@ efi_get_table(EFI_GUID *tbl)
 	}
 	return (NULL);
 }
-
-void exit(EFI_STATUS exit_code)
-{
-
-	BS->FreePages(heap, EFI_SIZE_TO_PAGES(heapsize));
-	BS->Exit(IH, exit_code, 0, NULL);
-}
-
-void
-efi_main(EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *system_table)
-{
-	static EFI_GUID image_protocol = LOADED_IMAGE_PROTOCOL;
-	static EFI_GUID console_control_protocol =
-	    EFI_CONSOLE_CONTROL_PROTOCOL_GUID;
-	EFI_CONSOLE_CONTROL_PROTOCOL *console_control = NULL;
-	EFI_LOADED_IMAGE *img;
-	CHAR16 *argp, *args, **argv;
-	EFI_STATUS status;
-	int argc, addprog;
-
-	IH = image_handle;
-	ST = system_table;
-	BS = ST->BootServices;
-	RS = ST->RuntimeServices;
-
-	status = BS->LocateProtocol(&console_control_protocol, NULL,
-	    (VOID **)&console_control);
-	if (status == EFI_SUCCESS)
-		(void)console_control->SetMode(console_control,
-		    EfiConsoleControlScreenText);
-
-	heapsize = 64 * 1024 * 1024;
-	status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData,
-	    EFI_SIZE_TO_PAGES(heapsize), &heap);
-	if (status != EFI_SUCCESS)
-		BS->Exit(IH, status, 0, NULL);
-
-	setheap((void *)(uintptr_t)heap, (void *)(uintptr_t)(heap + heapsize));
-
-	/* Use exit() from here on... */
-
-	status = BS->HandleProtocol(IH, &image_protocol, (VOID**)&img);
-	if (status != EFI_SUCCESS)
-		exit(status);
-
-	/*
-	 * Pre-process the (optional) load options. If the option string
-	 * is given as an ASCII string, we use a poor man's ASCII to
-	 * Unicode-16 translation. The size of the option string as given
-	 * to us includes the terminating null character. We assume the
-	 * string is an ASCII string if strlen() plus the terminating
-	 * '\0' is less than LoadOptionsSize. Even if all Unicode-16
-	 * characters have the upper 8 bits non-zero, the terminating
-	 * null character will cause a one-off.
-	 * If the string is already in Unicode-16, we make a copy so that
-	 * we know we can always modify the string.
-	 */
-	if (img->LoadOptionsSize > 0 && img->LoadOptions != NULL) {
-		if (img->LoadOptionsSize == strlen(img->LoadOptions) + 1) {
-			args = malloc(img->LoadOptionsSize << 1);
-			for (argc = 0; argc < img->LoadOptionsSize; argc++)
-				args[argc] = ((char*)img->LoadOptions)[argc];
-		} else {
-			args = malloc(img->LoadOptionsSize);
-			memcpy(args, img->LoadOptions, img->LoadOptionsSize);
-		}
-	} else
-		args = NULL;
-
-	/*
-	 * Use a quick and dirty algorithm to build the argv vector. We
-	 * first count the number of words. Then, after allocating the
-	 * vector, we split the string up. We don't deal with quotes or
-	 * other more advanced shell features.
-	 * The EFI shell will pass the name of the image as the first
-	 * word in the argument list. This does not happen if we're
-	 * loaded by the boot manager. This is not so easy to figure
-	 * out though. The ParentHandle is not always NULL, because
-	 * there can be a function (=image) that will perform the task
-	 * for the boot manager.
-	 */
-	/* Part 1: Figure out if we need to add our program name. */
-	addprog = (args == NULL || img->ParentHandle == NULL ||
-	    img->FilePath == NULL) ? 1 : 0;
-	if (!addprog) {
-		addprog =
-		    (DevicePathType(img->FilePath) != MEDIA_DEVICE_PATH ||
-		     DevicePathSubType(img->FilePath) != MEDIA_FILEPATH_DP ||
-		     DevicePathNodeLength(img->FilePath) <=
-			sizeof(FILEPATH_DEVICE_PATH)) ? 1 : 0;
-		if (!addprog) {
-			/* XXX todo. */
-		}
-	}
-	/* Part 2: count words. */
-	argc = (addprog) ? 1 : 0;
-	argp = args;
-	while (argp != NULL && *argp != 0) {
-		argp = arg_skipsep(argp);
-		if (*argp == 0)
-			break;
-		argc++;
-		argp = arg_skipword(argp);
-	}
-	/* Part 3: build vector. */
-	argv = malloc((argc + 1) * sizeof(CHAR16*));
-	argc = 0;
-	if (addprog)
-		argv[argc++] = (CHAR16 *)L"loader.efi";
-	argp = args;
-	while (argp != NULL && *argp != 0) {
-		argp = arg_skipsep(argp);
-		if (*argp == 0)
-			break;
-		argv[argc++] = argp;
-		argp = arg_skipword(argp);
-		/* Terminate the words. */
-		if (*argp != 0)
-			*argp++ = 0;
-	}
-	argv[argc] = NULL;
-
-	status = main(argc, argv);
-	exit(status);
-}
diff --git sys/boot/efi/loader/Makefile sys/boot/efi/loader/Makefile
index db1c3fb2f86a..8e65c02e8e95 100644
--- sys/boot/efi/loader/Makefile
+++ sys/boot/efi/loader/Makefile
@@ -16,6 +16,7 @@ SRCS=	autoload.c \
 	bootinfo.c \
 	conf.c \
 	copy.c \
+	efi_main.c \
 	main.c \
 	self_reloc.c \
 	smbios.c \
diff --git sys/boot/efi/loader/arch/amd64/Makefile.inc sys/boot/efi/loader/arch/amd64/Makefile.inc
index 5649c1271f18..071afa100611 100644
--- sys/boot/efi/loader/arch/amd64/Makefile.inc
+++ sys/boot/efi/loader/arch/amd64/Makefile.inc
@@ -9,7 +9,8 @@ SRCS+=	amd64_tramp.S \
 
 .PATH:	${.CURDIR}/../../i386/libi386
 SRCS+=	nullconsole.c \
-	comconsole.c
+	comconsole.c \
+	spinconsole.c
 
-CFLAGS+=	-fPIC
+CFLAGS+=	-fPIC -DTERM_EMU
 LDFLAGS+=	-Wl,-znocombreloc
diff --git sys/boot/efi/loader/arch/i386/Makefile.inc sys/boot/efi/loader/arch/i386/Makefile.inc
index 4e08c5376336..a1af3cdd84c3 100644
--- sys/boot/efi/loader/arch/i386/Makefile.inc
+++ sys/boot/efi/loader/arch/i386/Makefile.inc
@@ -7,7 +7,8 @@ SRCS+=	start.S \
 
 .PATH:	${.CURDIR}/../../i386/libi386
 SRCS+=	nullconsole.c \
-	comconsole.c
+	comconsole.c \
+	spinconsole.c
 
-CFLAGS+=	-fPIC
+CFLAGS+=	-fPIC -DTERM_EMU
 LDFLAGS+=	-Wl,-znocombreloc
diff --git sys/boot/efi/loader/bootinfo.c sys/boot/efi/loader/bootinfo.c
index 34892c681bcf..bd4b3ee86217 100644
--- sys/boot/efi/loader/bootinfo.c
+++ sys/boot/efi/loader/bootinfo.c
@@ -267,6 +267,13 @@ bi_load_efi_data(struct preloaded_file *kfp)
 
 	efisz = (sizeof(struct efi_map_header) + 0xf) & ~0xf;
 
+	/*
+	 * Assgin size of EFI_MEMORY_DESCRIPTOR to keep compatible with
+	 * u-boot which doesn't fill this value when buffer for memory
+	 * descriptors is too small (eg. 0 to obtain memory map size)
+	 */
+	mmsz = sizeof(EFI_MEMORY_DESCRIPTOR);
+
 	/*
 	 * It is possible that the first call to ExitBootServices may change
 	 * the map key. Fetch a new map key and retry ExitBootServices in that
diff --git sys/boot/efi/loader/conf.c sys/boot/efi/loader/conf.c
index a98d63f1b764..cea95b3db104 100644
--- sys/boot/efi/loader/conf.c
+++ sys/boot/efi/loader/conf.c
@@ -69,6 +69,7 @@ extern struct console efi_console;
 #if defined(__amd64__) || defined(__i386__)
 extern struct console comconsole;
 extern struct console nullconsole;
+extern struct console spinconsole;
 #endif
 
 struct console *consoles[] = {
@@ -76,6 +77,7 @@ struct console *consoles[] = {
 #if defined(__amd64__) || defined(__i386__)
 	&comconsole,
 	&nullconsole,
+	&spinconsole,
 #endif
 	NULL
 };
diff --git sys/boot/efi/loader/efi_main.c sys/boot/efi/loader/efi_main.c
new file mode 100644
index 000000000000..045ee9bc2f7a
--- /dev/null
+++ sys/boot/efi/loader/efi_main.c
@@ -0,0 +1,181 @@
+/*-
+ * Copyright (c) 2000 Doug Rabson
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <efi.h>
+#include <eficonsctl.h>
+#include <efilib.h>
+#include <stand.h>
+
+static EFI_PHYSICAL_ADDRESS heap;
+static UINTN heapsize;
+
+void
+exit(EFI_STATUS exit_code)
+{
+
+	BS->FreePages(heap, EFI_SIZE_TO_PAGES(heapsize));
+	BS->Exit(IH, exit_code, 0, NULL);
+}
+
+static CHAR16 *
+arg_skipsep(CHAR16 *argp)
+{
+
+	while (*argp == ' ' || *argp == '\t' || *argp == '\n')
+		argp++;
+	return (argp);
+}
+
+static CHAR16 *
+arg_skipword(CHAR16 *argp)
+{
+
+	while (*argp && *argp != ' ' && *argp != '\t' && *argp != '\n')
+		argp++;
+	return (argp);
+}
+
+EFI_STATUS
+efi_main(EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *system_table)
+{
+	static EFI_GUID image_protocol = LOADED_IMAGE_PROTOCOL;
+	static EFI_GUID console_control_protocol =
+	    EFI_CONSOLE_CONTROL_PROTOCOL_GUID;
+	EFI_CONSOLE_CONTROL_PROTOCOL *console_control = NULL;
+	EFI_LOADED_IMAGE *img;
+	CHAR16 *argp, *args, **argv;
+	EFI_STATUS status;
+	int argc, addprog;
+
+	IH = image_handle;
+	ST = system_table;
+	BS = ST->BootServices;
+	RS = ST->RuntimeServices;
+
+	status = BS->LocateProtocol(&console_control_protocol, NULL,
+	    (VOID **)&console_control);
+	if (status == EFI_SUCCESS)
+		(void)console_control->SetMode(console_control,
+		    EfiConsoleControlScreenText);
+
+	heapsize = 64 * 1024 * 1024;
+	status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData,
+	    EFI_SIZE_TO_PAGES(heapsize), &heap);
+	if (status != EFI_SUCCESS)
+		BS->Exit(IH, status, 0, NULL);
+
+	setheap((void *)(uintptr_t)heap, (void *)(uintptr_t)(heap + heapsize));
+
+	/* Use exit() from here on... */
+
+	status = BS->HandleProtocol(IH, &image_protocol, (VOID**)&img);
+	if (status != EFI_SUCCESS)
+		exit(status);
+
+	/*
+	 * Pre-process the (optional) load options. If the option string
+	 * is given as an ASCII string, we use a poor man's ASCII to
+	 * Unicode-16 translation. The size of the option string as given
+	 * to us includes the terminating null character. We assume the
+	 * string is an ASCII string if strlen() plus the terminating
+	 * '\0' is less than LoadOptionsSize. Even if all Unicode-16
+	 * characters have the upper 8 bits non-zero, the terminating
+	 * null character will cause a one-off.
+	 * If the string is already in Unicode-16, we make a copy so that
+	 * we know we can always modify the string.
+	 */
+	if (img->LoadOptionsSize > 0 && img->LoadOptions != NULL) {
+		if (img->LoadOptionsSize == strlen(img->LoadOptions) + 1) {
+			args = malloc(img->LoadOptionsSize << 1);
+			for (argc = 0; argc < (int)img->LoadOptionsSize; argc++)
+				args[argc] = ((char*)img->LoadOptions)[argc];
+		} else {
+			args = malloc(img->LoadOptionsSize);
+			memcpy(args, img->LoadOptions, img->LoadOptionsSize);
+		}
+	} else
+		args = NULL;
+
+	/*
+	 * Use a quick and dirty algorithm to build the argv vector. We
+	 * first count the number of words. Then, after allocating the
+	 * vector, we split the string up. We don't deal with quotes or
+	 * other more advanced shell features.
+	 * The EFI shell will pass the name of the image as the first
+	 * word in the argument list. This does not happen if we're
+	 * loaded by the boot manager. This is not so easy to figure
+	 * out though. The ParentHandle is not always NULL, because
+	 * there can be a function (=image) that will perform the task
+	 * for the boot manager.
+	 */
+	/* Part 1: Figure out if we need to add our program name. */
+	addprog = (args == NULL || img->ParentHandle == NULL ||
+	    img->FilePath == NULL) ? 1 : 0;
+	if (!addprog) {
+		addprog =
+		    (DevicePathType(img->FilePath) != MEDIA_DEVICE_PATH ||
+		     DevicePathSubType(img->FilePath) != MEDIA_FILEPATH_DP ||
+		     DevicePathNodeLength(img->FilePath) <=
+			sizeof(FILEPATH_DEVICE_PATH)) ? 1 : 0;
+		if (!addprog) {
+			/* XXX todo. */
+		}
+	}
+	/* Part 2: count words. */
+	argc = (addprog) ? 1 : 0;
+	argp = args;
+	while (argp != NULL && *argp != 0) {
+		argp = arg_skipsep(argp);
+		if (*argp == 0)
+			break;
+		argc++;
+		argp = arg_skipword(argp);
+	}
+	/* Part 3: build vector. */
+	argv = malloc((argc + 1) * sizeof(CHAR16*));
+	argc = 0;
+	if (addprog)
+		argv[argc++] = (CHAR16 *)L"loader.efi";
+	argp = args;
+	while (argp != NULL && *argp != 0) {
+		argp = arg_skipsep(argp);
+		if (*argp == 0)
+			break;
+		argv[argc++] = argp;
+		argp = arg_skipword(argp);
+		/* Terminate the words. */
+		if (*argp != 0)
+			*argp++ = 0;
+	}
+	argv[argc] = NULL;
+
+	status = main(argc, argv);
+	exit(status);
+	return (status);
+}
diff --git sys/boot/efi/loader/main.c sys/boot/efi/loader/main.c
index 895bb18752cc..8ebfab4490e5 100644
--- sys/boot/efi/loader/main.c
+++ sys/boot/efi/loader/main.c
@@ -871,9 +871,45 @@ command_chain(int argc, char *argv[])
 		*(--argv) = 0;
 	}
 
-	if (efi_getdev((void **)&dev, name, (const char **)&path) == 0)
-		loaded_image->DeviceHandle =
-		    efi_find_handle(dev->d_dev, dev->d_unit);
+	if (efi_getdev((void **)&dev, name, (const char **)&path) == 0) {
+#ifdef EFI_ZFS_BOOT
+		struct zfs_devdesc *z_dev;
+#endif
+		struct disk_devdesc *d_dev;
+		pdinfo_t *hd, *pd;
+
+		switch (dev->d_type) {
+#ifdef EFI_ZFS_BOOT
+		case DEVT_ZFS:
+			z_dev = (struct zfs_devdesc *)dev;
+			loaded_image->DeviceHandle =
+			    efizfs_get_handle_by_guid(z_dev->pool_guid);
+			break;
+#endif
+		case DEVT_NET:
+			loaded_image->DeviceHandle =
+			    efi_find_handle(dev->d_dev, dev->d_unit);
+			break;
+		default:
+			hd = efiblk_get_pdinfo(dev);
+			if (STAILQ_EMPTY(&hd->pd_part)) {
+				loaded_image->DeviceHandle = hd->pd_handle;
+				break;
+			}
+			d_dev = (struct disk_devdesc *)dev;
+			STAILQ_FOREACH(pd, &hd->pd_part, pd_link) {
+				/*
+				 * d_partition should be 255
+				 */
+				if (pd->pd_unit == d_dev->d_slice) {
+					loaded_image->DeviceHandle =
+					    pd->pd_handle;
+					break;
+				}
+			}
+			break;
+		}
+	}
 
 	dev_cleanup();
 	status = BS->StartImage(loaderhandle, NULL, NULL);
diff --git sys/boot/fdt/dts/arm/zedboard.dts sys/boot/fdt/dts/arm/zedboard.dts
index 481b9111a35e..d17fd0eb6ea5 100644
--- sys/boot/fdt/dts/arm/zedboard.dts
+++ sys/boot/fdt/dts/arm/zedboard.dts
@@ -30,7 +30,7 @@
 
 / {
 	model = "zedboard";
-	compatible = "digilent,zedboard";
+	compatible = "digilent,zedboard", "xlnx,zynq-7000";
 
 	memory {
 		// First megabyte isn't accessible by all interconnect masters.
diff --git sys/boot/fdt/dts/arm/zybo.dts sys/boot/fdt/dts/arm/zybo.dts
index c4cdc232b9cd..2364d80d5be9 100644
--- sys/boot/fdt/dts/arm/zybo.dts
+++ sys/boot/fdt/dts/arm/zybo.dts
@@ -30,7 +30,7 @@
 
 / {
 	model = "zybo";
-	compatible = "digilent,zybo";
+	compatible = "digilent,zybo", "xlnx,zynq-7000";
 
 	memory {
 		// First megabyte isn't accessible by all interconnect masters.
diff --git sys/boot/forth/loader.conf sys/boot/forth/loader.conf
index 0d5e91d8df96..29b3465f080d 100644
--- sys/boot/forth/loader.conf
+++ sys/boot/forth/loader.conf
@@ -525,6 +525,7 @@ coretemp_load="NO"		# Intel Core CPU temperature monitor
 vkbd_load="NO"			# Virtual AT keyboard interface
 vpd_load="NO"			# Vital Product Data kernel interface
 vpo_load="NO"			# Parallel to SCSI interface driver
+amdsmn_load="NO"		# AMD Family 17h System Management Network
 amdtemp_load="NO"		# AMD K8/K10/K11 temperature monitor
 tpm_load="NO"			# Trusted Platform Module
 wbwd_load="NO"			# Winbond watchdog
diff --git sys/boot/geli/geliboot.c sys/boot/geli/geliboot.c
index 93264ecc8b9e..2fca7ba513db 100644
--- sys/boot/geli/geliboot.c
+++ sys/boot/geli/geliboot.c
@@ -220,8 +220,9 @@ geli_taste(int read_func(void *vdev, void *priv, off_t off, void *buf,
 /*
  * Attempt to decrypt the device
  */
-int
-geli_attach(struct dsk *dskp, const char *passphrase, const u_char *mkeyp)
+static int
+geli_attach(struct geli_entry *ge, struct dsk *dskp, const char *passphrase,
+    const u_char *mkeyp)
 {
 	u_char key[G_ELI_USERKEYLEN], mkey[G_ELI_DATAIVKEYLEN], *mkp;
 	u_int keynum;
@@ -233,92 +234,83 @@ geli_attach(struct dsk *dskp, const char *passphrase, const u_char *mkeyp)
 		explicit_bzero(mkeyp, G_ELI_DATAIVKEYLEN);
 	}
 
-	SLIST_FOREACH_SAFE(geli_e, &geli_head, entries, geli_e_tmp) {
-		if (geli_same_device(geli_e, dskp) != 0) {
-			continue;
-		}
-
-		if (mkeyp != NULL || geli_findkey(geli_e, dskp, mkey) == 0) {
-			goto found_key;
-		}
-
-		g_eli_crypto_hmac_init(&ctx, NULL, 0);
-		/*
-		 * Prepare Derived-Key from the user passphrase.
-		 */
-		if (geli_e->md.md_iterations < 0) {
-			/* XXX TODO: Support loading key files. */
-			return (1);
-		} else if (geli_e->md.md_iterations == 0) {
-			g_eli_crypto_hmac_update(&ctx, geli_e->md.md_salt,
-			    sizeof(geli_e->md.md_salt));
-			g_eli_crypto_hmac_update(&ctx, passphrase,
-			    strlen(passphrase));
-		} else if (geli_e->md.md_iterations > 0) {
-			printf("Calculating GELI Decryption Key disk%dp%d @ %d"
-			    " iterations...\n", dskp->unit,
-			    (dskp->slice > 0 ? dskp->slice : dskp->part),
-			    geli_e->md.md_iterations);
-			u_char dkey[G_ELI_USERKEYLEN];
-
-			pkcs5v2_genkey(dkey, sizeof(dkey), geli_e->md.md_salt,
-			    sizeof(geli_e->md.md_salt), passphrase,
-			    geli_e->md.md_iterations);
-			g_eli_crypto_hmac_update(&ctx, dkey, sizeof(dkey));
-			explicit_bzero(dkey, sizeof(dkey));
-		}
+	if (mkeyp != NULL || geli_findkey(ge, dskp, mkey) == 0) {
+		goto found_key;
+	}
 
-		g_eli_crypto_hmac_final(&ctx, key, 0);
+	g_eli_crypto_hmac_init(&ctx, NULL, 0);
+	/*
+	 * Prepare Derived-Key from the user passphrase.
+	 */
+	if (geli_e->md.md_iterations < 0) {
+		/* XXX TODO: Support loading key files. */
+		return (1);
+	} else if (geli_e->md.md_iterations == 0) {
+		g_eli_crypto_hmac_update(&ctx, geli_e->md.md_salt,
+		    sizeof(geli_e->md.md_salt));
+		g_eli_crypto_hmac_update(&ctx, passphrase,
+		    strlen(passphrase));
+	} else if (geli_e->md.md_iterations > 0) {
+		printf("Calculating GELI Decryption Key disk%dp%d @ %d"
+		    " iterations...\n", dskp->unit,
+		    (dskp->slice > 0 ? dskp->slice : dskp->part),
+		    geli_e->md.md_iterations);
+		u_char dkey[G_ELI_USERKEYLEN];
+
+		pkcs5v2_genkey(dkey, sizeof(dkey), geli_e->md.md_salt,
+		    sizeof(geli_e->md.md_salt), passphrase,
+		    geli_e->md.md_iterations);
+		g_eli_crypto_hmac_update(&ctx, dkey, sizeof(dkey));
+		explicit_bzero(dkey, sizeof(dkey));
+	}
 
-		error = g_eli_mkey_decrypt(&geli_e->md, key, mkey, &keynum);
-		if (error == -1) {
-			explicit_bzero(mkey, sizeof(mkey));
-			explicit_bzero(key, sizeof(key));
-			printf("Bad GELI key: bad password?\n");
-			return (error);
-		} else if (error != 0) {
-			explicit_bzero(mkey, sizeof(mkey));
-			explicit_bzero(key, sizeof(key));
-                        printf("Failed to decrypt GELI master key: %d\n", error);
-			return (error);
-		} else {
-                        /* Add key to keychain */
-                        save_key(key);
-                        explicit_bzero(&key, sizeof(key));
-                }
+	g_eli_crypto_hmac_final(&ctx, key, 0);
 
-found_key:
-		/* Store the keys */
-		bcopy(mkey, geli_e->sc.sc_mkey, sizeof(geli_e->sc.sc_mkey));
-		bcopy(mkey, geli_e->sc.sc_ivkey, sizeof(geli_e->sc.sc_ivkey));
-		mkp = mkey + sizeof(geli_e->sc.sc_ivkey);
-		if ((geli_e->sc.sc_flags & G_ELI_FLAG_AUTH) == 0) {
-			bcopy(mkp, geli_e->sc.sc_ekey, G_ELI_DATAKEYLEN);
-		} else {
-			/*
-			 * The encryption key is: ekey = HMAC_SHA512(Data-Key, 0x10)
-			 */
-			g_eli_crypto_hmac(mkp, G_ELI_MAXKEYLEN, "\x10", 1,
-			    geli_e->sc.sc_ekey, 0);
-		}
+	error = g_eli_mkey_decrypt(&geli_e->md, key, mkey, &keynum);
+	if (error == -1) {
+		explicit_bzero(mkey, sizeof(mkey));
+		explicit_bzero(key, sizeof(key));
+		printf("Bad GELI key: bad password?\n");
+		return (error);
+	} else if (error != 0) {
 		explicit_bzero(mkey, sizeof(mkey));
+		explicit_bzero(key, sizeof(key));
+		printf("Failed to decrypt GELI master key: %d\n", error);
+		return (error);
+	} else {
+		/* Add key to keychain */
+		save_key(key);
+		explicit_bzero(&key, sizeof(key));
+	}
 
-		/* Initialize the per-sector IV. */
-		switch (geli_e->sc.sc_ealgo) {
-		case CRYPTO_AES_XTS:
-			break;
-		default:
-			SHA256_Init(&geli_e->sc.sc_ivctx);
-			SHA256_Update(&geli_e->sc.sc_ivctx, geli_e->sc.sc_ivkey,
-			    sizeof(geli_e->sc.sc_ivkey));
-			break;
-		}
+found_key:
+	/* Store the keys */
+	bcopy(mkey, geli_e->sc.sc_mkey, sizeof(geli_e->sc.sc_mkey));
+	bcopy(mkey, geli_e->sc.sc_ivkey, sizeof(geli_e->sc.sc_ivkey));
+	mkp = mkey + sizeof(geli_e->sc.sc_ivkey);
+	if ((geli_e->sc.sc_flags & G_ELI_FLAG_AUTH) == 0) {
+		bcopy(mkp, geli_e->sc.sc_ekey, G_ELI_DATAKEYLEN);
+	} else {
+		/*
+		 * The encryption key is: ekey = HMAC_SHA512(Data-Key, 0x10)
+		 */
+		g_eli_crypto_hmac(mkp, G_ELI_MAXKEYLEN, "\x10", 1,
+		    geli_e->sc.sc_ekey, 0);
+	}
+	explicit_bzero(mkey, sizeof(mkey));
 
-		return (0);
+	/* Initialize the per-sector IV. */
+	switch (geli_e->sc.sc_ealgo) {
+	case CRYPTO_AES_XTS:
+		break;
+	default:
+		SHA256_Init(&geli_e->sc.sc_ivctx);
+		SHA256_Update(&geli_e->sc.sc_ivctx, geli_e->sc.sc_ivkey,
+		    sizeof(geli_e->sc.sc_ivkey));
+		break;
 	}
 
-	/* Disk not found. */
-	return (2);
+	return (0);
 }
 
 int
@@ -402,7 +394,7 @@ geli_havekey(struct dsk *dskp)
 		}
 
 		if (geli_findkey(geli_e, dskp, mkey) == 0) {
-			if (geli_attach(dskp, NULL, mkey) == 0) {
+			if (geli_attach(geli_e, dskp, NULL, mkey) == 0) {
 				return (0);
 			}
 		}
@@ -417,20 +409,28 @@ geli_passphrase(char *pw, int disk, int parttype, int part, struct dsk *dskp)
 {
 	int i;
 
-	/* TODO: Implement GELI keyfile(s) support */
-	for (i = 0; i < 3; i++) {
-		/* Try cached passphrase */
-		if (i == 0 && pw[0] != '\0') {
-			if (geli_attach(dskp, pw, NULL) == 0) {
+	SLIST_FOREACH_SAFE(geli_e, &geli_head, entries, geli_e_tmp) {
+		if (geli_same_device(geli_e, dskp) != 0) {
+			continue;
+		}
+
+		/* TODO: Implement GELI keyfile(s) support */
+		for (i = 0; i < 3; i++) {
+			/* Try cached passphrase */
+			if (i == 0 && pw[0] != '\0') {
+				if (geli_attach(geli_e, dskp, pw, NULL) == 0) {
+					return (0);
+				}
+			}
+			printf("GELI Passphrase for disk%d%c%d: ", disk,
+			    parttype, part);
+			pwgets(pw, GELI_PW_MAXLEN,
+			    (geli_e->md.md_flags & G_ELI_FLAG_GELIDISPLAYPASS) == 0);
+			printf("\n");
+			if (geli_attach(geli_e, dskp, pw, NULL) == 0) {
 				return (0);
 			}
 		}
-		printf("GELI Passphrase for disk%d%c%d: ", disk, parttype, part);
-		pwgets(pw, GELI_PW_MAXLEN);
-		printf("\n");
-		if (geli_attach(dskp, pw, NULL) == 0) {
-			return (0);
-		}
 	}
 
 	return (1);
diff --git sys/boot/geli/geliboot.h sys/boot/geli/geliboot.h
index 0d12eab87903..788b82c574ac 100644
--- sys/boot/geli/geliboot.h
+++ sys/boot/geli/geliboot.h
@@ -46,12 +46,13 @@
 #define	GELI_MAX_KEYS			64
 #define GELI_PW_MAXLEN			256
 
-extern void pwgets(char *buf, int n);
+extern void pwgets(char *buf, int n, int hide);
+
+struct dsk;
 
 void geli_init(void);
 int geli_taste(int read_func(void *vdev, void *priv, off_t off,
     void *buf, size_t bytes), struct dsk *dsk, daddr_t lastsector);
-int geli_attach(struct dsk *dskp, const char *passphrase, const u_char *mkeyp);
 int is_geli(struct dsk *dsk);
 int geli_read(struct dsk *dsk, off_t offset, u_char *buf, size_t bytes);
 int geli_decrypt(u_int algo, u_char *data, size_t datasize,
diff --git sys/boot/geli/geliboot_crypto.c sys/boot/geli/geliboot_crypto.c
index c3db73f49555..4187e97390b8 100644
--- sys/boot/geli/geliboot_crypto.c
+++ sys/boot/geli/geliboot_crypto.c
@@ -82,17 +82,17 @@ geliboot_crypt(u_int algo, int enc, u_char *data, size_t datasize,
 		rijndael_set_key(&ctxp->key1, key, xts_len / 2);
 		rijndael_set_key(&ctxp->key2, key + (xts_len / 16), xts_len / 2);
 
-		enc_xform_aes_xts.reinit(ctxp, iv);
+		enc_xform_aes_xts.reinit((caddr_t)ctxp, iv);
 
 		switch (enc) {
 		case 0: /* decrypt */
 			for (i = 0; i < datasize; i += AES_XTS_BLOCKSIZE) {
-				enc_xform_aes_xts.decrypt(ctxp, data + i);
+				enc_xform_aes_xts.decrypt((caddr_t)ctxp, data + i);
 			}
 			break;
 		case 1: /* encrypt */
 			for (i = 0; i < datasize; i += AES_XTS_BLOCKSIZE) {
-				enc_xform_aes_xts.encrypt(ctxp, data + i);
+				enc_xform_aes_xts.encrypt((caddr_t)ctxp, data + i);
 			}
 			break;
 		}
diff --git sys/boot/geli/geliboot_internal.h sys/boot/geli/geliboot_internal.h
index ee93c244b0e5..1fad3c5f88ea 100644
--- sys/boot/geli/geliboot_internal.h
+++ sys/boot/geli/geliboot_internal.h
@@ -51,7 +51,7 @@
 #include <crypto/rijndael/rijndael-api-fst.h>
 
 /* AES-XTS implementation */
-#define _STAND
+#define _STAND 1
 #define STAND_H /* We don't want stand.h in {gpt,zfs,gptzfs}boot */
 #include <opencrypto/xform_enc.h>
 
diff --git sys/boot/geli/pwgets.c sys/boot/geli/pwgets.c
index 3a18c11a6eae..450255f1ee36 100644
--- sys/boot/geli/pwgets.c
+++ sys/boot/geli/pwgets.c
@@ -39,7 +39,7 @@ __FBSDID("$FreeBSD$");
 /* gets() with constrained input length, for passwords */
 
 void
-pwgets(char *buf, int n)
+pwgets(char *buf, int n, int hide)
 {
     int c;
     char *lp;
@@ -55,9 +55,11 @@ pwgets(char *buf, int n)
 	case '\177':
 	    if (lp > buf) {
 		lp--;
-		putchar('\b');
-		putchar(' ');
-		putchar('\b');
+		if (hide == 0) {
+			putchar('\b');
+			putchar(' ');
+			putchar('\b');
+		}
 	    }
 	    break;
 	case 'u'&037:
@@ -68,7 +70,9 @@ pwgets(char *buf, int n)
 	default:
 	    if ((n < 1) || ((lp - buf) < n - 1)) {
 		*lp++ = c;
-		putchar('*');
+		if (hide == 0) {
+			putchar('*');
+		}
 	    }
 	}
     /*NOTREACHED*/
diff --git sys/boot/i386/libi386/biosdisk.c sys/boot/i386/libi386/biosdisk.c
index b3597cccc06e..a2147e2294f5 100644
--- sys/boot/i386/libi386/biosdisk.c
+++ sys/boot/i386/libi386/biosdisk.c
@@ -139,7 +139,7 @@ static int bd_ioctl(struct open_file *f, u_long cmd, void *data);
 static int bd_print(int verbose);
 
 #ifdef LOADER_GELI_SUPPORT
-static enum isgeli {
+enum isgeli {
 	ISGELI_UNKNOWN,
 	ISGELI_NO,
 	ISGELI_YES
diff --git sys/boot/i386/libi386/spinconsole.c sys/boot/i386/libi386/spinconsole.c
index 161d81066b25..1daac3586939 100644
--- sys/boot/i386/libi386/spinconsole.c
+++ sys/boot/i386/libi386/spinconsole.c
@@ -41,16 +41,14 @@ __FBSDID("$FreeBSD$");
 #include <stand.h>
 #include <bootstrap.h>
 
-extern void get_pos(int *x, int *y);
-extern void curs_move(int *_x, int *_y, int x, int y);
-extern void vidc_biosputchar(int c);
-
 static void	spinc_probe(struct console *cp);
 static int	spinc_init(int arg);
 static void	spinc_putchar(int c);
 static int	spinc_getchar(void);
 static int	spinc_ischar(void);
 
+extern struct console *consoles[];
+
 struct console spinconsole = {
 	"spinconsole",
 	"spin port",
@@ -62,47 +60,53 @@ struct console spinconsole = {
 	spinc_ischar
 };
 
+static struct console *parent = NULL;
+
 static void
 spinc_probe(struct console *cp)
 {
-	cp->c_flags |= (C_PRESENTIN | C_PRESENTOUT);
+
+	if (parent == NULL)
+		parent = consoles[0];
+	parent->c_probe(cp);
 }
 
 static int
 spinc_init(int arg)
 {
-	return(0);
+
+	return(parent->c_init(arg));
 }
 
 static void
 spinc_putchar(int c)
 {
-	static int curx, cury;
 	static unsigned tw_chars = 0x5C2D2F7C;    /* "\-/|" */
-	static time_t lasttime;
+	static time_t lasttime = 0;
 	time_t now;
 
-	now = time(NULL);
+	now = time(0);
 	if (now < (lasttime + 1))
 		return;
-	lasttime = now;
 #ifdef TERM_EMU
-	get_pos(&curx, &cury);
-	if (curx > 0)
-		curs_move(&curx, &cury, curx - 1, cury);
+	if (lasttime > 0)
+		parent->c_out('\b');
 #endif
-	vidc_biosputchar((char)tw_chars);
+	lasttime = now;
+	parent->c_out((char)tw_chars);
 	tw_chars = (tw_chars >> 8) | ((tw_chars & (unsigned long)0xFF) << 24);
 }
 
 static int
 spinc_getchar(void)
 {
+
 	return(-1);
 }
 
 static int
 spinc_ischar(void)
 {
+
 	return(0);
 }
diff --git sys/boot/zfs/zfsimpl.c sys/boot/zfs/zfsimpl.c
index 73d767206838..6e0d9b6fe775 100644
--- sys/boot/zfs/zfsimpl.c
+++ sys/boot/zfs/zfsimpl.c
@@ -60,6 +60,7 @@ static const char *features_for_read[] = {
 	"org.open-zfs:large_blocks",
 	"org.illumos:sha512",
 	"org.illumos:skein",
+	"org.zfsonlinux:large_dnode",
 	NULL
 };
 
@@ -420,7 +421,7 @@ vdev_read_phys(vdev_t *vdev, const blkptr_t *bp, void *buf,
 		psize = size;
 	}
 
-	/*printf("ZFS: reading %d bytes at 0x%jx to %p\n", psize, (uintmax_t)offset, buf);*/
+	/*printf("ZFS: reading %zu bytes at 0x%jx to %p\n", psize, (uintmax_t)offset, buf);*/
 	rc = vdev->v_phys_read(vdev, vdev->v_read_priv, offset, buf, psize);
 	if (rc)
 		return (rc);
@@ -2280,7 +2281,7 @@ zfs_dnode_stat(const spa_t *spa, dnode_phys_t *dn, struct stat *sb)
 			sahdrp = (sa_hdr_phys_t *)DN_BONUS(dn);
 		else {
 			if ((dn->dn_flags & DNODE_FLAG_SPILL_BLKPTR) != 0) {
-				blkptr_t *bp = &dn->dn_spill;
+				blkptr_t *bp = DN_SPILL_BLKPTR(dn);
 				int error;
 
 				size = BP_GET_LSIZE(bp);
@@ -2330,7 +2331,7 @@ zfs_dnode_readlink(const spa_t *spa, dnode_phys_t *dn, char *path, size_t psize)
 
 			if ((dn->dn_flags & DNODE_FLAG_SPILL_BLKPTR) == 0)
 				return (EIO);
-			bp = &dn->dn_spill;
+			bp = DN_SPILL_BLKPTR(dn);
 
 			size = BP_GET_LSIZE(bp);
 			buf = zfs_alloc(size);
diff --git sys/cam/ata/ata_da.c sys/cam/ata/ata_da.c
index 49271b7ea108..5f000e05511c 100644
--- sys/cam/ata/ata_da.c
+++ sys/cam/ata/ata_da.c
@@ -2853,6 +2853,12 @@ adadone(struct cam_periph *periph, union ccb *done_ccb)
 		if (softc->outstanding_cmds == 0)
 			softc->flags |= ADA_FLAG_WAS_OTAG;
 
+		/*
+		 * We need to call cam_iosched before we call biodone so that we
+		 * don't measure any activity that happens in the completion
+		 * routine, which in the case of sendfile can be quite
+		 * extensive.
+		 */
 		cam_iosched_bio_complete(softc->cam_iosched, bp, done_ccb);
 		xpt_release_ccb(done_ccb);
 		if (state == ADA_CCB_TRIM) {
diff --git sys/cam/cam_ccb.h sys/cam/cam_ccb.h
index 304bdb916dc6..18022d2c125e 100644
--- sys/cam/cam_ccb.h
+++ sys/cam/cam_ccb.h
@@ -366,8 +366,7 @@ struct ccb_getdev {
 	u_int8_t  serial_num[252];
 	u_int8_t  inq_flags;
 	u_int8_t  serial_num_len;
-	const struct nvme_controller_data	*nvme_cdata;
-	const struct nvme_namespace_data	*nvme_data;
+	void *padding[2];
 };
 
 /* Device Statistics CCB */
@@ -631,7 +630,7 @@ struct ccb_pathinq_settings_sas {
 };
 
 struct ccb_pathinq_settings_nvme {
-	uint16_t nsid;		/* Namespace ID for this path */
+	uint32_t nsid;		/* Namespace ID for this path */
 };
 
 #define	PATHINQ_SETTINGS_SIZE	128
@@ -831,7 +830,8 @@ struct ccb_nvmeio {
 	struct nvme_completion cpl;	/* NVME completion, per NVME standard */
 	uint8_t   *data_ptr;		/* Ptr to the data buf/SG list */
 	uint32_t  dxfer_len;		/* Data transfer length */
-	uint32_t  resid;		/* Transfer residual length: 2's comp unused ?*/
+	uint16_t  sglist_cnt;		/* Number of SG list entries */
+	uint16_t  unused;		/* padding for removed uint32_t */
 };
 
 /*
@@ -1266,6 +1266,8 @@ struct ccb_dev_advinfo {
 #define	CDAI_TYPE_PHYS_PATH	3
 #define	CDAI_TYPE_RCAPLONG	4
 #define	CDAI_TYPE_EXT_INQ	5
+#define	CDAI_TYPE_NVME_CNTRL	6	/* NVMe Identify Controller data */
+#define	CDAI_TYPE_NVME_NS	7	/* NVMe Identify Namespace data */
 	off_t bufsiz;			/* IN: Size of external buffer */
 #define	CAM_SCSI_DEVID_MAXLEN	65536	/* length in buffer is an uint16_t */
 	off_t provsiz;			/* OUT: Size required/used */
diff --git sys/cam/cam_iosched.c sys/cam/cam_iosched.c
index 98d0dc7d0829..52e1092dd183 100644
--- sys/cam/cam_iosched.c
+++ sys/cam/cam_iosched.c
@@ -233,7 +233,7 @@ struct iop_stats {
 	uint32_t	state_flags;
 #define IOP_RATE_LIMITED		1u
 
-#define LAT_BUCKETS 12			/* < 1ms < 2ms ... 512ms < 1024ms > 1024ms */
+#define LAT_BUCKETS 15			/* < 1ms < 2ms ... < 2^(n-1)ms >= 2^(n-1)ms*/
 	uint64_t	latencies[LAT_BUCKETS];
 
 	struct cam_iosched_softc *softc;
@@ -1022,7 +1022,7 @@ cam_iosched_init(struct cam_iosched_softc **iscp, struct cam_periph *periph)
 		bioq_init(&(*iscp)->write_queue);
 		(*iscp)->read_bias = 100;
 		(*iscp)->current_read_bias = 100;
-		(*iscp)->quanta = 200;
+		(*iscp)->quanta = min(hz, 200);
 		cam_iosched_iop_stats_init(*iscp, &(*iscp)->read_stats);
 		cam_iosched_iop_stats_init(*iscp, &(*iscp)->write_stats);
 		cam_iosched_iop_stats_init(*iscp, &(*iscp)->trim_stats);
@@ -1428,7 +1428,8 @@ cam_iosched_bio_complete(struct cam_iosched_softc *isc, struct bio *bp,
 	}
 
 	if (!(bp->bio_flags & BIO_ERROR))
-		cam_iosched_io_metric_update(isc, done_ccb->ccb_h.qos.sim_data,
+		cam_iosched_io_metric_update(isc,
+		    cam_iosched_sbintime_t(done_ccb->ccb_h.qos.periph_data),
 		    bp->bio_cmd, bp->bio_bcount);
 #endif
 	return retval;
@@ -1519,7 +1520,7 @@ isqrt64(uint64_t val)
 	return res;
 }
 
-static sbintime_t latencies[] = {
+static sbintime_t latencies[LAT_BUCKETS - 1] = {
 	SBT_1MS <<  0,
 	SBT_1MS <<  1,
 	SBT_1MS <<  2,
@@ -1530,7 +1531,10 @@ static sbintime_t latencies[] = {
 	SBT_1MS <<  7,
 	SBT_1MS <<  8,
 	SBT_1MS <<  9,
-	SBT_1MS << 10
+	SBT_1MS << 10,
+	SBT_1MS << 11,
+	SBT_1MS << 12,
+	SBT_1MS << 13		/* 8.192s */
 };
 
 static void
diff --git sys/cam/cam_iosched.h sys/cam/cam_iosched.h
index 544c9006544e..150b8e90fb41 100644
--- sys/cam/cam_iosched.h
+++ sys/cam/cam_iosched.h
@@ -41,6 +41,44 @@ struct sysctl_oid;
 union ccb;
 struct bio;
 
+/*
+ * For 64-bit platforms, we know that uintptr_t is the same size as sbintime_t
+ * so we can store values in it. For 32-bit systems, however, uintptr_t is only
+ * 32-bits, so it won't fit. For those systems, store 24 bits of fraction and 8
+ * bits of seconds. This allows us to measure an interval of up to ~256s, which
+ * is ~200x what our current uses require. Provide some convenience functions to
+ * get the time, subtract two times and convert back to sbintime_t in a safe way
+ * that can be centralized.
+ */
+#ifdef __LP64__
+#define CAM_IOSCHED_TIME_SHIFT 0
+#else
+#define CAM_IOSCHED_TIME_SHIFT 8
+#endif
+static inline uintptr_t
+cam_iosched_now(void)
+{
+
+	/* Cast here is to avoid right shifting a signed value */
+	return (uintptr_t)((uint64_t)sbinuptime() >> CAM_IOSCHED_TIME_SHIFT);
+}
+
+static inline uintptr_t
+cam_iosched_delta_t(uintptr_t then)
+{
+
+	/* Since the types are identical, wrapping works correctly */
+	return (cam_iosched_now() - then);
+}
+
+static inline sbintime_t
+cam_iosched_sbintime_t(uintptr_t delta)
+{
+
+	/* Cast here is to widen the type so the left shift doesn't lose precision */
+	return (sbintime_t)((uint64_t)delta << CAM_IOSCHED_TIME_SHIFT);
+}
+
 int cam_iosched_init(struct cam_iosched_softc **, struct cam_periph *periph);
 void cam_iosched_fini(struct cam_iosched_softc *);
 void cam_iosched_sysctl_init(struct cam_iosched_softc *, struct sysctl_ctx_list *, struct sysctl_oid *);
diff --git sys/cam/cam_xpt.c sys/cam/cam_xpt.c
index b29c0aa7079f..1107993ec2fb 100644
--- sys/cam/cam_xpt.c
+++ sys/cam/cam_xpt.c
@@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$");
 
 #include <cam/cam.h>
 #include <cam/cam_ccb.h>
+#include <cam/cam_iosched.h>
 #include <cam/cam_periph.h>
 #include <cam/cam_queue.h>
 #include <cam/cam_sim.h>
@@ -2833,8 +2834,6 @@ call_sim:
 			cgd->inq_data = dev->inq_data;
 			cgd->ident_data = dev->ident_data;
 			cgd->inq_flags = dev->inq_flags;
-			cgd->nvme_data = dev->nvme_data;
-			cgd->nvme_cdata = dev->nvme_cdata;
 			cgd->ccb_h.status = CAM_REQ_CMP;
 			cgd->serial_num_len = dev->serial_num_len;
 			if ((dev->serial_num_len > 0)
@@ -3494,7 +3493,7 @@ xpt_run_devq(struct cam_devq *devq)
 			mtx_lock(mtx);
 		else
 			mtx = NULL;
-		work_ccb->ccb_h.qos.sim_data = sbinuptime(); // xxx uintprt_t too small 32bit platforms
+		work_ccb->ccb_h.qos.periph_data = cam_iosched_now();
 		(*(sim->sim_action))(sim, work_ccb);
 		if (mtx)
 			mtx_unlock(mtx);
@@ -4641,7 +4640,7 @@ xpt_done(union ccb *done_ccb)
 		return;
 
 	/* Store the time the ccb was in the sim */
-	done_ccb->ccb_h.qos.sim_data = sbinuptime() - done_ccb->ccb_h.qos.sim_data;
+	done_ccb->ccb_h.qos.periph_data = cam_iosched_delta_t(done_ccb->ccb_h.qos.periph_data);
 	hash = (done_ccb->ccb_h.path_id + done_ccb->ccb_h.target_id +
 	    done_ccb->ccb_h.target_lun) % cam_num_doneqs;
 	queue = &cam_doneqs[hash];
@@ -4664,7 +4663,7 @@ xpt_done_direct(union ccb *done_ccb)
 		return;
 
 	/* Store the time the ccb was in the sim */
-	done_ccb->ccb_h.qos.sim_data = sbinuptime() - done_ccb->ccb_h.qos.sim_data;
+	done_ccb->ccb_h.qos.periph_data = cam_iosched_delta_t(done_ccb->ccb_h.qos.periph_data);
 	xpt_done_process(&done_ccb->ccb_h);
 }
 
diff --git sys/cam/ctl/ctl_backend_block.c sys/cam/ctl/ctl_backend_block.c
index ab71f8cec134..4038add6bf89 100644
--- sys/cam/ctl/ctl_backend_block.c
+++ sys/cam/ctl/ctl_backend_block.c
@@ -2324,7 +2324,7 @@ ctl_be_block_create(struct ctl_be_block_softc *softc, struct ctl_lun_req *req)
 	cbe_lun->be = &ctl_be_block_driver;
 
 	if ((params->flags & CTL_LUN_FLAG_SERIAL_NUM) == 0) {
-		snprintf(tmpstr, sizeof(tmpstr), "MYSERIAL%4d",
+		snprintf(tmpstr, sizeof(tmpstr), "MYSERIAL%04d",
 			 softc->num_luns);
 		strncpy((char *)cbe_lun->serial_num, tmpstr,
 			MIN(sizeof(cbe_lun->serial_num), sizeof(tmpstr)));
@@ -2338,7 +2338,7 @@ ctl_be_block_create(struct ctl_be_block_softc *softc, struct ctl_lun_req *req)
 			sizeof(params->serial_num)));
 	}
 	if ((params->flags & CTL_LUN_FLAG_DEVID) == 0) {
-		snprintf(tmpstr, sizeof(tmpstr), "MYDEVID%4d", softc->num_luns);
+		snprintf(tmpstr, sizeof(tmpstr), "MYDEVID%04d", softc->num_luns);
 		strncpy((char *)cbe_lun->device_id, tmpstr,
 			MIN(sizeof(cbe_lun->device_id), sizeof(tmpstr)));
 
diff --git sys/cam/ctl/ctl_backend_ramdisk.c sys/cam/ctl/ctl_backend_ramdisk.c
index 3b982a7c0e39..3730327653ce 100644
--- sys/cam/ctl/ctl_backend_ramdisk.c
+++ sys/cam/ctl/ctl_backend_ramdisk.c
@@ -1096,7 +1096,7 @@ ctl_backend_ramdisk_create(struct ctl_be_ramdisk_softc *softc,
 	cbe_lun->lun_config_status = ctl_backend_ramdisk_lun_config_status;
 	cbe_lun->be = &ctl_be_ramdisk_driver;
 	if ((params->flags & CTL_LUN_FLAG_SERIAL_NUM) == 0) {
-		snprintf(tmpstr, sizeof(tmpstr), "MYSERIAL%4d",
+		snprintf(tmpstr, sizeof(tmpstr), "MYSERIAL%04d",
 			 softc->num_luns);
 		strncpy((char *)cbe_lun->serial_num, tmpstr,
 			MIN(sizeof(cbe_lun->serial_num), sizeof(tmpstr)));
@@ -1110,7 +1110,7 @@ ctl_backend_ramdisk_create(struct ctl_be_ramdisk_softc *softc,
 			    sizeof(params->serial_num)));
 	}
 	if ((params->flags & CTL_LUN_FLAG_DEVID) == 0) {
-		snprintf(tmpstr, sizeof(tmpstr), "MYDEVID%4d", softc->num_luns);
+		snprintf(tmpstr, sizeof(tmpstr), "MYDEVID%04d", softc->num_luns);
 		strncpy((char *)cbe_lun->device_id, tmpstr,
 			MIN(sizeof(cbe_lun->device_id), sizeof(tmpstr)));
 
diff --git sys/cam/nvme/nvme_all.c sys/cam/nvme/nvme_all.c
index 3904891b3301..9a1bf53a4675 100644
--- sys/cam/nvme/nvme_all.c
+++ sys/cam/nvme/nvme_all.c
@@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/systm.h>
 #include <sys/libkern.h>
 #include <sys/kernel.h>
+#include <sys/malloc.h>
 #include <sys/sysctl.h>
 #else
 #include <errno.h>
@@ -54,6 +55,13 @@ __FBSDID("$FreeBSD$");
 #include <sys/sbuf.h>
 #include <sys/endian.h>
 
+#ifdef _KERNEL
+#include <cam/cam_periph.h>
+#include <cam/cam_xpt_sim.h>
+#include <cam/cam_xpt_periph.h>
+#include <cam/cam_xpt_internal.h>
+#endif
+
 void
 nvme_ns_cmd(struct ccb_nvmeio *nvmeio, uint8_t cmd, uint32_t nsid,
     uint32_t cdw10, uint32_t cdw11, uint32_t cdw12, uint32_t cdw13,
@@ -122,3 +130,23 @@ nvme_cmd_string(const struct nvme_command *cmd, char *cmd_string, size_t len)
 
 	return cmd_string;
 }
+
+const void *
+nvme_get_identify_cntrl(struct cam_periph *periph)
+{
+	struct cam_ed *device;
+
+	device = periph->path->device;
+
+	return device->nvme_cdata;
+}
+
+const void *
+nvme_get_identify_ns(struct cam_periph *periph)
+{
+	struct cam_ed *device;
+
+	device = periph->path->device;
+
+	return device->nvme_data;
+}
diff --git sys/cam/nvme/nvme_all.h sys/cam/nvme/nvme_all.h
index 3cff74d32864..b52b7a7812f9 100644
--- sys/cam/nvme/nvme_all.h
+++ sys/cam/nvme/nvme_all.h
@@ -44,5 +44,7 @@ int	nvme_identify_match(caddr_t identbuffer, caddr_t table_entry);
 void	nvme_print_ident(const struct nvme_controller_data *, const struct nvme_namespace_data *);
 const char *nvme_op_string(const struct nvme_command *);
 const char *nvme_cmd_string(const struct nvme_command *, char *, size_t);
+const void *nvme_get_identify_cntrl(struct cam_periph *);
+const void *nvme_get_identify_ns(struct cam_periph *);
 
 #endif /* CAM_NVME_NVME_ALL_H */
diff --git sys/cam/nvme/nvme_da.c sys/cam/nvme/nvme_da.c
index 0602e8b6f8db..3e829a4e8e9b 100644
--- sys/cam/nvme/nvme_da.c
+++ sys/cam/nvme/nvme_da.c
@@ -684,21 +684,14 @@ ndaregister(struct cam_periph *periph, void *arg)
 	struct nda_softc *softc;
 	struct disk *disk;
 	struct ccb_pathinq cpi;
-	struct ccb_getdev *cgd;
 	const struct nvme_namespace_data *nsd;
 	const struct nvme_controller_data *cd;
 	char   announce_buf[80];
-//	caddr_t match;
 	u_int maxio;
 	int quirks;
 
-	cgd = (struct ccb_getdev *)arg;
-	if (cgd == NULL) {
-		printf("ndaregister: no getdev CCB, can't register device\n");
-		return(CAM_REQ_CMP_ERR);
-	}
-	nsd = cgd->nvme_data;
-	cd = cgd->nvme_cdata;
+	nsd = nvme_get_identify_ns(periph);
+	cd = nvme_get_identify_cntrl(periph);
 
 	softc = (struct nda_softc *)malloc(sizeof(*softc), M_DEVBUF,
 	    M_NOWAIT | M_ZERO);
@@ -719,19 +712,7 @@ ndaregister(struct cam_periph *periph, void *arg)
 
 	periph->softc = softc;
 
-#if 0
-	/*
-	 * See if this device has any quirks.
-	 */
-	match = cam_quirkmatch((caddr_t)&cgd->ident_data,
-			       (caddr_t)nda_quirk_table,
-			       sizeof(nda_quirk_table)/sizeof(*nda_quirk_table),
-			       sizeof(*nda_quirk_table), ata_identify_match);
-	if (match != NULL)
-		softc->quirks = ((struct nda_quirk_entry *)match)->quirks;
-	else
-#endif
-		softc->quirks = NDA_Q_NONE;
+	softc->quirks = NDA_Q_NONE;
 
 	bzero(&cpi, sizeof(cpi));
 	xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NONE);
@@ -1010,17 +991,18 @@ ndadone(struct cam_periph *periph, union ccb *done_ccb)
 			bp->bio_resid = bp->bio_bcount;
 			bp->bio_flags |= BIO_ERROR;
 		} else {
-			if (state == NDA_CCB_TRIM)
-				bp->bio_resid = 0;
-			else
-				bp->bio_resid = nvmeio->resid;
-			if (bp->bio_resid > 0)
-				bp->bio_flags |= BIO_ERROR;
+			bp->bio_resid = 0;
 		}
 		if (state == NDA_CCB_TRIM)
 			free(bp->bio_driver2, M_NVMEDA);
 		softc->outstanding_cmds--;
 
+		/*
+		 * We need to call cam_iosched before we call biodone so that we
+		 * don't measure any activity that happens in the completion
+		 * routine, which in the case of sendfile can be quite
+		 * extensive.
+		 */
 		cam_iosched_bio_complete(softc->cam_iosched, bp, done_ccb);
 		xpt_release_ccb(done_ccb);
 		if (state == NDA_CCB_TRIM) {
diff --git sys/cam/nvme/nvme_xpt.c sys/cam/nvme/nvme_xpt.c
index 156dac6d996b..5229ca365c79 100644
--- sys/cam/nvme/nvme_xpt.c
+++ sys/cam/nvme/nvme_xpt.c
@@ -538,6 +538,24 @@ nvme_dev_advinfo(union ccb *start_ccb)
 			memcpy(cdai->buf, device->physpath, amt);
 		}
 		break;
+	case CDAI_TYPE_NVME_CNTRL:
+		if (cdai->flags & CDAI_FLAG_STORE)
+			return;
+		amt = sizeof(struct nvme_controller_data);
+		cdai->provsiz = amt;
+		if (amt > cdai->bufsiz)
+			amt = cdai->bufsiz;
+		memcpy(cdai->buf, device->nvme_cdata, amt);
+		break;
+	case CDAI_TYPE_NVME_NS:
+		if (cdai->flags & CDAI_FLAG_STORE)
+			return;
+		amt = sizeof(struct nvme_namespace_data);
+		cdai->provsiz = amt;
+		if (amt > cdai->bufsiz)
+			amt = cdai->bufsiz;
+		memcpy(cdai->buf, device->nvme_data, amt);
+		break;
 	default:
 		return;
 	}
diff --git sys/cam/scsi/scsi_all.c sys/cam/scsi/scsi_all.c
index 4e50baccd702..c8a3198ef87b 100644
--- sys/cam/scsi/scsi_all.c
+++ sys/cam/scsi/scsi_all.c
@@ -5100,8 +5100,8 @@ scsi_sense_sbuf(struct cam_device *device, struct ccb_scsiio *csio,
 			 * errors on finicky architectures.  We don't
 			 * ensure that the sense data is pointer aligned.
 			 */
-			bcopy(&csio->sense_data, &sense, 
-			      sizeof(struct scsi_sense_data *));
+			bcopy((struct scsi_sense_data **)&csio->sense_data,
+			    &sense, sizeof(struct scsi_sense_data *));
 		}
 	} else {
 		/*
@@ -5225,8 +5225,8 @@ scsi_extract_sense_ccb(union ccb *ccb,
 		return (0);
 
 	if (ccb->ccb_h.flags & CAM_SENSE_PTR)
-		bcopy(&ccb->csio.sense_data, &sense_data,
-		    sizeof(struct scsi_sense_data *));
+		bcopy((struct scsi_sense_data **)&ccb->csio.sense_data,
+		    &sense_data, sizeof(struct scsi_sense_data *));
 	else
 		sense_data = &ccb->csio.sense_data;
 	scsi_extract_sense_len(sense_data,
diff --git sys/cam/scsi/scsi_da.c sys/cam/scsi/scsi_da.c
index 903f5091e4d2..b9a98b5aac25 100644
--- sys/cam/scsi/scsi_da.c
+++ sys/cam/scsi/scsi_da.c
@@ -4200,6 +4200,12 @@ dadone(struct cam_periph *periph, union ccb *done_ccb)
 		if (LIST_EMPTY(&softc->pending_ccbs))
 			softc->flags |= DA_FLAG_WAS_OTAG;
 
+		/*
+		 * We need to call cam_iosched before we call biodone so that we
+		 * don't measure any activity that happens in the completion
+		 * routine, which in the case of sendfile can be quite
+		 * extensive.
+		 */
 		cam_iosched_bio_complete(softc->cam_iosched, bp, done_ccb);
 		xpt_release_ccb(done_ccb);
 		if (state == DA_CCB_DELETE) {
diff --git sys/cam/scsi/scsi_pass.c sys/cam/scsi/scsi_pass.c
index 1c2d5dffdab4..97447be63f75 100644
--- sys/cam/scsi/scsi_pass.c
+++ sys/cam/scsi/scsi_pass.c
@@ -1396,15 +1396,11 @@ passmemsetup(struct cam_periph *periph, struct pass_io_req *io_req)
 
 		io_req->data_flags = ccb->ccb_h.flags & CAM_DATA_MASK;
 
-		/*
-		 * We only support a single virtual address for NVMe
-		 */
-		if ((ccb->ccb_h.flags & CAM_DATA_MASK) != CAM_DATA_VADDR)
-			return (EINVAL);
-
 		data_ptrs[0] = &ccb->nvmeio.data_ptr;
 		lengths[0] = ccb->nvmeio.dxfer_len;
 		dirs[0] = ccb->ccb_h.flags & CAM_DIR_MASK;
+		num_segs = ccb->nvmeio.sglist_cnt;
+		seg_cnt_ptr = &ccb->nvmeio.sglist_cnt;
 		numbufs = 1;
 		maxmap = softc->maxio;
 		break;
@@ -2227,7 +2223,9 @@ passsendccb(struct cam_periph *periph, union ccb *ccb, union ccb *inccb)
 	 */
 	fc = ccb->ccb_h.func_code;
 	if ((fc == XPT_SCSI_IO) || (fc == XPT_ATA_IO) || (fc == XPT_SMP_IO)
-            || (fc == XPT_DEV_MATCH) || (fc == XPT_DEV_ADVINFO) || (fc == XPT_MMC_IO)) {
+            || (fc == XPT_DEV_MATCH) || (fc == XPT_DEV_ADVINFO) || (fc == XPT_MMC_IO)
+            || (fc == XPT_NVME_ADMIN) || (fc == XPT_NVME_IO)) {
+
 		bzero(&mapinfo, sizeof(mapinfo));
 
 		/*
diff --git sys/cddl/boot/zfs/zfsimpl.h sys/cddl/boot/zfs/zfsimpl.h
index 08ca499b735b..fd76658236ee 100644
--- sys/cddl/boot/zfs/zfsimpl.h
+++ sys/cddl/boot/zfs/zfsimpl.h
@@ -859,10 +859,19 @@ struct uberblock {
 /*
  * Derived constants.
  */
-#define	DNODE_SIZE	(1 << DNODE_SHIFT)
-#define	DN_MAX_NBLKPTR	((DNODE_SIZE - DNODE_CORE_SIZE) >> SPA_BLKPTRSHIFT)
-#define	DN_MAX_BONUSLEN	(DNODE_SIZE - DNODE_CORE_SIZE - (1 << SPA_BLKPTRSHIFT))
-#define	DN_MAX_OBJECT	(1ULL << DN_MAX_OBJECT_SHIFT)
+#define	DNODE_MIN_SIZE		(1 << DNODE_SHIFT)
+#define	DNODE_MAX_SIZE		(1 << DNODE_BLOCK_SHIFT)
+#define	DNODE_BLOCK_SIZE	(1 << DNODE_BLOCK_SHIFT)
+#define	DNODE_MIN_SLOTS		(DNODE_MIN_SIZE >> DNODE_SHIFT)
+#define	DNODE_MAX_SLOTS		(DNODE_MAX_SIZE >> DNODE_SHIFT)
+#define	DN_BONUS_SIZE(dnsize)	((dnsize) - DNODE_CORE_SIZE - \
+	(1 << SPA_BLKPTRSHIFT))
+#define	DN_SLOTS_TO_BONUSLEN(slots)	DN_BONUS_SIZE((slots) << DNODE_SHIFT)
+#define	DN_OLD_MAX_BONUSLEN		(DN_BONUS_SIZE(DNODE_MIN_SIZE))
+#define	DN_MAX_NBLKPTR		((DNODE_MIN_SIZE - DNODE_CORE_SIZE) >> \
+	SPA_BLKPTRSHIFT)
+#define	DN_MAX_OBJECT		(1ULL << DN_MAX_OBJECT_SHIFT)
+#define	DN_ZERO_BONUSLEN	(DN_BONUS_SIZE(DNODE_MAX_SIZE) + 1)
 
 #define	DNODES_PER_BLOCK_SHIFT	(DNODE_BLOCK_SHIFT - DNODE_SHIFT)
 #define	DNODES_PER_BLOCK	(1ULL << DNODES_PER_BLOCK_SHIFT)
@@ -898,7 +907,8 @@ typedef struct dnode_phys {
 	uint8_t dn_flags;		/* DNODE_FLAG_* */
 	uint16_t dn_datablkszsec;	/* data block size in 512b sectors */
 	uint16_t dn_bonuslen;		/* length of dn_bonus */
-	uint8_t dn_pad2[4];
+	uint8_t dn_extra_slots;		/* # of subsequent slots consumed */
+	uint8_t dn_pad2[3];
 
 	/* accounting is protected by dn_dirty_mtx */
 	uint64_t dn_maxblkid;		/* largest allocated block ID */
@@ -906,11 +916,40 @@ typedef struct dnode_phys {
 
 	uint64_t dn_pad3[4];
 
-	blkptr_t dn_blkptr[1];
-	uint8_t dn_bonus[DN_MAX_BONUSLEN - sizeof (blkptr_t)];
-	blkptr_t dn_spill;
+	/*
+	 * The tail region is 448 bytes for a 512 byte dnode, and
+	 * correspondingly larger for larger dnode sizes. The spill
+	 * block pointer, when present, is always at the end of the tail
+	 * region. There are three ways this space may be used, using
+	 * a 512 byte dnode for this diagram:
+	 *
+	 * 0       64      128     192     256     320     384     448 (offset)
+	 * +---------------+---------------+---------------+-------+
+	 * | dn_blkptr[0]  | dn_blkptr[1]  | dn_blkptr[2]  | /     |
+	 * +---------------+---------------+---------------+-------+
+	 * | dn_blkptr[0]  | dn_bonus[0..319]                      |
+	 * +---------------+-----------------------+---------------+
+	 * | dn_blkptr[0]  | dn_bonus[0..191]      | dn_spill      |
+	 * +---------------+-----------------------+---------------+
+	 */
+	union {
+		blkptr_t dn_blkptr[1+DN_OLD_MAX_BONUSLEN/sizeof (blkptr_t)];
+		struct {
+			blkptr_t __dn_ignore1;
+			uint8_t dn_bonus[DN_OLD_MAX_BONUSLEN];
+		};
+		struct {
+			blkptr_t __dn_ignore2;
+			uint8_t __dn_ignore3[DN_OLD_MAX_BONUSLEN -
+			    sizeof (blkptr_t)];
+			blkptr_t dn_spill;
+		};
+	};
 } dnode_phys_t;
 
+#define	DN_SPILL_BLKPTR(dnp)	(blkptr_t *)((char *)(dnp) + \
+	(((dnp)->dn_extra_slots + 1) << DNODE_SHIFT) - (1 << SPA_BLKPTRSHIFT))
+
 typedef enum dmu_object_byteswap {
 	DMU_BSWAP_UINT8,
 	DMU_BSWAP_UINT16,
diff --git sys/cddl/compat/opensolaris/sys/mntent.h sys/cddl/compat/opensolaris/sys/mntent.h
index 3faea6b73430..a6afbb3f040b 100644
--- sys/cddl/compat/opensolaris/sys/mntent.h
+++ sys/cddl/compat/opensolaris/sys/mntent.h
@@ -46,7 +46,7 @@
 #define	MNTOPT_NODEVICES	"nodevices"	/* Device-special disallowed */
 #define	MNTOPT_SETUID	"setuid"	/* Set uid allowed */
 #define	MNTOPT_NOSETUID	"nosetuid"	/* Set uid not allowed */
-#define	MNTOPT_REMOUNT	"remount"	/* Change mount options */
+#define	MNTOPT_REMOUNT	"update"	/* Change mount options */
 #define	MNTOPT_ATIME	"atime"		/* update atime for files */
 #define	MNTOPT_NOATIME  "noatime"	/* do not update atime for files */
 #define	MNTOPT_XATTR	"xattr"		/* enable extended attributes */
diff --git sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
index 079d86043f4d..2a4b18abb2a0 100644
--- sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
+++ sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
@@ -242,11 +242,11 @@ zfs_prop_init(void)
 	    ZIO_CHECKSUM_DEFAULT, PROP_INHERIT, ZFS_TYPE_FILESYSTEM |
 	    ZFS_TYPE_VOLUME,
 	    "on | off | fletcher2 | fletcher4 | sha256 | sha512 | "
-	    "skein | edonr", "CHECKSUM", checksum_table);
+	    "skein", "CHECKSUM", checksum_table);
 	zprop_register_index(ZFS_PROP_DEDUP, "dedup", ZIO_CHECKSUM_OFF,
 	    PROP_INHERIT, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME,
 	    "on | off | verify | sha256[,verify], sha512[,verify], "
-	    "skein[,verify], edonr,verify", "DEDUP", dedup_table);
+	    "skein[,verify]", "DEDUP", dedup_table);
 	zprop_register_index(ZFS_PROP_COMPRESSION, "compression",
 	    ZIO_COMPRESS_DEFAULT, PROP_INHERIT,
 	    ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME,
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/abd.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/abd.c
index 53aa7a850170..94e5a220854c 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/abd.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/abd.c
@@ -157,6 +157,13 @@ extern vmem_t *zio_alloc_arena;
 kmem_cache_t *abd_chunk_cache;
 static kstat_t *abd_ksp;
 
+extern inline boolean_t abd_is_linear(abd_t *abd);
+extern inline void abd_copy(abd_t *dabd, abd_t *sabd, size_t size);
+extern inline void abd_copy_from_buf(abd_t *abd, const void *buf, size_t size);
+extern inline void abd_copy_to_buf(void* buf, abd_t *abd, size_t size);
+extern inline int abd_cmp_buf(abd_t *abd, const void *buf, size_t size);
+extern inline void abd_zero(abd_t *abd, size_t size);
+
 static void *
 abd_alloc_chunk()
 {
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
index 5b6335e72638..92d8b41c24ac 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
@@ -358,6 +358,7 @@ uint64_t zfs_arc_meta_limit = 0;
 uint64_t zfs_arc_meta_min = 0;
 int zfs_arc_grow_retry = 0;
 int zfs_arc_shrink_shift = 0;
+int zfs_arc_no_grow_shift = 0;
 int zfs_arc_p_min_shift = 0;
 uint64_t zfs_arc_average_blocksize = 8 * 1024; /* 8KB */
 u_int zfs_arc_free_target = 0;
@@ -371,6 +372,7 @@ static int sysctl_vfs_zfs_arc_free_target(SYSCTL_HANDLER_ARGS);
 static int sysctl_vfs_zfs_arc_meta_limit(SYSCTL_HANDLER_ARGS);
 static int sysctl_vfs_zfs_arc_max(SYSCTL_HANDLER_ARGS);
 static int sysctl_vfs_zfs_arc_min(SYSCTL_HANDLER_ARGS);
+static int sysctl_vfs_zfs_arc_no_grow_shift(SYSCTL_HANDLER_ARGS);
 
 #if defined(__FreeBSD__) && defined(_KERNEL)
 static void
@@ -385,17 +387,25 @@ SYSINIT(arc_free_target_init, SI_SUB_KTHREAD_PAGE, SI_ORDER_ANY,
 TUNABLE_QUAD("vfs.zfs.arc_meta_limit", &zfs_arc_meta_limit);
 TUNABLE_QUAD("vfs.zfs.arc_meta_min", &zfs_arc_meta_min);
 TUNABLE_INT("vfs.zfs.arc_shrink_shift", &zfs_arc_shrink_shift);
+TUNABLE_INT("vfs.zfs.arc_grow_retry", &zfs_arc_grow_retry);
+TUNABLE_INT("vfs.zfs.arc_no_grow_shift", &zfs_arc_no_grow_shift);
 SYSCTL_DECL(_vfs_zfs);
 SYSCTL_PROC(_vfs_zfs, OID_AUTO, arc_max, CTLTYPE_U64 | CTLFLAG_RWTUN,
     0, sizeof(uint64_t), sysctl_vfs_zfs_arc_max, "QU", "Maximum ARC size");
 SYSCTL_PROC(_vfs_zfs, OID_AUTO, arc_min, CTLTYPE_U64 | CTLFLAG_RWTUN,
     0, sizeof(uint64_t), sysctl_vfs_zfs_arc_min, "QU", "Minimum ARC size");
+SYSCTL_PROC(_vfs_zfs, OID_AUTO, arc_no_grow_shift, CTLTYPE_U32 | CTLFLAG_RWTUN,
+    0, sizeof(uint32_t), sysctl_vfs_zfs_arc_no_grow_shift, "U",
+    "log2(fraction of ARC which must be free to allow growing)");
 SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, arc_average_blocksize, CTLFLAG_RDTUN,
     &zfs_arc_average_blocksize, 0,
     "ARC average blocksize");
 SYSCTL_INT(_vfs_zfs, OID_AUTO, arc_shrink_shift, CTLFLAG_RW,
     &arc_shrink_shift, 0,
     "log2(fraction of arc to reclaim)");
+SYSCTL_INT(_vfs_zfs, OID_AUTO, arc_grow_retry, CTLFLAG_RW,
+    &arc_grow_retry, 0,
+    "Wait in seconds before considering growing ARC");
 SYSCTL_INT(_vfs_zfs, OID_AUTO, compressed_arc_enabled, CTLFLAG_RDTUN,
     &zfs_compressed_arc_enabled, 0, "Enable compressed ARC");
 
@@ -1064,6 +1074,24 @@ sysctl_vfs_zfs_arc_meta_limit(SYSCTL_HANDLER_ARGS)
 	return (0);
 }
 
+static int
+sysctl_vfs_zfs_arc_no_grow_shift(SYSCTL_HANDLER_ARGS)
+{
+	uint32_t val;
+	int err;
+
+	val = arc_no_grow_shift;
+	err = sysctl_handle_32(oidp, &val, 0, req);
+	if (err != 0 || req->newptr == NULL)
+		return (err);
+
+        if (val >= arc_shrink_shift)
+		return (EINVAL);
+
+	arc_no_grow_shift = val;
+	return (0);
+}
+
 static int
 sysctl_vfs_zfs_arc_max(SYSCTL_HANDLER_ARGS)
 {
@@ -6505,6 +6533,8 @@ arc_init(void)
 	if (zfs_arc_shrink_shift > 0)
 		arc_shrink_shift = zfs_arc_shrink_shift;
 
+	if (zfs_arc_no_grow_shift > 0)
+		arc_no_grow_shift = zfs_arc_no_grow_shift;
 	/*
 	 * Ensure that arc_no_grow_shift is less than arc_shrink_shift.
 	 */
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c
index 19e97cbabf30..0bcfc0031311 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c
@@ -22,6 +22,7 @@
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2011, 2016 by Delphix. All rights reserved.
  * Copyright (c) 2014 Integros [integros.com]
+ * Copyright (c) 2017 Datto Inc.
  */
 
 #include <sys/bpobj.h>
@@ -212,6 +213,9 @@ bpobj_iterate_impl(bpobj_t *bpo, bpobj_itor_t func, void *arg, dmu_tx_t *tx,
 
 	mutex_enter(&bpo->bpo_lock);
 
+	if (!bpobj_hasentries(bpo))
+		goto out;
+
 	if (free)
 		dmu_buf_will_dirty(bpo->bpo_dbuf, tx);
 
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
index 0d340a47b813..15836e1aa350 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
@@ -137,6 +137,36 @@ uint64_t zfs_delay_scale = 1000 * 1000 * 1000 / 2000;
  */
 int zfs_sync_taskq_batch_pct = 75;
 
+/*
+ * These tunables determine the behavior of how zil_itxg_clean() is
+ * called via zil_clean() in the context of spa_sync(). When an itxg
+ * list needs to be cleaned, TQ_NOSLEEP will be used when dispatching.
+ * If the dispatch fails, the call to zil_itxg_clean() will occur
+ * synchronously in the context of spa_sync(), which can negatively
+ * impact the performance of spa_sync() (e.g. in the case of the itxg
+ * list having a large number of itxs that needs to be cleaned).
+ *
+ * Thus, these tunables can be used to manipulate the behavior of the
+ * taskq used by zil_clean(); they determine the number of taskq entries
+ * that are pre-populated when the taskq is first created (via the
+ * "zfs_zil_clean_taskq_minalloc" tunable) and the maximum number of
+ * taskq entries that are cached after an on-demand allocation (via the
+ * "zfs_zil_clean_taskq_maxalloc").
+ *
+ * The idea being, we want to try reasonably hard to ensure there will
+ * already be a taskq entry pre-allocated by the time that it is needed
+ * by zil_clean(). This way, we can avoid the possibility of an
+ * on-demand allocation of a new taskq entry from failing, which would
+ * result in zil_itxg_clean() being called synchronously from zil_clean()
+ * (which can adversely affect performance of spa_sync()).
+ *
+ * Additionally, the number of threads used by the taskq can be
+ * configured via the "zfs_zil_clean_taskq_nthr_pct" tunable.
+ */
+int zfs_zil_clean_taskq_nthr_pct = 100;
+int zfs_zil_clean_taskq_minalloc = 1024;
+int zfs_zil_clean_taskq_maxalloc = 1024 * 1024;
+
 #if defined(__FreeBSD__) && defined(_KERNEL)
 
 extern int zfs_vdev_async_write_active_max_dirty_percent;
@@ -272,6 +302,12 @@ dsl_pool_open_impl(spa_t *spa, uint64_t txg)
 	    zfs_sync_taskq_batch_pct, minclsyspri, 1, INT_MAX,
 	    TASKQ_THREADS_CPU_PCT);
 
+	dp->dp_zil_clean_taskq = taskq_create("dp_zil_clean_taskq",
+	    zfs_zil_clean_taskq_nthr_pct, minclsyspri,
+	    zfs_zil_clean_taskq_minalloc,
+	    zfs_zil_clean_taskq_maxalloc,
+	    TASKQ_PREPOPULATE | TASKQ_THREADS_CPU_PCT);
+
 	mutex_init(&dp->dp_lock, NULL, MUTEX_DEFAULT, NULL);
 	cv_init(&dp->dp_spaceavail_cv, NULL, CV_DEFAULT, NULL);
 
@@ -422,6 +458,7 @@ dsl_pool_close(dsl_pool_t *dp)
 	txg_list_destroy(&dp->dp_sync_tasks);
 	txg_list_destroy(&dp->dp_dirty_dirs);
 
+	taskq_destroy(dp->dp_zil_clean_taskq);
 	taskq_destroy(dp->dp_sync_taskq);
 
 	/*
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
index 639eefe8da64..ac1ac50751ce 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
@@ -22,6 +22,7 @@
  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2016 Gary Mills
  * Copyright (c) 2011, 2016 by Delphix. All rights reserved.
+ * Copyright (c) 2017 Datto Inc.
  */
 
 #include <sys/dsl_scan.h>
@@ -310,6 +311,8 @@ dsl_scan_done(dsl_scan_t *scn, boolean_t complete, dmu_tx_t *tx)
 		scn->scn_phys.scn_queue_obj = 0;
 	}
 
+	scn->scn_phys.scn_flags &= ~DSF_SCRUB_PAUSED;
+
 	/*
 	 * If we were "restarted" from a stopped state, don't bother
 	 * with anything else.
@@ -393,6 +396,91 @@ dsl_scan_cancel(dsl_pool_t *dp)
 	    dsl_scan_cancel_sync, NULL, 3, ZFS_SPACE_CHECK_RESERVED));
 }
 
+boolean_t
+dsl_scan_is_paused_scrub(const dsl_scan_t *scn)
+{
+	if (dsl_scan_scrubbing(scn->scn_dp) &&
+	    scn->scn_phys.scn_flags & DSF_SCRUB_PAUSED)
+		return (B_TRUE);
+
+	return (B_FALSE);
+}
+
+static int
+dsl_scrub_pause_resume_check(void *arg, dmu_tx_t *tx)
+{
+	pool_scrub_cmd_t *cmd = arg;
+	dsl_pool_t *dp = dmu_tx_pool(tx);
+	dsl_scan_t *scn = dp->dp_scan;
+
+	if (*cmd == POOL_SCRUB_PAUSE) {
+		/* can't pause a scrub when there is no in-progress scrub */
+		if (!dsl_scan_scrubbing(dp))
+			return (SET_ERROR(ENOENT));
+
+		/* can't pause a paused scrub */
+		if (dsl_scan_is_paused_scrub(scn))
+			return (SET_ERROR(EBUSY));
+	} else if (*cmd != POOL_SCRUB_NORMAL) {
+		return (SET_ERROR(ENOTSUP));
+	}
+
+	return (0);
+}
+
+static void
+dsl_scrub_pause_resume_sync(void *arg, dmu_tx_t *tx)
+{
+	pool_scrub_cmd_t *cmd = arg;
+	dsl_pool_t *dp = dmu_tx_pool(tx);
+	spa_t *spa = dp->dp_spa;
+	dsl_scan_t *scn = dp->dp_scan;
+
+	if (*cmd == POOL_SCRUB_PAUSE) {
+		/* can't pause a scrub when there is no in-progress scrub */
+		spa->spa_scan_pass_scrub_pause = gethrestime_sec();
+		scn->scn_phys.scn_flags |= DSF_SCRUB_PAUSED;
+		dsl_scan_sync_state(scn, tx);
+	} else {
+		ASSERT3U(*cmd, ==, POOL_SCRUB_NORMAL);
+		if (dsl_scan_is_paused_scrub(scn)) {
+			/*
+			 * We need to keep track of how much time we spend
+			 * paused per pass so that we can adjust the scrub rate
+			 * shown in the output of 'zpool status'
+			 */
+			spa->spa_scan_pass_scrub_spent_paused +=
+			    gethrestime_sec() - spa->spa_scan_pass_scrub_pause;
+			spa->spa_scan_pass_scrub_pause = 0;
+			scn->scn_phys.scn_flags &= ~DSF_SCRUB_PAUSED;
+			dsl_scan_sync_state(scn, tx);
+		}
+	}
+}
+
+/*
+ * Set scrub pause/resume state if it makes sense to do so
+ */
+int
+dsl_scrub_set_pause_resume(const dsl_pool_t *dp, pool_scrub_cmd_t cmd)
+{
+	return (dsl_sync_task(spa_name(dp->dp_spa),
+	    dsl_scrub_pause_resume_check, dsl_scrub_pause_resume_sync, &cmd, 3,
+	    ZFS_SPACE_CHECK_RESERVED));
+}
+
+boolean_t
+dsl_scan_scrubbing(const dsl_pool_t *dp)
+{
+	dsl_scan_t *scn = dp->dp_scan;
+
+	if (scn->scn_phys.scn_state == DSS_SCANNING &&
+	    scn->scn_phys.scn_func == POOL_SCAN_SCRUB)
+		return (B_TRUE);
+
+	return (B_FALSE);
+}
+
 static void dsl_scan_visitbp(blkptr_t *bp, const zbookmark_phys_t *zb,
     dnode_phys_t *dnp, dsl_dataset_t *ds, dsl_scan_t *scn,
     dmu_objset_type_t ostype, dmu_tx_t *tx);
@@ -435,14 +523,14 @@ dsl_scan_sync_state(dsl_scan_t *scn, dmu_tx_t *tx)
 extern int zfs_vdev_async_write_active_min_dirty_percent;
 
 static boolean_t
-dsl_scan_check_pause(dsl_scan_t *scn, const zbookmark_phys_t *zb)
+dsl_scan_check_suspend(dsl_scan_t *scn, const zbookmark_phys_t *zb)
 {
 	/* we never skip user/group accounting objects */
 	if (zb && (int64_t)zb->zb_object < 0)
 		return (B_FALSE);
 
-	if (scn->scn_pausing)
-		return (B_TRUE); /* we're already pausing */
+	if (scn->scn_suspending)
+		return (B_TRUE); /* we're already suspending */
 
 	if (!ZB_IS_ZERO(&scn->scn_phys.scn_bookmark))
 		return (B_FALSE); /* we're resuming */
@@ -452,7 +540,7 @@ dsl_scan_check_pause(dsl_scan_t *scn, const zbookmark_phys_t *zb)
 		return (B_FALSE);
 
 	/*
-	 * We pause if:
+	 * We suspend if:
 	 *  - we have scanned for the maximum time: an entire txg
 	 *    timeout (default 5 sec)
 	 *  or
@@ -475,19 +563,19 @@ dsl_scan_check_pause(dsl_scan_t *scn, const zbookmark_phys_t *zb)
 	    dirty_pct >= zfs_vdev_async_write_active_min_dirty_percent)) ||
 	    spa_shutting_down(scn->scn_dp->dp_spa)) {
 		if (zb) {
-			dprintf("pausing at bookmark %llx/%llx/%llx/%llx\n",
+			dprintf("suspending at bookmark %llx/%llx/%llx/%llx\n",
 			    (longlong_t)zb->zb_objset,
 			    (longlong_t)zb->zb_object,
 			    (longlong_t)zb->zb_level,
 			    (longlong_t)zb->zb_blkid);
 			scn->scn_phys.scn_bookmark = *zb;
 		}
-		dprintf("pausing at DDT bookmark %llx/%llx/%llx/%llx\n",
+		dprintf("suspending at DDT bookmark %llx/%llx/%llx/%llx\n",
 		    (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_class,
 		    (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_type,
 		    (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_checksum,
 		    (longlong_t)scn->scn_phys.scn_ddt_bookmark.ddb_cursor);
-		scn->scn_pausing = B_TRUE;
+		scn->scn_suspending = B_TRUE;
 		return (B_TRUE);
 	}
 	return (B_FALSE);
@@ -625,7 +713,7 @@ dsl_scan_check_resume(dsl_scan_t *scn, const dnode_phys_t *dnp,
 		/*
 		 * If we found the block we're trying to resume from, or
 		 * we went past it to a different object, zero it out to
-		 * indicate that it's OK to start checking for pausing
+		 * indicate that it's OK to start checking for suspending
 		 * again.
 		 */
 		if (bcmp(zb, &scn->scn_phys.scn_bookmark, sizeof (*zb)) == 0 ||
@@ -728,7 +816,7 @@ dsl_scan_recurse(dsl_scan_t *scn, dsl_dataset_t *ds, dmu_objset_type_t ostype,
 			/*
 			 * We also always visit user/group accounting
 			 * objects, and never skip them, even if we are
-			 * pausing.  This is necessary so that the space
+			 * suspending.  This is necessary so that the space
 			 * deltas from this txg get integrated.
 			 */
 			dsl_scan_visitdnode(scn, ds, osp->os_type,
@@ -784,7 +872,7 @@ dsl_scan_visitbp(blkptr_t *bp, const zbookmark_phys_t *zb,
 
 	/* ASSERT(pbuf == NULL || arc_released(pbuf)); */
 
-	if (dsl_scan_check_pause(scn, zb))
+	if (dsl_scan_check_suspend(scn, zb))
 		return;
 
 	if (dsl_scan_check_resume(scn, dnp, zb))
@@ -1121,14 +1209,14 @@ dsl_scan_visitds(dsl_scan_t *scn, uint64_t dsobj, dmu_tx_t *tx)
 	char *dsname = kmem_alloc(ZFS_MAX_DATASET_NAME_LEN, KM_SLEEP);
 	dsl_dataset_name(ds, dsname);
 	zfs_dbgmsg("scanned dataset %llu (%s) with min=%llu max=%llu; "
-	    "pausing=%u",
+	    "suspending=%u",
 	    (longlong_t)dsobj, dsname,
 	    (longlong_t)scn->scn_phys.scn_cur_min_txg,
 	    (longlong_t)scn->scn_phys.scn_cur_max_txg,
-	    (int)scn->scn_pausing);
+	    (int)scn->scn_suspending);
 	kmem_free(dsname, ZFS_MAX_DATASET_NAME_LEN);
 
-	if (scn->scn_pausing)
+	if (scn->scn_suspending)
 		goto out;
 
 	/*
@@ -1292,13 +1380,13 @@ dsl_scan_ddt(dsl_scan_t *scn, dmu_tx_t *tx)
 		dsl_scan_ddt_entry(scn, ddb->ddb_checksum, &dde, tx);
 		n++;
 
-		if (dsl_scan_check_pause(scn, NULL))
+		if (dsl_scan_check_suspend(scn, NULL))
 			break;
 	}
 
-	zfs_dbgmsg("scanned %llu ddt entries with class_max = %u; pausing=%u",
-	    (longlong_t)n, (int)scn->scn_phys.scn_ddt_class_max,
-	    (int)scn->scn_pausing);
+	zfs_dbgmsg("scanned %llu ddt entries with class_max = %u; "
+	    "suspending=%u", (longlong_t)n,
+	    (int)scn->scn_phys.scn_ddt_class_max, (int)scn->scn_suspending);
 
 	ASSERT(error == 0 || error == ENOENT);
 	ASSERT(error != ENOENT ||
@@ -1341,7 +1429,7 @@ dsl_scan_visit(dsl_scan_t *scn, dmu_tx_t *tx)
 		scn->scn_phys.scn_cur_min_txg = scn->scn_phys.scn_min_txg;
 		scn->scn_phys.scn_cur_max_txg = scn->scn_phys.scn_max_txg;
 		dsl_scan_ddt(scn, tx);
-		if (scn->scn_pausing)
+		if (scn->scn_suspending)
 			return;
 	}
 
@@ -1353,7 +1441,7 @@ dsl_scan_visit(dsl_scan_t *scn, dmu_tx_t *tx)
 		dsl_scan_visit_rootbp(scn, NULL,
 		    &dp->dp_meta_rootbp, tx);
 		spa_set_rootblkptr(dp->dp_spa, &dp->dp_meta_rootbp);
-		if (scn->scn_pausing)
+		if (scn->scn_suspending)
 			return;
 
 		if (spa_version(dp->dp_spa) < SPA_VERSION_DSL_SCRUB) {
@@ -1363,22 +1451,22 @@ dsl_scan_visit(dsl_scan_t *scn, dmu_tx_t *tx)
 			dsl_scan_visitds(scn,
 			    dp->dp_origin_snap->ds_object, tx);
 		}
-		ASSERT(!scn->scn_pausing);
+		ASSERT(!scn->scn_suspending);
 	} else if (scn->scn_phys.scn_bookmark.zb_objset !=
 	    ZB_DESTROYED_OBJSET) {
 		/*
-		 * If we were paused, continue from here.  Note if the
-		 * ds we were paused on was deleted, the zb_objset may
+		 * If we were suspended, continue from here.  Note if the
+		 * ds we were suspended on was deleted, the zb_objset may
 		 * be -1, so we will skip this and find a new objset
 		 * below.
 		 */
 		dsl_scan_visitds(scn, scn->scn_phys.scn_bookmark.zb_objset, tx);
-		if (scn->scn_pausing)
+		if (scn->scn_suspending)
 			return;
 	}
 
 	/*
-	 * In case we were paused right at the end of the ds, zero the
+	 * In case we were suspended right at the end of the ds, zero the
 	 * bookmark so we don't think that we're still trying to resume.
 	 */
 	bzero(&scn->scn_phys.scn_bookmark, sizeof (zbookmark_phys_t));
@@ -1410,14 +1498,14 @@ dsl_scan_visit(dsl_scan_t *scn, dmu_tx_t *tx)
 
 		dsl_scan_visitds(scn, dsobj, tx);
 		zap_cursor_fini(&zc);
-		if (scn->scn_pausing)
+		if (scn->scn_suspending)
 			return;
 	}
 	zap_cursor_fini(&zc);
 }
 
 static boolean_t
-dsl_scan_free_should_pause(dsl_scan_t *scn)
+dsl_scan_free_should_suspend(dsl_scan_t *scn)
 {
 	uint64_t elapsed_nanosecs;
 
@@ -1441,7 +1529,7 @@ dsl_scan_free_block_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx)
 
 	if (!scn->scn_is_bptree ||
 	    (BP_GET_LEVEL(bp) == 0 && BP_GET_TYPE(bp) != DMU_OT_OBJSET)) {
-		if (dsl_scan_free_should_pause(scn))
+		if (dsl_scan_free_should_suspend(scn))
 			return (SET_ERROR(ERESTART));
 	}
 
@@ -1464,7 +1552,8 @@ dsl_scan_active(dsl_scan_t *scn)
 		return (B_FALSE);
 	if (spa_shutting_down(spa))
 		return (B_FALSE);
-	if (scn->scn_phys.scn_state == DSS_SCANNING ||
+	if ((scn->scn_phys.scn_state == DSS_SCANNING &&
+	    !dsl_scan_is_paused_scrub(scn)) ||
 	    (scn->scn_async_destroying && !scn->scn_async_stalled))
 		return (B_TRUE);
 
@@ -1519,12 +1608,12 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t *tx)
 		return;
 
 	scn->scn_visited_this_txg = 0;
-	scn->scn_pausing = B_FALSE;
+	scn->scn_suspending = B_FALSE;
 	scn->scn_sync_start_time = gethrtime();
 	spa->spa_scrub_active = B_TRUE;
 
 	/*
-	 * First process the async destroys.  If we pause, don't do
+	 * First process the async destroys.  If we suspend, don't do
 	 * any scrubbing or resilvering.  This ensures that there are no
 	 * async destroys while we are scanning, so the scan code doesn't
 	 * have to worry about traversing it.  It is also faster to free the
@@ -1641,7 +1730,7 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t *tx)
 		return;
 
 	if (scn->scn_done_txg == tx->tx_txg) {
-		ASSERT(!scn->scn_pausing);
+		ASSERT(!scn->scn_suspending);
 		/* finished with scan. */
 		zfs_dbgmsg("txg %llu scan complete", tx->tx_txg);
 		dsl_scan_done(scn, B_TRUE, tx);
@@ -1650,6 +1739,9 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t *tx)
 		return;
 	}
 
+	if (dsl_scan_is_paused_scrub(scn))
+		return;
+
 	if (scn->scn_phys.scn_ddt_bookmark.ddb_class <=
 	    scn->scn_phys.scn_ddt_class_max) {
 		zfs_dbgmsg("doing scan sync txg %llu; "
@@ -1684,7 +1776,7 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t *tx)
 	    (longlong_t)scn->scn_visited_this_txg,
 	    (longlong_t)NSEC2MSEC(gethrtime() - scn->scn_sync_start_time));
 
-	if (!scn->scn_pausing) {
+	if (!scn->scn_suspending) {
 		scn->scn_done_txg = tx->tx_txg + 1;
 		zfs_dbgmsg("txg %llu traversal complete, waiting till txg %llu",
 		    tx->tx_txg, scn->scn_done_txg);
@@ -1893,11 +1985,15 @@ dsl_scan_scrub_cb(dsl_pool_t *dp,
 	return (0);
 }
 
-/* Called by the ZFS_IOC_POOL_SCAN ioctl to start a scrub or resilver */
+/*
+ * Called by the ZFS_IOC_POOL_SCAN ioctl to start a scrub or resilver.
+ * Can also be called to resume a paused scrub.
+ */
 int
 dsl_scan(dsl_pool_t *dp, pool_scan_func_t func)
 {
 	spa_t *spa = dp->dp_spa;
+	dsl_scan_t *scn = dp->dp_scan;
 
 	/*
 	 * Purge all vdev caches and probe all devices.  We do this here
@@ -1912,6 +2008,16 @@ dsl_scan(dsl_pool_t *dp, pool_scan_func_t func)
 	spa->spa_scrub_reopen = B_FALSE;
 	(void) spa_vdev_state_exit(spa, NULL, 0);
 
+	if (func == POOL_SCAN_SCRUB && dsl_scan_is_paused_scrub(scn)) {
+		/* got scrub start cmd, resume paused scrub */
+		int err = dsl_scrub_set_pause_resume(scn->scn_dp,
+		    POOL_SCRUB_NORMAL);
+		if (err == 0)
+			return (ECANCELED);
+
+		return (SET_ERROR(err));
+	}
+
 	return (dsl_sync_task(spa_name(spa), dsl_scan_setup_check,
 	    dsl_scan_setup_sync, &func, 0, ZFS_SPACE_CHECK_NONE));
 }
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
index 3b2b227d0cce..f2235cecca51 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
@@ -28,6 +28,7 @@
  * Copyright 2013 Saso Kiselkov. All rights reserved.
  * Copyright (c) 2014 Integros [integros.com]
  * Copyright 2016 Toomas Soome <tsoome@me.com>
+ * Copyright (c) 2017 Datto Inc.
  */
 
 /*
@@ -6048,6 +6049,16 @@ spa_vdev_setfru(spa_t *spa, uint64_t guid, const char *newfru)
  * SPA Scanning
  * ==========================================================================
  */
+int
+spa_scrub_pause_resume(spa_t *spa, pool_scrub_cmd_t cmd)
+{
+	ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == 0);
+
+	if (dsl_scan_resilvering(spa->spa_dsl_pool))
+		return (SET_ERROR(EBUSY));
+
+	return (dsl_scrub_set_pause_resume(spa->spa_dsl_pool, cmd));
+}
 
 int
 spa_scan_stop(spa_t *spa)
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
index c700a0ffd74f..b6b0e2189508 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
@@ -26,6 +26,7 @@
  * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved.
  * Copyright 2013 Saso Kiselkov. All rights reserved.
  * Copyright (c) 2014 Integros [integros.com]
+ * Copyright (c) 2017 Datto Inc.
  */
 
 #include <sys/zfs_context.h>
@@ -2145,6 +2146,11 @@ spa_scan_stat_init(spa_t *spa)
 {
 	/* data not stored on disk */
 	spa->spa_scan_pass_start = gethrestime_sec();
+	if (dsl_scan_is_paused_scrub(spa->spa_dsl_pool->dp_scan))
+		spa->spa_scan_pass_scrub_pause = spa->spa_scan_pass_start;
+	else
+		spa->spa_scan_pass_scrub_pause = 0;
+	spa->spa_scan_pass_scrub_spent_paused = 0;
 	spa->spa_scan_pass_exam = 0;
 	vdev_scan_stat_init(spa->spa_root_vdev);
 }
@@ -2175,6 +2181,8 @@ spa_scan_get_stats(spa_t *spa, pool_scan_stat_t *ps)
 	/* data not stored on disk */
 	ps->pss_pass_start = spa->spa_scan_pass_start;
 	ps->pss_pass_exam = spa->spa_scan_pass_exam;
+	ps->pss_pass_scrub_pause = spa->spa_scan_pass_scrub_pause;
+	ps->pss_pass_scrub_spent_paused = spa->spa_scan_pass_scrub_spent_paused;
 
 	return (0);
 }
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/abd.h sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/abd.h
index 5f4d55ac3009..07da1e13cc7d 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/abd.h
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/abd.h
@@ -61,7 +61,7 @@ typedef int abd_iter_func2_t(void *, void *, size_t, void *);
 
 extern boolean_t zfs_abd_scatter_enabled;
 
-static inline boolean_t
+inline boolean_t
 abd_is_linear(abd_t *abd)
 {
 	return ((abd->abd_flags & ABD_FLAG_LINEAR) != 0 ? B_TRUE : B_FALSE);
@@ -110,31 +110,31 @@ void abd_zero_off(abd_t *, size_t, size_t);
  * Wrappers for calls with offsets of 0
  */
 
-static inline void
+inline void
 abd_copy(abd_t *dabd, abd_t *sabd, size_t size)
 {
 	abd_copy_off(dabd, sabd, 0, 0, size);
 }
 
-static inline void
+inline void
 abd_copy_from_buf(abd_t *abd, const void *buf, size_t size)
 {
 	abd_copy_from_buf_off(abd, buf, 0, size);
 }
 
-static inline void
+inline void
 abd_copy_to_buf(void* buf, abd_t *abd, size_t size)
 {
 	abd_copy_to_buf_off(buf, abd, 0, size);
 }
 
-static inline int
+inline int
 abd_cmp_buf(abd_t *abd, const void *buf, size_t size)
 {
 	return (abd_cmp_buf_off(abd, buf, 0, size));
 }
 
-static inline void
+inline void
 abd_zero(abd_t *abd, size_t size)
 {
 	abd_zero_off(abd, 0, size);
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h
index 8291e470a116..4ed37b8469b3 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h
@@ -122,6 +122,8 @@ typedef struct dsl_pool {
 	txg_list_t dp_dirty_dirs;
 	txg_list_t dp_sync_tasks;
 	taskq_t *dp_sync_taskq;
+	taskq_t *dp_zil_clean_taskq;
+	txg_list_t dp_early_sync_tasks;
 
 	/*
 	 * Protects administrative changes (properties, namespace)
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h
index ee8512c07dac..fd950cc01476 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h
@@ -21,6 +21,7 @@
 /*
  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2017 Datto Inc.
  */
 
 #ifndef	_SYS_DSL_SCAN_H
@@ -70,6 +71,7 @@ typedef struct dsl_scan_phys {
 
 typedef enum dsl_scan_flags {
 	DSF_VISIT_DS_AGAIN = 1<<0,
+	DSF_SCRUB_PAUSED = 1<<1,
 } dsl_scan_flags_t;
 
 /*
@@ -82,8 +84,8 @@ typedef enum dsl_scan_flags {
  *
  * The following members of this structure direct the behavior of the scan:
  *
- * scn_pausing -	a scan that cannot be completed in a single txg or
- *			has exceeded its allotted time will need to pause.
+ * scn_suspending -	a scan that cannot be completed in a single txg or
+ *			has exceeded its allotted time will need to suspend.
  *			When this flag is set the scanner will stop traversing
  *			the pool and write out the current state to disk.
  *
@@ -105,7 +107,7 @@ typedef enum dsl_scan_flags {
 typedef struct dsl_scan {
 	struct dsl_pool *scn_dp;
 
-	boolean_t scn_pausing;
+	boolean_t scn_suspending;
 	uint64_t scn_restart_txg;
 	uint64_t scn_done_txg;
 	uint64_t scn_sync_start_time;
@@ -115,8 +117,6 @@ typedef struct dsl_scan {
 	boolean_t scn_is_bptree;
 	boolean_t scn_async_destroying;
 	boolean_t scn_async_stalled;
-
-	/* for debugging / information */
 	uint64_t scn_visited_this_txg;
 
 	dsl_scan_phys_t scn_phys;
@@ -127,6 +127,8 @@ void dsl_scan_fini(struct dsl_pool *dp);
 void dsl_scan_sync(struct dsl_pool *, dmu_tx_t *);
 int dsl_scan_cancel(struct dsl_pool *);
 int dsl_scan(struct dsl_pool *, pool_scan_func_t);
+boolean_t dsl_scan_scrubbing(const struct dsl_pool *dp);
+int dsl_scrub_set_pause_resume(const struct dsl_pool *dp, pool_scrub_cmd_t cmd);
 void dsl_resilver_restart(struct dsl_pool *, uint64_t txg);
 boolean_t dsl_scan_resilvering(struct dsl_pool *dp);
 boolean_t dsl_dataset_unstable(struct dsl_dataset *ds);
@@ -137,6 +139,7 @@ void dsl_scan_ds_snapshotted(struct dsl_dataset *ds, struct dmu_tx *tx);
 void dsl_scan_ds_clone_swapped(struct dsl_dataset *ds1, struct dsl_dataset *ds2,
     struct dmu_tx *tx);
 boolean_t dsl_scan_active(dsl_scan_t *scn);
+boolean_t dsl_scan_is_paused_scrub(const dsl_scan_t *scn);
 
 #ifdef	__cplusplus
 }
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
index c66867bef165..71ffc5b12f9a 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
@@ -25,6 +25,7 @@
  * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved.
  * Copyright 2013 Saso Kiselkov. All rights reserved.
  * Copyright (c) 2014 Integros [integros.com]
+ * Copyright (c) 2017 Datto Inc.
  */
 
 #ifndef _SYS_SPA_H
@@ -695,6 +696,7 @@ extern void spa_l2cache_drop(spa_t *spa);
 /* scanning */
 extern int spa_scan(spa_t *spa, pool_scan_func_t func);
 extern int spa_scan_stop(spa_t *spa);
+extern int spa_scrub_pause_resume(spa_t *spa, pool_scrub_cmd_t flag);
 
 /* spa syncing */
 extern void spa_sync(spa_t *spa, uint64_t txg); /* only for DMU use */
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
index f308e7387430..78cdaecf496f 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
@@ -25,6 +25,7 @@
  * Copyright 2013 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
  * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved.
  * Copyright 2013 Saso Kiselkov. All rights reserved.
+ * Copyright (c) 2017 Datto Inc.
  */
 
 #ifndef _SYS_SPA_IMPL_H
@@ -193,6 +194,8 @@ struct spa {
 	uint8_t		spa_scrub_started;	/* started since last boot */
 	uint8_t		spa_scrub_reopen;	/* scrub doing vdev_reopen */
 	uint64_t	spa_scan_pass_start;	/* start time per pass/reboot */
+	uint64_t	spa_scan_pass_scrub_pause; /* scrub pause time */
+	uint64_t	spa_scan_pass_scrub_spent_paused; /* total paused */
 	uint64_t	spa_scan_pass_exam;	/* examined bytes per pass */
 	kmutex_t	spa_async_lock;		/* protect async state */
 	kthread_t	*spa_async_thread;	/* thread doing async task */
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
index c127788b37a8..6465c50e2807 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
@@ -227,7 +227,7 @@ ZTOV(znode_t *zp)
 {
 	vnode_t *vp = zp->z_vnode;
 
-	ASSERT(vp == NULL || vp->v_data == NULL || vp->v_data == zp);
+	ASSERT(vp != NULL && vp->v_data == zp);
 	return (vp);
 }
 static __inline znode_t *
@@ -235,7 +235,7 @@ VTOZ(vnode_t *vp)
 {
 	znode_t *zp = (znode_t *)vp->v_data;
 
-	ASSERT(zp == NULL || zp->z_vnode == NULL || zp->z_vnode == vp);
+	ASSERT(zp != NULL && zp->z_vnode == vp);
 	return (zp);
 }
 #else
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil_impl.h sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil_impl.h
index 7b3eaf4a55f7..f25e7cd3c279 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil_impl.h
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil_impl.h
@@ -124,7 +124,6 @@ struct zilog {
 	list_t		zl_lwb_list;	/* in-flight log write list */
 	kmutex_t	zl_vdev_lock;	/* protects zl_vdev_tree */
 	avl_tree_t	zl_vdev_tree;	/* vdevs to flush in zil_commit() */
-	taskq_t		*zl_clean_taskq; /* runs lwb and itx clean tasks */
 	avl_tree_t	zl_bp_tree;	/* track bps during log parse */
 	clock_t		zl_replay_time;	/* lbolt of when replay started */
 	uint64_t	zl_replay_blks;	/* number of log blocks replayed */
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
index 1a9f0d47f3db..e98731442c8e 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
@@ -1602,7 +1602,10 @@ zfs_acl_ids_create(znode_t *dzp, int flag, vattr_t *vap, cred_t *cr,
 	boolean_t	trim = B_FALSE;
 	boolean_t	inherited = B_FALSE;
 
-	ASSERT_VOP_ELOCKED(ZTOV(dzp), __func__);
+	if ((flag & IS_ROOT_NODE) == 0)
+		ASSERT_VOP_ELOCKED(ZTOV(dzp), __func__);
+	else
+		ASSERT(dzp->z_vnode == NULL);
 	bzero(acl_ids, sizeof (zfs_acl_ids_t));
 	acl_ids->z_mode = MAKEIMODE(vap->va_type, vap->va_mode);
 
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
index 9a6fcbe347a4..9636d6d4b32c 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
@@ -434,7 +434,6 @@ zfsctl_root(zfsvfs_t *zfsvfs, int flags, vnode_t **vpp)
 /*
  * Common open routine.  Disallow any write access.
  */
-/* ARGSUSED */
 static int
 zfsctl_common_open(struct vop_open_args *ap)
 {
@@ -459,7 +458,6 @@ zfsctl_common_close(struct vop_close_args *ap)
 /*
  * Common access routine.  Disallow writes.
  */
-/* ARGSUSED */
 static int
 zfsctl_common_access(ap)
 	struct vop_access_args /* {
@@ -515,7 +513,6 @@ zfsctl_common_getattr(vnode_t *vp, vattr_t *vap)
 	vap->va_nlink = 2;
 }
 
-/*ARGSUSED*/
 static int
 zfsctl_common_fid(ap)
 	struct vop_fid_args /* {
@@ -569,7 +566,6 @@ zfsctl_common_print(ap)
 /*
  * Get root directory attributes.
  */
-/* ARGSUSED */
 static int
 zfsctl_root_getattr(ap)
 	struct vop_getattr_args /* {
@@ -820,8 +816,13 @@ zfsctl_snapshot_vnode_setup(vnode_t *vp, void *arg)
  * Lookup entry point for the 'snapshot' directory.  Try to open the
  * snapshot if it exist, creating the pseudo filesystem vnode as necessary.
  * Perform a mount of the associated dataset on top of the vnode.
+ * There are four possibilities:
+ * - the snapshot node and vnode do not exist
+ * - the snapshot vnode is covered by the mounted snapshot
+ * - the snapshot vnode is not covered yet, the mount operation is in progress
+ * - the snapshot vnode is not covered, because the snapshot has been unmounted
+ * The last two states are transient and should be relatively short-lived.
  */
-/* ARGSUSED */
 int
 zfsctl_snapdir_lookup(ap)
 	struct vop_lookup_args /* {
@@ -886,7 +887,7 @@ zfsctl_snapdir_lookup(ap)
 
 		/*
 		 * The vnode must be referenced at least by this thread and
-		 * the mounted snapshot or the thread doing the mounting.
+		 * the mount point or the thread doing the mounting.
 		 * There can be more references from concurrent lookups.
 		 */
 		KASSERT(vrefcnt(*vpp) > 1, ("found unreferenced mountpoint"));
@@ -898,22 +899,31 @@ zfsctl_snapdir_lookup(ap)
 		if (err != EJUSTRETURN)
 			return (err);
 
-#ifdef INVARIANTS
 		/*
-		 * If the vnode not covered yet, then the mount operation
-		 * must be in progress.
+		 * If the vnode is not covered, then either the mount operation
+		 * is in progress or the snapshot has already been unmounted
+		 * but the vnode hasn't been inactivated and reclaimed yet.
+		 * We can try to re-use the vnode in the latter case.
 		 */
 		VI_LOCK(*vpp);
-		KASSERT(((*vpp)->v_iflag & VI_MOUNT) != 0,
-		    ("snapshot vnode not covered"));
-		VI_UNLOCK(*vpp);
-#endif
-		vput(*vpp);
+		if (((*vpp)->v_iflag & VI_MOUNT) == 0) {
+			/* Upgrade to exclusive lock in order to:
+			 * - avoid race conditions
+			 * - satisfy the contract of mount_snapshot()
+			 */
+			err = VOP_LOCK(*vpp, LK_TRYUPGRADE | LK_INTERLOCK);
+			if (err == 0)
+				break;
+		} else {
+			VI_UNLOCK(*vpp);
+		}
 
 		/*
-		 * In this situation we can loop on uncontested locks and starve
+		 * In this state we can loop on uncontested locks and starve
 		 * the thread doing the lengthy, non-trivial mount operation.
+		 * So, yield to prevent that from happening.
 		 */
+		vput(*vpp);
 		kern_yield(PRI_USER);
 	}
 
@@ -1013,7 +1023,6 @@ zfsctl_snapdir_readdir(ap)
 	/* NOTREACHED */
 }
 
-/* ARGSUSED */
 static int
 zfsctl_snapdir_getattr(ap)
 	struct vop_getattr_args /* {
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
index 1befdae31d77..c1dad26df4de 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
@@ -33,6 +33,7 @@
  * Copyright (c) 2014 Integros [integros.com]
  * Copyright 2016 Toomas Soome <tsoome@me.com>
  * Copyright 2017 RackTop Systems.
+ * Copyright (c) 2017 Datto Inc.
  */
 
 /*
@@ -1487,6 +1488,7 @@ zfsvfs_hold(const char *name, void *tag, zfsvfs_t **zfvp, boolean_t writer)
 	if (error == 0) {
 		rrm_enter(&(*zfvp)->z_teardown_lock, (writer) ? RW_WRITER :
 		    RW_READER, tag);
+#ifdef illumos
 		if ((*zfvp)->z_unmounted) {
 			/*
 			 * XXX we could probably try again, since the unmounting
@@ -1496,6 +1498,13 @@ zfsvfs_hold(const char *name, void *tag, zfsvfs_t **zfvp, boolean_t writer)
 			rrm_exit(&(*zfvp)->z_teardown_lock, tag);
 			return (SET_ERROR(EBUSY));
 		}
+#else
+		/*
+		 * vfs_busy() ensures that the filesystem is not and
+		 * can not be unmounted.
+		 */
+		ASSERT(!(*zfvp)->z_unmounted);
+#endif
 	}
 	return (error);
 }
@@ -1727,6 +1736,7 @@ zfs_ioc_pool_tryimport(zfs_cmd_t *zc)
  * inputs:
  * zc_name              name of the pool
  * zc_cookie            scan func (pool_scan_func_t)
+ * zc_flags             scrub pause/resume flag (pool_scrub_cmd_t)
  */
 static int
 zfs_ioc_pool_scan(zfs_cmd_t *zc)
@@ -1737,7 +1747,12 @@ zfs_ioc_pool_scan(zfs_cmd_t *zc)
 	if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0)
 		return (error);
 
-	if (zc->zc_cookie == POOL_SCAN_NONE)
+	if (zc->zc_flags >= POOL_SCRUB_FLAGS_END)
+		return (SET_ERROR(EINVAL));
+
+	if (zc->zc_flags == POOL_SCRUB_PAUSE)
+		error = spa_scrub_pause_resume(spa, POOL_SCRUB_PAUSE);
+	else if (zc->zc_cookie == POOL_SCAN_NONE)
 		error = spa_scan_stop(spa);
 	else
 		error = spa_scan(spa, zc->zc_cookie);
@@ -3042,13 +3057,11 @@ zfs_get_vfs(const char *resource)
 	mtx_lock(&mountlist_mtx);
 	TAILQ_FOREACH(vfsp, &mountlist, mnt_list) {
 		if (strcmp(refstr_value(vfsp->vfs_resource), resource) == 0) {
-			if (vfs_busy(vfsp, MBF_MNTLSTLOCK) != 0)
-				vfsp = NULL;
+			vfs_ref(vfsp);
 			break;
 		}
 	}
-	if (vfsp == NULL)
-		mtx_unlock(&mountlist_mtx);
+	mtx_unlock(&mountlist_mtx);
 	return (vfsp);
 }
 
@@ -3538,7 +3551,9 @@ zfs_unmount_snap(const char *snapname)
 {
 	vfs_t *vfsp;
 	zfsvfs_t *zfsvfs;
+#ifdef illumos
 	int err;
+#endif
 
 	if (strchr(snapname, '@') == NULL)
 		return (0);
@@ -3550,23 +3565,19 @@ zfs_unmount_snap(const char *snapname)
 	zfsvfs = vfsp->vfs_data;
 	ASSERT(!dsl_pool_config_held(dmu_objset_pool(zfsvfs->z_os)));
 
-	err = vn_vfswlock(vfsp->vfs_vnodecovered);
 #ifdef illumos
+	err = vn_vfswlock(vfsp->vfs_vnodecovered);
 	VFS_RELE(vfsp);
-#else
-	vfs_unbusy(vfsp);
-#endif
 	if (err != 0)
 		return (SET_ERROR(err));
+#endif
 
 	/*
 	 * Always force the unmount for snapshots.
 	 */
-
 #ifdef illumos
 	(void) dounmount(vfsp, MS_FORCE, kcred);
 #else
-	vfs_ref(vfsp);
 	(void) dounmount(vfsp, MS_FORCE, curthread);
 #endif
 	return (0);
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
index 1dfe1cf4d74c..05d79c2fa916 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
@@ -5925,7 +5925,6 @@ zfs_vptocnp(struct vop_vptocnp_args *ap)
 	vnode_t *vp = ap->a_vp;;
 	zfsvfs_t *zfsvfs = vp->v_vfsp->vfs_data;
 	znode_t *zp = VTOZ(vp);
-	uint64_t parent;
 	int ltype;
 	int error;
 
@@ -5936,13 +5935,7 @@ zfs_vptocnp(struct vop_vptocnp_args *ap)
 	 * If we are a snapshot mounted under .zfs, run the operation
 	 * on the covered vnode.
 	 */
-	if ((error = sa_lookup(zp->z_sa_hdl,
-	    SA_ZPL_PARENT(zfsvfs), &parent, sizeof (parent))) != 0) {
-		ZFS_EXIT(zfsvfs);
-		return (error);
-	}
-
-	if (zp->z_id != parent || zfsvfs->z_parent == zfsvfs) {
+	if (zp->z_id != zfsvfs->z_root || zfsvfs->z_parent == zfsvfs) {
 		char name[MAXNAMLEN + 1];
 		znode_t *dzp;
 		size_t len;
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
index 1ad0d834642c..61f7041d41a1 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
@@ -143,8 +143,7 @@ zfs_znode_cache_destructor(void *buf, void *arg)
 	znode_t *zp = buf;
 
 	ASSERT(!POINTER_IS_VALID(zp->z_zfsvfs));
-	ASSERT(ZTOV(zp) == NULL);
-	vn_free(ZTOV(zp));
+	ASSERT3P(zp->z_vnode, ==, NULL);
 	ASSERT(!list_link_active(&zp->z_link_node));
 	mutex_destroy(&zp->z_acl_lock);
 	avl_destroy(&zp->z_range_avl);
diff --git sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
index 0fa57ad87b46..8c3232f6c682 100644
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
@@ -1407,8 +1407,7 @@ zil_clean(zilog_t *zilog, uint64_t synced_txg)
 		return;
 	}
 	ASSERT3U(itxg->itxg_txg, <=, synced_txg);
-	ASSERT(itxg->itxg_txg != 0);
-	ASSERT(zilog->zl_clean_taskq != NULL);
+	ASSERT3U(itxg->itxg_txg, !=, 0);
 	clean_me = itxg->itxg_itxs;
 	itxg->itxg_itxs = NULL;
 	itxg->itxg_txg = 0;
@@ -1419,7 +1418,9 @@ zil_clean(zilog_t *zilog, uint64_t synced_txg)
 	 * free it in-line. This should be rare. Note, using TQ_SLEEP
 	 * created a bad performance problem.
 	 */
-	if (taskq_dispatch(zilog->zl_clean_taskq,
+	ASSERT3P(zilog->zl_dmu_pool, !=, NULL);
+	ASSERT3P(zilog->zl_dmu_pool->dp_zil_clean_taskq, !=, NULL);
+	if (taskq_dispatch(zilog->zl_dmu_pool->dp_zil_clean_taskq,
 	    (void (*)(void *))zil_itxg_clean, clean_me, TQ_NOSLEEP) == 0)
 		zil_itxg_clean(clean_me);
 }
@@ -1848,13 +1849,10 @@ zil_open(objset_t *os, zil_get_data_t *get_data)
 {
 	zilog_t *zilog = dmu_objset_zil(os);
 
-	ASSERT(zilog->zl_clean_taskq == NULL);
 	ASSERT(zilog->zl_get_data == NULL);
 	ASSERT(list_is_empty(&zilog->zl_lwb_list));
 
 	zilog->zl_get_data = get_data;
-	zilog->zl_clean_taskq = taskq_create("zil_clean", 1, minclsyspri,
-	    2, 2, TASKQ_PREPOPULATE);
 
 	return (zilog);
 }
@@ -1888,8 +1886,6 @@ zil_close(zilog_t *zilog)
 		zfs_dbgmsg("zil (%p) is dirty, txg %llu", zilog, txg);
 	VERIFY(!zilog_is_dirty(zilog));
 
-	taskq_destroy(zilog->zl_clean_taskq);
-	zilog->zl_clean_taskq = NULL;
 	zilog->zl_get_data = NULL;
 
 	/*
diff --git sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
index 7c72c887d419..676e5ca85729 100644
--- sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
+++ sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
@@ -26,6 +26,7 @@
  * Copyright (c) 2013, Joyent, Inc. All rights reserved.
  * Copyright (c) 2012, Martin Matuska <mm@FreeBSD.org>. All rights reserved.
  * Copyright (c) 2014 Integros [integros.com]
+ * Copyright (c) 2017 Datto Inc.
  */
 
 /* Portions Copyright 2010 Robert Milkowski */
@@ -696,6 +697,16 @@ typedef enum pool_scan_func {
 	POOL_SCAN_FUNCS
 } pool_scan_func_t;
 
+/*
+ * Used to control scrub pause and resume.
+ */
+typedef enum pool_scrub_cmd {
+	POOL_SCRUB_NORMAL = 0,
+	POOL_SCRUB_PAUSE,
+	POOL_SCRUB_FLAGS_END
+} pool_scrub_cmd_t;
+
+
 /*
  * ZIO types.  Needed to interpret vdev statistics below.
  */
@@ -728,6 +739,9 @@ typedef struct pool_scan_stat {
 	/* values not stored on disk */
 	uint64_t	pss_pass_exam;	/* examined bytes per scan pass */
 	uint64_t	pss_pass_start;	/* start time of a scan pass */
+	uint64_t	pss_pass_scrub_pause; /* pause time of a scurb pass */
+	/* cumulative time scrub spent paused, needed for rate calculation */
+	uint64_t	pss_pass_scrub_spent_paused;
 } pool_scan_stat_t;
 
 typedef enum dsl_scan_state {
diff --git sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h
index a45d18e8ab23..93f1855b3908 100644
--- sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h
+++ sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h
@@ -525,7 +525,9 @@ extern "C" {
 /*
  * Define the appropriate "implementation choices".
  */
+#if !defined(_ILP32)
 #define	_ILP32
+#endif
 #if !defined(_I32LPx) && defined(_KERNEL)
 #define	_I32LPx
 #endif
diff --git sys/cddl/dev/dtrace/mips/dtrace_asm.S sys/cddl/dev/dtrace/mips/dtrace_asm.S
index a3b24aafb1a2..b40336c0f114 100644
--- sys/cddl/dev/dtrace/mips/dtrace_asm.S
+++ sys/cddl/dev/dtrace/mips/dtrace_asm.S
@@ -37,8 +37,6 @@
 #include <machine/cpuregs.h>
 #include <machine/regnum.h>
 
-#include "assym.s"
-
         .set    noreorder               # Noreorder is default style!
 
 /*
diff --git sys/cddl/dev/dtrace/mips/dtrace_subr.c sys/cddl/dev/dtrace/mips/dtrace_subr.c
index 7d33407d59cb..56ae129370fd 100644
--- sys/cddl/dev/dtrace/mips/dtrace_subr.c
+++ sys/cddl/dev/dtrace/mips/dtrace_subr.c
@@ -50,6 +50,8 @@ extern int (*dtrace_invop_jump_addr)(struct trapframe *);
 extern dtrace_id_t	dtrace_probeid_error;
 
 int dtrace_invop(uintptr_t, struct trapframe *, uintptr_t);
+void dtrace_invop_init(void);
+void dtrace_invop_uninit(void);
 
 typedef struct dtrace_invop_hdlr {
 	int (*dtih_func)(uintptr_t, struct trapframe *, uintptr_t);
diff --git sys/cddl/dev/fbt/mips/fbt_isa.c sys/cddl/dev/fbt/mips/fbt_isa.c
index a4e9e8b0a109..f1213655d659 100644
--- sys/cddl/dev/fbt/mips/fbt_isa.c
+++ sys/cddl/dev/fbt/mips/fbt_isa.c
@@ -82,7 +82,6 @@ fbt_provide_module_function(linker_file_t lf, int symindx,
     linker_symval_t *symval, void *opaque)
 {
 	fbt_probe_t *fbt, *retfbt;
-	uint32_t *target, *start;
 	uint32_t *instr, *limit;
 	const char *name;
 	char *modname;
diff --git sys/compat/cloudabi/cloudabi_fd.c sys/compat/cloudabi/cloudabi_fd.c
index bd593349b8fa..3f57da40d68f 100644
--- sys/compat/cloudabi/cloudabi_fd.c
+++ sys/compat/cloudabi/cloudabi_fd.c
@@ -56,7 +56,6 @@ __FBSDID("$FreeBSD$");
 	MAPPING(CLOUDABI_RIGHT_FILE_ALLOCATE, CAP_WRITE)		\
 	MAPPING(CLOUDABI_RIGHT_FILE_CREATE_DIRECTORY, CAP_MKDIRAT)	\
 	MAPPING(CLOUDABI_RIGHT_FILE_CREATE_FILE, CAP_CREATE)		\
-	MAPPING(CLOUDABI_RIGHT_FILE_CREATE_FIFO, CAP_MKFIFOAT)		\
 	MAPPING(CLOUDABI_RIGHT_FILE_LINK_SOURCE, CAP_LINKAT_SOURCE)	\
 	MAPPING(CLOUDABI_RIGHT_FILE_LINK_TARGET, CAP_LINKAT_TARGET)	\
 	MAPPING(CLOUDABI_RIGHT_FILE_OPEN, CAP_LOOKUP)			\
@@ -78,15 +77,7 @@ __FBSDID("$FreeBSD$");
 	MAPPING(CLOUDABI_RIGHT_POLL_PROC_TERMINATE, CAP_EVENT)		\
 	MAPPING(CLOUDABI_RIGHT_POLL_WAIT, CAP_KQUEUE_EVENT)		\
 	MAPPING(CLOUDABI_RIGHT_PROC_EXEC, CAP_FEXECVE)			\
-	MAPPING(CLOUDABI_RIGHT_SOCK_ACCEPT, CAP_ACCEPT)			\
-	MAPPING(CLOUDABI_RIGHT_SOCK_BIND_DIRECTORY, CAP_BINDAT)		\
-	MAPPING(CLOUDABI_RIGHT_SOCK_BIND_SOCKET, CAP_BIND)		\
-	MAPPING(CLOUDABI_RIGHT_SOCK_CONNECT_DIRECTORY, CAP_CONNECTAT)	\
-	MAPPING(CLOUDABI_RIGHT_SOCK_CONNECT_SOCKET, CAP_CONNECT)	\
-	MAPPING(CLOUDABI_RIGHT_SOCK_LISTEN, CAP_LISTEN)			\
 	MAPPING(CLOUDABI_RIGHT_SOCK_SHUTDOWN, CAP_SHUTDOWN)		\
-	MAPPING(CLOUDABI_RIGHT_SOCK_STAT_GET, CAP_GETPEERNAME,		\
-	    CAP_GETSOCKNAME, CAP_GETSOCKOPT)
 
 int
 cloudabi_sys_fd_close(struct thread *td, struct cloudabi_sys_fd_close_args *uap)
@@ -109,10 +100,6 @@ cloudabi_sys_fd_create1(struct thread *td,
 		cap_rights_init(&fcaps.fc_rights, CAP_FSTAT, CAP_FTRUNCATE,
 		    CAP_MMAP_RWX);
 		return (kern_shm_open(td, SHM_ANON, O_RDWR, 0, &fcaps));
-	case CLOUDABI_FILETYPE_SOCKET_DGRAM:
-		return (kern_socket(td, AF_UNIX, SOCK_DGRAM, 0));
-	case CLOUDABI_FILETYPE_SOCKET_STREAM:
-		return (kern_socket(td, AF_UNIX, SOCK_STREAM, 0));
 	default:
 		return (EINVAL);
 	}
@@ -122,34 +109,21 @@ int
 cloudabi_sys_fd_create2(struct thread *td,
     struct cloudabi_sys_fd_create2_args *uap)
 {
-	struct filecaps fcaps1 = {}, fcaps2 = {};
 	int fds[2];
-	int error;
+	int error, type;
 
 	switch (uap->type) {
-	case CLOUDABI_FILETYPE_FIFO:
-		/*
-		 * CloudABI pipes are unidirectional. Restrict rights on
-		 * the pipe to simulate this.
-		 */
-		cap_rights_init(&fcaps1.fc_rights, CAP_EVENT, CAP_FCNTL,
-		    CAP_FSTAT, CAP_READ);
-		fcaps1.fc_fcntls = CAP_FCNTL_SETFL;
-		cap_rights_init(&fcaps2.fc_rights, CAP_EVENT, CAP_FCNTL,
-		    CAP_FSTAT, CAP_WRITE);
-		fcaps2.fc_fcntls = CAP_FCNTL_SETFL;
-		error = kern_pipe(td, fds, 0, &fcaps1, &fcaps2);
-		break;
 	case CLOUDABI_FILETYPE_SOCKET_DGRAM:
-		error = kern_socketpair(td, AF_UNIX, SOCK_DGRAM, 0, fds);
+		type = SOCK_DGRAM;
 		break;
 	case CLOUDABI_FILETYPE_SOCKET_STREAM:
-		error = kern_socketpair(td, AF_UNIX, SOCK_STREAM, 0, fds);
+		type = SOCK_STREAM;
 		break;
 	default:
 		return (EINVAL);
 	}
 
+	error = kern_socketpair(td, AF_UNIX, type, 0, fds);
 	if (error == 0) {
 		td->td_retval[0] = fds[0];
 		td->td_retval[1] = fds[1];
@@ -226,11 +200,11 @@ cloudabi_convert_filetype(const struct file *fp)
 
 	switch (fp->f_type) {
 	case DTYPE_FIFO:
-		return (CLOUDABI_FILETYPE_FIFO);
+		return (CLOUDABI_FILETYPE_SOCKET_STREAM);
 	case DTYPE_KQUEUE:
 		return (CLOUDABI_FILETYPE_POLL);
 	case DTYPE_PIPE:
-		return (CLOUDABI_FILETYPE_FIFO);
+		return (CLOUDABI_FILETYPE_SOCKET_STREAM);
 	case DTYPE_PROCDESC:
 		return (CLOUDABI_FILETYPE_PROCESS);
 	case DTYPE_SHM:
@@ -255,7 +229,7 @@ cloudabi_convert_filetype(const struct file *fp)
 		case VDIR:
 			return (CLOUDABI_FILETYPE_DIRECTORY);
 		case VFIFO:
-			return (CLOUDABI_FILETYPE_FIFO);
+			return (CLOUDABI_FILETYPE_SOCKET_STREAM);
 		case VLNK:
 			return (CLOUDABI_FILETYPE_SYMBOLIC_LINK);
 		case VREG:
@@ -298,7 +272,6 @@ cloudabi_remove_conflicting_rights(cloudabi_filetype_t filetype,
 		    CLOUDABI_RIGHT_FD_SYNC | CLOUDABI_RIGHT_FILE_ADVISE |
 		    CLOUDABI_RIGHT_FILE_CREATE_DIRECTORY |
 		    CLOUDABI_RIGHT_FILE_CREATE_FILE |
-		    CLOUDABI_RIGHT_FILE_CREATE_FIFO |
 		    CLOUDABI_RIGHT_FILE_LINK_SOURCE |
 		    CLOUDABI_RIGHT_FILE_LINK_TARGET |
 		    CLOUDABI_RIGHT_FILE_OPEN |
@@ -312,9 +285,7 @@ cloudabi_remove_conflicting_rights(cloudabi_filetype_t filetype,
 		    CLOUDABI_RIGHT_FILE_STAT_PUT_TIMES |
 		    CLOUDABI_RIGHT_FILE_SYMLINK |
 		    CLOUDABI_RIGHT_FILE_UNLINK |
-		    CLOUDABI_RIGHT_POLL_FD_READWRITE |
-		    CLOUDABI_RIGHT_SOCK_BIND_DIRECTORY |
-		    CLOUDABI_RIGHT_SOCK_CONNECT_DIRECTORY;
+		    CLOUDABI_RIGHT_POLL_FD_READWRITE;
 		*inheriting &= CLOUDABI_RIGHT_FD_DATASYNC |
 		    CLOUDABI_RIGHT_FD_READ |
 		    CLOUDABI_RIGHT_FD_SEEK |
@@ -326,7 +297,6 @@ cloudabi_remove_conflicting_rights(cloudabi_filetype_t filetype,
 		    CLOUDABI_RIGHT_FILE_ALLOCATE |
 		    CLOUDABI_RIGHT_FILE_CREATE_DIRECTORY |
 		    CLOUDABI_RIGHT_FILE_CREATE_FILE |
-		    CLOUDABI_RIGHT_FILE_CREATE_FIFO |
 		    CLOUDABI_RIGHT_FILE_LINK_SOURCE |
 		    CLOUDABI_RIGHT_FILE_LINK_TARGET |
 		    CLOUDABI_RIGHT_FILE_OPEN |
@@ -344,17 +314,7 @@ cloudabi_remove_conflicting_rights(cloudabi_filetype_t filetype,
 		    CLOUDABI_RIGHT_MEM_MAP |
 		    CLOUDABI_RIGHT_MEM_MAP_EXEC |
 		    CLOUDABI_RIGHT_POLL_FD_READWRITE |
-		    CLOUDABI_RIGHT_PROC_EXEC |
-		    CLOUDABI_RIGHT_SOCK_BIND_DIRECTORY |
-		    CLOUDABI_RIGHT_SOCK_CONNECT_DIRECTORY;
-		break;
-	case CLOUDABI_FILETYPE_FIFO:
-		*base &= CLOUDABI_RIGHT_FD_READ |
-		    CLOUDABI_RIGHT_FD_STAT_PUT_FLAGS |
-		    CLOUDABI_RIGHT_FD_WRITE |
-		    CLOUDABI_RIGHT_FILE_STAT_FGET |
-		    CLOUDABI_RIGHT_POLL_FD_READWRITE;
-		*inheriting = 0;
+		    CLOUDABI_RIGHT_PROC_EXEC;
 		break;
 	case CLOUDABI_FILETYPE_POLL:
 		*base &= ~CLOUDABI_RIGHT_FILE_ADVISE;
@@ -399,12 +359,7 @@ cloudabi_remove_conflicting_rights(cloudabi_filetype_t filetype,
 		    CLOUDABI_RIGHT_FD_WRITE |
 		    CLOUDABI_RIGHT_FILE_STAT_FGET |
 		    CLOUDABI_RIGHT_POLL_FD_READWRITE |
-		    CLOUDABI_RIGHT_SOCK_ACCEPT |
-		    CLOUDABI_RIGHT_SOCK_BIND_SOCKET |
-		    CLOUDABI_RIGHT_SOCK_CONNECT_SOCKET |
-		    CLOUDABI_RIGHT_SOCK_LISTEN |
-		    CLOUDABI_RIGHT_SOCK_SHUTDOWN |
-		    CLOUDABI_RIGHT_SOCK_STAT_GET;
+		    CLOUDABI_RIGHT_SOCK_SHUTDOWN;
 		break;
 	default:
 		*inheriting = 0;
diff --git sys/compat/cloudabi/cloudabi_file.c sys/compat/cloudabi/cloudabi_file.c
index f5417e0bb3a8..6133ddd6ae54 100644
--- sys/compat/cloudabi/cloudabi_file.c
+++ sys/compat/cloudabi/cloudabi_file.c
@@ -159,9 +159,6 @@ cloudabi_sys_file_create(struct thread *td,
 	case CLOUDABI_FILETYPE_DIRECTORY:
 		error = kern_mkdirat(td, uap->fd, path, UIO_SYSSPACE, 0777);
 		break;
-	case CLOUDABI_FILETYPE_FIFO:
-		error = kern_mkfifoat(td, uap->fd, path, UIO_SYSSPACE, 0666);
-		break;
 	default:
 		error = EINVAL;
 		break;
@@ -346,7 +343,7 @@ write_dirent(struct dirent *bde, cloudabi_dircookie_t cookie, struct uio *uio)
 		cde.d_type = CLOUDABI_FILETYPE_DIRECTORY;
 		break;
 	case DT_FIFO:
-		cde.d_type = CLOUDABI_FILETYPE_FIFO;
+		cde.d_type = CLOUDABI_FILETYPE_SOCKET_STREAM;
 		break;
 	case DT_LNK:
 		cde.d_type = CLOUDABI_FILETYPE_SYMBOLIC_LINK;
@@ -673,7 +670,7 @@ cloudabi_sys_file_stat_get(struct thread *td,
 	else if (S_ISDIR(sb.st_mode))
 		csb.st_filetype = CLOUDABI_FILETYPE_DIRECTORY;
 	else if (S_ISFIFO(sb.st_mode))
-		csb.st_filetype = CLOUDABI_FILETYPE_FIFO;
+		csb.st_filetype = CLOUDABI_FILETYPE_SOCKET_STREAM;
 	else if (S_ISREG(sb.st_mode))
 		csb.st_filetype = CLOUDABI_FILETYPE_REGULAR_FILE;
 	else if (S_ISSOCK(sb.st_mode)) {
diff --git sys/compat/cloudabi/cloudabi_sock.c sys/compat/cloudabi/cloudabi_sock.c
index f8adf06abf74..f202ef32f1a0 100644
--- sys/compat/cloudabi/cloudabi_sock.c
+++ sys/compat/cloudabi/cloudabi_sock.c
@@ -38,7 +38,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/socketvar.h>
 #include <sys/syscallsubr.h>
 #include <sys/systm.h>
-#include <sys/un.h>
 
 #include <net/vnet.h>
 
@@ -49,71 +48,6 @@ __FBSDID("$FreeBSD$");
 #include <compat/cloudabi/cloudabi_proto.h>
 #include <compat/cloudabi/cloudabi_util.h>
 
-/* Copies a pathname into a UNIX socket address structure. */
-static int
-copyin_sockaddr_un(const char *path, size_t pathlen, struct sockaddr_un *sun)
-{
-	int error;
-
-	/* Copy in pathname string if there's enough space. */
-	if (pathlen >= sizeof(sun->sun_path))
-		return (ENAMETOOLONG);
-	error = copyin(path, &sun->sun_path, pathlen);
-	if (error != 0)
-		return (error);
-	if (memchr(sun->sun_path, '\0', pathlen) != NULL)
-		return (EINVAL);
-
-	/* Initialize the rest of the socket address. */
-	sun->sun_path[pathlen] = '\0';
-	sun->sun_family = AF_UNIX;
-	sun->sun_len = sizeof(*sun);
-	return (0);
-}
-
-int
-cloudabi_sys_sock_accept(struct thread *td,
-    struct cloudabi_sys_sock_accept_args *uap)
-{
-
-	return (kern_accept(td, uap->sock, NULL, NULL, NULL));
-}
-
-int
-cloudabi_sys_sock_bind(struct thread *td,
-    struct cloudabi_sys_sock_bind_args *uap)
-{
-	struct sockaddr_un sun;
-	int error;
-
-	error = copyin_sockaddr_un(uap->path, uap->path_len, &sun);
-	if (error != 0)
-		return (error);
-	return (kern_bindat(td, uap->fd, uap->sock, (struct sockaddr *)&sun));
-}
-
-int
-cloudabi_sys_sock_connect(struct thread *td,
-    struct cloudabi_sys_sock_connect_args *uap)
-{
-	struct sockaddr_un sun;
-	int error;
-
-	error = copyin_sockaddr_un(uap->path, uap->path_len, &sun);
-	if (error != 0)
-		return (error);
-	return (kern_connectat(td, uap->fd, uap->sock,
-	    (struct sockaddr *)&sun));
-}
-
-int
-cloudabi_sys_sock_listen(struct thread *td,
-    struct cloudabi_sys_sock_listen_args *uap)
-{
-
-	return (kern_listen(td, uap->sock, uap->backlog));
-}
-
 int
 cloudabi_sys_sock_shutdown(struct thread *td,
     struct cloudabi_sys_sock_shutdown_args *uap)
@@ -137,47 +71,13 @@ cloudabi_sys_sock_shutdown(struct thread *td,
 	return (kern_shutdown(td, uap->sock, how));
 }
 
-int
-cloudabi_sys_sock_stat_get(struct thread *td,
-    struct cloudabi_sys_sock_stat_get_args *uap)
-{
-	cloudabi_sockstat_t ss = {};
-	cap_rights_t rights;
-	struct file *fp;
-	struct socket *so;
-	int error;
-
-	error = getsock_cap(td, uap->sock, cap_rights_init(&rights,
-	    CAP_GETSOCKOPT, CAP_GETPEERNAME, CAP_GETSOCKNAME), &fp, NULL, NULL);
-	if (error != 0)
-		return (error);
-	so = fp->f_data;
-
-	/* Set ss_error. */
-	SOCK_LOCK(so);
-	ss.ss_error = cloudabi_convert_errno(so->so_error);
-	if ((uap->flags & CLOUDABI_SOCKSTAT_CLEAR_ERROR) != 0)
-		so->so_error = 0;
-	SOCK_UNLOCK(so);
-
-	/* Set ss_state. */
-	if ((so->so_options & SO_ACCEPTCONN) != 0)
-		ss.ss_state |= CLOUDABI_SOCKSTATE_ACCEPTCONN;
-
-	fdrop(fp, td);
-	return (copyout(&ss, uap->buf, sizeof(ss)));
-}
-
 int
 cloudabi_sock_recv(struct thread *td, cloudabi_fd_t fd, struct iovec *data,
     size_t datalen, cloudabi_fd_t *fds, size_t fdslen,
     cloudabi_riflags_t flags, size_t *rdatalen, size_t *rfdslen,
     cloudabi_roflags_t *rflags)
 {
-	struct sockaddr_storage ss;
 	struct msghdr hdr = {
-		.msg_name = &ss,
-		.msg_namelen = sizeof(ss),
 		.msg_iov = data,
 		.msg_iovlen = datalen,
 	};
diff --git sys/compat/cloudabi32/cloudabi32_proto.h sys/compat/cloudabi32/cloudabi32_proto.h
index 30ce364e77cf..108bbbc2debb 100644
--- sys/compat/cloudabi32/cloudabi32_proto.h
+++ sys/compat/cloudabi32/cloudabi32_proto.h
@@ -255,26 +255,6 @@ struct cloudabi_sys_random_get_args {
 	char buf_l_[PADL_(void *)]; void * buf; char buf_r_[PADR_(void *)];
 	char buf_len_l_[PADL_(size_t)]; size_t buf_len; char buf_len_r_[PADR_(size_t)];
 };
-struct cloudabi_sys_sock_accept_args {
-	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
-	char unused_l_[PADL_(void *)]; void * unused; char unused_r_[PADR_(void *)];
-};
-struct cloudabi_sys_sock_bind_args {
-	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
-	char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
-	char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
-	char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
-};
-struct cloudabi_sys_sock_connect_args {
-	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
-	char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
-	char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
-	char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
-};
-struct cloudabi_sys_sock_listen_args {
-	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
-	char backlog_l_[PADL_(cloudabi_backlog_t)]; cloudabi_backlog_t backlog; char backlog_r_[PADR_(cloudabi_backlog_t)];
-};
 struct cloudabi32_sys_sock_recv_args {
 	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
 	char in_l_[PADL_(const cloudabi32_recv_in_t *)]; const cloudabi32_recv_in_t * in; char in_r_[PADR_(const cloudabi32_recv_in_t *)];
@@ -289,11 +269,6 @@ struct cloudabi_sys_sock_shutdown_args {
 	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
 	char how_l_[PADL_(cloudabi_sdflags_t)]; cloudabi_sdflags_t how; char how_r_[PADR_(cloudabi_sdflags_t)];
 };
-struct cloudabi_sys_sock_stat_get_args {
-	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
-	char buf_l_[PADL_(cloudabi_sockstat_t *)]; cloudabi_sockstat_t * buf; char buf_r_[PADR_(cloudabi_sockstat_t *)];
-	char flags_l_[PADL_(cloudabi_ssflags_t)]; cloudabi_ssflags_t flags; char flags_r_[PADR_(cloudabi_ssflags_t)];
-};
 struct cloudabi32_sys_thread_create_args {
 	char attr_l_[PADL_(cloudabi32_threadattr_t *)]; cloudabi32_threadattr_t * attr; char attr_r_[PADR_(cloudabi32_threadattr_t *)];
 };
@@ -348,14 +323,9 @@ int	cloudabi_sys_proc_exit(struct thread *, struct cloudabi_sys_proc_exit_args *
 int	cloudabi_sys_proc_fork(struct thread *, struct cloudabi_sys_proc_fork_args *);
 int	cloudabi_sys_proc_raise(struct thread *, struct cloudabi_sys_proc_raise_args *);
 int	cloudabi_sys_random_get(struct thread *, struct cloudabi_sys_random_get_args *);
-int	cloudabi_sys_sock_accept(struct thread *, struct cloudabi_sys_sock_accept_args *);
-int	cloudabi_sys_sock_bind(struct thread *, struct cloudabi_sys_sock_bind_args *);
-int	cloudabi_sys_sock_connect(struct thread *, struct cloudabi_sys_sock_connect_args *);
-int	cloudabi_sys_sock_listen(struct thread *, struct cloudabi_sys_sock_listen_args *);
 int	cloudabi32_sys_sock_recv(struct thread *, struct cloudabi32_sys_sock_recv_args *);
 int	cloudabi32_sys_sock_send(struct thread *, struct cloudabi32_sys_sock_send_args *);
 int	cloudabi_sys_sock_shutdown(struct thread *, struct cloudabi_sys_sock_shutdown_args *);
-int	cloudabi_sys_sock_stat_get(struct thread *, struct cloudabi_sys_sock_stat_get_args *);
 int	cloudabi32_sys_thread_create(struct thread *, struct cloudabi32_sys_thread_create_args *);
 int	cloudabi_sys_thread_exit(struct thread *, struct cloudabi_sys_thread_exit_args *);
 int	cloudabi_sys_thread_yield(struct thread *, struct cloudabi_sys_thread_yield_args *);
@@ -439,14 +409,9 @@ int	cloudabi_sys_thread_yield(struct thread *, struct cloudabi_sys_thread_yield_
 #define	CLOUDABI32_SYS_AUE_cloudabi_sys_proc_fork	AUE_NULL
 #define	CLOUDABI32_SYS_AUE_cloudabi_sys_proc_raise	AUE_NULL
 #define	CLOUDABI32_SYS_AUE_cloudabi_sys_random_get	AUE_NULL
-#define	CLOUDABI32_SYS_AUE_cloudabi_sys_sock_accept	AUE_NULL
-#define	CLOUDABI32_SYS_AUE_cloudabi_sys_sock_bind	AUE_NULL
-#define	CLOUDABI32_SYS_AUE_cloudabi_sys_sock_connect	AUE_NULL
-#define	CLOUDABI32_SYS_AUE_cloudabi_sys_sock_listen	AUE_NULL
 #define	CLOUDABI32_SYS_AUE_cloudabi32_sys_sock_recv	AUE_NULL
 #define	CLOUDABI32_SYS_AUE_cloudabi32_sys_sock_send	AUE_NULL
 #define	CLOUDABI32_SYS_AUE_cloudabi_sys_sock_shutdown	AUE_NULL
-#define	CLOUDABI32_SYS_AUE_cloudabi_sys_sock_stat_get	AUE_NULL
 #define	CLOUDABI32_SYS_AUE_cloudabi32_sys_thread_create	AUE_NULL
 #define	CLOUDABI32_SYS_AUE_cloudabi_sys_thread_exit	AUE_NULL
 #define	CLOUDABI32_SYS_AUE_cloudabi_sys_thread_yield	AUE_NULL
diff --git sys/compat/cloudabi32/cloudabi32_syscall.h sys/compat/cloudabi32/cloudabi32_syscall.h
index d6b37536ea8f..ba0aa0ef71b9 100644
--- sys/compat/cloudabi32/cloudabi32_syscall.h
+++ sys/compat/cloudabi32/cloudabi32_syscall.h
@@ -49,15 +49,10 @@
 #define	CLOUDABI32_SYS_cloudabi_sys_proc_fork	41
 #define	CLOUDABI32_SYS_cloudabi_sys_proc_raise	42
 #define	CLOUDABI32_SYS_cloudabi_sys_random_get	43
-#define	CLOUDABI32_SYS_cloudabi_sys_sock_accept	44
-#define	CLOUDABI32_SYS_cloudabi_sys_sock_bind	45
-#define	CLOUDABI32_SYS_cloudabi_sys_sock_connect	46
-#define	CLOUDABI32_SYS_cloudabi_sys_sock_listen	47
-#define	CLOUDABI32_SYS_cloudabi32_sys_sock_recv	48
-#define	CLOUDABI32_SYS_cloudabi32_sys_sock_send	49
-#define	CLOUDABI32_SYS_cloudabi_sys_sock_shutdown	50
-#define	CLOUDABI32_SYS_cloudabi_sys_sock_stat_get	51
-#define	CLOUDABI32_SYS_cloudabi32_sys_thread_create	52
-#define	CLOUDABI32_SYS_cloudabi_sys_thread_exit	53
-#define	CLOUDABI32_SYS_cloudabi_sys_thread_yield	54
-#define	CLOUDABI32_SYS_MAXSYSCALL	55
+#define	CLOUDABI32_SYS_cloudabi32_sys_sock_recv	44
+#define	CLOUDABI32_SYS_cloudabi32_sys_sock_send	45
+#define	CLOUDABI32_SYS_cloudabi_sys_sock_shutdown	46
+#define	CLOUDABI32_SYS_cloudabi32_sys_thread_create	47
+#define	CLOUDABI32_SYS_cloudabi_sys_thread_exit	48
+#define	CLOUDABI32_SYS_cloudabi_sys_thread_yield	49
+#define	CLOUDABI32_SYS_MAXSYSCALL	50
diff --git sys/compat/cloudabi32/cloudabi32_syscalls.c sys/compat/cloudabi32/cloudabi32_syscalls.c
index c047dcc82f79..dfe24e7cd6eb 100644
--- sys/compat/cloudabi32/cloudabi32_syscalls.c
+++ sys/compat/cloudabi32/cloudabi32_syscalls.c
@@ -50,15 +50,10 @@ const char *cloudabi32_syscallnames[] = {
 	"cloudabi_sys_proc_fork",			/* 41 = cloudabi_sys_proc_fork */
 	"cloudabi_sys_proc_raise",			/* 42 = cloudabi_sys_proc_raise */
 	"cloudabi_sys_random_get",			/* 43 = cloudabi_sys_random_get */
-	"cloudabi_sys_sock_accept",			/* 44 = cloudabi_sys_sock_accept */
-	"cloudabi_sys_sock_bind",			/* 45 = cloudabi_sys_sock_bind */
-	"cloudabi_sys_sock_connect",			/* 46 = cloudabi_sys_sock_connect */
-	"cloudabi_sys_sock_listen",			/* 47 = cloudabi_sys_sock_listen */
-	"cloudabi32_sys_sock_recv",			/* 48 = cloudabi32_sys_sock_recv */
-	"cloudabi32_sys_sock_send",			/* 49 = cloudabi32_sys_sock_send */
-	"cloudabi_sys_sock_shutdown",			/* 50 = cloudabi_sys_sock_shutdown */
-	"cloudabi_sys_sock_stat_get",			/* 51 = cloudabi_sys_sock_stat_get */
-	"cloudabi32_sys_thread_create",			/* 52 = cloudabi32_sys_thread_create */
-	"cloudabi_sys_thread_exit",			/* 53 = cloudabi_sys_thread_exit */
-	"cloudabi_sys_thread_yield",			/* 54 = cloudabi_sys_thread_yield */
+	"cloudabi32_sys_sock_recv",			/* 44 = cloudabi32_sys_sock_recv */
+	"cloudabi32_sys_sock_send",			/* 45 = cloudabi32_sys_sock_send */
+	"cloudabi_sys_sock_shutdown",			/* 46 = cloudabi_sys_sock_shutdown */
+	"cloudabi32_sys_thread_create",			/* 47 = cloudabi32_sys_thread_create */
+	"cloudabi_sys_thread_exit",			/* 48 = cloudabi_sys_thread_exit */
+	"cloudabi_sys_thread_yield",			/* 49 = cloudabi_sys_thread_yield */
 };
diff --git sys/compat/cloudabi32/cloudabi32_sysent.c sys/compat/cloudabi32/cloudabi32_sysent.c
index c0106a3ce19e..e48bcd1d509b 100644
--- sys/compat/cloudabi32/cloudabi32_sysent.c
+++ sys/compat/cloudabi32/cloudabi32_sysent.c
@@ -58,15 +58,10 @@ struct sysent cloudabi32_sysent[] = {
 	{ 0, (sy_call_t *)cloudabi_sys_proc_fork, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 41 = cloudabi_sys_proc_fork */
 	{ AS(cloudabi_sys_proc_raise_args), (sy_call_t *)cloudabi_sys_proc_raise, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 42 = cloudabi_sys_proc_raise */
 	{ AS(cloudabi_sys_random_get_args), (sy_call_t *)cloudabi_sys_random_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 43 = cloudabi_sys_random_get */
-	{ AS(cloudabi_sys_sock_accept_args), (sy_call_t *)cloudabi_sys_sock_accept, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 44 = cloudabi_sys_sock_accept */
-	{ AS(cloudabi_sys_sock_bind_args), (sy_call_t *)cloudabi_sys_sock_bind, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 45 = cloudabi_sys_sock_bind */
-	{ AS(cloudabi_sys_sock_connect_args), (sy_call_t *)cloudabi_sys_sock_connect, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 46 = cloudabi_sys_sock_connect */
-	{ AS(cloudabi_sys_sock_listen_args), (sy_call_t *)cloudabi_sys_sock_listen, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 47 = cloudabi_sys_sock_listen */
-	{ AS(cloudabi32_sys_sock_recv_args), (sy_call_t *)cloudabi32_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 48 = cloudabi32_sys_sock_recv */
-	{ AS(cloudabi32_sys_sock_send_args), (sy_call_t *)cloudabi32_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 49 = cloudabi32_sys_sock_send */
-	{ AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 50 = cloudabi_sys_sock_shutdown */
-	{ AS(cloudabi_sys_sock_stat_get_args), (sy_call_t *)cloudabi_sys_sock_stat_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 51 = cloudabi_sys_sock_stat_get */
-	{ AS(cloudabi32_sys_thread_create_args), (sy_call_t *)cloudabi32_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 52 = cloudabi32_sys_thread_create */
-	{ AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 53 = cloudabi_sys_thread_exit */
-	{ 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 54 = cloudabi_sys_thread_yield */
+	{ AS(cloudabi32_sys_sock_recv_args), (sy_call_t *)cloudabi32_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 44 = cloudabi32_sys_sock_recv */
+	{ AS(cloudabi32_sys_sock_send_args), (sy_call_t *)cloudabi32_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 45 = cloudabi32_sys_sock_send */
+	{ AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 46 = cloudabi_sys_sock_shutdown */
+	{ AS(cloudabi32_sys_thread_create_args), (sy_call_t *)cloudabi32_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 47 = cloudabi32_sys_thread_create */
+	{ AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 48 = cloudabi_sys_thread_exit */
+	{ 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 49 = cloudabi_sys_thread_yield */
 };
diff --git sys/compat/cloudabi32/cloudabi32_systrace_args.c sys/compat/cloudabi32/cloudabi32_systrace_args.c
index 1d2eef2c51fb..532ce4dd4a4f 100644
--- sys/compat/cloudabi32/cloudabi32_systrace_args.c
+++ sys/compat/cloudabi32/cloudabi32_systrace_args.c
@@ -407,44 +407,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 		*n_args = 2;
 		break;
 	}
-	/* cloudabi_sys_sock_accept */
-	case 44: {
-		struct cloudabi_sys_sock_accept_args *p = params;
-		iarg[0] = p->sock; /* cloudabi_fd_t */
-		uarg[1] = (intptr_t) p->unused; /* void * */
-		*n_args = 2;
-		break;
-	}
-	/* cloudabi_sys_sock_bind */
-	case 45: {
-		struct cloudabi_sys_sock_bind_args *p = params;
-		iarg[0] = p->sock; /* cloudabi_fd_t */
-		iarg[1] = p->fd; /* cloudabi_fd_t */
-		uarg[2] = (intptr_t) p->path; /* const char * */
-		uarg[3] = p->path_len; /* size_t */
-		*n_args = 4;
-		break;
-	}
-	/* cloudabi_sys_sock_connect */
-	case 46: {
-		struct cloudabi_sys_sock_connect_args *p = params;
-		iarg[0] = p->sock; /* cloudabi_fd_t */
-		iarg[1] = p->fd; /* cloudabi_fd_t */
-		uarg[2] = (intptr_t) p->path; /* const char * */
-		uarg[3] = p->path_len; /* size_t */
-		*n_args = 4;
-		break;
-	}
-	/* cloudabi_sys_sock_listen */
-	case 47: {
-		struct cloudabi_sys_sock_listen_args *p = params;
-		iarg[0] = p->sock; /* cloudabi_fd_t */
-		iarg[1] = p->backlog; /* cloudabi_backlog_t */
-		*n_args = 2;
-		break;
-	}
 	/* cloudabi32_sys_sock_recv */
-	case 48: {
+	case 44: {
 		struct cloudabi32_sys_sock_recv_args *p = params;
 		iarg[0] = p->sock; /* cloudabi_fd_t */
 		uarg[1] = (intptr_t) p->in; /* const cloudabi32_recv_in_t * */
@@ -453,7 +417,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 		break;
 	}
 	/* cloudabi32_sys_sock_send */
-	case 49: {
+	case 45: {
 		struct cloudabi32_sys_sock_send_args *p = params;
 		iarg[0] = p->sock; /* cloudabi_fd_t */
 		uarg[1] = (intptr_t) p->in; /* const cloudabi32_send_in_t * */
@@ -462,31 +426,22 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 		break;
 	}
 	/* cloudabi_sys_sock_shutdown */
-	case 50: {
+	case 46: {
 		struct cloudabi_sys_sock_shutdown_args *p = params;
 		iarg[0] = p->sock; /* cloudabi_fd_t */
 		iarg[1] = p->how; /* cloudabi_sdflags_t */
 		*n_args = 2;
 		break;
 	}
-	/* cloudabi_sys_sock_stat_get */
-	case 51: {
-		struct cloudabi_sys_sock_stat_get_args *p = params;
-		iarg[0] = p->sock; /* cloudabi_fd_t */
-		uarg[1] = (intptr_t) p->buf; /* cloudabi_sockstat_t * */
-		iarg[2] = p->flags; /* cloudabi_ssflags_t */
-		*n_args = 3;
-		break;
-	}
 	/* cloudabi32_sys_thread_create */
-	case 52: {
+	case 47: {
 		struct cloudabi32_sys_thread_create_args *p = params;
 		uarg[0] = (intptr_t) p->attr; /* cloudabi32_threadattr_t * */
 		*n_args = 1;
 		break;
 	}
 	/* cloudabi_sys_thread_exit */
-	case 53: {
+	case 48: {
 		struct cloudabi_sys_thread_exit_args *p = params;
 		uarg[0] = (intptr_t) p->lock; /* cloudabi_lock_t * */
 		iarg[1] = p->scope; /* cloudabi_scope_t */
@@ -494,7 +449,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 		break;
 	}
 	/* cloudabi_sys_thread_yield */
-	case 54: {
+	case 49: {
 		*n_args = 0;
 		break;
 	}
@@ -1211,72 +1166,8 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 			break;
 		};
 		break;
-	/* cloudabi_sys_sock_accept */
-	case 44:
-		switch(ndx) {
-		case 0:
-			p = "cloudabi_fd_t";
-			break;
-		case 1:
-			p = "userland void *";
-			break;
-		default:
-			break;
-		};
-		break;
-	/* cloudabi_sys_sock_bind */
-	case 45:
-		switch(ndx) {
-		case 0:
-			p = "cloudabi_fd_t";
-			break;
-		case 1:
-			p = "cloudabi_fd_t";
-			break;
-		case 2:
-			p = "userland const char *";
-			break;
-		case 3:
-			p = "size_t";
-			break;
-		default:
-			break;
-		};
-		break;
-	/* cloudabi_sys_sock_connect */
-	case 46:
-		switch(ndx) {
-		case 0:
-			p = "cloudabi_fd_t";
-			break;
-		case 1:
-			p = "cloudabi_fd_t";
-			break;
-		case 2:
-			p = "userland const char *";
-			break;
-		case 3:
-			p = "size_t";
-			break;
-		default:
-			break;
-		};
-		break;
-	/* cloudabi_sys_sock_listen */
-	case 47:
-		switch(ndx) {
-		case 0:
-			p = "cloudabi_fd_t";
-			break;
-		case 1:
-			p = "cloudabi_backlog_t";
-			break;
-		default:
-			break;
-		};
-		break;
 	/* cloudabi32_sys_sock_recv */
-	case 48:
+	case 44:
 		switch(ndx) {
 		case 0:
 			p = "cloudabi_fd_t";
@@ -1292,7 +1183,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		};
 		break;
 	/* cloudabi32_sys_sock_send */
-	case 49:
+	case 45:
 		switch(ndx) {
 		case 0:
 			p = "cloudabi_fd_t";
@@ -1308,7 +1199,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		};
 		break;
 	/* cloudabi_sys_sock_shutdown */
-	case 50:
+	case 46:
 		switch(ndx) {
 		case 0:
 			p = "cloudabi_fd_t";
@@ -1320,24 +1211,8 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 			break;
 		};
 		break;
-	/* cloudabi_sys_sock_stat_get */
-	case 51:
-		switch(ndx) {
-		case 0:
-			p = "cloudabi_fd_t";
-			break;
-		case 1:
-			p = "userland cloudabi_sockstat_t *";
-			break;
-		case 2:
-			p = "cloudabi_ssflags_t";
-			break;
-		default:
-			break;
-		};
-		break;
 	/* cloudabi32_sys_thread_create */
-	case 52:
+	case 47:
 		switch(ndx) {
 		case 0:
 			p = "userland cloudabi32_threadattr_t *";
@@ -1347,7 +1222,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		};
 		break;
 	/* cloudabi_sys_thread_exit */
-	case 53:
+	case 48:
 		switch(ndx) {
 		case 0:
 			p = "userland cloudabi_lock_t *";
@@ -1360,7 +1235,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		};
 		break;
 	/* cloudabi_sys_thread_yield */
-	case 54:
+	case 49:
 		break;
 	default:
 		break;
@@ -1590,58 +1465,33 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		if (ndx == 0 || ndx == 1)
 			p = "void";
 		break;
-	/* cloudabi_sys_sock_accept */
-	case 44:
-		if (ndx == 0 || ndx == 1)
-			p = "cloudabi_fd_t";
-		break;
-	/* cloudabi_sys_sock_bind */
-	case 45:
-		if (ndx == 0 || ndx == 1)
-			p = "void";
-		break;
-	/* cloudabi_sys_sock_connect */
-	case 46:
-		if (ndx == 0 || ndx == 1)
-			p = "void";
-		break;
-	/* cloudabi_sys_sock_listen */
-	case 47:
-		if (ndx == 0 || ndx == 1)
-			p = "void";
-		break;
 	/* cloudabi32_sys_sock_recv */
-	case 48:
+	case 44:
 		if (ndx == 0 || ndx == 1)
 			p = "void";
 		break;
 	/* cloudabi32_sys_sock_send */
-	case 49:
+	case 45:
 		if (ndx == 0 || ndx == 1)
 			p = "void";
 		break;
 	/* cloudabi_sys_sock_shutdown */
-	case 50:
-		if (ndx == 0 || ndx == 1)
-			p = "void";
-		break;
-	/* cloudabi_sys_sock_stat_get */
-	case 51:
+	case 46:
 		if (ndx == 0 || ndx == 1)
 			p = "void";
 		break;
 	/* cloudabi32_sys_thread_create */
-	case 52:
+	case 47:
 		if (ndx == 0 || ndx == 1)
 			p = "cloudabi_tid_t";
 		break;
 	/* cloudabi_sys_thread_exit */
-	case 53:
+	case 48:
 		if (ndx == 0 || ndx == 1)
 			p = "void";
 		break;
 	/* cloudabi_sys_thread_yield */
-	case 54:
+	case 49:
 	default:
 		break;
 	};
diff --git sys/compat/cloudabi64/cloudabi64_proto.h sys/compat/cloudabi64/cloudabi64_proto.h
index f1d250fd24d9..7adbea2d2d2e 100644
--- sys/compat/cloudabi64/cloudabi64_proto.h
+++ sys/compat/cloudabi64/cloudabi64_proto.h
@@ -255,26 +255,6 @@ struct cloudabi_sys_random_get_args {
 	char buf_l_[PADL_(void *)]; void * buf; char buf_r_[PADR_(void *)];
 	char buf_len_l_[PADL_(size_t)]; size_t buf_len; char buf_len_r_[PADR_(size_t)];
 };
-struct cloudabi_sys_sock_accept_args {
-	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
-	char unused_l_[PADL_(void *)]; void * unused; char unused_r_[PADR_(void *)];
-};
-struct cloudabi_sys_sock_bind_args {
-	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
-	char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
-	char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
-	char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
-};
-struct cloudabi_sys_sock_connect_args {
-	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
-	char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
-	char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
-	char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)];
-};
-struct cloudabi_sys_sock_listen_args {
-	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
-	char backlog_l_[PADL_(cloudabi_backlog_t)]; cloudabi_backlog_t backlog; char backlog_r_[PADR_(cloudabi_backlog_t)];
-};
 struct cloudabi64_sys_sock_recv_args {
 	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
 	char in_l_[PADL_(const cloudabi64_recv_in_t *)]; const cloudabi64_recv_in_t * in; char in_r_[PADR_(const cloudabi64_recv_in_t *)];
@@ -289,11 +269,6 @@ struct cloudabi_sys_sock_shutdown_args {
 	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
 	char how_l_[PADL_(cloudabi_sdflags_t)]; cloudabi_sdflags_t how; char how_r_[PADR_(cloudabi_sdflags_t)];
 };
-struct cloudabi_sys_sock_stat_get_args {
-	char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)];
-	char buf_l_[PADL_(cloudabi_sockstat_t *)]; cloudabi_sockstat_t * buf; char buf_r_[PADR_(cloudabi_sockstat_t *)];
-	char flags_l_[PADL_(cloudabi_ssflags_t)]; cloudabi_ssflags_t flags; char flags_r_[PADR_(cloudabi_ssflags_t)];
-};
 struct cloudabi64_sys_thread_create_args {
 	char attr_l_[PADL_(cloudabi64_threadattr_t *)]; cloudabi64_threadattr_t * attr; char attr_r_[PADR_(cloudabi64_threadattr_t *)];
 };
@@ -348,14 +323,9 @@ int	cloudabi_sys_proc_exit(struct thread *, struct cloudabi_sys_proc_exit_args *
 int	cloudabi_sys_proc_fork(struct thread *, struct cloudabi_sys_proc_fork_args *);
 int	cloudabi_sys_proc_raise(struct thread *, struct cloudabi_sys_proc_raise_args *);
 int	cloudabi_sys_random_get(struct thread *, struct cloudabi_sys_random_get_args *);
-int	cloudabi_sys_sock_accept(struct thread *, struct cloudabi_sys_sock_accept_args *);
-int	cloudabi_sys_sock_bind(struct thread *, struct cloudabi_sys_sock_bind_args *);
-int	cloudabi_sys_sock_connect(struct thread *, struct cloudabi_sys_sock_connect_args *);
-int	cloudabi_sys_sock_listen(struct thread *, struct cloudabi_sys_sock_listen_args *);
 int	cloudabi64_sys_sock_recv(struct thread *, struct cloudabi64_sys_sock_recv_args *);
 int	cloudabi64_sys_sock_send(struct thread *, struct cloudabi64_sys_sock_send_args *);
 int	cloudabi_sys_sock_shutdown(struct thread *, struct cloudabi_sys_sock_shutdown_args *);
-int	cloudabi_sys_sock_stat_get(struct thread *, struct cloudabi_sys_sock_stat_get_args *);
 int	cloudabi64_sys_thread_create(struct thread *, struct cloudabi64_sys_thread_create_args *);
 int	cloudabi_sys_thread_exit(struct thread *, struct cloudabi_sys_thread_exit_args *);
 int	cloudabi_sys_thread_yield(struct thread *, struct cloudabi_sys_thread_yield_args *);
@@ -439,14 +409,9 @@ int	cloudabi_sys_thread_yield(struct thread *, struct cloudabi_sys_thread_yield_
 #define	CLOUDABI64_SYS_AUE_cloudabi_sys_proc_fork	AUE_NULL
 #define	CLOUDABI64_SYS_AUE_cloudabi_sys_proc_raise	AUE_NULL
 #define	CLOUDABI64_SYS_AUE_cloudabi_sys_random_get	AUE_NULL
-#define	CLOUDABI64_SYS_AUE_cloudabi_sys_sock_accept	AUE_NULL
-#define	CLOUDABI64_SYS_AUE_cloudabi_sys_sock_bind	AUE_NULL
-#define	CLOUDABI64_SYS_AUE_cloudabi_sys_sock_connect	AUE_NULL
-#define	CLOUDABI64_SYS_AUE_cloudabi_sys_sock_listen	AUE_NULL
 #define	CLOUDABI64_SYS_AUE_cloudabi64_sys_sock_recv	AUE_NULL
 #define	CLOUDABI64_SYS_AUE_cloudabi64_sys_sock_send	AUE_NULL
 #define	CLOUDABI64_SYS_AUE_cloudabi_sys_sock_shutdown	AUE_NULL
-#define	CLOUDABI64_SYS_AUE_cloudabi_sys_sock_stat_get	AUE_NULL
 #define	CLOUDABI64_SYS_AUE_cloudabi64_sys_thread_create	AUE_NULL
 #define	CLOUDABI64_SYS_AUE_cloudabi_sys_thread_exit	AUE_NULL
 #define	CLOUDABI64_SYS_AUE_cloudabi_sys_thread_yield	AUE_NULL
diff --git sys/compat/cloudabi64/cloudabi64_syscall.h sys/compat/cloudabi64/cloudabi64_syscall.h
index d9d013c77a09..af22a32eae90 100644
--- sys/compat/cloudabi64/cloudabi64_syscall.h
+++ sys/compat/cloudabi64/cloudabi64_syscall.h
@@ -49,15 +49,10 @@
 #define	CLOUDABI64_SYS_cloudabi_sys_proc_fork	41
 #define	CLOUDABI64_SYS_cloudabi_sys_proc_raise	42
 #define	CLOUDABI64_SYS_cloudabi_sys_random_get	43
-#define	CLOUDABI64_SYS_cloudabi_sys_sock_accept	44
-#define	CLOUDABI64_SYS_cloudabi_sys_sock_bind	45
-#define	CLOUDABI64_SYS_cloudabi_sys_sock_connect	46
-#define	CLOUDABI64_SYS_cloudabi_sys_sock_listen	47
-#define	CLOUDABI64_SYS_cloudabi64_sys_sock_recv	48
-#define	CLOUDABI64_SYS_cloudabi64_sys_sock_send	49
-#define	CLOUDABI64_SYS_cloudabi_sys_sock_shutdown	50
-#define	CLOUDABI64_SYS_cloudabi_sys_sock_stat_get	51
-#define	CLOUDABI64_SYS_cloudabi64_sys_thread_create	52
-#define	CLOUDABI64_SYS_cloudabi_sys_thread_exit	53
-#define	CLOUDABI64_SYS_cloudabi_sys_thread_yield	54
-#define	CLOUDABI64_SYS_MAXSYSCALL	55
+#define	CLOUDABI64_SYS_cloudabi64_sys_sock_recv	44
+#define	CLOUDABI64_SYS_cloudabi64_sys_sock_send	45
+#define	CLOUDABI64_SYS_cloudabi_sys_sock_shutdown	46
+#define	CLOUDABI64_SYS_cloudabi64_sys_thread_create	47
+#define	CLOUDABI64_SYS_cloudabi_sys_thread_exit	48
+#define	CLOUDABI64_SYS_cloudabi_sys_thread_yield	49
+#define	CLOUDABI64_SYS_MAXSYSCALL	50
diff --git sys/compat/cloudabi64/cloudabi64_syscalls.c sys/compat/cloudabi64/cloudabi64_syscalls.c
index d46245b12a1b..101ed369b276 100644
--- sys/compat/cloudabi64/cloudabi64_syscalls.c
+++ sys/compat/cloudabi64/cloudabi64_syscalls.c
@@ -50,15 +50,10 @@ const char *cloudabi64_syscallnames[] = {
 	"cloudabi_sys_proc_fork",			/* 41 = cloudabi_sys_proc_fork */
 	"cloudabi_sys_proc_raise",			/* 42 = cloudabi_sys_proc_raise */
 	"cloudabi_sys_random_get",			/* 43 = cloudabi_sys_random_get */
-	"cloudabi_sys_sock_accept",			/* 44 = cloudabi_sys_sock_accept */
-	"cloudabi_sys_sock_bind",			/* 45 = cloudabi_sys_sock_bind */
-	"cloudabi_sys_sock_connect",			/* 46 = cloudabi_sys_sock_connect */
-	"cloudabi_sys_sock_listen",			/* 47 = cloudabi_sys_sock_listen */
-	"cloudabi64_sys_sock_recv",			/* 48 = cloudabi64_sys_sock_recv */
-	"cloudabi64_sys_sock_send",			/* 49 = cloudabi64_sys_sock_send */
-	"cloudabi_sys_sock_shutdown",			/* 50 = cloudabi_sys_sock_shutdown */
-	"cloudabi_sys_sock_stat_get",			/* 51 = cloudabi_sys_sock_stat_get */
-	"cloudabi64_sys_thread_create",			/* 52 = cloudabi64_sys_thread_create */
-	"cloudabi_sys_thread_exit",			/* 53 = cloudabi_sys_thread_exit */
-	"cloudabi_sys_thread_yield",			/* 54 = cloudabi_sys_thread_yield */
+	"cloudabi64_sys_sock_recv",			/* 44 = cloudabi64_sys_sock_recv */
+	"cloudabi64_sys_sock_send",			/* 45 = cloudabi64_sys_sock_send */
+	"cloudabi_sys_sock_shutdown",			/* 46 = cloudabi_sys_sock_shutdown */
+	"cloudabi64_sys_thread_create",			/* 47 = cloudabi64_sys_thread_create */
+	"cloudabi_sys_thread_exit",			/* 48 = cloudabi_sys_thread_exit */
+	"cloudabi_sys_thread_yield",			/* 49 = cloudabi_sys_thread_yield */
 };
diff --git sys/compat/cloudabi64/cloudabi64_sysent.c sys/compat/cloudabi64/cloudabi64_sysent.c
index 97b99087940d..3772cdbb2722 100644
--- sys/compat/cloudabi64/cloudabi64_sysent.c
+++ sys/compat/cloudabi64/cloudabi64_sysent.c
@@ -58,15 +58,10 @@ struct sysent cloudabi64_sysent[] = {
 	{ 0, (sy_call_t *)cloudabi_sys_proc_fork, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 41 = cloudabi_sys_proc_fork */
 	{ AS(cloudabi_sys_proc_raise_args), (sy_call_t *)cloudabi_sys_proc_raise, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 42 = cloudabi_sys_proc_raise */
 	{ AS(cloudabi_sys_random_get_args), (sy_call_t *)cloudabi_sys_random_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 43 = cloudabi_sys_random_get */
-	{ AS(cloudabi_sys_sock_accept_args), (sy_call_t *)cloudabi_sys_sock_accept, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 44 = cloudabi_sys_sock_accept */
-	{ AS(cloudabi_sys_sock_bind_args), (sy_call_t *)cloudabi_sys_sock_bind, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 45 = cloudabi_sys_sock_bind */
-	{ AS(cloudabi_sys_sock_connect_args), (sy_call_t *)cloudabi_sys_sock_connect, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 46 = cloudabi_sys_sock_connect */
-	{ AS(cloudabi_sys_sock_listen_args), (sy_call_t *)cloudabi_sys_sock_listen, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 47 = cloudabi_sys_sock_listen */
-	{ AS(cloudabi64_sys_sock_recv_args), (sy_call_t *)cloudabi64_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 48 = cloudabi64_sys_sock_recv */
-	{ AS(cloudabi64_sys_sock_send_args), (sy_call_t *)cloudabi64_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 49 = cloudabi64_sys_sock_send */
-	{ AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 50 = cloudabi_sys_sock_shutdown */
-	{ AS(cloudabi_sys_sock_stat_get_args), (sy_call_t *)cloudabi_sys_sock_stat_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 51 = cloudabi_sys_sock_stat_get */
-	{ AS(cloudabi64_sys_thread_create_args), (sy_call_t *)cloudabi64_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 52 = cloudabi64_sys_thread_create */
-	{ AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 53 = cloudabi_sys_thread_exit */
-	{ 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 54 = cloudabi_sys_thread_yield */
+	{ AS(cloudabi64_sys_sock_recv_args), (sy_call_t *)cloudabi64_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 44 = cloudabi64_sys_sock_recv */
+	{ AS(cloudabi64_sys_sock_send_args), (sy_call_t *)cloudabi64_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 45 = cloudabi64_sys_sock_send */
+	{ AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 46 = cloudabi_sys_sock_shutdown */
+	{ AS(cloudabi64_sys_thread_create_args), (sy_call_t *)cloudabi64_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 47 = cloudabi64_sys_thread_create */
+	{ AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 48 = cloudabi_sys_thread_exit */
+	{ 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC },	/* 49 = cloudabi_sys_thread_yield */
 };
diff --git sys/compat/cloudabi64/cloudabi64_systrace_args.c sys/compat/cloudabi64/cloudabi64_systrace_args.c
index e71a6d869a54..14f10ce64fb1 100644
--- sys/compat/cloudabi64/cloudabi64_systrace_args.c
+++ sys/compat/cloudabi64/cloudabi64_systrace_args.c
@@ -407,44 +407,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 		*n_args = 2;
 		break;
 	}
-	/* cloudabi_sys_sock_accept */
-	case 44: {
-		struct cloudabi_sys_sock_accept_args *p = params;
-		iarg[0] = p->sock; /* cloudabi_fd_t */
-		uarg[1] = (intptr_t) p->unused; /* void * */
-		*n_args = 2;
-		break;
-	}
-	/* cloudabi_sys_sock_bind */
-	case 45: {
-		struct cloudabi_sys_sock_bind_args *p = params;
-		iarg[0] = p->sock; /* cloudabi_fd_t */
-		iarg[1] = p->fd; /* cloudabi_fd_t */
-		uarg[2] = (intptr_t) p->path; /* const char * */
-		uarg[3] = p->path_len; /* size_t */
-		*n_args = 4;
-		break;
-	}
-	/* cloudabi_sys_sock_connect */
-	case 46: {
-		struct cloudabi_sys_sock_connect_args *p = params;
-		iarg[0] = p->sock; /* cloudabi_fd_t */
-		iarg[1] = p->fd; /* cloudabi_fd_t */
-		uarg[2] = (intptr_t) p->path; /* const char * */
-		uarg[3] = p->path_len; /* size_t */
-		*n_args = 4;
-		break;
-	}
-	/* cloudabi_sys_sock_listen */
-	case 47: {
-		struct cloudabi_sys_sock_listen_args *p = params;
-		iarg[0] = p->sock; /* cloudabi_fd_t */
-		iarg[1] = p->backlog; /* cloudabi_backlog_t */
-		*n_args = 2;
-		break;
-	}
 	/* cloudabi64_sys_sock_recv */
-	case 48: {
+	case 44: {
 		struct cloudabi64_sys_sock_recv_args *p = params;
 		iarg[0] = p->sock; /* cloudabi_fd_t */
 		uarg[1] = (intptr_t) p->in; /* const cloudabi64_recv_in_t * */
@@ -453,7 +417,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 		break;
 	}
 	/* cloudabi64_sys_sock_send */
-	case 49: {
+	case 45: {
 		struct cloudabi64_sys_sock_send_args *p = params;
 		iarg[0] = p->sock; /* cloudabi_fd_t */
 		uarg[1] = (intptr_t) p->in; /* const cloudabi64_send_in_t * */
@@ -462,31 +426,22 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 		break;
 	}
 	/* cloudabi_sys_sock_shutdown */
-	case 50: {
+	case 46: {
 		struct cloudabi_sys_sock_shutdown_args *p = params;
 		iarg[0] = p->sock; /* cloudabi_fd_t */
 		iarg[1] = p->how; /* cloudabi_sdflags_t */
 		*n_args = 2;
 		break;
 	}
-	/* cloudabi_sys_sock_stat_get */
-	case 51: {
-		struct cloudabi_sys_sock_stat_get_args *p = params;
-		iarg[0] = p->sock; /* cloudabi_fd_t */
-		uarg[1] = (intptr_t) p->buf; /* cloudabi_sockstat_t * */
-		iarg[2] = p->flags; /* cloudabi_ssflags_t */
-		*n_args = 3;
-		break;
-	}
 	/* cloudabi64_sys_thread_create */
-	case 52: {
+	case 47: {
 		struct cloudabi64_sys_thread_create_args *p = params;
 		uarg[0] = (intptr_t) p->attr; /* cloudabi64_threadattr_t * */
 		*n_args = 1;
 		break;
 	}
 	/* cloudabi_sys_thread_exit */
-	case 53: {
+	case 48: {
 		struct cloudabi_sys_thread_exit_args *p = params;
 		uarg[0] = (intptr_t) p->lock; /* cloudabi_lock_t * */
 		iarg[1] = p->scope; /* cloudabi_scope_t */
@@ -494,7 +449,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 		break;
 	}
 	/* cloudabi_sys_thread_yield */
-	case 54: {
+	case 49: {
 		*n_args = 0;
 		break;
 	}
@@ -1211,72 +1166,8 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 			break;
 		};
 		break;
-	/* cloudabi_sys_sock_accept */
-	case 44:
-		switch(ndx) {
-		case 0:
-			p = "cloudabi_fd_t";
-			break;
-		case 1:
-			p = "userland void *";
-			break;
-		default:
-			break;
-		};
-		break;
-	/* cloudabi_sys_sock_bind */
-	case 45:
-		switch(ndx) {
-		case 0:
-			p = "cloudabi_fd_t";
-			break;
-		case 1:
-			p = "cloudabi_fd_t";
-			break;
-		case 2:
-			p = "userland const char *";
-			break;
-		case 3:
-			p = "size_t";
-			break;
-		default:
-			break;
-		};
-		break;
-	/* cloudabi_sys_sock_connect */
-	case 46:
-		switch(ndx) {
-		case 0:
-			p = "cloudabi_fd_t";
-			break;
-		case 1:
-			p = "cloudabi_fd_t";
-			break;
-		case 2:
-			p = "userland const char *";
-			break;
-		case 3:
-			p = "size_t";
-			break;
-		default:
-			break;
-		};
-		break;
-	/* cloudabi_sys_sock_listen */
-	case 47:
-		switch(ndx) {
-		case 0:
-			p = "cloudabi_fd_t";
-			break;
-		case 1:
-			p = "cloudabi_backlog_t";
-			break;
-		default:
-			break;
-		};
-		break;
 	/* cloudabi64_sys_sock_recv */
-	case 48:
+	case 44:
 		switch(ndx) {
 		case 0:
 			p = "cloudabi_fd_t";
@@ -1292,7 +1183,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		};
 		break;
 	/* cloudabi64_sys_sock_send */
-	case 49:
+	case 45:
 		switch(ndx) {
 		case 0:
 			p = "cloudabi_fd_t";
@@ -1308,7 +1199,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		};
 		break;
 	/* cloudabi_sys_sock_shutdown */
-	case 50:
+	case 46:
 		switch(ndx) {
 		case 0:
 			p = "cloudabi_fd_t";
@@ -1320,24 +1211,8 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 			break;
 		};
 		break;
-	/* cloudabi_sys_sock_stat_get */
-	case 51:
-		switch(ndx) {
-		case 0:
-			p = "cloudabi_fd_t";
-			break;
-		case 1:
-			p = "userland cloudabi_sockstat_t *";
-			break;
-		case 2:
-			p = "cloudabi_ssflags_t";
-			break;
-		default:
-			break;
-		};
-		break;
 	/* cloudabi64_sys_thread_create */
-	case 52:
+	case 47:
 		switch(ndx) {
 		case 0:
 			p = "userland cloudabi64_threadattr_t *";
@@ -1347,7 +1222,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		};
 		break;
 	/* cloudabi_sys_thread_exit */
-	case 53:
+	case 48:
 		switch(ndx) {
 		case 0:
 			p = "userland cloudabi_lock_t *";
@@ -1360,7 +1235,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		};
 		break;
 	/* cloudabi_sys_thread_yield */
-	case 54:
+	case 49:
 		break;
 	default:
 		break;
@@ -1590,58 +1465,33 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		if (ndx == 0 || ndx == 1)
 			p = "void";
 		break;
-	/* cloudabi_sys_sock_accept */
-	case 44:
-		if (ndx == 0 || ndx == 1)
-			p = "cloudabi_fd_t";
-		break;
-	/* cloudabi_sys_sock_bind */
-	case 45:
-		if (ndx == 0 || ndx == 1)
-			p = "void";
-		break;
-	/* cloudabi_sys_sock_connect */
-	case 46:
-		if (ndx == 0 || ndx == 1)
-			p = "void";
-		break;
-	/* cloudabi_sys_sock_listen */
-	case 47:
-		if (ndx == 0 || ndx == 1)
-			p = "void";
-		break;
 	/* cloudabi64_sys_sock_recv */
-	case 48:
+	case 44:
 		if (ndx == 0 || ndx == 1)
 			p = "void";
 		break;
 	/* cloudabi64_sys_sock_send */
-	case 49:
+	case 45:
 		if (ndx == 0 || ndx == 1)
 			p = "void";
 		break;
 	/* cloudabi_sys_sock_shutdown */
-	case 50:
-		if (ndx == 0 || ndx == 1)
-			p = "void";
-		break;
-	/* cloudabi_sys_sock_stat_get */
-	case 51:
+	case 46:
 		if (ndx == 0 || ndx == 1)
 			p = "void";
 		break;
 	/* cloudabi64_sys_thread_create */
-	case 52:
+	case 47:
 		if (ndx == 0 || ndx == 1)
 			p = "cloudabi_tid_t";
 		break;
 	/* cloudabi_sys_thread_exit */
-	case 53:
+	case 48:
 		if (ndx == 0 || ndx == 1)
 			p = "void";
 		break;
 	/* cloudabi_sys_thread_yield */
-	case 54:
+	case 49:
 	default:
 		break;
 	};
diff --git sys/compat/freebsd32/freebsd32.h sys/compat/freebsd32/freebsd32.h
index 5eb0c0720ca1..7d1887b6a944 100644
--- sys/compat/freebsd32/freebsd32.h
+++ sys/compat/freebsd32/freebsd32.h
@@ -78,6 +78,15 @@ struct itimerspec32 {
 	TS_CP((src), (dst), it_value);		\
 } while (0)
 
+struct bintime32 {
+	time32_t sec;
+	uint32_t frac[2];
+};
+#define BT_CP(src, dst, fld) do {				\
+	CP((src).fld, (dst).fld, sec);				\
+	*(uint64_t *)&(dst).fld.frac[0] = (src).fld.frac;	\
+} while (0)
+
 struct rusage32 {
 	struct timeval32 ru_utime;
 	struct timeval32 ru_stime;
diff --git sys/compat/freebsd32/freebsd32_ioctl.c sys/compat/freebsd32/freebsd32_ioctl.c
index 05d7e73fe0bb..26c3e926245b 100644
--- sys/compat/freebsd32/freebsd32_ioctl.c
+++ sys/compat/freebsd32/freebsd32_ioctl.c
@@ -55,8 +55,7 @@ __FBSDID("$FreeBSD$");
 #include <compat/freebsd32/freebsd32_ioctl.h>
 #include <compat/freebsd32/freebsd32_proto.h>
 
-/* Cannot get exact size in 64-bit due to alignment issue of entire struct. */
-CTASSERT((sizeof(struct md_ioctl32)+4) == 436);
+CTASSERT((sizeof(struct md_ioctl32)) == 436);
 CTASSERT(sizeof(struct ioc_read_toc_entry32) == 8);
 CTASSERT(sizeof(struct mem_range_op32) == 12);
 CTASSERT(sizeof(struct pci_conf_io32) == 36);
@@ -87,6 +86,7 @@ freebsd32_ioctl_md(struct thread *td, struct freebsd32_ioctl_args *uap,
 		CP(md32, mdv, md_base);
 		CP(md32, mdv, md_fwheads);
 		CP(md32, mdv, md_fwsectors);
+		PTRIN_CP(md32, mdv, md_label);
 	} else if (uap->com & IOC_OUT) {
 		/*
 		 * Zero the buffer so the user always
@@ -123,6 +123,7 @@ freebsd32_ioctl_md(struct thread *td, struct freebsd32_ioctl_args *uap,
 		CP(mdv, md32, md_base);
 		CP(mdv, md32, md_fwheads);
 		CP(mdv, md32, md_fwsectors);
+		PTROUT_CP(mdv, md32, md_label);
 		if (com == MDIOCLIST) {
 			/*
 			 * Use MDNPAD, and not MDNPAD32.  Padding is
diff --git sys/compat/freebsd32/freebsd32_ioctl.h sys/compat/freebsd32/freebsd32_ioctl.h
index 2b79f72ea23e..e479be555cf6 100644
--- sys/compat/freebsd32/freebsd32_ioctl.h
+++ sys/compat/freebsd32/freebsd32_ioctl.h
@@ -43,7 +43,7 @@ struct ioc_read_toc_entry32 {
 	uint32_t data;		/* struct cd_toc_entry* */
 };
 
-#define	MDNPAD32	MDNPAD - 1
+#define	MDNPAD32	MDNPAD
 struct md_ioctl32 {
 	unsigned	md_version;	/* Structure layout version */
 	unsigned	md_unit;	/* unit number */
@@ -55,8 +55,9 @@ struct md_ioctl32 {
 	u_int64_t	md_base;	/* base address */
 	int		md_fwheads;	/* firmware heads */
 	int		md_fwsectors;	/* firmware sectors */
+	caddr_t32	md_label;	/* label of the device */
 	int		md_pad[MDNPAD32]; /* padding for future ideas */
-};
+} __attribute__((__packed__));
 
 struct fiodgname_arg32 {
 	int		len;
@@ -109,10 +110,10 @@ struct pci_conf_io32 {
 };
 
 #define	CDIOREADTOCENTRYS_32 _IOWR('c', 5, struct ioc_read_toc_entry32)
-#define	MDIOCATTACH_32	_IOC(IOC_INOUT, 'm', 0, sizeof(struct md_ioctl32) + 4)
-#define	MDIOCDETACH_32	_IOC(IOC_INOUT, 'm', 1, sizeof(struct md_ioctl32) + 4)
-#define	MDIOCQUERY_32	_IOC(IOC_INOUT, 'm', 2, sizeof(struct md_ioctl32) + 4)
-#define	MDIOCLIST_32	_IOC(IOC_INOUT, 'm', 3, sizeof(struct md_ioctl32) + 4)
+#define	MDIOCATTACH_32	_IOC(IOC_INOUT, 'm', 0, sizeof(struct md_ioctl32))
+#define	MDIOCDETACH_32	_IOC(IOC_INOUT, 'm', 1, sizeof(struct md_ioctl32))
+#define	MDIOCQUERY_32	_IOC(IOC_INOUT, 'm', 2, sizeof(struct md_ioctl32))
+#define	MDIOCLIST_32	_IOC(IOC_INOUT, 'm', 3, sizeof(struct md_ioctl32))
 #define	FIODGNAME_32	_IOW('f', 120, struct fiodgname_arg32)
 #define	MEMRANGE_GET32	_IOWR('m', 50, struct mem_range_op32)
 #define	MEMRANGE_SET32	_IOW('m', 51, struct mem_range_op32)
diff --git sys/compat/freebsd32/freebsd32_misc.c sys/compat/freebsd32/freebsd32_misc.c
index d5bc7d0229ba..d9e0b9225a96 100644
--- sys/compat/freebsd32/freebsd32_misc.c
+++ sys/compat/freebsd32/freebsd32_misc.c
@@ -113,6 +113,7 @@ FEATURE(compat_freebsd_32bit, "Compatible with 32-bit FreeBSD");
 CTASSERT(sizeof(struct timeval32) == 8);
 CTASSERT(sizeof(struct timespec32) == 8);
 CTASSERT(sizeof(struct itimerval32) == 16);
+CTASSERT(sizeof(struct bintime32) == 12);
 #endif
 CTASSERT(sizeof(struct statfs32) == 256);
 #ifdef __amd64__
@@ -1035,12 +1036,67 @@ freebsd32_copyoutmsghdr(struct msghdr *msg, struct msghdr32 *msg32)
 
 #define	FREEBSD32_CMSG_DATA(cmsg)	((unsigned char *)(cmsg) + \
 				 FREEBSD32_ALIGN(sizeof(struct cmsghdr)))
+
+static size_t
+freebsd32_cmsg_convert(struct cmsghdr *cm, void *data, socklen_t datalen)
+{
+	size_t copylen;
+	union {
+		struct timespec32 ts;
+		struct timeval32 tv;
+		struct bintime32 bt;
+	} tmp32;
+
+	union {
+		struct timespec ts;
+		struct timeval tv;
+		struct bintime bt;
+	} *in;
+
+	in = data;
+	copylen = 0;
+	switch (cm->cmsg_level) {
+	case SOL_SOCKET:
+		switch (cm->cmsg_type) {
+		case SCM_TIMESTAMP:
+			TV_CP(*in, tmp32, tv);
+			copylen = sizeof(tmp32.tv);
+			break;
+
+		case SCM_BINTIME:
+			BT_CP(*in, tmp32, bt);
+			copylen = sizeof(tmp32.bt);
+			break;
+
+		case SCM_REALTIME:
+		case SCM_MONOTONIC:
+			TS_CP(*in, tmp32, ts);
+			copylen = sizeof(tmp32.ts);
+			break;
+
+		default:
+			break;
+		}
+
+	default:
+		break;
+	}
+
+	if (copylen == 0)
+		return (datalen);
+
+	KASSERT((datalen >= copylen), ("corrupted cmsghdr"));
+
+	bcopy(&tmp32, data, copylen);
+	return (copylen);
+}
+
 static int
 freebsd32_copy_msg_out(struct msghdr *msg, struct mbuf *control)
 {
 	struct cmsghdr *cm;
 	void *data;
-	socklen_t clen, datalen;
+	socklen_t clen, datalen, datalen_out;
 	int error;
 	caddr_t ctlbuf;
 	int len, maxlen, copylen;
@@ -1064,15 +1120,15 @@ freebsd32_copy_msg_out(struct msghdr *msg, struct mbuf *control)
 			    cm->cmsg_len > clen) {
 				error = EINVAL;
 				break;
-			}	
+			}
 
 			data   = CMSG_DATA(cm);
 			datalen = (caddr_t)cm + cm->cmsg_len - (caddr_t)data;
+			datalen_out = freebsd32_cmsg_convert(cm, data, datalen);
 
 			/* Adjust message length */
 			cm->cmsg_len = FREEBSD32_ALIGN(sizeof(struct cmsghdr)) +
-			    datalen;
-
+			    datalen_out;
 
 			/* Copy cmsghdr */
 			copylen = sizeof(struct cmsghdr);
@@ -1081,7 +1137,7 @@ freebsd32_copy_msg_out(struct msghdr *msg, struct mbuf *control)
 				copylen = len;
 			}
 
-			error = copyout(cm,ctlbuf,copylen);
+			error = copyout(cm, ctlbuf, copylen);
 			if (error)
 				goto exit;
 
@@ -1092,13 +1148,13 @@ freebsd32_copy_msg_out(struct msghdr *msg, struct mbuf *control)
 				break;
 
 			/* Copy data */
-			copylen = datalen;
+			copylen = datalen_out;
 			if (len < copylen) {
 				msg->msg_flags |= MSG_CTRUNC;
 				copylen = len;
 			}
 
-			error = copyout(data,ctlbuf,copylen);
+			error = copyout(data, ctlbuf, copylen);
 			if (error)
 				goto exit;
 
diff --git sys/compat/linuxkpi/common/include/linux/device.h sys/compat/linuxkpi/common/include/linux/device.h
index 7cf5b07327c8..edc6cd8d9e01 100644
--- sys/compat/linuxkpi/common/include/linux/device.h
+++ sys/compat/linuxkpi/common/include/linux/device.h
@@ -50,12 +50,14 @@ enum irqreturn	{ IRQ_NONE = 0, IRQ_HANDLED, IRQ_WAKE_THREAD, };
 typedef enum irqreturn	irqreturn_t;
 
 struct device;
+struct fwnode_handle;
 
 struct class {
 	const char	*name;
 	struct module	*owner;
 	struct kobject	kobj;
 	devclass_t	bsdclass;
+	const struct dev_pm_ops *pm;
 	void		(*class_release)(struct class *class);
 	void		(*dev_release)(struct device *dev);
 	char *		(*devnode)(struct device *dev, umode_t *mode);
@@ -113,6 +115,7 @@ struct device {
 	unsigned int	msix;
 	unsigned int	msix_max;
 	const struct attribute_group **groups;
+	struct fwnode_handle *fwnode;
 
 	spinlock_t	devres_lock;
 	struct list_head devres_head;
@@ -179,6 +182,7 @@ show_class_attr_string(struct class *class,
 #define	dev_warn(dev, fmt, ...)	device_printf((dev)->bsddev, fmt, ##__VA_ARGS__)
 #define	dev_info(dev, fmt, ...)	device_printf((dev)->bsddev, fmt, ##__VA_ARGS__)
 #define	dev_notice(dev, fmt, ...)	device_printf((dev)->bsddev, fmt, ##__VA_ARGS__)
+#define	dev_dbg(dev, fmt, ...)	do { } while (0)
 #define	dev_printk(lvl, dev, fmt, ...)					\
 	    device_printf((dev)->bsddev, fmt, ##__VA_ARGS__)
 
diff --git sys/compat/linuxkpi/common/include/linux/file.h sys/compat/linuxkpi/common/include/linux/file.h
index a243f12d205f..41fab51a696f 100644
--- sys/compat/linuxkpi/common/include/linux/file.h
+++ sys/compat/linuxkpi/common/include/linux/file.h
@@ -53,11 +53,18 @@ linux_fget(unsigned int fd)
 	cap_rights_t rights;
 	struct file *file;
 
+	/* lookup file pointer by file descriptor index */
 	if (fget_unlocked(curthread->td_proc->p_fd, fd,
-	    cap_rights_init(&rights), &file, NULL) != 0) {
+	    cap_rights_init(&rights), &file, NULL) != 0)
+		return (NULL);
+
+	/* check if file handle really belongs to us */
+	if (file->f_data == NULL ||
+	    file->f_ops != &linuxfileops) {
+		fdrop(file, curthread);
 		return (NULL);
 	}
-	return (struct linux_file *)file->f_data;
+	return ((struct linux_file *)file->f_data);
 }
 
 extern void linux_file_free(struct linux_file *filp);
diff --git sys/compat/linuxkpi/common/include/linux/fs.h sys/compat/linuxkpi/common/include/linux/fs.h
index 6b163f57d23c..31ab194e5b74 100644
--- sys/compat/linuxkpi/common/include/linux/fs.h
+++ sys/compat/linuxkpi/common/include/linux/fs.h
@@ -53,9 +53,11 @@ struct pipe_inode_info;
 struct vm_area_struct;
 struct poll_table_struct;
 struct files_struct;
+struct pfs_node;
 
 #define	inode	vnode
 #define	i_cdev	v_rdev
+#define	i_private v_data
 
 #define	S_IRUGO	(S_IRUSR | S_IRGRP | S_IROTH)
 #define	S_IWUGO	(S_IWUSR | S_IWGRP | S_IWOTH)
@@ -65,10 +67,22 @@ typedef struct files_struct *fl_owner_t;
 
 struct dentry {
 	struct inode	*d_inode;
+	struct pfs_node	*d_pfs_node;
 };
 
 struct file_operations;
 
+struct linux_file_wait_queue {
+	struct wait_queue wq;
+	struct wait_queue_head *wqh;
+	atomic_t state;
+#define	LINUX_FWQ_STATE_INIT 0
+#define	LINUX_FWQ_STATE_NOT_READY 1
+#define	LINUX_FWQ_STATE_QUEUED 2
+#define	LINUX_FWQ_STATE_READY 3
+#define	LINUX_FWQ_STATE_MAX 4
+};
+
 struct linux_file {
 	struct file	*_file;
 	const struct file_operations	*f_op;
@@ -94,6 +108,7 @@ struct linux_file {
 #define	LINUX_KQ_FLAG_NEED_WRITE (1 << 3)
 	/* protects f_selinfo.si_note */
 	spinlock_t	f_kqlock;
+	struct linux_file_wait_queue f_wait_queue;
 };
 
 #define	file		linux_file
diff --git sys/compat/linuxkpi/common/include/linux/inetdevice.h sys/compat/linuxkpi/common/include/linux/inetdevice.h
index 33f12277ec66..0b9783f156fd 100644
--- sys/compat/linuxkpi/common/include/linux/inetdevice.h
+++ sys/compat/linuxkpi/common/include/linux/inetdevice.h
@@ -61,23 +61,33 @@ static inline struct net_device *
 ip6_dev_find(struct vnet *vnet, struct in6_addr addr)
 {
 	struct sockaddr_in6 sin6;
-	struct ifaddr *ifa;
-	struct ifnet *ifp;
+	struct ifaddr *ifa = NULL;
+	struct ifnet *ifp = NULL;
+	int x;
 
 	memset(&sin6, 0, sizeof(sin6));
 	sin6.sin6_addr = addr;
 	sin6.sin6_len = sizeof(sin6);
 	sin6.sin6_family = AF_INET6;
 	CURVNET_SET_QUIET(vnet);
-	ifa = ifa_ifwithaddr((struct sockaddr *)&sin6);
-	CURVNET_RESTORE();
-	if (ifa) {
+	if (IN6_IS_SCOPE_LINKLOCAL(&addr) ||
+	    IN6_IS_ADDR_MC_INTFACELOCAL(&addr)) {
+		/* XXX need to search all scope ID's */
+		for (x = 0; x <= V_if_index && x < 65536; x++) {
+			sin6.sin6_addr.s6_addr16[1] = htons(x);
+			ifa = ifa_ifwithaddr((struct sockaddr *)&sin6);
+			if (ifa != NULL)
+				break;
+		}
+	} else {
+		ifa = ifa_ifwithaddr((struct sockaddr *)&sin6);
+	}
+	if (ifa != NULL) {
 		ifp = ifa->ifa_ifp;
 		if_ref(ifp);
 		ifa_free(ifa);
-	} else {
-	  	ifp = NULL;
 	}
+	CURVNET_RESTORE();
 	return (ifp);
 }
 
diff --git sys/compat/linuxkpi/common/include/linux/kobject.h sys/compat/linuxkpi/common/include/linux/kobject.h
index 261f35539469..f7280ff951b5 100644
--- sys/compat/linuxkpi/common/include/linux/kobject.h
+++ sys/compat/linuxkpi/common/include/linux/kobject.h
@@ -135,6 +135,11 @@ kobject_create_and_add(const char *name, struct kobject *parent)
 	return (NULL);
 }
 
+static inline void
+kobject_del(struct kobject *kobj __unused)
+{
+}
+
 static inline char *
 kobject_name(const struct kobject *kobj)
 {
diff --git sys/compat/linuxkpi/common/include/linux/lockdep.h sys/compat/linuxkpi/common/include/linux/lockdep.h
index ef562e300cd9..4bf902de0f83 100644
--- sys/compat/linuxkpi/common/include/linux/lockdep.h
+++ sys/compat/linuxkpi/common/include/linux/lockdep.h
@@ -47,4 +47,6 @@ struct lock_class_key {
 
 #define	lockdep_is_held(m)	(sx_xholder(&(m)->sx) == curthread)
 
+#define	might_lock(m)	do { } while (0)
+
 #endif /* _LINUX_LOCKDEP_H_ */
diff --git sys/compat/linuxkpi/common/include/linux/module.h sys/compat/linuxkpi/common/include/linux/module.h
index 13e5e0012d82..d3eecc8e1f28 100644
--- sys/compat/linuxkpi/common/include/linux/module.h
+++ sys/compat/linuxkpi/common/include/linux/module.h
@@ -102,4 +102,6 @@ _module_run(void *arg)
 #define	module_put(module)
 #define	try_module_get(module)	1
 
+#define	postcore_initcall(fn)	module_init(fn)
+
 #endif	/* _LINUX_MODULE_H_ */
diff --git sys/compat/linuxkpi/common/include/linux/poll.h sys/compat/linuxkpi/common/include/linux/poll.h
index 16c75ec65bc1..33501165df24 100644
--- sys/compat/linuxkpi/common/include/linux/poll.h
+++ sys/compat/linuxkpi/common/include/linux/poll.h
@@ -40,11 +40,8 @@
 typedef struct poll_table_struct {
 } poll_table;
 
-static inline void
-poll_wait(struct linux_file *filp, wait_queue_head_t *wait_address, poll_table *p)
-{
-	/* NOP */
-}
+extern void linux_poll_wait(struct linux_file *, wait_queue_head_t *, poll_table *);
+#define	poll_wait(...) linux_poll_wait(__VA_ARGS__)
 
 extern void linux_poll_wakeup(struct linux_file *);
 
diff --git sys/compat/linuxkpi/common/src/linux_compat.c sys/compat/linuxkpi/common/src/linux_compat.c
index a66608b7b057..ce2cf2e75a4a 100644
--- sys/compat/linuxkpi/common/src/linux_compat.c
+++ sys/compat/linuxkpi/common/src/linux_compat.c
@@ -1023,10 +1023,9 @@ linux_dev_poll(struct cdev *dev, int events, struct thread *td)
 	file = td->td_fpop;
 	filp->f_flags = file->f_flag;
 	linux_set_current(td);
-	if (filp->f_op->poll != NULL) {
-		selrecord(td, &filp->f_selinfo);
+	if (filp->f_op->poll != NULL)
 		revents = filp->f_op->poll(filp, NULL) & events;
-	} else
+	else
 		revents = 0;
 
 	return (revents);
@@ -1034,6 +1033,92 @@ error:
 	return (events & (POLLHUP|POLLIN|POLLRDNORM|POLLOUT|POLLWRNORM));
 }
 
+/*
+ * This function atomically updates the poll wakeup state and returns
+ * the previous state at the time of update.
+ */
+static uint8_t
+linux_poll_wakeup_state(atomic_t *v, const uint8_t *pstate)
+{
+	int c, old;
+
+	c = v->counter;
+
+	while ((old = atomic_cmpxchg(v, c, pstate[c])) != c)
+		c = old;
+
+	return (c);
+}
+
+
+static int
+linux_poll_wakeup_callback(wait_queue_t *wq, unsigned int wq_state, int flags, void *key)
+{
+	static const uint8_t state[LINUX_FWQ_STATE_MAX] = {
+		[LINUX_FWQ_STATE_INIT] = LINUX_FWQ_STATE_INIT, /* NOP */
+		[LINUX_FWQ_STATE_NOT_READY] = LINUX_FWQ_STATE_NOT_READY, /* NOP */
+		[LINUX_FWQ_STATE_QUEUED] = LINUX_FWQ_STATE_READY,
+		[LINUX_FWQ_STATE_READY] = LINUX_FWQ_STATE_READY, /* NOP */
+	};
+	struct linux_file *filp = container_of(wq, struct linux_file, f_wait_queue.wq);
+
+	switch (linux_poll_wakeup_state(&filp->f_wait_queue.state, state)) {
+	case LINUX_FWQ_STATE_QUEUED:
+		linux_poll_wakeup(filp);
+		return (1);
+	default:
+		return (0);
+	}
+}
+
+void
+linux_poll_wait(struct linux_file *filp, wait_queue_head_t *wqh, poll_table *p)
+{
+	static const uint8_t state[LINUX_FWQ_STATE_MAX] = {
+		[LINUX_FWQ_STATE_INIT] = LINUX_FWQ_STATE_NOT_READY,
+		[LINUX_FWQ_STATE_NOT_READY] = LINUX_FWQ_STATE_NOT_READY, /* NOP */
+		[LINUX_FWQ_STATE_QUEUED] = LINUX_FWQ_STATE_QUEUED, /* NOP */
+		[LINUX_FWQ_STATE_READY] = LINUX_FWQ_STATE_QUEUED,
+	};
+
+	selrecord(curthread, &filp->f_selinfo);
+
+	switch (linux_poll_wakeup_state(&filp->f_wait_queue.state, state)) {
+	case LINUX_FWQ_STATE_INIT:
+		/* NOTE: file handles can only belong to one wait-queue */
+		filp->f_wait_queue.wqh = wqh;
+		filp->f_wait_queue.wq.func = &linux_poll_wakeup_callback;
+		add_wait_queue(wqh, &filp->f_wait_queue.wq);
+		atomic_set(&filp->f_wait_queue.state, LINUX_FWQ_STATE_QUEUED);
+		break;
+	default:
+		break;
+	}
+}
+
+static void
+linux_poll_wait_dequeue(struct linux_file *filp)
+{
+	static const uint8_t state[LINUX_FWQ_STATE_MAX] = {
+		[LINUX_FWQ_STATE_INIT] = LINUX_FWQ_STATE_INIT,	/* NOP */
+		[LINUX_FWQ_STATE_NOT_READY] = LINUX_FWQ_STATE_INIT,
+		[LINUX_FWQ_STATE_QUEUED] = LINUX_FWQ_STATE_INIT,
+		[LINUX_FWQ_STATE_READY] = LINUX_FWQ_STATE_INIT,
+	};
+
+	seldrain(&filp->f_selinfo);
+
+	switch (linux_poll_wakeup_state(&filp->f_wait_queue.state, state)) {
+	case LINUX_FWQ_STATE_NOT_READY:
+	case LINUX_FWQ_STATE_QUEUED:
+	case LINUX_FWQ_STATE_READY:
+		remove_wait_queue(filp->f_wait_queue.wqh, &filp->f_wait_queue.wq);
+		break;
+	default:
+		break;
+	}
+}
+
 void
 linux_poll_wakeup(struct linux_file *filp)
 {
@@ -1358,6 +1443,7 @@ linux_file_close(struct file *file, struct thread *td)
 	filp = (struct linux_file *)file->f_data;
 	filp->f_flags = file->f_flag;
 	linux_set_current(td);
+	linux_poll_wait_dequeue(filp);
 	error = -filp->f_op->release(NULL, filp);
 	funsetown(&filp->f_sigio);
 	kfree(filp);
diff --git sys/compat/linuxkpi/common/src/linux_pci.c sys/compat/linuxkpi/common/src/linux_pci.c
index 9220a2d90409..a1fc2461800b 100644
--- sys/compat/linuxkpi/common/src/linux_pci.c
+++ sys/compat/linuxkpi/common/src/linux_pci.c
@@ -167,6 +167,7 @@ linux_pci_attach(device_t dev)
 	if (pdev->bus == NULL) {
 		pbus = malloc(sizeof(*pbus), M_DEVBUF, M_WAITOK | M_ZERO);
 		pbus->self = pdev;
+		pbus->number = pci_get_bus(dev);
 		pdev->bus = pbus;
 	}
 
diff --git sys/conf/NOTES sys/conf/NOTES
index 59e1df27ab47..1e63b17c9163 100644
--- sys/conf/NOTES
+++ sys/conf/NOTES
@@ -1984,6 +1984,7 @@ device		xmphy		# XaQti XMAC II
 # lge:	Support for PCI gigabit ethernet adapters based on the Level 1
 #	LXT1001 NetCellerator chipset. This includes the D-Link DGE-500SX,
 #	SMC TigerCard 1000 (SMC9462SX), and some Addtron cards.
+# lio:  Support for Cavium 23XX Ethernet adapters
 # malo: Marvell Libertas wireless NICs.
 # mwl:  Marvell 88W8363 802.11n wireless NICs.
 #	Requires the mwl firmware module
diff --git sys/conf/files sys/conf/files
index ae4178ad7df5..08ed66825622 100644
--- sys/conf/files
+++ sys/conf/files
@@ -497,6 +497,7 @@ contrib/dev/acpica/components/utilities/utresdecode.c	optional acpi acpi_debug
 contrib/dev/acpica/components/utilities/utresrc.c	optional acpi
 contrib/dev/acpica/components/utilities/utstate.c	optional acpi
 contrib/dev/acpica/components/utilities/utstring.c	optional acpi
+contrib/dev/acpica/components/utilities/utstrsuppt.c	optional acpi
 contrib/dev/acpica/components/utilities/utstrtoul64.c	optional acpi
 contrib/dev/acpica/components/utilities/utuuid.c	optional acpi acpi_debug
 contrib/dev/acpica/components/utilities/utxface.c	optional acpi
@@ -1394,7 +1395,7 @@ t4fw.fwo		optional cxgbe					\
 	no-implicit-rule						\
 	clean		"t4fw.fwo"
 t4fw.fw			optional cxgbe					\
-	dependency	"$S/dev/cxgbe/firmware/t4fw-1.16.45.0.bin.uu"	\
+	dependency	"$S/dev/cxgbe/firmware/t4fw-1.16.59.0.bin.uu"	\
 	compile-with	"${NORMAL_FW}"					\
 	no-obj no-implicit-rule						\
 	clean		"t4fw.fw"
@@ -1428,7 +1429,7 @@ t5fw.fwo		optional cxgbe					\
 	no-implicit-rule						\
 	clean		"t5fw.fwo"
 t5fw.fw			optional cxgbe					\
-	dependency	"$S/dev/cxgbe/firmware/t5fw-1.16.45.0.bin.uu"	\
+	dependency	"$S/dev/cxgbe/firmware/t5fw-1.16.59.0.bin.uu"	\
 	compile-with	"${NORMAL_FW}"					\
 	no-obj no-implicit-rule						\
 	clean		"t5fw.fw"
@@ -1462,7 +1463,7 @@ t6fw.fwo		optional cxgbe					\
 	no-implicit-rule						\
 	clean		"t6fw.fwo"
 t6fw.fw			optional cxgbe					\
-	dependency	"$S/dev/cxgbe/firmware/t6fw-1.16.45.0.bin.uu"	\
+	dependency	"$S/dev/cxgbe/firmware/t6fw-1.16.59.0.bin.uu"	\
 	compile-with	"${NORMAL_FW}"					\
 	no-obj no-implicit-rule						\
 	clean		"t6fw.fw"
@@ -2215,6 +2216,62 @@ dev/le/if_le_pci.c		optional le pci
 dev/le/lance.c			optional le
 dev/led/led.c			standard
 dev/lge/if_lge.c		optional lge
+dev/liquidio/base/cn23xx_pf_device.c		optional lio	\
+	compile-with "${NORMAL_C}				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/base/lio_console.c			optional lio	\
+	compile-with "${NORMAL_C}				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/base/lio_ctrl.c			optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/base/lio_device.c			optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/base/lio_droq.c			optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/base/lio_mem_ops.c			optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/base/lio_request_manager.c		optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/base/lio_response_manager.c	optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/lio_core.c				optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/lio_ioctl.c			optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/lio_main.c				optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/lio_rss.c				optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/lio_rxtx.c				optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+dev/liquidio/lio_sysctl.c			optional lio	\
+	compile-with "${NORMAL_C} 				\
+	-I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP"
+lio.c	optional lio						\
+	compile-with	"${AWK} -f $S/tools/fw_stub.awk lio_23xx_nic.bin.fw:lio_23xx_nic.bin -mlio_23xx_nic.bin -c${.TARGET}" \
+	no-implicit-rule before-depend local			\
+	clean		"lio.c"
+lio_23xx_nic.bin.fw.fwo optional lio				\
+	dependency	"lio_23xx_nic.bin.fw"			\
+	compile-with	"${NORMAL_FWO}"				\
+	no-implicit-rule					\
+	clean		"lio_23xx_nic.bin.fw.fwo"
+lio_23xx_nic.bin.fw	optional lio					\
+	dependency	"$S/contrib/dev/liquidio/lio_23xx_nic.bin.uu"	\
+	compile-with	"${NORMAL_FW}"					\
+	no-obj no-implicit-rule						\
+	clean		"lio_23xx_nic.bin.fw"
 dev/lmc/if_lmc.c		optional lmc
 dev/malo/if_malo.c		optional malo
 dev/malo/if_malohal.c		optional malo
@@ -3052,6 +3109,7 @@ dev/uart/uart_bus_puc.c		optional uart puc
 dev/uart/uart_bus_scc.c		optional uart scc
 dev/uart/uart_core.c		optional uart
 dev/uart/uart_dbg.c		optional uart gdb
+dev/uart/uart_dev_mvebu.c	optional uart uart_mvebu
 dev/uart/uart_dev_ns8250.c	optional uart uart_ns8250 | uart uart_snps
 dev/uart/uart_dev_pl011.c	optional uart pl011
 dev/uart/uart_dev_quicc.c	optional uart quicc
@@ -4508,6 +4566,27 @@ dev/mlx4/mlx4_en/mlx4_en_rx.c			optional mlx4en pci inet inet6	\
 dev/mlx4/mlx4_en/mlx4_en_tx.c			optional mlx4en pci inet inet6	\
 	compile-with "${OFED_C}"
 
+dev/mlx5/mlx5_ib/mlx5_ib_ah.c			optional mlx5ib pci ofed \
+	compile-with "${OFED_C}"
+dev/mlx5/mlx5_ib/mlx5_ib_cq.c			optional mlx5ib pci ofed \
+	compile-with "${OFED_C}"
+dev/mlx5/mlx5_ib/mlx5_ib_doorbell.c		optional mlx5ib pci ofed \
+	compile-with "${OFED_C}"
+dev/mlx5/mlx5_ib/mlx5_ib_mad.c			optional mlx5ib pci ofed \
+	compile-with "${OFED_C}"
+dev/mlx5/mlx5_ib/mlx5_ib_main.c			optional mlx5ib pci ofed \
+	compile-with "${OFED_C}"
+dev/mlx5/mlx5_ib/mlx5_ib_mem.c			optional mlx5ib pci ofed \
+	compile-with "${OFED_C}"
+dev/mlx5/mlx5_ib/mlx5_ib_mr.c			optional mlx5ib pci ofed \
+	compile-with "${OFED_C}"
+dev/mlx5/mlx5_ib/mlx5_ib_qp.c			optional mlx5ib pci ofed \
+	compile-with "${OFED_C}"
+dev/mlx5/mlx5_ib/mlx5_ib_roce.c			optional mlx5ib pci ofed \
+	compile-with "${OFED_C}"
+dev/mlx5/mlx5_ib/mlx5_ib_srq.c			optional mlx5ib pci ofed \
+	compile-with "${OFED_C}"
+
 dev/mlx5/mlx5_core/mlx5_alloc.c			optional mlx5 pci	\
 	compile-with "${OFED_C}"
 dev/mlx5/mlx5_core/mlx5_cmd.c			optional mlx5 pci	\
diff --git sys/conf/files.amd64 sys/conf/files.amd64
index a9b926f83c97..dac143da6168 100644
--- sys/conf/files.amd64
+++ sys/conf/files.amd64
@@ -198,6 +198,7 @@ dev/agp/agp_amd64.c		optional	agp
 dev/agp/agp_i810.c		optional	agp
 dev/agp/agp_via.c		optional	agp
 dev/amdsbwd/amdsbwd.c		optional	amdsbwd
+dev/amdsmn/amdsmn.c		optional	amdsmn | amdtemp
 dev/amdtemp/amdtemp.c		optional	amdtemp
 dev/arcmsr/arcmsr.c		optional	arcmsr pci
 dev/asmc/asmc.c			optional	asmc isa
@@ -330,10 +331,11 @@ dev/hyperv/vmbus/amd64/vmbus_vector.S			optional	hyperv
 dev/nctgpio/nctgpio.c		optional	nctgpio
 dev/nfe/if_nfe.c		optional	nfe pci
 dev/ntb/if_ntb/if_ntb.c		optional	if_ntb
-dev/ntb/ntb_transport.c		optional	if_ntb
-dev/ntb/ntb.c			optional	if_ntb | ntb_hw
-dev/ntb/ntb_if.m		optional	if_ntb | ntb_hw
-dev/ntb/ntb_hw/ntb_hw.c		optional	ntb_hw
+dev/ntb/ntb_transport.c		optional	ntb_transport | if_ntb
+dev/ntb/ntb.c			optional	ntb | ntb_transport | if_ntb | ntb_hw_intel | ntb_hw_plx | ntb_hw
+dev/ntb/ntb_if.m		optional	ntb | ntb_transport | if_ntb | ntb_hw_intel | ntb_hw_plx | ntb_hw
+dev/ntb/ntb_hw/ntb_hw_intel.c	optional	ntb_hw_intel | ntb_hw
+dev/ntb/ntb_hw/ntb_hw_plx.c	optional	ntb_hw_plx | ntb_hw
 dev/nvd/nvd.c			optional	nvd nvme
 dev/nvme/nvme.c			optional	nvme
 dev/nvme/nvme_ctrlr.c		optional	nvme
diff --git sys/conf/files.arm64 sys/conf/files.arm64
index 50a09838cc6d..eade07f5ffff 100644
--- sys/conf/files.arm64
+++ sys/conf/files.arm64
@@ -73,6 +73,7 @@ arm/broadcom/bcm2835/bcm2835_vcio.c		optional soc_brcm_bcm2837 fdt
 arm/broadcom/bcm2835/bcm2835_wdog.c		optional soc_brcm_bcm2837 fdt
 arm/broadcom/bcm2835/bcm2836.c			optional soc_brcm_bcm2837 fdt
 arm/broadcom/bcm2835/bcm283x_dwc_fdt.c		optional dwcotg fdt soc_brcm_bcm2837
+arm/mv/armada38x/armada38x_rtc.c		optional mv_rtc fdt
 arm64/acpica/acpi_machdep.c	optional	acpi
 arm64/acpica/OsdEnvironment.c	optional	acpi
 arm64/acpica/acpi_wakeup.c	optional	acpi
@@ -166,6 +167,8 @@ dev/hwpmc/hwpmc_arm64_md.c	optional	hwpmc
 dev/mbox/mbox_if.m		optional	soc_brcm_bcm2837
 dev/mmc/host/dwmmc.c		optional	dwmmc fdt
 dev/mmc/host/dwmmc_hisi.c	optional	dwmmc fdt soc_hisi_hi6220
+dev/neta/if_mvneta_fdt.c	optional	neta fdt
+dev/neta/if_mvneta.c		optional	neta mdio mii
 dev/ofw/ofw_cpu.c		optional	fdt
 dev/ofw/ofwpci.c		optional 	fdt pci
 dev/pci/pci_host_generic.c	optional	pci
@@ -175,9 +178,11 @@ dev/psci/psci_arm64.S		optional	psci
 dev/uart/uart_cpu_arm64.c	optional	uart
 dev/uart/uart_dev_pl011.c	optional	uart pl011
 dev/usb/controller/dwc_otg_hisi.c optional	dwcotg fdt soc_hisi_hi6220
+dev/usb/controller/ehci_mv.c	optional	ehci_mv fdt
 dev/usb/controller/generic_ehci.c optional	ehci acpi
 dev/usb/controller/generic_ohci.c optional	ohci fdt
 dev/usb/controller/generic_usb_if.m optional	ohci fdt
+dev/usb/controller/xhci_mv.c	optional	xhci_mv fdt
 dev/vnic/mrml_bridge.c		optional	vnic fdt
 dev/vnic/nic_main.c		optional	vnic pci
 dev/vnic/nicvf_main.c		optional	vnic pci pci_iov
diff --git sys/conf/files.i386 sys/conf/files.i386
index 294379d000c4..5e838cd182b4 100644
--- sys/conf/files.i386
+++ sys/conf/files.i386
@@ -152,6 +152,7 @@ dev/agp/agp_sis.c		optional agp
 dev/agp/agp_via.c		optional agp
 dev/aic/aic_isa.c		optional aic isa
 dev/amdsbwd/amdsbwd.c		optional amdsbwd
+dev/amdsmn/amdsmn.c		optional amdsmn | amdtemp
 dev/amdtemp/amdtemp.c		optional amdtemp
 dev/arcmsr/arcmsr.c		optional arcmsr pci
 dev/asmc/asmc.c			optional asmc isa
@@ -271,10 +272,11 @@ dev/mse/mse_isa.c		optional mse isa
 dev/nctgpio/nctgpio.c		optional nctgpio
 dev/nfe/if_nfe.c		optional nfe pci
 dev/ntb/if_ntb/if_ntb.c		optional if_ntb
-dev/ntb/ntb_transport.c		optional if_ntb
-dev/ntb/ntb.c			optional if_ntb | ntb_hw
-dev/ntb/ntb_if.m		optional if_ntb | ntb_hw
-dev/ntb/ntb_hw/ntb_hw.c		optional ntb_hw
+dev/ntb/ntb_transport.c		optional ntb_transport | if_ntb
+dev/ntb/ntb.c			optional ntb | ntb_transport | if_ntb | ntb_hw_intel | ntb_hw_plx | ntb_hw
+dev/ntb/ntb_if.m		optional ntb | ntb_transport | if_ntb | ntb_hw_intel | ntb_hw_plx | ntb_hw
+dev/ntb/ntb_hw/ntb_hw_intel.c	optional ntb_hw_intel | ntb_hw
+dev/ntb/ntb_hw/ntb_hw_plx.c	optional ntb_hw_plx | ntb_hw
 dev/nvd/nvd.c			optional nvd nvme
 dev/nvme/nvme.c			optional nvme
 dev/nvme/nvme_ctrlr.c		optional nvme
diff --git sys/conf/ldscript.amd64 sys/conf/ldscript.amd64
index b2ca347a7c85..43fde20370bc 100644
--- sys/conf/ldscript.amd64
+++ sys/conf/ldscript.amd64
@@ -146,6 +146,10 @@ SECTIONS
   . = DATA_SEGMENT_RELRO_END (24, .);
   .got.plt        : { *(.got.plt) }
   . = ALIGN(64);
+  .data.read_frequently :
+  {
+    *(.data.read_frequently)
+  }
   .data.read_mostly :
   {
     *(.data.read_mostly)
diff --git sys/conf/newvers.sh sys/conf/newvers.sh
index c6edddcef4b1..d23c88162705 100644
--- sys/conf/newvers.sh
+++ sys/conf/newvers.sh
@@ -62,7 +62,7 @@ findvcs()
 	savedir=$(pwd)
 	cd ${SYSDIR}/..
 	while [ $(pwd) != "/" ]; do
-		if [ -d "./$1" ]; then
+		if [ -e "./$1" ]; then
 			VCSDIR=$(pwd)"/$1"
 			cd ${savedir}
 			return 0
@@ -218,8 +218,9 @@ if [ -n "$git_cmd" ] ; then
 		svn=" r${svn}"
 		git="=${git}"
 	else
-		svn=`$git_cmd log | fgrep 'git-svn-id:' | head -1 | \
-		     sed -n 's/^.*@\([0-9][0-9]*\).*$/\1/p'`
+		svn=`$git_cmd log --grep '^git-svn-id:' | \
+		    grep '^    git-svn-id:' | head -1 | \
+		    sed -n 's/^.*@\([0-9][0-9]*\).*$/\1/p'`
 		if [ -z "$svn" ] ; then
 			svn=`$git_cmd log --format='format:%N' | \
 			     grep '^svn ' | head -1 | \
diff --git sys/conf/options sys/conf/options
index 062788252524..9e71487705ac 100644
--- sys/conf/options
+++ sys/conf/options
@@ -998,3 +998,6 @@ HN_DEBUG	opt_hn.h
 MMCCAM
 # Encrypted kernel crash dumps
 EKCD		opt_ekcd.h
+
+# NVME options
+NVME_USE_NVD	opt_nvme.h
diff --git sys/contrib/cloudabi/cloudabi_types_common.h sys/contrib/cloudabi/cloudabi_types_common.h
index b5c204e859e8..2f0c03d8da01 100644
--- sys/contrib/cloudabi/cloudabi_types_common.h
+++ sys/contrib/cloudabi/cloudabi_types_common.h
@@ -191,7 +191,6 @@ typedef uint8_t cloudabi_filetype_t;
 #define CLOUDABI_FILETYPE_BLOCK_DEVICE      16
 #define CLOUDABI_FILETYPE_CHARACTER_DEVICE  17
 #define CLOUDABI_FILETYPE_DIRECTORY         32
-#define CLOUDABI_FILETYPE_FIFO              48
 #define CLOUDABI_FILETYPE_POLL              64
 #define CLOUDABI_FILETYPE_PROCESS           80
 #define CLOUDABI_FILETYPE_REGULAR_FILE      96
@@ -249,47 +248,39 @@ typedef uint16_t cloudabi_riflags_t;
 #define CLOUDABI_SOCK_RECV_WAITALL 0x0010
 
 typedef uint64_t cloudabi_rights_t;
-#define CLOUDABI_RIGHT_FD_DATASYNC            0x0000000000000001
-#define CLOUDABI_RIGHT_FD_READ                0x0000000000000002
-#define CLOUDABI_RIGHT_FD_SEEK                0x0000000000000004
-#define CLOUDABI_RIGHT_FD_STAT_PUT_FLAGS      0x0000000000000008
-#define CLOUDABI_RIGHT_FD_SYNC                0x0000000000000010
-#define CLOUDABI_RIGHT_FD_TELL                0x0000000000000020
-#define CLOUDABI_RIGHT_FD_WRITE               0x0000000000000040
-#define CLOUDABI_RIGHT_FILE_ADVISE            0x0000000000000080
-#define CLOUDABI_RIGHT_FILE_ALLOCATE          0x0000000000000100
-#define CLOUDABI_RIGHT_FILE_CREATE_DIRECTORY  0x0000000000000200
-#define CLOUDABI_RIGHT_FILE_CREATE_FILE       0x0000000000000400
-#define CLOUDABI_RIGHT_FILE_CREATE_FIFO       0x0000000000000800
-#define CLOUDABI_RIGHT_FILE_LINK_SOURCE       0x0000000000001000
-#define CLOUDABI_RIGHT_FILE_LINK_TARGET       0x0000000000002000
-#define CLOUDABI_RIGHT_FILE_OPEN              0x0000000000004000
-#define CLOUDABI_RIGHT_FILE_READDIR           0x0000000000008000
-#define CLOUDABI_RIGHT_FILE_READLINK          0x0000000000010000
-#define CLOUDABI_RIGHT_FILE_RENAME_SOURCE     0x0000000000020000
-#define CLOUDABI_RIGHT_FILE_RENAME_TARGET     0x0000000000040000
-#define CLOUDABI_RIGHT_FILE_STAT_FGET         0x0000000000080000
-#define CLOUDABI_RIGHT_FILE_STAT_FPUT_SIZE    0x0000000000100000
-#define CLOUDABI_RIGHT_FILE_STAT_FPUT_TIMES   0x0000000000200000
-#define CLOUDABI_RIGHT_FILE_STAT_GET          0x0000000000400000
-#define CLOUDABI_RIGHT_FILE_STAT_PUT_TIMES    0x0000000000800000
-#define CLOUDABI_RIGHT_FILE_SYMLINK           0x0000000001000000
-#define CLOUDABI_RIGHT_FILE_UNLINK            0x0000000002000000
-#define CLOUDABI_RIGHT_MEM_MAP                0x0000000004000000
-#define CLOUDABI_RIGHT_MEM_MAP_EXEC           0x0000000008000000
-#define CLOUDABI_RIGHT_POLL_FD_READWRITE      0x0000000010000000
-#define CLOUDABI_RIGHT_POLL_MODIFY            0x0000000020000000
-#define CLOUDABI_RIGHT_POLL_PROC_TERMINATE    0x0000000040000000
-#define CLOUDABI_RIGHT_POLL_WAIT              0x0000000080000000
-#define CLOUDABI_RIGHT_PROC_EXEC              0x0000000100000000
-#define CLOUDABI_RIGHT_SOCK_ACCEPT            0x0000000200000000
-#define CLOUDABI_RIGHT_SOCK_BIND_DIRECTORY    0x0000000400000000
-#define CLOUDABI_RIGHT_SOCK_BIND_SOCKET       0x0000000800000000
-#define CLOUDABI_RIGHT_SOCK_CONNECT_DIRECTORY 0x0000001000000000
-#define CLOUDABI_RIGHT_SOCK_CONNECT_SOCKET    0x0000002000000000
-#define CLOUDABI_RIGHT_SOCK_LISTEN            0x0000004000000000
-#define CLOUDABI_RIGHT_SOCK_SHUTDOWN          0x0000008000000000
-#define CLOUDABI_RIGHT_SOCK_STAT_GET          0x0000010000000000
+#define CLOUDABI_RIGHT_FD_DATASYNC           0x0000000000000001
+#define CLOUDABI_RIGHT_FD_READ               0x0000000000000002
+#define CLOUDABI_RIGHT_FD_SEEK               0x0000000000000004
+#define CLOUDABI_RIGHT_FD_STAT_PUT_FLAGS     0x0000000000000008
+#define CLOUDABI_RIGHT_FD_SYNC               0x0000000000000010
+#define CLOUDABI_RIGHT_FD_TELL               0x0000000000000020
+#define CLOUDABI_RIGHT_FD_WRITE              0x0000000000000040
+#define CLOUDABI_RIGHT_FILE_ADVISE           0x0000000000000080
+#define CLOUDABI_RIGHT_FILE_ALLOCATE         0x0000000000000100
+#define CLOUDABI_RIGHT_FILE_CREATE_DIRECTORY 0x0000000000000200
+#define CLOUDABI_RIGHT_FILE_CREATE_FILE      0x0000000000000400
+#define CLOUDABI_RIGHT_FILE_LINK_SOURCE      0x0000000000001000
+#define CLOUDABI_RIGHT_FILE_LINK_TARGET      0x0000000000002000
+#define CLOUDABI_RIGHT_FILE_OPEN             0x0000000000004000
+#define CLOUDABI_RIGHT_FILE_READDIR          0x0000000000008000
+#define CLOUDABI_RIGHT_FILE_READLINK         0x0000000000010000
+#define CLOUDABI_RIGHT_FILE_RENAME_SOURCE    0x0000000000020000
+#define CLOUDABI_RIGHT_FILE_RENAME_TARGET    0x0000000000040000
+#define CLOUDABI_RIGHT_FILE_STAT_FGET        0x0000000000080000
+#define CLOUDABI_RIGHT_FILE_STAT_FPUT_SIZE   0x0000000000100000
+#define CLOUDABI_RIGHT_FILE_STAT_FPUT_TIMES  0x0000000000200000
+#define CLOUDABI_RIGHT_FILE_STAT_GET         0x0000000000400000
+#define CLOUDABI_RIGHT_FILE_STAT_PUT_TIMES   0x0000000000800000
+#define CLOUDABI_RIGHT_FILE_SYMLINK          0x0000000001000000
+#define CLOUDABI_RIGHT_FILE_UNLINK           0x0000000002000000
+#define CLOUDABI_RIGHT_MEM_MAP               0x0000000004000000
+#define CLOUDABI_RIGHT_MEM_MAP_EXEC          0x0000000008000000
+#define CLOUDABI_RIGHT_POLL_FD_READWRITE     0x0000000010000000
+#define CLOUDABI_RIGHT_POLL_MODIFY           0x0000000020000000
+#define CLOUDABI_RIGHT_POLL_PROC_TERMINATE   0x0000000040000000
+#define CLOUDABI_RIGHT_POLL_WAIT             0x0000000080000000
+#define CLOUDABI_RIGHT_PROC_EXEC             0x0000000100000000
+#define CLOUDABI_RIGHT_SOCK_SHUTDOWN         0x0000008000000000
 
 typedef uint16_t cloudabi_roflags_t;
 #define CLOUDABI_SOCK_RECV_FDS_TRUNCATED  0x0001
@@ -333,12 +324,6 @@ typedef uint8_t cloudabi_signal_t;
 #define CLOUDABI_SIGXCPU   25
 #define CLOUDABI_SIGXFSZ   26
 
-typedef uint8_t cloudabi_ssflags_t;
-#define CLOUDABI_SOCKSTAT_CLEAR_ERROR 0x01
-
-typedef uint32_t cloudabi_sstate_t;
-#define CLOUDABI_SOCKSTATE_ACCEPTCONN 0x00000001
-
 typedef uint16_t cloudabi_subclockflags_t;
 #define CLOUDABI_SUBSCRIPTION_CLOCK_ABSTIME 0x0001
 
@@ -423,15 +408,4 @@ _Static_assert(offsetof(cloudabi_lookup_t, flags) == 4, "Incorrect layout");
 _Static_assert(sizeof(cloudabi_lookup_t) == 8, "Incorrect layout");
 _Static_assert(_Alignof(cloudabi_lookup_t) == 4, "Incorrect layout");
 
-typedef struct {
-  _Alignas(1) char ss_unused[40];
-  _Alignas(2) cloudabi_errno_t ss_error;
-  _Alignas(4) cloudabi_sstate_t ss_state;
-} cloudabi_sockstat_t;
-_Static_assert(offsetof(cloudabi_sockstat_t, ss_unused) == 0, "Incorrect layout");
-_Static_assert(offsetof(cloudabi_sockstat_t, ss_error) == 40, "Incorrect layout");
-_Static_assert(offsetof(cloudabi_sockstat_t, ss_state) == 44, "Incorrect layout");
-_Static_assert(sizeof(cloudabi_sockstat_t) == 48, "Incorrect layout");
-_Static_assert(_Alignof(cloudabi_sockstat_t) == 4, "Incorrect layout");
-
 #endif
diff --git sys/contrib/cloudabi/cloudabi_vdso_aarch64.S sys/contrib/cloudabi/cloudabi_vdso_aarch64.S
index 80f8084ce230..7c98e5b3f005 100644
--- sys/contrib/cloudabi/cloudabi_vdso_aarch64.S
+++ sys/contrib/cloudabi/cloudabi_vdso_aarch64.S
@@ -401,63 +401,27 @@ ENTRY(cloudabi_sys_random_get)
   ret
 END(cloudabi_sys_random_get)
 
-ENTRY(cloudabi_sys_sock_accept)
-  str x2, [sp, #-8]
-  mov w8, #44
-  svc #0
-  ldr x2, [sp, #-8]
-  b.cs 1f
-  str w0, [x2]
-  mov w0, wzr
-1:
-  ret
-END(cloudabi_sys_sock_accept)
-
-ENTRY(cloudabi_sys_sock_bind)
-  mov w8, #45
-  svc #0
-  ret
-END(cloudabi_sys_sock_bind)
-
-ENTRY(cloudabi_sys_sock_connect)
-  mov w8, #46
-  svc #0
-  ret
-END(cloudabi_sys_sock_connect)
-
-ENTRY(cloudabi_sys_sock_listen)
-  mov w8, #47
-  svc #0
-  ret
-END(cloudabi_sys_sock_listen)
-
 ENTRY(cloudabi_sys_sock_recv)
-  mov w8, #48
+  mov w8, #44
   svc #0
   ret
 END(cloudabi_sys_sock_recv)
 
 ENTRY(cloudabi_sys_sock_send)
-  mov w8, #49
+  mov w8, #45
   svc #0
   ret
 END(cloudabi_sys_sock_send)
 
 ENTRY(cloudabi_sys_sock_shutdown)
-  mov w8, #50
+  mov w8, #46
   svc #0
   ret
 END(cloudabi_sys_sock_shutdown)
 
-ENTRY(cloudabi_sys_sock_stat_get)
-  mov w8, #51
-  svc #0
-  ret
-END(cloudabi_sys_sock_stat_get)
-
 ENTRY(cloudabi_sys_thread_create)
   str x1, [sp, #-8]
-  mov w8, #52
+  mov w8, #47
   svc #0
   ldr x2, [sp, #-8]
   b.cs 1f
@@ -468,12 +432,12 @@ ENTRY(cloudabi_sys_thread_create)
 END(cloudabi_sys_thread_create)
 
 ENTRY(cloudabi_sys_thread_exit)
-  mov w8, #53
+  mov w8, #48
   svc #0
 END(cloudabi_sys_thread_exit)
 
 ENTRY(cloudabi_sys_thread_yield)
-  mov w8, #54
+  mov w8, #49
   svc #0
   ret
 END(cloudabi_sys_thread_yield)
diff --git sys/contrib/cloudabi/cloudabi_vdso_armv6.S sys/contrib/cloudabi/cloudabi_vdso_armv6.S
index 26944ff6bc44..7ca7a39419d6 100644
--- sys/contrib/cloudabi/cloudabi_vdso_armv6.S
+++ sys/contrib/cloudabi/cloudabi_vdso_armv6.S
@@ -365,61 +365,27 @@ ENTRY(cloudabi_sys_random_get)
   bx lr
 END(cloudabi_sys_random_get)
 
-ENTRY(cloudabi_sys_sock_accept)
-  str r2, [sp, #-4]
-  mov ip, #44
-  swi 0
-  ldrcc r2, [sp, #-4]
-  strcc r0, [r2]
-  movcc r0, $0
-  bx lr
-END(cloudabi_sys_sock_accept)
-
-ENTRY(cloudabi_sys_sock_bind)
-  mov ip, #45
-  swi 0
-  bx lr
-END(cloudabi_sys_sock_bind)
-
-ENTRY(cloudabi_sys_sock_connect)
-  mov ip, #46
-  swi 0
-  bx lr
-END(cloudabi_sys_sock_connect)
-
-ENTRY(cloudabi_sys_sock_listen)
-  mov ip, #47
-  swi 0
-  bx lr
-END(cloudabi_sys_sock_listen)
-
 ENTRY(cloudabi_sys_sock_recv)
-  mov ip, #48
+  mov ip, #44
   swi 0
   bx lr
 END(cloudabi_sys_sock_recv)
 
 ENTRY(cloudabi_sys_sock_send)
-  mov ip, #49
+  mov ip, #45
   swi 0
   bx lr
 END(cloudabi_sys_sock_send)
 
 ENTRY(cloudabi_sys_sock_shutdown)
-  mov ip, #50
+  mov ip, #46
   swi 0
   bx lr
 END(cloudabi_sys_sock_shutdown)
 
-ENTRY(cloudabi_sys_sock_stat_get)
-  mov ip, #51
-  swi 0
-  bx lr
-END(cloudabi_sys_sock_stat_get)
-
 ENTRY(cloudabi_sys_thread_create)
   str r1, [sp, #-4]
-  mov ip, #52
+  mov ip, #47
   swi 0
   ldrcc r2, [sp, #-4]
   strcc r0, [r2]
@@ -428,12 +394,12 @@ ENTRY(cloudabi_sys_thread_create)
 END(cloudabi_sys_thread_create)
 
 ENTRY(cloudabi_sys_thread_exit)
-  mov ip, #53
+  mov ip, #48
   swi 0
 END(cloudabi_sys_thread_exit)
 
 ENTRY(cloudabi_sys_thread_yield)
-  mov ip, #54
+  mov ip, #49
   swi 0
   bx lr
 END(cloudabi_sys_thread_yield)
diff --git sys/contrib/cloudabi/cloudabi_vdso_i686.S sys/contrib/cloudabi/cloudabi_vdso_i686.S
index a226103d57b6..135ea8d55bf1 100644
--- sys/contrib/cloudabi/cloudabi_vdso_i686.S
+++ sys/contrib/cloudabi/cloudabi_vdso_i686.S
@@ -389,61 +389,26 @@ ENTRY(cloudabi_sys_random_get)
   ret
 END(cloudabi_sys_random_get)
 
-ENTRY(cloudabi_sys_sock_accept)
-  mov $44, %eax
-  int $0x80
-  jc 1f
-  mov 12(%esp), %ecx
-  mov %eax, (%ecx)
-  xor %eax, %eax
-1:
-  ret
-END(cloudabi_sys_sock_accept)
-
-ENTRY(cloudabi_sys_sock_bind)
-  mov $45, %eax
-  int $0x80
-  ret
-END(cloudabi_sys_sock_bind)
-
-ENTRY(cloudabi_sys_sock_connect)
-  mov $46, %eax
-  int $0x80
-  ret
-END(cloudabi_sys_sock_connect)
-
-ENTRY(cloudabi_sys_sock_listen)
-  mov $47, %eax
-  int $0x80
-  ret
-END(cloudabi_sys_sock_listen)
-
 ENTRY(cloudabi_sys_sock_recv)
-  mov $48, %eax
+  mov $44, %eax
   int $0x80
   ret
 END(cloudabi_sys_sock_recv)
 
 ENTRY(cloudabi_sys_sock_send)
-  mov $49, %eax
+  mov $45, %eax
   int $0x80
   ret
 END(cloudabi_sys_sock_send)
 
 ENTRY(cloudabi_sys_sock_shutdown)
-  mov $50, %eax
+  mov $46, %eax
   int $0x80
   ret
 END(cloudabi_sys_sock_shutdown)
 
-ENTRY(cloudabi_sys_sock_stat_get)
-  mov $51, %eax
-  int $0x80
-  ret
-END(cloudabi_sys_sock_stat_get)
-
 ENTRY(cloudabi_sys_thread_create)
-  mov $52, %eax
+  mov $47, %eax
   int $0x80
   jc 1f
   mov 8(%esp), %ecx
@@ -454,12 +419,12 @@ ENTRY(cloudabi_sys_thread_create)
 END(cloudabi_sys_thread_create)
 
 ENTRY(cloudabi_sys_thread_exit)
-  mov $53, %eax
+  mov $48, %eax
   int $0x80
 END(cloudabi_sys_thread_exit)
 
 ENTRY(cloudabi_sys_thread_yield)
-  mov $54, %eax
+  mov $49, %eax
   int $0x80
   ret
 END(cloudabi_sys_thread_yield)
diff --git sys/contrib/cloudabi/cloudabi_vdso_i686_on_64bit.S sys/contrib/cloudabi/cloudabi_vdso_i686_on_64bit.S
index a9bb629904aa..009f928d71e5 100644
--- sys/contrib/cloudabi/cloudabi_vdso_i686_on_64bit.S
+++ sys/contrib/cloudabi/cloudabi_vdso_i686_on_64bit.S
@@ -993,85 +993,6 @@ ENTRY(cloudabi_sys_random_get)
   ret
 END(cloudabi_sys_random_get)
 
-ENTRY(cloudabi_sys_sock_accept)
-  push %ebp
-  mov %esp, %ebp
-  mov 8(%ebp), %ecx
-  mov %ecx, -16(%ebp)
-  mov 12(%ebp), %ecx
-  mov %ecx, -8(%ebp)
-  movl $0, -4(%ebp)
-  mov $44, %eax
-  mov %ebp, %ecx
-  sub $16, %ecx
-  int $0x80
-  test %eax, %eax
-  jnz 1f
-  mov 16(%ebp), %ecx
-  mov -16(%ebp), %edx
-  mov %edx, 0(%ecx)
-1:
-  pop %ebp
-  ret
-END(cloudabi_sys_sock_accept)
-
-ENTRY(cloudabi_sys_sock_bind)
-  push %ebp
-  mov %esp, %ebp
-  mov 8(%ebp), %ecx
-  mov %ecx, -32(%ebp)
-  mov 12(%ebp), %ecx
-  mov %ecx, -24(%ebp)
-  mov 16(%ebp), %ecx
-  mov %ecx, -16(%ebp)
-  movl $0, -12(%ebp)
-  mov 20(%ebp), %ecx
-  mov %ecx, -8(%ebp)
-  movl $0, -4(%ebp)
-  mov $45, %eax
-  mov %ebp, %ecx
-  sub $32, %ecx
-  int $0x80
-  pop %ebp
-  ret
-END(cloudabi_sys_sock_bind)
-
-ENTRY(cloudabi_sys_sock_connect)
-  push %ebp
-  mov %esp, %ebp
-  mov 8(%ebp), %ecx
-  mov %ecx, -32(%ebp)
-  mov 12(%ebp), %ecx
-  mov %ecx, -24(%ebp)
-  mov 16(%ebp), %ecx
-  mov %ecx, -16(%ebp)
-  movl $0, -12(%ebp)
-  mov 20(%ebp), %ecx
-  mov %ecx, -8(%ebp)
-  movl $0, -4(%ebp)
-  mov $46, %eax
-  mov %ebp, %ecx
-  sub $32, %ecx
-  int $0x80
-  pop %ebp
-  ret
-END(cloudabi_sys_sock_connect)
-
-ENTRY(cloudabi_sys_sock_listen)
-  push %ebp
-  mov %esp, %ebp
-  mov 8(%ebp), %ecx
-  mov %ecx, -16(%ebp)
-  mov 12(%ebp), %ecx
-  mov %ecx, -8(%ebp)
-  mov $47, %eax
-  mov %ebp, %ecx
-  sub $16, %ecx
-  int $0x80
-  pop %ebp
-  ret
-END(cloudabi_sys_sock_listen)
-
 ENTRY(cloudabi_sys_sock_recv)
   push %ebp
   mov %esp, %ebp
@@ -1083,7 +1004,7 @@ ENTRY(cloudabi_sys_sock_recv)
   mov 16(%ebp), %ecx
   mov %ecx, -8(%ebp)
   movl $0, -4(%ebp)
-  mov $48, %eax
+  mov $44, %eax
   mov %ebp, %ecx
   sub $24, %ecx
   int $0x80
@@ -1102,7 +1023,7 @@ ENTRY(cloudabi_sys_sock_send)
   mov 16(%ebp), %ecx
   mov %ecx, -8(%ebp)
   movl $0, -4(%ebp)
-  mov $49, %eax
+  mov $45, %eax
   mov %ebp, %ecx
   sub $24, %ecx
   int $0x80
@@ -1117,7 +1038,7 @@ ENTRY(cloudabi_sys_sock_shutdown)
   mov %ecx, -16(%ebp)
   mov 12(%ebp), %ecx
   mov %ecx, -8(%ebp)
-  mov $50, %eax
+  mov $46, %eax
   mov %ebp, %ecx
   sub $16, %ecx
   int $0x80
@@ -1125,31 +1046,13 @@ ENTRY(cloudabi_sys_sock_shutdown)
   ret
 END(cloudabi_sys_sock_shutdown)
 
-ENTRY(cloudabi_sys_sock_stat_get)
-  push %ebp
-  mov %esp, %ebp
-  mov 8(%ebp), %ecx
-  mov %ecx, -24(%ebp)
-  mov 12(%ebp), %ecx
-  mov %ecx, -16(%ebp)
-  movl $0, -12(%ebp)
-  mov 16(%ebp), %ecx
-  mov %ecx, -8(%ebp)
-  mov $51, %eax
-  mov %ebp, %ecx
-  sub $24, %ecx
-  int $0x80
-  pop %ebp
-  ret
-END(cloudabi_sys_sock_stat_get)
-
 ENTRY(cloudabi_sys_thread_create)
   push %ebp
   mov %esp, %ebp
   mov 8(%ebp), %ecx
   mov %ecx, -16(%ebp)
   movl $0, -12(%ebp)
-  mov $52, %eax
+  mov $47, %eax
   mov %ebp, %ecx
   sub $16, %ecx
   int $0x80
@@ -1171,7 +1074,7 @@ ENTRY(cloudabi_sys_thread_exit)
   movl $0, -12(%ebp)
   mov 12(%ebp), %ecx
   mov %ecx, -8(%ebp)
-  mov $53, %eax
+  mov $48, %eax
   mov %ebp, %ecx
   sub $16, %ecx
   int $0x80
@@ -1180,7 +1083,7 @@ END(cloudabi_sys_thread_exit)
 ENTRY(cloudabi_sys_thread_yield)
   push %ebp
   mov %esp, %ebp
-  mov $54, %eax
+  mov $49, %eax
   mov %ebp, %ecx
   sub $16, %ecx
   int $0x80
diff --git sys/contrib/cloudabi/cloudabi_vdso_x86_64.S sys/contrib/cloudabi/cloudabi_vdso_x86_64.S
index c68047cc6e3d..217bd1cbea0a 100644
--- sys/contrib/cloudabi/cloudabi_vdso_x86_64.S
+++ sys/contrib/cloudabi/cloudabi_vdso_x86_64.S
@@ -419,65 +419,27 @@ ENTRY(cloudabi_sys_random_get)
   ret
 END(cloudabi_sys_random_get)
 
-ENTRY(cloudabi_sys_sock_accept)
-  push %rdx
-  mov $44, %eax
-  syscall
-  pop %rcx
-  jc 1f
-  mov %eax, (%rcx)
-  xor %eax, %eax
-1:
-  ret
-END(cloudabi_sys_sock_accept)
-
-ENTRY(cloudabi_sys_sock_bind)
-  mov %rcx, %r10
-  mov $45, %eax
-  syscall
-  ret
-END(cloudabi_sys_sock_bind)
-
-ENTRY(cloudabi_sys_sock_connect)
-  mov %rcx, %r10
-  mov $46, %eax
-  syscall
-  ret
-END(cloudabi_sys_sock_connect)
-
-ENTRY(cloudabi_sys_sock_listen)
-  mov $47, %eax
-  syscall
-  ret
-END(cloudabi_sys_sock_listen)
-
 ENTRY(cloudabi_sys_sock_recv)
-  mov $48, %eax
+  mov $44, %eax
   syscall
   ret
 END(cloudabi_sys_sock_recv)
 
 ENTRY(cloudabi_sys_sock_send)
-  mov $49, %eax
+  mov $45, %eax
   syscall
   ret
 END(cloudabi_sys_sock_send)
 
 ENTRY(cloudabi_sys_sock_shutdown)
-  mov $50, %eax
+  mov $46, %eax
   syscall
   ret
 END(cloudabi_sys_sock_shutdown)
 
-ENTRY(cloudabi_sys_sock_stat_get)
-  mov $51, %eax
-  syscall
-  ret
-END(cloudabi_sys_sock_stat_get)
-
 ENTRY(cloudabi_sys_thread_create)
   push %rsi
-  mov $52, %eax
+  mov $47, %eax
   syscall
   pop %rcx
   jc 1f
@@ -488,12 +450,12 @@ ENTRY(cloudabi_sys_thread_create)
 END(cloudabi_sys_thread_create)
 
 ENTRY(cloudabi_sys_thread_exit)
-  mov $53, %eax
+  mov $48, %eax
   syscall
 END(cloudabi_sys_thread_exit)
 
 ENTRY(cloudabi_sys_thread_yield)
-  mov $54, %eax
+  mov $49, %eax
   syscall
   ret
 END(cloudabi_sys_thread_yield)
diff --git sys/contrib/cloudabi/syscalls32.master sys/contrib/cloudabi/syscalls32.master
index 02ef57f17fa4..6ed39ec7ed98 100644
--- sys/contrib/cloudabi/syscalls32.master
+++ sys/contrib/cloudabi/syscalls32.master
@@ -258,50 +258,25 @@
 					void *buf, \
 					size_t buf_len); }
 
-44	AUE_NULL	STD	{ cloudabi_fd_t cloudabi_sys_sock_accept( \
-					cloudabi_fd_t sock, \
-					void *unused); }
-
-45	AUE_NULL	STD	{ void cloudabi_sys_sock_bind( \
-					cloudabi_fd_t sock, \
-					cloudabi_fd_t fd, \
-					const char *path, \
-					size_t path_len); }
-
-46	AUE_NULL	STD	{ void cloudabi_sys_sock_connect( \
-					cloudabi_fd_t sock, \
-					cloudabi_fd_t fd, \
-					const char *path, \
-					size_t path_len); }
-
-47	AUE_NULL	STD	{ void cloudabi_sys_sock_listen( \
-					cloudabi_fd_t sock, \
-					cloudabi_backlog_t backlog); }
-
-48	AUE_NULL	STD	{ void cloudabi32_sys_sock_recv( \
+44	AUE_NULL	STD	{ void cloudabi32_sys_sock_recv( \
 					cloudabi_fd_t sock, \
 					const cloudabi32_recv_in_t *in, \
 					cloudabi32_recv_out_t *out); }
 
-49	AUE_NULL	STD	{ void cloudabi32_sys_sock_send( \
+45	AUE_NULL	STD	{ void cloudabi32_sys_sock_send( \
 					cloudabi_fd_t sock, \
 					const cloudabi32_send_in_t *in, \
 					cloudabi32_send_out_t *out); }
 
-50	AUE_NULL	STD	{ void cloudabi_sys_sock_shutdown( \
+46	AUE_NULL	STD	{ void cloudabi_sys_sock_shutdown( \
 					cloudabi_fd_t sock, \
 					cloudabi_sdflags_t how); }
 
-51	AUE_NULL	STD	{ void cloudabi_sys_sock_stat_get( \
-					cloudabi_fd_t sock, \
-					cloudabi_sockstat_t *buf, \
-					cloudabi_ssflags_t flags); }
-
-52	AUE_NULL	STD	{ cloudabi_tid_t cloudabi32_sys_thread_create( \
+47	AUE_NULL	STD	{ cloudabi_tid_t cloudabi32_sys_thread_create( \
 					cloudabi32_threadattr_t *attr); }
 
-53	AUE_NULL	STD	{ void cloudabi_sys_thread_exit( \
+48	AUE_NULL	STD	{ void cloudabi_sys_thread_exit( \
 					cloudabi_lock_t *lock, \
 					cloudabi_scope_t scope); }
 
-54	AUE_NULL	STD	{ void cloudabi_sys_thread_yield(); }
+49	AUE_NULL	STD	{ void cloudabi_sys_thread_yield(); }
diff --git sys/contrib/cloudabi/syscalls64.master sys/contrib/cloudabi/syscalls64.master
index e35863099500..81a77dcbefd1 100644
--- sys/contrib/cloudabi/syscalls64.master
+++ sys/contrib/cloudabi/syscalls64.master
@@ -258,50 +258,25 @@
 					void *buf, \
 					size_t buf_len); }
 
-44	AUE_NULL	STD	{ cloudabi_fd_t cloudabi_sys_sock_accept( \
-					cloudabi_fd_t sock, \
-					void *unused); }
-
-45	AUE_NULL	STD	{ void cloudabi_sys_sock_bind( \
-					cloudabi_fd_t sock, \
-					cloudabi_fd_t fd, \
-					const char *path, \
-					size_t path_len); }
-
-46	AUE_NULL	STD	{ void cloudabi_sys_sock_connect( \
-					cloudabi_fd_t sock, \
-					cloudabi_fd_t fd, \
-					const char *path, \
-					size_t path_len); }
-
-47	AUE_NULL	STD	{ void cloudabi_sys_sock_listen( \
-					cloudabi_fd_t sock, \
-					cloudabi_backlog_t backlog); }
-
-48	AUE_NULL	STD	{ void cloudabi64_sys_sock_recv( \
+44	AUE_NULL	STD	{ void cloudabi64_sys_sock_recv( \
 					cloudabi_fd_t sock, \
 					const cloudabi64_recv_in_t *in, \
 					cloudabi64_recv_out_t *out); }
 
-49	AUE_NULL	STD	{ void cloudabi64_sys_sock_send( \
+45	AUE_NULL	STD	{ void cloudabi64_sys_sock_send( \
 					cloudabi_fd_t sock, \
 					const cloudabi64_send_in_t *in, \
 					cloudabi64_send_out_t *out); }
 
-50	AUE_NULL	STD	{ void cloudabi_sys_sock_shutdown( \
+46	AUE_NULL	STD	{ void cloudabi_sys_sock_shutdown( \
 					cloudabi_fd_t sock, \
 					cloudabi_sdflags_t how); }
 
-51	AUE_NULL	STD	{ void cloudabi_sys_sock_stat_get( \
-					cloudabi_fd_t sock, \
-					cloudabi_sockstat_t *buf, \
-					cloudabi_ssflags_t flags); }
-
-52	AUE_NULL	STD	{ cloudabi_tid_t cloudabi64_sys_thread_create( \
+47	AUE_NULL	STD	{ cloudabi_tid_t cloudabi64_sys_thread_create( \
 					cloudabi64_threadattr_t *attr); }
 
-53	AUE_NULL	STD	{ void cloudabi_sys_thread_exit( \
+48	AUE_NULL	STD	{ void cloudabi_sys_thread_exit( \
 					cloudabi_lock_t *lock, \
 					cloudabi_scope_t scope); }
 
-54	AUE_NULL	STD	{ void cloudabi_sys_thread_yield(); }
+49	AUE_NULL	STD	{ void cloudabi_sys_thread_yield(); }
diff --git sys/contrib/dev/acpica/changes.txt sys/contrib/dev/acpica/changes.txt
index d0fe928c1acb..db25f7e5fb91 100644
--- sys/contrib/dev/acpica/changes.txt
+++ sys/contrib/dev/acpica/changes.txt
@@ -1,3 +1,52 @@
+----------------------------------------
+31 August 2017. Summary of changes for version 20170831:
+
+
+1) ACPICA kernel-resident subsystem:
+
+Implemented internal support for full 64-bit addresses that appear in all 
+Generic Address Structure (GAS) structures. Previously, only the lower 32 
+bits were used. Affects the use of GAS structures in the FADT and other 
+tables, as well as the GAS structures passed to the AcpiRead and 
+AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
+
+Added header support for the PDTT ACPI table (Processor Debug Trigger 
+Table). Full support in the iASL Data Table Compiler and disassembler is 
+forthcoming.
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 
+Properties Topology Table) where a flag bit was specified in the wrong 
+bit position ("Line Size Valid", bit 6).
+
+iASL: Implemented support for Octal integer constants as defined by the 
+ASL language grammar, per the ACPI specification. Any integer constant 
+that starts with a zero is an octal constant. For example,
+    Store (037777, Local0) /* Octal constant */
+    Store (0x3FFF, Local0) /* Hex equivalent */
+    Store (16383,  Local0) /* Decimal equivalent */
+
+iASL: Improved overflow detection for 64-bit string conversions during 
+compilation of integer constants. "Overflow" in this case means a string 
+that represents an integer that is too large to fit into a 64-bit value. 
+Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 
+the low-order 32 bits with a warning, as previously implemented. Several 
+new exceptions are defined that indicate a 64-bit overflow, as well as 
+the base (radix) that was used during the attempted conversion. Examples:
+    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
+    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
+    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
+
+iASL: Added a warning for the case where a ResourceTemplate is declared 
+with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 
+this case, the resulting template is created with a single END_TAG 
+descriptor, which is essentially useless.
+
+iASL: Expanded the -vw option (ignore specific warnings/remarks) to 
+include compilation error codes as well.
+
 ----------------------------------------
 28 July 2017. Summary of changes for version 20170728:
 
diff --git sys/contrib/dev/acpica/common/dmtbinfo.c sys/contrib/dev/acpica/common/dmtbinfo.c
index c487fcf9c8b5..48ac7859cf4c 100644
--- sys/contrib/dev/acpica/common/dmtbinfo.c
+++ sys/contrib/dev/acpica/common/dmtbinfo.c
@@ -2828,7 +2828,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt1[] =
     {ACPI_DMT_FLAG3,    ACPI_PPTT1_FLAG_OFFSET (Flags,0),           "Allocation Type valid", 0},
     {ACPI_DMT_FLAG4,    ACPI_PPTT1_FLAG_OFFSET (Flags,0),           "Cache Type valid", 0},
     {ACPI_DMT_FLAG5,    ACPI_PPTT1_FLAG_OFFSET (Flags,0),           "Write Policy valid", 0},
-    {ACPI_DMT_FLAG5,    ACPI_PPTT1_FLAG_OFFSET (Flags,0),           "Line Size valid", 0},
+    {ACPI_DMT_FLAG6,    ACPI_PPTT1_FLAG_OFFSET (Flags,0),           "Line Size valid", 0},
     {ACPI_DMT_UINT32,   ACPI_PPTT1_OFFSET (NextLevelOfCache),       "Next Level of Cache", 0},
     {ACPI_DMT_UINT32,   ACPI_PPTT1_OFFSET (Size),                   "Size", 0},
     {ACPI_DMT_UINT32,   ACPI_PPTT1_OFFSET (NumberOfSets),           "Number of Sets", 0},
diff --git sys/contrib/dev/acpica/compiler/aslcompiler.h sys/contrib/dev/acpica/compiler/aslcompiler.h
index 05069ecba7a0..fd7e7dbfee95 100644
--- sys/contrib/dev/acpica/compiler/aslcompiler.h
+++ sys/contrib/dev/acpica/compiler/aslcompiler.h
@@ -890,6 +890,11 @@ void
 TrSetOpCurrentFilename (
     ACPI_PARSE_OBJECT       *Op);
 
+void
+TrSetOpIntegerWidth (
+    ACPI_PARSE_OBJECT       *TableSignature,
+    ACPI_PARSE_OBJECT       *Revision);
+
 ACPI_PARSE_OBJECT *
 TrLinkOpChildren (
     ACPI_PARSE_OBJECT       *Op,
diff --git sys/contrib/dev/acpica/compiler/aslcompiler.l sys/contrib/dev/acpica/compiler/aslcompiler.l
index d65968e1aa20..9a1a8d1e99e7 100644
--- sys/contrib/dev/acpica/compiler/aslcompiler.l
+++ sys/contrib/dev/acpica/compiler/aslcompiler.l
@@ -195,6 +195,7 @@ count (int type);
 
 LeadNameChar                [A-Za-z_]
 DigitChar                   [0-9]
+OctalChar                   [0-7]
 HexDigitChar                [A-Fa-f0-9]
 RootChar                    [\\]
 Nothing                     []
@@ -278,8 +279,7 @@ NamePathTail                [.]{NameSeg}
     /*
      * Begin standard ASL grammar
      */
-0[xX]{HexDigitChar}+ |
-{DigitChar}+                { AslCompilerlval.i = UtDoConstant ((char *) AslCompilertext);
+[0-9][a-zA-Z0-9]*            { AslCompilerlval.i = UtDoConstant ((char *) AslCompilertext);
                                 count (1); return (PARSEOP_INTEGER); }
 
 "Include"                   { count (1); return (PARSEOP_INCLUDE); }
diff --git sys/contrib/dev/acpica/compiler/asldebug.c sys/contrib/dev/acpica/compiler/asldebug.c
index 3824a4534c0f..780d584fca2b 100644
--- sys/contrib/dev/acpica/compiler/asldebug.c
+++ sys/contrib/dev/acpica/compiler/asldebug.c
@@ -165,6 +165,10 @@ UtDumpParseOpName (
     UINT32                  Level,
     UINT32                  DataLength);
 
+static char *
+UtCreateEscapeSequences (
+    char                    *InString);
+
 
 /*******************************************************************************
  *
@@ -272,7 +276,6 @@ UtDumpStringOp (
 
 
     String = Op->Asl.Value.String;
-
     if (Op->Asl.ParseOpcode != PARSEOP_STRING_LITERAL)
     {
         /*
@@ -294,6 +297,8 @@ UtDumpStringOp (
         return;
     }
 
+    String = UtCreateEscapeSequences (String);
+
     /* Emit the ParseOp name, leaving room for the string */
 
     UtDumpParseOpName (Op, Level, strlen (String));
@@ -301,6 +306,86 @@ UtDumpStringOp (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    UtCreateEscapeSequences
+ *
+ * PARAMETERS:  InString            - ASCII string to be expanded
+ *
+ * RETURN:      Expanded string
+ *
+ * DESCRIPTION: Expand all non-printable ASCII bytes (0-0x1F) to escape
+ *              sequences. For example, hex 14 becomes \x14
+ *
+ * NOTE:        Since this function is used for debug output only, it does
+ *              not attempt to translate into the "known" escape sequences
+ *              such as \a, \f, \t, etc.
+ *
+ ******************************************************************************/
+
+static char *
+UtCreateEscapeSequences (
+    char                    *InString)
+{
+    char                    *String = InString;
+    char                    *OutString;
+    char                    *OutStringPtr;
+    UINT32                  InStringLength = 0;
+    UINT32                  EscapeCount = 0;
+
+
+    /*
+     * Determine up front how many escapes are within the string.
+     * Obtain the input string length while doing so.
+     */
+    while (*String)
+    {
+        if ((*String <= 0x1F) || (*String >= 0x7F))
+        {
+            EscapeCount++;
+        }
+
+        InStringLength++;
+        String++;
+    }
+
+    if (!EscapeCount)
+    {
+        return (InString); /* No escapes, nothing to do */
+    }
+
+    /* New string buffer, 3 extra chars per escape (4 total) */
+
+    OutString = UtLocalCalloc (InStringLength + (EscapeCount * 3));
+    OutStringPtr = OutString;
+
+    /* Convert non-ascii or non-printable chars to escape sequences */
+
+    while (*InString)
+    {
+        if ((*InString <= 0x1F) || (*InString >= 0x7F))
+        {
+            /* Insert a \x hex escape sequence */
+
+            OutStringPtr[0] = '\\';
+            OutStringPtr[1] = 'x';
+            OutStringPtr[2] = AcpiUtHexToAsciiChar (*InString, 4);
+            OutStringPtr[3] = AcpiUtHexToAsciiChar (*InString, 0);
+            OutStringPtr += 4;
+        }
+        else /* Normal ASCII character */
+        {
+            *OutStringPtr = *InString;
+            OutStringPtr++;
+        }
+
+        InString++;
+    }
+
+    return (OutString);
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    UtDumpBasicOp
diff --git sys/contrib/dev/acpica/compiler/aslerror.c sys/contrib/dev/acpica/compiler/aslerror.c
index 43696d93949d..013826e79bc7 100644
--- sys/contrib/dev/acpica/compiler/aslerror.c
+++ sys/contrib/dev/acpica/compiler/aslerror.c
@@ -757,6 +757,11 @@ AslCommonError (
     ASL_ERROR_MSG           *Enode;
 
 
+    if (AslIsExceptionIgnored (Level, MessageId))
+    {
+        return;
+    }
+
     Enode = UtLocalCalloc (sizeof (ASL_ERROR_MSG));
 
     if (ExtraMessage)
@@ -949,9 +954,9 @@ AslDisableException (
 
     MessageId = (UINT32) strtoul (MessageIdString, NULL, 0);
 
-    if ((MessageId < 2000) || (MessageId > 5999))
+    if ((MessageId < 2000) || (MessageId > 6999))
     {
-        printf ("\"%s\" is not a valid warning/remark ID\n",
+        printf ("\"%s\" is not a valid warning/remark/error ID\n",
             MessageIdString);
         return (AE_BAD_PARAMETER);
     }
@@ -1050,8 +1055,9 @@ AslIsExceptionDisabled (
 
     case ASL_WARNING:
     case ASL_REMARK:
+    case ASL_ERROR:
         /*
-         * Ignore this warning/remark if it has been disabled by
+         * Ignore this error/warning/remark if it has been disabled by
          * the user (-vw option)
          */
         EncodedMessageId = AeBuildFullExceptionCode (Level, MessageId);
@@ -1097,14 +1103,6 @@ AslError (
     ACPI_PARSE_OBJECT       *Op,
     char                    *ExtraMessage)
 {
-
-    /* Check if user wants to ignore this exception */
-
-    if (AslIsExceptionIgnored (Level, MessageId))
-    {
-        return;
-    }
-
     if (Op)
     {
         AslCommonError (Level, MessageId, Op->Asl.LineNumber,
diff --git sys/contrib/dev/acpica/compiler/aslhelp.c sys/contrib/dev/acpica/compiler/aslhelp.c
index 38e234500221..1c0278c9833f 100644
--- sys/contrib/dev/acpica/compiler/aslhelp.c
+++ sys/contrib/dev/acpica/compiler/aslhelp.c
@@ -203,7 +203,7 @@ Usage (
     ACPI_OPTION ("-ve",             "Report only errors (ignore warnings and remarks)");
     ACPI_OPTION ("-vi",             "Less verbose errors and warnings for use with IDEs");
     ACPI_OPTION ("-vr",             "Disable remarks");
-    ACPI_OPTION ("-vw <messageid>", "Disable specific warning or remark");
+    ACPI_OPTION ("-vw <messageid>", "Ignore specific error, warning or remark");
     ACPI_OPTION ("-vx <messageid>", "Expect a specific warning, remark, or error");
     ACPI_OPTION ("-w <1|2|3>",      "Set warning reporting level");
     ACPI_OPTION ("-we",             "Report warnings as errors");
diff --git sys/contrib/dev/acpica/compiler/aslmain.c sys/contrib/dev/acpica/compiler/aslmain.c
index 9c73aee267a8..3b939f5fff1d 100644
--- sys/contrib/dev/acpica/compiler/aslmain.c
+++ sys/contrib/dev/acpica/compiler/aslmain.c
@@ -386,11 +386,11 @@ AslInitialize (
 
     AcpiGbl_DmOpt_Verbose = FALSE;
 
-    /* Default integer width is 64 bits */
+    /* Default integer width is 32 bits */
 
-    AcpiGbl_IntegerBitWidth = 64;
-    AcpiGbl_IntegerNybbleWidth = 16;
-    AcpiGbl_IntegerByteWidth = 8;
+    AcpiGbl_IntegerBitWidth = 32;
+    AcpiGbl_IntegerNybbleWidth = 8;
+    AcpiGbl_IntegerByteWidth = 4;
 
     for (i = 0; i < ASL_NUM_FILES; i++)
     {
diff --git sys/contrib/dev/acpica/compiler/aslmessages.c sys/contrib/dev/acpica/compiler/aslmessages.c
index d3d28c804b38..efe7e9945c91 100644
--- sys/contrib/dev/acpica/compiler/aslmessages.c
+++ sys/contrib/dev/acpica/compiler/aslmessages.c
@@ -238,7 +238,7 @@ const char                      *AslCompilerMsgs [] =
 /*    ASL_MSG_HID_SUFFIX */                 "_HID suffix must be all hex digits",
 /*    ASL_MSG_INCLUDE_FILE_OPEN */          "Could not open include file",
 /*    ASL_MSG_INPUT_FILE_OPEN */            "Could not open input file",
-/*    ASL_MSG_INTEGER_LENGTH */             "64-bit integer in 32-bit table, truncating (DSDT or SSDT version < 2)",
+/*    ASL_MSG_INTEGER_LENGTH */             "Truncating 64-bit constant found in 32-bit table",
 /*    ASL_MSG_INTEGER_OPTIMIZATION */       "Integer optimized to single-byte AML opcode",
 /*    ASL_MSG_INTERRUPT_LIST */             "Too many interrupts (16 max)",
 /*    ASL_MSG_INTERRUPT_NUMBER */           "Invalid interrupt number (must be 0-15)",
@@ -349,7 +349,8 @@ const char                      *AslCompilerMsgs [] =
 /*    ASL_MSG_ARG_NOT_USED */               "Method Argument is never used",
 /*    ASL_MSG_CONSTANT_REQUIRED */          "Non-reducible expression",
 /*    ASL_MSG_CROSS_TABLE_SCOPE */          "Illegal open scope on external object from within DSDT",
-/*    ASL_MSG_EXCEPTION_NOT_RECEIVED */     "Expected remark, warning, or error did not occur. Message ID:"
+/*    ASL_MSG_EXCEPTION_NOT_RECEIVED */     "Expected remark, warning, or error did not occur. Message ID:",
+/*    ASL_MSG_NULL_RESOURCE_TEMPLATE */     "Empty Resource Template (END_TAG only)"
 };
 
 /* Table compiler */
diff --git sys/contrib/dev/acpica/compiler/aslmessages.h sys/contrib/dev/acpica/compiler/aslmessages.h
index 68216e5c0756..d69c05a176c6 100644
--- sys/contrib/dev/acpica/compiler/aslmessages.h
+++ sys/contrib/dev/acpica/compiler/aslmessages.h
@@ -352,6 +352,7 @@ typedef enum
     ASL_MSG_CONSTANT_REQUIRED,
     ASL_MSG_CROSS_TABLE_SCOPE,
     ASL_MSG_EXCEPTION_NOT_RECEIVED,
+    ASL_MSG_NULL_RESOURCE_TEMPLATE,
 
     /* These messages are used by the Data Table compiler only */
 
diff --git sys/contrib/dev/acpica/compiler/aslresource.c sys/contrib/dev/acpica/compiler/aslresource.c
index 7b8b7e6e81b9..32a7652fe05e 100644
--- sys/contrib/dev/acpica/compiler/aslresource.c
+++ sys/contrib/dev/acpica/compiler/aslresource.c
@@ -1148,6 +1148,14 @@ RsDoResourceTemplate (
 
     DescriptorTypeOp = ASL_GET_PEER_NODE (BufferOp);
 
+    /* DEFAULT_ARG indicates null template - ResourceTemplate(){} */
+
+    if (DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)
+    {
+        AslError (ASL_WARNING, ASL_MSG_NULL_RESOURCE_TEMPLATE,
+            DescriptorTypeOp, DescriptorTypeOp->Asl.Value.String);
+    }
+
     /*
      * Process all resource descriptors in the list
      * Note: It is assumed that the EndTag node has been automatically
diff --git sys/contrib/dev/acpica/compiler/aslrules.y sys/contrib/dev/acpica/compiler/aslrules.y
index f26ea874b3ab..3b8e4839892e 100644
--- sys/contrib/dev/acpica/compiler/aslrules.y
+++ sys/contrib/dev/acpica/compiler/aslrules.y
@@ -199,7 +199,8 @@ DefinitionBlockTerm
         String ','
         String ','
         DWordConst
-        PARSEOP_CLOSE_PAREN         {TrSetOpEndLineNumber ($<n>3); COMMENT_CAPTURE_ON;}
+        PARSEOP_CLOSE_PAREN         {TrSetOpIntegerWidth ($6,$8);
+                                        TrSetOpEndLineNumber ($<n>3); COMMENT_CAPTURE_ON;}
             '{' TermList '}'        {$$ = TrLinkOpChildren ($<n>3,7,
                                         $4,$6,$8,$10,$12,$14,$18);}
     ;
diff --git sys/contrib/dev/acpica/compiler/asltree.c sys/contrib/dev/acpica/compiler/asltree.c
index b510d59b1a7f..52e480c34610 100644
--- sys/contrib/dev/acpica/compiler/asltree.c
+++ sys/contrib/dev/acpica/compiler/asltree.c
@@ -376,6 +376,39 @@ TrSetOpCurrentFilename (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    TrSetOpIntegerWidth
+ *
+ * PARAMETERS:  Op                  - An existing parse op
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION:
+ *
+ ******************************************************************************/
+
+void
+TrSetOpIntegerWidth (
+    ACPI_PARSE_OBJECT       *TableSignatureOp,
+    ACPI_PARSE_OBJECT       *RevisionOp)
+{
+
+    /* TBD: Check table sig? (DSDT vs. SSDT) */
+
+    /* Handle command-line version override */
+
+    if (Gbl_RevisionOverride)
+    {
+        AcpiUtSetIntegerWidth (Gbl_RevisionOverride);
+    }
+    else
+    {
+        AcpiUtSetIntegerWidth ((UINT8) RevisionOp->Asl.Value.Integer);
+    }
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    TrSetOpEndLineNumber
diff --git sys/contrib/dev/acpica/compiler/aslutils.c sys/contrib/dev/acpica/compiler/aslutils.c
index e4d8eef5e6ed..e800970f8ef1 100644
--- sys/contrib/dev/acpica/compiler/aslutils.c
+++ sys/contrib/dev/acpica/compiler/aslutils.c
@@ -1004,11 +1004,11 @@ UtAttachNamepathToOwner (
  *
  * FUNCTION:    UtDoConstant
  *
- * PARAMETERS:  String              - Hexadecimal or decimal string
+ * PARAMETERS:  String              - Hex/Decimal/Octal
  *
  * RETURN:      Converted Integer
  *
- * DESCRIPTION: Convert a string to an integer, with error checking.
+ * DESCRIPTION: Convert a string to an integer, with overflow/error checking.
  *
  ******************************************************************************/
 
@@ -1017,17 +1017,20 @@ UtDoConstant (
     char                    *String)
 {
     ACPI_STATUS             Status;
-    UINT64                  Converted;
+    UINT64                  ConvertedInteger;
     char                    ErrBuf[64];
 
 
-    Status = AcpiUtStrtoul64 (String, ACPI_STRTOUL_64BIT, &Converted);
+    Status = AcpiUtStrtoul64 (String, &ConvertedInteger);
     if (ACPI_FAILURE (Status))
     {
-        sprintf (ErrBuf, "%s %s\n", "Conversion error:",
+        sprintf (ErrBuf, "While creating 64-bit constant: %s\n",
             AcpiFormatException (Status));
-        AslCompilererror (ErrBuf);
+
+        AslCommonError (ASL_ERROR, ASL_MSG_SYNTAX, Gbl_CurrentLineNumber,
+            Gbl_LogicalLineNumber, Gbl_CurrentLineOffset,
+            Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, ErrBuf);
     }
 
-    return (Converted);
+    return (ConvertedInteger);
 }
diff --git sys/contrib/dev/acpica/compiler/dtcompile.c sys/contrib/dev/acpica/compiler/dtcompile.c
index 43bc081d1fe8..b3d4fe27a5ec 100644
--- sys/contrib/dev/acpica/compiler/dtcompile.c
+++ sys/contrib/dev/acpica/compiler/dtcompile.c
@@ -319,6 +319,8 @@ DtInitialize (
         return (Status);
     }
 
+    AcpiUtSetIntegerWidth (2); /* Set width to 64 bits */
+
     Gbl_FieldList = NULL;
     Gbl_RootTable = NULL;
     Gbl_SubtableStack = NULL;
diff --git sys/contrib/dev/acpica/compiler/dtcompiler.h sys/contrib/dev/acpica/compiler/dtcompiler.h
index c2a067e5d38b..bf4a9a84b5ce 100644
--- sys/contrib/dev/acpica/compiler/dtcompiler.h
+++ sys/contrib/dev/acpica/compiler/dtcompiler.h
@@ -481,6 +481,10 @@ DtFatal (
     DT_FIELD                *FieldObject,
     char                    *ExtraMessage);
 
+UINT64
+DtDoConstant (
+    char                    *String);
+
 char*
 DtGetFieldValue (
     DT_FIELD                *Field);
diff --git sys/contrib/dev/acpica/compiler/dtfield.c sys/contrib/dev/acpica/compiler/dtfield.c
index 47641cbc7718..b22a1ae7946b 100644
--- sys/contrib/dev/acpica/compiler/dtfield.c
+++ sys/contrib/dev/acpica/compiler/dtfield.c
@@ -628,15 +628,9 @@ DtCompileFlag (
     UINT64                  Value = 0;
     UINT32                  BitLength = 1;
     UINT8                   BitPosition = 0;
-    ACPI_STATUS             Status;
 
 
-    Status = AcpiUtStrtoul64 (Field->Value,
-        (ACPI_STRTOUL_64BIT | ACPI_STRTOUL_BASE16), &Value);
-    if (ACPI_FAILURE (Status))
-    {
-        DtError (ASL_ERROR, ASL_MSG_INVALID_HEX_INTEGER, Field, NULL);
-    }
+    Value = AcpiUtImplicitStrtoul64 (Field->Value);
 
     switch (Info->Opcode)
     {
diff --git sys/contrib/dev/acpica/compiler/dtparser.y sys/contrib/dev/acpica/compiler/dtparser.y
index 84138635e121..1d6cb8e8b806 100644
--- sys/contrib/dev/acpica/compiler/dtparser.y
+++ sys/contrib/dev/acpica/compiler/dtparser.y
@@ -275,17 +275,24 @@ Expression
 
     | EXPOP_LABEL                                   { $$ = DtResolveLabel (DtParsertext);}
 
-      /* Default base for a non-prefixed integer is 16 */
+      /*
+       * All constants for the data table compiler are in hex, whether a (optional) 0x
+       * prefix is present or not. For example, these two input strings are equivalent:
+       *    1234
+       *    0x1234
+       */
 
-    | EXPOP_NUMBER                                  { AcpiUtStrtoul64 (DtParsertext, (ACPI_STRTOUL_BASE16 | ACPI_STRTOUL_64BIT), &$$);}
+      /* Non-prefixed hex number */
+
+    | EXPOP_NUMBER                                  { $$ = DtDoConstant (DtParsertext);}
 
       /* Standard hex number (0x1234) */
 
-    | EXPOP_HEX_NUMBER                              { AcpiUtStrtoul64 (DtParsertext, (ACPI_STRTOUL_BASE16 | ACPI_STRTOUL_64BIT), &$$);}
+    | EXPOP_HEX_NUMBER                              { $$ = DtDoConstant (DtParsertext);}
 
-      /* TBD: Decimal number with prefix (0d1234) - Not supported by strtoul64 at this time */
+      /* Possible TBD: Decimal number with prefix (0d1234) - Not supported this time */
 
-    | EXPOP_DECIMAL_NUMBER                          { AcpiUtStrtoul64 (DtParsertext, ACPI_STRTOUL_64BIT, &$$);}
+    | EXPOP_DECIMAL_NUMBER                          { $$ = DtDoConstant (DtParsertext);}
     ;
 %%
 
diff --git sys/contrib/dev/acpica/compiler/dtutils.c sys/contrib/dev/acpica/compiler/dtutils.c
index 031dc2e2f623..1d4e23396967 100644
--- sys/contrib/dev/acpica/compiler/dtutils.c
+++ sys/contrib/dev/acpica/compiler/dtutils.c
@@ -303,6 +303,38 @@ DtFatal (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    DtDoConstant
+ *
+ * PARAMETERS:  String              - Only hex constants are supported,
+ *                                    regardless of whether the 0x prefix
+ *                                    is used
+ *
+ * RETURN:      Converted Integer
+ *
+ * DESCRIPTION: Convert a string to an integer, with overflow/error checking.
+ *
+ ******************************************************************************/
+
+UINT64
+DtDoConstant (
+    char                    *String)
+{
+    UINT64                  ConvertedInteger;
+
+
+    /*
+     * TBD: The ImplicitStrtoul64 function does not report overflow
+     * conditions. The input string is simply truncated. If it is
+     * desired to report overflow to the table compiler, this should
+     * somehow be added here. Note: integers that are prefixed with 0x
+     * or not are both hex integers.
+     */
+    ConvertedInteger = AcpiUtImplicitStrtoul64 (String);
+    return (ConvertedInteger);
+}
+
 /******************************************************************************
  *
  * FUNCTION:    DtGetFieldValue
diff --git sys/contrib/dev/acpica/compiler/prparser.y sys/contrib/dev/acpica/compiler/prparser.y
index a6f789bb0abb..22655076c550 100644
--- sys/contrib/dev/acpica/compiler/prparser.y
+++ sys/contrib/dev/acpica/compiler/prparser.y
@@ -290,11 +290,11 @@ Expression
 
       /* Default base for a non-prefixed integer is 10 */
 
-    | EXPOP_NUMBER                                  { AcpiUtStrtoul64 (PrParsertext, ACPI_STRTOUL_64BIT, &$$);}
+    | EXPOP_NUMBER                                  { AcpiUtStrtoul64 (PrParsertext, &$$);}
 
       /* Standard hex number (0x1234) */
 
-    | EXPOP_HEX_NUMBER                              { AcpiUtStrtoul64 (PrParsertext, (ACPI_STRTOUL_BASE16 | ACPI_STRTOUL_64BIT), &$$);}
+    | EXPOP_HEX_NUMBER                              { AcpiUtStrtoul64 (PrParsertext, &$$);}
     ;
 %%
 
diff --git sys/contrib/dev/acpica/components/debugger/dbconvert.c sys/contrib/dev/acpica/components/debugger/dbconvert.c
index 4206e5cbab41..9551f4f4bdd1 100644
--- sys/contrib/dev/acpica/components/debugger/dbconvert.c
+++ sys/contrib/dev/acpica/components/debugger/dbconvert.c
@@ -429,9 +429,7 @@ AcpiDbConvertToObject (
     default:
 
         Object->Type = ACPI_TYPE_INTEGER;
-        Status = AcpiUtStrtoul64 (String,
-            (AcpiGbl_IntegerByteWidth | ACPI_STRTOUL_BASE16),
-            &Object->Integer.Value);
+        Status = AcpiUtStrtoul64 (String, &Object->Integer.Value);
         break;
     }
 
diff --git sys/contrib/dev/acpica/components/disassembler/dmresrc.c sys/contrib/dev/acpica/components/disassembler/dmresrc.c
index 260c23ffa368..461560957f4e 100644
--- sys/contrib/dev/acpica/components/disassembler/dmresrc.c
+++ sys/contrib/dev/acpica/components/disassembler/dmresrc.c
@@ -539,6 +539,20 @@ AcpiDmIsResourceTemplate (
     Aml = NextOp->Named.Data;
     BufferLength = NextOp->Common.Value.Size;
 
+    /*
+     * Any buffer smaller than one byte cannot possibly be a resource
+     * template. Two bytes could possibly be a "NULL" resource template
+     * with a lone end tag descriptor (as generated via
+     * "ResourceTemplate(){}"), but this would be an extremely unusual
+     * case, as the template would be essentially useless. The disassembler
+     * therefore does not recognize any two-byte buffer as a resource
+     * template.
+     */
+    if (BufferLength <= 2)
+    {
+        return (AE_TYPE);
+    }
+
     /*
      * Not a template if declared buffer length != actual length of the
      * intialization byte list. Because the resource macros will create
diff --git sys/contrib/dev/acpica/components/dispatcher/dswexec.c sys/contrib/dev/acpica/components/dispatcher/dswexec.c
index 9cdf756bc0ab..5b165e0afd92 100644
--- sys/contrib/dev/acpica/components/dispatcher/dswexec.c
+++ sys/contrib/dev/acpica/components/dispatcher/dswexec.c
@@ -253,7 +253,7 @@ AcpiDsGetPredicateValue (
      * object. Implicitly convert the argument if necessary.
      */
     Status = AcpiExConvertToInteger (ObjDesc, &LocalObjDesc,
-        ACPI_STRTOUL_BASE16);
+        ACPI_IMPLICIT_CONVERSION);
     if (ACPI_FAILURE (Status))
     {
         goto Cleanup;
diff --git sys/contrib/dev/acpica/components/events/evgpe.c sys/contrib/dev/acpica/components/events/evgpe.c
index f491e4b53ae4..4bbe9ad5e516 100644
--- sys/contrib/dev/acpica/components/events/evgpe.c
+++ sys/contrib/dev/acpica/components/events/evgpe.c
@@ -551,8 +551,8 @@ AcpiEvGpeDetect (
     ACPI_GPE_HANDLER_INFO   *GpeHandlerInfo;
     UINT32                  IntStatus = ACPI_INTERRUPT_NOT_HANDLED;
     UINT8                   EnabledStatusByte;
-    UINT32                  StatusReg;
-    UINT32                  EnableReg;
+    UINT64                  StatusReg;
+    UINT64                  EnableReg;
     ACPI_CPU_FLAGS          Flags;
     UINT32                  i;
     UINT32                  j;
@@ -629,7 +629,7 @@ AcpiEvGpeDetect (
                 "RunEnable=%02X, WakeEnable=%02X\n",
                 GpeRegisterInfo->BaseGpeNumber,
                 GpeRegisterInfo->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH - 1),
-                StatusReg, EnableReg,
+                (UINT32) StatusReg, (UINT32) EnableReg,
                 GpeRegisterInfo->EnableForRun,
                 GpeRegisterInfo->EnableForWake));
 
diff --git sys/contrib/dev/acpica/components/executer/exconcat.c sys/contrib/dev/acpica/components/executer/exconcat.c
index 1242af19ea67..829a98721976 100644
--- sys/contrib/dev/acpica/components/executer/exconcat.c
+++ sys/contrib/dev/acpica/components/executer/exconcat.c
@@ -274,7 +274,7 @@ AcpiExDoConcatenate (
     case ACPI_TYPE_INTEGER:
 
         Status = AcpiExConvertToInteger (LocalOperand1, &TempOperand1,
-            ACPI_STRTOUL_BASE16);
+            ACPI_IMPLICIT_CONVERSION);
         break;
 
     case ACPI_TYPE_BUFFER:
diff --git sys/contrib/dev/acpica/components/executer/exconvrt.c sys/contrib/dev/acpica/components/executer/exconvrt.c
index a56be00412e4..d084e117ef53 100644
--- sys/contrib/dev/acpica/components/executer/exconvrt.c
+++ sys/contrib/dev/acpica/components/executer/exconvrt.c
@@ -172,10 +172,10 @@ AcpiExConvertToAscii (
  *
  * FUNCTION:    AcpiExConvertToInteger
  *
- * PARAMETERS:  ObjDesc         - Object to be converted. Must be an
- *                                Integer, Buffer, or String
- *              ResultDesc      - Where the new Integer object is returned
- *              Flags           - Used for string conversion
+ * PARAMETERS:  ObjDesc             - Object to be converted. Must be an
+ *                                    Integer, Buffer, or String
+ *              ResultDesc          - Where the new Integer object is returned
+ *              ImplicitConversion  - Used for string conversion
  *
  * RETURN:      Status
  *
@@ -187,14 +187,13 @@ ACPI_STATUS
 AcpiExConvertToInteger (
     ACPI_OPERAND_OBJECT     *ObjDesc,
     ACPI_OPERAND_OBJECT     **ResultDesc,
-    UINT32                  Flags)
+    UINT32                  ImplicitConversion)
 {
     ACPI_OPERAND_OBJECT     *ReturnDesc;
     UINT8                   *Pointer;
     UINT64                  Result;
     UINT32                  i;
     UINT32                  Count;
-    ACPI_STATUS             Status;
 
 
     ACPI_FUNCTION_TRACE_PTR (ExConvertToInteger, ObjDesc);
@@ -244,12 +243,17 @@ AcpiExConvertToInteger (
          * hexadecimal as per the ACPI specification. The only exception (as
          * of ACPI 3.0) is that the ToInteger() operator allows both decimal
          * and hexadecimal strings (hex prefixed with "0x").
+         *
+         * Explicit conversion is used only by ToInteger.
+         * All other string-to-integer conversions are implicit conversions.
          */
-        Status = AcpiUtStrtoul64 (ACPI_CAST_PTR (char, Pointer),
-            (AcpiGbl_IntegerByteWidth | Flags), &Result);
-        if (ACPI_FAILURE (Status))
+        if (ImplicitConversion)
+        {
+            Result = AcpiUtImplicitStrtoul64 (ACPI_CAST_PTR (char, Pointer));
+        }
+        else
         {
-            return_ACPI_STATUS (Status);
+            Result = AcpiUtExplicitStrtoul64 (ACPI_CAST_PTR (char, Pointer));
         }
         break;
 
@@ -792,7 +796,7 @@ AcpiExConvertToTargetType (
              * a Buffer or a String to an Integer if necessary.
              */
             Status = AcpiExConvertToInteger (SourceDesc, ResultDesc,
-                ACPI_STRTOUL_BASE16);
+                ACPI_IMPLICIT_CONVERSION);
             break;
 
         case ACPI_TYPE_STRING:
diff --git sys/contrib/dev/acpica/components/executer/exmisc.c sys/contrib/dev/acpica/components/executer/exmisc.c
index 6385fc773e63..f4683ae3308f 100644
--- sys/contrib/dev/acpica/components/executer/exmisc.c
+++ sys/contrib/dev/acpica/components/executer/exmisc.c
@@ -472,7 +472,7 @@ AcpiExDoLogicalOp (
     case ACPI_TYPE_INTEGER:
 
         Status = AcpiExConvertToInteger (Operand1, &LocalOperand1,
-            ACPI_STRTOUL_BASE16);
+            ACPI_IMPLICIT_CONVERSION);
         break;
 
     case ACPI_TYPE_STRING:
diff --git sys/contrib/dev/acpica/components/executer/exresop.c sys/contrib/dev/acpica/components/executer/exresop.c
index c1a991d6f346..cb820c7638ad 100644
--- sys/contrib/dev/acpica/components/executer/exresop.c
+++ sys/contrib/dev/acpica/components/executer/exresop.c
@@ -541,7 +541,7 @@ AcpiExResolveOperands (
              * Known as "Implicit Source Operand Conversion"
              */
             Status = AcpiExConvertToInteger (ObjDesc, StackPtr,
-                ACPI_STRTOUL_BASE16);
+                ACPI_IMPLICIT_CONVERSION);
             if (ACPI_FAILURE (Status))
             {
                 if (Status == AE_TYPE)
diff --git sys/contrib/dev/acpica/components/hardware/hwgpe.c sys/contrib/dev/acpica/components/hardware/hwgpe.c
index 002f33661629..680a4a9b8ccf 100644
--- sys/contrib/dev/acpica/components/hardware/hwgpe.c
+++ sys/contrib/dev/acpica/components/hardware/hwgpe.c
@@ -217,7 +217,7 @@ AcpiHwLowSetGpe (
 {
     ACPI_GPE_REGISTER_INFO  *GpeRegisterInfo;
     ACPI_STATUS             Status = AE_OK;
-    UINT32                  EnableMask;
+    UINT64                  EnableMask;
     UINT32                  RegisterBit;
 
 
@@ -342,7 +342,7 @@ AcpiHwGetGpeStatus (
     ACPI_GPE_EVENT_INFO     *GpeEventInfo,
     ACPI_EVENT_STATUS       *EventStatus)
 {
-    UINT32                  InByte;
+    UINT64                  InByte;
     UINT32                  RegisterBit;
     ACPI_GPE_REGISTER_INFO  *GpeRegisterInfo;
     ACPI_EVENT_STATUS       LocalEventStatus = 0;
diff --git sys/contrib/dev/acpica/components/hardware/hwregs.c sys/contrib/dev/acpica/components/hardware/hwregs.c
index af4381cf7686..854bb8f37be5 100644
--- sys/contrib/dev/acpica/components/hardware/hwregs.c
+++ sys/contrib/dev/acpica/components/hardware/hwregs.c
@@ -355,9 +355,8 @@ AcpiHwValidateRegister (
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Read from either memory or IO space. This is a 32-bit max
- *              version of AcpiRead, used internally since the overhead of
- *              64-bit values is not needed.
+ * DESCRIPTION: Read from either memory or IO space. This is a 64-bit max
+ *              version of AcpiRead.
  *
  * LIMITATIONS: <These limitations also apply to AcpiHwWrite>
  *      SpaceID must be SystemMemory or SystemIO.
@@ -366,7 +365,7 @@ AcpiHwValidateRegister (
 
 ACPI_STATUS
 AcpiHwRead (
-    UINT32                  *Value,
+    UINT64                  *Value,
     ACPI_GENERIC_ADDRESS    *Reg)
 {
     UINT64                  Address;
@@ -384,18 +383,18 @@ AcpiHwRead (
 
     /* Validate contents of the GAS register */
 
-    Status = AcpiHwValidateRegister (Reg, 32, &Address);
+    Status = AcpiHwValidateRegister (Reg, 64, &Address);
     if (ACPI_FAILURE (Status))
     {
         return (Status);
     }
 
     /*
-     * Initialize entire 32-bit return value to zero, convert AccessWidth
+     * Initialize entire 64-bit return value to zero, convert AccessWidth
      * into number of bits based
      */
     *Value = 0;
-    AccessWidth = AcpiHwGetAccessBitWidth (Address, Reg, 32);
+    AccessWidth = AcpiHwGetAccessBitWidth (Address, Reg, 64);
     BitWidth = Reg->BitOffset + Reg->BitWidth;
     BitOffset = Reg->BitOffset;
 
@@ -408,7 +407,7 @@ AcpiHwRead (
     {
         if (BitOffset >= AccessWidth)
         {
-            Value32 = 0;
+            Value64 = 0;
             BitOffset -= AccessWidth;
         }
         else
@@ -418,31 +417,31 @@ AcpiHwRead (
                 Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS)
                     Address + Index * ACPI_DIV_8 (AccessWidth),
                     &Value64, AccessWidth);
-                Value32 = (UINT32) Value64;
             }
             else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
             {
                 Status = AcpiHwReadPort ((ACPI_IO_ADDRESS)
                     Address + Index * ACPI_DIV_8 (AccessWidth),
                     &Value32, AccessWidth);
+                Value64 = (UINT64) Value32;
             }
         }
 
         /*
          * Use offset style bit writes because "Index * AccessWidth" is
-         * ensured to be less than 32-bits by AcpiHwValidateRegister().
+         * ensured to be less than 64-bits by AcpiHwValidateRegister().
          */
         ACPI_SET_BITS (Value, Index * AccessWidth,
-            ACPI_MASK_BITS_ABOVE_32 (AccessWidth), Value32);
+            ACPI_MASK_BITS_ABOVE_64 (AccessWidth), Value64);
 
         BitWidth -= BitWidth > AccessWidth ? AccessWidth : BitWidth;
         Index++;
     }
 
     ACPI_DEBUG_PRINT ((ACPI_DB_IO,
-        "Read:  %8.8X width %2d from %8.8X%8.8X (%s)\n",
-        *Value, AccessWidth, ACPI_FORMAT_UINT64 (Address),
-        AcpiUtGetRegionName (Reg->SpaceId)));
+        "Read:  %8.8X%8.8X width %2d from %8.8X%8.8X (%s)\n",
+        ACPI_FORMAT_UINT64 (*Value), AccessWidth,
+        ACPI_FORMAT_UINT64 (Address), AcpiUtGetRegionName (Reg->SpaceId)));
 
     return (Status);
 }
@@ -457,15 +456,14 @@ AcpiHwRead (
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Write to either memory or IO space. This is a 32-bit max
- *              version of AcpiWrite, used internally since the overhead of
- *              64-bit values is not needed.
+ * DESCRIPTION: Write to either memory or IO space. This is a 64-bit max
+ *              version of AcpiWrite.
  *
  ******************************************************************************/
 
 ACPI_STATUS
 AcpiHwWrite (
-    UINT32                  Value,
+    UINT64                  Value,
     ACPI_GENERIC_ADDRESS    *Reg)
 {
     UINT64                  Address;
@@ -473,7 +471,6 @@ AcpiHwWrite (
     UINT32                  BitWidth;
     UINT8                   BitOffset;
     UINT64                  Value64;
-    UINT32                  Value32;
     UINT8                   Index;
     ACPI_STATUS             Status;
 
@@ -483,7 +480,7 @@ AcpiHwWrite (
 
     /* Validate contents of the GAS register */
 
-    Status = AcpiHwValidateRegister (Reg, 32, &Address);
+    Status = AcpiHwValidateRegister (Reg, 64, &Address);
     if (ACPI_FAILURE (Status))
     {
         return (Status);
@@ -491,7 +488,7 @@ AcpiHwWrite (
 
     /* Convert AccessWidth into number of bits based */
 
-    AccessWidth = AcpiHwGetAccessBitWidth (Address, Reg, 32);
+    AccessWidth = AcpiHwGetAccessBitWidth (Address, Reg, 64);
     BitWidth = Reg->BitOffset + Reg->BitWidth;
     BitOffset = Reg->BitOffset;
 
@@ -504,10 +501,10 @@ AcpiHwWrite (
     {
         /*
          * Use offset style bit reads because "Index * AccessWidth" is
-         * ensured to be less than 32-bits by AcpiHwValidateRegister().
+         * ensured to be less than 64-bits by AcpiHwValidateRegister().
          */
-        Value32 = ACPI_GET_BITS (&Value, Index * AccessWidth,
-            ACPI_MASK_BITS_ABOVE_32 (AccessWidth));
+        Value64 = ACPI_GET_BITS (&Value, Index * AccessWidth,
+            ACPI_MASK_BITS_ABOVE_64 (AccessWidth));
 
         if (BitOffset >= AccessWidth)
         {
@@ -517,7 +514,6 @@ AcpiHwWrite (
         {
             if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
             {
-                Value64 = (UINT64) Value32;
                 Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS)
                     Address + Index * ACPI_DIV_8 (AccessWidth),
                     Value64, AccessWidth);
@@ -526,7 +522,7 @@ AcpiHwWrite (
             {
                 Status = AcpiHwWritePort ((ACPI_IO_ADDRESS)
                     Address + Index * ACPI_DIV_8 (AccessWidth),
-                    Value32, AccessWidth);
+                    (UINT32) Value64, AccessWidth);
             }
         }
 
@@ -539,9 +535,9 @@ AcpiHwWrite (
     }
 
     ACPI_DEBUG_PRINT ((ACPI_DB_IO,
-        "Wrote: %8.8X width %2d   to %8.8X%8.8X (%s)\n",
-        Value, AccessWidth, ACPI_FORMAT_UINT64 (Address),
-        AcpiUtGetRegionName (Reg->SpaceId)));
+        "Wrote: %8.8X%8.8X width %2d   to %8.8X%8.8X (%s)\n",
+        ACPI_FORMAT_UINT64 (Value), AccessWidth,
+        ACPI_FORMAT_UINT64 (Address), AcpiUtGetRegionName (Reg->SpaceId)));
 
     return (Status);
 }
@@ -688,6 +684,7 @@ AcpiHwRegisterRead (
     UINT32                  *ReturnValue)
 {
     UINT32                  Value = 0;
+    UINT64                  Value64;
     ACPI_STATUS             Status;
 
 
@@ -726,12 +723,14 @@ AcpiHwRegisterRead (
 
     case ACPI_REGISTER_PM2_CONTROL:          /* 8-bit access */
 
-        Status = AcpiHwRead (&Value, &AcpiGbl_FADT.XPm2ControlBlock);
+        Status = AcpiHwRead (&Value64, &AcpiGbl_FADT.XPm2ControlBlock);
+        Value = (UINT32) Value64;
         break;
 
     case ACPI_REGISTER_PM_TIMER:             /* 32-bit access */
 
-        Status = AcpiHwRead (&Value, &AcpiGbl_FADT.XPmTimerBlock);
+        Status = AcpiHwRead (&Value64, &AcpiGbl_FADT.XPmTimerBlock);
+        Value = (UINT32) Value64;
         break;
 
     case ACPI_REGISTER_SMI_COMMAND_BLOCK:    /* 8-bit access */
@@ -749,7 +748,7 @@ AcpiHwRegisterRead (
 
     if (ACPI_SUCCESS (Status))
     {
-        *ReturnValue = Value;
+        *ReturnValue = (UINT32) Value;
     }
 
     return_ACPI_STATUS (Status);
@@ -789,6 +788,7 @@ AcpiHwRegisterWrite (
 {
     ACPI_STATUS             Status;
     UINT32                  ReadValue;
+    UINT64                  ReadValue64;
 
 
     ACPI_FUNCTION_TRACE (HwRegisterWrite);
@@ -850,11 +850,12 @@ AcpiHwRegisterWrite (
          * For control registers, all reserved bits must be preserved,
          * as per the ACPI spec.
          */
-        Status = AcpiHwRead (&ReadValue, &AcpiGbl_FADT.XPm2ControlBlock);
+        Status = AcpiHwRead (&ReadValue64, &AcpiGbl_FADT.XPm2ControlBlock);
         if (ACPI_FAILURE (Status))
         {
             goto Exit;
         }
+        ReadValue = (UINT32) ReadValue64;
 
         /* Insert the bits to be preserved */
 
@@ -910,26 +911,29 @@ AcpiHwReadMultiple (
 {
     UINT32                  ValueA = 0;
     UINT32                  ValueB = 0;
+    UINT64                  Value64;
     ACPI_STATUS             Status;
 
 
     /* The first register is always required */
 
-    Status = AcpiHwRead (&ValueA, RegisterA);
+    Status = AcpiHwRead (&Value64, RegisterA);
     if (ACPI_FAILURE (Status))
     {
         return (Status);
     }
+    ValueA = (UINT32) Value64;
 
     /* Second register is optional */
 
     if (RegisterB->Address)
     {
-        Status = AcpiHwRead (&ValueB, RegisterB);
+        Status = AcpiHwRead (&Value64, RegisterB);
         if (ACPI_FAILURE (Status))
         {
             return (Status);
         }
+        ValueB = (UINT32) Value64;
     }
 
     /*
diff --git sys/contrib/dev/acpica/components/hardware/hwtimer.c sys/contrib/dev/acpica/components/hardware/hwtimer.c
index a27c830a950e..f03ba6ac16e1 100644
--- sys/contrib/dev/acpica/components/hardware/hwtimer.c
+++ sys/contrib/dev/acpica/components/hardware/hwtimer.c
@@ -215,6 +215,7 @@ AcpiGetTimer (
     UINT32                  *Ticks)
 {
     ACPI_STATUS             Status;
+    UINT64                  TimerValue;
 
 
     ACPI_FUNCTION_TRACE (AcpiGetTimer);
@@ -232,7 +233,14 @@ AcpiGetTimer (
         return_ACPI_STATUS (AE_SUPPORT);
     }
 
-    Status = AcpiHwRead (Ticks, &AcpiGbl_FADT.XPmTimerBlock);
+    Status = AcpiHwRead (&TimerValue, &AcpiGbl_FADT.XPmTimerBlock);
+    if (ACPI_SUCCESS (Status))
+    {
+        /* ACPI PM Timer is defined to be 32 bits (PM_TMR_LEN) */
+
+        *Ticks = (UINT32) TimerValue;
+    }
+
     return_ACPI_STATUS (Status);
 }
 
diff --git sys/contrib/dev/acpica/components/hardware/hwxface.c sys/contrib/dev/acpica/components/hardware/hwxface.c
index b049114c75c1..78c2af5138e8 100644
--- sys/contrib/dev/acpica/components/hardware/hwxface.c
+++ sys/contrib/dev/acpica/components/hardware/hwxface.c
@@ -247,84 +247,14 @@ AcpiRead (
     UINT64                  *ReturnValue,
     ACPI_GENERIC_ADDRESS    *Reg)
 {
-    UINT32                  ValueLo;
-    UINT32                  ValueHi;
-    UINT32                  Width;
-    UINT64                  Address;
     ACPI_STATUS             Status;
 
 
     ACPI_FUNCTION_NAME (AcpiRead);
 
 
-    if (!ReturnValue)
-    {
-        return (AE_BAD_PARAMETER);
-    }
-
-    /* Validate contents of the GAS register. Allow 64-bit transfers */
-
-    Status = AcpiHwValidateRegister (Reg, 64, &Address);
-    if (ACPI_FAILURE (Status))
-    {
-        return (Status);
-    }
-
-    /*
-     * Two address spaces supported: Memory or I/O. PCI_Config is
-     * not supported here because the GAS structure is insufficient
-     */
-    if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
-    {
-        Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS)
-            Address, ReturnValue, Reg->BitWidth);
-        if (ACPI_FAILURE (Status))
-        {
-            return (Status);
-        }
-    }
-    else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
-    {
-        ValueLo = 0;
-        ValueHi = 0;
-
-        Width = Reg->BitWidth;
-        if (Width == 64)
-        {
-            Width = 32; /* Break into two 32-bit transfers */
-        }
-
-        Status = AcpiHwReadPort ((ACPI_IO_ADDRESS)
-            Address, &ValueLo, Width);
-        if (ACPI_FAILURE (Status))
-        {
-            return (Status);
-        }
-
-        if (Reg->BitWidth == 64)
-        {
-            /* Read the top 32 bits */
-
-            Status = AcpiHwReadPort ((ACPI_IO_ADDRESS)
-                (Address + 4), &ValueHi, 32);
-            if (ACPI_FAILURE (Status))
-            {
-                return (Status);
-            }
-        }
-
-        /* Set the return value only if status is AE_OK */
-
-        *ReturnValue = (ValueLo | ((UINT64) ValueHi << 32));
-    }
-
-    ACPI_DEBUG_PRINT ((ACPI_DB_IO,
-        "Read:  %8.8X%8.8X width %2d from %8.8X%8.8X (%s)\n",
-        ACPI_FORMAT_UINT64 (*ReturnValue), Reg->BitWidth,
-        ACPI_FORMAT_UINT64 (Address),
-        AcpiUtGetRegionName (Reg->SpaceId)));
-
-    return (AE_OK);
+    Status = AcpiHwRead (ReturnValue, Reg);
+    return (Status);
 }
 
 ACPI_EXPORT_SYMBOL (AcpiRead)
@@ -348,67 +278,13 @@ AcpiWrite (
     UINT64                  Value,
     ACPI_GENERIC_ADDRESS    *Reg)
 {
-    UINT32                  Width;
-    UINT64                  Address;
     ACPI_STATUS             Status;
 
 
     ACPI_FUNCTION_NAME (AcpiWrite);
 
 
-    /* Validate contents of the GAS register. Allow 64-bit transfers */
-
-    Status = AcpiHwValidateRegister (Reg, 64, &Address);
-    if (ACPI_FAILURE (Status))
-    {
-        return (Status);
-    }
-
-    /*
-     * Two address spaces supported: Memory or IO. PCI_Config is
-     * not supported here because the GAS structure is insufficient
-     */
-    if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
-    {
-        Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS)
-            Address, Value, Reg->BitWidth);
-        if (ACPI_FAILURE (Status))
-        {
-            return (Status);
-        }
-    }
-    else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
-    {
-        Width = Reg->BitWidth;
-        if (Width == 64)
-        {
-            Width = 32; /* Break into two 32-bit transfers */
-        }
-
-        Status = AcpiHwWritePort ((ACPI_IO_ADDRESS)
-            Address, ACPI_LODWORD (Value), Width);
-        if (ACPI_FAILURE (Status))
-        {
-            return (Status);
-        }
-
-        if (Reg->BitWidth == 64)
-        {
-            Status = AcpiHwWritePort ((ACPI_IO_ADDRESS)
-                (Address + 4), ACPI_HIDWORD (Value), 32);
-            if (ACPI_FAILURE (Status))
-            {
-                return (Status);
-            }
-        }
-    }
-
-    ACPI_DEBUG_PRINT ((ACPI_DB_IO,
-        "Wrote: %8.8X%8.8X width %2d   to %8.8X%8.8X (%s)\n",
-        ACPI_FORMAT_UINT64 (Value), Reg->BitWidth,
-        ACPI_FORMAT_UINT64 (Address),
-        AcpiUtGetRegionName (Reg->SpaceId)));
-
+    Status = AcpiHwWrite (Value, Reg);
     return (Status);
 }
 
diff --git sys/contrib/dev/acpica/components/namespace/nsconvert.c sys/contrib/dev/acpica/components/namespace/nsconvert.c
index 4ba8b5d9a3a4..75214ba8d45e 100644
--- sys/contrib/dev/acpica/components/namespace/nsconvert.c
+++ sys/contrib/dev/acpica/components/namespace/nsconvert.c
@@ -191,8 +191,7 @@ AcpiNsConvertToInteger (
 
         /* String-to-Integer conversion */
 
-        Status = AcpiUtStrtoul64 (OriginalObject->String.Pointer,
-            AcpiGbl_IntegerByteWidth, &Value);
+        Status = AcpiUtStrtoul64 (OriginalObject->String.Pointer, &Value);
         if (ACPI_FAILURE (Status))
         {
             return (Status);
diff --git sys/contrib/dev/acpica/components/tables/tbxface.c sys/contrib/dev/acpica/components/tables/tbxface.c
index 09e99eb2a0a5..da550e870fb6 100644
--- sys/contrib/dev/acpica/components/tables/tbxface.c
+++ sys/contrib/dev/acpica/components/tables/tbxface.c
@@ -300,10 +300,13 @@ AcpiReallocateRootTable (
 
 
     /*
-     * Only reallocate the root table if the host provided a static buffer
-     * for the table array in the call to AcpiInitializeTables.
+     * If there are tables unverified, it is required to reallocate the
+     * root table list to clean up invalid table entries. Otherwise only
+     * reallocate the root table list if the host provided a static buffer
+     * for the table array in the call to AcpiInitializeTables().
      */
-    if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED)
+    if ((AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) &&
+        AcpiGbl_EnableTableValidation)
     {
         return_ACPI_STATUS (AE_SUPPORT);
     }
diff --git sys/contrib/dev/acpica/components/utilities/utstrsuppt.c sys/contrib/dev/acpica/components/utilities/utstrsuppt.c
new file mode 100644
index 000000000000..667591e94541
--- /dev/null
+++ sys/contrib/dev/acpica/components/utilities/utstrsuppt.c
@@ -0,0 +1,613 @@
+/*******************************************************************************
+ *
+ * Module Name: utstrsuppt - Support functions for string-to-integer conversion
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * 1. Copyright Notice
+ *
+ * Some or all of this work - Copyright (c) 1999 - 2017, Intel Corp.
+ * All rights reserved.
+ *
+ * 2. License
+ *
+ * 2.1. This is your license from Intel Corp. under its intellectual property
+ * rights. You may have additional license terms from the party that provided
+ * you this software, covering your right to use that party's intellectual
+ * property rights.
+ *
+ * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
+ * copy of the source code appearing in this file ("Covered Code") an
+ * irrevocable, perpetual, worldwide license under Intel's copyrights in the
+ * base code distributed originally by Intel ("Original Intel Code") to copy,
+ * make derivatives, distribute, use and display any portion of the Covered
+ * Code in any form, with the right to sublicense such rights; and
+ *
+ * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
+ * license (with the right to sublicense), under only those claims of Intel
+ * patents that are infringed by the Original Intel Code, to make, use, sell,
+ * offer to sell, and import the Covered Code and derivative works thereof
+ * solely to the minimum extent necessary to exercise the above copyright
+ * license, and in no event shall the patent license extend to any additions
+ * to or modifications of the Original Intel Code. No other license or right
+ * is granted directly or by implication, estoppel or otherwise;
+ *
+ * The above copyright and patent license is granted only if the following
+ * conditions are met:
+ *
+ * 3. Conditions
+ *
+ * 3.1. Redistribution of Source with Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification with rights to further distribute source must include
+ * the above Copyright Notice, the above License, this list of Conditions,
+ * and the following Disclaimer and Export Compliance provision. In addition,
+ * Licensee must cause all Covered Code to which Licensee contributes to
+ * contain a file documenting the changes Licensee made to create that Covered
+ * Code and the date of any change. Licensee must include in that file the
+ * documentation of any changes made by any predecessor Licensee. Licensee
+ * must include a prominent statement that the modification is derived,
+ * directly or indirectly, from Original Intel Code.
+ *
+ * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification without rights to further distribute source must
+ * include the following Disclaimer and Export Compliance provision in the
+ * documentation and/or other materials provided with distribution. In
+ * addition, Licensee may not authorize further sublicense of source of any
+ * portion of the Covered Code, and must include terms to the effect that the
+ * license from Licensee to its licensee is limited to the intellectual
+ * property embodied in the software Licensee provides to its licensee, and
+ * not to intellectual property embodied in modifications its licensee may
+ * make.
+ *
+ * 3.3. Redistribution of Executable. Redistribution in executable form of any
+ * substantial portion of the Covered Code or modification must reproduce the
+ * above Copyright Notice, and the following Disclaimer and Export Compliance
+ * provision in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3.4. Intel retains all right, title, and interest in and to the Original
+ * Intel Code.
+ *
+ * 3.5. Neither the name Intel nor any other trademark owned or controlled by
+ * Intel shall be used in advertising or otherwise to promote the sale, use or
+ * other dealings in products derived from or relating to the Covered Code
+ * without prior written authorization from Intel.
+ *
+ * 4. Disclaimer and Export Compliance
+ *
+ * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
+ * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
+ * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
+ * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
+ * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
+ * PARTICULAR PURPOSE.
+ *
+ * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
+ * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
+ * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
+ * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
+ * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
+ * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
+ * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
+ * LIMITED REMEDY.
+ *
+ * 4.3. Licensee shall not export, either directly or indirectly, any of this
+ * software or system incorporating such software without first obtaining any
+ * required license or other approval from the U. S. Department of Commerce or
+ * any other agency or department of the United States Government. In the
+ * event Licensee exports any such software from the United States or
+ * re-exports any such software from a foreign destination, Licensee shall
+ * ensure that the distribution and export/re-export of the software is in
+ * compliance with all laws, regulations, orders, or other restrictions of the
+ * U.S. Export Administration Regulations. Licensee agrees that neither it nor
+ * any of its subsidiaries will export/re-export any technical data, process,
+ * software, or service, directly or indirectly, to any country for which the
+ * United States government or any agency thereof requires an export license,
+ * other governmental approval, or letter of assurance, without first obtaining
+ * such license, approval or letter.
+ *
+ *****************************************************************************
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * following license:
+ *
+ * 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,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT
+ * OWNER 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.
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ *****************************************************************************/
+
+#include <contrib/dev/acpica/include/acpi.h>
+#include <contrib/dev/acpica/include/accommon.h>
+
+#define _COMPONENT          ACPI_UTILITIES
+        ACPI_MODULE_NAME    ("utstrsuppt")
+
+
+/* Local prototypes */
+
+static ACPI_STATUS
+AcpiUtInsertDigit (
+    UINT64                  *AccumulatedValue,
+    UINT32                  Base,
+    int                     AsciiDigit);
+
+static ACPI_STATUS
+AcpiUtStrtoulMultiply64 (
+    UINT64                  Multiplicand,
+    UINT64                  Multiplier,
+    UINT64                  *OutProduct);
+
+static ACPI_STATUS
+AcpiUtStrtoulAdd64 (
+    UINT64                  Addend1,
+    UINT64                  Addend2,
+    UINT64                  *OutSum);
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtConvertOctalString
+ *
+ * PARAMETERS:  String                  - Null terminated input string
+ *              ReturnValuePtr          - Where the converted value is returned
+ *
+ * RETURN:      Status and 64-bit converted integer
+ *
+ * DESCRIPTION: Performs a base 8 conversion of the input string to an
+ *              integer value, either 32 or 64 bits.
+ *
+ * NOTE:        Maximum 64-bit unsigned octal value is 01777777777777777777777
+ *              Maximum 32-bit unsigned octal value is 037777777777
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiUtConvertOctalString (
+    char                    *String,
+    UINT64                  *ReturnValuePtr)
+{
+    UINT64                  AccumulatedValue = 0;
+    ACPI_STATUS             Status = AE_OK;
+
+
+    /* Convert each ASCII byte in the input string */
+
+    while (*String)
+    {
+        /* Character must be ASCII 0-7, otherwise terminate with no error */
+
+        if (!(ACPI_IS_OCTAL_DIGIT (*String)))
+        {
+            break;
+        }
+
+        /* Convert and insert this octal digit into the accumulator */
+
+        Status = AcpiUtInsertDigit (&AccumulatedValue, 8, *String);
+        if (ACPI_FAILURE (Status))
+        {
+            Status = AE_OCTAL_OVERFLOW;
+            break;
+        }
+
+        String++;
+    }
+
+    /* Always return the value that has been accumulated */
+
+    *ReturnValuePtr = AccumulatedValue;
+    return (Status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtConvertDecimalString
+ *
+ * PARAMETERS:  String                  - Null terminated input string
+ *              ReturnValuePtr          - Where the converted value is returned
+ *
+ * RETURN:      Status and 64-bit converted integer
+ *
+ * DESCRIPTION: Performs a base 10 conversion of the input string to an
+ *              integer value, either 32 or 64 bits.
+ *
+ * NOTE:        Maximum 64-bit unsigned decimal value is 18446744073709551615
+ *              Maximum 32-bit unsigned decimal value is 4294967295
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiUtConvertDecimalString (
+    char                    *String,
+    UINT64                  *ReturnValuePtr)
+{
+    UINT64                  AccumulatedValue = 0;
+    ACPI_STATUS             Status = AE_OK;
+
+
+    /* Convert each ASCII byte in the input string */
+
+    while (*String)
+    {
+        /* Character must be ASCII 0-9, otherwise terminate with no error */
+
+        if (!isdigit (*String))
+        {
+           break;
+        }
+
+        /* Convert and insert this decimal digit into the accumulator */
+
+        Status = AcpiUtInsertDigit (&AccumulatedValue, 10, *String);
+        if (ACPI_FAILURE (Status))
+        {
+            Status = AE_DECIMAL_OVERFLOW;
+            break;
+        }
+
+        String++;
+    }
+
+    /* Always return the value that has been accumulated */
+
+    *ReturnValuePtr = AccumulatedValue;
+    return (Status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtConvertHexString
+ *
+ * PARAMETERS:  String                  - Null terminated input string
+ *              ReturnValuePtr          - Where the converted value is returned
+ *
+ * RETURN:      Status and 64-bit converted integer
+ *
+ * DESCRIPTION: Performs a base 16 conversion of the input string to an
+ *              integer value, either 32 or 64 bits.
+ *
+ * NOTE:        Maximum 64-bit unsigned hex value is 0xFFFFFFFFFFFFFFFF
+ *              Maximum 32-bit unsigned hex value is 0xFFFFFFFF
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiUtConvertHexString (
+    char                    *String,
+    UINT64                  *ReturnValuePtr)
+{
+    UINT64                  AccumulatedValue = 0;
+    ACPI_STATUS             Status = AE_OK;
+
+
+    /* Convert each ASCII byte in the input string */
+
+    while (*String)
+    {
+        /* Must be ASCII A-F, a-f, or 0-9, otherwise terminate with no error */
+
+        if (!isxdigit (*String))
+        {
+            break;
+        }
+
+        /* Convert and insert this hex digit into the accumulator */
+
+        Status = AcpiUtInsertDigit (&AccumulatedValue, 16, *String);
+        if (ACPI_FAILURE (Status))
+        {
+            Status = AE_HEX_OVERFLOW;
+            break;
+        }
+
+        String++;
+    }
+
+    /* Always return the value that has been accumulated */
+
+    *ReturnValuePtr = AccumulatedValue;
+    return (Status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtRemoveLeadingZeros
+ *
+ * PARAMETERS:  String                  - Pointer to input ASCII string
+ *
+ * RETURN:      Next character after any leading zeros. This character may be
+ *              used by the caller to detect end-of-string.
+ *
+ * DESCRIPTION: Remove any leading zeros in the input string. Return the
+ *              next character after the final ASCII zero to enable the caller
+ *              to check for the end of the string (NULL terminator).
+ *
+ ******************************************************************************/
+
+char
+AcpiUtRemoveLeadingZeros (
+    char                    **String)
+{
+
+    while (**String == ACPI_ASCII_ZERO)
+    {
+        *String += 1;
+    }
+
+    return (**String);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtRemoveWhitespace
+ *
+ * PARAMETERS:  String                  - Pointer to input ASCII string
+ *
+ * RETURN:      Next character after any whitespace. This character may be
+ *              used by the caller to detect end-of-string.
+ *
+ * DESCRIPTION: Remove any leading whitespace in the input string. Return the
+ *              next character after the final ASCII zero to enable the caller
+ *              to check for the end of the string (NULL terminator).
+ *
+ ******************************************************************************/
+
+char
+AcpiUtRemoveWhitespace (
+    char                    **String)
+{
+
+    while (isspace ((UINT8) **String))
+    {
+        *String += 1;
+    }
+
+    return (**String);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtDetectHexPrefix
+ *
+ * PARAMETERS:  String                  - Pointer to input ASCII string
+ *
+ * RETURN:      TRUE if a "0x" prefix was found at the start of the string
+ *
+ * DESCRIPTION: Detect and remove a hex "0x" prefix
+ *
+ ******************************************************************************/
+
+BOOLEAN
+AcpiUtDetectHexPrefix (
+    char                    **String)
+{
+
+    if ((**String == ACPI_ASCII_ZERO) &&
+        (tolower ((int) *(*String + 1)) == 'x'))
+    {
+        *String += 2;        /* Go past the leading 0x */
+        return (TRUE);
+    }
+
+    return (FALSE);     /* Not a hex string */
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtDetectOctalPrefix
+ *
+ * PARAMETERS:  String                  - Pointer to input ASCII string
+ *
+ * RETURN:      True if an octal "0" prefix was found at the start of the
+ *              string
+ *
+ * DESCRIPTION: Detect and remove an octal prefix (zero)
+ *
+ ******************************************************************************/
+
+BOOLEAN
+AcpiUtDetectOctalPrefix (
+    char                    **String)
+{
+
+    if (**String == ACPI_ASCII_ZERO)
+    {
+        *String += 1;       /* Go past the leading 0 */
+        return (TRUE);
+    }
+
+    return (FALSE);     /* Not an octal string */
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtInsertDigit
+ *
+ * PARAMETERS:  AccumulatedValue        - Current value of the integer value
+ *                                        accumulator. The new value is
+ *                                        returned here.
+ *              Base                    - Radix, either 8/10/16
+ *              AsciiDigit              - ASCII single digit to be inserted
+ *
+ * RETURN:      Status and result of the convert/insert operation. The only
+ *              possible returned exception code is numeric overflow of
+ *              either the multiply or add conversion operations.
+ *
+ * DESCRIPTION: Generic conversion and insertion function for all bases:
+ *
+ *              1) Multiply the current accumulated/converted value by the
+ *              base in order to make room for the new character.
+ *
+ *              2) Convert the new character to binary and add it to the
+ *              current accumulated value.
+ *
+ *              Note: The only possible exception indicates an integer
+ *              overflow (AE_NUMERIC_OVERFLOW)
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+AcpiUtInsertDigit (
+    UINT64                  *AccumulatedValue,
+    UINT32                  Base,
+    int                     AsciiDigit)
+{
+    ACPI_STATUS             Status;
+    UINT64                  Product;
+
+
+     /* Make room in the accumulated value for the incoming digit */
+
+    Status = AcpiUtStrtoulMultiply64 (*AccumulatedValue, Base, &Product);
+    if (ACPI_FAILURE (Status))
+    {
+        return (Status);
+    }
+
+    /* Add in the new digit, and store the sum to the accumulated value */
+
+    Status = AcpiUtStrtoulAdd64 (Product, AcpiUtAsciiCharToHex (AsciiDigit),
+        AccumulatedValue);
+
+    return (Status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtStrtoulMultiply64
+ *
+ * PARAMETERS:  Multiplicand            - Current accumulated converted integer
+ *              Multiplier              - Base/Radix
+ *              OutProduct              - Where the product is returned
+ *
+ * RETURN:      Status and 64-bit product
+ *
+ * DESCRIPTION: Multiply two 64-bit values, with checking for 64-bit overflow as
+ *              well as 32-bit overflow if necessary (if the current global
+ *              integer width is 32).
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+AcpiUtStrtoulMultiply64 (
+    UINT64                  Multiplicand,
+    UINT64                  Multiplier,
+    UINT64                  *OutProduct)
+{
+    UINT64                  Product;
+
+
+    /* Exit if either operand is zero */
+
+    *OutProduct = 0;
+    if (!Multiplicand || !Multiplier)
+    {
+        return (AE_OK);
+    }
+
+    /* Check for 64-bit overflow before the actual multiplication */
+
+    if (Multiplicand > (ACPI_UINT64_MAX / Multiplier))
+    {
+        return (AE_NUMERIC_OVERFLOW);
+    }
+
+    Product = Multiplicand * Multiplier;
+
+    /* Check for 32-bit overflow if necessary */
+
+    if ((AcpiGbl_IntegerBitWidth == 32) && (Product > ACPI_UINT32_MAX))
+    {
+        return (AE_NUMERIC_OVERFLOW);
+    }
+
+    *OutProduct = Product;
+    return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtStrtoulAdd64
+ *
+ * PARAMETERS:  Addend1                 - Current accumulated converted integer
+ *              Addend2                 - New hex value/char
+ *              OutSum                  - Where sum is returned (Accumulator)
+ *
+ * RETURN:      Status and 64-bit sum
+ *
+ * DESCRIPTION: Add two 64-bit values, with checking for 64-bit overflow as
+ *              well as 32-bit overflow if necessary (if the current global
+ *              integer width is 32).
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+AcpiUtStrtoulAdd64 (
+    UINT64                  Addend1,
+    UINT64                  Addend2,
+    UINT64                  *OutSum)
+{
+    UINT64                  Sum;
+
+
+    /* Check for 64-bit overflow before the actual addition */
+
+    if ((Addend1 > 0) && (Addend2 > (ACPI_UINT64_MAX - Addend1)))
+    {
+        return (AE_NUMERIC_OVERFLOW);
+    }
+
+    Sum = Addend1 + Addend2;
+
+    /* Check for 32-bit overflow if necessary */
+
+    if ((AcpiGbl_IntegerBitWidth == 32) && (Sum > ACPI_UINT32_MAX))
+    {
+        return (AE_NUMERIC_OVERFLOW);
+    }
+
+    *OutSum = Sum;
+    return (AE_OK);
+}
diff --git sys/contrib/dev/acpica/components/utilities/utstrtoul64.c sys/contrib/dev/acpica/components/utilities/utstrtoul64.c
index faee601db19a..1e7f43028a13 100644
--- sys/contrib/dev/acpica/components/utilities/utstrtoul64.c
+++ sys/contrib/dev/acpica/components/utilities/utstrtoul64.c
@@ -1,6 +1,7 @@
 /*******************************************************************************
  *
- * Module Name: utstrtoul64 - string to 64-bit integer support
+ * Module Name: utstrtoul64 - String-to-integer conversion support for both
+ *                            64-bit and 32-bit integers
  *
  ******************************************************************************/
 
@@ -152,84 +153,47 @@
 #include <contrib/dev/acpica/include/acpi.h>
 #include <contrib/dev/acpica/include/accommon.h>
 
-
-/*******************************************************************************
- *
- * The functions in this module satisfy the need for 64-bit string-to-integer
- * conversions on both 32-bit and 64-bit platforms.
- *
- ******************************************************************************/
-
 #define _COMPONENT          ACPI_UTILITIES
         ACPI_MODULE_NAME    ("utstrtoul64")
 
-/* Local prototypes */
-
-static UINT64
-AcpiUtStrtoulBase10 (
-    char                    *String,
-    UINT32                  Flags);
-
-static UINT64
-AcpiUtStrtoulBase16 (
-    char                    *String,
-    UINT32                  Flags);
-
 
 /*******************************************************************************
  *
- * String conversion rules as written in the ACPI specification. The error
- * conditions and behavior are different depending on the type of conversion.
- *
- *
- * Implicit data type conversion: string-to-integer
- * --------------------------------------------------
- *
- * Base is always 16. This is the ACPI_STRTOUL_BASE16 case.
- *
- * Example:
- *      Add ("BA98", Arg0, Local0)
- *
- * The integer is initialized to the value zero.
- * The ASCII string is interpreted as a hexadecimal constant.
- *
- *  1)  A "0x" prefix is not allowed. However, ACPICA allows this for
- *      compatibility with previous ACPICA. (NO ERROR)
- *
- *  2)  Terminates when the size of an integer is reached (32 or 64 bits).
- *      (NO ERROR)
- *
- *  3)  The first non-hex character terminates the conversion without error.
- *      (NO ERROR)
- *
- *  4)  Conversion of a null (zero-length) string to an integer is not
- *      allowed. However, ACPICA allows this for compatibility with previous
- *      ACPICA. This conversion returns the value 0. (NO ERROR)
+ * This module contains the top-level string to 64/32-bit unsigned integer
+ * conversion functions:
  *
+ *  1) A standard strtoul() function that supports 64-bit integers, base
+ *     8/10/16, with integer overflow support. This is used mainly by the
+ *     iASL compiler, which implements tighter constraints on integer
+ *     constants than the runtime (interpreter) integer-to-string conversions.
+ *  2) Runtime "Explicit conversion" as defined in the ACPI specification.
+ *  3) Runtime "Implicit conversion" as defined in the ACPI specification.
  *
- * Explicit data type conversion:  ToInteger() with string operand
- * ---------------------------------------------------------------
+ * Current users of this module:
  *
- * Base is either 10 (default) or 16 (with 0x prefix)
- *
- * Examples:
- *      ToInteger ("1000")
- *      ToInteger ("0xABCD")
- *
- *  1)  Can be (must be) either a decimal or hexadecimal numeric string.
- *      A hex value must be prefixed by "0x" or it is interpreted as a decimal.
+ *  iASL        - Preprocessor (constants and math expressions)
+ *  iASL        - Main parser, conversion of constants to integers
+ *  iASL        - Data Table Compiler parser (constants and math expressions)
+ *  Interpreter - Implicit and explicit conversions, GPE method names
+ *  Interpreter - Repair code for return values from predefined names
+ *  Debugger    - Command line input string conversion
+ *  AcpiDump    - ACPI table physical addresses
+ *  AcpiExec    - Support for namespace overrides
  *
- *  2)  The value must not exceed the maximum of an integer value. ACPI spec
- *      states the behavior is "unpredictable", so ACPICA matches the behavior
- *      of the implicit conversion case.(NO ERROR)
+ * Notes concerning users of these interfaces:
  *
- *  3)  Behavior on the first non-hex character is not specified by the ACPI
- *      spec, so ACPICA matches the behavior of the implicit conversion case
- *      and terminates. (NO ERROR)
+ * AcpiGbl_IntegerByteWidth is used to set the 32/64 bit limit for explicit
+ * and implicit conversions. This global must be set to the proper width.
+ * For the core ACPICA code, the width depends on the DSDT version. For the
+ * AcpiUtStrtoul64 interface, all conversions are 64 bits. This interface is
+ * used primarily for iASL, where the default width is 64 bits for all parsers,
+ * but error checking is performed later to flag cases where a 64-bit constant
+ * is wrongly defined in a 32-bit DSDT/SSDT.
  *
- *  4)  A null (zero-length) string is illegal.
- *      However, ACPICA allows this for compatibility with previous ACPICA.
- *      This conversion returns the value 0. (NO ERROR)
+ * In ACPI, the only place where octal numbers are supported is within
+ * the ASL language itself. This is implemented via the main AcpiUtStrtoul64
+ * interface. According the ACPI specification, there is no ACPI runtime
+ * support (explicit/implicit) for octal string conversions.
  *
  ******************************************************************************/
 
@@ -238,261 +202,301 @@ AcpiUtStrtoulBase16 (
  *
  * FUNCTION:    AcpiUtStrtoul64
  *
- * PARAMETERS:  String                  - Null terminated input string
- *              Flags                   - Conversion info, see below
+ * PARAMETERS:  String                  - Null terminated input string,
+ *                                        must be a valid pointer
  *              ReturnValue             - Where the converted integer is
- *                                        returned
- *
- * RETURN:      Status and Converted value
+ *                                        returned. Must be a valid pointer
  *
- * DESCRIPTION: Convert a string into an unsigned value. Performs either a
- *              32-bit or 64-bit conversion, depending on the input integer
- *              size in Flags (often the current mode of the interpreter).
+ * RETURN:      Status and converted integer. Returns an exception on a
+ *              64-bit numeric overflow
  *
- * Values for Flags:
- *      ACPI_STRTOUL_32BIT      - Max integer value is 32 bits
- *      ACPI_STRTOUL_64BIT      - Max integer value is 64 bits
- *      ACPI_STRTOUL_BASE16     - Input string is hexadecimal. Default
- *                                is 10/16 based on string prefix (0x).
+ * DESCRIPTION: Convert a string into an unsigned integer. Always performs a
+ *              full 64-bit conversion, regardless of the current global
+ *              integer width. Supports Decimal, Hex, and Octal strings.
  *
- * NOTES:
- *   Negative numbers are not supported, as they are not supported by ACPI.
+ * Current users of this function:
  *
- *   Supports only base 16 or base 10 strings/values. Does not
- *   support Octal strings, as these are not supported by ACPI.
- *
- * Current users of this support:
- *
- *  Interpreter - Implicit and explicit conversions, GPE method names
- *  Debugger    - Command line input string conversion
- *  iASL        - Main parser, conversion of constants to integers
- *  iASL        - Data Table Compiler parser (constant math expressions)
- *  iASL        - Preprocessor (constant math expressions)
- *  AcpiDump    - Input table addresses
- *  AcpiExec    - Testing of the AcpiUtStrtoul64 function
- *
- * Note concerning callers:
- *   AcpiGbl_IntegerByteWidth can be used to set the 32/64 limit. If used,
- *   this global should be set to the proper width. For the core ACPICA code,
- *   this width depends on the DSDT version. For iASL, the default byte
- *   width is always 8 for the parser, but error checking is performed later
- *   to flag cases where a 64-bit constant is defined in a 32-bit DSDT/SSDT.
+ *  iASL        - Preprocessor (constants and math expressions)
+ *  iASL        - Main ASL parser, conversion of ASL constants to integers
+ *  iASL        - Data Table Compiler parser (constants and math expressions)
+ *  Interpreter - Repair code for return values from predefined names
+ *  AcpiDump    - ACPI table physical addresses
+ *  AcpiExec    - Support for namespace overrides
  *
  ******************************************************************************/
 
 ACPI_STATUS
 AcpiUtStrtoul64 (
     char                    *String,
-    UINT32                  Flags,
     UINT64                  *ReturnValue)
 {
     ACPI_STATUS             Status = AE_OK;
-    UINT32                  Base;
+    UINT8                   OriginalBitWidth;
+    UINT32                  Base = 10;          /* Default is decimal */
 
 
     ACPI_FUNCTION_TRACE_STR (UtStrtoul64, String);
 
 
-    /* Parameter validation */
-
-    if (!String || !ReturnValue)
-    {
-        return_ACPI_STATUS (AE_BAD_PARAMETER);
-    }
-
     *ReturnValue = 0;
 
-    /* Check for zero-length string, returns 0 */
+    /* A NULL return string returns a value of zero */
 
     if (*String == 0)
     {
         return_ACPI_STATUS (AE_OK);
     }
 
-    /* Skip over any white space at start of string */
-
-    while (isspace ((int) *String))
-    {
-        String++;
-    }
-
-    /* End of string? return 0 */
-
-    if (*String == 0)
+    if (!AcpiUtRemoveWhitespace (&String))
     {
         return_ACPI_STATUS (AE_OK);
     }
 
     /*
-     * 1) The "0x" prefix indicates base 16. Per the ACPI specification,
-     * the "0x" prefix is only allowed for implicit (non-strict) conversions.
-     * However, we always allow it for compatibility with older ACPICA.
+     * 1) Check for a hex constant. A "0x" prefix indicates base 16.
      */
-    if ((*String == ACPI_ASCII_ZERO) &&
-        (tolower ((int) *(String + 1)) == 'x'))
+    if (AcpiUtDetectHexPrefix (&String))
     {
-        String += 2;    /* Go past the 0x */
-        if (*String == 0)
-        {
-            return_ACPI_STATUS (AE_OK);     /* Return value 0 */
-        }
-
         Base = 16;
     }
 
-    /* 2) Force to base 16 (implicit conversion case) */
-
-    else if (Flags & ACPI_STRTOUL_BASE16)
+    /*
+     * 2) Check for an octal constant, defined to be a leading zero
+     * followed by sequence of octal digits (0-7)
+     */
+    else if (AcpiUtDetectOctalPrefix (&String))
     {
-        Base = 16;
+        Base = 8;
     }
 
-    /* 3) Default fallback is to Base 10 */
-
-    else
+    if (!AcpiUtRemoveLeadingZeros (&String))
     {
-        Base = 10;
+        return_ACPI_STATUS (AE_OK);     /* Return value 0 */
     }
 
-    /* Skip all leading zeros */
+    /*
+     * Force a full 64-bit conversion. The caller (usually iASL) must
+     * check for a 32-bit overflow later as necessary (If current mode
+     * is 32-bit, meaning a 32-bit DSDT).
+     */
+    OriginalBitWidth = AcpiGbl_IntegerBitWidth;
+    AcpiGbl_IntegerBitWidth = 64;
 
-    while (*String == ACPI_ASCII_ZERO)
+    /*
+     * Perform the base 8, 10, or 16 conversion. A 64-bit numeric overflow
+     * will return an exception (to allow iASL to flag the statement).
+     */
+    switch (Base)
     {
-        String++;
-        if (*String == 0)
-        {
-            return_ACPI_STATUS (AE_OK);     /* Return value 0 */
-        }
+    case 8:
+        Status = AcpiUtConvertOctalString (String, ReturnValue);
+        break;
+
+    case 10:
+        Status = AcpiUtConvertDecimalString (String, ReturnValue);
+        break;
+
+    case 16:
+    default:
+        Status = AcpiUtConvertHexString (String, ReturnValue);
+        break;
     }
 
-    /* Perform the base 16 or 10 conversion */
-
-    if (Base == 16)
-    {
-        *ReturnValue = AcpiUtStrtoulBase16 (String, Flags);
-    }
-    else
-    {
-        *ReturnValue = AcpiUtStrtoulBase10 (String, Flags);
-    }
+    /* Only possible exception from above is a 64-bit overflow */
 
+    AcpiGbl_IntegerBitWidth = OriginalBitWidth;
     return_ACPI_STATUS (Status);
 }
 
 
 /*******************************************************************************
  *
- * FUNCTION:    AcpiUtStrtoulBase10
+ * FUNCTION:    AcpiUtImplicitStrtoul64
+ *
+ * PARAMETERS:  String                  - Null terminated input string,
+ *                                        must be a valid pointer
+ *
+ * RETURN:      Converted integer
+ *
+ * DESCRIPTION: Perform a 64-bit conversion with restrictions placed upon
+ *              an "implicit conversion" by the ACPI specification. Used by
+ *              many ASL operators that require an integer operand, and support
+ *              an automatic (implicit) conversion from a string operand
+ *              to the final integer operand. The major restriction is that
+ *              only hex strings are supported.
+ *
+ * -----------------------------------------------------------------------------
+ *
+ * Base is always 16, either with or without the 0x prefix. Decimal and
+ * Octal strings are not supported, as per the ACPI specification.
+ *
+ * Examples (both are hex values):
+ *      Add ("BA98", Arg0, Local0)
+ *      Subtract ("0x12345678", Arg1, Local1)
+ *
+ * Conversion rules as extracted from the ACPI specification:
+ *
+ *  The converted integer is initialized to the value zero.
+ *  The ASCII string is always interpreted as a hexadecimal constant.
+ *
+ *  1)  According to the ACPI specification, a "0x" prefix is not allowed.
+ *      However, ACPICA allows this as an ACPI extension on general
+ *      principle. (NO ERROR)
+ *
+ *  2)  The conversion terminates when the size of an integer is reached
+ *      (32 or 64 bits). There are no numeric overflow conditions. (NO ERROR)
+ *
+ *  3)  The first non-hex character terminates the conversion and returns
+ *      the current accumulated value of the converted integer (NO ERROR).
  *
- * PARAMETERS:  String                  - Null terminated input string
- *              Flags                   - Conversion info
+ *  4)  Conversion of a null (zero-length) string to an integer is
+ *      technically not allowed. However, ACPICA allows this as an ACPI
+ *      extension. The conversion returns the value 0. (NO ERROR)
  *
- * RETURN:      64-bit converted integer
+ * NOTE: There are no error conditions returned by this function. At
+ * the minimum, a value of zero is returned.
  *
- * DESCRIPTION: Performs a base 10 conversion of the input string to an
- *              integer value, either 32 or 64 bits.
- *              Note: String must be valid and non-null.
+ * Current users of this function:
+ *
+ *  Interpreter - All runtime implicit conversions, as per ACPI specification
+ *  iASL        - Data Table Compiler parser (constants and math expressions)
  *
  ******************************************************************************/
 
-static UINT64
-AcpiUtStrtoulBase10 (
-    char                    *String,
-    UINT32                  Flags)
+UINT64
+AcpiUtImplicitStrtoul64 (
+    char                    *String)
 {
-    int                     AsciiDigit;
-    UINT64                  NextValue;
-    UINT64                  ReturnValue = 0;
+    UINT64                  ConvertedInteger = 0;
 
 
-    /* Main loop: convert each ASCII byte in the input string */
-
-    while (*String)
-    {
-        AsciiDigit = *String;
-        if (!isdigit (AsciiDigit))
-        {
-            /* Not ASCII 0-9, terminate */
+    ACPI_FUNCTION_TRACE_STR (UtImplicitStrtoul64, String);
 
-            goto Exit;
-        }
 
-        /* Convert and insert (add) the decimal digit */
-
-        AcpiUtShortMultiply (ReturnValue, 10, &NextValue);
-        NextValue += (AsciiDigit - ACPI_ASCII_ZERO);
-
-        /* Check for overflow (32 or 64 bit) - return current converted value */
+    if (!AcpiUtRemoveWhitespace (&String))
+    {
+        return_VALUE (0);
+    }
 
-        if (((Flags & ACPI_STRTOUL_32BIT) && (NextValue > ACPI_UINT32_MAX)) ||
-            (NextValue < ReturnValue)) /* 64-bit overflow case */
-        {
-            goto Exit;
-        }
+    /*
+     * Per the ACPI specification, only hexadecimal is supported for
+     * implicit conversions, and the "0x" prefix is "not allowed".
+     * However, allow a "0x" prefix as an ACPI extension.
+     */
+    AcpiUtDetectHexPrefix (&String);
 
-        ReturnValue = NextValue;
-        String++;
+    if (!AcpiUtRemoveLeadingZeros (&String))
+    {
+        return_VALUE (0);
     }
 
-Exit:
-    return (ReturnValue);
+    /*
+     * Ignore overflow as per the ACPI specification. This is implemented by
+     * ignoring the return status from the conversion function called below.
+     * On overflow, the input string is simply truncated.
+     */
+    AcpiUtConvertHexString (String, &ConvertedInteger);
+    return_VALUE (ConvertedInteger);
 }
 
 
 /*******************************************************************************
  *
- * FUNCTION:    AcpiUtStrtoulBase16
+ * FUNCTION:    AcpiUtExplicitStrtoul64
+ *
+ * PARAMETERS:  String                  - Null terminated input string,
+ *                                        must be a valid pointer
  *
- * PARAMETERS:  String                  - Null terminated input string
- *              Flags                   - conversion info
+ * RETURN:      Converted integer
  *
- * RETURN:      64-bit converted integer
+ * DESCRIPTION: Perform a 64-bit conversion with the restrictions placed upon
+ *              an "explicit conversion" by the ACPI specification. The
+ *              main restriction is that only hex and decimal are supported.
  *
- * DESCRIPTION: Performs a base 16 conversion of the input string to an
- *              integer value, either 32 or 64 bits.
- *              Note: String must be valid and non-null.
+ * -----------------------------------------------------------------------------
+ *
+ * Base is either 10 (default) or 16 (with 0x prefix). Octal (base 8) strings
+ * are not supported, as per the ACPI specification.
+ *
+ * Examples:
+ *      ToInteger ("1000")      Decimal
+ *      ToInteger ("0xABCD")    Hex
+ *
+ * Conversion rules as extracted from the ACPI specification:
+ *
+ *  1)  The input string is either a decimal or hexadecimal numeric string.
+ *      A hex value must be prefixed by "0x" or it is interpreted as decimal.
+ *
+ *  2)  The value must not exceed the maximum of an integer value
+ *      (32 or 64 bits). The ACPI specification states the behavior is
+ *      "unpredictable", so ACPICA matches the behavior of the implicit
+ *      conversion case. There are no numeric overflow conditions. (NO ERROR)
+ *
+ *  3)  Behavior on the first non-hex character is not defined by the ACPI
+ *      specification (for the ToInteger operator), so ACPICA matches the
+ *      behavior of the implicit conversion case. It terminates the
+ *      conversion and returns the current accumulated value of the converted
+ *      integer. (NO ERROR)
+ *
+ *  4)  Conversion of a null (zero-length) string to an integer is
+ *      technically not allowed. However, ACPICA allows this as an ACPI
+ *      extension. The conversion returns the value 0. (NO ERROR)
+ *
+ * NOTE: There are no error conditions returned by this function. At the
+ * minimum, a value of zero is returned.
+ *
+ * Current users of this function:
+ *
+ *  Interpreter - Runtime ASL ToInteger operator, as per the ACPI specification
  *
  ******************************************************************************/
 
-static UINT64
-AcpiUtStrtoulBase16 (
-    char                    *String,
-    UINT32                  Flags)
+UINT64
+AcpiUtExplicitStrtoul64 (
+    char                    *String)
 {
-    int                     AsciiDigit;
-    UINT32                  ValidDigits = 1;
-    UINT64                  ReturnValue = 0;
-
+    UINT64                  ConvertedInteger = 0;
+    UINT32                  Base = 10;          /* Default is decimal */
 
-    /* Main loop: convert each ASCII byte in the input string */
 
-    while (*String)
-    {
-        /* Check for overflow (32 or 64 bit) - return current converted value */
+    ACPI_FUNCTION_TRACE_STR (UtExplicitStrtoul64, String);
 
-        if ((ValidDigits > 16) ||
-            ((ValidDigits > 8) && (Flags & ACPI_STRTOUL_32BIT)))
-        {
-            goto Exit;
-        }
 
-        AsciiDigit = *String;
-        if (!isxdigit (AsciiDigit))
-        {
-            /* Not Hex ASCII A-F, a-f, or 0-9, terminate */
-
-            goto Exit;
-        }
+    if (!AcpiUtRemoveWhitespace (&String))
+    {
+        return_VALUE (0);
+    }
 
-        /* Convert and insert the hex digit */
+    /*
+     * Only Hex and Decimal are supported, as per the ACPI specification.
+     * A "0x" prefix indicates hex; otherwise decimal is assumed.
+     */
+    if (AcpiUtDetectHexPrefix (&String))
+    {
+        Base = 16;
+    }
 
-        AcpiUtShortShiftLeft (ReturnValue, 4, &ReturnValue);
-        ReturnValue |= AcpiUtAsciiCharToHex (AsciiDigit);
+    if (!AcpiUtRemoveLeadingZeros (&String))
+    {
+        return_VALUE (0);
+    }
 
-        String++;
-        ValidDigits++;
+    /*
+     * Ignore overflow as per the ACPI specification. This is implemented by
+     * ignoring the return status from the conversion functions called below.
+     * On overflow, the input string is simply truncated.
+     */
+    switch (Base)
+    {
+    case 10:
+    default:
+        AcpiUtConvertDecimalString (String, &ConvertedInteger);
+        break;
+
+    case 16:
+        AcpiUtConvertHexString (String, &ConvertedInteger);
+        break;
     }
 
-Exit:
-    return (ReturnValue);
+    return_VALUE (ConvertedInteger);
 }
diff --git sys/contrib/dev/acpica/include/acexcep.h sys/contrib/dev/acpica/include/acexcep.h
index 1405e41161fe..d808f275144f 100644
--- sys/contrib/dev/acpica/include/acexcep.h
+++ sys/contrib/dev/acpica/include/acexcep.h
@@ -237,8 +237,12 @@ typedef struct acpi_exception_info
 #define AE_NOT_CONFIGURED               EXCEP_ENV (0x001C)
 #define AE_ACCESS                       EXCEP_ENV (0x001D)
 #define AE_IO_ERROR                     EXCEP_ENV (0x001E)
+#define AE_NUMERIC_OVERFLOW             EXCEP_ENV (0x001F)
+#define AE_HEX_OVERFLOW                 EXCEP_ENV (0x0020)
+#define AE_DECIMAL_OVERFLOW             EXCEP_ENV (0x0021)
+#define AE_OCTAL_OVERFLOW               EXCEP_ENV (0x0022)
 
-#define AE_CODE_ENV_MAX                 0x001E
+#define AE_CODE_ENV_MAX                 0x0022
 
 
 /*
@@ -371,7 +375,11 @@ static const ACPI_EXCEPTION_INFO    AcpiGbl_ExceptionNames_Env[] =
     EXCEP_TXT ("AE_OWNER_ID_LIMIT",             "There are no more Owner IDs available for ACPI tables or control methods"),
     EXCEP_TXT ("AE_NOT_CONFIGURED",             "The interface is not part of the current subsystem configuration"),
     EXCEP_TXT ("AE_ACCESS",                     "Permission denied for the requested operation"),
-    EXCEP_TXT ("AE_IO_ERROR",                   "An I/O error occurred")
+    EXCEP_TXT ("AE_IO_ERROR",                   "An I/O error occurred"),
+    EXCEP_TXT ("AE_NUMERIC_OVERFLOW",           "Overflow during string-to-integer conversion"),
+    EXCEP_TXT ("AE_HEX_OVERFLOW",               "Overflow during ASCII hex-to-binary conversion"),
+    EXCEP_TXT ("AE_DECIMAL_OVERFLOW",           "Overflow during ASCII decimal-to-binary conversion"),
+    EXCEP_TXT ("AE_OCTAL_OVERFLOW",             "Overflow during ASCII octal-to-binary conversion")
 };
 
 static const ACPI_EXCEPTION_INFO    AcpiGbl_ExceptionNames_Pgm[] =
diff --git sys/contrib/dev/acpica/include/achware.h sys/contrib/dev/acpica/include/achware.h
index f33be8c4aad0..c3bf8f1523f9 100644
--- sys/contrib/dev/acpica/include/achware.h
+++ sys/contrib/dev/acpica/include/achware.h
@@ -185,12 +185,12 @@ AcpiHwValidateRegister (
 
 ACPI_STATUS
 AcpiHwRead (
-    UINT32                  *Value,
+    UINT64                  *Value,
     ACPI_GENERIC_ADDRESS    *Reg);
 
 ACPI_STATUS
 AcpiHwWrite (
-    UINT32                  Value,
+    UINT64                  Value,
     ACPI_GENERIC_ADDRESS    *Reg);
 
 ACPI_BIT_REGISTER_INFO *
diff --git sys/contrib/dev/acpica/include/acinterp.h sys/contrib/dev/acpica/include/acinterp.h
index dd98f01cb9a6..d68058cced55 100644
--- sys/contrib/dev/acpica/include/acinterp.h
+++ sys/contrib/dev/acpica/include/acinterp.h
@@ -214,7 +214,7 @@ ACPI_STATUS
 AcpiExConvertToInteger (
     ACPI_OPERAND_OBJECT     *ObjDesc,
     ACPI_OPERAND_OBJECT     **ResultDesc,
-    UINT32                  Flags);
+    UINT32                  ImplicitConversion);
 
 ACPI_STATUS
 AcpiExConvertToBuffer (
@@ -683,9 +683,6 @@ AcpiExStoreObjectToNode (
     ACPI_WALK_STATE         *WalkState,
     UINT8                   ImplicitConversion);
 
-#define ACPI_IMPLICIT_CONVERSION        TRUE
-#define ACPI_NO_IMPLICIT_CONVERSION     FALSE
-
 
 /*
  * exstoren - resolve/store object
diff --git sys/contrib/dev/acpica/include/acpixf.h sys/contrib/dev/acpica/include/acpixf.h
index fc486d5df21a..5f96ed3169ed 100644
--- sys/contrib/dev/acpica/include/acpixf.h
+++ sys/contrib/dev/acpica/include/acpixf.h
@@ -154,7 +154,7 @@
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20170728
+#define ACPI_CA_VERSION                 0x20170831
 
 #include <contrib/dev/acpica/include/acconfig.h>
 #include <contrib/dev/acpica/include/actypes.h>
diff --git sys/contrib/dev/acpica/include/actbl1.h sys/contrib/dev/acpica/include/actbl1.h
index da6b561a0a1a..537c33e7c3b9 100644
--- sys/contrib/dev/acpica/include/actbl1.h
+++ sys/contrib/dev/acpica/include/actbl1.h
@@ -179,6 +179,7 @@
 #define ACPI_SIG_HEST           "HEST"      /* Hardware Error Source Table */
 #define ACPI_SIG_MADT           "APIC"      /* Multiple APIC Description Table */
 #define ACPI_SIG_MSCT           "MSCT"      /* Maximum System Characteristics Table */
+#define ACPI_SIG_PDTT           "PDTT"      /* Processor Debug Trigger Table */
 #define ACPI_SIG_PPTT           "PPTT"      /* Processor Properties Topology Table */
 #define ACPI_SIG_SBST           "SBST"      /* Smart Battery Specification Table */
 #define ACPI_SIG_SLIT           "SLIT"      /* System Locality Distance Information Table */
@@ -1600,6 +1601,42 @@ typedef struct acpi_nfit_flush_address
 } ACPI_NFIT_FLUSH_ADDRESS;
 
 
+/*******************************************************************************
+ *
+ * PDTT - Processor Debug Trigger Table (ACPI 6.2)
+ *        Version 0
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_pdtt
+{
+    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
+    UINT8                   TriggerCount;
+    UINT8                   Reserved[3];
+    UINT32                  ArrayOffset;
+
+} ACPI_TABLE_PDTT;
+
+
+/*
+ * PDTT Communication Channel Identifier Structure.
+ * The number of these structures is defined by TriggerCount above,
+ * starting at ArrayOffset.
+ */
+typedef struct acpi_pdtt_channel
+{
+    UINT16                  SubChannelId;
+
+} ACPI_PDTT_CHANNEL;
+
+
+/* Mask and Flags for above */
+
+#define ACPI_PDTT_SUBCHANNEL_ID_MASK        0x00FF
+#define ACPI_PDTT_RUNTIME_TRIGGER           (1<<8)
+#define ACPI_PPTT_WAIT_COMPLETION           (1<<9)
+
+
 /*******************************************************************************
  *
  * PPTT - Processor Properties Topology Table (ACPI 6.2)
@@ -1626,7 +1663,8 @@ enum AcpiPpttType
 
 /* 0: Processor Hierarchy Node Structure */
 
-typedef struct acpi_pptt_processor {
+typedef struct acpi_pptt_processor
+{
     ACPI_SUBTABLE_HEADER    Header;
     UINT16                  Reserved;
     UINT32                  Flags;
@@ -1644,7 +1682,8 @@ typedef struct acpi_pptt_processor {
 
 /* 1: Cache Type Structure */
 
-typedef struct acpi_pptt_cache {
+typedef struct acpi_pptt_cache
+{
     ACPI_SUBTABLE_HEADER    Header;
     UINT16                  Reserved;
     UINT32                  Flags;
@@ -1676,7 +1715,8 @@ typedef struct acpi_pptt_cache {
 
 /* 2: ID Structure */
 
-typedef struct acpi_pptt_id {
+typedef struct acpi_pptt_id
+{
     ACPI_SUBTABLE_HEADER    Header;
     UINT16                  Reserved;
     UINT32                  VendorId;
diff --git sys/contrib/dev/acpica/include/actbl2.h sys/contrib/dev/acpica/include/actbl2.h
index 18cfdd465754..951d65531a33 100644
--- sys/contrib/dev/acpica/include/actbl2.h
+++ sys/contrib/dev/acpica/include/actbl2.h
@@ -1030,6 +1030,7 @@ typedef struct acpi_iort_smmu_gsi
     UINT32                  NSgIrptFlags;
     UINT32                  NSgCfgIrpt;
     UINT32                  NSgCfgIrptFlags;
+
 } ACPI_IORT_SMMU_GSI;
 
 
diff --git sys/contrib/dev/acpica/include/acutils.h sys/contrib/dev/acpica/include/acutils.h
index f6cfe0895484..ef71050c25f9 100644
--- sys/contrib/dev/acpica/include/acutils.h
+++ sys/contrib/dev/acpica/include/acutils.h
@@ -250,6 +250,10 @@ extern const char                       *AcpiGbl_PtypDecode[];
 #define ACPI_MSG_SUFFIX \
     AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber)
 
+/* Flags to indicate implicit or explicit string-to-integer conversion */
+
+#define ACPI_IMPLICIT_CONVERSION        TRUE
+#define ACPI_NO_IMPLICIT_CONVERSION     FALSE
 
 /* Types for Resource descriptor entries */
 
@@ -330,19 +334,57 @@ AcpiUtStricmp (
     char                    *String1,
     char                    *String2);
 
+
+/*
+ * utstrsuppt - string-to-integer conversion support functions
+ */
 ACPI_STATUS
-AcpiUtStrtoul64 (
+AcpiUtConvertOctalString (
     char                    *String,
-    UINT32                  Flags,
-    UINT64                  *RetInteger);
+    UINT64                  *ReturnValue);
+
+ACPI_STATUS
+AcpiUtConvertDecimalString (
+    char                    *String,
+    UINT64                  *ReturnValuePtr);
+
+ACPI_STATUS
+AcpiUtConvertHexString (
+    char                    *String,
+    UINT64                  *ReturnValuePtr);
+
+char
+AcpiUtRemoveWhitespace (
+    char                    **String);
+
+char
+AcpiUtRemoveLeadingZeros (
+    char                    **String);
+
+BOOLEAN
+AcpiUtDetectHexPrefix (
+    char                    **String);
+
+BOOLEAN
+AcpiUtDetectOctalPrefix (
+    char                    **String);
+
 
 /*
- * Values for Flags above
- * Note: LIMIT values correspond to AcpiGbl_IntegerByteWidth values (4/8)
+ * utstrtoul64 - string-to-integer conversion functions
  */
-#define ACPI_STRTOUL_32BIT          0x04    /* 4 bytes */
-#define ACPI_STRTOUL_64BIT          0x08    /* 8 bytes */
-#define ACPI_STRTOUL_BASE16         0x10    /* Default: Base10/16 */
+ACPI_STATUS
+AcpiUtStrtoul64 (
+    char                    *String,
+    UINT64                  *RetInteger);
+
+UINT64
+AcpiUtExplicitStrtoul64 (
+    char                    *String);
+
+UINT64
+AcpiUtImplicitStrtoul64 (
+    char                    *String);
 
 
 /*
diff --git sys/contrib/dev/liquidio/lio_23xx_nic.bin.uu sys/contrib/dev/liquidio/lio_23xx_nic.bin.uu
new file mode 100644
index 000000000000..ebfa95b05bf6
--- /dev/null
+++ sys/contrib/dev/liquidio/lio_23xx_nic.bin.uu
@@ -0,0 +1,28149 @@
+begin 644 lio_23xx_nic.bin
+M0TY)0S$N-BXQ``````````````!B;V]T;V-T(#!X,C$P,#`P,#`@;G5M8V]R
+M97,])"AN=6UC;W)E<RD`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````0`````A`````!-.0.<.:=4`````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````Y4KS^G]%3$8!`@$``````````````@`(`````1``#,@````T`!-*T(".
+M0@$`-``@``0`*``6`!4````!```!`!`````0``````[:E``.VI0````%````
+M@`````$`#MN8$@[:F!(.VI@``SB8``Q'D`````8```"``````0`2%(`4````
+M%```````10D`*310````!@```(!D=.51````````````````````````````
+M```'````!```````````````````````````````````````````````````
+M``````````````````````````````````````````````````!GO?_0_[\`
+M*`P``Q8`````#`+.)@````#?OP`H`^``"&>]`#``````/`(4&&>]_\B,0E:,
+M_[$`"```B"W_OP`P_[4`*/^T`"#_LP`8_[(`$!!```3_L```/`00"PP"?WID
+MA#F`/!#__#P4__`V$``)-I0`)0`0A#@`%*7X-A!``3P3$`M\$@`[-I0!`WY2
+M"<,`$(=X/!44&&9S.9``$I$\`!2E.`)0$"4\`P`@W$8```(#&"V.HE:,`D,8
+M)680``APQ2CR`+0H+0"R*"7<J```W&<``!!```,"("@M#`)^O`)@("TF,0`!
+M)`(`"!8B_^W?OP`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#@4
+MH``$`````/R````#X``(`````-RB``A\I4@!?$,(`GQ"2((``QR\``(5/`!B
+M$"4`12@E_(4```/@``@`````?(9Z`#P%``T`!C(``(`0+32E`P!\`K@'0`-X
+M``#%*"L0H``N/`4#`!1%``@\!0#_`&0P)C2E_Q``Q2@D%*``&B0"``$#X``(
+M`````!1```<`9#`F-*7_#P#%*"04H``2)`(``0/@``@`````/`4!`!1%``<\
+M!@(``&0H)GRE>@`4H``))`(``0/@``@`````%$8`!0!D$"8DI?\?`$4H)!"@
+M_^@D`@`!?((&@!1```,\!0#_`^``"```$"TTI?\0`&48)`"%("0`9!@K$&#_
+M^20"``$#X``(`````!1%``@\!0#_`&0P)C2E_T``Q2@D%*``)20"``$#X``(
+M`````!1```<`9#`F-*7_/P#%*"04H``=)`(``0/@``@`````/`4(`!1%``@\
+M!0#_`&0P)C2E_S@`Q2@D%*``$R0"``$#X``(`````#P%`@`410`(/`4`_P!D
+M,"8TI?]``,4H)!2@``DD`@`!`^``"``````\!0$`%$4`!`!D*"9\I7H`$*#_
+ML"0"``%\@@=`$$``"#P%__)\8K@`-*7]`#0&C0``12@A`*8H*Q2@_Z8D`@`!
+M?(('@!!```<\!?_R?&:X`#2E<```Q2@A+*4$`!2@_YTD`@`!!($`!SP%__)\
+M9K@`-*5L``#%*"$LI0$`%*#_E20"``%\@@<`$$``"'R"!H`\!0`-?&:X`#2E
+ME0``Q2@K$*#_C"0"``%\@@:`$$#_I0`````\`@#_-$+_0`!B&"0`@A`D`&(0
+M*Q!`_YX``````^``""0"``$`````9[W_./^_`,#_O@"X`(#P+?^Q`(``H(@M
+M_[<`L/^V`*C_M0"@_[0`F/^S`)#_L@"(#`(P7O^P`'@,`(=Z`$`@+3P%``,\
+M`Q0`)`(``?QE1<@D!20`/`,4`#P&``?\947`)`4`0#P#%``TQO___&5%N#P#
+M%`#\8$6P/`4`/S2E__X\`Q0`_&5%J#P#%`#\8D6@)`4`"(^$@8`\`Q0`_&5%
+MF#P#%`#\9D60/`,4`/QB18@\`Q0`#`"(&*QB18`00`#W/`,4``P`&#@`````
+M#`!^N``````40`"3/`(4&`P`?'*,1%=D%$``=#P$$`L,`&[6`````!1``-\\
+M`Q0`D&(!&!!``63_HP!P/`0!SCP&$`LTA!@`)`4`@&3&/M@,`+1>/!`4`!!`
+M`-C^`D8(/`8!S@!`("T``"@M#`)F8#3&&``\`Q08W&)6@#P$$`O>`T8(/`40
+M"SP&$`L\!Q`+9(0^\&2E/Q#\0P`X9,8_&`P`%Y9DYS\@*\(`!!1``&\GWO_\
+M9B(`('/>^/)F,0`8`%[P+3P7$`L\%A`+/!40"SP4$`L\$Q`+"``!<3P2$`L,
+M`C@L9@0`#-XP``!FI3]8)`8`#0P"@G0"`"`M$$``-P`````"`"`M9H4_:`P"
+M@G0D!@`/$$``3``````"`"`M9F4_>`P"@G0D!@`1$$``0@`````"`"`M9D4_
+MD`P"@G0D!@`.$$``.`````!F,0`($CX`1SP$$`O>,```/`40"V2E/S@D!@`'
+M#`*"=`(`("T40``&`@`@+20#``$\`A0`K$-%U-XP```"`"`M9N4_0`P"@G0D
+M!@`'%$``!@(`("TD`P`!/`(4&*Q#5HS>,````@`@+6;%/T@,`H)T)`8`#!!`
+M_\<"`"`M9J4_6`P"@G0D!@`-%$#_S`(`("T,`C?^``````@``5S>,```#``7
+MEF2$/GC?OP#`)`(``=^^`+C?MP"PW[8`J-^U`*#?M`"8W[,`D-^R`(C?L0"`
+MW[``>`/@``AGO0#(#`(X9&8$``X(``%O9C$`"`P",%8`````"``!:-XP```,
+M`CA&9@0`#P@``6+>,```/`00"PP`%Y9DA#Y`"``!F=^_`,`\!!`+/`40"V2$
+M/Z!DI3^P`Z`P+0P`%Y8\$!(4/`@Q+C4(-BX\`A(4K$B^,#P&$`L\!Q`+9$.^
+M,&3&/\ADYS_@9@2^H"0%`&HD`C$`#`)_UJ1B``1F!;Z@`Z`@+0P"@?"@H`!I
+M#``%I@`````,`'W8CX2!@!1`_\7?OP#`#``&L@`````40/_!W[\`P#P#%!C<
+M8E:`/`,4&-QC5WC\0P``/`(4&-Q%5H!DI`!@#`#..&2E`&@\`A08W$-6@#P"
+M%!ED0IY8/`0`"P!$("UD8P!PW$@``-Q'``C<1@`0W$4`&&1"`"#\:```_&<`
+M"/QF`!#\90`8%$3_]F1C`"`,`#[<`````!1`_Z'?OP#`#``^W@`````,`C%T
+M``````P`?>@`````$$``$#P$$`L,`!>69(1`(`@``9G?OP#`/`00"PP`%Y9D
+MA#ZH"``!F=^_`,`\!!`+#``7EF2$/_`(``&9W[\`P/^C`'`,`(=L``````P`
+M!T``````#`(Q#@`````,`(@8CX2!@!!``$??HP!PD&(!&!!``)LD!0(`#`$X
+M'"0$#``,`)3H)`0``0P`B$0\$@"O/!4``GP$`#M\A`G##`%93@``@"T,`3R.
+M/!$4`#P4`,1F4X0`-K6A@-XB1@``5!@MC&20,`($*"H0H``+`````'(5&`,F
+M$``!`$,H+0!S("T"12@M`$0@+0P`09;\H(0@"``"+MXB1@`,`)1PC&60-`P`
+M``H`````/`4`#7P$`#LTI?`5#`#`)'R$"<,D`X`!``,<N#P$0`@T8V`#-(1`
+M_SP"__```Q^X``0D.#1"`",T8P`X-(0@__QD`````A+\-$(`^-Q"```,`!`H
+M`````#P"_X`D!/__-$(!'P`"$3PT0B@]``(1.-Q#``!\@__&_$,```P`AVP`
+M````WZ,`<)!B`1@00``+/`3__PP`B!R/A(&`%$```P`````,``Z```````P"
+M,%X`````#``.@``````D$/__-(0``P`$)'ADA)P!``0GN#2$$`!\`@`[9(4`
+M('!#-#)\0@G#`&0@+0`"$3P`91@M`$0@)0!#$"7\D```_%````P`B!B/A(&`
+M$$#_XCP"_X`T0@$?``(1/#1"*#T``A$XW$,``'X#]X8(``)F_$,``#P0%!C>
+M`E:`W$,``-Q$`&#<10!H/`(4&`P`SD#\0U=X)`0``PP!.&(``"@MW@56@#P#
+M%!D\!``+9&.>6&2B`'``1"`MW$D``-Q(``C<1P`0W$8`&&1"`"#\:0``_&@`
+M"/QG`!#\9@`8%$3_]F1C`"#<H@`(/!$4`-RC`#@``"`M_B)&`#P"%``,`+=8
+M_$-&"`P",70`````#`!DX@`````(``(0``````P`3<X`````#```"@`````(
+M``)8/`+_@``````\`A(2/`02$F1"$=!DA!'09$(`!P!$$"\L0@`/$$```SP9
+M```#X``(`````&<Y```3(/_\``````,@``@`````/`02$CP"$A)DA!'09$(1
+MT`!$$"\``A#[``(?_@!B$"T``BA[%*```SP9```#X``(`````&<Y```3(/_\
+M``````,@``@`````9[W_V/^S`!@\$Q(2DF(5</^_`"#_L@`0_[$`"!1``"'_
+ML```/!(2#SP1$@\\$!(29E+:J-X"%7AF,=JP`C*(+P`1B/MF,?__`%$8*Q!@
+M``ID0@`!_@(5>``"$/A^0A(*`$#X"0````#>`A5X`%$8*Q1@__AD0@`!#``"
+MO@`````\`A`+9$(V8!!```4D`@`!/`00#@P"S9ADA)P`)`(``:)B%7#?OP`@
+MW[,`&-^R`!#?L0`(W[````/@``AGO0`H9[W_^/^_``#?OP```^``"&>]``@`
+M````/`(0"V>]__AD0C/8$$``!O^_```\!!`./`42$F2$G``,`LSV9*45@#P$
+M$@_<@MJX$$``!CP"``!D0@``$$``!-^_````0/@)9(3:N-^_```(``+.9[T`
+M"&>]__C_OP``W[\```/@``AGO0`(````````$"```!@@```@(```*"```#`@
+M```X(```0"```$@@``!0(```6"```&`@``!H(```<"```'@@``"H(```L"``
+M`+@@``#`(```R"```-`@``#8(```X"```/`@``#X(#P<$A-GG)'```#X+0.@
+M\"T\"2``0`A@``$)0"4\"00``0E`)4"(8``\"0$`1,GX`"0)__]$J0``1*D(
+M`$2I$`!$J1@`1*D@`$2I*`!$J3``1*DX`$2I0`!$J4@`1*E0`$2I6`!$J6``
+M1*EH`$2I<`!$J7@`1*F``$2IB`!$J9``1*F8`$2IH`!$J:@`1*FP`$2IN`!$
+MJ<``1*G(`$2IT`!$J=@`1*G@`$2IZ`!$J?``1*GX`&($```\&1(29SD58`P"
+M9M#_)````````#P9$A)G.15@WR0``#P9$`=G.<\8$R``!@`````#(/@)````
+M`!```!\``````````$`9>`$D!/P``R3()"0$``T`!"`\-(0`#?\D`(#_)`$`
+M_R0!@/\D`@#_)`*`_R0#`/\D`X#_)`0`_R0$@````0\```$/0!E@`#P$_[\T
+MA/__`R3()$"98``\&1`*9SG?F`,@^`D`````$````@``````````/!D0`&<Y
+M```#(/@)```````````\&1(29SD5*-\D```\&1(29SD5,-\E```\&1``9SD#
+MH`,@^`D``````````#P9$`EG.7LP`R#X"0``````````````#6>]_@`\`@#$
+M_[0!T#P4%`#_MP'HWI=&`/^_`?C_O@'P_[8!X`+B$"W_M0'8_[,!R/^R`<#_
+ML0&X_[`!L(Q"D#000`#]_Z0!J#P2$A(\%0`)9E(>,```F"T``(`M/!$4&#:U
+MH(```````Z`@+0``*"TD!@&@#`)F8'X6^`,T`JZ`<L(0`P+BN"W>X@`(V%X`
+MX8XB5HP40`$R/`00"P``N"T``'@M``!P+0``:"T``&`M``!8+0``4"T``$@M
+M``!`+0``."T``#`M```H+0``("T``!@M``#`+0`6\3@`%LBX/`(4``/9R"_<
+M0D8(`S;(+3P>`<X`&<EX-]X8:`!>^"T`61`M`_/X+61"`&@`````W%X`&-Q9
+M````?A@M_Z,`>`,9P"W<60`@`)D@+?^D`(#<60#H`+DH+?^E`4C<60$``-DP
+M+?^F`6#<60$X`/DX+?^G`9C<60$(`1E`+?^H`6C<60!``3E(+?^I`*#<60!(
+M`5E0+?^J`*C<60!0`7E8+?^K`+#<60!8`9E@+?^L`+C<60!@`;EH+?^M`,#<
+M60!H`=EP+?^N`,C<60!P`?EX+?^O`-#<60!X`%40+0+YN"T47__3_[<`V#0"
+MKH`#H"@M<L*P`]Z"1@#_N`!@`%:P+0P`*2J6Q``PWZ(``(XC5HS?M@!@_Z(!
+MH```$"W?MP`X%&``ZM^^`(C?I0`H$*```P`````40`$Q`````-^E`'@0H`#'
+M`````!1``,'?HP"`%&``R`````#?HP"($&```P`````40`$(`````-^E`#`0
+MH``#`````!1``0P`````WZ4`.!"@``,`````%$`!#`````#?I0!`$*```P``
+M```40`$@`````-^E`$@0H``#`````!1``2``````WZ4`6!"@``,`````%$`!
+M(`````#?I0!0$*```P`````40`$@`````-^E`*`0H``#`````!1``2``````
+MWZ4`J!"@``,`````%$`!(`````#?I0"P$*```P`````40`$@`````-^E`+@0
+MH``#`````!1``2``````WZ4`P!"@``,`````%$``N`````#?I0#($*```P``
+M```40`"X`````-^E`-`0H`!-`````!1``$<`````WZ4!.!"@``,`````%$``
+MI`````#?I0$($*```P`````40`"N`````-^E`6`0H``#`````!1``*X`````
+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
+M#`"QJB0%!``00``P)`0``SP%$`MDI3RH`$`P+20'!``,`,O0/`@``CP$"``,
+M`+&J)`4$`!!``#LD!``%/`40"V2E/,``0#`M)`<$``P`R]`\"``"/`0"``P`
+ML:HD!0$`$$``(20$``0\!1`+9*4\V`!`,"TD!P$`#`#+T#P(``(,`(@Z````
+M`!1```PD`P`!#`&*R#P$``$``A`K"``&D'!#`#H\!!`+/`40"V2$/&@,`GZ\
+M9*4\B"0#``'?OP```&`0+0/@``AGO0`(/`00"SP%$`MDA#QH#`)^O&2E/*@(
+M``:0)`,``3P$$`L\!1`+9(0\:`P"?KQDI3S8"``&D"0#``$\!!`+/`40"V2$
+M/&@,`GZ\9*4\F`@`!I`D`P`!`````#P$$`L\!1`+9(0\:`P"?KQDI3S`"``&
+MD"0#``$`````9[W_N/^P```D$``!_[\`0/^W`#C_M@`P_[4`*/^T`"#_LP`8
+M_[(`$`P`!C[_L0`($$``#0````#?OP!``@`0+=^W`#C?M@`PW[4`*-^T`"#?
+MLP`8W[(`$-^Q``C?L````^``"&>]`$@,`!,8`````!1``$$\!!`+#``2\@``
+M```40``W/`00"PP`%T`D$``!%$#_ZM^_`$`,`(5.`````!1`_^;?OP!`/`+_
+M@#1"`0$``A(\-$(!H-Q"``````$//!44&(ZB5V000``[/!84&#P3`#```(`M
+M9M96D"04__\\%Q0`"``&\C9SY&``````CJ)79`("$"L00``P/`/_X'X1^`,`
+M$1"X?L(0"A!`__@F$``!)`3__PP`T*P",X@M$%0`.@!`D"W>XD8``!&(N`!1
+MB"VN,@`@WX*#$!!``#D``````%*0+0```0_^0``````!#P@`!N^.HE=D````
+M`#P%$`MDA#T`#``7EF2E1%`(``;4`````#P%$`MDA#SH#``7EF2E1%#?OP!`
+MW[<`.`(`$"W?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`$@\
+M`__@)!```31C`%4``QVX-&,`#0`#'3A\`@`[?$()PS1C``@``A$\`$,0)20#
+M``'\0P``#``4<@`````40/^0``````P`9.(``(`M"``&P=^_`$`\!!`+)!``
+M`0P`%Y9DA#TH"``&P=^_`$`,`-#X``````@`!P/?@H,0`````&>]__C_OP``
+M#`"%8@`````40``%)`,``0P`?>0````````!#P``&"W?OP```&`0+0/@``AG
+MO0`(9[W_N/^_`$#_MP`X_[8`,/^U`"C_M``@_[,`&/^R`!#_L0`(&*``)?^P
+M```D%0`!/!00"P`5JCP`@(`M``"X+0``B"UFM?_X)!;__V:4/4`(``=U`*"8
+M+7[2_\:2`@`!?&,6`I('``(P:`#_`B`H+0*`("TF,0`!#``7EGQ'>@22`@`"
+MD@,``0)`@"U\8GH$,$+__Q(S``H`5[@AW@,``'QF.`$`U1`M?$(X`11`_^H`
+M0)`M"``'90``D"T``+@MW[\`0`+@*"W?M@`P/`00"]^W`#ADA#UHW[4`*-^T
+M`"#?LP`8W[(`$-^Q``C?L```"``7EF>]`$AGO?_(_[,`*'T31,+_L@`@,/(#
+M__^P`!``@(`M_[\`,/^Q`!C<@P`(C(8`#'QD2((PB0#_`-(P)@`)2,)\`O`[
+M$$#__GX%2`$D"P"`?`H`.Q"K`)D``!`M`(!0+0`)2,!\"CC$``0B`@$J2"4`
+M@%`M?2-8AB0$``'^`P`(K@8`#-X#``A\@P@&_@,`"````4\D!``!/`/__'R"
+M>P8T8P`+?(*<A@`#&WQ](NT&?4,Y!GRB2`5\PQD%_&(``"01``&6!@`(`!&*
+MO-X#``!]!0#"W@(`J'S1>`=\L4(&?&-<`B0%`@%\<=P&``4HO"0#``$`12@D
+M``,8O!"C`'4\`P`!E@4`L#1C``$R<P#_``,9?`)E*"$`0Q`D$$,`GWRQO`>.
+M`@"H?$,%@!1@`%$P0P$`_!&!`-X"`!B6!``8D@,`!'Q"2`$H8P`"%&``5WR"
+M_`9\`GM&_`*!"/D1`,@D!0`"```!3SP"%!C<0E=XD$,`#0)#&",L8@"`$$``
+M!3P"%!C<0D@8?$,9BA1@`"\D!``)``<Z@CP$``$\`A(2,.,`__Q$';`L9``$
+M$(``T"2H__\\!!0D``,8^&2$MF!\@QH*$&```V1"';``$A'X`&(0+0`%*,`D
+M"?__)*4!````("U\IO@#```8+?S)@`!Q".#R```!3XQ&``2,20```,E(*A4@
+M`*@\"?_@)`8``7!&`!@D`@!1``4HPGQ#N@9\H_X&?.,Y!GP#"`9^0\P'?`+P
+M.Q!`__X`````_0.D`'P$C`9\!/\&``0G/M^_`#``!!`KW[,`*'!"`#K?L@`@
+MW[$`&-^P`!`#X``(9[T`.`````"6!`"R`).8(1!@`$E^<?X')`(``GQ1>X;\
+M$8$`W@(`&)8$`!B2`P`$?$)(`2AC``(08/^K?(+\!B0#``$(``?A?&)[1@``
+M``!]2@G#``E(P``*&@`(``>P`&E()0````"&`@!H/`,4`-QE1@@\`P`)-&.@
+M@'P$`#M\A/@#``(Q.'"#(`,``ABX`,,8+P!B$"T``AEX`*00+0!#$"W<0P&8
+M9&,``?Q#`9B.`@"H?$,%@!1@`'0\!``!W@,`J#2$``$`!"%\`&0H)!"D`",`
+M````E@4`N"0$`@$R<P#_``0CO`!D&"0"92@A$&0`%WRQO`=\0P8`$&#_<GQ#
+M!`"6!`"Z`).8(11@_\)^<?X'?$($0!!`_VL`````)`(``0@`!]A\47N&````
+M``@`!]1\D6M&,$("`!!`_V(`````)`(``0@`!]A\47N&)`,``0@`"&1\<6M&
+M`````)8"`+#>`P"@`&(8+8QF``!H9``,:&(`!'R%^`-\27P#`25(+0`$(#Z(
+M90```24H+0`"$#Y\QAX#`*0H+0"B*"TLP@`&%$``"P`%%#HD!``4``8PN```
+M````@Q`M9(0`!(A"``!\0O@#%(;_^P"B*"T`!10Z9&0`"GRE>`,`11`M``(L
+M.GQ">`,`HB@M``44.GRE>`,`11`M.$+__Z""``$``@H"H($``-X#`*@(``A<
+MC@(`J-X#`)@\`@`!-$(D!R0%``,``A.\?&1(`0`#(`I\@D@%"``'Y/P"@1``
+M$EI`-2D`57#J"3,`"4J\-2D`4`%I2"T!24@EW2H``'U*>`$`"D@`?41X!0#)
+M,"H0P/].K$D``'P$C`8D`@`)"``('7Q$_P8(``@`9$(=L'Q#!@`08``*,$)`
+M`)8%`+C_IP```@`@+1!``$C_J``(#`!K*`````#?IP``WZ@`"-X"`*@D`P(!
+M``,;O`!#("00@P`;`````)8%`+`R<P#_E@0`LHX#`*@"92@A?+&\!P"3F"$P
+M9`(`$(```WYQ_@<D!``!?)%[AC!C`0`08``$/`,``20#``)\<7N&/`,``31C
+M``$``QE\`$,0)!1#_N<`````)`(``0@`!]A\46M&W@,`H)8"`+@`8A`MC$,`
+M`&A$``QH10`$?(;X`WRI?`,!)D@M``0@/HA&```!)C`M``4H/GQC'@,`Q"`M
+M`(4@+2QE``80H``6)`4`%``$'#ID10`*?(1X`P!D("T`!!PZ?(1X`P!D&"T`
+M`R0Z?&-X`P"#&"TX8___H*,``0`#"@*@H0``"``(V]X"`*@,`&NJ`````-^H
+M``@(``C5WZ<````#,+@`HA@M9*4`!(AC``!\8_@#%*;_^P"#("T(``D)``0<
+M.F>]_[C_MP`X?1=$PO^V`#``H+`M_[4`*`+@J"W_M``@?111@O^S`!@`X)@M
+M_[(`$`$`D"W_L````("`+?^_`$#_L0`(```!3SP"`0$PX___$*``5P!B&"5\
+M`O`[$$#__CP"__PD!`!!-$(`"P`$(SQ\!0`[``(3?'RE"<,TA`"```4R`'RB
+M.09\Q.T&?&(9!7Y1`,+\1```?D,$0@`1C;A^1`D"D@(`$'QQWL:6`P`(?I'4
+M!GR1_X808`$;?%&L!WQQ>`=P1`!O`!$=NCAC``$``Q@``(,8)!!@``\`%B@K
+M<$,`K@!E&"048``+`````-X&``!\PU@",&0(`!2``#X`8#@M``8SO@!%*",P
+MQ#``#``^V`"'("7>`@"H/`,``20%`@$T8P`!``4HO"0$``$``QE\`$4H)``$
+M(+P0I``R`$,0)!!#`%0`````C@(`J'Q#!8`48``<`````'Z2@8;Z0@#Y`F`@
+M+=X&`!@"("@M```X+20(``$,`7L\```````"$`#?OP!`W[<`.-^V`##?M0`H
+MW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`2'P"\#L40/^K/`+__`@`"9(`
+M`````````-X#`*A\9`H"$(#_XGQD"L(4@`!;)`0`098"`+``5[@A)O<``0@`
+M"7U^\?8'`````#!C#_`(``EG`&`X+0`````00P!C`````(X"`*A\0P6`%&``
+M]S!"`"#>`P"H)`("`0`"$[P`8A@D$&(`A0````".`@"H?$,&`!!@_\8`````
+MW@,`J'QD#`(0@/_"?&0,PA"``$DD!``A``0CO`!D&"0D!``!``0CO!!D`*<P
+M0H``$$#_N`(`("V6!0"X#`!KJ@"U*"$(``E^?I*!A@````#>`P"@E@(`N`!B
+M$"V,1@``:$0`#&A#``1\A?@#?&=\`P#E*"T`!"`^B$<```"G*"T``Q@^?,8>
+M`P"D*"T`HR@M+,,`!A1@``L`!1PZ)`0`%``&,+@``````((8+62$``2(8P``
+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
+M2*("`8^B`'!(H@(&CZ(`=$BB`@9((P(!?&-\`Q)``$W?OP"H`*00)M^U`*``
+M1Q`FW[0`F`!#$";?LP"0W[(`B-^Q`(#?L`!X`^``"&>]`+``````EA4`#B01
+M`!((``K,,K4/_P`%*#Q\0O@#`*(0)?^B`$@\`A`A2*)"`#P"__](H@(!CZ(`
+M2$BB`@:/H@!,2*("!D@I`@$`%:PX?2E\`P*C&"4\`A`A_Z,`4$BB0@`\`O__
+M2*("`8^B`%!(H@(&CZ(`5$BB`@9(*@(!```X+7U*?`,0@/^I-`C__P`&,#P\
+M`A`A_Z8`6$BB0@`\`O__2*("`8^B`%A(H@(&CZ(`7$BB`@9(*`(!"``+AGT(
+M?`,``````2<X)M^U`*``ZE`FW[0`F`%(0";?LP"0`0(0)M^R`(@`11`FW[$`
+M@`!#$";?L`!X,$+__P/@``AGO0"P``````%)$";?M0"@`$@0)M^T`)@`11`F
+MW[,`D`!$$";?L@"(`$,0)M^Q`(`P0O__W[``>`/@``AGO0"P"``*PP``@"VD
+M@``@```0+0"`&"TD"0`_)`@!`-QE```D1@!`9&,`"!"@``5PIS@D``<X``$G
+M.",`XA`AI((`(##"__\42/_U``````/@``@``````````*"``"(``!`M)`4`
+M('R"&@H48``%9$(`"!1%__P``````^``"``````D`@`!`^``"*""`"(`````
+M`(`P+0"`&"T``!`M)`D`(-QH``!\HCH*9$(`"`$'."7\9P``%$G_^F1C``BD
+M@``@```0+20)`#\D"`$`W,,``"1%`$!DQ@`($&``!7!G."0`!S@``2<X(P#B
+M$"&D@@`@,*+__Q1(__4D!0`@H(``(@``$"U\@AH*%&``!61"``@41?_\````
+M``/@``@`````)`(``0/@``B@@@`B``````"`,"T`@!@M```0+20)`"#<:```
+M?*(Z"F1"``@!!S@D_&<``!1)__ID8P`(I(``(```$"TD"0`_)`@!`-S#```D
+M10!`9,8`"!!@``5P9S@D``<X``$G.",`XA`AI((`(#"B__\42/_U)`4`(*"`
+M`"(``!`M?((:"A1@``5D0@`(%$7__``````#X``(`````"0"``$#X``(H((`
+M(@````!GO?>8```H+6>D!@`D!@(`_[\(8/^^"%C_MPA0/!<4`/^V"$@``+`M
+M_[4(0/^T"#C_LP@P_[((*/^Q""`,`F9@_[`(&&>D!````"@M#`)F8"0&`@``
+M`"@M)`8"``P"9F!GI`(``Z`@+0``*"T,`F9@)`8"`#P%`/\\`O_P-*7_/SP$
+M``TT0@`C0`9X`#2$EP``Q2@D``(2_'"D("JOI`@```#(+0@`#+,T7@#XW0(`
+M"``$)WQ\0@]"``(7?!!$`",`````)SD``20"`0`3(@`29M8(`-[H1@`T`JZ`
+M<R(0`X^C"``!`D`MC1,````3H;MR@@!N`&(0)!!`_^PD!``#_0`$."<Y``']
+M``1`)`(!`!<B__!FU@@````!#]^_"&#?O@A8W[<(4-^V"$C?M0A`W[0(.-^S
+M"##?L@@HW[$((-^P"!@#X``(9[T(:'P%^#O=#`RHW1`$2``,$"<`K!@K`*(0
+M+0"L8"\`0V`+`@P0*Q!`_]3_I0@(W08$.!#``&S_I@@0D0(`-Q!``&D\`A0`
+M/!+^,=Q'1@@\`@'/-$*Z"#92Y@`\!0`)/!@``0#B."UE"02H9ZL&`&>J!``"
+MQS@M``!H+32EH(!F50(`-QB&H-TN````\A`M9.;^````("W<0P```$40+11&
+M__T`@R`MW2\"``"`B"T`]1`M```8+=Q&````11`M%$?__0!F&"T1X``%`&`0
+M+0!O,"L4P`%1``````!O&"\1P``%_2("``".$"L40`%.``````".("\1@``)
+M_3$``'!P&`-PD"`#`&P`'P&``?0``!@2`(P`'P&``?0``"`2``0P*P`#$"L`
+MPA`D$$``\@``````9``?`(`!]-T&!&C=!`1X_68``/U$`````!`2+$0'T!2`
+M`.P`````+$,/H!!@``5D0_!@)`,`"/UC``#]0P``9$/P8"QC#Z`08``%9$/@
+MP"0#``;]8P``_4,``&1#X,`L8P^@$&``!61#T2`D`P`$_6,``/U#``!D0]$@
+M+&,?0!!@`10L0DX@)`(``OUB``#]0@``D0(`-R6M``%E*0`(96L`"&5*``@!
+MHA`J%$#_J63G``A\`O@[WZ,("`!#$"L40`$L`````'P"^#L`0Q`OW0,$0!!@
+M`2+?HP@0D0,`-A!@`&D\`Q0`/!'^,=QD1@@\`P'/-&.^"#8QY@`\&``!`$Q@
+M+0"#("T\`P`)904(J`.@,"UGIP(``L0@+0``2"TT8Z"`9C("`#<8AJ`D%0`(
+M`````-RN````D1`M9(W^````6"W<2@```$,0+11-__T!:E@M$<``!0%@4"T!
+M;A`K%$``^0`````!;E@OW*X"``"2$"W\J@````!0+=Q-````0Q`M%$3__0%-
+M4"T1P``%`4`0+0%.:"L5H`#N``````%.4"\1@``)_*("`'%04`-Q<%@#`4P`
+M'P&``?0``%`2`6P`'P&``?0``%@2``MH*P`*$"L!HA`D$$``D``````!2P`?
+M`6`!]-T-!(#="P1X_.T``/S+`````!`2+$L'T!5@`(H`````+$H/H!%```)D
+M2O!@_/4``"U*#Z`10``#_-4``"0*``;\Z@``9$K@P"0+``8M2@^@$4```_S+
+M```D"@`$_.H``&1*T2`D"P`$+4H?0!%``*_\RP``)`(``OSB``#\P@``D0(`
+M-B4I``%DI0`(9,8`"&3G``@!(A`J%$#_K&2$``@R9``_%(``!```$"V-`PST
+MC0(-``!B$".1#0`W/`X4&-W#5WC`90)T%*#__B0%``'@90)T$*#_^P`````\
+M!?^``!2C0#2E`1\"A"`E``4I/`!-&"$TI2@M`$,8*@`%*3C\I```W*0``!!@
+M`&4\!O^```(4>#3&`1\``"@M``8PO"0*`1@TQ@0!)`___P`&,;@\"0`"`$88
+M+63&`&`(``X$`$8@+0.F,"W<P@8`W,L$`-QG``!\['@"`$Q@*Q&```0``#`M
+M?.;X`P!&,"L`!C<\``M8/'R'D@(!8E@E_(L``!#J`$X`````<$)X,WQGD@)]
+MXH0&`$80)?QB```0Z@`[`````"2E``$`:1@M$*T`/`")("W=`@1`$$#_X@`%
+M,/C=!P0X`Z8P+13@`#_<P@(`"``-Z]S+````````W00$:-T"!'C]9```_4(`
+M``!X$"L00`!6+&(K\Q1`_RP`````W60``)T/#+C=0@``C0X,O`````!D8]0.
+M`(\@+2QF*_,0P/_\`<(0%/UD```(``U"_4(``-T+!(#=`@1X_.L``/S"```!
+M6!`K$$``,RU"*_,40/^+`````-SK``"=#PS`W,(``(T.#+P`````94K4#@%O
+M6"TM32OS$:#__`'"$!3\ZP``"``-M_S"``#?P@``)*4``0!I&"T4K?_&`(D@
+M+=W"5W@```%/K$`"=````4_?H@@("``,K_T"#*C?QP``"``-^G!">#/<RP8`
+MW,<``-S&!```2V`K`6P0"P#'6"L`RS@*"``-ZP#@6"T40/[O)`(``?UB```(
+M``U"_4(````/>"<(``T(`&\8+0`.<"<(``T.`(X@+=T*!(C=`@1P_.H```@`
+M#;?\P@``)`H``BQ"3B`40/]2_,H``"0"``'\X@``"``-M_S"``#=`P1@W0($
+M</UC```(``U"_4(````.<"<(``UX`6Y8+0`.<"<(``V&`4Y0+11@_THR9``_
+MWZ(("`@`#*_]`@RH?`/X.]^D"`@`!!`G"``-40!B$"T`````9[W_@/^_`'C_
+MO@!P_[<`:/^V`&#_M0!8_[0`4/^S`$C_L@!`_[$`./^P`#!\`_@[/`(4`#P>
+M%!C_HP`(`&`P+=_%5VC<0T6(CX2!@/^&@OAPHQ@##`"((/Q#18@40`&'````
+M``P`AVP\%/^`#`"(1C:4`0%\`P`[?&,)PP`4ICBOHP`$/`,`_S1C_S\VE``#
+M0`1X`/^@`"``@Q@DKZ,`$```B"T``(`M/!44`#P6%```%*0X`````)."@P`P
+M0@#_%$``!0````"3@H,!,$(`_Q!```:?@H&`)C$``20"``(2(@%1`````)^"
+M@8`D`P`!``(0^`!4$"W\0P``#`"(((^$@8`40`"X``````P`B!2/A(&`%$``
+MIMZC1@!\$_@[?`+P.Q!`__Z/HP`$/`+__#1"``L``A-\?&(Y!MQ"```$0`!'
+M`````'Q72`$2X`!$)`/__P+@D"U\<O_&WD0`&'R$2`$0@``#```0+0"`$"U\
+M8O_&S$```)^$@8`\`P`)WL)&"#1CH(!P@Q@#`$,8+=QB``!D0@`!_&(``-Y#
+M``!\8E@",$0(``!`."TPA/__$(```@!`*"TP10_P``,;OB0&`@`P8S```*,H
+M)1"F`(H`````WD4`&'RE2`$0H``$``!`+0"@0"TD!?__?*C_QA"```(P0@_P
+M`$`X+0#C&"4D8_\`+&,`@!1@`'\`````WD(`$`1``'P`````#`!Q^`)`("T`
+M````/`(08@`0'\,T0DW3<@(0`P`"$;\`0Q`C``(8@``"(<``@Q@C`&(0(0`"
+M$,`"`A`C%$#_ER80``%\$O@[#`"(6@````"/HP`0/`(`#31"!`@08@#U````
+M``P`B!2/A(&`$$``$M^D`"#?PE=H`D08+]^$@"!P@A`#/`0(,32$)ND`!"0X
+M-(1XU0`$)+ADA/?/``(0^@!$`!T``!`0``(1.@!B$"L00`#:``````P`B""/
+MA(&`$$``)9^$@8#?HP`(`D,0*Q1``,H``[@G`D.X+_^W`!@,``Q^``````P`
+M&'@`````W\)7:-^F`!@``AAX``(1>`!#$"\`PA`K%$``$Y^$@8`\`Q0`C&)%
+MU!!```4\!!0`_[(`"(R"1=`00``+GX2!@/^R``@,``.\`N`@+0P`A;@"X"`M
+M#`"&B@+@("T,``6T`N`@+9^$@8`\`@`PWJ-&`#1"Y&``@A`M``(0N`!B$"V,
+M4@`@?`/X.]^"@Q`00``,`'.8+P!2$"T```$/"``.KG!3`!D\`@#$`&(0+8Q$
+MD#`,`)0NC$60-`@`#L<`````#`#0^`````#?@H,0`%(0+0```0\(``ZN<%,`
+M&0P`A-8`````"``.PP`````,`C!B`D`@+0@`#PL\`A!BW0(`""0#``$``B\^
+M$*,`"GQ&-0(,`'WF`D`@+1!`_X``````#`"4L`)`("T(``\+/`(08@`````\
+M`Q`+``80^&1C0%!\8A(*`$``"``````,`&RL`D`@+8Y"`*@$0`!^``````P`
+M)+X"0"`M"``/"SP"$&(`````W04`$`)`("T``#`M#`!9%'[W2`%\`P`[```!
+M3SP"_X!\8PG#-$(!*0`"$CQ\8CD&_%<```@`#PL\`A!B`````)97`$X"0"`M
+MCD<`J``7N``,`&RL_Z<`*-^G`"@2X``,)N/__P)`$"TD!O__)`7__]Q$`$#<
+M0@"8```!3W!&`!D```%/)&/__Q1E__D`@!`M!.#_10`````,`3=4`D`@+0@`
+M#PL\`A!B#`!,X@)`("T(``\+/`(08MY$`#`,`>2`?O=(`7P#`#L```%//`+_
+M@'QC"<,T0@$I``(5^#1"``$``A1X?&(Y!OQ7```(``\+/`(08@`````,`>L<
+M`D`@+0@`#PL\`A!B#``OA@)`("T(``\+/`(08@P`2&X"0"`M"``/"SP"$&(,
+M`"YJ`D`@+0@`#PL\`A!B#``P"`)`("T(``\+/`(08@P`+?("0"`M"``/"SP"
+M$&(,`"H8`D`@+0@`#PL\`A!B#``JH@)`("T(``\+/`(08@P`0QX"0"`M"``/
+M"SP"$&(,`'1(`D`@+0@`#PL\`A!B`D,@+_^D`!@(``\_`E>X+0P`K+(`````
+M"``.NY^"@8`,`##&``````P`3)@"0"`M"``/-?^R`"`,`)3N``````@`#R``
+M````WD(`F````4\D`___<$,`&0```4\(``\+/`(08@P`AF8`````#`!NQ@``
+M```,`$#\``````@`#ID``````````&>]_[`\`P#$_[(`$#P2%`#>0D8`_[\`
+M2/^^`$#_MP`X`$,8+?^V`##_M0`H_[0`(/^S`!C_L0`(_[```)1CD"(08`!-
+M)!:``3P5__``%K2X-K4`(S;68`$`%:WX`L"@+3:U!$,`%K1X`!2D^#;6(`4`
+M%:TX-I2*`0``@"TT%ZZ``!:S>#:U`$@(`!!O`!2B^##F`/\D!P$``.8H"R0'
+M(```YB`+,$(`/SP(__``HB@M-0@`(P`%*C@`"$+\`+4H+34(`/@`HR@E`&@X
+M)=RB```D!@`!)A```3!"`#\`@B`M``0@^`"4("T`@Q@EW&(``'S"M8=\PH0'
+M_&(``-Y"1@#<XP``/`,`Q`!#&"V48Y`B`@,8*A!@`!G?OP!(<A<8`P!#$"V4
+M40`P#`$X9@(@("T"("`M#`$X>@!`F"T"8"`M#`$X8@!`*"U^(PL#``,9/"0%
+M`@``=B`EW(8``"0$0`!\QA@"R,#_RC#'``(``"`M"``040``*"W?OP!(W[X`
+M0-^W`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`%`0H``-
+M```0+7RC/`,P8P#_+&,``A1@``1\I3`#`^``""0"``$`````)(0`?C"E`/\4
+MI/_Z``````/@``@`````/`,4&-QB5W@00``'<(<3<L!%`G04H/_^)`4``>!%
+M`G00H/_[`````#P"_X!PA@$R-$(!'P`"$3PT0B@M``(1./Q'``!D0@U@`,(P
+M+=S"``!\13P#,*4`_P`%*"L4H``$)(@`?CP"``%]`C`'_,(``-QF5W@0P``$
+M`````````4^LP`)T```!3Q2@`!_<95=X?$8T`GQ".`(`!"-\$*``!W!&$`/`
+MI@)T%,#__B0&``'@I@)T$,#_^P`````\!O^```(4>#3&`1\`P"@M``8V.``%
+M*3PTQ@`!-*4H+0`&-#@`1A`M``4I./RG``#\1```W&)7>!!```0````````!
+M3ZQ``G0```%/`^``"`````!GO?_H_[````"`@"W_OP`0#`&72O^Q``@2```5
+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
+MW[,`.-^R`##?L0`HW[``(`/@``AGO0!@<$)X\F1C2!!\8A(*`$``"``````D
+M`H`!/`7_\``"%+@\!!`,W(2/P#1"8`,``A>X-*4`(WP#`#M\8PG#-$(`,``#
+M&3P`!2K\_Z0```!B$"7\0```-*4`^-Y&1@``92@EW*0``#P#`,3<1P`````@
+M+0##,"T`!S@_K,>1F"0&``C\1@``/`<0`-RE``!DYT)(W$(``#P&%`#>148`
+M_,=&B#P'$````A`_9.="B`"C&"T\!A0`K&*1G`P`$*+\QT:`#``0HB0$``$\
+M"!0`90@``-Y*1@`\!`##-(20````&"TD!O__)`4`"`%$("T`@!`MK$8``"1C
+M``$49?_]9$(`!(T&```8P``3/`,`KCP)``(T8X0``0`H+0%#&"T``!`M-2FA
+M@`````",I@`(9*4`!*Q@`$BL9@```&D8+:R"```D0@`!C08```!&."H4X/_V
+M9(0`!#P"`,0\!!`+`4)0+62$1H"M1I`P`Z`H+8T"``0,`!>6K4*0-`@`$XP`
+M`!`M)`(`31#"`'$`````)`(S`*>B``0\`DY)-$)#,J^B```D`H`!/`3_\``"
+M%+@TA``C-$)@`P`$(OP``A>X-(0`^'P#`#M\8PG#-$(`,``#&3P\!A```&(0
+M)0!D&"7\0```9,9"2-QC`````"`MW$,``#P"%`#>148`_$9&B#P"`,0``Q@_
+M`*(0+:Q#D9@\`Q``9&-"B#P"%``,`!"B_$-&@`P`$*(D!``!/`@4``@`$\IE
+M"``H/`+_\#1"`",``A+\-$(5L-Q"```P0@`'$$``.CP#$`L\`Q`+/`@4`-QE
+M1B!D8D8@90@`>-Q$``B40P`0D$(`$O^E``#_I``(IZ,`$`@`$\JCH@`2/`(W
+M.#P(%``T0GAX90@`4*^B```(`!/*HZ``!#P"$`P\"!0`W$.,(&1"C""40@`(
+M90@`\/^C```(`!/*IZ(`"#P"$`P\"!0`W$*,"&4(`,@(`!/*_Z(``#P"$`P\
+M"!0`W$*,J&4(`/`(`!/*_Z(``#P$$`L\!1`+9(1%^`P`%Y9DI4F("``3C"0"
+M``$\!!`+/`40"V2$1I`,`!>69*5)J`@`$XPD`@`!"``3C```$"T\"!0`W&5&
+M.&1B1C@(`!0P90@`H"0",P"GH@`$/`).231"0S<(`!/^KZ(````````#X``(
+M`````&>]_Y@\`@"O_[``&#P0%`#>`T8`)`7___^_`&#_O@!8_[<`4`!B$"W_
+MM@!(_[4`0/^T`#C_LP`P_[(`*/^Q`"`,`2F(C$2$`-X"1@`\`P#$`$,8+8QC
+MD#`L9``"%(``%``````\%``")!$``3:4H8`\$P"O/!(`Q'XC^`,D!?__<'08
+M`R8Q``$`0Q`M`F(0+0P!*8B,1(0`W@)&``!2&"V,8Y`P`B,@*Q2`__,`````
+M$&``/SP$$`LD%8`!/!3_\``5K/@VE``C-K7`!P`4HOQ\$P`[`!6NN'YS"<,`
+M$YD\-K5``S:4`/@\%@`"``"(+3;6H8`\$@"O`!6H^`)TH"5^/O@#)C$``7/6
+M\`,`7A`M`D(0+8Q7A``,`3AF`N`@+0P!.PX`0"`MW@-&`"0&!=P"X"`M`'X8
+M+0)#&"W<980(K&:$$"0&/H"L9H04)`8``7S%M8=\1:Q'#`$X>OQEA`@"X"`M
+M#`$X9@!`\"TSW@`#<$(1,@!>\"TD`@7X`![U.`/5\"T#T_`E_\(``-X"1@#>
+M@P``/`,`Q`!#&"V,8Y`P`B,8*Q1@_]=^/O@#/`00"PP`%Y9DA$;`#`"()```
+M``#>!$8`/`<`Q"0%``8``!@M`(<X+?S@D"B01@``)*7__V1"``$`9A@E``,:
+M.!2@__K\XY`HC.*0,``#&CH00`!@_..0*#P5__`\$P`"-K4`(P``B"T`%:K\
+M/!X4&'P4`#M^E`G#-K4`^``4H3PV<Z&`_[0```*5J"4(`!4T_[4`"'(SH`/>
+M`D8`_K8`*`!4$"T"0A`M9E*$`(Q&A`#_I@`0#`$X9@#`("W?I@`0`$"X+0P!
+M.'H`P"`MW@1&``*2*"W_H@`0#`!!E@"%("W?H@`0)`.``3+H``<``QSX``A!
+M.#1CP`<P0@`#``,>N`$"$"TT8T`A``(5.``#&/@"("`M`$,0+20%``'?HP``
+M)C$``0!#$"7?HP`(_%8``-QB```D`@`$#``E//ZB`!C>!$8`/`(`Q`""$"V,
+M0I`P`B(0*Q!``!\`````?C3X`SP"`*YRDQ@#-$*$`#P2`*\`8A@M`(.H+:Z@
+M`$P"H"`MKJ``4*Z@`%2NH`!$#``F*@````#>!D8`C\16C#P%`,0`Q2@MW*>0
+M*'SG>`$0@/^Y`H>P+3P$$`L"("@M`L`P+0P`%Y9DA$<("``5`W(SH`,`````
+M```!#]^_`&```!`MW[X`6-^W`%#?M@!(W[4`0-^T`#C?LP`PW[(`*-^Q`"#?
+ML``8`^``"&>]`&AGO?[8_[4!`/^T`/C_L@#H_[``V```@"W_OP$@_[X!&/^W
+M`1#_M@$(_[,`\`P!.PS_L0#@?!(`.WY2"<,`0*`M&$``#P)`J"T`$I0`)!$`
+M"0@`%7D`0)@M)A```1(3`%P`````,@0`_S2$W@`,`3L.`)(@)0`"$``44?_W
+M`````"0$__\"D*`F`A0@"P``*"T,`3@H/!?_\#;W`",#H"@M`!>Z_`!`@"T,
+M`2<R`$`@+20#``$"`"`M`Z`H+:^C`%``%:D\HZ,`*3;W`/BCHP!D``"8+:.C
+M`&$D$0`)HZ,`:R0>``&CHP!J`K>X):.C`&FCHP!H#`$G7J.C`&=\$``[?A`)
+MPP`0A``,`3L,``"P+1A```T`0*`M"``5JP!`D"TFU@`!$M(`#"0"`#\RQ`#_
+M-(3>``P!.PX`D"`E``(0`!11__<`````$I8``R0"`#\RPP`_`&`0+3P#__`"
+M8A`M-&,`(P`"$C@``QWX9G,!`#1C!$,``QTX-&,`0`!#$"T`51`EW$,``'_#
+M*4?\0P``WN(``"0"`@`68O_;W[\!(```$"W?O@$8W[<!$-^V`0C?M0$`W[0`
+M^-^S`/#?L@#HW[$`X-^P`-@#X``(9[T!*`@`%8,D!/__/`,4`&>]^B#<8D8`
+M/`0`Q/^T!;`D!?___[\%V/^^!=``1"`M_[<%R/^V!<#_M06X_[,%J/^R!:#_
+ML068_[`%D(R$D##_H`48?`,`._^@!2```QG"_Z`%*#!T``/_H`4PKZ4%&/^@
+M!-C_H`3@_Z`$Z/^@!/#_H`3X_Z`%`/^@!0@8@`$0_Z`%$#P(__P`%$D\-0@`
+M"0``J"W_H`5@``A$.*^C!8`U"$`!``A'>`$H0"7_J`6(WZ,%8#P%``(TI:&`
+M?!'^A'!E(`./I06`/`,`KV1FA`!\L<X$?!&]A`!$*"T`AB`M`&48+0!$("V,
+M9H0`_&"$(/^F!5A\PPL#_Z,%>`P`098PT@__WZ,%B`*`("TD!?__)`8`"-QB
+M```P0@`_?%&L!"0"^:,,`6G`?%%X!`1``0O_H@5H9[8$W`*`("TD!?__9[`%
+M&`P!:R;_M@5P`@"X+0``F"T\!1`+`L#P+=^F!5@"8#@MKN(```.@("T$0`#P
+M9*5'<`P"@$8``````!,8^`(@("TD!?__`Z`P+20'"``\"``"#`#)W@.CL"TT
+M!/FCKL($W``"$#^NP@38E\(``!!$`-`\!!`+`L#P+=_&!-@\!1`+W[8%<&2$
+M1XADI4G(`@"8+7S&2@(``/`M#``7EC#&__\(`!96)!<`""?>``%F<P`$$]<`
+M$V;6``B.8@```H`@+01```,`0"@M#`%K@`````"6P@``-`7YHQ1%__,`'A#X
+M)]X``0.B$"UF<P`$W$0$V`P`SQQFU@`(%]?_[P`````"@"`M)`7__PP!:@XD
+M!@`(```!#]^W!6@``/`MK[$%<``>F/@"@"`MCA8```.SF"W>90389A``!`+`
+M,"U\I4H"#`%>[#"E__\#TB@A`H`@+0P!7Q("P#`MWF@$V#P$$`L#P#@M9(1'
+MJ`+`*"U]"$H"`D`P+0P`%Y8Q"/__WF4$V`*`("TD!@`!)`<``20(!1%\I4H"
+M)`D&(C"E__\D"@`!#`$A0"0+!`"OO@4\`]<H(6>F!3BOI04X`H`@+=YB!-BO
+MO@5$K[X%2"?>``&OH`5,?$)*`J^B!4`,`5WHKZ`%4"0&``@7QO_.WZ0%6&>E
+M!``,`2<RC[$%<-^C!6C?I`58)`(``:^B!%!GI00`IZ,$.*.B!"FCH@1DHZ($
+M8:.B!&NCH@1JHZ($::.B!&BCH@1GKZ`$/*.@!$&CH`1`HZ`$-`P!)UZCH`14
+M#`$X9M^D!5C?I`58#`$X>@!`@"T"`"`M#`$X8@!`*"TD!H`!WZ,%>``&-+@T
+MQF`!``8T>#3&(`4``RD\``8S>"ZC``(`IB`EW(0``!!@``I\A!@"`J08%^A@
+M``<D`P`!?(0`0P`````2HP!7`````!"`__TD%0`!/`;_\``5&C@TQ@`C,$(`
+M/P`&-?@`8A`M-,8$0P`"$C@`!C4X`!4C>#3&`$@D`P`!`$80+3P&%```12@E
+MWZ(%8"1"``'_H@5@W*(``"0%@`$`!2RX-*5@`3!"`#\`!2RX`((@+32E10$`
+M!2LX``0@^'R%$@H`A2`MWZ4%8'QB4H=\8AC'?&((1_R"```\!/_PW,)&`#2$
+M`",`!"+\-(0`^-R#```\`P#$`$,8+8QCD#``HQ@J%&#^_M^C!6#?OP78```0
+M+=^^!=#?MP7(W[8%P-^U!;C?M`6PW[,%J-^R!:#?L068W[`%D`/@``AGO07@
+M)G,``20&``AF]P`$$F;_5&?>``@"@"`M#`%K)B0%__\\!1`+WZ8%6`)@."VN
+MX@```Z`@+01!_Q)DI4=P/`00"SP%$`O?M@5P9(1'2&2E2<@,`!>6`@"8+0@`
+M%E```/`M"``6V"05``(\!!`+/`40"V2$1R`,`!>69*5)R-^_!=C?O@70)`+_
+M_]^W!<C?M@7`W[4%N-^T!;#?LP6HW[(%H-^Q!9C?L`60`^``"&>]!>!GO?\P
+M_[\`R/^R`,#_L0"X#`'E!/^P`+`,`>4V`$`@+0P!/;@`````)`/__Q!#`$`\
+M!!`+```!#WP2`#M^4@G#)!```0)`("T,`5EZ`D"(+3P#_^`T8P!5/`+_\``#
+M';@T0@`C-&,`#0`"%'@``QTX-$(`$31C``@``A:X`!*1/``1,3P"0Y`E-$("
+M`/Y`````PA`EW$,``#P'__`TYP`C`B`@+0`'.OP#H"@M-.<`^'X#2D?\0P``
+M`,<P)=S"```,`1_^``````(@("T#H"@MH[``0Z.P`$*CL`!!H[``0`P!'^2C
+ML``_#``58``````00``)`````"0"``'?OP#(W[(`P-^Q`+C?L`"P`^``"&>]
+M`-``````#``5U@`````40/_UW[\`R`@`%X'?L@#`#``7EF2$1^#?OP#(W[(`
+MP"0"``'?L0"XW[``L`/@``AGO0#0`````&>]@!`T`H"8_[1_8#0#@*#_LG]0
+M_[%_2/^_?W#_M7]H_[-_6/^P?T!GO?\@`%T0+0!]&"W\10```(`0+?QF```T
+M!H"H`-TP+30#@+#\QP``-`:`N`!]&"T`W3`M_&@``#0#@,#\R0``-`:`R`!]
+M&"T`W3`M_&H``#0'@`#\RP``-`:`F`.F&"TT!H`0`-TP+0.G."W\PP``-`.`
+M&`!`,"T`?1@M)`(`.`.@("V@8@``-`.`&20"`$``?1@MH&(``#0#@-``?1@M
+M-`*`6/SC```T`X!@`%T0+0!]&"WT3```]&T``#0"@&@T`X!P`%T0+0!]&"WT
+M3@``]&\``#0"@'@T`X"``%T0+0!]&"WT4```]'$``#0"@(@T`X"0`%T0+0!]
+M&"WT4@``]',``#0"@`@T`X#0`'T8+0!=$"W\0P``#`*?T#0%@`"?@X&`/`44
+M`#0$@`!DI4:0`$"(+0`#D/@``QOX`D.0+20"__\"19`MCD,```!D*"L0H``%
+M`Z"@+8Y%``0`I"`K%(``.P`````T%8````````(B@"H`0#`M`C`P"P`"$"H`
+M$1@J`H`H+0!B$"0`P(`M$$``)`#`F"V.0@`$?$3X`P)B&"%DA``(`'48*Q1@
+M``,"1"`M`J*8(P)@@"T,`F5<`@`P+0```0^.1``$`C"((XY#```"D*`M)`+_
+M_P"3F"$R<W__)&1__ZY3``0`=1@K$&#_WP"3F",R8G__`!$8*@(B@"H`0#`M
+M`C`P"P`"$"H`8A`D`H`H+0#`@"T40/_>`,"8+6>]`.#?OW]PW[5_:-^T?V#?
+MLW]8W[)_4-^Q?TC?L']``^``"&>]?_``````)&)__P!%$",(`!?Z,$)__SP"
+M%!B,1%=D$(``$#P"%``DA/__?(3X`V1"1I``!!CX-`6`"``$(_@`12@M`&08
+M+30$@`@`HQ@MK$```*Q```0`1!`M%$/__``````\`Q``/`(4&&1C7E@#X``(
+M_$-MF&>]_^@T`X``_[````"`@"W_OP`0_[$`"(R"````0R`K$(``&@````".
+M!``$`(,H*Q"@`!8D17__`*0H(P`%*"<PI7__$*``$30$@`$`HC`A`,0@*Q2`
+M``,`H(@M`&*((P(@*"U\0O@#/`00"V1&``ADA$GH#`)^O`(&,"V.`@```%&(
+M(3(Q?_^N$0``W[\`$-^Q``C?L````^``"&>]`!AGO?_0_[0`(#P4%!B.@E=D
+M_[\`*/^S`!C_L@`0_[$`"!!``!G_L```/!'_@#P3%``V,0$!``"`+0`1CCAF
+M<T:0-C$``R02``$`$8PX?@+X`R80``$``B#X``(3^`""("T,`!A0`F0@+9^"
+M@8```A#X`%$0+?Q2``".@E=D`@(0*Q1`__-^`O@#W[\`*-^T`"#?LP`8W[(`
+M$-^Q``C?L````^``"&>]`#!GO?_X/`(>W/^E```T0F]!2*)"````$"U(H@(!
+MBZ(``DBB`@:3H@`&2*("!).B``=(H@($2"("`0`"$$`D!___"``8MB1(`@`0
+M2``)`````'!#03(`PQ@MC&4`"!2G__HD0@`!WZ(``*QD``C\8@```^``"&>]
+M``AGO?_@_[\`&/^R`!#_L0`(`*"(+?^P```,`3AF`("`+0(`("T,`3AZ`$"0
+M+20#@`$R4@`'``,<^#!"``,T8\`'`!*1.``#'K@"0B`M-&-``0`$)3@``QCX
+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
+M?`+X.P!#$"L40/_]`````-R"``#(40`%`````'P#^#L`91@K%&#_]`````#(
+M4``$,$/__R0"`4$08@`@`````-^_`%#?O@!(W[<`0-^V`#C?M0`PW[0`*-^S
+M`"#?L@`8W[$`$-^P``@#X``(9[T`6-QBR.`\`__P-&,`(SP"``$``QK\-$(`
+M`C1C.``PD@`?`L.`+7Y"8@<"`(@M?A"2`GP1*0;^(@``)`(!&!8"_[L`````
+M"``:?]QBR/C>X@``?`+&!_[B```D`@$8$F("#3P"__`D`P`0-$(`(P`"$OPT
+M0C@(`L*P+0+`\"U^UI("?!XI!O_#```D`P$8$L,!_@`````D`@`6?D)B!_XB
+M```D`@$8$@(!\SP"__!\`_@[_Z,```P`MU(D!``#/`0``32$AJ`\!2&-<$00
+M`S2E[T'?HP````4L.#2E:]L`!2QX-*4TVP!%`!W?P@`````@$``$)+K(40`/
+M`(,@+0````!\`O@[`((0*Q1```H`````?`/X.V1C`&1\`O@[`$,0*Q1`__T`
+M````W\(``.A1__0`````WN(````5JL`VHP!`?`+&!_[B```D`@$8$F(!PSP"
+M__`P8O___\(``"0"`1@2P@&X/`+_\"0"``%^0F('_B(``"0"`1@2`@&M/`+_
+M\'P#^#O_HP``#`"W4B0$``,\!``!-(2&H#P%(8UP1!`#-*7O0=^C````!2PX
+M-*5KVP`%+'@TI33;`$4`'=_"`````"`0``0DNLA1``X`@R`M?`+X.P""$"L4
+M0``*`````'P#^#MD8P!D?`+X.P!#$"L40/_]`````-_"``#H4?_T`````-[B
+M````%*"`-I0``7P"Q@?^X@``)`(!&!)B`7X\`O_P,I3__R0"`1C_U```$L(!
+M<SP"__`D`@`"?D)B!_XB```D`@$8$@(!:#P"__!\`_@[_Z,```P`MU(D!``#
+M/`0``32$AJ`\!2&-<$00`S2E[T'?HP````4L.#2E:]L`!2QX-*4TVP!%`!W?
+MP@`````@$``$)+K(40`.`(,@+7P"^#L`@A`K%$``"@````!\`_@[9&,`9'P"
+M^#L`0Q`K%$#__0````#?P@``Z%'_]`````#>X@``?`+&!_[B```D`@$8$F(!
+M/#P"__#_P```)`(!&!+"`3(\`O_P)`(``WY"8@?^(@``)`(!&!("`2<\`O_P
+M?`/X._^C```,`+=2)`0``SP$``$TA(:@/`4AC7!$$`,TI>]!WZ,````%+#@T
+MI6O;``4L>#2E--L`10`=W\(`````(!``!"2ZR%$`#P"#("T`````?`+X.P""
+M$"L40``*`````'P#^#MD8P!D?`+X.P!#$"L40/_]`````-_"``#H4?_T````
+M`-[B```VHP!0?`+&!_[B```D`@$8$F(`^#P"__`P8O___\(``"0"`1@2P@#M
+M/`+_\"0"``%^0F('_B(``"0"`1@2`@#B/`+_\'P5^#L,`+=2)`0``SP#``$T
+M8X:@/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0TVP!$`!W?P@`````@$``$
+M)+K(40`/`)4@+0````!\`O@[`((0*Q1```H`````?`/X.V1C`&1\`O@[`$,0
+M*Q1`__T`````W\(``.A1__0`````WN(``'P"Q@?^X@``)`(!&!)B`+<\`O_P
+M_]0``"0"`1@2P@"M/`+_\"0"``)^0F('_B(``"0"`1@2`@"B/`+_\'P4^#L,
+M`+=2)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0TVP!$
+M`!W?P@`````@$``$)+K(40`/`)0@+0````!\`O@[`((0*Q1```H`````?`/X
+M.V1C`&1\`O@[`$,0*Q1`__T`````W\(``.A1__0`````WN(``'P"Q@?^X@``
+M)`(!&!)B`'<\`O_P_\```"0"`1@2P@!M/`+_\"0"``-^0F('_B(``"0"`1@2
+M`@!B/`+_\'P4^#L,`+=2)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!``0D.#2$
+M:]L`!"1X-(0TVP!$`!W?P@`````@$``$)+K(40`/`)0@+0````!\`O@[`((0
+M*Q1```H`````?`/X.V1C`&1\`O@[`$,0*Q1`__T`````W\(``.A1__0`````
+MWN(``'P"Q@?^X@``)`(!&!)B`#<\`O_P_\```"0"`1@2P@`M/`+_\"0"`!9^
+M0F('_B(``"0"`1@2`@`B/`+_\'P0^#L,`+=2)`0``SP#``$T8X:@/`0AC7!#
+M$`,TA.]!``0D.#2$:]L`!"1X-(0TVP!$`!T``"`0``0DN@"0("T`````W\(`
+M`,A1_E@`````?`+X.P""$"L40/Y4`````'P#^#MD8P!D`````'P"^#L`0Q`K
+M%$#__0`````(`!Q.`````#1"`",``A+\-$(`^`@`'#W<0@``-$(`(P`"$OPT
+M0@#XW$(```@`'#@D`@`6-$(`(P`"$OPT0@#X"``<,]Q"```T0@`C``(2_#1"
+M`/@(`!P-W$(``#1"`",``A+\-$(`^-Q"```(`!P()`(``S1"`",``A+\-$(`
+M^`@`'`/<0@``-$(`(P`"$OPT0@#X"``;W=Q"```T0@`C``(2_#1"`/C<0@``
+M"``;V"0"``(T0@`C``(2_#1"`/@(`!O3W$(``#1"`",``A+\-$(`^`@`&ZW<
+M0@``-$(`(P`"$OPT0@#XW$(```@`&Z@D`@`!-$(`(P`"$OPT0@#XW$(```@`
+M&Z,P8O__-$(`(P`"$OPT0@#X"``;>=Q"```T0@`C``(2_#1"`/C<0@``"``;
+M="0"``,T0@`C``(2_#1"`/@(`!MOW$(``#1"`",``A+\-$(`^`@`&TC<0@``
+M-$(`(P`"$OPT0@#XW$(```@`&T,D`@`"-$(`(P`"$OPT0@#XW$(```@`&SXR
+ME/__-$(`(P`"$OPT0@#X"``;%-Q"```T0@`C``(2_#1"`/C<0@``"``;#R0"
+M``$T0@`C``(2_#1"`/C<0@``"``;"C!B__\T0@`C``(2_#1"`/@(`!K?W$(`
+M`-Q"R/`(`!K:)`(`%C1"`",``A+\-$(`^-Q"```(`!K-/`+_\`````!GO?_H
+M_[\`$/^Q``@`@(@M#`$X9O^P```"("`M#`$X>@!`@"T\!/_\`!"$>#2$``D"
+M`A`M``0D>``"&KADA(`+```0+0`$)S@TA!``?&0J"NBN`!=DA``@?&0:"LAB
+M``_?OP`0?&4`0WQD",-\HI2',(0`_WQBG,<D`P`!$(,`%B0#``(0@P`2)`,#
+MZ!2``!8D`P`*?&*(!]^_`!#?L0`(W[````/@``AGO0`8`````-^_`!`\`@`,
+MW[$`"#1"`^C?L````^``"&>]`!@`````"``=!GQBB`<D`P!D"``=!GQBB`<`
+M````?`*(!P@`'09\`IS'`````#P"__!GO?^8-$(`(WS'B`/_M0!```(2_``$
+MJCLT0C@8_[``&``5J?C_MP!0`J*`+?^R`"@`!S@`_[0`.`(`N"W_LP`P,+(`
+M!O^Q`"`PDP#__[\`8`#`B"W_O@!8`."@+?^V`$@60`',?!<I!GX0D@+>X@``
+MR*`!2`````!\`L8'?C&(`_[B```2(`)#)`(!&!("!&(\`O_P/`/_\#P"``$T
+M8P`C-$(``0`#&OPR<P`?-&,X`'YB8@<"HX@M`B"0+7XQD@)\$BD&_D(``"0"
+M`1@2(@10``````P`MU(D!``#/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1K
+MVP`$)'@TA#3;`$0`'0``(!``!"2Z?`+X.SP>__``@B`M-]X`(P`>\OPWWC@0
+M`K[P+7P>*09\`_@[9&,#Z'P"^#L`0Q`K%$#__0````#?P@``R%$`!0````!\
+M`_@[`&08*Q1@__0`````WN0``'Q%!`,D`___`$48"P"`$"U\`L8'_N(``"0"
+M`1@2`@0<,';__SP"``$T0@`$?F)B!_Y"```D`@$8$B(#X#P"__`,`+=2)`0`
+M`SP#``$T8X:@/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0TVP!$`!T``"`0
+M``0DNGP"^#L`@B`M?`/X.V1C`^A\`O@[`$,0*Q1`__T`````W\(``,A1``4`
+M````?`/X.P!D&"L48/_T`````'Q$!`,D`___`$08"S+6`0`RUO__,&/\'Q;`
+M`XD``R@`/`,4&,J```6,8E:,%$`"F3P$$`LTI0`@``4H`#*$``(0@``%````
+M`!1``KH\!!`+-*4`0``%*``RA``$$(``!0`````40`*K/`00"S2E`(``!2@`
+M,H0`"!"```4`````%$`"G#P$$`LTI0$```4H`#*$`!`0@``',H<`(!1``HT\
+M!!`+EZ8`!C3$`0"GI``&,H<`(!#@``8`````%$`"?3P$$`N7HP`&-'0"`*>T
+M``840`,T/`00#=[B```PH___?`+&!_[B```D`@$8$@(#.#P"__`\`O_P-$(`
+M(P`"$OPT0C@(`J*H+0*@H"U^M9("?!0I!OZ#```D`P$8$J,#/``````D`@`$
+M?F)B!_Y"```D`@$8$B(#/3P"__!\`_@[_Z,`"`P`MU(D!``#/`0``32$AJ`\
+M!B&-<$00`S3&[T'?HP`(``8T.#3&:]L`!C1X-,8TVP!&`!W>@@`````@$``$
+M)+K(40`.`(,@+7P"^#L`@A`K%$``"@````!\`_@[9&,`9'P"^#L`0Q`K%$#_
+M_0````#>@@``Z%'_]``````6P`)D`````-[B``!\`L8'_N(``"0"`1@2`@-Z
+M/`+_\#P"``%^8F('_D(``"0"`1@2(@-O/`+_\`P`MU(D!``#/`,``31CAJ`\
+M!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``(!``!"2Z?`+X.P""
+M("T`````?`/X.V1C`^A\`O@[`$,0*Q1`__T`````W\(``,A1``4`````?`/X
+M.P!D&"L48/_T`````'Q$!`,D`___`$08"R0"``'>Y```,&/__WQ#8P=\!,8'
+M_N0``'Q#2D<D`@$8$@(#:3!C___^@P``)`(!&!*B`U\\`O_P`!.:."0"`1C^
+M4P``$B(#53P"__!\$/@[#`"W4B0$``,\`P`!-&.&H#P$(8UP0Q`#-(3O00`$
+M)#@TA&O;``0D>#2$--L`1``=WH(`````(!``!"2ZR%$`#P"0("T`````?`+X
+M.P""$"L40``*`````'P#^#MD8P!D?`+X.P!#$"L40/_]`````-Z"``#H4?_T
+M`````-^_`&```!`MW[X`6-^W`%#?M@!(W[4`0-^T`#C?LP`PW[(`*-^Q`"#?
+ML``8`^``"&>]`&A\`L8'_N(``"0"`1@2`@&J/`/_\#P"``$T8P`C,G,`'P`#
+M&OQ^8F('-&,X``*CD"T"0*`M?E*2`GP4*0;^@@``)`(!&!)"`:\`````#`"W
+M4B0$``,\`P`!-&.&H#P$(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`1``=
+M```H$``%++I\`O@[/`3_\`"B*"TTA``C``0B_#2$.!`"I"`M?`0I!@````!\
+M`_@[9&,#Z'P"^#L`0Q`K%$#__0````#<@@``R%$`!0````!\`_@[`&48*Q1@
+M__0`````?$0$`R0#__\`1!@+?B0$@WXQB`,D!0`!,&+O_S1"`@!\@D(')`0#
+MZ!(D`J8``A@`)`(`9!(B`O,D`@`*$B(!?`````#>X@``,&/__WP"Q@?^X@``
+M)`(!&!("`J0\`O_P-$(`(P`"$OPT0C@(`J*H+0*@@"U^M9("?!`I!OX#```D
+M`P$8$J,"J0``````$YHX)`(!&/Z3```20@*J/`+_\'P1^#L,`+=2)`0``SP#
+M``$T8X:@/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0TVP!$`!T``"`0``0D
+MN@"1("T`````W@(``,A1_X+?OP!@?`+X.P""$"L40/]^W[\`8'P#^#MD8P!D
+M`````'P"^#L`0Q`K%$#__0`````(`![T`````-[C``!^$)("?`/&!_[C```D
+M`P$8$@,"M@`````\`__P/`(``31C`",T0@`$``,:_#)H`!\T8S@`?0)B!P*C
+ML"T"P/`M?M:2`GP>*0;_P@``)`(!&!+"`K@`````_Z4`$"0$``,,`+=2_Z@`
+M"#P#``$\!"&--&.&H#2$[T%P0Q`#``0D.#2$:]L`!"1X-(0TVP!$`!T``#`0
+M``8TNGP"^#L\!/_P`,(P+=^H``@TA``CWZ4`$``$(OPTA#@0`J0@+7P$*08`
+M````?`/X.V1C`^A\`O@[`$,0*Q1`__T`````W((``,A1``4`````?`/X.P!F
+M&"L48/_T`````'Q$!`,D`___`$08"W)2`*[>X@``,&/__WP"Q@=^0UK'_N(`
+M`'Y#4H<D`@$8$@("?#!C__\\!/_P-(0`(P`$(OPTA#@(`J00+0!`D"U\0I("
+M?!(I!OY#```D`P$8$$,";0`````D`@`$?0)B!__"```D`@$8$L("8CP"__!\
+M%O@[_Z4`$`P`MU(D!``#/`,``31CAJ`\!"&-<$,0`S2$[T'?I0`0``0D.#2$
+M:]L`!"1X-(0TVP!$`!T``"`0``0DN@"6("W>0@``R%']Q`````!\`O@[`((0
+M*Q1`_<``````?`/X.V1C`&0`````?`+X.P!#$"L40/_]``````@`'W0`````
+M$@(#&3P"__`\`__P/`(``31C`",T0@`!``,:_#)S`!\T8S@`?F)B!P*CB"T"
+M()`M?C&2`GP2*0;^0@``)`(!&!(B`R(`````#`"W4B0$``,\`P`!-&.&H#P$
+M(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`1``=```@$``$)+I\`O@[/!;_
+M\`""("TVU@`C`!:R_#;6.!`"MK`M?!8I!GP#^#MD8P/H?`+X.P!#$"L40/_]
+M`````-["``#(40`%`````'P#^#L`9!@K%&#_]`````#>XP``?$0$`R0>__\`
+M1/`+`&`0+7P"Q@?^X@``,][__R0"`1@2`@+M`\"@+3P"``$T0@`$?F)B!_Y"
+M```D`@$8$B("X3P"__`,`+=2)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!``0D
+M.#2$:]L`!"1X-(0TVP!$`!T``"`0``0DNGP"^#L`@B`M`````'P#^#MD8P/H
+M?`+X.P!#$"L40/_]`````-["``#(40`%`````'P#^#L`9!@K%&#_]`````!\
+M1`0#)`/__P!$&`M_R`/#WN<``'_&`P-_Q0+#?\0#@S!B__]_W@-#?0)*1P#@
+M&"U\PC&'?`/&!_[C``!\HBE'?()"!R0#`1A_PCG'$@,"IS!"__\\`__P-&,`
+M(P`#&OPT8S@(`J.H+0*@\"U^M9("?!XI!O_"```D`@$8$J("T0`````D`@`$
+M?F)B!_Y"```D`@$8$B("QCP"__!\`_@[_Z,`"`P`MU(D!``#/`0``32$AJ`\
+M!2&-<$00`S2E[T'?HP`(``4L.#2E:]L`!2QX-*4TVP!%`!T``"`0``0DN@"#
+M("W?P@``R%$`B`````!\`O@[`((0*Q1``(0`````?`/X.V1C`&0`````?`+X
+M.P!#$"L40/_]``````@`("(`````/`+_\#1C`",T0@`C``,:_``"$OPT8S@`
+M-$(`^-Q"```"HY`M`D"@+3P"``$R<P`??!0I!GYB8@=^4I("_H(``"0"`1@6
+M0OY3``````@`'I?<8LCX,&/?OP@`'LP``Q@`_Z,`"/^E`!`,`!>69(1*X-^C
+M``C?I0`0"``=LHQB5HS_HP`(_Z4`$`P`%Y9DA$M@WZ,`"-^E`!`(`!W6C&)6
+MC/^C``C_I0`0#``7EF2$2T#?HP`(WZ4`$`@`'<Z,8E:,_Z,`"/^E`!`,`!>6
+M9(1+*-^C``C?I0`0"``=QXQB5HS_HP`(_Z4`$`P`%Y9DA$L0WZ,`"-^E`!`(
+M`!W`C&)6C/^C``C_I0`0#``7EF2$2OC?HP`(WZ4`$`@`';F,8E:,WN(``)>C
+M``9\`L8'_N(``"0"`1@2`@(./`+_\/Z#```D`@$8$J("#SP"__`D`@`)?F)B
+M!_Y"```D`@$8$B("#SP"__!\%O@[#`"W4B0$``,\`P`!-&.&H#P$(8UP0Q`#
+M-(3O00`$)#@TA&O;``0D>#2$--L`1``=```@$``$)+H`EB`M`````-Z"``#(
+M4?UY`````'P"^#L`@A`K%$#]=0````!\`_@[9&,`9`````!\`O@[`$,0*Q1`
+M__T`````"``@G`````#JB`$H`````-[B``!\`L8'_N(``"0"`1@2`@(</`+_
+M\#P"``%^8F('_D(``"0"`1@2(@(1/`+_\`P`MU(D!``#/`,``31CAJ`\!"&-
+M<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``(!``!"2Z?`+X.P""("U\
+M`_@[9&,#Z'P"^#L`0Q`K%$#__0````#>P@``R%$`!0````!\`_@[`&08*Q1@
+M__0`````?$0$`R0#__\`1!@+)`(``=[D```P8___?$-C!WP$Q@?^Y```?$-*
+M1R0"`1@2`@'A,&/____#```D`@$8$J(!USP"__``$YHX)`(!&/Y3```2(@'-
+M/`+_\'P0^#L,`+=2)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!``0D.#2$:]L`
+M!"1X-(0TVP!$`!T``"`0``0DN@"0("T`````W\(``,A1_7C?OP!@?`+X.P""
+M$"L40/UTW[\`8'P#^#MD8P!D`````'P"^#L`0Q`K%$#__0`````(`"#^````
+M`/^E`!`,`!>69(0HN-[B``#?I0`0?`+&!_[B```D`@$8%@+\RS"C__\\`O_P
+M-$(`(P`"$OPT0@#XW$(``#P"__`T0@`C``(2_#1".`@"HJ@M`J"@+7ZUD@)\
+M%"D&_H,``"0#`1@6H_S&`````-Q"R/`D`@`$?F)B!_Y"```D`@$8%B+\Q3P"
+M__`T0@`C``(2_#1"`/@(`!WTW$(``-[B``!\`L8'_N(``"0"`1@2`@&I/`+_
+M\#P"``$T0@`)?F)B!_Y"```D`@$8$B(!G#P"__#_I0`0#`"W4B0$``,\`P`!
+M-&.&H#P$(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`1``=```@$``$)+I\
+M`O@[WZ4`$`""("U\`_@[9&,#Z'P"^#L`0Q`K%$#__0````#?P@``R%$`!0``
+M``!\`_@[`&08*Q1@__0`````?$0$`R0#__\`1!@+,&/\_P@`':VGHP`&-$(`
+M(P`"$OPT0@#X"``=B-Q"``!\HC&'?`)K1P`"&`#>X@``,&/__WP"Q@?^X@``
+M)`(!&!8"_5X\`O_P-$(`(P`"$OPT0@#XW$(``#P"__`T0@`C``(2_#1".`@"
+MHJ@M`J"`+7ZUD@)\$"D&_@,``"0#`1@6H_U9`````-Q"R/``$YHX_I,``"0"
+M`1@60OU8/`+_\#1"`",``A+\-$(`^`@`'N/<0@``-$(`(P`"$OPT0@#X"``>
+M(]Q"```T0@`C``(2_#1"`/C<0@``"``>'CP"``$\`O_P-$(`(P`"$OPT0@#X
+MW$(```@`'8(\`@`!"``=5-QBR/@T0@`C``(2_#1"`/C<0@``"``=13P#__`T
+M0@`C``(2_#1"`/@(`!Y7W$(``#1"`",``A+\-$(`^-Q"```(`!Y3`!.:.#P"
+M__`T0@`C``(2_#1"`/@(`!Y.W$(``'P#,8=\HVM'"``>S``#&`#<0LC@"``?
+M##P#__`T0@`C``(2_#1"`/@(`!]BW$(``-R"R/`(`!]=)`(`!#P"__`T0@`C
+M``(2_#1"`/C<0@``"``?43P$__#<8LCX"``?'/^E`!#>X@``?`+&!_[B```D
+M`@$8$@(`KCP"__`\`@`!-$(`#WYB8@?^0@``)`(!&!(B`*(\`O_P#`"W4B0$
+M``,\`P`!-&.&H#P$(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`1``=```@
+M$``$)+I\`O@[`((@+7P#^#MD8P/H?`+X.P!#$"L40/_]`````-["``#(40`%
+M`````'P#^#L`9!@K%&#_]`````#>Y```?$4$`R0#__\`11@+`(`0+7P"Q@?^
+MX@``)`(!&!("`'0P=/__/`(``31"``E^8F('_D(``"0"`1@2(@!H/`+_\`P`
+MMU(D!``#/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`
+M'0``(!``!"2Z?`+X.P""("U\`_@[9&,#Z'P"^#L`0Q`K%$#__0````#>P@``
+MR%$`!0````!\`_@[`&08*Q1@__0`````?$0$`R0#__\`1!@+?H4#0][D``!^
+ME`,#,&+__R0#`1A\HDI'?`3&!_[D``!^@D('$@,`-S!"____P@``)`(!&!*B
+M`"T\`O_P)`(`"7YB8@?^0@``)`(!&!(B`"(\`O_P?!3X.PP`MU(D!``#/`,`
+M`31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``(!``!"2Z
+M`)0@+0````#?P@``R%'^5@````!\`O@[`((0*Q1`_E(`````?`/X.V1C`&0`
+M````?`+X.P!#$"L40/_]``````@`(E8`````-$(`(P`"$OPT0@#X"``B1=Q"
+M```T0@`C``(2_#1"`/C<0@``"``B0"0"``D\`__P-&,`(P`#&OPT8P#X"``B
+M.]QC```T0@`C``(2_#1"`/@(`"(0W$(``#P"__`T0@`C``(2_#1"`/C<0@``
+M"``B"CP"``$T0@`C``(2_#1"`/@(`"'BW$(``#1"`",``A+\-$(`^-Q"```(
+M`"'</`(``31"`",``A+\-$(`^`@`(('<0@``-$(`(P`"$OPT0@#XW$(```@`
+M((8D`@`)-$(`(P`"$OPT0@#X"``@B]Q"```T0@`C``(2_#1"`/C<0@``"``?
+MASP#__`\`__P-&,`(P`#&OPT8P#XW&,```@`'_\\`__P-$(`(P`"$OPT0@#X
+M"``?R]Q"```\`O_P-$(`(P`"$OPT0@#XW$(```@`'\4\`@`!"``?EMQBR/@T
+M0@`C``(2_#1"`/@(`"#MW$(``#1"`",``A+\-$(`^-Q"```(`"#I`!.:.#P"
+M__`T0@`C``(2_#1"`/@(`"#DW$(``#1"`",``A+\-$(`^`@`(+K<0@``-$(`
+M(P`"$OPT0@#XW$(```@`(+4\`@`!-$(`(P`"$OPT0@#X"``@$-Q"``#<8LCP
+M"``@"R0"``0T0@`C``(2_#1"`/C<0@``"``A0_^E`!`T0@`C``(2_#1"`/C<
+M0@``"``A/#P"``$`````9[W_*/^Q`)@`@(@M_[``D`.@("W_OP#0`*"`+?^W
+M`,C_M@#`_[4`N/^T`+#_LP"H_[(`H)(R``22(P`#DB(``'QR>@0,`/)P?%*4
+MAP1``("/HP``!&``@S!T`!\\`O_P``.".S1"`",`$('X``(2_#1".!@\`P`!
+M?@(J"@("F"W>-P``9%;_Z'Z#8@<"%J@M?`7&!R0$``/^90``?O<%P]Q%R.#^
+MHP``W$+(X`P`MU(`````/`0``3P#(8TTA(:@-&/O07!$$`,``QPX-&-KVP`#
+M''@T8S3;`$,`'0``.!``!SRZ?`+X.V;%`!``XC@M`@4H+0````!\`_@[9&,#
+MZ'P"^#L`0Q`K%$#__0````#<H@``R%$`!0````!\`_@[`&<8*Q1@__0`````
+MWF0``'Q%!`,D`___`!>X)P!%&`L\`O_P-$(`(WP$Q@<``A+\`!2B./YD```T
+M0@#X9$0W$#!C___<10``?N-:QP($@"W^`P``W$,``/ZT``#<0@``?!/X.PP`
+MMU(D!``#/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`
+M'=X"`````"@0``4LNLA1``X`LR@M?`+X.P"B$"L40``*`````'P#^#MD8P!D
+M?`+X.P!#$"L40/_]`````-X"``#H4?_T`````-XB``!\0P6#R%```S1E``0T
+M8P`"`&`H+8^D```,`/9H`D`P+0``$"W?OP#0W[<`R-^V`,#?M0"XW[0`L-^S
+M`*C?L@"@W[$`F-^P`)`#X``(9[T`V#P$$`L,`!>69(1.T`@`(W,D`O__/`00
+M"SP%$`MDA$N`9*5A2`P`%Y8"`#`M"``C<R0"__\`````-`.N@#P&%`!PHQ@#
+MW,)&``!#$"W<1P`(^/T`"P`````\`A08C$)6C!1```,``````^``"``````\
+M!!`+"``7EF2$2Z@`````/`?_@#3G`2E\"``[``<Z/'T("<-]!SD&W.D``!$@
+M`#HD"/__9[W_Z/^P```!(#@M_[\`$'T'_\;_L0`(/!#_^)!1#/<V$``!D$@"
+M."0"`$$``A6\`!"#//SB``!],#@%W,)&``!#&"V48@`PI.(`!FB"``"PX@`(
+M/`(4&(Q"5HP00``.<BB(*-SG``@\`A`+/`,0"V1"2C!D8THH/`00"WSG!<-D
+MA$OH`&<0"P(@,"T"`$`M#``7E@!`."T```%/```H+7X'>@("`"`M)`8``0P`
+MB<X"($`M%$``!=^_`!#?L0`(W[````/@``AGO0`8/`00"]^Q``ADA$P@W[``
+M``@`%Y9GO0`8/`00"P@`%Y9DA$Q``````#P"``(\`Q0`-$*A@&>]__AP@A`#
+MW&-&`#P$`*[_I0``-(2$``!$$"T`8A@MW&(@6!!``!T\`Q[<-&-O04BC0@``
+M`!@M2*,"`8NC``)(HP(&DZ,`!DBC`@23HP`'2*,"!$@D`@%PA"$R`$0@+=R"
+M```0@@`-`````-^E``#<0__0%&4`!@`````(`"039$+_T-Q#_]`090`(````
+M`-Q"```4@O_[````````$"T#X``(9[T`"`````!D0O_0`^``"&>]``@`````
+M`^``"``````T`JZ`9[W_V'""(`,\`A0`W$-&`#P"``+_LP`8-$*A@/^R`!!D
+M1MZ`_[```"0%`/__OP`@``"`+?^Q``@`9"`MC(0-!`#`F"UP@A`#/`0`KC2$
+MA```1!`M`&(8+61R(3@,`F9@`D`@+0)0B"UF$``H#``,#`(@("T,``P@`B`@
+M+183__H"4(@MW[\`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`*``````T!JZ`
+M/`(4`'"&,`/<0T8`9[W_\#P"``+_OP`(-$*A@/^P```PAP`_`&8P+8S(#01Q
+M`A`#/`@`KC4(A```2!`M$.``*0!B$"W<PPXH,&,/_Q!@`"$`!"&[9(,$("0&
+M``$``QCX`.8X%`!#&"T`!T`GW&8`$`$&,"3\9@`0``48N``%@/@`91@M``4I
+M>`!D("T"!8`M9(0$(`!0@"T`!"#X9A`A.`!$$"T"`"`MW$,`.`!G."4,``P,
+M_$<`.`P`#"`"`"`MW[\`"-^P`````!`M`^``"&>]`!`D`P`!"``D80#C.!0`
+M``````0ANP@`)&$D!P`!`````#0&KH`\`A0`<(8P`]Q#1@!GO?_P/`(``O^_
+M``@T0J&`_[```#"'`#\`9C`MC,@-!'$"$`,\"`"N-0B$``!($"T0X``I`&(0
+M+=S##B@P8P__%&``(0`$(;MD@P0@)`8``0`#&/@`YC@4`$,8+=QF`!``QS`E
+M_&8`$``%&+@`!8#X`&48+0`%*7@`9"`M`@6`+62$!"``4(`M``0@^``'."<`
+M1!`M9A`A.-Q#`#@"`"`M`.,X)`P`#`S\1P`X#``,(`(`("W?OP`(W[``````
+M$"T#X``(9[T`$"0#``$(`"2>`.,X%```````!"&["``DGB0'``$`````$(``
+M"0````!GO?_X_[\```P!-W8````````!3]^_```#X``(9[T`"#P$$`L(`G]Z
+M9(1,:`````",@@"H!$``"`````!GO?_X_[\```P!-W8````````!3]^_``!G
+MO0`(`^``"`````!GO?_(/`(4`/^P```\$``"W$)&`#80H8!PL"@#/!``KO^Q
+M``@V$(0`_[\`,`"`B"W_M0`H_[0`(/^S`!C_L@`0`+"`+0!0@"W"`@!$%$``
+M!"0"``'B`@!$$$#_^R0"```00``+W[\`,`(@$"W?M0`HW[0`(-^S`!C?L@`0
+MW[$`"-^P```#X``(9[T`.``````,`3],`,`@+7Q#!(,`0)`M?''^!GQ"!,,0
+M0``K?%&]QXX#`$@D`@`"$&(`)P````".%```K@(`2`P!.&8"@"`M`H`@+0P!
+M.'H`0)@M)`.``3)S``<``QSX`!.9.#1CP`<P0@`#``,>N`)BJ"TT8R`'`!6M
+M.``#&/@\!!`+`J.H+62$3)#>LP```H!`+7YFK`-^9ZH"``8P```'.``,`!>6
+M?F4#@\IN``@D`D``_J(``#P"__`T0@`C``(2_#1"`/C<0@```````'Y1/@4`
+M``%/K@``1````4_?OP`P`B`0+=^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@
+M``AGO0`X/`(``CP#%``T0J&`9[W_X'""(`/<8T8`_[\`&/^R`!#_L````*"`
+M+?^Q``@`9!`M/`,`KP!B$"V,480`#`$X9@(@("T"("`M#`$X>@!`D"TD!``#
+M)`,``3(%``8R!@`!?`D`.P"%&`M]*0G#$,``2B0$``%\@QA')`2``3)%``<`
+M!"3X``5!.#!'``,TA,`'`0<X+0`$)W@\"O_P-(0`H``'/3@U2@`C``E)/`#D
+M."T`"E+\`.DX)?SC```U2@#X`!"`*V2$`&`!*E`E``4N.-U#```"!C`D`*0H
+M+20+``$0P``6)`0`(`"I,"4DA/__W,,``'QG#0(PYP#_$.(`'F2E``@4@/_X
+MW[\`&```$"W?L@`0W[$`"-^P```#X``(9[T`(`````!]8X0&_,,``-U#```0
+M@/_UW[\`&`$E,"4DA/__W,,``&2E``A\:`T"?&=X`1#@__<Q"`#_$0+_\@``
+M```4@/_UW[\`&`@`)8```!`M`````'P#A`;\PP``W4,``!2`_]C?OP`8"``E
+M@```$"T`````"``E6GR#&,=GO?_`-`.N@/^T`"``@*`M/`0``G"C&`,TA*&`
+M/`(4`'*$(`/_L```W$)&`#P0`*[_M0`H-A"$`/^S`!@`!:F[_[$`"&:S!!#_
+ML@`0`,"(+0"0@"T`$S#X_[\`.`!0@"W_M@`P`$,0+:11``XPI0`_`@80+202
+M``'<0P`8RB``.@"RD!0`<A@E9A8@F/Q#`!@"P"`M#``,#&:U!```%:CX#``,
+M(`+`("T"%:@M,B,`"!!@`#O>H@!P`%(0)?ZB`'!F%2!P#``,#`*@("T,``P@
+M`J`@+0`3$/@"`A`M,B0``A"``#S<0P!H`'(8)685(.C\0P!H`J`@+0P`#`P`
+M$YCX`A.8+0*@("T,``P@,C$`!!8@`#W>8@!``!*0)P)"$"3^8@!`9A`@P`P`
+M#`P"`"`M#``,(`(`("W?OP`XW[8`,`*`("W?M0`H)`4``=^T`"#?LP`8W[(`
+M$-^Q``C?L```"``E/&>]`$``$B`G9A8@F`"#&"1FM00`_$,`&`P`#`P"P"`M
+M`!6H^`+`("T,``P@`A6H+3(C``@48/_'WJ(`<``2&"<`8A`D_J(`<&85('`,
+M``P,`J`@+0P`#"`"H"`M`!,0^`("$"TR)``"%(#_QMQ#`&@`$B`G9A4@Z`"#
+M&"0`$YCX_$,`:`P`#`P"H"`M`A.8+0*@("T,``P@,C$`!!(@_\7>8@!``%*0
+M)0@`)>W^<@!``````&2$`&`D`@(`)`/__P````"L@P``)$+___R`__@40/_\
+M9(0`$`/@``@``````````#P"'MPT0F]!2*)"````$"U(H@(!C((``$BB`@:0
+M@@`$2*("!)""``5(H@($`^``"$@B`@$`````/`,``F>]_Y@T8Z&`<*,8`_^T
+M`#C_M0!`/!04`-Z"1@`\%0"N_[\`8#:UA`#_O@!8`,#P+?^W`%``@+@M_[8`
+M2`!U&"W_LP`P`$.H+?^R`"@`H)@M_[$`(`#@L"W_L``8CK````P!.&8"`"`M
+M`@`@+0P!.'K_H@`0*\,!`1!@`)1FL`!,9J,`4````4__HP`(<&`@GP```4^.
+M`P`(%&3__@``0"TD`P`!```!3\(%```D!```%*@`!`!@*"WB!0``$*#_^B0$
+M``$````````!3Q"`__4`````_[8``#P#'MPT8V]!2*-"````&"U(HP(!BZ,`
+M`DBC`@:3HP`&2*,"!).C``=(HP($2"P"`0``&"T`#&!`)`O__P@`)HXD#0(`
+M$&T`33P$$`L`;$@A)&,``3$I`?\`"9$X`K)`+8T*`&`52__W`2"(+=^C`!`D
+M!8`!``4L^'[$>`$TI<`'?$2M!C!F``<SPP`?``8U>``%+W@`PS`M-*4!`'P#
+M`#L`!C#X?&,)PP`#&3P`Q2@M`&40)?Q$```\`O_PW0<`6#1"`",``A+\-$(`
+M^`!B&"7<8@``%.``(SP$$`LT`JZ``K*0+7+B$`/>@T8`KE<`8/Y6`%BNMP`X
+M`&(0+20#``2D0P`.K%X-#*Q1#0C\5@`H```!3R0"__]R`@`8)`(``6:C`%1P
+M8@`8```!3P``$"W?OP!@W[X`6-^W`%#?M@!(W[4`0-^T`#C?LP`PW[(`*-^Q
+M`"#?L``8`^``"&>]`&@``````L`H+62$36`,`!>6`2`P+0@`)K,T`JZ`/`40
+M"V2$31`,`!>69*5A:(ZF`#P\!!`+`F`H+62$32`,`!>6`L`X+0```4\D`O__
+M<@(`&"0"``%FHP!4<&(`&````4_?OP!@)`+__]^^`%C?MP!0W[8`2-^U`$#?
+MM``XW[,`,-^R`"C?L0`@W[``&`/@``AGO0!H/`00"R0%`0`,`!>69(1,V`@`
+M)L<D`O__9[W_P#P"'MS_I0`(-$)O0?^Q`!@`@(@M_[\`./^T`##_LP`H_[(`
+M(/^P`!!(HD(````0+4BB`@&+H@`*2*("!I.B``Y(H@($DZ(`#TBB`@1((@(!
+M9)``3``"$$!DA`!0```!3_^D``!P@""?```!3XX#``@49/_^)`,``0``("T`
+M``%/P@<``"0%```4Y``$`&`X+>('```0X/_Z)`4``0````````%/$*#_]=^J
+M``@D"/__"``G,R1+`@``````W&<`6!#J``P`````$$L`)0`````P10'_)`G_
+M_P`%&3@"(Q@MC&0`8!2(__4D0@`!"``G6"0"__\4A@`J)+(``68S`%@R4@'_
+MK&D`8'Y"^`/\8`!8``(9.`(C&"V,9`!@$(D`$"04__\``A$X)E(``0(B$"T"
+M8#`MW$4`6#)2`?^L5`!@#``8HOQ``%A^0O@#``(9.`(C&"V,9`!@%)3_\P`"
+M$3@``!`M```!3R0#__]R`P`8)`,``68D`%1P@P`8```!3]^_`#C?M``PW[,`
+M*-^R`"#?L0`8W[``$`/@``AGO0!`"``G6"0"__X`````9[W_N/^P```T$*Z`
+M<)"``_^R`!#_OP!`/!(4`-Y#1@#_MP`X_[,`&#P3``+_L0`(`("(+?^V`#``
+M<!`M_[4`*#9SH8#_M``@C$0-!(Q6#0R,50T(/`(`KG"3F`,T0H0`,M8`'P)B
+MF"T`<Y@MCG0```P!.&8"@"`M`H`@+0P!.'H`0+@M)`2``3+W``<`!"3X`!>]
+M>#2$P`<"]K`M``0G>``6L/A\`P`[-(0!`'QC"<,``QD\`L0@+0"#("5P0@TS
+M_((``#P%__#>0D8`-*4`(P`%*OP"8"`M-*4`^`(@,"T`4!`M`&48)=Q%`"C<
+M8@``#``F_@`````40``+W[\`0-^W`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q
+M``C?L````^``"&>]`$C>0D8``B`H+0*@,"W?MP`X/`00"P!0@"UDA$VPW@<`
+M*-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```(`!>69[T`2`````!GO?_8
+M_[$`"`"`B"W_OP`@`*`@+?^S`!C_L@`0`,"0+?^P```,`3AF`*"`+0(`("T,
+M`3AZ`$"8+3(C`#\08``2)D/_UC0"KH!R(H@#/`(4`-Q#1@``<8@MCB4`%`"R
+MD"H60``T```0+=^_`"#?LP`8W[(`$-^Q``C?L````^``"&>]`"@`````+&,^
+M5Q!@`"(D!(`!,F4`!P`$)/@P0@`#-(3`!P`%*3@`!":X`*(H+32$0`,F4@`=
+M?`,`.P`%+3A\8PG#``0@^``#&3Q\$A`$`*0@+7Y2^`,`9"`E_)(``#P"__#?
+MOP`@-$(`(]^S`!@``A+\W[(`$#1"`/C?L0`(`&(8)=QB`````!`MW[````/@
+M``AGO0`H/`00"R0%`"IDA$X8#``7EB0&/H`(`"?@)`+__SP$$`L,`!>69(1-
+MZ`@`)^`D`O__?`(`.RRC`"@48``I/`,0"P`",7@``AGX`,,8+3P'%```8A`O
+M``0Q.-SI1@@``D%X``08N`$"$"\`PT`O``(1^`$$0"T!(A`M``A!>"BE`#``
+M2!`MW$@`8&4(``'\2`!@$*``$```$"W<Y48(/`(`"0##&"\T0J"``&0@+7P'
+M`#M\Y_@#``09>'#B.`,D`@`!`*<@+0"#("W<@P"09&,``?R#`)`#X``(````
+M``````!PIOCR9&-?"'QF&@H`8``(`````````````C%X``(9^`##&"T\!Q0`
+M`&(0+P`$,3C<Z48(``)!>``$&+@!`A`O`,-`+P`"$?@!!$`M`2(0+0`(07@H
+MI0`P`$@0+=Q(`%AE"``!_$@`6!2@_],``!`M"``H00```````C%X``(9^`##
+M&"T\!Q0``&(0+P`$,3C<Z48(``)!>``$&+@!`A`O`,-`+P`"$?@!!$`M`2(0
+M+0`(07@HI0`P`$@0+=Q(`$AE"``!_$@`2!2@_[L``!`M"``H00```````BEX
+M``(9^`"C&"T\!10``&(0+P`$,3C<I48(``(Y>``$&+@`XA`O`,,X+P`"$?@`
+MY#@M`*(0+0`'.7@`1Q`MW$<`4&3G``$(`"@S_$<`4``",7@``AGX`,,8+3P'
+M%```8A`O``0Q.-SI1@@``D%X``08N`$"$"\`PT`O``(1^`$$0"T!(A`M``A!
+M>"BE`#``2!`MW$@`*&4(``'\2``H%*#_CP``$"T(`"A!`````'RE^`,\`A0`
+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
+M9%;_Z``7(CA\H\8'`K:P+7RC8P<`$8@`_.,``-Q#R.#^1@``W$/(X/[$``#<
+M0LC@?![X.PP`MU(D!``#/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$
+M)'@TA#3;`$0`'=Y"`````"`0``0DNLA1``\`GB`M`````'P"^#L`@A`K%$``
+MIP*`*"U\`_@[9&,`9'P"^#L`0Q`K%$#__0````#>0@``Z%'_]``````\$O_P
+M/`0``S92`"-^Y&('_L0````2DOPV4@#X)`0``]Y"```,`+=2`````#P$``$\
+M`R&--(2&H#1C[T%P1!`#``,<.#1C:]L``QQX-&,TVP!#`!T``"@0``4LNGP"
+M^#MF1S<8`*(H+0*G."U\`_@[9&,#Z'P"^#L`0Q`K%$#__0````#<X@``?$,$
+M0Q!@``4`````?`3X.P"%("L4@/_S`````!1@`'PP1/__R%``?@"`$"W^`@`0
+M```0+=^_`-C?O@#0W[<`R-^V`,#?M0"XW[0`L-^S`*C?L@"@W[$`F-^P`)`#
+MX``(9[T`X#P"__``%*'X-$(`(R0$``$``A+\,B;__S1".!@R<P`??H(:"@*"
+M."W>40`09$7_\`*%@"UD1?_H?(/&!P*%H"U\@V,'`!,B./SC``#<0\C@_@8`
+M`-Q#R.#^A```W$+(X'P2^#L,`+=2)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!
+M``0D.#2$:]L`!"1X-(0TVP!$`!W>`@`````@$``$)+K(40`.`)(@+7P"^#L`
+M@A`K%$#_QP``$"U\`_@[9&,`9'P"^#L`0Q`K%$#__0````#>`@``Z%'_]```
+M```\`O_P,B;__S1"`",\!``!_@8````"$OPT0@#X?F1B!]Q#``#^A```W$(`
+M`'P1^#L,`+=2)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X
+M-(0TVP!$`!T``"`0``0DN@"1("W>`@``R%'_H```$"U\`O@[`((0*Q1`_YP`
+M`!`M?`/X.V1C`&0`````?`+X.P!#$"L40/_]``````@`+<8`````/`00"V2$
+M3\`"8#`M```X+0P`%Y8"($`M)`+__P@`+6?^`@`0/`00"P*`*"T(`"W89(1/
+M&#P$$`L"@"@M"``MV&2$3W`\!!`+`B`H+0P`%Y9DA$[P"``M:"0"__\"("@M
+M#``7EF2$3L@(`"UH)`+__V>]_[```!`M_[0`."04`##_L``8`("`+?^_`$C_
+MM0!`_[,`,/^R`"C_L0`@W(,`&/^@`!!\8T@!$&``!?^@``@`8!`M)`/__WQB
+M_\9D5``PW@,``#P'_X#<10`@-.<!*=^H`!``!SH\?&-8`C!D#_`P9@@``(88
+M"WRE$P-\J)R&/`04`-R$1@`\!0`K-*6@`#!C`/_?I@```&48+0`#&+A\@Z@*
+M_Z@`$-Q%`"A\$P`[?G,)PWRF_`5^9SD&_Z8``-Q&`"`PQ@__IZ8`!MSQ```2
+M(``I)`+__P(@D"U\4O_&```H+0P"9F`"0"`M`J`@+0*`*"T,`"SB9D8`"!1`
+M`#(D`P`1WZ(`"*.C`!!^`T@!?B)(!?^B``B7H@`&IZ(`"````4\\`O^`9Z0`
+M$#1"`2EGI0`(``(2/`.@,"U^8CD&`@`X+?Q#```,`*7R)`@``=^_`$C?M0!`
+MW[0`.-^S`##?L@`HW[$`(-^P`!@#X``(9[T`4``````\!!`+?A!(`0P`%Y9D
+MA%!````!3SP#_X`D`O__-&,!*0`#&CQ^8SD&_'```-^_`$C?M0!`W[0`.-^S
+M`##?L@`HW[$`(-^P`!@#X``(9[T`4#P$$`L,`!>69(10&`@`+D8D`O__````
+M`&>]_]```!@M_[$`"/^_`"C_M``@_[,`&/^R`!#_L```W((`&'Q"2`$00``$
+M`("(+0!`&"TD`O__?$/_QMQE``@D`@`@)`0`,'RE!L(`A1`+`&(0+=Q#`!`4
+M8``")`,``?Q#`!#<0P`8%&```CP#``/\0P`8W$,`(!1@``(D`R0`_$,`(-Q#
+M`"@48``")`,`0/Q#`"C<0P`X%&```SP#`#\T8__^_$,`.-Q#`$`48``")`,`
+M`?Q#`$#<0P!0%&```B0#`$#\0P!0WB,``#P$%`#<A48`?&-8`C!D"``0@``#
+M`&`P+3!C#_``8#`M/`,`*S#&`/\T8Z``)`3__P##&"T``QBX?*,8"A!D`(`T
+M$*Z`/`0`_W!P@`,TA/\_0`9X``#$("0\!@`-``.1NS3&EP!PAB`J<D8`;C!C
+M`#\`AB`D`+"`+0!@F"UD10!@%(``P&8#!#AH2```:$<`"&A&`!!H1``89$(`
+M(+!H``"P9P`(L&8`$+!D`!@41?_V9&,`(&A%```\!`@Q:$(`"#2$)ND`!"0X
+ML&4``#2$>-6P8@`(/`(4&-Q"5V@`!"2XW@8$2&2$]\_>!01@W@,$:``"$/H`
+M1``=C@0$=```$!``HQ@O``,8^JX##+@``A$Z<,(0`PP"8HS^`@1(C@0$?`P"
+M8HP``J``W@4$B-X$!(`FE``'W@,$.``"$``"@J`C`*0@+P`4H,*N%`R\``0@
+M^A1@`$RN!`S`W@($0!!``#@\#!08C@4,Y)($`#;=@U=X`*`0+<!F`G04P/_^
+M)`8``>!F`G00P/_[`````#P'_X``$I-`-.<!'P)3F"4`!SD\`*0@(33G*"T`
+MI#`J``<Y./SS```0P``>``4H)SP*_X``I"@A-4H!'SP$__!D2P`!?*7X`P`*
+M4+PTA``C`658+35*!`$`!"+\``(4>``+7'@`"E&X)`G__R0(`1@TA`#X/`<`
+M`I8%!(X`2A@M?&:2`@!'$"T`!2@\?26$!OQE```0R``2`````!1+__8`````
+MW8)7>````4^L0`)T```!3PP!-W8"("`M```!3]^_`"C?M``@W[,`&-^R`!#?
+ML0`(W[````/@``AGO0`PW(,``!1+_^0`````"``O*MV"5W@`````C@0,]#P,
+M%!B2!0`WW8-7>`"`$"W`9@)T%,#__B0&``'@9@)T$,#_^P`````\!O^``!([
+M0#3&`1\`\S@E``8Q/`"%&"$TQB@M`(,H*@`&,3C\QP``$*``'@`$("<\"?^`
+M`(,8(34I`1\\"__P9$H``7QC^`,`"4C\-6L`(P%#4"TU*0@%``M:_``"%'@`
+M"E1X``E)>"0$`1@U:P#X/`@``MX&!'``21@MW@<$8'QED@(`2!`M``8P/`#'
+M,"7\9@``$*0`"0`````42O_U`````-V"5W@```%/K$`"=````4\(`"[TW@($
+M0-UC```42O_L``````@`+W/=@E=X`````/X`!#@"("`M#`$W=OX`!$````%/
+M"``O,=^_`"@`````9[W_L```$"W_L``8`("`+?^_`$C_M0!`_[0`./^S`##_
+ML@`H_[$`(-R#`!C_H``0?&-(`1!@``3_H``(`&`0+20#__]\8O_&W@,``#P1
+M%`#<1P`@WZ4`$-XF1@!\8U@",&0/\#!H"```B!@+?.<3`]^D``!\Y9R&/`<`
+M*S!C`/\TYZ```&<8+0`#&+A\PZ`*_Z4`$-Q&`"A\Q/P%_Z0``-Q&`"`PQ@__
+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
+M-!6N@'"5$`/<8T8`_[,`J`"@F"W_L@"@`("0+?^Q`)@#H"`M_[``D`#@B"W_
+MOP#``,"`+?^T`+``8A`ME%0`,`P`\G`"@"@M!$`"@CP$$`N/HP``!&`"=V:E
+M48(\`O_P``.B.S1"`",`%*'X``(2_#1".!A\96('?H(:"@*"."UD5?_H)`0`
+M`P*5,"U\`\8'_.,``-Q#R.#\Q0``W$+(X`P`MU(`````/`0``3P#(8TTA(:@
+M-&/O07!$$`,``QPX-&-KVP`#''@T8S3;`$,`'0``*!``!2RZ?`+X.V:D`!``
+MHB@M`H0@+0````!\`_@[9&,#Z'P"^#L`0Q`K%$#__0````#<@@``R%$`!0``
+M``!\`_@[`&48*Q1@__0`````R%`".C!#__\D`@%!%&(".-^_`,`28`$`/!,2
+M%"0"`!8`$I"X$@(![69SOQ!^<D`*/`(4&(Q"5HP00``)CZ,``(^G```\!!`+
+M9(14F`(@*"T,`!>6`@`P+7YR0`J/HP``/`7_\#2E`",`!2K\``,2.S2E.!@`
+M`A'X,&,`_P!%("T`8#`M`(`8+7R'D@)\`RD&W&0``'P$Q@?\9```)`,!&!#C
+M`?\`````/`3_\#$(__\TA``C)`4!&``$(OPTA#@(`$08+0!@D"U\8Y("?!(I
+M!OY(```090'A)`,`%CP$__`TA``C?,-B!P`$(OPTA#@``$00+0!`*"U\0I("
+M?`4I!ORC```D`P$8$$,!XP````!\$_@[#`"W4B0$``,\`P`!-&.&H#P$(8UP
+M0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`1``=WD(`````(!``!"2ZR%$`#P"3
+M("T`````?`+X.P""$"L40``+CZ,``'P#^#MD8P!D?`+X.P!#$"L40/_]````
+M`-Y"``#H4?_T`````(^C```\!O_P-,8`(P`&,OP``Q([-,8X&``"$?@P8P#_
+M`$8H+0"@("U\IY("?`0I!MR%``!\!<8'_(4``"0$`1@0Y`'#`````#P%__`R
+M,?__-*4`(R0&`1@`!2K\-*4X"`!%("T`@)`M?(22`GP2*0;^40``$(8!LP``
+M```\!/_P<&,B,C2$`"-^`R`'``0B_#2$.```1!`M`$`H+7Q"D@)\!2D&_*,`
+M`"0#`1@00P&C`````'P0^#L,`+=2)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!
+M``0D.#2$:]L`!"1X-(0TVP!$`!W>0@`````@$``$)+K(40`.`)`@+7P"^#L`
+M@A`K%$``"X^C``!\`_@[9&,`9'P"^#L`0Q`K%$#__0````#>0@``Z%'_]```
+M``"/HP``/`7_\#2E`",`!2K\``,2.S2E.!@``A'X,&,`_P!%("T`8#`M`(`8
+M+7R'D@)\`RD&W&0``'P$Q@?\9```)`,!&!#C`6X`````/`3_\"0%`1@TA``C
+M``0B_#2$.`@`1!@M`&"`+7QCD@)\$"D&_@```!!E`5\`````/`3_\"0#`!8T
+MA``C?,-B!P`$(OPTA#@``$00+0!`*"U\0I("?`4I!ORC```D`P$8$$,!3P``
+M``!\$?@[#`"W4B0$``,\`P`!-&.&H#P$(8UP0Q`#-(3O00`$)#@TA&O;``0D
+M>#2$--L`1``=W@(`````(!``!"2ZR%$`#@"1("U\`O@[`((0*Q1```L``!`M
+M?`/X.V1C`&1\`O@[`$,0*Q1`__T`````W@(``.A1__0````````0+=^_`,#?
+MM0"XW[0`L-^S`*C?L@"@W[$`F-^P`)`#X``(9[T`R(^C```\!?_P-*4`(P`%
+M*OP`$I"X``,2.S2E.!@``A'X,&8`_P!%("UF<[\0`(`8+7R(D@)^<C@*?`,I
+M!MQD``!\!,8'_&0``"0#`1@1`P#Z`````#P$__`PY?__-(0`(P`$(OPTA#@(
+M`$08+0!@B"U\8Y("?!$I!OXE```D!0$8$&4`Z@`````\!/_P)`,`%C2$`"-\
+MPV('``0B_#2$.```1!`M`$`H+7Q"D@)\!2D&_*,``"0#`1@00P#:`````'P4
+M^#L,`+=2)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0T
+MVP!$`!W>(@`````@$``$)+K(40`/`)0@+0````!\`O@[`((0*Q1```N/H@``
+M?`/X.V1C`&1\`O@[`$,0*Q1`__T`````WB(``.A1__0`````CZ(``#P$__`T
+MA``C``0B_``"BCLTA#@8`!&)^#!"`/\")!@M`$`H+0!@$"U\9I("?`(I!MQ#
+M``!\`\8'_$,``"0"`1@0P@"D`````#P$__`\`@`!-(0`(WRB8@<`!"+\?@(@
+M!S2$.``")!@M`&`H+7QCD@)\!2D&_*(``"0"`1@08@"3``````P`MU(D!``#
+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
+M_[8`,&1"+@#_M0`H`H*@+?^R`!#_L```PH(`6!1`__XD`@`!XH(`6!!`__L`
+M````/`(`_S"2`#\T0O\_``0INT`#>```8A@D/`(`#31"EP`08@#./!D4&-\B
+M5WC`0P)T%&#__B0#``'@0P)T$&#_^P`````\`O^```4C0#1"`1]PI@$R``(1
+M/`"2."4T0B@M```8+0`"$3C\1```9%4-8'S5J@K\1P``?JPX`A)``+%^N#0"
+M`&Q@(0!L$"H00``[``,4>#P-_X`D"@`!-:T!'R0/``$!H+`M``UH_``6L'PU
+MK0@!``UI>#;6!.=EJP`@``I0/``/?;P`%K'X94K__V5P`$!E[___`-:P+0@`
+M/2IE;@'0)&,``0`$)WS]!```/`0``A!L`"$`1!`M`$T@+0!+,"W\B@``/`?_
+M@-S(```TYP$?``<Y/"0)__\TYQ`+`%"X+7T(^`,`!SDX?2AX!@!'("W\R```
+M9.?_\/[J```P:``_W(8````(1'@`1S@M`0Y`+7S&^`/\A@``_.\``!9`_^`D
+M!``!/`0``B1C``'^R0``%&S_X0!$$"W?(E=X```!3ZQ``G0```%/,Q@`_P,2
+M$"H40`"!/`00"WZB,`-^M3@",$(`_Q)``&(`0``3)D7__W"U`````"@2-`*N
+M@"0&__]R(A`#WF-&``(@("T`8A`MW$,`"/Q`#.#\0`SPK$8-`'P#]X;\0P`(
+M_$`$.`P`&3S\0`1````!3S00KH`"("`M#``2/'(P@`/>8T8`9@(.``!B$"W`
+M0P`8%&#__B0#``'@0P`8$&#_^P````#>=D8``M`8+8QB#AP00``A`````(QU
+M#00\`P`"-&.A@'*CJ`,\`P"N-&.$``*CJ"T80``4`M6H+20#%=`D0O__<'$8
+M`WQ"^`,"T(`M9M8-(&80#1@`8A`M``(0^`+"L"T`````W@4```*@("UF$``(
+M#``F_@(@,"T6%O_Z`````-YV1@`T`JZ`<B(0`P+"$"VL0`X<-`*N@'(B$`-D
+M0@X``L*P+0```4^NP``8```!3Q)```0"("`M)`7__PP`&B```#`M```!3ZZ`
+M`%@```%/W[\`0```$"W?MP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[``
+M``/@``AGO0!(`````',5```(`#U:```H$@````!S#!@#?JP\`S&,`/\(`#T,
+M`8-@(P`````\`O^`<*0!,C1"`1\D`___``(1/#1"*0,``A$X`((0+=Q5```2
+MH__^?K@T`C,8`/\#$A`J$$#_@WZB,`,\!!`+`D`P+0P`%Y9DA%9`"``]:S00
+MKH``````-`*N@#P%%`!P@A`#W*-&`&1"+@``8A`MP$,`6!1@__XD`P`!X$,`
+M6!!@__L`````W*-&`#P&`,0`9C`MC,:1F!#```,PAP`_$.``(20)@`$\!0#$
+M`&48+8QCD9P08``6,(4`/Q2@`!0D!H`!``0A@@`&-+@\!__P-,9@`W"$/C)\
+M!0`[``8WN'RE"<,TYP`C``4I/#2$``@TQ@`H``<Z_'QD^`8`IC`E-.,`^/S$
+M````HR@EW*,``````4^L0`!8```!3P/@``@``!`M```````$&8(`"4RX/`C_
+M\#4I8`,U"``C?`<`.P`)3[A\YPG#``<Y/'!C/C(U*0`H?,/X!@`(0OP`Z3`E
+M_,,``#4&`/C<HT8``.8X)=SE```(`#WM/`4`Q``````\`@`"/`,4`#1"H8!G
+MO?^P<((0`]QC1@`\!`"N_[X`0#2$A`#_MP`X)!X"`/^V`#```+`M_[4`*/^T
+M`"``1!`M_[,`&`!BJ"W_OP!(``69N_^R`!`PI0`__[$`""04``'_L```9G,`
+M`=ZR(%@`M*`4`!2@)P`3F/AFMR!@`````-Y0```2$@`A`A,0+681_]C<0__0
+M`B`@+0*#&"0,``P,_$/_T`P`#"`"("`ME@+_^!1``!,`````W@+_V#!"``$`
+M`A``%$``#@````#>`P``W@(`"/QB``C>`P`(W@0``/QD``#>HR!@_@,``/ZP
+M(&#>`P``_A<`"/QP``@`0(`MWA```!82_^$"$Q`M9M8`$!;>_]MF4@`0W[\`
+M2-^^`$#?MP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!0
+M/`(``F>]_^`T0J&`/`,4`'""(`/<8T8`_Z4`"`"@."W_I0``/`4`KO^_`!@T
+MI80`_[``$`"%$"T`8B@MW*(@6!!``"T\`Q[<-&-O04BC0@```!@M2*,"`8NC
+M``)(HP(&DZ,`!DBC`@23HP`'2*,"!$@C`@%P8R$R`$,8+=QD```49``&````
+M``@`/K/<HB!@W(0``!!D`!@`````W(+_T!3B__MDD/_0``81NR0#``%D0@`!
+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
+M`!*1@GP1^#L,`+=2)`0``SP#(8TT8^]!<%(0`P`#'#@T8VO;``,<>#1C--L`
+M0P`=```8$``#'+H`<1@M?`+X.P!#$"L40/_])!*``3P1(8T`$I3X-C'O0392
+MP`<`$8PX`!*7>#8Q:]LV4@#``!&,>`)RD"TD%B<1`EZ0)38Q--L`````?!7X
+M.PP`MU(D!``#``(8N`!B$"T`40`=```8$``#'+H`=1@M`````'P"^#L`0Q`K
+M%$#__0````#>0@``)M;__Q+``$LP0A__%$#_[0`````D$H`!/!$AC0`2E/@V
+M,>]!-E+`!P`1C#@`$I=X-C%KVS92!!@`$8QX`G*0+206)Q$"7I`E-C$TVWP5
+M^#L,`+=2)`0``P`"(+@`@A`M`%$`'0``$!```A2Z`%40+0````!\`_@[`&(8
+M*Q1@__T`````WD(``";6__\2P``CWZ4`&#!"'_\40/_L/`+_\"0#``$T0@`C
+M``(6^#1"X`$``A0X`F*8+0)^\"7?P@``?&):Q__"``#>X@``WH(``'P">\?^
+M@@``WN(``*X#`$@```%/K@``1````4_?OP!HW[X`8-^W`%C?M@!0W[4`2-^T
+M`$#?LP`XW[(`,-^Q`"C?L``@`^``"&>]`'`\!!`+WZ8`"`P`%Y9DA%C("`!"
+M?3P"__#?I0`8/`00"]^F``@,`!>69(18>`@`0ELD$H`!`````&>]_[`\`P"N
+M_[$`"#01KH!PD8@#_[0`(#P4%``T8X0`WH)&`/^_`$C_O@!`_[8`,#P6``+_
+ML@`0`%&(+?^P```VUJ&`_[<`.`"`@"W_M0`H`*"0+?^S`!B.-0T$CC<-#'*V
+ML`,"P[`M`%:P+8[3```,`3AF`F`@+0)@("T,`3AZ`$#P+3P#%!B,8U:,$&``
+M#3P#$`L\!1`+9&-9<&2E66``<B@*/`00"V2$61@"`#`M`J`X+0/`0"T`0$@M
+M#``7E@+@4"W>(@`(?$('0A)"`!PR`@`_%$``)@`0B;L\`A089$)(,``1B+@"
+M(H@MPB(``!1`__XD`@`!XB(``!!`__L`````WH)&`#0#KH!R`X`#`%"`+=X"
+M``A^0N]&_@(`"````4\20``F`L`@+0P`06X````````!3ZX@``````%/W[\`
+M2-^^`$#?MP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!0
+MWH)&`#0#KH!R`X`#`%"`+=X"``A^0N]&_@(`"````4_?OP!(W[X`0-^W`#C?
+MM@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`%`,`$&6``````@`
+M0O<`````9[W_:/^W`(```+@M_[0`:/^_`)#_O@"(_[8`>/^U`'#_LP!@_[(`
+M6/^Q`%#_L`!(W((`&'Q"2`$00``$`("@+0!`N"TD`O__?%?_QMZ#```\$Q0`
+MWFU&`#P%`"O>YP`(-*6@`'QC6`(P8@_P,&0(``!$&`M\YP;"``<^_"0$`#`D
+M`@`@,&,`_P"'$`L`91@M)`0`(``#&+@D!0`P?:.P"BK&`0!RR/_N.,8``0$&
+M,"44P``I`*<@"S0(KH!RR$`#`:A`+=T&``@$P0`1`````-C>``\"Y(`M/`X0
+M"]X)``!ESF!(E00`,#+%`#\`H(@M?2@FPC$(`/\`@*@M``AX^'W/<@H!P``(
+M`0`H+0`````\!!`+/`40"P+`,"UDA%FP#``7EF2E8B#?OP"0W[X`B-^W`(#?
+MM@!XW[4`<-^T`&C?LP!@W[(`6-^Q`%#?L`!(`^``"&>]`)@\!!`+/`40"P+`
+M,"UDA%F`#``7EF2E8B#?OP"0W[X`B-^W`(#?M@!XW[4`<-^T`&C?LP!@W[(`
+M6-^Q`%#?L`!(`^``"&>]`)@T`JZ```"0+7+"&`.2!``%D@(`!GR">@0!HV@M
+MH:(`-I("``>AH@`WWN<`"'SG!L(`!S[\`````!#@``0`````WO``*!8``WX`
+M````#`$W=@*`("T```%/W[\`D-^^`(C?MP"`W[8`>-^U`'#?M`!HW[,`8-^R
+M`%C?L0!0W[``2`/@``AGO0"8`H`@+21%``@"P#`M)`<`#PP!Y&P``````$"0
+M+=[G``A\YP;""`!#E``'/OPT`JZ`?21Z`W+"&`,LA``!``"0+0&C:"W=H@`(
+M?(+.1OVB``C>YP`(?.<&P@@`0Y0`!S[\-`*N@'TD>@-RPA@#+(0``0``D"T!
+MHV@MW:(`"'R"UH;]H@`(WN<`"'SG!L((`$.4``<^_`*`("TD10`(`L`P+0@`
+M0ZPD!P`2-`*N@```D"URPA@#D@0`!@&C:"W=H@`(?(+%QOVB``C>YP`(?.<&
+MP@@`0Y0`!S[\%B#_M202__\D`P`!/`(4&*Q#5HP(`$.4``"0+18@_ZXD$O__
+M/`(4&```D"T(`$.4K$!6C'TI>@,5(/^G``"0+0P`)!@"P"`MWN<`"'SG!L((
+M`$.4``<^_)("``<00`,H`````!8@_YPD$O__`L`8+20%``&2!``%?`,H!P!B
+ML"4T`JZ`<L(0`Y(#``9\@WH$`&"H+0&B:"W=H@`PW:0.*'RB<X80@_^G_:(`
+M,-VB``@$0`/6``"(+?VC#BC>YP`(?.<&P@@`0Y0`!S[\`````)("``<00`,Y
+M`````!8@_WXD$O__`L`8+7P#*`0`8A`E`$"P+30"KH!RPA`#`:)H+=VD`##=
+MI0XH?`1SAA"@_XW]I``PW@0``#"E#_]\I+H'_@0``-YD1@``@A`M_$`.*)(%
+M``8"P"`MD@(`!0``D"T,`"2`?$5Z!-[G``A\YP;""`!#E``'/OR2!0`%?20M
+M0I("``8`!"5\?*)Z!#!%__\0@`,N`*"`+20"``$``A5\%(+_50``D"T\!!`+
+M`L`P+0P`%Y9DA%T0)@+__S0$__\`1"`K$(`#TR0$$K42!`/G)`0A&!($`]@D
+M!Q70?$7)@W+'.`,P1@`_-`*N@"0(``%RPA`#WF1&``#(,`0`!C`G`.4H+62E
+M`<``!2CX`((0+0"%("W<A0`X`,4H)/R%`#B,1"X\)(3__ZQ$+CPT`JZ`/`00
+M"W+"$`/>9D8`9(1=0`#"$"T"P"@MD$8N.`P`%Y8``)`M"`!#L-[G``@6(``*
+M-`*N@)("``8"P!@MD@0`!7P#*`=\@GH$,$+__P!#&"4`8+`M-`*N@#P&``)R
+MPA`#-,:A@`&B*"UD1`X`C*4-!`&D("UPIC`#_Z4`,#P%`*XTI80``,4H+0&E
+MD"W`A0`8%*#__B0%``'@A0`8$*#_^P````#>9$8``((H+8RE#AP8H``2)*7_
+M_R0&%=!PUC`#`((0+7RE^`-D40T89(0-(`#%$"T``A#X`(*H+0````#>)0``
+M`D`@+68Q``@,`";^`L`P+18U__H`````W@(``&8(``A\0BU"$$`#6O^B`!`D
+M`A70``#P+0+"`!QF0@!8```8$O^B`"!F4`!,9DD`4```J"TD$0`!_Z,`*&9#
+M`%3_HP`8`````````4__J0``<2`PGP```4^.!0`(%*;__@`````````````!
+M3\($```D!0``%)4`!`(@("WB!```$(#_^B0%``$````````!3Q"@__4"P"`M
+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
+M/`00"V2$8H`(`!>69*5F,#P$$`L\!1`+/!3_\&2$8J!DI68P-I0`(PP`%Y8\
+M$__P`!2E^#9S`",\`O_P-I0$0P`3G?@T0@`C`!2E.#9S!$4``A+\)`,P`/XC
+M`````(`M-I0`2``3G3@\$@`0-%$`^"05`(`,`3AF)`0!``(`*"TF$`!`#`$X
+M8@!`("TP0@`_``(B.&1#`0!\E!(*``,:.#!"`#\``A#X`%,0+=Q$````DB`E
+M_$0``-XB``!\=!(*,$(`/V1"(````A#X`%,0+=Q#````<A@E_$,``-XB```6
+M%?_D/!;_\#P2__`VU@`C-E(`(P+`H"T`%K7X-M8$0P`4I?@`%K4X-I0$10`2
+MDOP``(`M-M8`2``4I3@\$P`0-E(`^"05``(`$(D`)A```28Q"@`,`3AF`B`@
+M+0(@("T,`3AZ`$"X+0+@("T,`3AB`$`H+3!"`#\``B(X9$,!`'R6$@H``QHX
+M,$(`/P`"$/@`5!`MW$0```"3("7\1```WD(``'QV$@HP0@`_9$(@```"$/@`
+M5!`MW$,```!S&"7\0P``WD(``!85_^``$(D`"`!)_#P"__R,A0!8/`@2#V4(
+MVP```!@M`0`0+20'`!``H#`M`````(Q$```0A@`(9$(`("1C``$49__[````
+M`'P$`#L(`,"^?(0)PP```````QEX`0-`+8T"`!PD0@`!`^``"*T"`!QGO?_`
+M_[0`(#P4(8W_L0`(-I3O00`4I#@`@(@M_[8`,"0$``/_M0`H-I1KV_^S`!@`
+MP*@M_[(`$``4I'C_L```_[\`.`P`MU(`H(`M-I0TVP`1D8,`5``=,C,`/P``
+MH!`"0+`M%F``&``4I+HD`@`"$@(`2R8"__\L0@`"%$``2B0"``,2`@!,/`00
+M"P(`*"UDA&+X#``7EB02``3?OP`X`D`0+=^V`##?M0`HW[0`(-^S`!C?L@`0
+MW[$`"-^P```#X``(9[T`0"0"``,2`O_S)!(`!"0"``(2`@!=`````'P%^#L`
+MM:@O)`2``0*T`!\"@`'T)`(``29S__\`!"2X/`/_\`)BF!0T8P`C-(1@`WP"
+M`#M\0@G#``,:_``$)[@``A$\%L``'```H!(TA`(@`$0@)31C`/C\DP```$,0
+M)=Q"```\`@`!`!0H`#1"AJ$`HA`J%$#_T202``0\!!`+#``7EF2$8RC?OP`X
+MW[8`,`)`$"W?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`0``````(
+M`$K@-(0"*`P`/-0"("`M?`+X.P@`2KLD$@`#``````P`/=@"("`M?`7X.P"U
+MJ"\D!H`!`K0`'P*``?0`!C2X/`/_@#3&8`,T8P$?/`3_\'P"`#L`!C>X?$()
+MPS2$`",``QD\``(1/#3&`A@`!"+\-&,I`R0'``$`1C`E`D<X%#2$`/C\QP``
+M<E8!,@`#&3@`1!`EW$(```+#L"W^P````D`@+0P`E&(``*`2"`!*YCP"``$`
+M````#``\U`(@("T(`$K,`````&>]_\#_M0`H`,"H+?^T`"``H*`M_[,`&`$`
+MF"W_L@`0`("0+?^Q``@`X(@M_[\`./^V`##_L```?!;X.]R"`!@"Q[`O?$)(
+M`1!```0``(`M`$"`+20"__]\4/_&`@`@+0``*"T,`F9@)`8`,"0#``$D`@!\
+M``,?//X5`!!\0]4&_@,`"```$"VN%``,_A8`&!9@``O^$0`@W[\`.-^V`##?
+MM0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`0#P"$&("8!@M-$)-TP`3
+MG\-P8A`#?!$`.WXU^`,``A&_#`&7Q@!3F"/?@H(P/`3_\-^%@C@TA``C``0D
+M.)Q#`"`TA``+W+0````$)O@TA`#`W(0```!S&"L48`!*+F,``A1@`$,\!!`+
+MC$,`'#P%__`TI0`C<C$H\MQ"````!2PX-*4`"WQD^`,`!2[X<J0@`S2E)``D
+M8___?!4`.WZU"<,")8@M`!4I/'QC^`,`L8@EWC```'X0G0,"<(`M`@.`)`($
+M@"T`$(%X#`&7Q@!0@"W?@H(XC@0`#-Q"``@``A#Z$(``,&1#__^.!@`,``,8
+M`(X%``Q^1$@!W@(`$`!F&",DI?__<&/X\JX%``P`0Q@MC@(`""1"``&N`@`(
+MWD(`"'Q%"`)\0DB"``4LO``"%3P`HA`E`$00)?QB``````%/W[\`.```$"W?
+MM@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`$``````)!,``@P"
+M?WIDA&.8"`!+=M^"@C`\!!`+#`)_>F2$8U@\!!`+#``7EF2$9"`(`$M2)`(`
+M`0`4(``$@``Q`````#*U`/\RE`/_/`3_@#2$`2D`!"(\?J0Y!GZ$S`?<A```
+M$(``(@````".!@`(`(`H+20'__\0P``7?.7_QMX&`!```QCX?(1(`0##&"W\
+M9```C@,`""1C``&N`P`(9$+__GY#2`'^!0`0``(0`*X"``S>0@`(?$0(`GQ"
+M2((`!"2\``(5/`""$"4`0Q`E"`!+J_RB``!\A$@!)`,``?X$``"N`P`("`!+
+MX&1"__X\!!`+#`)_>F2$8^`(`$O!/`00"P``H"T(`$O*``"H+0`````\`O^`
+M-$(!*0`"%?@T0@`!?`,`.P`"%'A\8PG#?&(Y!MQ(```1```^`0`0+20'__]\
+MXO_&)`L``MQ)``@D#0`!W$<`,&1,`"C<2@`8``-Z`'UI"`9\A/@#_$D`"'VG
+M_P:L0``,)`D`?-Q.``A\"GO&H$``!'V*2`7<3``0?2?5!MQ)``!][EB&_$X`
+M"/Q'`#!]K/_&_$P`$'UIW`;\2@`8_$D``*Q``#3\1``X_$4`0/Q&`$@```%/
+MW$0`"'!E"C*,20`,`(`X+7R&"`)\!WL&?(0X@GS'"`8`I"@E`.`@+7RD6(;\
+M1``(```!3R0"``$\!/_```(3O#2$`+-\PIR&``0B?'T"2`5\9#D&?*+M!GTD
+M&04```%/`^``"/R"```\!!`+/`40"V2$9#@(`!>69*5F2`````!\!O@[/`7_
+M@#P#``$TI0$?-&/P`HR$`%@`!2^X-*4`G0`%*KA\`@`[?$()PV2G`!```A$\
+M`$5`)0!'2"7=!0``W2H``!"#`"H`````)&@``0"(*"L4H``(`````!"(``DD
+M8P`"$(,`&``````#X``(```````````D8___%(/_^P`````\`O^`)`4``31"
+M`1\P@P`/``(0/`!E&!0T0@)Q?`4`.WRE"<,``A(X``4I/`"B$"4``"@M_$,`
+M``@`2_P``````````&3G_/`D`P`0`$<0)?Q#```50``3`4`H+3P$$`L(`!>6
+M9(1DN`````!DY_SP)`,`!`!'$"7\0P``$*``!0````#]!0``/`0``0@`2_PT
+MA/`"/`00"P@`%Y9DA&1P`````#P$``']*@``"`!+_#2$\`3?@X%X/`(4&-Q"
+M5VAGO?W8_[\"(/^S`A@`@Q@O_[("$`!#$"O_L0(($$``,?^P`@`\$__P/!$2
+M#S9S`",\$!(/?!(`.P`3FOQ^4@G#`!*1/#9S`/AF,=L`9A#;&/^$@7AF,0(8
+M"`!,MP)3F"4`````9A``(!(1`!_?OP(@C@(`!!!`__L#H"`ME@@``-X&__`D
+M!0(`#`)_UMX'__@\`A08C$)6C!1``!H\!!`+W@+_^"0%``&6!```K@``!`!`
+M&"U\0I("?`,I!@"%(!0"0Q@E_&0``"0#`1@40__E`````-YB``!F$``@%A'_
+MY`````#?OP(@```0+=^S`AC?L@(0W[$""-^P`@`#X``(9[T"*(X&``1DA&4`
+M#``7E@.@*"T(`$S$W@+_^&>]_[#_L@`0/!(AC?^U`"@V4N]!/!4``0`2E#C_
+MMP`X-K7P`O^T`"`V4FO;_[8`,":T``'_L0`(`!*4>#P7__X`@(@M_[\`2#92
+M--O_O@!`-O</__^S`!@FEH,6_[```"0$``,,`+=2``"`+=XC`!@`4@`=``"8
+M$'QB2`$00``$`!.<N@!`@"TD`O__?%#_QHX%``PLH@`#$$``$]X>`"`0H``O
+M`````(X$`!0,`$J4`\`P+20#``,``A``$$,`F@````".!@`4`B`@+20%``,#
+MP#@M#`!++```0"T(`$S[)`0``P`````D`@`#$*(`8``````\!!`+#``7EF2$
+M91!^,4@!?`,`.WQC"<,```%//`+_@#1"`2D``A7X-$(``0`"%'A\8CD&_%$`
+M`-^_`$C?O@!`W[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(
+M9[T`4`````".`@`4$%4`"-X0`!@`5!@K%&``13P#``$05`!&-&/P!!1#_^O?
+MOP!(/!4``3:U\`(2`/_F<J*H*SP6(8T\%``!-M;O00`5J8``%K0X-I1S&#;6
+M:]LD$@`!`!:T>.H```<VUC3;```````0@'H2`/_7)E(``<H`__P``````E6X
+M)0P`2#X"X"`M+$(``21%``%\`O@[`%X0+R:4``$`4P`?`F`!]`(@("T"X#`M
+M`\`X+0``&!(``Q```H*@(PP`2RP"@$`M$$#_Z`````!\%_@[#`"W4B0$``-^
+M@_@#<$,0`P!6`!T``!@0``,<N@!W&"U\`O@[`$,0*Q1`__T`````#`!,X@(@
+M("T(`$U5`!"`>HX$`!0D!0`##`!*E`/`,"T(`$TC?C%(`31C\`$40_^HW[\`
+M2`!7@"$`$(`K`!"!@`P`2#X"`"`M+$(``21%``%\`O@[`%X0+P(`,"T`4P`?
+M`F`!]`(@("T#P#@M```8$@`#@``"T(`C#`!++`(`0"T00/^3W[\`2'P3^#LD
+M!``##`"W4GX0^`-P4!`#`%(`'0``&!```QRZ`',8+0````!\`O@[`$,0*Q1`
+M__TD!``#"`!,^P````!\`O@[`%X0+P!3`!\"8`'T/!,``39S@KD``!@2``,0
+M``)BF",:8/]=)`4``XX&`!0"("`M`\`X+0P`2RP``$`M$F#_/B0$``-\$/@[
+M)`0``PP`MU)^<_@#<%,0`P!2`!T``!@0``,<N@!P&"T`````?`+X.P!#$"L4
+M0/_])`0``P@`3/L`````)`.``6>]_W@``QRX_[\`@#1C8`-\`@`[``,?N'Q"
+M"</_O@!X``(1//^W`'`T8P(8_[8`:`!#&"7_M0!@_[0`6/^S`%#_L@!(_[$`
+M0/^P`#C<9```,(0``Q2``/,\!?_P```!3SP0%!AF$%28_[``,'(`$)\```%/
+M/!3_@``"&7@VE`$!``*1^``4I3@"0Y`O-I0)`205``$`%*4X/!X4)WP1`#M^
+M,0G#9I2`"``1B3P\$Q08`C00)69S2#C<0P``/!80`3P7``$"<I`M9M8Q*#;W
+M\`%^HP`'/`0``?Q#```"0"@MW\*(R#2$\`'^5@`(`$#X":Y7`%C>0@`@`$#X
+M"0)`("T```%/_[``*'(`&)\```%/9I0`"``#(7@"-!`E``.1^-Q#```"1)`O
+M`G*0+2;G``$\!``!`D`H+7ZC``<TA/`"_$,``-_"B,BN1P!8`$#X"?Y6``C>
+M0@`@`$#X"0)`("T```%/_[``('(`&)\```%/9H(`"``#(7@"(A`E``.1^-Q#
+M```"1)`O`G*0+2;G``(\!``!`D`H+7ZC``<TA/`#_$,``-_"B,BN1P!8`$#X
+M"?Y6``C>0@`@`$#X"0)`("T```%/_[``&'(`&)\```%/9H(`$``#(7@"(A`E
+M``.A^-Q#```"A*`O`G2@+2;W``,\!``!`H`H+7ZC``<TA/`$_$,`````D"W?
+MPHC()!4`#/Z6``@`0/@)KI<`6-Z"`"`"@"`M/!00`0!`^`EFE"6@/`+_@#1"
+M`1\D`P`/``(1/#1")Q$``A$X`B*()=XB``!\8B!'_B(```````````%/_[``
+M$'(`$)\```%/``(A>``"B?C?PXC(`B2(+P)QB"TF0A(`KB(`6`!`("VN(```
+M`B`H+0!@^`G^-``(WB(`,`)`*"T"("`M`$#X"292``$65?_J)!:``3P2$@\`
+M%K4X/!<0`3;6$`EF4ML`?!0`.WZ4"<-F]RGP`!:W.``4H3PD%0`!```!3_^P
+M``AR`!B?```!3XY"`````R%X``.)^`(DB"]P0ICR`G&(+0!6$"T"("@M`%00
+M)=Q#``!^HP`'_$,``(Y$``!F4@`@W\*(R/XW``@`0/@)KB0`6-XB`"``0/@)
+M`B`@+3P"$@]D0ML`9$("`!9"_^,\`O_\)`-``#1"``L``A0X-$(X`0`"%W@T
+M0@@`_$,``````4__L```<@"`GP```4\\`O^``!`9>#1"`0$`$('X``(5.`(#
+M@"\T0@D#)`,``0`"%3@"$Y@M`H*@)0)@*"W>@@``/`0`!GQB``<\`Q`!_H(`
+M`#P"%"?<0HC(9&,EN/YC``@\`P`&`$#X":YC`%C>8@`@`$#X"0)@("W?OP"`
+MW[X`>-^W`'#?M@!HW[4`8-^T`%C?LP!0W[(`2-^Q`$#?L``X`^``"&>]`(@D
+M!@`#-*4`(SP$$`O\9@````4J_#2C`/ADA&4X`$,0)20%``/<0@``#``7E@``
+M```(`$WF`````#P*$@\\"1(/94K;`#P&$@]E*=L:94H"&@``$"UDQMT`)`@%
+M_@`````H0P7^$&``%0```````ACX``(A>(TG_^8`@R@O`,4H+8RE`!`4IP`(
+M``````@`3PVE(@````````#%*"V,I0`0$*<`"P`````D0@`!``(8^``"(7@4
+M2/_X`(,H+V4I`"`5*O_G``````/@``@`````I2(```"#&"\`PQ@M92D`(!4J
+M_]^@8``6"`!/"@````!GO?_0/`00"_^Q``ADA&5H_[```"00`=__M``@`!""
+M//^S`!@\%!`+_[(`$/^_`"@,`!>6/!,0"WP1`#M^,0G#)`+__P`1B3QFE&60
+M?%'_QF9S9;!F$@R(`A$0)0(`,"W<1P``9A``"`*`("T,`!>6`F`H+182__D"
+M$1`EW[\`*```$"W?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P9[W_^/^_
+M```,`$\4`````-^_`````!`M`^``"&>]``AGO8`0-`+X>/^Q?Z@`P%@M_[]_
+MZ/^^?^#_MW_8_[9_T/^U?\C_M'_`_[-_N/^R?[#_L'^@9[V&V`!=$"W\10``
+M)`+__Q"B`XX`@(@MC((`J#P#``$D!`"!`Z,8+3!%``04H`''``0E?&2$`!C\
+M9/@`-`?X>#0&^```_3@M`-TP+=SH```T!_B(`/TX+0`"(,/<P@``)!0`$/SH
+M``#>(P`X?(((1WQD$4)\8UH"?()!AWQBHD<D`P`!?&(`!WQ#%$(``Q@`)&,`
+M`7QBG$;\P@``EB,`"#0,^""6(@"L`9U@+98D`$``8A`C_80```!$$"$D0O__
+M`$0`&@"``?0T`OB0`%T0+0``&!+\0P``,'#__RX"`@$00`(=)`+__P```4^.
+M(P"H,&(``11``ULT!?C`WB0`&"8-__^6(P"L-!CX,`,=P"TT#/A$?)!(`7R$
+M?`(`<$`M,(?__WT92`$!G6`M_QD``#09^$1\!``[?)8)PP,]R"VME@```..X
+M(X\Y```T`_@H`'T8+202``'\8```-`3X&``9&H`T!?@X-`;X@#0'^&`T"/A8
+M-!;X<#08^&@T&?A(`!*2O#0,\```G2`M`+TH+0#=,"T`_3@M`1U`+0+=L"T#
+M'<`M`SW(+?R````QK?___*````.L8"W\P`````"8+?S@`````/`M_0```&92
+M__C^P```_P```*\C```T!/@8-`/X$`"=("T`?1@MW(0``/Q]```00``#`Z2P
+M+6>F`$``Q+`M/`+_@#0'^$0T0@$I`/TX+8SG`````A8X-$(`!0`"%#A\XCD&
+MW$,``!!@`8$`8*@M)`+__Q*``!Y\5?_&-`CXJ#08^,`T&?BP-`+XN`$=0"T#
+M'<`M_0,```,]R"W_"P```%T0+?\L```T!?@`_$T```*@("T#I2@M#`)E7`*`
+M,"TT!/BX-`7XL#0&^,`T!_BH`)T@+0"]*"T`W3`MW(T```#]."W<K```W,L`
+M`-SC``#>(@`8-`CX4"9N``$!'4`M_0X```*T("U\0C@!$$``!```*"T`0"@M
+M)`+__WQ%_\:6)@"L-!GXJ#0"^,`T!_BP-`CXN#08^*`#/<@M`/TX+?\C```!
+M'4`M`QW`+0!=$"W\2P``_.P``/T-```,`F5<_PX``#0$^$@T&?BH`)T@+8R$
+M```#/<@MWR,``#09^+B6.`"L`SW(+32"``4T!?@@KL(`"'QC2`'^PP```I@0
+M(:;"```T!_C`WRT``#0(^+`T`OB@`+TH+0#]."T!'4`MW*8```!=$"W<ZP``
+MW0P``!&S!%W<3@``$N`!#P``&"TT!_@X`N88*@#]."T`P"`MW.@``#0'^#`"
+MXR`+`/TX+=SG```D"0`"EB(```"`&"TD!``!`0<H+0`$(SQ\I$@%,$(/__[$
+M`!`P9?__KL(`&"0$``&FPP`0`&80*A!``/H"Y;@CEB\``&2%``$`!+DX``4I
+M.`+7N"T"Q2@M``!`+6;W`!`D&?__)!8``3'O#_\"$H`M`,-0(WX02`$"Z!`M
+M``!(+1(```,DA``!`@!(+7\I_\:5)P``90@`$-TP``#\H```W%\```#J2"H`
+MZ5`+?A!(`7X?2`7\7P``I$H``#%*___<20```4,8(0!F^"I^R6,&_$D``*RO
+M``@7X/_D9*4`$`#JN",DB0`!CB4`J#"D``00@`!&,&___Y8D`+`P;___,*4`
+M0`,$P","A"`M`P_`(0*D("T4H`#1,QC__Q9@``6DF``"E)8`!#0(^(`!'4`M
+M_18``(R'```T&/B``QW`+=\8``!HB``,?0KX`P,3*"$`"$`^I(4`!&B%``1\
+MMGP#`LI0+0`%*#Z(E@```590+7SV'@,!2$`M`050+2[%``84H``+``I$.B0(
+M`!0`%K"X``````$$*"UE"``$B*4``'RE^`,5%O_[`450+0`*1#IDA0`*?4IX
+M`P$*4"T`"D0Z?4IX`P$*0"T`"%0Z?0AX`P%(0"TY"/__H*@``0`("@*@H0``
+MCB4`J,BI``@`````EB@`K)8E`+*D@``:`04H(P"O*"&DA0`8`````)%D``$4
+M@`!@`````)%D`"`"A"`M%F``!0*DJ"V6I``$-!GX<`,]R"W_)```-`7X<`"]
+M*"W<I0```+,@(::D``26)0"LD60`(`"D(",`CW@AIJ\``HZE``".)`"H?*4>
+M`P`%*+C(@``(`J4H+9(H`+Z2)`"_`00@(1"``,\``````J0H+0`````68``*
+M-!CX6(RD``R,O@`$-`;X8`,=P"T`W3`M?)D$`WR'!,/_&0``_,<``*R^``0#
+MP_`A$;,`6I2D``Q\!``'```P+0`$(`"DI``,-!CX&'S$&,<#'<`M-`?X*-\8
+M````_3@MI*0`##09^!C<Z```-`?X(`#]."UG!0!XW.<```,]R"W_)0```[@P
+M+98D`*P`=!@AW%8```$'0"&46```-`?X*`#]."T`9!@A_.@``#09^#"M@P``
+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
+M)`C__R7.`0```"@M?<?X`P``&"W\Z(``<,;@\@```4^,AP`$C(@```#H0"H5
+M```Y/`C_X"0'``%PAP`8)`0`40`.<,)\@[H&?`6,!GW#_@9\I=@!?$,Y!GP#
+M"`9]X\P'_,.D```%+SX4H/^G/`4`"88#`&@\`@`)WF5&"#1"H(!\!``[?(3X
+M`W""(`,D`@&@<&(8`P``$"T`I"`M`(,8+=QD`9`")(@M"`!6K_QQ`9!F!0`8
+M$(#_L20.``(``,@M"`!7<@``2"U\I0G#``<XP``%(@``H$`M"`!7*P"'."5\
+M90G#/`/_X#1C`%4`!2D\``,=.#1C``,``QVX-&,`$`"C&"7<90``,*4/_P@`
+M5UVGA8`H``]20#4(`%5P20DS``A"O#4(`%`!2$`M`2A`)=T)``!]*7@!``E`
+M`'TE>`4`Z#@J$.#_O:R(``!\!8P&)`(`"0@`6#=\1?\&"`!8'62$OS`\!!`+
+M/`40"V2E9O`,`GZ\9(1FT`@`6#<D!?__?`+P.Q!`__X\`O^`-$(!80`"$CQ\
+M`P`[?&,)PWQB.08D`P`!``,<_/Q#```#X``(````````````!!``,(0#_WP#
+M`#L$0``,?&,)PSP"_X`T0@$I``(2/'QB.09\@LP'W$(``!!```XD`___`^``
+M"'QB_\8`````/`+_@```&"TT0@$I```@+0`"$CQ\8CD&?(+,!]Q"```40/_T
+M)`/__P/@``@``!`M``40`#"E`_]\`P`[!$``#'QC"<-\@D@!``00"@!`("T`
+M``%//`+_@#1"`2D``A(\?&(Y!GRBS`<#X``(_$0``'R"2`$``!@M``00"@``
+M*"T`0"`M```!3SP"_X`T0@$I``(2/'QB.09\HLP'`^``"/Q$````````W(,`
+M")2&``Y\:$B",0<`_P`'.,)\`O`[$$#__@````!\"0`[?(5(`0$@4"TD"0"`
+M$*D`&0``$"T!`$@M``<XP'P).,0`"$("`.DX)7SC6(;\@P`(K(8`#-R#``A\
+M`P@&_(,`"````4\D`P`!?&)[!CP#__PT8P`+?`*<A@`#&WQ\XNT&?0,Y!GRB
+M2`5\PQD%`^``"/QB``!]2`G#``<XP``(&@``9S@E)`,``7QB>P8\`__\-&,`
+M"WP"G(8``QM\?.+M!GT#.09\HD@%?,,9!0/@``C\8@``W((`@-R#`(C\0P`(
+MW((`B-R#`(#\0P``D((`:!!```0``````^``"```````````?`,`.WR$2`%\
+M8PG#```!3SP"_X`T0@$I``(5N#1"``$``A2X?&(Y!@/@``C\1```9[W_H"0#
+M____MP!()`(``?^P`!``@+@M_[\`6`"@@"W_O@!0_[8`0/^U`#C_M``P_[,`
+M*/^R`"#_L0`8W+(`6*^C``P0P@/ZKZ``")"B`&@40`)9`````(X3`$PT`ZZ`
+MW@(`4#P>%`#?Q$8```"(+7)CF`-\0S@!%&`"/P"3F"V6`P!(+&,``A1@`'D`
+M````W@(`&)('``'>!0!8C$0`#-X#`!!\A!\#``0@@!3@`MX`@#`MC&D```!@
+M."V."``P?2D>`S$I`/\`"4B``20@(0"(("&D9``"```8+8X$`$"L1``(E@0`
+M1*1$``XD!``4$,0`!0````".!``TK$0`&(X$`#BL1``<D@0`+!"```0D!@`!
+ME$0`#'S$&,>D1``,C*0`J#""``000`!$,(0`()2B`+#<J`"@D@8``1"``^0!
+M`A`M$,`#^@````"49P`$).<`*##G__^D1P`"E*@`N)2F`+!H1``,:$,`!`$&
+M,",`!$@^`,<X(0`#0#ZD1P`"C$<``'R$^`-\8WP#`&08+7SG'@.(1@```&8P
+M+2SC``8`R3`M%&``"@#(,"TD!``4``<XN```````@A@M9(0`!(AC``!\8_@#
+M%(?_^P##,"T`!APZ9$0`"GS&>`,`9A@M`$`X+0`#-#I\8W@#`,,P+0`&'#I\
+MQG@#`&88+3AC__^@@P`!``,*`J"!`````!`MC*,`J#!D`@`0@``(,&,`0)2D
+M`++<I0"@$&`#MP"D("V40@`$I((`!*2```:.0@"HR%X`"@````#>(P`(?&,X
+M`1!@``0``!`M`&`0+20#__]\8O_&W@,`(/Q#``#>`@!0E@,`1GQBN@;^`@!0
+MWF(`"-A=`>T\!!`+WB,``'QC.`$48`'#``"@+?A6`FD`````^%4"D0)`("V.
+M0P`,CF(N0!1``F^OHP`,DG8`-P!V`!L"P`'T```0$`!`L"W>@@``)`8``8YD
+M#/1FQ0!#``4H^'S"``<"99@MDG,`('Q%%$*N@P`(``4H`"2C``&/I0`(?&*<
+M1OZ"```"9)@A`F`@+:Z%``R2)0`!DB,``MXB``!\HWH$``,8`"1C``A\8KH&
+M#`")./XB```"8"`M#`")2`!`H"URE/_N`$`H+7!"_^X`5*`E%H`#G204`![>
+M!@!8D@(``0``2"W>!``0)`<`)HS#`*@`@D@*``(@"GQH!X`00`+?`.B@"Y2$
+M``0DA``H,&(`!!!```8`E*`AE,(`MG!C`WHP8P`$`%2@(0!TH"'>`@"`W@,`
+MB(X5`)#>"@"8C@<`H(X3`$S>"`!0_$,`"-X"`(C>`P"`_$,``)("`&@40``,
+M`````'P#`#M^$$@!?&,)PP```4\\`O^`-$(!*0`"%;@T0@`!``(4N'QB.0;\
+M4``````!3][C``B6Y@`.?&M(@C%I`/\`"4C"?`+P.Q!`__X`````?`P`.W[D
+M2`$!@&@M)`P`@!",`J\``!`M`6!@+0`)2,!\##C$``M:`@$L2"5](UB&_N,`
+M"*[F``S>XP`(?`,(!O[C``@```%/)`,``7T7.`%\8GL&/`/__#1C``M\`IR&
+M``,;?'TB[09]8SD&?()(!7S#&04``$@M_&(``!+@``0``````N!(+20"__]\
+M2?_&W2,``'QC.`$08``$```0+0!@$"TD`___?&+_QC)C`#\08``(W\1&`#0#
+MKH!R8Q@#`(,8+=QC#B@P8P__%&``"0````"61`"TW$,````$(T)\@T&'_$,`
+M`)9$`+1\@Z)'_$,``!C@`!<D!@`!W4(`.&5.`#"!1`!DD4P`!'W.2`&52P`(
+M?,+_!MU#`!#=30`8)8P``?U.`!@D#@!]`618(7W"U0;]30`H?,/_QJ5$`!BA
+M3``$I4L`"/U"`#C]1P!(_4,`$)$L``$R@___D28``C"B`__>2P``CD0`J'V&
+M>@0`P&`M?69<`C&+`/]\P]P&)68`#GR-!X`PQ@#_$:``!'S#O`<E9@`6,,8`
+M_WS#O`<PC0`@$:``#B0+`"C=+0`(?:TX`1&@``0``%@M`:!8+20-__]]J__&
+M`,Q@+WUL6`HD#``!?8-K1GUK'@,`"UBX`698(20,``)]8_X',(L`!!%@`!5]
+M@WN&,(M``!%@`J0`````EDL`N"5K__(!9C`A?,.\!R0&``%\PVM&?(8$`!#`
+M`H]\A`1`EDL`NG!D_#J61@"X`60@(0"&("-\@_X')`0``GR#>X;\`X$`&.`"
+M0'T0>@(R`___*&0`#A2``A(`8'`MAX:`*GP$`#L$P`*F`````##/__\\!/^`
+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
+M``<P"C!'`_\```%//`+_@"1C``$T0@$I,@C__P`"$CQDA``(?*(Y!@!H*"I\
+MXLP'_$8``!"@`!<``````B00+3$E``/<0@`(```P+7Q".`$40/_F`$`X+99'
+M```PYP/_```!3SP"_X`D8P`!-$(!*3((__\``A(\9(0`"'RB.08`:"@J?.+,
+M!_Q&```4H/_L`B00+7P#`#M^,3@!?&,)PP```4\\`O^`-$(!*0`"%C@T0@`%
+M``(4.'QB.0;\40``WD(``'Q#6`(P90@`$*```P!@("TP8P_P`&`@+0`"$[X"
+MH"@M,$(P``P`/M@`1"`EW[\`6-^^`%#?MP!(W[8`0-^U`#C?M``PW[,`*-^R
+M`"#?L0`8W[``$`/@``AGO0!@`````"0&``$08`"S``8S?"0-``$``'@M"`!:
+MU```("T`````"`!9^)4D``)]JPG#``E(P``+&@`(`%HT`&E()0`````\!!`+
+M/`40"V2$9T@,`!>69*5H2#P"``DT0J"``!,8N'P%`#M\I?@#`!,Q.'"B*`,\
+M`A0`W$)&"`##,"\`TY@M```@+0`3F7@D`P`!`$40+0!3$"W<10"09*4``0@`
+M7'G\10"0`````#(#__\08``C_Z```"1K__\D"@`!?6OX`P`*4KQE:P`!```X
+M+0`+6/@#H!@M94K_^"0,__\``````2<@+63G``B0B``!D(8``GT&>@2D9@``
+MW(8``-QH``!\QC@!?,A(!0#*,"W\:```?,9(`=R$````!"?^?(AC!OQH```0
+MP``#```8+0#`&"U]@__&%.O_ZOQ@``#?HP``)`T``@@`6P;\`X$(`````-RC
+M`'`\!/_P-(0`(P`$)#@TA``+``0F^#2$`,#<A````(,8+P1A`%L`````W*(`
+M>'P$`#O\0```W*(`8'Q#2`$``A@*```!3SP"_X!\A`G#-$(!*0`"$CQ\@CD&
+M_$,```@`62N.$P!,$(``(P````"62P"Z<&3\.I9&`+@!9"`A`(8@(WR#_@<D
+M!``!"`!:M'R#>X8`````"`!:J7P#:T80P``9`````)1C``0D8P`H,&/__Z1#
+M``0``#@ME*0`N)2F`+`DA/_8`(8@(P"#&"$(`%F8I$,`!(SB``"4XP`"?$(>
+M`S!"`/\``A"``&(0(P@`6:$P0O__"`!:M'P#>X8(`%EJE.<``@@`74V4XP`"
+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
+MW%```!10``<`````"`!E8V8Q`!#>$````%$0+1("``T`````C@+_S!13__K>
+M0E2@W@3_V&8%_X`,`%D4)`8``=Y"5*#>$````%$0+18"__4`````9C$`$!8T
+M_^C>0E2@W[\`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#``````W((`
+MJ'Q'"4(0X``K`````(R'`*C(X@`H?$<+@A#@`"8D!P$!``<Z_`!'."04X``B
+M`````'Q"#`(00``7`````)2'`+:@IP``D,4``!2@`!```!`MC(8`J'S%!0`0
+MH``,,,9``&>]__B4A0"X$,``%/^_```,`&P$`````-^_```D`P`"9[T`"'!"
+M`.X`8A`C`^``"`````"0PP``)`(``11B``4`````)`,``@``$"T#X``(H,,`
+M``/@``@D`O__#`!KR@````#?OP``)`,``F>]``AP0@#N"`!ED@!B$"/<@P``
+M?&)8`GQC7`(P1`_P,$4(``"%$`LP8___``,:@P`#&P``8A`E`^``""Q"``%G
+MO?_@)`0`"/^R`!`D$H`!`!*4^```*"W_OP`8-E+`!?^Q``@`$I=X_[```#92
+M`"#>0@``)!$``3P0__`V$``C?B)2AP`0@OQ^(@`'-A``^/Y"``#>`@``#`$X
+M8@````!F0P/@9E(!X'!"*/)^0B(*`%*0+0!#*"U^)``&_D0``-X$``!\8A(*
+M/`,`\S1CZJ!\8L`'_*(``-^_`!C>`@``W[(`$-^Q``C?L````^``"&>]`"``
+M````9[W_X"0"``'_L0`0`Z`P+?^P``@`H(@M_[\`&&>E``&CH@``#`!E;@"`
+M@"T40``;W[\`&(X"`*@P0P`@%&``3#!"0``40``:`````).C```D`@`"$&(`
+M$=^_`!B6`@"X)$(``7P"%B"F(@``C@,`J#!D$``0@``(,&,`("1%__\08`!K
+M`@`@+0P`:R@`````IB````````#?OP`8W[$`$-^P``@#X``(9[T`(`````#>
+M`P"@E@(`N`!B$"V,10``:$0`#&A#``1\AO@#?&=\`P#F,"T`!"`^B$<```#'
+M,"T``Q@^?*4>`P#$("T`@R`M+*,`!A1@``L`!!PZ)`8`%``%*+@``````,(8
+M+63&``2(8P``?&/X`Q3%__L`@R`M``0<.F1%``I\A'@#`&08+0`#)#I\8W@#
+M`(,@+0`$'#I\A'@#`&08+3AC__^@HP`!``,*`J"A``"3HP``)`(``A1B_[[?
+MOP`8"`!F"-^Q`!#>`P"@E@(`L`!B$"V,10``:$0`#&A#``1\AO@#?&=\`P#F
+M,"T`!"`^B$<```#',"T``Q@^?*4>`P#$("T`@R`M+*,`!A1@``L`!!PZ)`8`
+M%``%*+@``````,(8+63&``2(8P``?&/X`Q3%__L`@R`M``0<.F1%``I\A'@#
+M`&08+0`#)#I\8W@#`(,@+0`$'#I\A'@#`&08+3AC__^@HP`!``,*`J"A``".
+M`@"H,$)``!!`_XH`````"`!F#=X#`*`,`&NJ`````*8@``#?OP`8W[$`$-^P
+M``@#X``(9[T`(&>]__#_OP`(_[```-R&``#<PP`8?&,X`1!@`!LD`O__?$/_
+MQMQB``B4<``$_((``-RD````@!`M?`+8!1!```4`!#\^)`(`!"0'``1\1/\&
+M_*0``)1B``(`P"`MW*,```#B$"5\0_\&#``DOORC``#?OP`(`@`0+=^P```#
+MX``(9[T`$``````(`&9]```8+6>]_]C_L@`8`*"0+?^Q`!!GI0`!_[``"`#`
+MB"W_OP`@`Z`P+:.@``$`@(`M#`!E;J.@```40`"R`$`8+8X#`*C(?@`#DZ(`
+M`21"``BCH@`!_@``X"1"`!"B`@#A```@+=XB``"F$@#D_A``Z'Q"'P(,`6P8
+MI@(`XB0#__\00P"N,%$#_]X$``B.!@`,?(=(@C#C`/\`T3`F``-`PGP%\#L0
+MH/_^?@5(`20*`(!\"0`[$*H`JP``&"T`X$@M``A`P'P).,0`!SH"`0E`)0#@
+M2"U]!%B&)`<``?X$``BN!@`,W@0`"'SD"`;^!``(```!3R0'``$\!/_\?.-[
+M!C2$``M\XYR&``0C?'T#[09])#D&?*-(!7S$&07\@P``)`,``98%``@``QJ\
+MW@0``"2E`!!\HW@'?(1<`GR#W`;\`X$`DA(`!)8&``@J0P`.$&``B@)`8"TD
+M!0"!9@0`X``%*WQF`P`8?(5(!7SE8P;\!8$($D``BP`````D#0`!)`B!$``-
+M:KP``#@M)`X``66M__@D#___`````)1D```DYP`!W&H```#L2"H`AE@J`,L@
+M"GR%_`9]14@%?<5C!OT%``!E"``(W&0``)1J`````!@M`(T@+7R$2`$0@``#
+M`,HP(P"`&"U]X__&%2#_ZP`````F4@`"?`/P.Q!@__X\`Q08W&-7>)!C``T"
+M(Q@C+&0`@!"```4\!108W*5(&'RC&8H48``N)`0`"29&__\LPP`/$&``<P`"
+M$H(\!``!/`42%#!#`/_\I,`P+&0`!!"``&H``QCX/`04)&2$MF!\@QH*$&``
+M`V2DP#``$2'X`&0@+0`2D,`D"/__)E(!````*"U^1_@#```8+?SH@`!PQN#R
+M```!3XR'``2,B````.A`*A4``$$\"/_@)`<``7"'`!@D!`!1`!*0PGR#N@9\
+M!8P&?D/^!GRDV`%\0SD&``0G/GP#"`9^(\P'_,.D```$$"MP0@`ZW[\`(-^R
+M`!C?L0`0W[``"`/@``AGO0`H`````"0$``$49/_W)`+__]XC```D!``$?(/_
+M!OXC``#?OP`@W[(`&-^Q`!#?L``(`^``"&>]`"@`````/`00"PP`%Y9DA&AX
+MW[\`(-^R`!@D`O__W[$`$-^P``@#X``(9[T`*'TI"<,`"$#```DB``@`9M0`
+MB$`E`````#P$$`L,`!>69(1HF-^_`"#?L@`8)`+__]^Q`!#?L``(`^``"&>]
+M`"@(`&<5)!(``@`14D`U"`!5<$D),P`(0KPU"`!0`4A`+0$H0"7="0``?2EX
+M`0`)0`!])7@%`.@X*A#@_[6LB```?`6,!B0"``D`H"`M?$3_!@@`9T\`!"<^
+M"`!G-&2DP#`\!!`+/`40"V2$9M`,`GZ\9*5HR"0$__\(`&=/``0G/F>]_]#_
+MLP`@`*"8+?^R`!AGI0`!_[``"`#`D"W_OP`H`Z`P+?^Q`!``@(`MHZ```0P`
+M96ZCH```$$``"R0$``$01`"3)`/__]^_`"@`8!`MW[,`(-^R`!C?L0`0W[``
+M"`/@``AGO0`P_`"``"0"`2D``A8X-$(`!7P#`#L``A0X?&,)PWQB.08```$/
+M_`*B`````(_<$8``$B``C#P"_X`D`O__?%'_QA(@`)$\!!`+C@,`J.A^`'*3
+MH@`!)`,``21"`!```QX\/`0``GQ#M`8TA``0_@,`X&8"`.#>0P``?(+Z!J83
+M`.0D!``!_A``Z'R"_\9\8Q\"I@,`XOXB``"2`@`$E@4`"!!``&W>!@`8)`X`
+M`0``."T`#G(\)`D``68X``@D#P`!9<[_^"09__]\R'H"`B<0+0$%:"H`H!@M
+M_$``"`,'6"W=8@```0T8"WS*.`%\Q!8"?,8>P@$@8"T`8&@M`4X8+7VB.`5\
+M8S@!?4*Z!@"H*"-\@M8&)20``7S"]L8``%`M?>+_QF3G``C]8@``$&```P"`
+M2"T`8%`M?RK_QI("``0!@A`J%$#_X-U&```PDO__,),`/P``*"T,`3@H)`0`
+M"`P!$[8`0"`M#`%L&@!`("T\`P$!,$3__P"#("5\`_`[$&#__CP#__PD!0!!
+M-&,`"P`%*SQ\!@`[``,;?'S&"<,`!CH`?,,Y!C2E`(!\@QD%?.7M!@(@,"W\
+M90``)`4``98#``@`!2_X?F6L!WY&^@8``B`````X+21B`!`D`P`%?&;6!GQ%
+M>`<,`7L\)`@``=^_`"C?LP`@```8+=^R`!@`8!`MW[$`$-^P``@#X``(9[T`
+M,``````D0@`("`!GSZ.B``$`````WD(``"0$``1\@O\&_D(```!@$"W?OP`H
+MW[,`(-^R`!C?L0`0W[``"`/@``AGO0`P)!,``0@`:`\D$@`!-$(!*0`"%C@T
+M0@`%``(4.'QB.0;<40``%B#_;R0"__\\!!`+#``7EF2$:*@(`&>R)`/__P`&
+M0"L`!Q`K``48*P$"$"0`8A`D$$``(`````#<@P`0)`(`"GQH(8(`"$``,0@`
+M'A$"`%-\8R0"``,8`#!C`!X08@!//`,>W```$"TT8V]!2*-"````&"T4H``L
+M2*,"`=Q#``A(HQ('W$,`$$BC$@?<0P`82*,2!]Q"`"!(HA('C,(``$BB`@9(
+MIP($2"("`0/@``BL@@`,W(,`&'QC.`$48``C```0+=R&`!`D!0`*?,,A@C!G
+M`!X0Y0`F`````'S&)`(`!C``,,8`'A#%`"$D!0`(,&,`'!!E`"T````````H
+M+0!%*"T``!`MD*<`"62F`!0\`Q[<-&-O04BC0@```!@M$*#_UDBC`@'<H@`,
+M2*(2!XS"``!(H@(&2*<"!$@B`@$#X``(K((`#`````#<A@`0`&`0+20#__\D
+M!0`*?&+_QGS#(8(P9P`>%.7_W``````P8P`<)`4`"!!E``X````````H+0!%
+M$"T``"@MD$<`!@@`:)UD1@`H``````"@$"T(`&B=```H+0`````(`&B9D(4`
+M)0@`:+J0A0`E9[W_^&2"``BOI@``9(0`*```&"T`````E$8``&1"``(41/_]
+M`&88+9>D```D`@`1$.(`)Y>F``(D"``&$.@`!```$"T#X``(9[T`"``````D
+M"``(CZD```#$("T`AS@M`.,8+0`).$(8X``*``````"@("T``!`M$$@``P``
+M``"4A@```&88+21"``$4XO_Z9(0``LD@``0`!SAX?*<IB@`%*@``91@M,&+_
+M_P`#'#H`8A@M9[T`"``#%#H`8A`M``(0)P/@``@P0O__``````@`:-TD"``#
+M9[W_T/^S`!@`@)@M_[\`*/^T`"#_L@`0_[$`"/^P``#`@@`4%$#__B0"``'@
+M@@`4$$#_^P````#<D```?!(`.WY4"<,6!``(WA$```@`:4P``````````-XB
+M```2<0`V`B"`+0!`B"W>`@`0,$(`_Q1`__G>`P`8W@(``-X$``C\1``(W@(`
+M"-X$``#\1```/`(4&-Q"5*B,1``0)(3__ZQ$`!#<9`#0$(``+WQE2`$```%/
+M/`+_@`"`&"TT0@$I``(2/'Z".0;\10``W((`T!!```T``````$`@+7QE2`$`
+M``%//`+_@`"`&"TT0@$I``(2/'Z".0;\10``W((`T!1`__4`````#``DOGX0
+M2`$```%//`+_@'Y#"<,T0@$I``(2/'QB.0;\4```WB(``!9Q_\P"((`M```!
+M3ZY@`!0```%/W[\`*```$"W?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P
+M`&`@+0P`)+Y^$$@!```!3SP"_X!^0PG#-$(!*0`"$CQ\8CD&_%````@`:4K>
+M(@``9[W_D"0#____LP!(_[\`:/^V`&#_M0!8_[0`4/^R`$#_L0`X_[``,(""
+M`&800P#&`("8+3P0``(\%A0`-A"A@#P&`*YP4!`#WM!&`#3&A`!DD@!PW(0`
+MH"0#``&6=`"T``,</&1C___<D0```$80+0`4J"L"`H`M,I0/_V8"()@`$8PZ
+M:$D``&A(``AH1P`0:$8`&&A"`""R20``LD@`"+)'`!"R1@`8$B,`C[)"`""0
+M@@``R$``+``````"0"`M#``,+F8%(.B"9`!F#``CY`(@*"T00`"69$4`"-X(
+M(,#>!R#(`Z`@+=X&(-#>`R#8W@(@X/^H``#_IP`(_Z8`$/^C`!@,``Q6_Z(`
+M(`)`("T,``PN`Z`H+1*@`'@"0"`M`!0H^``4H7@`M"@M`@4H+0P`#%9DI2$X
+M)`+__M^_`&C?M@!@W[4`6-^T`%#?LP!(W[(`0-^Q`#C?L``P`^``"&>]`'``
+M````#``F-O^E`"C?I0`H``(00(X$`%".`P!4%(/__68,`$PD`P`"<8,`&(X#
+M`$SH8/_^WLM&```4&+@D20(`)`C__S0*KH``=*`M,$<!_P`'&3@"`Q@MC&8`
+M8!#(``8D0@`!W&,`6!!Q`!QPRA@#%$G_]@`````D`O__)`/__G&#`!@D`___
+M$$,`6``````0H``$`````(9C`&@08@!O`````*9B`)`D`P`!HF,`DM^_`&C?
+MM@!@W[4`6-^T`%#?LP!(W[(`0-^Q`#C?L``P`^``"&>]`'```````6,8+=QC
+M``C8?O_B``89NS#$`#\6H``6`H-H+61F!"``!C#X`@8P+=S&`!``AC`6,,8`
+M`0`&,``0P/_6`````&1B``@D`P`!``(0^`"#(!0"8A`M``<9.-Q&`#`"`Q@M
+M`(8@)?Q$`#`(`&G<C&(`8&6M!"`PQ``_``UH^`(-:"W=I@`X`(8P%C#&``$`
+M!C``%,#_ZP`````42?^U``````@`:=PD`O__`D`@+0P`#"YF!2!P%J#_B@)`
+M("T,``Q69@4A$-^_`&C?M@!@)`+__M^U`%C?M`!0W[,`2-^R`$#?L0`XW[``
+M,`/@``AGO0!PD@(A"A1`_W@`````D@(@NA1`_W4`````"`!ILR0"__\4H/][
+MW[\`:))C`)(08/]YW[8`8-YC`'#>9`!X,&8``3"%``$`@Q@E_F8`<,A@_V_^
+M90!X#``,#`)`("T,``P@`D`@+=^_`&B.`@`XW[8`8-^U`%C?M`!0W[,`2-^R
+M`$#?L0`XW[``,`/@``AGO0!P"`!ILR0"__QGO?_8/`(4`/^R`!`T$JZ`<-(P
+M`]Q"1@#_LP`8`*"8+?^P````@(`M_[\`(/^Q``B,D0`,#`!EI@!&D"W>`P"H
+M)`0`00`$(7P`9"@D$*0`@CP%'MPD!`!!``0AO`!D&"009``Q/`,>W)8%`+84
+MH``F`@`@+:YQ``".0BY`$$``%M^_`""6`@`.WD0N2``"&;H``QDX`(,8+9!D
+M``*090`!?*1Z!#"$__\0@@"5W[,`&))#`#<`0P`;`&`!]-^R`!#?L0`(W[``
+M`&>]`"@``"`0`^``"#""`/^20@`WW[,`&`(B`!L`0`'TW[(`$-^Q``C?L```
+M9[T`*```&!`#X``(`&`0+0`````,``JT,$8`_P`"B``6(/_7``````@`:G..
+M$0`,`````-X&`*"6!0"P-&-O00#%*"U(HT(````8+4BC`@&6"`"R9*,`*)"D
+M``;<IP`(`,A`+4BG$@?<I@`02*82!]RF`!A(IA('W*8`($BF$@<`:#`K$,#_
+MNSP+'MPD"0`L-6MO01")``L``#`MD&<``9!D```DYP`!``<XP`!G&"T`:#@K
+M$.#_KP`````4B?_W`````(QD``1(I`(&2"0"`91G``(PB@__94H%P``*4/@P
+MY__X%.``&P)*4"U(JT(`2*8"`=RG``A(IQ('W*<`$$BG$@?<IP`82*<2!]RG
+M`"!(IQ('W@H`H)8'`+(!1S@ME.H``$BJ`@64YP`"2*<"!4@Q`@$PAP__9.<%
+MP``'./@"1S@MK/$`7*SD`&`(`&JZKA$`#(U1`%P(`&JZKA$`#`````#>!P"@
+ME@0`L#2E;T$`Y"`M2*5"````*"U(I0(!C(8`#$BF`@:,A0`02*4"!I2(``1(
+MJ`(%2"D"`92(``8Q"!__%0``)3$D#_^6`P"R`.,X+3P#'MPT8V]!2*-"````
+M&"U(HP(!2*8"!DBE`@:4XP``2*,"!93C``)(HP(%2#$"`3$C#_]D8P7```,8
+M^`)#&"VL<0!<K&D`8-X#`*@(`&IKKA$`#`````"20@`WD&,``-^_`"``8@`;
+M`$`!]-^R`!#?L0`(W[```&>]`"@``"`0`^``"#""`/]DA`7```0@^`)$("V,
+MD0!<"`!J:ZX1``S<@@`8?$(X`1!``#LD`___?&+_Q@!%*"V,HP``D*(`"92H
+M``*4K``,?&,>`Y2D``X``S!`E*L`$``&,'B4IP`2`*8H+20&`!$01@`(9*H`
+M!B0&``801@`$``````/@``@``````````&2J`!"E0`````-(@`$)2",Q*?__
+M`2(0+0`)0'H`3&`M`80@+0"+("T1```)`(<@+0"@&"T``!`ME&<``"1"``%D
+M8P`"`$@P*A3`__L`AR`MR2``!C""__\`"$!X?*@IB@`%*@``A2`M,(+__P`$
+M)#H`@B`M``04.@""("T`!"````0@)P/@``BE1`````````@`:RT``!`MD(,`
+M!B0(``:4C``$$&@`,&2"`"@D"``1$&@`+0&`2"V0B``ID(,`*"4(``$`"$#`
+M`8A0*A5``!(!`"`M)`L`.B0/`#PD&`"/)`X``20-``8`1!`M+&0`+1"```LL
+M9``K$(``$0`````0;0`:)`0`$1!D`!@`````$&``"P`````#X``()`+__Q!K
+M``<L9``[%(``%P`````0;P`#`````!1X__<`````D$0``22$``$`!"#``(A`
+M(0$H4"H10/_DD$,```@`:X@`````````````0"W\H@```8A`(ZS(`````!`M
+M`^``"*#C````````)&/_S@'#&"L48/_A``````@`:Y.01``!9[W_X/^_`!C_
+ML``0W((`&'Q".`$00``8)`/__WQB_\8`18`M9Z8`"`.@*"T"`"`M#`!K:&>G
+M``PD`___$$,`"M^E```"`"`MDZ<`#(^F``ADL``&9*(`$#CC`!$,`&C(`$.`
+M"Z8"``#?OP`8W[``$`/@``AGO0`@"`!KL@``$"UGO?_0_[(`(/^_`"C_L0`8
+M_[``$-R0`!A^$#@!$@``,`"`D"TD`O__?%#_Q@(%@"UGI@`(`Z`H+0(`("UG
+MIP`,#`!K:```B"TD`___$$,`%9.C``PD`@`1WZ8```)`("T08@`7`@`H+0P`
+M:&`D!P`&WZ4``&2R`!"/I@`(`@`@+9.G``P,`&C(``"(+1!```;?OP`HEE$`
+M`'(BB"H`$8@C,C$``]^_`"@"(!`MW[(`(-^Q`!C?L``0`^``"&>]`#`,`&A@
+M)`<`$=^E``"4H@`&%$#_Z62R``8(`&OTW[\`*`@`:]4``(`M9[W_T/^Q`!``
+MH(@M_[``"/^_`"C_LP`@_[(`&-R#`!A\8S@!$&``5@"`@"TD`O__?$/_Q@!Q
+M&"V,9```:&8`#&AB``1\Q?@#?$=\`P#E."T`!C`^B&4```#E."T``A`^?(@>
+M`P#F."T`XC@M+0(`!A1```F4:0`*)`8`%``(0+@`PQ`M9,8`!(A"``!\0O@#
+M%,C_^P#B."T`!Q0Z9&8`"GSG>`,`1Q`M``(\.GQ">`,`XC@M``<4.GSG>`,`
+M1Q`M.$+__Z#"``$``@H"H,$``)1B``H020`*`````*1I``H``!`MW[\`*-^S
+M`"#?L@`8W[$`$-^P``@#X``(9[T`,)1E``8PI3__%*#_]B0"``*090`)?)(>
+M`P`2D+@D!``&$*0`&0!RD"TD!``1%*3_[M^_`"@"0#`M`@`@+?^B````8"@M
+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
+MC(,`J,A^_\K\@@"@9$(`"`/@``C\@@"@``````!@$"TD`___"`!VX7QB_\8`
+M0"@M)`+__WQ%_\8``!`M_*<``)2%``C<@P`8)*7__'QC.`$08/_KI(4`"`@`
+M=ND`8!`M``````"@,"TD`O__"`!VP7Q&_\8`0#`M)`+__WQ&_\;<QP``$*#_
+MO@``,"T(`';\`*`P+9"#``9D@@`HH,```"0'!``D"``\)`D`AR0+`"LD#``L
+M)`H``0`````L9``T$(``%BQD`#(0@``+`````!!K``D`````$&P`!@`````0
+M8``%``````/@``B@HP```````*#*``"01``!).?__Y!#```DA``!``0@P!3@
+M_^L`1!`M`^``"``````0:/_V`````!!I__0``````^``"*"C``!GO?_0_[,`
+M(`"@F"W_L@`8/!(4`/^P``@`@(`M_[\`*/^Q`!",@@"H@(,`982&`&C>148`
+M?`+H!*R"`*@D!``"$&0`'P`````D`O__$F(`?0``````````I@``K@(`("W>
+M$0"@9Z4``@P""G@#H#`MEZ(``)8$`*Z7HP`"`B*(+0""$"$D!`@`,$+__Q!D
+M`'*F`@"P-`*&W1!B`-4"("`MW[\`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`
+M,`````".`P`\,&0`#Q"```(T0@`!K@(`J#!B`(`00``&,&0`0(X'`*@\!``@
+M`.0@):X$`*@P9`!`$(``!#P$`$".!P"H`.0@):X$`*@P8P`@$&``!C0#KH!P
+MPS`#`*8H+=RC``CX>@$E/`0!`"0"__\68O_*`````)8"`+000`!")`(``=X$
+M`!@``A*\9$+_^'R%2`$`HA`M?$)(`1!```0``#`M`$`P+20"__]\1O_&)`,`
+M`0``$"W<Q@````,:O&1C__P`HQ@M?&-(`7QD2`7^!``8``0D/@`$(``DA``$
+M$&``!*8$`!@`8!`M)`/__WQB_\:,1P`$)`0``8Q#``@`!"*\C$4`#&2$__BL
+M1P``K$,`!*Q%``@\!8$`E@<`M`#E*"6L10`,W@(`&`!$$"U\0D@!$$``!```
+M&"T`0!@M)`+__WQ#_\;\9@`````0+98$``C>`P`8)(0`!'QC.`$08``$I@0`
+M"`!@$"TD`___?&+_QHX#`*C(?@`#_@(`H&1"``C^`@"@#`(+)`(`("T(`'=%
+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
+MW$(```@`>^X\`A08`*`X+0"`*"T\!!`+``<P/V2$:B`(`'I4``<X```````\
+M`A08W$)56-Q#```T8P`!_$,``````0\#X``(`````&>]_^@\`Q08W&954/^P
+M``!\$``[`!`Z.``0&KC_OP`0`.,8+?^Q``@`<!@M``,9.`##&"V,8U`<$&``
+M!=^_`!#?L0`(W[````/@``AGO0`8`("(+3P#%!C`9%5@%(#__B0$``'@9%5@
+M$(#_^P`````\!/^`)`4``32$`1\"!1`4``0A/#2$*#T`!"$XW(4```!%$"7\
+M@@`````!3ZQ@56````%//`00"P(`*"T,`!>69(1L&#P$$`L,`!>69(1K*-^_
+M`!`"`"`M`B`H+=^P```D!@`!W[$`"`@`>GYGO0`89[W_P/^V`#``@+`M_[\`
+M./^U`"C_M``@_[,`&/^R`!#_L0`(#`&72O^P```00``%`````(Q#`*A\`@`[
+M%&(`8B0"__\\`A0`D$(!&!!``&@\!A`+)`0$`"0%`(`,`+1>9,9L6#P5%!C^
+MHE58$$``>P!`D"T\$!08`$`@+=X"5H```"@M)`8`(#P4%!@,`F9@_%(`("0"
+M`""N0@`,/`0`#SP&$`LTA`,4)`4`@`P`M%YDQFQP$$``:?Z"55#>`U:`/`8`
+M#P!`("T``"@M-,8#%```@"W\8@`H#`)F8"03`##>L5589C$`(`P!ETH`````
+M`!`B.``0&KC<0@`H`(,8+0!P&"T``QDX`@(0%F1D*!`F$``!R$``#&1C`!#>
+M@E50`$0@+0!#&"U\A4@!?&)(`0`$*`K\90`H_B(``(Y"``PD0@`(KD(`#!83
+M_^=F,0`(CD4`##P$$`NN5@`(9(1LB`P`%Y:N0``0CD0`#-ZF55@D!00`WH)5
+M4"0'``I\@_@#`*0H(P##&"TD!``!K$4`"#P&``\`92@M`$8P+:"G__^L1``$
+MK$0``#P$$`*LP`,09(3O&#P"%!@,`;)>_$-5:````0\``!`MW[\`.-^V`##?
+MM0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`0#P"%!@\!108W$-6@#P$
+M$`)DA.\8W&(`(-QF`"B<0P`,_*)56#P%%!C\IE50`$,0+3P#%!@,`;)>_&)5
+M:````0_?OP`X```0+=^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(
+M9[T`0`@`?.0D`O__`````&>]]T#_L`@@/!`4&-X"55#WK`A(]ZT(4/>N"%CW
+MKPA@][`(:/>Q"'#WL@AX][,(@/^_"$#_LP@X_[((,/^Q""C_I0B(_Z8(D/^G
+M")C_J`B@_ZD(J/^J"+#_JPBXC$(``!1```EGH@B(W[\(0```$"W?LP@XW[((
+M,-^Q""C?L`@@`^``"&>]",``@!@M_Z(($"0"`#BCH@@8)`(`0*.B"!D#H"`M
+M9Z((P`!@,"TD!0?_9Z<(`/^B"``,`I_0_Z(("-X255!\!``[9(,``0!`B"T`
+M`X(X``,2N`("@"T"`X`M)`,G_P`0@3@"4(`MC@(`!`!B&",`<1@J%&#_W-^_
+M"$``!!JX``2:.`)CF"T"(#`M`F0@+0.@*"T`!)DX`F(0+61$*!`"1"`M#`)E
+M7`)3D"V.`@`$`%&((:X1``3^40!````!3]^_"$```!`MW[,(.-^R"##?L0@H
+MW[`((`/@``AGO0C``````&>]]TC_L0@H/!$4&-XB55#WK`A`]ZT(2/>N"%#W
+MKPA8][`(8/>Q"&CWL@AP][,(>/^P""#_OP@X_[((,/^E"(#_I@B(_Z<(D/^H
+M")C_J0B@_ZH(J/^K"+",0@``%$``"```@"W?OP@X`@`0+=^R"##?L0@HW[`(
+M(`/@``AGO0BX9Z((@`"`&"W_H@@0)`(`.*.B"!@D`@!`HZ((&0!@,"UGH@BX
+M`Z`@+20%!_]GIP@`_Z((``P"G]#_H@@(WB-54`!`@"T\`A08W%)56#P"``\T
+M0@,0`&(0+<!#```48/_^)`,``>!#```08/_[`````-XQ55".(@`,%$``(P``
+M``".(@`$CB,`"`!B&",D8___`'`@*A"```0``````&"`+20#``&N(P`,/`,4
+M&&1"___<9%5H`Z`H+0(`,"T,`F5<`((@+8XB``0`4!`AKB(`!*Y"`!````%/
+M/`(`#P(BB"VN(`,0```!3P```4_?OP@X`@`0+=^R"##?L0@HW[`((`/@``AG
+MO0BX```!3SP"``\"(H@MKB`#$````4_?OP@X``"`+=^R"#`"`!`MW[$(*-^P
+M""`#X``(9[T(N``````#X``(```0+3P#_X`\!.]6-&,!'S2$JM4``QB\``0@
+M?#1C"@\``!`M``,9N/QD```#X``(``````/@``@``!`M`^``""0"``$#X``(
+M```0+0/@``@``!`M+,(`$!1```1PQOCR`^``"```$"T`````/`(0#&1"@*!\
+M1C(*`,``"```````````9*(``62C``(``A"X``,8N'R"$`H`!2BX?(,8"GR%
+M(`H`0Q`F`^``"`!$$"8`````9*(``62F``(``A"X``8PN'R"$`H`!1BX?(8P
+M"F2E``-\@Q@*``4HN'R%(`H`1A`F`$,0)@/@``@`1!`F`````&2B``,``A"X
+M`^``"'R"$`IDH@`"``(0N`/@``A\@A`*9*(``V2E``(`!2BX``(0N'R"$`I\
+MA2`*`^``"`!$$"9DH@`!``(0N`/@``A\@A`*9*(``V2E``$`!2BX``(0N'R"
+M$`I\A2`*`^``"`!$$"9DH@`""`!^*F2E``$`````9*(``F2C``$``A"X``,8
+MN'R"$`IDI0`#?(,8"@`%*+A\A2`*`$,0)@/@``@`1!`F``40N`/@``A\@A`*
+M`````&2B``,`!2BX``(0N'R%*`I\@A`*`^``"`!%$"8`````"`!^162B``)D
+MH@`""`!]^F2C``,`````"`!^162B``%DH@`!"`!]^F2C``,```````08^``$
+M$C@`8A`M9[WZJ`!$("T\!108_[X%2``$$+C<OE5P`((0+?^_!5```A"X_[<%
+M0/^V!3@#PO`M_[4%,/^T!2C_LP4@_[(%&/^Q!1#_L`4(E\(``'!*^+H10``:
+MW\,``B5+__YGR0`*``!`+20'`"````````@Q0```$"T`1B`A``,H/@`$(+@D
+M0@`!`Z0@+0`#&'@41__YK(4```$+$"H00``#`````)TB````8A@E)0@``0$*
+M$"H40/_N92D`!)?"```00``@``(0P```@"VOH@4```"H+6?>`+`D%``0````
+M`"0"`$`"H)@M)K(`!`/0N"\``+`M`%"(+P+`,"T#H"`M#`!][`)@*"T"P#`M
+M`Z`@+0)`*"VNX@``#`!][";6``$"\"`M`)$@+6;W``06U/_RK((``(^B!0`F
+MM0`(%J+_Z&80_X#?OP50W[X%2-^W!4#?M@4XW[4%,-^T!2C?LP4@W[(%&-^Q
+M!1#?L`4(`^``"&>]!5@`````/`(4`)!"`1@40``'/`(4&-Q#5H```!`MW&0`
+M,#P#%!@#X``(_&15<#P$``H\!A`,9[W_\#2$6@`D!0"`9,:!(/^P``#_OP`(
+M#`"T7CP0%!@00``/_@)5<#P&``H`0"`M```H+0P"9F`TQEH`/`(4&-Q#5H``
+M`!`MW@15</QD`##?OP`(W[````/@``AGO0`0"`!^V"0"__\#X``(`````&>]
+M_]#_OP`H_[0`(/^S`!C_L@`0_[$`"/^P``#<@@`8?$(X`1!```0``!@M`$`8
+M+20"__]\0__&W((``&2Q``@`<8@M/!(4`)8C``8\$``K?$)8`C80H``P1`_P
+M,$4(``"%$`LP90`0WD1&`#!"`/\`4(`M`!"`N!2@`"M\D(`*,&(`"!!``"0`
+M````,&(`!!!``#4`$!(X`!`@^`""("T\`A08W$)5<`"0("T`!"BX`(4@+0`$
+M(+@`1!`M,&,``A!@`#T`````C$,`K#!C/P`48``^WD)&`#0#KH!R`X`#`%`0
+M+=Q#``A\`[6&_$,`"```$"W?OP`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(
+M9[T`,`````"6(@`.+$,`*11@`#L`$!HX-`*N@'("@`,`D"`MW((`"'P"M8;\
+M@@`(```0+=^_`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P`````)8C
+M```L8@"!%$``.P`0(/C>0D8`-`.N@'(#@`,`4(`MW@(`"'P"M8;^`@`(```0
+M+=^_`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`PBB,``JQ#`*PP8S\`
+M$&#_Q-Y"1@`T`ZZ`)`0``7(#@`,`4!`MW$,`"'R#M8;\0P`(```0+=^_`"C?
+MM``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P```````0(/@`@R`M/`,4&-QF
+M57``D"`M``0XN&8E`)``AR`M``0@N`#$,"VDP@``W&)5<`!$("V4A@``#`)E
+M7&2$``(,`'Y8`@`@+0@`?P.6(P`&`!`2.`""$"T\%!08`%`0+0!@,"W>A%5P
+M``*8N`!3$"UF)0`0``*8N`"3("V@@P"J#`)E7&2$`"K>@E5P)`0``0!3$"V0
+M0P"J)&/__W!@&"R@0P"K,&,`_P!D&`0D8___K$,4L`@`?P^6(P`&`````)"%
+M``$DI0`!``4HP"2E__X8H``09((``@``("TD!@`!)`@`")!#```09@`-````
+M`!1@`!4DA``!$(@`$``````D`P`!)`<``0"G*",<H/_U`$,0+0/@``@`````
+M`````)!)``$``!@M)2D``@$D("$HB0`(%2#_]```."T``!`M`^``"``````X
+M8P#)9$(``@/@``@``Q`+9[W_L```$"W_O@!`)!X`//^W`#@``+@M_[8`,`"`
+ML"W_M0`H)!4`+/^T`"`D%``K_[,`&`"@F"W_L@`0)!(`A_^Q``@D$00`_[``
+M`/^_`$B0@P`&+&8`-!#``#%DD``H+&0`,A"``"0`````$'0`3&8%``@0=0`@
+M`````!!@`!X`````$$``+```````````:$,``&A"``BR8P``LF(`"!+@`"UF
+M8@`0:N0``&KC``BP1```L$,`""0"`"#?OP!(W[X`0-^W`#C?M@`PW[4`*-^T
+M`"#?LP`8W[(`$-^Q``C?L````^``"&>]`%``````#`!_E`(`("V2!``!D@,`
+M`"2$``$`!"#``@2`+28Q__\2(/_<+&8`-!3`_](L9``R$'[_\P`````0<O_S
+M`````!1`_]<`````9L(`"&A#``!H0@`(LF,``+)B``@6X/_69F(`$`````!F
+MU@`8:L0``&K#``BP1```L$,`""0"`"#?OP!(W[X`0-^W`#C?M@`PW[4`*-^T
+M`"#?LP`8W[(`$-^Q``C?L````^``"&>]`%"2!``!D@8``I(#```DA``!.,8`
+M`@`$(,``IK@*"`!__0($@"T`````9[W_J"0"____L``P_[\`4/^S`$C_L@!`
+M_[$`.*S```"LH@``C((`J#!#``008`!@`*"`+=R#`*A\8PP"$&``73!#`"`P
+M0T``$&``JC!#@```!Q(X``<8^`!B&"T\$A08WD)5<`!G."V4A0"X``=`N-R#
+M`*``Z#@ME),`N@`'B+@`41`MC$(`K`!E*"T`<Y@M,$,#`!!@`+<```````(2
+M`RYC``$X0@`!`$,0)!1``+$`````:*,`#"0"`0"LP@``WDE5</^C```!,4@M
+MC2,`K,AI``\D`@`(C(,`J``3("LX8P@`?&,"PP"#&"008``(`````(IC```D
+M`@(`K,(``"0"``S>255PKZ,`"`$Q2"T#H#`M)`0``0``&"T``$`MD,<``'!J
+M\#H`!"DX``I1>"1C``%DQ@`!,.L`#W#G^3H!1U`M`*M8+65K`"QE2@`L``M8
+MN``*4+A]*U@*)(0``GTJ4`H`8C@K`6I0)A3@_^P!2$`FK@@``-Y"57``48@M
+MCB(4L`!(0"1]"/@#`BB(+9(B`"K?OP!0W[,`2-^R`$#?L0`XW[``,`/@``AG
+MO0!8,$,`(!1@`$HD"``!,$,`0!!@`&P``$`ME(D`L-R#`*```"@M`&E(+3!"
+M`0`00``#``"8+923`+(`<Y@M``<2.``'&/@`8A@M/!(4&-Y"57``9S@M``>(
+MN`#Q."T`!XBX`%$0+14`_YZ,0@"L,$4\`!"@`%0`````,$0,`"YC``$LA``!
+M`(,8)!1@`$X`````,$(H`!!``#YE(@`(_Z8`*`$@("T,`'^Z`Z`H+=^F`"@D
+M`P@```(0`*S#``#>0U5P`!,@*P!Q&"V,8P"L,&,P```#&"L`@Q@D$&``$'Q#
+M^`.290```Z,8+8S$``"@90``DF4``:!E``&290`"H&4``I)E``.@90`#)`,(
+M`!"#`"\D0@`$)`,0`*S#```00``I`````-Y)57`(`(!P`3%(+92%`+#<@P"@
+M``!(+0@`@*(`92@M$&#_KS!#`"``!Q(X``<8^`!B&"T\$A08WD)5<`!G."V4
+MB0"X``<HN-R#`*``Y3@ME),`N@`'B+@`41`MC$(`K`!I2"T(`("S`'.8+64C
+M`!AH10``:$0`""0"`"#_I0``)`4$`/^D``AH9```:&,`"*S%``#_I``0"`"`
+MQ_^C`!@(`("1)`+__R0#(``(`(#?K,,``#P"`@`T0@`CK*(``#P"`@"4@P"N
+M-$(`(]R'`*``XS@M9.H`#`````!DYP`!D./__P!B$"8`0!@M``)&```"$@``
+M`TG``0(0(0`#00``0Q`A``,80`!)$"$`2!`A`$,0(13J__&LH@``C(,`J#!G
+M`!`4X`"79(<`M#!G`"`4X`!J,&,`0!1@``PT`ZZ`<,,P`SP#%`#<8T8``&8P
+M+9##`#<`0P`;`&`!]```(!`#X``(`(`0+0````"4@P"PW(H`H`%#4"UE1P`(
+M94L`&`````!DYP`!D./__P!B$"8`0!@M``)&```"$@```TG``0(0(0`#00``
+M0Q`A``,80`!)$"$`2!`A`$,0(13K__&LH@``94H`*`````!DYP`!D./__P!B
+M$"8`0!@M``)&```"$@```TG``0(0(0`#00``0Q`A``,80`!)$"$`2!`A`$,0
+M(13J__&LH@``C(,`J#!G"``4X``%`````-R'`*A\YQ("%.``:P`````P8P`$
+M$&#_PS0#KH"4@P"VW(<`H`#C."UDZ@`,`````&3G``&0X___`&(0)@!`&"T`
+M`D8```(2```#2<`!`A`A``-!``!#$"$``QA``$D0(0!($"$`0Q`A%.K_\:RB
+M``",@P"H,&<@`!3@`&4`````,&=``!3@`'4P8X``%&``LS0#KH!PPS`#/`,4
+M`-QC1@``9A@MD&,`-P!#`!L`8`'T```@$`/@``@`@!`M`````)2#`+#<B@"@
+M`4-0+65'``QE2P`0`````&3G``&0X___`&(0)@!`&"T``D8```(2```#2<`!
+M`A`A``-!``!#$"$``QA``$D0(0!($"$`0Q`A%.O_\:RB``!E2@`4`````&3G
+M``&0X___`&(0)@!`&"T``D8```(2```#2<`!`A`A``-!``!#$"$``QA``$D0
+M(0!($"$`0Q`A%.K_\:RB```(`(%EC(,`J&2*`+8`````9.<``9#C__\`8A`F
+M`$`8+0`"1@```A(```-)P`$"$"$``T$``$,0(0`#&$``21`A`$@0(0!#$"$4
+MZO_QK*(```@`@2R,@P"HE(,`LMR'`*``XS@M9.H`!&3G``&0X___`&(0)@!`
+M&"T``D8```(2```#2<`!`A`A``-!``!#$"$``QA``$D0(0!($"$`0Q`A%.K_
+M\:RB```(`(%LC(,`J&2#`+QDB@"^9&,``9!G__\`XA`F``)&```".@`!!S@A
+M``))P`#B."$``D$``.DX(0`"$$``Z#@A`.(0(11J__*LH@``"`"!B(R#`*B4
+M@P"XW(H`H`%#4"UE0P`,94L`$&1C``&09___`.(0)@`"1@```CH``0<X(0`"
+M2<``XC@A``)!``#I."$``A!``.@X(0#B$"$4:__RK*(``&5*`!1D8P`!D&?_
+M_P#B$"8``D8```(Z``$'."$``DG``.(X(0`"00``Z3@A``(00`#H."$`XA`A
+M%&K_\JRB``",@P"HZ'/_##0#KH#<@P"H?&,4`A!@_P@T`ZZ`E(,`NMR$`*``
+M@Q@M9&D`!&1C``&09/__`((0)@`"(@```D8``01`(0`".<`!`D`A``(A``$'
+M."$``A!``.0@(0""$"$4:?_RK*(```@`@3$T`ZZ`E(,`N-R*`*`!0U`M94,`
+M"&5+`!AD8P`!D&?__P#B$"8``D8```(Z``$'."$``DG``.(X(0`"00``Z3@A
+M``(00`#H."$`XA`A%&O_\JRB``!E2@`H9&,``9!G__\`XA`F``)&```".@`!
+M!S@A``))P`#B."$``D$``.DX(0`"$$``Z#@A`.(0(11J__*LH@``"`"")(R#
+M`*@`````9[W_^/^^```#H/`M)`(``0/`Z"W?O@``9[T`"`/@``@`````9[W_
+M^/^^```#H/`M)`(``0/`Z"W?O@``9[T`"`/@``@`````9[W_Z/^_`!#_O@`(
+M`Z#P+0``("T,`3N<`````*_"``"/P@``)`,`$"A$`!$`9!`*,$,`_SP"%!F@
+M0YXX/`(4&61"GC@D`P`!H$,`!20$``$,`3N<`````*_"``"/P@``)`,`$"A$
+M`!$`9!`*,$,`_SP"%!ED0IXXH$,``3P"%!ED0IXX)`,``:!#``8\`A099$*>
+M."0#``&@0P`)/`(4&61"GC@D`P`!H$,`"SP"%!ED0IXX)`,``:!#``H\`A09
+M9$*>."0#``*@0P`,/`(4&61"GC@D`P`"H$,`#3P"%!ED0IXX)`,``J!#``X\
+M`A099$*>."0#``*@0P`/```0+0/`Z"W?OP`0W[X`"&>]`!@#X``(`````&>]
+M__C_O@```Z#P+3P"%!ED0YXXD&(`&"0$``%\@CC'``(0`*!B`!@\`A099$.>
+M.)!B`!PD!``!?((XQP`"$`"@8@`</`,4&9!BGC@D!``!?((XQP`"$`"@8IXX
+M/`(4&61#GCB08@`$)`0``7R".,<``A``H&(`!#P"%!ED0YXXD&(`""0$``%\
+M@CC'``(0`*!B``@\`A099$.>.)!B``PD!``!?((XQP`"$`"@8@`,/`(4&61#
+MGCB08@`0)`0``7R".,<``A``H&(`$```$"T#P.@MW[X``&>]``@#X``(````
+M`&>]__#_OP`(_[X```.@\"T,`()F`````!!```4`````#`""O@`````(`(,%
+M``````P`@G@``````\#H+=^_``C?O@``9[T`$`/@``@`````9[W_>/^_`(#_
+MO@!X`Z#P+20"`/C_P@``_\``"/_``!#_P``@_\``&)?"`'`D`P`!?&)[QP`"
+M$`"GP@!PE\(`<"0#``%\8G.'``(0`*?"`'"7P@!P)`,``7QB:T<``A``I\(`
+M<)?"`'`D`P`!?&)C!P`"$`"GP@!PE\(`<"0#``%\8EK'``(0`*?"`'"7P@!P
+M)`,``7QB4H<``A``I\(`<)?"`'`D`P`!?&)*1P`"$`"GP@!PE\(`<"0#``%\
+M8D('``(0`*?"`'"7P@!P)`,``7QB.<<``A``I\(`<)?"`'`D`P`!?&(QAP`"
+M$`"GP@!PE\(`<'P"*4<``A``I\(`<"0"``'_P@!8_\``:/_``&#_P``H)`((
+M`/_"`##_P``X)`(``O_"`$`D`@$`_\(`2/_``%`#P"`M#`%!(````````!`M
+M`\#H+=^_`(#?O@!X9[T`B`/@``@`````9[W_Z/^_`!#_O@`(`Z#P+?_````D
+M`@`!_\(``-_$```,`3L(````````$"T#P.@MW[\`$-^^``AGO0`8`^``"```
+M``!GO?_X_[X```.@\"T\`A0`)`,``_Q#`6`\`A0`9$(!8"0#!`#\0P`(/`(4
+M`&1"`6#\0``0/`(4`"0#``/\0S\8/`(4`&1"/Q@D`P0`_$,`"#P"%`!D0C\8
+M_$``$`/`Z"W?O@``9[T`"`/@``@`````9[W_V/^_`"#_O@`8`Z#P+20"``BO
+MP@`$)`(`"*_"``@D`@`/K\(`#"0"``^OP@`0#`""]P`````00``%`````#P"
+M$`QD1($P#`)_>@`````,`(,+``````P`@V(`````#`"";P`````40``&````
+M`"0$``,D!00````P+0P!*^0`````/`(4&20#``&L0YX0/`(4`"0#``&L0S\0
+MK\````@`@]H`````/`(4`(_#`````QCX9$(^:`!B$"V/PP`$K$,``#P"%`"/
+MPP````,8^&1"/F@`8A`MC\,`"*Q#``2/P@`,,$/__SP"%`"/Q`````0@N&1"
+M/H@`@A`MI$,``(_"`!`P0___/`(4`(_$````!""X9$(^B`""$"VD0P`"C\(`
+M`"1"``&OP@``C\(``"A"``040/_<`````"0"``*O@H,8#`"#<P```````!`M
+M`\#H+=^_`"#?O@`89[T`*`/@``@```````````/@``@`````/`?__SP"_X`T
+MYP`#-$(!`0`'/'@``A8X9.><`31"``,`!S^X9[W_^'P&`#LTYQ```,`H+63H
+M`"!PQC0R?*0)PP#'."T`!"$\`,@P+0"'."4`!1CX`(8@)0`"%#C_OP```&(0
+M+?S@``#\@```)`0``?Q$``!\0I(")`0!&!!$`!@\`O_P/`+_@#1"`0$``A7X
+M-$(``0`"%'@`8A`M)`,!&/Q```!\0I("%$,`!3P"__`T0@`C``(2_#1"`/C<
+M0@``/`00#`P"?KQDA(%@W[\``"0"``%GO0`(`^``"*."@P$T0@`C``(2_#1"
+M`/C<0@``"`"$#CP"_X!GO?_X_[\```P!ETH`````$$``!P````",0P"H?`(`
+M.Q!B``/?OP```^``"&>]``@,`9=*`````"0#``@``"@M9$(`*`````#<1```
+M)&/__V1"``AP@"`M``0@`!1@__H`A2@AW[\``#P$$`P\`A089(2!B*Q%5V0(
+M`GZ\9[T`"#P'__\\`O^`-.<``S1"`0$`!SQX``(6.&3GG`$T0@`#``<_N&>]
+M__A\!@`[-.<0``#`*"UDZ``@<,8T,GRD"<,`QS@M``0A/`#(,"T`AS@E``48
+M^`"&("4``A0X_[\```!B$"W\X```_(```"0$``'\1```?$*2`B0$`1@01``8
+M/`+_\#P"_X`T0@$!``(5^#1"``$``A1X`&(0+20#`1C\0```?$*2`A1#``4\
+M`O_P-$(`(P`"$OPT0@#XW$(``#P$$`P,`GZ\9(2!L-^_```D`@`!9[T`"`/@
+M``BC@H,`-$(`(P`"$OPT0@#XW$(```@`A&P\`O^`/`D4&,$B5G@40/_^)`(`
+M`>$B5G@00/_[`````#P"%!@``!@M9$)5B"0(``@`````W$<``!#@``ID0@`@
+M)&,``11H__L`````)`(``0```4^M(%9X```!3P/@``@`````/`(4&``#&7AD
+M0E5X`&(8+?QE`!#\9@`8_&0`"'P"^#L`1"`M```0+?QD``````%/K2!6>```
+M`4\#X``(`````#P(%!C!`E9X%$#__B0"``'A`E9X$$#_^P`````\`A08```8
+M+61"58@(`(2_)`<`""1C``$09P`29$(`(-Q&```4Q/_[`````-Q&``@4Q?_X
+M`````#P$%!@``QEX9(15>```$"T`9!@M_&``$/Q@`!C\8``("`"$T?Q@````
+M````)`(``0```4^M`%9X```!3P/@``@`````9[W_V/^_`"#_LP`8_[(`$/^Q
+M``C_L```?!/X.SP1%!C"(E9X%$#__B0"``'B(E9X$$#_^P`````\$A08/!`4
+M&&9257AF$%6("`"$[692`1!F$``@$A(`'0````#>`@``$$#_^P````#>`O_P
+M`F(0*Q1`__<````````!3ZX@5G@```%/W@(```!`^`G>!``(%$``&0````#"
+M(E9X%$#__B0"``'B(E9X$$#_^P````!\`_@[W@+_^`!B$"W^`O_P9A``(!82
+M_^4````````!3ZX@5G@```%/W[\`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`
+M*`````#>!```#`"$L-X%``@(`(3\```````````\`A08/`,4&(Q"5V",9E=D
+M)$(``0!&&"L08``0<$/XLCP'%!ADYU:0?.,8"A!@``<``````^``"*R"````
+M````?.4H"A2@``4`````)$(``0!&&"L48/_Z<$7XLJR"```#X``(`````#P"
+M%!@\"!08C$)79"0#__]E"%:0)$+__P1```LD"0`'``(HN"1G``%]!2@*$*``
+M`S!&``<0R0`*`$<8"B1"__\$0?_X``(HN(R"```40``"`````*R#```#X``(
+M``````@`A4>L@@``/`04&&>]__@``"@M9(15>/^_```,`F9@)`8!`#P"%!BL
+M0%9X#`"(+``````40``$)`,``0P`C](```````(8*]^_````8!`M`^``"&>]
+M``AGO?_X_[\```P`CW``````?`+P.Q!`__X\`O_@-$(`60`"$KS<0@`````!
+M#]^_`````!`M`^``"&>]``@`````/`00#&>]_^!DA('8_[(`$```D"W_L0`(
+M)!$"`/^P``#_OP`8#`)_>@``@"T,`6R@``````@`A84``````````"80``$2
+M$0`4/`7_\`P`R#0"`"`M``(0`!!`__D`````#`#.$@(`("TN!``!)A```2A#
+M`"X``B@J.&,``0"D("0``Q@C`&(8)`!D$`L6$?_O`%*0)3P%__`\`O_@-*4`
+M(S1"`%4`!2PX``(5N#2E``4T0@`-/`/_\``%+O@T8P`C``(5.'P$`#M\A`G#
+M-*4`4/R@````!"$\``,:_#1"``@`@A`E-&,`^-QC```\!!`,_$````P"?WID
+MA((`W[\`&-^Q``@"0!`MW[```-^R`!`#X``(9[T`(&>]_Y#_L@`P/!(2%/^W
+M`%AF4L"P_[4`2#P7%!C_M`!``D"H+?^S`#@\%!08_[$`*"03`(#_L``@)!$!
+M`/^_`&@``(`M_[X`8/^V`%`(`(7;_Z0`&```````%B#X`!81>"80``$`1!`O
+M9C$``0)"$"UFM0`8_$,``-^C``C\0P`(WZ,`$!(3`"_\0P`0`B`@+0``*"T#
+MH#`M#`%N>@`1\`"/H@``%$``!`(`L"W?I``0$(#_Z=^C``".A%:,$(#_YM^C
+M``#>YE=H`$`X+=^C`!@\!!`,CJH``&2$@BC?J``0`\`H+0!F`!\`P`'T)A``
+M`0!*$"-F,0`!?$+X`V:U`!@``!@2`$,`'P!@`?0``!@2#`)^O``#,`#?HP``
+M`!8@^``6$7@`1!`O`D(0+?Q#``#?HP`(_$,`"-^C`!`6$__3_$,`$#P"__P\
+M!/^`-$(`"S2$`6<``A0X``0DN#1".`$TA`"!``(7>``$);@T0@<````H+3P&
+M``$TA`<``````-Q#````1A`M%$3__0"C*"V.@E:,%$``-CP0%!@\$/_\```@
+M+380``D``(@M`!"$.#800`$`$(=X/!7_\#P3$`LVM0`E/!8`(``5K?AF<SF0
+M?!(`.S:U`0-^4@G#`!*1/`@`AC8`%:TX)C$``1(B`!7?OP!HCH16C`)0&"4"
+M%A`MW&8```)"$"5F$``(<,,H\@!U&"T`<A@EW&@``-Q'```0@/_Q)`(`"`(@
+M*"T,`GZ\`F`@+28Q``$D`@`(%B+_[=^_`&C?O@!@W[<`6-^V`%#?M0!(W[0`
+M0-^S`#C?L@`PW[$`*-^P`"`#X``(9[T`<#P$$`P,`GZ\9(2"4(X"5HP00/_&
+M`````#P$$`L``(@M#`)_>F2$.8".!%:,/!#__#80``D`$(0X-A!``0@`AB8`
+M$(=X`````#P"__`\`__P-$(`(S1C`",`0"@M``(5N#1"!`4`!2WX``(5>#2E
+M"`LT0@`(/`8#!-Q$```TQ@(!``,:_``%+3@T8P#X-*4`"'S$^`<\!@`$_$0`
+M`-QG``#\0`/XW&<``/Q`!`#<9P``_$`$"-QG``#\0`00`$80+=QG```41?_T
+M``````/@``@``````````&>]_\#_M``@`("@+?^_`#@``"`M_[8`,/^U`"C_
+MLP`8/!,4&/^R`!#_L0`(#`%#GO^P```D!``!#`%#G@!`@"TD!``"`$"(+0P!
+M0YX`4)`M)`0``PP!0YX`0+`MCF-6C!!@`%<`0*@M/`(4&```,"W<0E=H```X
+M+0*"`!\`0`'T```8$@(#`!\`8`'T```8$A)``"!$HP``)`<G$``0$+AR!S@#
+M`!"!.`!0@"T\`P*/`!`0N#1C7"D"`A`M``,<>`!2`!\"0`'T9&+KA0`"%/@T
+M0O7#```@$@#R`!\"0`'T``0P````.!(`!QBZ`&(`'0``&!```QBZ``,0N``#
+M&3@`0Q`M``(8N`!#$"T`XC@O``<X````0"T2(``@``!(+20")Q``%ABX<L(0
+M`P`6L3@`=K`M/`0"CP`6&+@TA%PI`L,8+0`$)'@`<0`?`B`!]&2#ZX4``QSX
+M-&/UPP``*!(`40`?`B`!]``%0````(@2`!$0N@!#`!T``!@0``,8N@`#$+@`
+M`QDX`$,0+0`"&+@`0Q`M`B*(+P`12`!$)0``/`00#`P"?KQDA()P$J``3XYC
+M5HP48``H```H+0`````D`H`!)`2``0`"%'@`!"1X-$(P`3P#__`TA#`!``(5
+M>#1C`",`!"5X-$(H`0`#&OPTA"P!``(2N#1C`/@\!0`$``0BN/Q```#<9@``
+M_$``"-QF``#\0``0W&8``/Q``!@`11`MW&8``!1$__;?OP`XW[8`,-^U`"C?
+MM``@W[,`&-^R`!#?L0`(W[````/@``AGO0!``````!)``"```#`M)`(G$``5
+M&+ARHA`#`!6I.`!UJ"T\!`*/`!48N#2$7"D"HQ@M``0D>`!R`!\"0`'T9(/K
+MA0`#'/@T8_7#```H$@!2`!\"0`'T``4H````D!(`$A"Z`$,`'0``&!```QBZ
+M``,0N``#&3@`0Q`M``(8N`!#$"T"0I`O`!(P`#P$$`P,`GZ\9(2"J(YC5HP0
+M8/^T``````P"?N(D!``*"`"&^R0"@`$`````/`4AC3P"%!@TI>]!/`,4&-Q"
+M5V@`!2PX-*5KVV>]__``!2QX/`00##2E--L#H$@M`$4`'8QF5V```"@0/`,4
+M&(QG5U@\`Q08C&A75#P"-C0T0BUB9(2"P*^B```D`FET_[\`"*>B``0`!2RZ
+M#`)^O*.@``;?OP`(`^``"&>]`!!GO?_X_[\```P`K7P`````$$```]^_```#
+MX``(9[T`"`P!ETH`````W[\``&>]``@(`+EX9$0`*&>]_ZC_L``H/!`4&/^_
+M`%!F$%:0_[,`0/^R`#@`@)`M_[0`2`P!M9#_L0`P?!,`.W)B^+(D`P`!KY.!
+M@`("$"T,`(=LK$,```P!ETH`````$$``%CP$$`R,0@"H$%,`$SP1%!@,`9?&
+M``````P`AVP`````DB)6?!!```3?OP!0#`"L!`````#?OP!0```0+=^T`$C?
+MLP!`W[(`.-^Q`##?L``H`^``"&>]`%@,`+.(9(2"^!!``%P\`A`"`Z`@+61"
+M$*@``"@M_Z(`"#P"$`)D0A$H)`8``?^B`"`\`A`"9$(/L#P1%!C_H@`8/`(0
+M`O^@``!D0@^H#`"M_O^B`!`00`!')`(``:(@5GP\$Q`,/!04``P`LXAF9(,0
+M$$``23P$``NB@`$8W$(``!!```0``!@M`$`8+20"__]\0__&/`(4&/Q#5H"/
+M@H&`/!,4&`P!ETJN8E=@G$,`N#P"%!@,`9=*_$-7:"0#``@``"@M9$(`*```
+M``#<1@``)&/__V1"``APP#`M``8P`!1@__H`Q2@ADH(!&#P4%!@00``DKH57
+M9#P$%!@,`(4T9(176(YB5V`\`Q08$D``%*QB5U2.A5=D)$(``0!%&"L08``-
+M<$/XLGX#&`H08``&/`,4&`@`A_VL8E=<?@0@"A2```8\`Q08)$(``0!%&"L4
+M8/_Z<$3XLCP#%!BL8E=<#`"'3``````(`(>3```````````(`(>]HB)6?`@`
+MA[P\$108/`00#`P"?KQDA(,H"`"'Y#P$%!@D`@`!-(0`<"0%`("B@@$8#`"T
+M7F9F@Q`\`Q08"`"'S/QB5H`\`A08C$)75`/@``AP1!`J/`(4&(Q"5V`#X``(
+M<$00*CP"%!B,0E=<`^``"'!$$"H\`A08C$)76`/@``AP1!`J9[W_^/^_```,
+M`9=*`````-^_``!GO0`(`^``"&1"`,0\!!089[W_^```*"UDA%>0_[\```P"
+M9F`D!@"<#`'D?@````#?OP``9[T`"`/@``@``A`K`````&>]__C_OP``#`'D
+M?`````#?OP``9[T`"`/@``@``A`K`^``""0"``$#X``(```0+3P$_X`\!0`/
+M-(0!`32E__$`@!@M``0E^``#'C@TA``!-&,``P`$)'A\`@`[<$+X\@`#'#@`
+M1"`M`$,8+?R%```D!``!_&0```/@``@``!`M`^``"```$"T#X``(```0+0/@
+M``@``!`M/`?_@```$"TTYP$?/`@``@#@&"T`!SXX``,9/#3G`($T8Q`'``<\
+M.'P$`#M\A`G#``,9.``$(3PTYP!P`(,H)61F`"#<I0```,0P)1"@``0`:!@M
+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
+M/`8!`"80``$"("`M-,8`$`P`BPXR$``'%A+_^&8Q``'?OP`8W[(`$-^Q``C?
+ML````^``"&>]`"``````9[W_P/^U`"@\%?_P_[$`""01@`'_M``@-K4`(P`1
+MC+@`%:WX-C%@`3P4__#_M@`P-K4$0P`1C+@VE``C_[,`&``5K3C_L@`0-C%%
+M`?^P````%*+\?!8`._^_`#A^U@G#`!:Q/```D"TVM0!(`!&+."00``$VE`#X
+M/!,``0P!.&8D!`$``D`H+0P!.&(`0"`M```@+7!"*C(`51@M`%,0+0!V&"7<
+M90``,*4`/P"D*"UDA"````4H^'RQ&@H`L2@M?@-2AWX#&,=^`PA'_*,``-Z#
+M```D`T``%(/_[P`````F4@!`)`(`@!9"_^3?OP`XW[8`,-^U`"C?M``@W[,`
+M&-^R`!#?L0`(W[````/@``AGO0!``````#P&$`QGO?^P)`0#D"0%`(!DQH<X
+M_[,`&#P3%!C_OP!(_[X`0/^W`#C_M@`P_[4`*/^T`"#_L@`0_[$`"`P`M%[_
+ML```$$``G?YB5W@`0"`M```H+0P"9F`D!@.0#`&72MYP5W@D!`$`G$,`N#P"
+M0QLT0MZ#<&(0`P`"%+ZF`@`")`(`"-YP5W@,`3AFH@(`":("``5\`O`[$$#_
+M_CP"_^`T0@!9``(2O-Q"```,`(^,`````#P"`/\\`P`--$+_/S1CD0!`!'@`
+M`((0)!!#`'`D8P`!$$,`;@`````,`(A\`````!1``&XD%(`!/!'_\``4I+@V
+M,0`C-I1@`3P5__``%*1X`!&*_'P0`#LVE"`%?A`)PP`0@3P`%*-X`A00)3:U
+M`"/<0P``)`0``S8Q`/@`%:WX`A&()3:U!$-\@Q@&`!6M./Q#```VM0!(WB(`
+M````D"UFE&``9K[_^"07``$\%@`!#`$X9B0$`0`"0"@M#`$X8@!`("TD`P`"
+M,$(`/P`"(,```A(X`)0@+0"0("7<A0``?`4(!_R%``#>)````%4H+0!>("T`
+MD"`E`+`H)=RF```D8___W(4```!6$"TPQ@#_?N4I1_R%``#>)```%&#_]`!5
+M*"TF4@!`)`(`@!9"_^`D`X`!<,8H\@`#'+@T8V`!``,<>#1C(!$``QMX`,,0
+M+61C(```4!`E`,,P+=Q$````T(`E_$0``-XC``#<0@``W@(``/X"``#>9%=X
+MWB(```P`H@8`````%$``&B0#``$\`A08W$)7>`P`E6:@0P`````!#P``$"W?
+MOP!(W[X`0-^W`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]
+M`%``````#`";N@`````(`)`)``````@`D&DD`O__/`00#`P"?WIDA(=H"`"0
+M:20"__\\!!`,#`)_>F2$AT`(`)!I)`+__V>]__```!`M_[```/^_``C<@P`8
+M?&-(`1!@``0`@(`M`&`0+20#__]\8O_&W$0`*!"```,`````#`"5?@``*"T,
+M`3=V`@`@+0```4\```%/W[\`"```$"W?L````^``"&>]`!``````?(PT`GR&
+M.`)QAA@"?(LP`S%K`/]\A#P#`(LX+0!K$"$`1Q@J$&``"@&`4"T\`Q08<*D3
+M<MQH5WAD0P$\)$(``0`#&'@!`Q@M%$?_^Z1I```10``;)4K__P%@`!-Q1@``
+M/`(4&```(!+<1U=X``4K0``&2"-\!58@`8!`+0`````0P``,`````'P(+B``
+M`!`M`*HH)3"E__\`1!@A)$(``61C`3P``QAX`.,8+13"__JD90``)0C__Q4`
+M__$`B2`A`^``"``````\`@#_9[W_P#1"_S]``W@`_[4`*`!B$"0\`P`-`*"H
+M+?^S`!@T8Y<`<$,0*G"#`&[_L@`0`$,0)/^_`#@`@)`M_[8`,`#`F"W_M``@
+M_[$`"!1``-/_L```/!$4&'"6$W+>(E=XP$,"=!1@__XD`P`!X$,"=!!@__L`
+M````/`+_@'"0`3+>(U=X-$(!'P`"$3PT0B@M``(1./Q6``!D0@U@?@*""@``
+M`4^L8`)T```!3SP"%`#<0D:($$``?0``````0/@)`@`H+0`"$"MR`__O`$,0
+M)!!``,X"`"`M#`"0H`)`*"U^`S0"?@(X`C!C`/\P0@#_?A0P`W!B&`(RE`#_
+MWB)7>`*#H"'`1`)T%(#__B0$``'@1`)T$(#_^P`````\`O^```,<>#1"`1\`
+M`A$\`$`@+31"*"T``A$X-(00!?Q6````!"$X?&0:"MXB5W@```%/K$`"=```
+M`4_(8`"MW[\`.#P"_X`T0@$I?`,`.P`"$CQ\8PG#?&(Y!MQ6```2P`!O)`+_
+M_P+`@"U\4/_&)`(!`0`"%3PD!`$`_@(``-XB5WB,0@)PH@(`!MX"``!\`IP'
+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
+M/`40#`@`DA1DI9'H/`40#`@`DA1DI9(($$,`!RQ"`!4\!1`,$$#^*&2EB;@\
+M!1`,"`"2%&2EB8`\!1`,"`"2%&2EB9@00P`'+$(`-#P%$`P00/X=9*6,X#P%
+M$`P(`)(49*6,J#P%$`P(`)(49*6,P!!#``HL0P!4/`40#!1@_A)DI9`()`,`
+M511#_9D`````/`40#`@`DA1DI9`X/`40#`@`DA1DI9`@$$,`!RQ"=3,\!1`,
+M$$#^!&2EE'@\!1`,"`"2%&2EE#`\!1`,"`"2%&2EE%`00P`'+$(`)#P%$`P0
+M0/WY9*6+2#P%$`P(`)(49*6+"#P%$`P(`)(49*6+*!!#``<L0B<5/`40#!!`
+M_>YDI9$H/`40#`@`DA1DI9#H/`40#`@`DA1DI9$(`````&>]_[#_L@`0/!(4
+M&/^^`$`"0/`M_[<`."07``'_M@`P`("P+?^U`"@`H*@M_[0`("04____LP`8
+M)!,``O^P`````(`M_[\`2/^Q``C>0U=X9A$!O``1B'A\<1T*$&``$@(`("TF
+M$``!%A/_^=Y#5WC?OP!(`H`0+=^^`$#?MP`XW[8`,-^U`"C?M``@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0!0``````+`*"T,`)#2`J`P+11`_^O?PE=X``"@
+M+0!1B"T(`)1'IC<````````\`Q089((!O-QC5W@``A!X`&(0+:1````\`A0`
+MW%E&@!,@``,``````R``"``````#X``(`````&>]_^`D`P`!_[```#P0%!C>
+M`E=X_[\`&/^R`!#_L0`(H$,``0```0_>`E=X/`0`_S2$_S]``W@`I$`#>`!D
+M("0\`P`--&,$"1"#``VD0`-Z)`,``@P`3<Z@0P`````!#]^_`!@``!`MW[(`
+M$-^Q``C?L````^``"&>]`"``````/!'__#P$$`PV,0`)9(26,``1C'AF,8`/
+M`!&/.#8Q`&#>,@``#`)_>@`````\`__P)`3_[-X"5W@T8P`C`D20)``#&OS^
+M,@``-&,`^-QC```D`P`"#`!-SJ!#``````$/W[\`&```$"W?L@`0W[$`"-^P
+M```#X``(9[T`(`````!GO?_P```0+?^P``#_OP`(W(,`&'QC2`$08``$`("`
+M+0!@$"TD`___?&+_QMQ"``A\11\"?$(U`@`%*C@`HB@E+*(`01!```X\`A08
+MW$-7>&2B``P``A#X?&(2"A!```D\!!`,`$#X"0(`("W?OP`(W[``````$"T#
+MX``(9[T`$#P$$`P,`GZ\9(268`P!-W8"`"`M```!3]^_``@D`@`!W[````/@
+M``AGO0`0`````'"$&C(PI0!_`(4H)3P$$`QGO?_X_[\```P"?KQDA):0W[\`
+M`"0"``$#X``(9[T`"#P"%!C<0E=XC$,"<`!D("4#X``(K$0"<'P"^#LP0@`'
+M)`/__V1"``@``Q_\``(L/``"(#P`I"`E-&,`$`"#("4``AXX`(,@)3P#_X``
+M`BPX-&,!'P"%("4``A(X``,:/`""$"4T8X6P`^``"/QB```\`A08W$)7>`/@
+M``B00@`$/`(4&-Q"5W@#X``(D$(`"CP"%!C<0E=X`^``")!"``L\`A08W$)7
+M>`/@``B00@`,/`(4&-Q"5W@#X``(D$(``#P"%!C<0E=X`^``")!"``$\`A08
+M)`,``MQ"5W@#X``(H$,```````!GO?_@```@+?^Q``@\$108WB)7>"0%`'C_
+MOP`8_[(`$/^P``"L0`.(#`%1!````````"`M)`4`>``"@``D`@`'?%!RQ"0"
+M``]\4"`$)`(``7Q00@0"`#`M#`%1\'X0$4,\!/^`-(0!WR0%``-\$@`[``0B
+M/'Y&"<,`!C$\-(0)``#$("4\`O^`W(,``#1"`1\\"/^```(0_#4(`1LT0A0'
+M?@,A!P`(0CQ\HP@')`4`0'RC<@<``A%X?`.$!V1'`$#\@P``)`0`!=XE5W@`
+M!""\```8+?RH`X``1B@E)&,``?RD``!D0@`0?&3H!Q1'__I\8^@#W[\`&-^R
+M`!#?L0`(W[````/@``AGO0`@``````@`E2(``"`M```!#SP"%!C<0E=XW$(#
+M@`/@``A\@A&*```!#SP"%!C<0E=XW$(#@`""("V@A0`````!#P/@``@`````
+M`````````0\\`A08W$)7>-Q"`X`#X``(?((0"@```0\\`A08W$)7>-Q"`X``
+M@B`MK(4``````0\#X``(``````````````$//`(4&-Q"5WC<0@.``^``"'R"
+M$@H\`_^```1(OC1C`1\\`A08W$A7>``#&/Q\!P`[-&,4!WSG"<,`!SD\``,9
+M>`#C&"7<9P``?,?;!GTGZ`?!!@.(%,#__B0&``'A!@.($,#_^P````#\9P``
+MW&,``````0_<0U=X?(0(`=QC`X``@R`M_(4``````0_<0E=X```!3ZQ``X@`
+M``%/`^``"`````````$//`(4&-Q"5WC<0@.``((@+?R%``````$/`^``"```
+M````````9[W_T/^Q``@`P(@M_[\`*/^T`"#_LP`8_[(`$!#``!3_L```/!(0
+M#`"`@"T\%!08`*28+V92EM@```$/WH-7>`)P$"T"`#`M)C'__P)`("T`0#@M
+MW&4#@'X%*8IF$``!#`)^O*!%```6(/_S`````````0_?OP`HW[0`(-^S`!C?
+ML@`0W[$`"-^P```#X``(9[T`,``````\!/_P/`/_\#2$`",T8P`C`(`0+0`$
+M)O@TA!0!``(2_``$)#@T0@#XW(8````#'K@T8PH!/`7_\``#''@TI0`C?`8X
+M!P`%+'C\A@``-*4`!=Q&````!2ZXW(9``'P&.`?\AD``W$0``-QD``!\!#@'
+M_&0``-Q$``#<9$``?`0X!_QD0`#<0P``W*,``'P#"$?\HP``W$(``'P#^#MD
+M8P/H?`+X.P!#$"L40/_]/`00#&>]_Y#_L0!`/!'_@/^P`#@V,0$?_[0`6&2$
+MEOC_LP!0`!&(//^_`&@D$`#?_[4`8``0ACC_L@!(-C$!`PP"?WH\$Q`,`!&*
+M.&9SERAF%``&_C```````4_>(@``_Z(`,````4\\$O^``!`H`#92`1]F$``!
+M`!*1/`)@("TV4A`Q`!*1.-Y"``#_H@`PWZ8`,##&__\,`GZ\``8P`!84_^QF
+M4O_P)!`-\0`0A3AF%``>_E```````4_>0@``_Z(`*````4\\$?^``!`H`#8Q
+M`1]F$``!`!&)/`)@("TV,1`Q`!&).-XB``#_H@`HWZ8`*##&__\,`GZ\``8P
+M`!84_^QF,?_P/!!/`&84`%0`````_C```````4_>(@``_Z(`(````4\\$O^`
+M`!`H`#92`1]F$``!`!*1/`)@("TV4A`Q`!*1.-Y"``#_H@`@WZ8`(##&__\,
+M`GZ\``8P`!84_^QF4O_P)!``!0`0AW@V$``19A4``P````#^4```/!'_@#8Q
+M`1\`$8@\-C$!`P`1BC@```%/WD(``/^B`!@```%/WB(`$``0*``"8"`M9A``
+M`68T`!#_H@`8WZ8`&##&__\,`GZ\``8P`!85_^L\!5``-*4`2_XE``````%/
+MWB(``/^B`!````%/WH(``"00`;\"8"`M`!"%^#80``'_H@`09A4`!]^F`!`P
+MQO__#`)^O``&,```````_C```#P2_X`V4@$?`!*0/#92`0,`$I(X```!3]XB
+M``#_H@`(```!3]Y"`!``$"@``F`@+680``%F5``0_Z(`"-^F``@PQO__#`)^
+MO``&,``6%?_K`````&80``C^4``````!3]Y"``#_H@`````!3]Z"```\!=^`
+M`F`@+32E`!#_H@``WZ8``##&__\,`GZ\``8P`-^_`&C?M0!@W[0`6-^S`%#?
+ML@!(W[$`0-^P`#@#X``(9[T`<&>]_[C_L@`0`("0+3P$$`P"0"@M_[\`0&2$
+MEU#_MP`X_[8`,/^U`"C_M``@_[,`&/^Q``@,`GZ\_[```"I"``(40``1W[\`
+M0`)`*"W?MP`X/`00#-^V`#`\!A`,W[4`*&2$EXC?M``@9,:DD-^S`!C?L@`0
+MW[$`"-^P```(`GZ\9[T`2```````$A#X`!(:.`!B$"\\$``$``*)N#808`,"
+M(H@O`!"'N`(RB"UF%``8`!&)N#P3$`L",(`M`C2@+3P2$`P"D!`K)!?__V9V
+M99`40``,9E67L`(`$"T"`#`M?N+_Q@+`("W<1P```J`H+0P"?KQF$``(`I`0
+M*Q!`__<"`!`M/!0`!"07__\VE&`#9G9ED``4I[AF59>P-I0`(`(TH"T"@(`M
+M`@`0+0(`,"U^XO_&`L`@+=Q'```"H"@M#`)^O&80``@"D!`K$$#_]P(`$"T\
+M$``$-A!@`P`0A[@V$``X9A0`^`(P@"T"-*`M`I`0*Q1```P"`!`M)!?__P(`
+M,"U^XO_&`L`@+=Q'```"H"@M#`)^O&80``@"D!`K$$#_]P(`$"T\$``$-A!@
+M`P`0A[@V$`0(9@(`&`(P@"T"(H@M`C`0*Q1```XD%/__9G-ED&92E[`"`!`M
+M`@`P+7Z"_\8"8"`MW$<```)`*"T,`GZ\9A``"`(P$"L00/_W`@`0+=^_`$#?
+MMP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!(9[W_T#P$
+M$`S_L```/!``(_^T`"!DA)>X_[,`&#80``7_L@`0`!"&^/^Q``@\$A`+_[\`
+M*`P"?WH\$1`,)!3__V9299!F,9?@9A,`X`(`$"T"`#`M?H+_QF80``C<1P``
+M`D`@+0P"?KP"("@M%A/_^`(`$"UF$P"H)!3__V80``@"`!`M`@`P+7Z"_\9F
+M$``(W$<```)`("T,`GZ\`B`H+183__@"`!`M9A,!&"04__]F$`"X`@`0+0(`
+M,"U^@O_&9A``"-Q'```"0"`M#`)^O`(@*"T6$__X`@`0+683`0`D%/__9A``
+MN`(`$"T"`#`M?H+_QF80``C<1P```D`@+0P"?KP"("@M%A/_^`(`$"UF$P#0
+M)!3__V80`+@"`!`M`@`P+7Z"_\9F$``(W$<```)`("T,`GZ\`B`H+183__@"
+M`!`MW[\`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#``````9[W_R#P$
+M$`S_L```/!``"/^U`"ADA)?H_[0`(#80P`7_LP`8`!"'>/^R`!`\$A`,_[$`
+M"/^_`#`,`G]Z/!$0"R05__]F,6609E28$&83`$@"`!`M`@`P+7ZB_\9F$``(
+MW$<```(@("T,`GZ\`H`H+183__@"`!`M9A0`6"05__]F$``8`@`0+0(`,"U^
+MHO_&9A``"-Q'```"("`M9D68$`P"?KP\$Q`,%A3_]P(`$"TD`H`!9A``$``"
+M%/AF99@0-$+`!0(@("T``A=X`@`P+31"`+`"()`MW$<``&83`)`D%/__`*"(
+M+0P"?KQF$`!0`@`0+0(`,"U^@O_&9A``"-Q'```"0"`M#`)^O`(@*"T6$__X
+M`@`0+683!,`D%/__9A``0`(`$"T"`#`M?H+_QF80``C<1P```D`@+0P"?KP"
+M("@M%A/_^`(`$"UF$Q0`)!3__V80$@`"`!`M`@`P+7Z"_\9F$``(W$<```)`
+M("T,`GZ\`B`H+183__@"`!`M9A,N`"04__]F$"8``@`0+0(`,"U^@O_&9A``
+M"-Q'```"0"`M#`)^O`(@*"T6$__X`@`0+683.@`D%/__9A`X``(`$"T"`#`M
+M?H+_QF80``C<1P```D`@+0P"?KP"("@M%A/_^`(`$"TD$``C)!3__P`0AK@V
+M$%`!`!"$>&83"``"`!`M`@`P+7Z"_\9F$``@W$<```)`("T,`GZ\`B`H+183
+M__@"`!`M9A,`""04__]F$/@(`@`0+0(`,"U^@O_&9A``(-Q'```"0"`M#`)^
+MO`(@*"T6$__X`@`0+683``@D%/__9A#X"`(`$"T"`#`M?H+_QF80`"#<1P``
+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
+M+&,``3A""P``9!@E``(0*SAC``$`0Q`D$$``#"0%``@F$``!%A/_\F92``C?
+MOP`@W[,`&-^R`!#?L0`(W[````/@``AGO0`H`````"01``0,`3FX`@`@+0(`
+M("TD!0`(#`$YGB0&`"<F,?__`@`@+0P!.;@D!0$@%B#_]20%``@,`3G2`@`@
+M+0@`F]0F$``!`````#P"%!AD0E>09$,`@-Q(``#<1P`(W$8`$-Q%`!AD0@`@
+ML(@``+"'``BPA@`0L(4`&!1#__9DA``@W$8``-Q%``C<0P`0L(8``+"%``BP
+M@P`0D$,`&*"#`!B00P`9H(,`&9!#`!J@@P`:D$(`&P/@``B@@@`;`````&>]
+M__C_OP``W(4```"@$"U\`G@'$$``%`````"4@@`&%$``#3P$$`P`!2PZ9(2D
+MJ`P"?KP``#`M/`00#`P"?WIDA*3XW[\``"0"``(#X``(9[T`"`````#?OP``
+M```0+0/@``AGO0`(E(8`!CP$$`QDA*2H#`)^O``%+#H\!!`,#`)_>F2$I.C?
+MOP``)`(``0/@``AGO0`(9[W_R```$"W_M``@`,"@+?^S`!C_L@`0_[$`"`"@
+MB"W_OP`P_[4`*/^P``#<@P``?',:`GQR&P(28`!%?&8-@@`"&/@"(Q@M$,``
+M+=QE```$H0`K/`00#`P"?KQDA*50/`00#`P"?WIDA*6`/!40#```@"UFM:40
+MWB8```(`*"T"H"`M9A```0P"?KQF,0`(`A,0*Q1`__@`````$D``#R0"_^H\
+M$Q`,`H"(+0``@"UF<Z4P`````-XF```"`"@M`F`@+680``$,`GZ\9C$`"`(2
+M$"L40/_X)`+_ZM^_`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`
+M.'RD&`$0@``H`````/BU`#!\I&("%(``"CP$$`S<90``#`)^O&2$I5`\!!`,
+M#`)_>F2$I/@(`)Q0/!40#`````!D0@`!`%,8*Q1@_[X``ACX``"`+1)`_^$`
+M`!`M`!`@^&80``$,`)P.`H0@+11```D"$A@K`````!!@_]@`$"#X9A```0P`
+MG`X"A"`M$$#_^@(2&"L28/_#``````@`G%`\%1`,`````-QE```\!!`,#`)^
+MO&2$I5`\!!`,#`)_>F2$I.@(`)Q0/!40#`````#<90``/`00#`P"?KQDA*50
+M/`00#`P"?WIDA*6H"`"<4#P5$`P`````/`40##P#$`QGO?^@9**K$&1DJR@\
+M!_^`C$\`"#3G`=__L@!```<Z//^Q`#@TYP!(C+*K$&3F`&B,A0`0C%$`!(Q.
+M``R,30`0C$P`%&3B`#B,:ZLH9Z,`&(R*``2,B0`(C(@`#(R$`!3_L``P?!``
+M.Z^E`!!^$`G#_[\`6``0@3S_M`!0`@<X)?^S`$@D!0`/K[(`&*^Q`!ROKP`@
+MKZX`)*^M`"BOK``LKZL``*^J``2OJ0`(KZ@`#*^D`!3<Y```?*2L!B0%(`%\
+MI`3%)`4``WRD@X<D!0`!?*3&!OSD```"`B@E9$0(`/R@````D"`EC&4``&1"
+M``AD8P`$_(4``!1&__@"`B@E`Z`8+6>F`!AD0O_0`````(QE```"`B`E9&,`
+M!&1"``C\A0``%&;_^CP2_X`D`P`!-E(!WSP$$`P`$I(\9(2EP#92`$`\$Q`,
+M`A(0)0``B"W\0P``9E((0-SE```D%``&#`)^O&9SI>`"$A`E`B`H+=Q&```F
+M,0`!`F`@+0P"?KQF4@`(%C3_^0(2$"7?OP!8W[0`4-^S`$C?L@!`W[$`.-^P
+M`#`#X``(9[T`8`````!GO?ZP_[$!*`"`B"W_OP%(_[0!0/^S`3C_L@$P_[`!
+M(````4_<@@``?$,:`A!@`'P`````?$(;`A!``)<P8P#_,$<`_SP"%!C<0E=X
+MD$@`"@$#0"H5``!U`````)!(``L!!T`J%0``<0!G0"&00@`,`$@0*A1``&T`
+MH)`M#`"<-`#`@"T40`"')`4``=XD````!2W\?(,-@@`#';P090"#?((:`B0%
+M``,D6``!``4MO!!E`(M\F1L"`$`8+3,F``,`&2B#``80*P`%.(`DQ@`!``(0
+M(P#E*"$`1A`D`$40(0!8P"$08`!G`````"1H__\`8"@M?0CX`P``$"UE"``!
+M```P+0`(0/A^0AH*`Z(X+61"``C\XP``?&-B`C!C__\42/_Y`&8P(7"E^/(3
+M(`!8`Z4H+2<S__\``%@M?G/H@P``."T``'@M9G,``202``0`"Q"```]`^`,B
+M$",`J$`M*$D`!27C``$"21`*&$``*OT````D5/__``MI>'Z.^`,``V#X9<X`
+M`0(-:"T`#G#X`*Q@+0``$"T`31@M`8)(+91J``9D0@`(I0H``&4(``+<:@``
+ME&,`!GU*?`']*@``%$[_]0!G."$E[P`"`?1X(65K``$5<__?``L0@!3F`")\
+MA`4"`B`H+2<&__\,`+R<`Z`X+=^_`4C?M`%`W[,!.-^R`3#?L0$HW[`!(`/@
+M``AGO0%0``````@`G90`8'@M?$(;`C!C`/\P1P#_/`00##P%$`QDA*8`9*6K
+M@`P"?KP`8#`MW[\!2-^T`4`D`O_JW[,!.-^R`3#?L0$HW[`!(`/@``AGO0%0
+M/`00##P%$`QDA*9`#`)^O&2EJX`(`)V=)`+_Z@``,"T(`)UJ```H+0@`G9<`
+M`#@M,$(`_P@`G:L`0#@M"`"=G20"_^HP1@`#``(H@P!`&"T`!A`K``(0(R3&
+M``$`!3B``$80)`#E*"%\F1L"`$40(0@`G4\D6``!`QG`(0@`G5D`0!@M````
+M`#P#%!AGO?Z@W&)7>/^U`4@`P*@M_[$!*/^_`5C_M@%0_[0!0/^S`3C_L@$P
+M_[`!()!&``D`Q!`J%$`!=0"`B"T`H)`M```!3]RB``!\5!@"$H`!$7Q3&8(R
+ME`#_$F`!:@*`,"W<8U=X,G,`_P#@@"V09``*`)0@*A2``0H"8#@MD&0`"P"3
+M("H4@`$&`I,@(9!C``P`9!@J%&`!`@````#850")?$<-`B0"``$`!ST\``(5
+M?!#B`5XD`@`#``(5/!#B`5DFA0`",F0``P`3&(,`!!`K``,P@"2$``$``A`C
+M`,,8(0!$$"0`8A`A`$7`(20"``$``A5\$.(`^@)@<"T2@`$Y`H!`+2:%__\"
+M@%`M?*7X`P``$"UDI0`!``!@+0`%*/@`````?J(:"@.B("UD0@`(_(,``'QC
+M9`(P8___%$7_^0!L8"$D`@`#``(5/!3B`"4`````<4KX\A$``2`#JB@M)H;_
+M_P``$"U\QO@#``!(+63&``$`!C#X`````'X"&@H`HB`M9$(`"/R#``!\8V0"
+M,&/__Q1&__D`:4@A%2P!!@(@("T"0"@M)P;__@P`O)P#H#@MW[\!6-^V`5#?
+MM0%(W[0!0-^S`3C?L@$PW[$!*-^P`2`#X``(9[T!8```8"T``%`M<4KX\A)@
+M`/P#JC`M``!H+204``0`#1"````H+0)B$",F=?__*$0`!0`%0/@"A!`*?K7H
+M@P#(0"T``$@M_0```&:U``$80``D)*,``0`````D6?__``UY>'\D^`,``W#X
+M9(0``0(/>"T`!"#X`,YP+0``$"T`3Q@M`<)0+91G``9D0@`(I0<``&4(``+<
+M:P``E&,`!GUK?`']2P``%$3_]0!I2"$DI0`"`+DH(66M``$1M?_!``T0@``%
+M0/@"8A`C`,A`+2A$``4DHP`!`H00"AQ`_]_]````"`">@0!@*"T2@`!C,.@`
+M_P``("T`!!#X`J(0+1$``"[<10``!*$`+7RC2`$\!!`,#`)^O&2$I5`\!!`,
+M#`)_>F2$I8`\$A`,``"(+692I1#>I@```B`H+0)`("UF,0`!#`)^O&:U``@"
+M-!`K%$#_^``````28``-)`+_ZCP2$`P``(@M9E*E,-X&```"("@M`D`@+68Q
+M``$,`GZ\9A``"`(S$"L40/_X)`+_ZM^_`5C?M@%0W[4!2-^T`4#?LP$XW[(!
+M,-^Q`2C?L`$@`^``"&>]`6``````?*-(`1!@`!!\IAD"%,``&`````#XKP`>
+M?*)D`A1``"0`````/`00#`P"?KQDA*50/`00#`P"?WIDA*3X"`">GCP2$`P`
+M````W$4``#P$$`P,`GZ\9(2E4#P$$`P,`G]Z9(2DZ`@`GIX\$A`,`````#P$
+M$`P,`GZ\9(2E4#P$$`P,`G]Z9(2FZ`@`GIX\$A`,/`00#`P"?KQDA*50/`00
+M#`P"?WIDA*6H"`">GCP2$`QDA``!`)00*Q1`_Z$`!!#X$F#_$P``L"T(`)[X
+M`!8@^!!@`&(`%B#X9M8``0P`G`X"!"`M$$#_^@+3&"L2@/^M/!(0#`@`GI\`
+M`(@M`````'Q"&8(RA@#_,$<`_SP$$`P\!1`,9(2F``P"?KQDI:O8W[\!6-^V
+M`5`D`O_JW[4!2-^T`4#?LP$XW[(!,-^Q`2C?L`$@`^``"&>]`6`28/\^``!H
+M+20/``0!S1`C``!0+2A%``4F=/__`>40"GZ4Z(,`"B#X9I0``0.D("T``%@M
+M_(``````8"T`%*%X&$``(R5#``$`````)%;__P`#2/A^R/@#`ZE(+64(``$`
+M`!`M``A`^`*K."T`1Q@M`2(H+91F``9D0@`(I(8``&2$``+<9@``E&,`!GS&
+M?`'\I@``%$C_]0!L8"$E2@`"`590(65K`"`1=/\6):T`!`'-$",`"B#X*$4`
+M!0.D("T!Y1`*)4,``1Q`_^#\@```"`"?/@!@4"T\!!`,/`40#&2$IKADI:O8
+M`8`P+0P"?KP!(#@M"`">MR0"_^H(`)Y$``!(+0``8"T(`)XN``!0+=Y"``!\
+M5!@"?%,9@@@`G@9\1PT""`"?!3)G`/\`@"@M/`00#`P"?KQDA*9X"`">2B0"
+M_^H(`)X<`+/`(3*$``,`%!B#``00*P`#*(`DA``!``(0(P"C&"$`1!`D`$,0
+M(0@`G@XD10`"`````#P#%!AGO?Z@W&)7>/^R`3@`P)`M_[$!,/^_`5C_M0%0
+M_[0!2/^S`4#_L`$HD$8`"0#$$"H40`$%`("(+0"@@"T```%/W*(``'Q(&@(1
+M``"H?%D;`C$(`/\!`#`M$R``IS,I`/_<8U=X,SD`_Y!D``H`B"`J%(``H0,@
+M2"V09``+`)D@*A2``)T!&2`AD&,`#`!D&"H48`":/`00#-A7`(H`H"`M?$(-
+M@@`"3;PD`@`!``(5_!$B`.\D`@`#``(5O!$B`.HE!0`!,R0``P`9&(,`!!`K
+M``,P@"2$``$``A`C`,,8(0!$$"0`8A`A`$7`(20"``$``A7\$2(`D`,@>"T1
+M``#/`0!0+24%__\!`%@M?*7X`P``$"UDI0`!``!@+0`%*/@`````?D(:"@.B
+M("UD0@`(_(,``'QC8@(P8___%$7_^0!L8"$D`@`#``(5O!4B`"4`````<6OX
+M\A%``+8#JR@M)0;__P``$"U\QO@#``!(+63&``$`!C#X`````'SB&@H`HB`M
+M9$(`"/R#``!\8V(",&/__Q1&__D`:4@A%2P`G`(@("T"`"@M)P;__PP`O)P#
+MH#@MW[\!6-^U`5#?M`%(W[,!0-^R`3C?L0$PW[`!*`/@``AGO0%@``!@+0``
+M6"T`````<6OX\A,@`)(#JS`M``!H+202``0`#1"````H+0,B$",G,___*$0`
+M!0`%0/@"1!`*?G/H@P#(0"T``$@M_0```&9S``$80``D)*,``0`````D5/__
+M``UY>'Z$^`,``W#X9(0``0#O>"T`!"#X`,YP+0``$"T`3Q@M`<)0+91K``9D
+M0@`(I0L``&4(``+<:P``E&,`!GUK?`']2P``%$3_]0!I2"$DI0`"`+0H(66M
+M``$1L__!``T0@``%0/@#(A`C`,A`+2A$``4DHP`!`D00"AQ`_]_]````"`"@
+M&0!@*"T`X#`M_Z<!(`P`G#0"0"@M%$``8M^G`2#>`@``?$@:`@@`GYU\61L"
+M?$(;`C$&`/\P20#_/`00##P%$`QDA*8`9*6KN`P"?KP!(#@MW[\!6-^U`5`D
+M`O_JW[0!2-^S`4#?L@$XW[$!,-^P`2@#X``(9[T!8!,@_Z<``'`M)!,`!`'N
+M$",``%@M*$4`!2<T__\"91`*?I3H@P`+(/AFE``!`Z0@+0``:"W\@`````!@
+M+0`4H7@80``C)6,``0`````D5?__``-0^'ZI^`,#JE`M92D``0``$"T`"4CX
+M`DU`+0!(&"T!0B@ME&8`!F1"``BDA@``9(0``MQF``"48P`&?,9\`?RF```4
+M2?_U`&Q@(25K``(!=5@A9:T`(!&T_X`ES@`$`>X0(P`+(/@H10`%`Z0@+0)E
+M$`HE8P`!'$#_X/R````(`*!L`&!8+3P$$`P\!1`,9(2FN&2EJ[@!@#`M#`)^
+MO`$@."T(`)_B)`+_Z@@`G]P``$@M``!@+0@`G\8``%@M`(`H+3P$$`P,`GZ\
+M9(2F>`@`G^(D`O_J"`"?XB0"_^H(`)^T`+G`(3$$``,`"!B#``00*P`#*(`D
+MA``!``(0(P"C&"$`1!`D`&(0(0@`GZ8D10`!9[W_\/^_``C_L````("`+=R%
+M```\!!`,#`)^O&2$IP#>"```/`00##P%$`QDI:=@9(2G:'T)!()]`@T"W@H`
+M"`"I(`LP0@#_/`44```"&'@``A#X`(!(+7T&#@)]!P\"`&(0+3P$$`QDI0$@
+M,,8`_S#G`/]DA*<8`*(H+7T(!,(,`GZ\?4I(`=X)``#?OP`(/`00#-^P``!D
+MA*=P?249@GTF&`)])P1"?2@$`C"E`/\PQ@#_?2D#P@@"?KQGO0`09[W_\/^_
+M``C_L````("`+8R%`!0\!!`,W@8`"`P"?KQDA*>PC@4`%-X$``C?OP`(W[``
+M```%*,`(`*>L9[T`$&>]__#_L````("`+?^_``@\!!`,#`)_>F2$I]C>!0`(
+M/`00#`P"?KQDA*?PC@4`$#P$$`P,`GZ\9(2H"(X%`!0\!!`,#`)^O&2$J"".
+M!0`</`00#`P"?KQDA*@XC@4`,#P$$`P,`GZ\9(2H4(X%`!S>!@`(/`00#&2$
+MJ&APHOCR#`)^O'S",@K?OP`(W[```"0$``H(`G[B9[T`$`````!GO?_H`(`P
+M+?^P```\$!08W@17>/^_`!#_L0`(D(,`"0##&"H08``,W[\`$&3&``,`!HCX
+M#`"@W'R1(@K>!%=XW[\`$-^P``!\D2(*W[$`"`@`H,QGO0`8/`00#-^Q``@\
+M!1`,W[```&2$J(ADI:M`"`)^O&>]`!@(`)RR`````)"&``D0P``J`````'P)
+M`#L`@!@M?2H)PP``*"T`````W&(`&!!``!E])PG#W$8`"!#``!U\R$@!```!
+M3SP"_X```#`M-$(!*0`"$CQ\XCD&_$@``-QB`!A\!P`[$$```GSG"<-\1D@!
+M```!3SP"_X`T0@$I``(5^#1"``$``A1X?.(Y!OQ&``"0A@`))*4``0"F$"H4
+M0/_B9&,`"`/@``@```````````@`H3T!0#@M`^``"``````\`O^`9[W_T#1"
+M`2G_M``@``(5^#1"``$`@*`M_[\`*``"%'C_LP`8_[(`$/^Q``C_L```?`,`
+M.WQC"<-\8CD&W%```!(``(`D`O__?%#_QCP"_X`T0@$I+@0``7P#`#L``A(\
+M?&,)PWQB.0;<40``$B``@3P"_X`D`O__?%'_QBXB``$`1"`E/`+_@#1"`2E\
+M`P`[``(2/'QC"<-\8CD&W%(``!)``'\\`O^`)`+__WQ2_\8\`O^`-$(!*7P#
+M`#L``A(\?&,)PWQB.0;<4P``$F``?20"__]\4__&%(``!2YC``$N0@`!`&(0
+M)1!``#H"`"`M$F``"@````!\`P`[?G-(`7QC"<,```%//`+_@#1"`2D``A(\
+M?&(Y!OQ3```20``*`````'P#`#M^4D@!?&,)PP```4\\`O^`-$(!*0`"$CQ\
+M8CD&_%(``!(@``H`````?`,`.WXQ2`%\8PG#```!3SP"_X`T0@$I``(2/'QB
+M.0;\40``$@``#M^_`"A\!``[?@-(`7R$"<,```%//`+_@```@"TT0@$I``(5
+M^#1"``$``A1X?((Y!OQ#``#?OP`H`@`0+=^T`"#?LP`8W[(`$-^Q``C?L```
+M`^``"&>]`#`````````H+20&`#@,`F9@?G-(`2:"__^N`@`<<$3X\OX1``A^
+M0T@!KA0`$`(D$"W\0P``G@(`'``"$/@"0I`M_D```/X3`"BN```````!#]^_
+M`"@"`!`MW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`,#P"_X`D!``!-$(!
+M*0``@"U\`P`[``(2/'QC"<-\8CD&W%$``!8@_X,D`O__/`+_@"0$``$T0@$I
+M``"(+7P#`#L``A(\?&,)PWQB.0;<4@``%D#_A20"__\\`O^```"0+31"`2E\
+M`P`[``(2/'QC"<-\8CD&W%,``!9@_X4D`O__"`"AB0``F"UGO?_`)`(`#O^V
+M`#``@+`M_[\`./^U`"C_M``@_[,`&/^R`!#_L0`(_[```*""``HD`@`-H((`
+M"R0"`!N@@@`,#`#(-```("V2PP`)$&``97Q"X,,\$_^```*L/#9S`=\``(`M
+M?!0`.P`3FCQ^E`G#/!(`!``4H3PV<P*`````````("T,`,@T`A*((0(@("T`
+M`"@M```P+0P`MY8``C@`%$``10(@("T,`+D*`````'(#$/(`<Q@M?$1(`0*#
+M&"4``B`*`(`0+=QD```$@``2`%40)3P$$`P\!1`,9(2HJ&2EJV`,`GZ\`@`P
+M+20"_^K?OP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!`
+M_&(``"80``&2Q0`)`@40*A1`_]4`````/`00#"2E__\,`GZ\9(2HT#P&$`PD
+M!`@8)`4`@`P`M%YDQJCP$$``)?["`%@`0"`M```H+0P"9F`D!@@8WL(`6&1#
+M`!C\0P`(WL(`6*Q````,`)RR`````-^_`#C?M@`P```0+=^U`"C?M``@W[,`
+M&-^R`!#?L0`(W[````/@``AGO0!``````-^_`#@D`O__W[8`,-^U`"C?M``@
+MW[,`&-^R`!#?L0`(W[````/@``AGO0!`"`"B4@``*"T(`*)")`+_]``````\
+M`A08)`@`9-Q"5W@D!@0`W$<`6,#B```40/_^)`(``>#B```00/_[`````(SC
+M`!`L8@0`$$``#W!B^'+<Y0`(`*(0+9!$``$4@``')`0``0@`HK.@1``!`*(0
+M+9!$``$0@``5)`0``21C``$49O_Z<&+X<JS@`!````%/K.```````4]\`_@[
+M9&,`"@````!\`O@[`$,0*Q1`__T`````)0C__Q4`_]L``````^``"```````
+M````H$0``:SC`!````%/K.```````4\#X``(```````````\!108W*)7>-Q"
+M`%C<0P`(`(,P*Q3```1D8P@``(,8*Q1@``4``````(`H+3P$$`P(`GZ\9(2I
+M`,!#```48/_^)`,``>!#```08/_[`````*"```'<HE=XW$(`6````4^L0```
+M```!3P/@``@`````9[W_R/^S`!@`P)@M_[(`$`#@D"W_L````("`+?^_`##_
+MM0`H_[0`(/^Q``C`@@``%$#__B0"``'@@@``$$#_^P````",@@`<C)$`%`!1
+MB",`\1@K%&``>'!"^/+<@P`(?&(:"A!@`,8D!?__W(0`*!2``&-\H__&C@0`
+M,'P&`#M\Q@G#!(``KC"%`_\\!/^`-(0!*0`$(CQ\Q#D&?*3,!]R$```0@`"J
+M``````!B$"U\@T@!_$,``"0"__^>`P`<?$3_QCP"_X`T0@$I``,8^``"$CP`
+M9"`M_(```'P#`#M\8PG#?&(Y!MQ"``!\0T@!``(8"OX#`"@```$/$B``EP``
+M``">!``4`C(0*]X#``@`!"#X$$``3`!D("T"8"@M#`)E7'(FX/*.!``<C@,`
+M%`"#,",")B@K$*``;0#1$"L"(Q@AK@,`%````0^>!``4W@(`"``$(/@`1"`M
+M`E&H(W(E^/("92@M#`)E7'*FX/*.!``<C@,`%`"#,","IB@K$*``3P#5H"L"
+MHZ`AKA0`%````0\```%/W@(`('Y2^`-\`P`[?&,)PP!`("T``QD\?`0I!GQ%
+MD@(`9"`E```0+?R2```D!`$8$*0`*SP$__````%/K@```````4_?OP`PW[4`
+M*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#@`8A`M`(`P+?Q$``!\IO_&
+MG@0`'#P"_X`T0@$I?`,`.P`$(/@``A(\`(8P+7QC"<,(`*,/_,```)R$`!3>
+M`@`(``0@^`!$("T"8"@M#`)E7')&X/*.!``<C@,`%`"#,","1B@K$*``+@#2
+M$"L"0Q@A"`"C.JX#`!0TA``C``0B_#2$`/@`9!@EW&,``````4^N```````!
+M3]^_`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`.``````6@`!5
+M`J`H+=X"``APA/CR?$0B"A"``"8D`O__K@``%'Q$_\8(`*,Z_@0`"``````4
+M0`!#`B`H+=X"``APA/CR?$0B"A"``#HD`O__K@``%'Q$_\8(`*,H_@0`"```
+M```00/_I`D`H+3P$$`P,`GZ\9(2IL`@`HSL`````````````,"T(`*+Y```H
+M+0`````\!!`,#`)_>F2$JC`\!!`,#`)_>F2$J?@(`*-*)`+_]*X``!0``"`M
+M"`"C.OX$``@\!!`,#`)_>F2$J2@\`O^`G@,`'#1"`2E\!``[``(2/'R$"<-\
+M@CD&``,8^-Q"``#>!``(?$5(`0`"*`H`@Q@M_&4``)X"`!S>`P`(``(0^'QB
+M$@H40/](/`00#`P"?WIDA*EH"`"CKCP$$`P`````K@``%```("T(`*,H_@0`
+M"#P$$`P,`GZ\9(2IL`@`HRT``"`M`````#P$$`P,`GZ\9(2IL`@`HSL`````
+M`````#P"%!AGO?]HW$)7>"0#``+_OP"0D$(``!1#`#4`````D(,``MR$``#_
+MH`"(``,1@GQG`(-P0@5S``-(PGSBG,8``T%"?2*4A@`#&0)]`H0&?(@?`GQB
+MC$9\@QX"?0)[!GQB6@84X``<_Z(`@'R".`408``2_Z(`@#P'__TD:/__-.?_
+M\6>B``AQ"/CR``<Y/`.@&"T`2$`M"`"D"V3G__]D0@`(W*0``&2E``@`AR`D
+M_&0``!1(__H`0!@M```!3V>D`(`,`)T@`Z`H+=^_`)`#X``(9[T`F'R'%4(H
+MZ``",.<``0`(.`H(`*/]?.*E!CP$$`P`0"@M#`)^O&2$JFC?OP"0)`(``0/@
+M``AGO0"8/`(4&&>]_VC<0E=X)`,``O^_`)"00@``%$,`+20(``'<@@``D(<`
+M`@`(1;S_H`"(?$0?`GQ#'@)\YP&#``0C/'SHK49\1Q5"`(@@)2CH``(PYP`!
+M?&1:!@`(.`I\Y*4&?$0X!1!@`!/_I`"`/`?__21H__\TY__Q9Z(`"'$(^/(`
+M!SD\`Z`8+0!(0"T(`*1-9.?__P````!D0@`(W*0``&2E``@`AR`D_&0``!1(
+M__H`0!@M```!3V>D`(`,`)T@`Z`H+=^_`)`#X``(9[T`F#P$$`P`0"@M#`)^
+MO&2$JFC?OP"0)`(``0/@``AGO0"8/`(4&"0#``+<0E=XD$(``!!#``L`````
+M/`00#&>]__@`0"@M_[\```P"?KQDA*IHW[\``"0"``$#X``(9[T`"`@`G2``
+M````/`(4&&>]_NC<0E=X)`<``O^_`1"00@``%$<`2R0#``.0@@`",$<``Q3C
+M`#TD`P`#W(<````"$8(``QV\?$.M1F>K`(``!U<^?.(>`O^@`0@`"D,\`0,8
+M)7Q#6@9\XS@%$$``$?^C`0`\"/_])$G__S4(__%GJP"`<2GX\@`(03QGHP"(
+M`6`0+0!I2"UE"/__W*<```#H."3\1P``9$(`"!1)__MDI0`($4``$CP(__TE
+M2?__-0C_\6>B``AQ*?CR``A!/`#`&"T#H"@M`$E(+0@`I*ME"/__9$(`"-QG
+M``!D8P`(`.@X)/RG```42?_Z`$`H+0```4_<A```9Z4!``.@."T!8#`M?(05
+M0@P`GW0PA`#_W[\!$`/@``AGO0$8/`00##P%$`QDA*JH9*6KH`P"?KP`X#`M
+MW[\!$"0"``$#X``(9[T!&#P$$`P`0"@M#`)^O&2$JFC?OP$0)`(``0/@``AG
+MO0$89[W_R/^S`!@`P)@M_[(`$`#@D"W_L````("`+?^_`##_M0`H_[0`(/^Q
+M``C`@@``%$#__B0"``'@@@``$$#_^P````",@@`<C)$`%`!1B",`\1@K%&``
+M>'!"^/+<@P`(?&(:"A!@`,8D!?__W(0`*!2``&-\H__&C@0`,'P&`#M\Q@G#
+M!(``KC"%`_\\!/^`-(0!*0`$(CQ\Q#D&?*3,!]R$```0@`"J``````!B$"U\
+M@T@!_$,``"0"__^>`P`<?$3_QCP"_X`T0@$I``,8^``"$CP`9"`M_(```'P#
+M`#M\8PG#?&(Y!MQ"``!\0T@!``(8"OX#`"@```$/$B``EP````">!``4`C(0
+M*]X#``@`!"#X$$``3`!D("T"8"@M#`)E7'(FX/*.!``<C@,`%`"#,",")B@K
+M$*``;0#1$"L"(Q@AK@,`%````0^>!``4W@(`"``$(/@`1"`M`E&H(W(E^/("
+M92@M#`)E7'*FX/*.!``<C@,`%`"#,","IB@K$*``3P#5H"L"HZ`AKA0`%```
+M`0\```%/W@(`('Y2^`-\`P`[?&,)PP!`("T``QD\?`0I!GQ%D@(`9"`E```0
+M+?R2```D!`$8$*0`*SP$__````%/K@```````4_?OP`PW[4`*-^T`"#?LP`8
+MW[(`$-^Q``C?L````^``"&>]`#@`8A`M`(`P+?Q$``!\IO_&G@0`'#P"_X`T
+M0@$I?`,`.P`$(/@``A(\`(8P+7QC"<,(`*4'_,```)R$`!3>`@`(``0@^`!$
+M("T"8"@M#`)E7')&X/*.!``<C@,`%`"#,","1B@K$*``+@#2$"L"0Q@A"`"E
+M,JX#`!0TA``C``0B_#2$`/@`9!@EW&,``````4^N```````!3]^_`##?M0`H
+MW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`.``````6@`!5`J`H+=X"``AP
+MA/CR?$0B"A"``"8D`O__K@``%'Q$_\8(`*4R_@0`"``````40`!#`B`H+=X"
+M``APA/CR?$0B"A"``#HD`O__K@``%'Q$_\8(`*4@_@0`"``````00/_I`D`H
+M+3P$$`P,`GZ\9(2IL`@`I3,`````````````,"T(`*3Q```H+0`````\!!`,
+M#`)_>F2$JC`\!!`,#`)_>F2$J?@(`*5")`+_]*X``!0``"`M"`"E,OX$``@\
+M!!`,#`)_>F2$J2@\`O^`G@,`'#1"`2E\!``[``(2/'R$"<-\@CD&``,8^-Q"
+M``#>!``(?$5(`0`"*`H`@Q@M_&4``)X"`!S>`P`(``(0^'QB$@H40/](/`00
+M#`P"?WIDA*EH"`"EICP$$`P`````K@``%```("T(`*4@_@0`"#P$$`P,`GZ\
+M9(2IL`@`I24``"`M`````#P$$`P,`GZ\9(2IL`@`I3,``````````-R"``!\
+M0E@",$0(`#!##_``9!`+,$4`_RRD`(`0@``&/`(4&&2C`3S<0E=X``,8>`/@
+M``A\0Q4*/`00#&>]__C_OP``#`)^O&2$JN#?OP`````0+0/@``AGO0`(````
+M`#P"%!AGO?](W$)7>"0#``+_LP"H`*"8+?^_`+#_L@"@_[$`F/^P`)"010``
+M%*,`6`"`@"V0@P`"W@D```$`D"T`P(@M`.`@+7!H`;H``U""?2(,@C$(``(`
+M`A<\``,PPMSG``!]`FL&?4*4A@`#04)\PHQ&``,9`GT">\9])A\"?&*$!GTI
+M'@)\PDF&?.-<`O^@`(A](A@&?&)8!PP`I=K_H@"`WZ,`@)($``(``C`KIZ(`
+MB'S#_\?_HP"`Z((`+-X"``#?HP"(?$P>`GQ".`$QC`#_?$-(!1&``!;_HP"(
+M/`T`!S)(``$UK?_!`F`H+0`-:KP#H!@M```0+66M___<J@````)(^`.I2"TD
+M0@`!9*4`"`!,6"H!35`D_&H``&1C``C=*@``?0K_QA5@__3]*@`````!3]X$
+M``!GI0"``Z`P+0(@."U\A!5"#`"=W#"$`/_?OP"PW[,`J-^R`*#?L0"8W[``
+MD`/@``AGO0"X?$050BB&``(PA``!``8@"GR#G,8(`*8C_Z,`@``````\!!`,
+M#`)^O&2$JFC?OP"PW[,`J"0"``'?L@"@W[$`F-^P`)`#X``(9[T`N``````\
+M`A089[W_:-Q"5W@D`P`"_[\`D)!"```40P`[`,`X+=R"``"0A@`")`,``0`#
+M'3Q\2`R"?$D?`GS&`8-]`^\&``8P(WQ(%4(PQ@`"?$L>`GS#:P8I!@`",0@`
+M`7TC288`!D`*?6,8!GQ".`$!`#`M`&!`+0``&"U\R)S&_Z@`@'Q#2`418``5
+M_Z,`B#P-``<#H!@M-:W_P0``$"T`#6J\)`P``66M___<J0````)`^`.H0"TD
+M0@`!9*4`"`!+4"H!+4@D_&D``&1C``C="0``?8GO1A5`__3]"0`````!3]R$
+M``!GI0"``Z`P+7R$%4(,`)W<,(0`_]^_`)`#X``(9[T`F``````\!!`,`$`H
+M+0P"?KQDA*IHW[\`D"0"``$#X``(9[T`F#P"%!AGO?[HW$)7>"0#``+_OP$0
+MD$(``!1#`%<D!P`#D((``C!#``,49P!)<$(!NMR#```D!P`#,$(``@`'/3QG
+MK0"```-_/GQ':P8`#Q&\?&L>`@!'$"5\8S@!_Z,!"'UB&`818``7_Z(!`#P.
+M``<`H#@M-<[_P0&@&"T`#G*\```0+67.__\D#``!`````-SI`````D#X`ZA`
+M+21"``%DYP`(`$M0*@$N2"3\:0``9&,`"-T)`(!]B>]&%4#_]/T)`(`1X``7
+M`>!0+3P,``<`P"@M-8S_P0.@&"T`#&*\```0+66,__\D"P`!`````-RH````
+M`CCX`Z<X+21"``%DI0`(`$I(*@$,0"3\:```9&,`"-SH``!]:.]&%2#_]/SH
+M``````%/W(0``&>E`0`#H#@M`:`P+7R$%4(,`)W<,(0`_]^_`1`#X``(9[T!
+M&#P$$`P\!1`,9(2JJ&2EJ_@,`GZ\`&`P+=^_`1`D`@`!`^``"&>]`1@\!!`,
+M`$`H+0P"?KQDA*IHW[\!$"0"``$#X``(9[T!&#P#%!AGO?_HW&-7>`"@2"W_
+MOP`0)`(``I!E```4H@`L`,`X+9"#``(P9@`#%,(`'G!C`;K<@@``)`4``3!H
+M``(`!2U\?$8%`GQ##()\Q<X&``,?/`!E&"5\1A\"?0-K!GQ%'@)\PTF&?$(X
+M`?^B``@`8!`M?*(8!O^B``````%/W(0```.@*"T!(#`M?(050@P`G=PPA`#_
+MW[\`$`/@``AGO0`8`````#P$$`P\!1`,9(2JJ`P"?KQDI:P8W[\`$"0"``$#
+MX``(9[T`&``````\!!`,#`)^O&2$JFC?OP`0)`(``0/@``AGO0`8`````#P"
+M%!@D`P`"W$)7>)!"```00P`+`````#P$$`QGO?_X`$`H+?^_```,`GZ\9(2J
+M:-^_```D`@`!`^``"&>]``@(`)W<`````#P#%!AGO?_HW&-7>`"@2"W_OP`0
+M)`(``I!E```4H@`J`,`X+9"(``(Q!@`#$,(`"CP%$`P\!!`,9(2JJ`P"?KQD
+MI:PXW[\`$"0"``$#X``(9[T`&`````#<@@``)`4``0`%+?P`"$&"_Z``"'Q&
+M!0)\0PR"?,7>A@`#'CP`91@E?$8?`GT#K49\11X"?,-[!GRC6@9\0S@%_Z,`
+M`````4_<A````Z`H+0$@,"U\A!5"#`"?=#"$`/_?OP`0`^``"&>]`!@`````
+M/`00#`P"?KQDA*IHW[\`$"0"``$#X``(9[T`&``````\`A08)`,``MQ"5WB0
+M0@``$$,`"P`````\!!`,9[W_^`!`*"W_OP``#`)^O&2$JFC?OP``)`(``0/@
+M``AGO0`("`"?=`````!GO?^P_[$`"`"`B"W_M0`H/`00#/^_`$@`H*@M_[X`
+M0&2$K%#_MP`X`B`P+?^V`##_M``@_[,`&/^R`!`,`GZ\_[```!*@`!S?OP!(
+MDB4``#P4$`P``)@M9H2L<#P>$`QFE*QP#`)^O"9R``%F,0`!``"X+206``=G
+MWJQX`H`@+1)5``P"0(`MDB4```P"?KQF,0`!,@(`!Q!6`!,"X"@M`@"8+29R
+M``$"@"`M%E7_]@)`@"W?OP!()`0`"M^^`$#?MP`XW[8`,-^U`"C?M``@W[,`
+M&-^R`!#?L0`(W[````@"?N)GO0!0`\`@+0)`,"T,`GZ\)G<``@@`I]4"`)@M
+M9[W_Z/^_`!#_L````("`+?^Q``@"`"@ME)$`"#P$$`P,`GZ\9(2LB-X"``#>
+M!P`(/`00#)(%`!1DA*RH?$-8`@`"0[XP:0_P`&`0+3!C"`!\YP@"`2,0"S$(
+M,`".!@`,,.<`_PP"?KP!`D`EW@4`&)('`!H\!!`,D@(`&62$K.!\IC@!#`)^
+MO'Q'>@22!0`0/`00#`(@,"T,`GZ\9(2M&#P$$`P,`G]Z9(2M,"0%`"`,`*>L
+M`@`@+3P$$`P,`G]Z9(2M4&8$`"`,`*>L)`4`0-X"`!A\0C@!$$``#BHC`($D
+M`@"``B,0"SP$$`QDA*UX`$`H+0P"?KP`0(@MW@,`&'QC.`$48``,```@+0P`
+MIZP"("@MW[\`$`(`*"W?L0`(/`00#-^P``!DA*V@"`)^O&>]`!@``````&`@
+M+20"__\(`*@O?$3_QCP"$`PL@P`$$&``!61"K<@\`A`,<(3X\F1"KC!\1!(*
+M`^``"``````#X``(`````(^"@81GO?_X)`,`$!!#`!#_OP````(8^"1&``$\
+M!Q(:/`(2&F1"A+ADYX0XKX:!A`!G."W\Y````&(8+?QE`````!`MW[\```/@
+M``AGO0`(/`00#`P"?WIDA*W0"`"H6R0"``$`````CX*!A&>]_^#_OP`8_[(`
+M$/^Q``@80``0_[```#P2$AH\$1(:9E*$.&8QA+@``(`MWD(``"80``'>)```
+M9E(`"`!`^`EF,0`(CX*!A`("$"H40/_W`````-^_`!C?L@`0W[$`"-^P```#
+MX``(9[T`(&>]_OC_L@#@/!+_@/^S`.@V4@$?_[``T``2D#S_M`#P/!`?`#P3
+M$`PV4@$#_[\!`&9SERC_M0#X9A0`,_^Q`-@`$I(X`````/Y0``````%/WD(`
+M`/^B`,@```%//!'_@``0*``V,0$?9A```0`1B3P"8"`M-C$0,0`1B3C>(@``
+M_Z(`R-^F`,@PQO__#`)^O``&,``6%/_L9C'_\"00`-\`$(8X9A0`!OXP````
+M``%/WB(``/^B`,````%//!+_@``0*``V4@$?9A```0`2D3P"8"`M-E(0,0`2
+MD3C>0@``_Z(`P-^F`,`PQO__#`)^O``&,``6%/_L9E+_\"00!OD`$(5X9A0`
+M'OY0``````%/WD(``/^B`+@```%//!'_@``0*``V,0$?9A```0`1B3P"8"`M
+M-C$0,0`1B3C>(@``_Z(`N-^F`+@PQO__#`)^O``&,``6%/_L9C'_\&80#^)F
+M%``"`````/XP``````%/WB(``/^B`+````%//!+_@``0*``V4@$?9A```0`2
+MD3P"8"`M-E(0,0`2D3C>0@``_Z(`L-^F`+`PQO__#`)^O``&,``6%/_L9E+_
+M\&80'_YF%`$``````/Y0``````%/WD(``/^B`*@```%//!'_@``0*``V,0$?
+M9A``"``1B3P"8"`M-C$0,0`1B3C>(@``_Z(`J-^F`*@PQO__#`)^O``&,``6
+M%/_L9C'_\&80_P%F%`$``````/XP``````%/WB(``/^B`*````%//!+_@``0
+M*``V4@$?9A``"``2D3P"8"`M-E(0,0`2D3C>0@``_Z(`H-^F`*`PQO__#`)^
+MO``&,``6%/_L9E+_\&80_P%F%`$``````/Y0``````%/WD(``/^B`)@```%/
+M/!'_@``0*``V,0$?9A``"``1B3P"8"`M-C$0,0`1B3C>(@``_Z(`F-^F`)@P
+MQO__#`)^O``&,``6%/_L9C'_\&80_P%F%`$``````/XP``````%/WB(``/^B
+M`)````%//!+_@``0*``V4@$?9A``"``2D3P"8"`M-E(0,0`2D3C>0@``_Z(`
+MD-^F`)`PQO__#`)^O``&,``6%/_L9E+_\&80_P%F%`$``````/Y0``````%/
+MWD(``/^B`(@```%//!'_@``0*``V,0$?9A``"``1B3P"8"`M-C$0,0`1B3C>
+M(@``_Z(`B-^F`(@PQO__#`)^O``&,``6%/_L9C'_\&80_P%F%`$``````/XP
+M``````%/WB(``/^B`(````%//!+_@``0*``V4@$?9A``"``2D3P"8"`M-E(0
+M,0`2D3C>0@``_Z(`@-^F`(`PQO__#`)^O``&,``6%/_L9E+_\&80__MF%`$`
+M`````/Y0``````%/WD(``/^B`'@```%//!'_@``0*``V,0$?9A``"``1B3P"
+M8"`M-C$0,0`1B3C>(@``_Z(`>-^F`'@PQO__#`)^O``&,``6%/_L9C'_\&80
+M_P%F%`$``````/XP``````%/WB(``/^B`'````%//!+_@``0*``V4@$?9A``
+M"``2D3P"8"`M-E(0,0`2D3C>0@``_Z(`<-^F`'`PQO__#`)^O``&,``6%/_L
+M9E+_\&80_P)F%`$``````/Y0``````%/WD(``/^B`&@```%//!'_@``0*``V
+M,0$?9A``"``1B3P"8"`M-C$0,0`1B3C>(@``_Z(`:-^F`&@PQO__#`)^O``&
+M,``6%/_L9C'_\&80_P%F%`$``````/XP``````%/WB(``/^B`&````%//!+_
+M@``0*``V4@$?9A``"``2D3P"8"`M-E(0,0`2D3C>0@``_Z(`8-^F`&`PQO__
+M#`)^O``&,``6%/_L9E+_\&80_P%F%`$``````/Y0``````%/WD(``/^B`%@`
+M``%//!'_@``0*``V,0$?9A``"``1B3P"8"`M-C$0,0`1B3C>(@``_Z(`6-^F
+M`%@PQO__#`)^O``&,``6%/_L9C'_\&80_@5F%`$``````/XP``````%/WB(`
+M`/^B`%````%//!+_@``0*``V4@$?9A``$``2D3P"8"`M-E(0,0`2D3C>0@``
+M_Z(`4-^F`%`PQO__#`)^O``&,``6%/_L9E+_\"00#?,`$(4X9A0`H/Y0````
+M``%/WD(``/^B`$@```%//!'_@``0*``V,0$?9A``$``1B3P"8"`M-C$0,0`1
+MB3C>(@``_Z(`2-^F`$@PQO__#`)^O``&,``6%/_L9C'_\&80_V%F%`!`````
+M`/XP``````%/WB(``/^B`$````%//!+_@``0*``V4@$?9A``$``2D3P"8"`M
+M-E(0,0`2D3C>0@``_Z(`0-^F`$`PQO__#`)^O``&,``6%/_L9E+_\&80_\%F
+M%0!``````/Y0```\$?^`-C$!'P`1B#PV,0$#`!&*.````4_>0@``_Z(`.```
+M`4_>(@`0`!`H``)@("UF$``09C0`$/^B`#C?I@`X,,;__PP"?KP`!C``%A7_
+MZR0"`WT``A6X_B(``````4_>(@``_Z(`,````4_>@@```F`@+3P%WT#_H@`P
+MWZ8`,##&__\,`GZ\``8P`"0"#?4``A4X_B(``````4_>(@``_Z(`*````4_>
+M@@``)!`&^P)@("T\!=]0`!"%>/^B`"@V$``!WZ8`*&84``8PQO__#`)^O``&
+M,```````_C```````4_>(@``_Z(`(````4\\$O^``!`H`#92`1]F$``!`!*1
+M/`)@("TV4A`Q`!*1.-Y"``#_H@`@WZ8`(##&__\,`GZ\``8P`!84_^P`````
+M)!`-]V91__``$(4X-A```684``+^,``````!3]XB``#_H@`8```!3SP2_X``
+M$"@`-E(!'V80``$`$I$\`F`@+392$#$`$I$XWD(``/^B`!C?I@`8,,;__PP"
+M?KP`!C``%A3_[&92__`D$`&_`!"%^#80``%F%0`'`````/Y0```\$?^`-C$!
+M'P`1B#PV,0$#`!&*.````4_>0@``_Z(`$````4_>(@`0`!`H``)@("UF$``!
+M9C0`$/^B`!#?I@`0,,;__PP"?KP`!C``%A7_ZP````!F$``(_C```````4_>
+M(@``_Z(`"````4_>@@``/`7?@`)@("TTI0`0_Z(`"-^F``@PQO__#`)^O``&
+M,``D`@WY``(5./XB``````%/WB(``/^B``````%/WH(```)@("T\!=^0_Z(`
+M`-^F```PQO__#`)^O``&,`#?OP$`W[4`^-^T`/#?LP#HW[(`X-^Q`-C?L`#0
+M`^``"&>]`0@`````9[W_Z/^Q``@\$1`,_[```/^_`!`,`+.(9B2N4!!```D`
+M0(`MW@,``"0"__]\0__&`&`0+0!```@`````"`"J^P`````\!!`,9B6N4`P"
+M?KQDA*Y@````#P````!"```@$`#__@`````(`*KVW@,``&>]__#_L```_[\`
+M"`P!ETH\$!08P@-80!1@__XD`P`!X@-80!!@__L`````?`,`.RAE```D9``_
+M`&4@"B0&``$`9A@4`(`H+3P$%!@`!2F#9(182``%*/@`A2@MW*8```!F&"7\
+MHP``````#P```4^N`%A````!3SP)%!AD2@!@92E8@`"`6"UDA__X9(@`0`$@
+M$"T!0!@MW$8``&1"__C<90``%,4`%&1C__@41__Z`````,("6$`40/_^)`(`
+M`>("6$`00/_[````````*"T,`F9@)`8`@````4^N`%A````!3]^_``C?L```
+M`^``"&>]`!``````````#P@`JTP!8!`M`````!!(__??OP`(W$,``!!@__QD
+M0@`("`"K+0$@$"T`````9[W_X/^R`!#_L0`(_[```/^_`!@,`9=*`````#P#
+M%!C<<E@P9%$`*'P$`#L``!@M`(`H+690`(`20``E)`+_P`(#."T"(S`MW.<`
+M.-S&`#@4Y@`39&/_^!1B__H"`S@MWED"D!<@``;?OP`8W[(`$-^Q``C?L```
+M`^``"&>]`"#>10*@9D0!`-^R`!#?L0`(W[````,@``AGO0`@`````#P$$`P,
+M`GZ\9(2NN`P`NP8"("`M/`00#`P"?WIDA*\H#`"[!@(`("T(`*MKWED"D-^_
+M`!@\!!`,W[(`$&2$KH#?L0`(W[````@"?WIGO0`@9[W_\/^P``#?D(&0$@``
+M!O^_``C?OP`(`@`0+=^P```#X``(9[T`$#P$$`P,`+.(9(2"^!!``!H\!!`,
+MW$(``!!``!4D`___?&+_QCP#_]@\!``!-&.&<0!$("W<A,#8``,<>&1CJ^$`
+M`QXX-&,``12#``4\!!`,_X*!D`@`JY,`0(`M``````P"?WIDA*]H"`"KE-^_
+M``@(`*NA```0+0P"?WIDA*]`"`"KE-^_``AGO?_P_[```/^_``@,`*N.`("`
+M+2H#`#```B`K`(,8)!!@``\\`_C4`!""N#1C@`$`4!`MW$0#^``#''AD8_&I
+M``,<.#1C``$4@P`%W[\`"-^P```#X``(9[T`$`````#?OP`(```0+=^P```#
+MX``(9[T`$``````\`A08P$-8.!1@__XD`P`!X$-8.!!@__L`````?`0`.RB%
+M```D@P`_`(48"CP%%!C<I5@P)`8``0"&(!0``QF#``0@)P`#&/@`HQ@MW&8`
+M`-QE`(``AC`D_&8```"%("3\9`"````!3ZQ`6#@```%/`^``"`````!\`@`[
+M*$4``"1#`#\`11@*/`04&-R$6#```QF#``,8^`"#&"W<8P(``$,0%@/@``@P
+M0@`!`````&>]_^@\`A``_[```#1"``'_OP`0/!`4&`@`K!#_L0`(````#V1"
+M__\00`!6/`00#-X#6#`08/_Z`````'P"`#LD1``_*$4```!%(`H`!"&#``0@
+M^`!D&"W<8P$``$,0%NA``#,`````#`"K"`````#>`U@P)`(``=QE`IC<9`*0
+M)`,``P!E$`LT0P`$`&00"PP!H#H``B``#`&72@`````00``G/!$4)(Q#`*A\
+M`@`[$&(`)#P%%``\`A08P$-8.!1@__XD`P`!X$-8.!!@__L`````?`,`.RAE
+M```D9``_`&4@"B0%``$`91@4W@58,``$(8,`!"#X`*0@+=R%`(``91@E_(,`
+M@````4^L0%@X```!3]^_`!```!`MW[$`"-^P```#X``(9[T`&``````,`9=.
+M``````@`K"'>`U@P/`44`-XBMZ```"`M`$#X"62E`4C>(K>@/`44`"0$``$`
+M0/@)9*4!4-XBMZ`\!10`)`0``@!`^`EDI0%8"`"L,SP"%!@\!1`,9(2OD`P"
+M?KQDI;)0W[\`$-^Q``@D`O__W[````/@``AGO0`8`````#P#%!C`8E@X%$#_
+M_B0"``'@8E@X$$#_^P````!\`@`[*$4``"1$`#\`12`*/`84&-S&6#``@"@M
+M``(GPP`%*8,`!":"``4H^`""$"$`Q2@M,$(`/]RF`(``1"`C`(80%LA```8D
+M`@`!HX*!B`""(!0`!"`G`(8P)/RF`(````%/K&!8.````4\#X``(`````#P"
+M%!C`0U@X%&#__B0#``'@0U@X$&#_^P````"3@X&($&``$`````!\`P`[*&4`
+M`"1D`#\`92`*/`44&-RE6#`D!@`!HX"!B`!F&!0`!"&#``0@^`"D("W<A0"`
+M`&48)?R#`(````%/K$!8.````4\#X``(`````&>]__`D`P`(_[```#P0%!C>
+M`E@P_[\`"&1"`8``````W$0``!2```HD8___%&#__&1"``@,`9=H``````P`
+MJ]@`````06)@``P`JNP`````#`"KV``````,`*L(``````P!ETH`````$$``
+M!0````",0P"H?`(`.Q1B``0`````W@)8,"0#``'\0P*P#`&JD`````!!8F``
+M#`"K"``````,`*KL`````&>]_]C_L@`0_[,`&/^Q``C_L```_[\`(`P!ETH\
+M$A08WE-8,```&"U\!``[`(`H+3P$$`QD40`H9G``@"0"_\`28`!!9(2N@`(#
+M."T"(S`MW.<`.-S&`#@4Y@`I9&/_^!1B__H"`S@M`F`@+7P"`#LD0P`_*$4`
+M``!%&`H``QF#``,8^`"#&"W<8P(``$,0%LA```\`````WF("B!!``"0\!!`,
+M`$#X"=YD`J#>8@*H$$``+-^_`"#?LP`8W[(`$-^Q``C?L````^``"&>]`"C>
+M>0*8$R``&F9D`@#>90*@W[\`(-^S`!C?L@`0W[$`"-^P```#(``(9[T`*```
+M```\!!`,#`)^O&2$KK@,`+L&`B`@+3P$$`P,`G]Z9(2O*`P`NP8"`"`M"`"L
+M]]Y$6#`,`G]Z9(2O\`@`K0C>8@*H/`00#&2$K[C?OP`@W[,`&-^R`!#?L0`(
+MW[````@"?WIGO0`H#`"LL@``````````9[W_X/^R`!#_L0`(_[```/^_`!@,
+M`9=*`````#P#%!C<<E@P9%$`*'P$`#L``!@M`(`H+690`(`20``J)`+_P`(#
+M."T"(S`MW.<`.-S&`#@4Y@`59&/_^!1B__H"`S@MWD("@!1```P`````/`00
+M#`P"?WIDA+`@WD("J!!``"'?OP`8W[(`$-^Q``C?L````^``"&>]`"``0/@)
+MWD0"H`@`K5?>0@*H/`00#`P"?KQDA*ZX#`"[!@(@("T\!!`,#`)_>F2$KR@,
+M`+L&`@`@+=Y"`H`00/_E``````@`K5X`````W[\`&#P$$`S?L@`09(2N@-^Q
+M``C?L```"`)_>F>]`"`,`*RR```````````\`A08W$-8,!!@``T`````?`(`
+M.RA%```D1``_`$4@"@`$(8,`!"#X`&08+=QC`0``0Q`6`^``"#!"``$`````
+M`^``"```$"UGO?_P_[```/^_``@,`*N.`("`+1!```X`0#`M`@`8+20%``@`
+M````W&0``"2E__\4@``-9&,`"!2@__L\!!`,/`40#&2$L'@,`GZ\9*6R<"0"
+M___?OP`(W[````/@``AGO0`0````````2"T``!`M)`3_P"0*`#``R4`M```8
+M+0$#."T"`R@MW.<`.-RE`#@4Y0`59&/_^!1D__H!`S@MW00#^#P#^-0T8X`!
+M``,<>&1C\:D``QPX-&,``1"#_^;?OP`(/`00##P%$`P`0#`M9(2P6`P"?KQD
+MI;)P"`"MHR0"__\`````)$(``11*_^)E*00`"`"MHR0"__\`````9[W_Z/^Q
+M``C_L```_[\`$`P`JXX`@(@M$$``#0!`@"T,`*V.`B`@+01```D```````(2
+MN`("$"W?OP`0W[$`"-^P```#X``(9[T`&``````(`*W<```0+6>]__#_L```
+M_[\`"`P`K<X`@(`M%$``!3P$$`P(`*WW```````````````/W$,"L!!@__T`
+M```````0+=^_``C?L````^``"&>]`!`,`G]Z9(2PD`P`NP8"`"`M"`"M\R0"
+M__\`````9[W_X/^_`!C_L@`0`*"0+?^Q``@`P(@M_[````P!ETH`@(`M#`"M
+MSF1$`"@\`Q08$$``$_QB6##\4@*@```8+=X$`!C\1`*`W@0`"/Q$`I#>!``0
+M_$0"F-X$`"#\40*H_$0"B-^_`!@`8!`MW[(`$-^Q``C?L````^``"&>]`"`\
+M!!`,#`)_>F2$L,@(`*X7)`/__P````!GO?_H_[\`$/^Q``@`H(@M_[````P!
+METH`@(`M#`"MSF1$`"@\`Q08$$``"OQB6##\40*@```8+?Q0`H#?OP`0`&`0
+M+=^Q``C?L````^``"&>]`!@\!!`,#`)_>F2$L,@(`*XS)`/__V>]__#_L```
+M_[\`"`P`J[H`@(`M)`8`"!!``!!D0P"`W&(``"3&__\40``'9&,`"!3`__L`
+M````W[\`"-^P```#X``(9[T`$-^_``@D`@`!W[````/@``AGO0`0/`00#`(`
+M*"T,`GZ\9(2P^`@`KDPD`O__`````&>]_[C_LP`8`*"8+?^Q``C_L````("`
+M+?^_`$#_MP`X_[8`,/^U`"C_M``@#`"MSO^R`!!F!`"``$"(+0(`$"T2(`!T
+M9B,!@&A(``!H1P`(:$8`$&A%`!AD0@`@L&@``+!G``BP9@`0L&4`&!1$__9D
+M8P`@WB,"@```$"UF)0"`$&``7R0&_\``HB`M`@(8+=R$`#C<8P`X%(,`2F1"
+M__@41O_Z`*(@+206__\D%``()!(`/R05`$`\%Q0D)M8``0`6&;L``Q#X?@(2
+M"A!```@RU@`_`L`P+0#".!;HX``V`````"3&``$4U?_\`,(X%B1C``$H8@`(
+M$$``#0```````SCX?@<Z"A#@``8`!Q`O"`"NOP`#&8!^!SH*%.``&@`'$"\D
+M8P`!%'3_^P`#./@28``)```0+=XC`K`48``'W[\`0``````````/WB("L!!`
+M__T``!`MW[\`0-^W`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``
+M"&>]`$@```````,9@`#B$"1P0A`D`D(0+P!BL"$&P/_D```@+=[BMZ@`0/@)
+M`L`H+0@`KHPFU@`!``,9@`@`KL,`9K`A/`00#`P"?WIDA+&@W[\`0-^W`#@D
+M`O__W[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!(/`00#`P"
+M?WIDA+%@"`"NLB0"__\\!!`,#`)_>F2$L3`,`+L&`@`@+0@`KK(D`O__9[W_
+MR/^U`"@`@*@M_[0`(#P4%"3_LP`8)!/___^R`!`D$@`__[$`"/^P``#_OP`P
+M#`"KNB01``@00``X`$"`+29S``$`$QF[``,0^'X"$@H00``),G,`/P)@("T`
+M@B@6Z*``*P`````DA``!*(4`0!2@__L`@B@6)&,``2AB``@00``.```0+0`#
+M*/A^!2H*$*``!@`%$"\(`*\A``,9@'X%*@H4H``.``40+R1C``$4<?_[``,H
+M^```$"W?OP`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#@``QF`
+M`*(0)'!"$"0"0A`O`&*8(09@__#>@K>H)`0``@!`^`D"8"@M"`"N^29S``$`
+M`QF`"`"O)0!DF"$\!!`,`J`H+0P"?KQDA+#X"`"O%R0"__\`````9[W^N/^T
+M`2``H*`M_[(!$`"`D"W_L0$(`,"(+?^P`0#_OP%`_[<!./^V`3#_M0$H#`"K
+MNO^S`1AFA@"``$"`+0*`$"T2``"D9@,"`&A(``!H1P`(:$4`$&A$`!AD0@`@
+ML&@``+!G``BP90`0L&0`&!1&__9D8P`@9Z(`@`(`L"T`0$`M9Z<`P`*`("T"
+M`!@MW(8``&2$``C<90```,4H)/Q%``!D0@`(%$?_^61C``AGH@"X9H,`.&4&
+M__@`````W$4``&1"__C<9```%*0`?V1C__@41O_Z)`7_P```$"T"`B`M`H(8
+M+=R$`#C<8P`X%(,`%V1"__@41?_Y/`00#&2$LB`,`G]Z``````P`NP8"@"`M
+M#`"[!@(`("TD`O__W[\!0-^W`3C?M@$PW[4!*-^T`2#?LP$8W[(!$-^Q`0C?
+ML`$``^``"&>]`4@`````)!7__R03``@D$@`_/!<4)":U``$`%1F[``,P^'X&
+M,@H0P``),K4`/P*@."T`YA`6Z$``3P`````DYP`!*.(`0!1`__L`YA`6)&,`
+M`2AB``@00``-```````#0/A^"$(*$0``!@`($"\(`*_;``,9@'X(0@H5```R
+M``@0+R1C``$4<__[``-`^`*`&"TD`@`(W&0``"1"___>Q0``9&,`"``$("<`
+MI"`D_L0``!1`__AFU@`($B``%680`(!GJ@!`````#P(`,"T#H#@M`Z`0+0*`
+M&"T`````W,D``&3&``C<:````2A`)/Q(``!D0@`(%$K_^61C``C<X@``%$#_
+M\&3G``@4ZO_\`````-^_`4```!`MW[<!.-^V`3#?M0$HW[0!(-^S`1C?L@$0
+MW[$!"-^P`0`#X``(9[T!2````````QF``0(0)'!"$"0"0A`O`&*H(0:@_\S>
+MXK>H)`0``0!`^`D"H"@M"`"OCR:U``$``QF`"`"OWP!GJ"$\!!`,"`"O=V2$
+ML>`\!!`,`D`H+0P"?KQDA+#X"`"O?B0"__]GO?_X_[\```P`JXX``````$`8
+M+30"P(``8A`MP$0``!2`__XD!``!X$0``!"`__L`````/`0``0!D("W<A<"(
+M%*```R0"``'<@L"0``(0*P```4\\!``!`&08+:Q@P(````%/W[\```/@``AG
+MO0`(9[W_\/^P``#_OP`(#`"KC@"`@"TT`\"``$,8+<!D```4@/_^)`0``>!D
+M```0@/_[`````#P#``$`0Q`M_%#`B````4^L0,"````!3]^_``C?L````^``
+M"&>]`!``````9[W_\/^P``#_OP`(#`"KC@"`@"TT`\"``$,8+<!D```4@/_^
+M)`0``>!D```0@/_[`````#P#``$`0Q`M_%#`D````4^L0,"````!3]^_``C?
+ML````^``"&>]`!``````)`+__Q#``!9\1/_&W(,`$`"@2"UDA``8`,`X+20"
+M`#@`0U@6)$+_^``"4"<DY___``=`*P`*5\(!2%`D%4``!J$K```1```&````
+M`-R#```D`@`X9(0`"`@`L$9E*0`!`*8P+0/@``B@P````````#P"%!AGO?_X
+MW$=8R"0#____OP``9.(`$'QB_\:,10``**(`!!!```H`````<*00*P`$("L`
+M1"`D%(``!0``$"W?OP```^``"&>]``@`````9.(`%"0#__]\8O_&/`00#(Q&
+M```,`GZ\9(2RD`@`L&HD`O__`````"0"__]\1/_&$,``$F2'`!`D`@`X```8
+M+62E``$DQO__$,``"X"D__\PA`#_`$0@%"1"__@$0?_X`&08)?SC```D`@`X
+M9.<`"`@`L'X``!@M_.,```/@``@``````````#P"%!C<0UC(%&```@````#\
+M1%C(`^``"```$"T`````9[W_T/^R`!``@)`M_[0`(```("W_LP`8`*"@+?^Q
+M``@`P)@M_[````$`B"W_OP`H#`"P6@#@@"T`$A@K+$(``0!#&"008`#C9DD`
+M#RX"`!$40`#I?`D8!R0"`"L(`+"T)`,`(``````00``$``,8>`!P("L4@/_\
+M)$+__P`#8"]FF/__+F(``0,#P"T##,`D`!@@*P""$"000`"3`PE8+0%X$"\`
+M21`K%$``RC(Q``(6(``*/!`4&-X"6,@D!/__?(+_QL!$```4@/_^)`0``>!$
+M```0@/_[`````-X"6,@D!?__9$(`"'RB_\;<0@```$LP*P`"("L`Q"`D$(``
+M:V1&``@`0"`M?*;_QGRD_\;<R@``W(<``"U%`!`4H`!=`.(P*P`'*"L`Q2@D
+M%*``661C__\``,@M)`C__P``D"T``'@M"`"P]B0-__\`````W$H```#`$"W<
+MAP``+44`$!2@`$T`YG`K``<H*P'%*"04H`!)``````!#,"T!0B@M`,PP)`"L
+M*"0!9I@K`+@X*P#)<"T`KG`K%<``"P)G."44X``)`+@H+P%F,"\`J2@K%*``
+M!0#),"L`1G@*`R:0"@%&0`H`````W(8```!`R"T`RU`K``8H*V3"``@`P"`M
+M`44H)'VB_\84H/_9?:3_QA'@`"X!#Q@M`6.8*P!S6`H!:9@O`FR8)`'S$"L4
+M0``Z)`3__P'@H"U\E/_&`FD@+0"#&"L48`!,<?,0*W$)&"L`8A`E%$``63P$
+M$`P20`!?W@)8R-Z"```D`___?'+_QOY"```6(``&W@)8R"0#__]\8O_&```!
+M#ZQ```````$/`F`0+=^_`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P
+M`$`P+3P$$`P\!1`,9(2RV`P"?KQDI;8(%B#_\20"___>`UC(?$/_Q@```0^L
+M8``````!#]^_`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P`Q,0)20+
+M__\(`+#``F)8"R0"__\!X!@M?$/_Q@'S*"_<9P``9>0`"`)@H"UF9@`(`*A`
+M+7Q$_\9\5/_&?$;_QOZ'````!2@O_,@```'@D"W\<P```1,8+?R%```":2`M
+M`F!X+0"#&"L08/^V```0+=Z*```!Z1@M)`3__P!@."UD9@`(9>4`"`$)0"]\
+MA__&_.H``'R&_\;\R```?(7_QOZ#```!($`M_*D```@`L20``!@M/`40#&2$
+MLQ!DI;8(`F`P+0P"?KP!X#@M%D#_H]X"6,@D!/__WH,``&1"``A\@O_&"`"Q
+M+?Q#``#?OP`H)`+__]^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#`D#/_P
+M"`"PN"0#`!```````*`0+6>]__@`P"@M``!`+0#@,"W_OP``#`"PF`!`."T8
+M0``%)`/__WQB_\;?OP```^``"&>]``@(`+&E```0+0``,"T(`+&:```X+0``
+M````@!`M`*`@+61'``$`P"@M``<Z/``",CP(`+&:9.?__P"@$"T`P"@M`$0X
+M+0@`L9H`0#`M``````"@$"UGO?_X`,`H+0``0"T`X#`M_[\```P`L)@`0#@M
+MW[\``&>]``@``A@J``,8+P/@``@`8A`D9[W_X/^P````@(`M_[(`$```("W_
+ML0`(`,"0+?^_`!@,`+!:`*"(+0!`&"T48``&```0+2X"``$N)``!`((@)1"`
+M``<`8!`MW[\`&-^R`!#?L0`(W[````/@``AGO0`@9C$`#S)2``)\$1@'%D``
+M"CP"%!C<0UC()`3__WR#_\;`9```%(#__B0$``'@9```$(#_^P````#<1EC(
+M)`+__V3#``A\0__&W&0```($*"LL@@`!`*(0)11``"L`D!`K%$``!"0(__\(
+M`+(T)`?__P!@("T`@!`M)`7__WT"_\;<0P````,0*P!P."L`XA`D%$#_]V2'
+M``A\I__&W.(``!1@`"\`1!`M$@(`3F8#``@"`!`M?*+_QGRD_\;\D```?*/_
+MQOQQ``#\0```)`(``19`_\;?OP`8```!#R0#__]\9O_&K,```````0_?OP`8
+MW[(`$-^Q``C?L````^``"&>]`"``````$(``!`(P*"T`A3@K%.#_[@``$"T0
+MA0`V)`7__P(`."UF`@`(?*?_QOSD``!\HO_&_%$``"0"``$(`+(6_'````"`
+M&"T`!S_\```@+33G``C<X@```````!("``X",!`M$&(`-`(`*"TD`O__9@<`
+M"'Q'_\9\1?_&?$3_QOSQ```D`@`!_*,``/R0```(`+(6`````-SE```",(`M
+M)`(``0"QB"W\\0``%'#_QR0%__]D:``(?*C_QGRC_\;="0``?*3_QMSH```!
+M*"@M_.4``-QC```(`+(6_(,``-SC```D`@`!`'&(+0@`LA;\\0``)`+__P"`
+M*"U\1?_&`@`X+=RH``!\1__&9(0`"&8%``A\1/_&?$7_QOSH```D`@`!W(0`
+M``"1B"W\L0``"`"R%OQP```D`O__9&4`"'Q%_\9F!P`(W*@``'Q'_\9\0__&
+M`@`H+7Q%_\9\1/_&`1&(+20"``'\\0``W&,``/RC``#\D```"`"R%@``````
+M````9[W_V#P$$`S_L@`0/!(4&-Y%6,ADA+-0_[$`""01____OP`@_[,`&&2B
+M``C_L```?B+_QMQ0```,`GZ\`@`P+=Y"6,@\!!`,9(2SF&1#`!!D0@`4?B/_
+MQGXB_\:,90``C$8```P"?KP`````WD)8R&1"`!!^(O_&C$(``"Q"``000``;
+M/`00##P3$`PD$O__$@``'69SM!!F`@`(`@"(+7Y"_\9^4?_&W$8```(`*"W>
+M)P``#`)^O`)@("W>,```%@#_]F8"``C?OP`@/`00#=^S`!ADA"BXW[(`$-^Q
+M``C?L```"`)_>F>]`"@`````/!,0#&2$L[@,`G]Z)!+__Q8`_^5F<[00/`00
+M#`P"?WIDA+/XW[\`(-^S`!@\!!`-W[(`$&2$*+C?L0`(W[````@"?WIGO0`H
+M/`,4&"0"___<95C(?$7_QL"F```4P/_^)`8``>"F```0P/_[`````-QH6,AE
+M`P`(?$/_Q@``$"W<8P``$&``#61E``@D!O__?,/_QGS%_\;<IP```.0X*Q3@
+M``,`````W*4```!%$"W<8P``%&#_]F1E``@```$/)`/__WQH_\:M```````!
+M#P/@``@`````"`"RT@````!GO?^P,*4``O^^`$`#H/`M_[0`(`"`H"W_LP`8
+M`*"8+?^_`$C_MP`X_[8`,/^U`"C_L@`0_[$`"!2@``O_L```/`(4&"0#___<
+M0EC(?&+_QL!#```48/_^)`,``>!#```08/_[`````"0$``,,`+!:``"`+11`
+M`#D\`Q08)`+__]QC6,AD90`P9&0`*'Q%_\9\1/_&W+```&1C`"R,A```?$/_
+MQHQQ```8@``K)(+__R8R``%\0O@#9A8`D``"&3@``A'X`&(0+692``<`%*@K
+M`L*P+0@`LS5\$A`'`````!1``!X`````9A``D!(6`!H`````)`+__V8#``A\
+M0__&+H4``=QB`````A@K+$(``0!U&"008/_R`$40)`.@N"T#LN@O`@`@+0.@
+M*"T,`+`^`B`P+0*`("T#H"@M#`*"=`(@,"T00``;`````&80`)`6%O_H`N#H
+M+0``@"T68``'/`(4&"0#___<0EC(?&+_Q@```0^L0``````!#P/`Z"T"`!`M
+MW[\`2-^^`$#?MP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AG
+MO0!0"`"S3P+@Z"T`````9[W_Z/^Q``@`@(@M_[\`$`P`LOC_L````$`8+1!@
+M`!,``!`M)`;__P!@."U\Q__&/`(2%-SE``!D8P`(?,/_QF10P1`\!!(4)`8`
+M@/Q%P1!DA,$@W&(```(@*"T,`H+._@(`"*(``(\"`!`MW[\`$-^Q``C?L```
+M`^``"&>]`!@(`+-H```H+6>]_^#_L````("`+?^Q``@D!``#_[\`&`"@B"T,
+M`+!:_[(`$!!```@``!@MW[\`&`!@$"W?L@`0W[$`"-^P```#X``(9[T`(#(Q
+M``(6(``*/`(4&"0#___<0EC(?&+_QL!#```48/_^)`,``>!#```08/_[````
+M``(`("T,`++X)`4``A1``!(`0(`M%B``!SP"%!@D`___W$)8R'QB_\8```$/
+MK$```````0_?OP`8`!`8*]^R`!``8!`MW[$`"-^P```#X``(9[T`(``````D
+M`O__`@`8+682``A\0__&?%+_QB0&``+<9```WD4```P`L<H`````"`"SK?Y`
+M```(`+.*```H+6>]_Z#_LP`H`("8+?^V`$`D!``#_[4`.`#@L"W_M``P`,"H
+M+?^R`"``H*`M_[$`&`$`D"W_OP!8`2"(+?^^`%#_MP!(#`"P6O^P`!`40`!8
+M,C```A8``$L\`Q08)`;__]QB6,A\PO_&P$0``!2`__XD!``!X$0``!"`__L`
+M````-C$``@)`("W_HP```B`H+0P`LOC_I@`(WZ,```(@\"T40`!%WZ8`"/^C
+M`````"`M_Z8`"`P`LO@"("@MWZ,``-^F``@00``\`$"X+69Q``\"@"@M?!$8
+M!P*@,"T"("`M`L`X+0P`L)@#P$`M!$``$3P$%!@D`___W(58R`+@,"UFY``(
+M?&;_QOS"``!\9/_&_)$``&2E`"Q\9?_&`N`@+8RF```"0"@M#`"P>/^B``#?
+MH@``%@``!SP#%!@D!/__W&-8R'R#_\8```$/K&```````0_?OP!8W[X`4-^W
+M`$C?M@!`W[4`.-^T`##?LP`HW[(`(-^Q`!C?L``0`^``"&>]`&`V,0`"`D`@
+M+0(@*"T,`++X`B#P+11```4``"`M#`"R^`(@*"T40/_(`$"X+0@`M"$D`O__
+MW&)8R'S"_\8```$/K$```````0\(`+0A)`+__P````!GO?_X_[\```P`L\P`
+M````!$```P``&"T40``%W[\``-^_````8!`M`^``"&>]``@`0!@M)`+__V>]
+M``A\0__&`^``"`!@$"T`H!`M`,!`+0#@2"T``"@M```P+0@`M$(`0#@M````
+M``@`M$(``$@M`*`X+0#`0"T``"@M"`"T7```,"T``````,!`+0``."T(`+1<
+M`*0P+6>]_[C_L@`0/!(4&-Y"6,C_L0`()!'___^W`#@`P+@M_[8`,'XB_\;_
+MM0`H`."P+?^T`"``H*@M_[,`&`"`H"W_L````2"8+?^_`$`!`(`MP$,``!1@
+M__XD`P`!X$,``!!@__L`````)`4``@P`LO@!`"`M$$``&`*@*"W>0UC(?B+_
+MQMQ"``!^(__&```!#ZQ@``````$/$$```P``@"T`0(`M?C#_QM^_`$`"`!`M
+MW[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`2`*`("T"
+MX#`M`L`X+0(`0"T,`+/,)`D``@1``"``````$$```P``@"T`0(`M?C#_QA)@
+M`!4"`"`M`F#X"0````#>0EC()`/__WQB_\8```$/K$```````0_?OP!``@`0
+M+=^W`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`$@``"@M
+M#`)F8`*`,"T(`+2OWD)8R-Y"6,A^(O_&```!#ZQ```````$/"`"TD@``@"UG
+MO?^H/`,4&/^^`$@D`O___[\`4`.@\"W_MP!`)`0``_^V`#C_M0`P_[0`*/^S
+M`"#_L@`8_[$`$/^P``C<8UC(9&8`,&1E`"AD8P`L?$;_QMS0``!\1?_&C+8`
+M`'Q#_\:,8@``#`"P6O_"```00``./`00#`/`Z"W?WP!0W[X`2-^W`$#?M@`X
+MW[4`,-^T`"C?LP`@W[(`&-^Q`!#?L``(`^``"&>]`%@,`G]Z9(2T4!K``"G?
+MU`````"8+0``B"TFE0`!9K4`!WP5$`<(`+4%_]4````````F,0`!$C8`'&80
+M`)`D`___9@(`"'QB_\;<4@``$D#_^`(`$"T#H+@M?&+_Q@(`("W?PP```H`P
+M+=Q5```F<P`!9A``D`.CZ"\,`+`^`Z`H+3P$$`P#H"@M`B!`+62$M(@"H#`M
+M`D`X+0P"?KPF,0`!%C;_Y@+@Z"T68/_(``````/`Z"T\!!`,W[\`4&2$M,#?
+MO@!(W[<`0-^V`#C?M0`PW[0`*-^S`"#?L@`8W[$`$-^P``@(`G]Z9[T`6```
+M```(`+3,`````&>]_\C_OP`P_[,`*/^R`"#_L0`8$,``@O^P`!`D`@`!``(1
+M_#1"``$`@A@K$&``9`"`@"T\$108WB-8R!1@`$@D`@`!?,)(`20#__\`0%@M
+M9$H`!&1)``AD2``09$<`%&1$`!AD1@`@?&G_QGQK_\9\:O_&K6```#P2$`"M
+M0```?&3_QOT@``!\:/_&)`D``WQG_\:M"0``?&;_QJS@```V4@`!_(```'RD
+M^`/^(EC(`A(0*_S````00``P/!,0````,"T,`+'*`@0H+]XB6,@D$/__)`<`
+M@"0$)````"@M)`@``61&`"QD0P`H?@;_QF1"`#"LQP``?@/_QB0&`$!^`O_&
+MK&8`````."W\0```#`"PF#P&$``$0``V/`,4&&1&)`#<8UC()`7__V1C`#!^
+M`__&_&(```!`("UD0P`(?*3_QGRC_\;\@```9$(`D/Q@```4PO_Y`$`@+20"
+M``'?OP`PW[,`*-^R`"#?L0`8W[``$`/@``AGO0`X```P+0P`L<H"9"@O`A,H
+M+P"RD"L60``4/`0@`#P%$``,`+'*```P+3P%X``\!#```@4H+0P`L<H``#`M
+M"`"U:-XB6,@\!!`,9%#___^E``!DA+48#`)_>O^F``C?I@`("`"U0=^E```,
+M`+'*```P+0@`M6C>(EC(/`00#`P"?WIDA+5@W[\`,-^S`"@``!`MW[(`(-^Q
+M`!C?L``0`^``"&>]`#@\!!`,#`)_>F2$M.`(`+6,```0+0````!GO?^P_[\`
+M2/^^`$#_MP`X_[8`,/^U`"C_M``@_[,`&/^R`!#_L0`($.``P?^P````!$`C
+M`,#P+0$$0"0`H)`M<0A`(`"`L"TD!@`?``A`)R4(`"`(`+7A`0`8+0``````
+M"2`C`21()'$I2"``R4@C)2D``0$B$"$`24`+`0`0+20(__\D20`!+$4`!!2@
+M__0!-D@'/`44&-RD6,@4@`!2)`(``7SB2`$D!/__`$!@+61+``1D20`(9$@`
+M$&1'`!1D1@`89$4`('R)_\9\B/_&?(?_QGR&_\9\A?_&?(S_QGR+_\:M@```
+M/`04&*U@```\$1``_2```"0)``/\@EC(+&(``:T)``!_Q/@#K.`````"."-P
+M0@`Z/!`0`/S`````1!`D_*```#8Q``$D$P`?``-`N```,"T`8+@M``.J/`#^
+M."0L9``$%(``4@("*"\\`Q08)!#__]QB6,@D!P"`)`0D````*"TD"``!9$8`
+M+&1#`"A^!O_&9$(`,*S'``!^`__&)`8`0'X"_\:L9@`````X+?Q````,`+"8
+M/`80``1``%,\`Q089$8D`-QC6,@D!?__9&,`,'X#_\;\8@```$`@+61#``A\
+MI/_&?*/_QOR```!D0@"0_&```!1&__D`0"`M)`(``=^_`$C?O@!`W[<`.-^V
+M`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`4`P`L<H`````/`4P
+M``*E("4\`B```H(H+PP`L<H``#`M)N(``20#__\`5A`'```P+0`"(",`1!`D
+M?\3X`W!"$"`"8A`C)$(``0!7N"$"XA@++&(``0`#0+@``C@C<$(`.@!$$"0`
+M8+@M``.J/`#^."0L9``$$(#_L`("*"]^2$P*`J)`)0#@\"T`":4X`I%(*Q4@
+M_^`!`"`M#`"QR@`````\`R```I`0+P*C0"4\!1`````P+0!12"L1(/_1`0`@
+M+0$`("T`0"@M#`"QR@``,"T(`+91)N(``3P$$`P,`G]Z9(2U8-^_`$C?O@!`
+M```0+=^W`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`%`\
+M!!`,#`)_>F2$M.`(`+8\```0+0````!GO?\X_[$`B`"`B"W_M0"H)`0``_^T
+M`*``H*@M_[,`F`#@H"W_OP#``,"8+?^W`+C_M@"P_[(`D`P`L%K_L`"``$`8
+M+11@`#\``!`M/`(4&-Q$6,@`8!`M9(,`""0$__]\@__&W'```!(``#8\%Q`,
+M)!+__V;WM:`"-:@MCX*!F`)SN`L\$Q`,"`"VUF9SM;@"$;`O`'`@+0+#L"T"
+M)!@K$&``%``````D!0"``F`P+0+@."T"($`M`$!(+1+```T#H"`M#`)_U@``
+M```"P"`M`@`H+0``,"T``#@M`Z!`+0P`L\P"@$@M$%(`(3P$$`R/@H&8?E#_
+MQB1"``'>$```$@``#Z^"@9AF`P`(`A$@*WY#_\8"%2@KW&,``!2`_]P`````
+M$*#_\P*P("\`@[`K`'8@"@@`MKX`@+`M`````"0"``'?OP#`W[<`N-^V`+#?
+MM0"HW[0`H-^S`)C?L@"0W[$`B-^P`(`#X``(9[T`R#P%$`QDA+709*6V(`+`
+M,"T,`GZ\`@`X+0@`MN4``!`M/`(4&"0#___<0EC(?&+_QL!#```48/_^)`,`
+M`>!#```08/_[``````/@``@`````/`(4&"0#___<0EC(?&+_Q@```0^L0```
+M```!#P/@``@``````````"0"__]\1/_&`^``"`"`$"T\`A08W$)8R!!```4`
+M````)`/__P/@``A\8O_&``````/@``@``!`MWX*!H&>]__@00``A_[\``"RB
+M``840``(/`(0##P$$`P,`GZ\9(2V0```$"W?OP```^``"&>]``API?CR9$*V
+M<'Q%*@H`H``(``````````#?OP``9[T`"`/@``C?@H&HWX*!L!1`__+?OP``
+M#`&72@````"<0@"\"`"W)_^"@;#?OP``9[T`"`/@``C?@H&@/`/_\'"$"3,T
+M8P`C/`("^@`#'+@T0O"`-&,``P`#'G@T8Q8``(,8)=QC``!\9#>#?&,N`W""
+M(`-P8A`#_X2!H`@`MR#_@H&H?`(`.WQ""<,`@"@M"`"W'`!`("T`````9[W_
+MV#P%7S#_L0`0?)'X`_^P``@\$!08_[\`(&806-#_L@`8`!$8^'X#&@H``!`M
+M$&``!Z^E``#?OP`@W[(`&-^Q`!#?L``(`^``"&>]`"@4@``//!(0#`P`LXAF
+M1+:@$$``%```*"W<0P``$&``#P`````D`O__?$/_Q@`1B/@``!`M`A&`+0@`
+MMV;^`P``)((`,`.@*"VCH@`!#`*`R&9$MJ`(`+=N``````@`MW<``!@M-`3@
+M````,"TD!P"`9DBVH`P`M&@``$@M%$#_ZP!`&"T\!!`,/`40#&2$MRADI;:X
+M#`)^O&9&MJ`(`+=F)`+__P````!GO?^@`(`0+?^R`"!\0SP#<)(9,GR$&0,`
+M`QH``D20)?^Q`!@"0Y`E_[\`6``"C@+_O@!0+D,'`/^W`$C_M@!`_[4`./^T
+M`##_LP`H$&``BO^P`!`"("`M`*"H+0#`F"T,`+=8`."@+1!```\`0(`MW[\`
+M6`(`$"W?O@!0W[<`2-^V`$#?M0`XW[0`,-^S`"C?L@`@W[$`&-^P`!`#X``(
+M9[T`8`````!^/O@#/!<4&``>&/AF]UC0`N,8+=QB```00`".`B"P+7Y2^`,N
+MM0`!9E$'```1B3@`48@M`!$0*P*BJ"02H`!B`!:R@";"`@`"=K`J`F(0*CA"
+M``$`5K`E%L``6SP"``$F@_^`-$+_@0!B$"L00`!6,H(``Q1``$P\!!`,WB(`
+M`'Q">`$00``F`````)8B``Z6)``,)$/__P!B`!H`0`'T```H$A2D`%T`````
+MEB<``!3S`&4`%*##)I3__Q*"_\(D$/_\)$<``3P$$`P\!1`,/`80#&2$M_!D
+MI;;89,:V^`P"?KP`!SC`W[\`6-^^`%`D$/_]W[<`2`(`$"W?M@!`W[4`.-^T
+M`##?LP`HW[(`(-^Q`!C?L``0`^``"&>]`&!\!``[,F,#_P9@`#)\A`G#/`+_
+M@#1"`2D``A(\?((Y!GQBS`?<0@``$$``+0`4H,-\1$@!)I3__P`>\/@F@___
+M`!*1.`!T`!L"@`'TIC,``-XC``"F-``.KB``"'R#>`7^(P`````H$J8E``Q^
+M_KH*`O*0+?Y```#^0``(```!3P@`M[/?OP!8/`40#&2$MX!DI;;8#`)^O`*`
+M,"T(`+?@WB(````````(`+>R)!#__3P$$`P\!1`,9(2W6&2EMM@`0#`M#`)^
+MO"00__T(`+>SW[\`6```("T(`+@,```8+3P$$`P\!1`,9(2X&`P"?KQDI;;8
+M"`"WLB00__]P1#@"/`00#&2$M[`\!1`,/`80#&2EMMADQK;X#`)^O"00__T(
+M`+>SW[\`6#P$$`P(`+A*9(2WT/^C``@,`+=8`B`@+=^C``@(`+?(W&(`````
+M``!\@CP`/`,``P`"%``00P`H`````"1C``$`0Q@K%&``##P#``$\`P`%$$,`
+M(0`````\`P`&$$,`'@`````\`P`$$$,`'0`````#X``()`+__1!#`!<`````
+M/`,``A!#`!0`````%$#_^``````\`O_\/`/_\#1"``DT8P`C``(4>#"$__]D
+M0H`%``,:_``"%S@T8P#X-$(`"/Q$``#<8P``W$(1.'Q"G`,#X``(``(0``/@
+M``@``!`M/`+_@'"$$/(T0@'?``(2/#1"`P!\@A(*`^``"``"$`!GO?_(_[``
+M``"`@"W_L@`0``0F`O^Q``@PD@#__[,`&#P1%!C_M``@9C%8T/^_`#``$ICX
+M_[4`*`(SF"W>8@``<A09,GX%&0-^`SP#`H6@)0`#&@`00`!=`H.@)7Z5^`-F
+MLP<``!.9.`!3F"T28`!3/`00#`P`N%P"`"`M'$``/``2$/@`%:DX?B(2"@!5
+MJ"W2HP``9&(``?*B```00/_\TJ(`"!!#``0````````!0!``__S2H@`(WF(`
+M`'Q#>`$48``5?$)X`0```4\`$I#X`!2A.'XRB@H"-(@MWB(`"&1"``'^(@`(
+M```!3P``$"W?OP`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#@`
+M````$$``(Y9D```D`___,(0#_WQB_\9\0T@!``(8"GP%`#M\I0G#`&`0+0``
+M`4\\`_^`-&,!*0`#&CQ\HSD&?(/,!_QB``#>8@``?`)X!0@`N,3^8@``````
+M`#P$$`P,`G]Z9(2XB-^_`##?M0`H)`+__M^T`"#?LP`8W[(`$-^Q``C?L```
+M`^``"&>]`#@`````?`4`.P``$"U\I0G#"`"XXC"$`_\,`G]Z9(2X0`@`N,XD
+M`O_]#`"W6'Z5^`,(`+BJWF(```````!GO?_H``0>`O^P```\$!08_[$`"'!B
+M./+_OP`09A!8T`!0@"UPD1DRW@(``'R%&0-\A#P#`B6()0`$(@`00``6`B2(
+M)68Q!P``$8DX`%$0+1!```S?OP`0W$(``'Q#>`$08``(?$)X`1!```8D`___
+MW[$`"'QB_\;?L````^``"&>]`!@``!`MW[$`"-^P```#X``(9[T`&`P`MU@`
+M8"`M"`"Y&]X"``#<J```?0AX`1$``#\`````)`+__WQ(_\8$P``TC*(`")2C
+M``Y\#``[`$,@*Q"```U]C`G#`````'!#^/)DYP`($,``*@$#&"W<Y/_X)$(`
+M`?QD``"4HP`.`$,@*Q2`__8DQO__W*(``'Q">`$00``D`$!(+20"__]\2?_&
+ME*@``#P$_X`TA`$I)`K__P`$(CP``QCX?80Y!@``$"U]!,P'W(0```"`0"U\
+MBT@!$(``$GU(_\8!`Q@M9.<`"/QJ``"4HP`.``,8^`$C2"W]*P``W*,``*R@
+M``A]8W@%_*,``'!#^/(4P/_8`0,8+:RB``@#X``(```0+0/@``@D`O__"`"Y
+M4P``2"T(`+DZ``!`+6>]_]C_OP`@_[,`&/^R`!#_L0`($(``?O^P```P@@`#
+M%$``>SP0%!C"`ECP%$#__B0"``'B`ECP$$#_^P`````\#!08``!`+0``:"UF
+M$5CP98Q8^&2.`(`D!__`)`\`%`&($"TD`P`(`$`P+0````#<10``%*``$"1C
+M__\48/_\9$(`"`"`$"T`P!@M:$L``&A*``AH20`0:$4`&&1"`""P:P``L&H`
+M"+!I`!"P90`8%$[_]F1C`"```!`M`,(H+0""&"W<I0`XW&,`.!2C`$)D0O_X
+M%$?_^@#"*"U\`@`[*$4``"1#`#\`11@*``U(^``-0CAEL@`!`2@P+0`2*CAD
+MQ@"(``,9@P(F,"T``QCX`,,8+0`2F/@"99@M)`H``=QE````2E`4?C.8"@``
+M$"TD!__``44H)?QE```F<P`!`,(H+0""&"W<I0`XW&,`.!2C``YD0O_X%$?_
+M^@#"*"T!*"`M```H+0(D("TD!@"`#`)F8&2$`(@`$ACX`!(2.`!B$"T"(A`M
+MK%,``````4^N`%CP```!3P`2$/@`$I(X`%(0+0)@&"T"(H@M`````(XB```4
+M0__^W[\`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`*``````EK0`!%:__H&4(
+M`0@```%/K@!8\````4\\!!`,/`80##P'$`QDA+C()`4`FV3&N@@,`EZ:9.=\
+M8#P$$`P\!A`,/`<0#&2$N,@D!0!U9,:Z"`P"7IIDY[D(9[W_N"0#`"W_LP`8
+M`("8+?^P``#_OP!`_[<`./^V`##_M0`H_[0`(/^R`!#_L0`(@*(``!!#`((`
+MH(`M)`,`,!!#`&4D`P!8$$``H3P$$`PD!``P%$0`!B0#`#!F$``!@@(``!!#
+M__YF$``!9A#__P``*"TD!@"`#`)F8`)@("T,`H(<`@`@+0``&"T``A``$$``
+M10!`B"T80`"+`````-^'@)""!````.08+9!C``$P8P!$$&``4```&"T(`+H\
+M9@4``0````"`I@```.8P+9#&``$PQ@!$$,``1V2E``$D8P`!`'$P*A3`__<`
+M````)B7__RB#`#@08`!M``4H@"B#`#048`!L)*,``B2C``,H8P0!$&``=#P%
+M$`P:(`!6)%;__P(1D"U\%A@$)!4`%@(VL",(`+I9)M;_\`````#^=P``9G,`
+M"*)4```2-@!*9E+_\"8Q__```!`M*B0`````*"T")!`*)`8`$()4``"B0```
+M`$`@+0P"A!X"!"`M#`)>R@!`N"V,0P``%'7_[#P$$`P\!1`,9(2YD`P"?KQD
+MI;HH)`/__M^_`$``8!`MW[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P
+M```#X``(9[T`2)"D``%\!"E$?`0D(!2#_YLD!``P@*(``@@`NA9DL``"/`00
+M##P%$`QDA+E(#`)^O&2ENBC?OP!`W[<`."0#__[?M@`P`&`0+=^U`"C?M``@
+MW[,`&-^R`!#?L0`(W[````/@``AGO0!(@*0``20#`#$4@_^")`0`,("C``(4
+M8/]_`````"0"``@D`___`````/YC```D0O__%$#__69S``C?OP!````8+=^W
+M`#@`8!`MW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!(````
+M``@`ND@DHP`$*(0`,B2E``$(`+I(`*08"P@`ND""!```/`40#&2$N2@,`GZ\
+M9*6Z*`@`NFXD`__^/`00#&2$N7!DI;HH#`)^O`(`,"T(`+IN)`/__P````!G
+MO?_``(`0+?^T`"`D`____[,`&`"`H"W_L@`0`*"8+?^_`#@D$@`/_[8`,/^U
+M`"C_L0`(_[```-Q&`'@4P``29$+_^"92__\60__[`````*)@``$D`@`PHF(`
+M`-^_`#@``!`MW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!`
+M/`40#`)@("UDI1BH#`*`1CP6$`PF4/__9M:YL"05__\20/_L`$"(+0`0,/@"
+M<2`M?H8R"@+`*"T,`H!&)A#__Q85__D`48@AW[\`.```$"W?M@`PW[4`*-^T
+M`"#?LP`8W[(`$-^Q``C?L````^``"&>]`$``````9[W_Z/^P``#_OP`0_[$`
+M"-R%``@4H``.`("`+=R%```4H``7`````#P$$`P,`GZ\9(2YP-^_`!#?L0`(
+M)`0`"M^P```(`G[B9[T`&``````\$1`,#`)^O&8DN;C>!0``#`)^O&8DN;C?
+MOP`0W[$`""0$``K?L```"`)^XF>]`!@(`+L>/!$0#&>]_M#_L0$8`("(+?^_
+M`2C_L@$@$(``4O^P`1`\$!(49A#!H`(`$"UF!0!``````-Q#```48``\9$(`
+M"!1%__P\$A`,#`"SB&9$N?`00`!&)`/__]Q"``!\8O_&9$<!$`.B,"\`````
+MW$4```#"&"UD0@`(%$?__/QE```\`P)&WZ0``#1CBL\``QSX-&.'90`#'#@T
+M8T,A%(,`'20"__]GHP"0`B`0+6>D`1#<90``W&<`"-QF`!"P10``W&4`&&1C
+M`""P1P`(L$8`$+!%`!@49/_V9$(`(&8B`(!J)@``:B4`"&HD`!!J(P`89C$`
+M(/X&``#^!0`(_@0`$/X#`!@6(O_V9A``(```$"T`````W[\!*-^R`2#?L0$8
+MW[`!$`/@``AGO0$P9@(`@-X&``#>!0`(W@0`$-X#`!AF$``@LB8``+(E``BR
+M)``0LB,`&!8"__9F,0`@"`"[;```$"T(`+ML)`+__SP$$`QF1;GP#`)^O&2$
+MN<@(`+ML)`+__V>]_M#_L0$8`("(+?^_`2C_L@$@$(``4O^P`1`\$!(49A#"
+M(`(`$"UF!0!``````-Q#```48``\9$(`"!1%__P\$A`,#`"SB&9$N?`00`!&
+M)`/__]Q"``!\8O_&9$<!$`.B,"\`````W$4```#"&"UD0@`(%$?__/QE```\
+M`P)&WZ0``#1CBL\``QSX-&.'90`#'#@T8T,A%(,`'20"__]GHP`0`B`0+6>D
+M`)#<90``W&<`"-QF`!"P10``W&4`&&1C`""P1P`(L$8`$+!%`!@49/_V9$(`
+M(&8B`(!J)@``:B4`"&HD`!!J(P`89C$`(/X&``#^!0`(_@0`$/X#`!@6(O_V
+M9A``(```$"T`````W[\!*-^R`2#?L0$8W[`!$`/@``AGO0$P9@(`@-X&``#>
+M!0`(W@0`$-X#`!AF$``@LB8``+(E``BR)``0LB,`&!8"__9F,0`@"`"[S```
+M$"T(`+O,)`+__SP$$`QF1;GP#`)^O&2$N<@(`+O,)`+__P/@``@D`@`(9[W_
+ML#P"%`#_MP`X_[(`$/^_`$C_O@!`_[8`,/^U`"C_M``@_[,`&/^Q``C_L```
+MW%<!8&1"`6",4``4?`0`.]Q3``A\A`G##`#(W@`7D``6``!3/`<0##P"_X`R
+M]P__-$(!WSP5``0``A(\`!.@`#1"`$A^<VC#W$,``&11`C@\$``$)!8``S:U
+M``A^X_T'_$,````````"`"`M```H+0)`,"T,`+>6`H`X+0`3]#P"`"`M%$``
+M0B80``$,`+D*```````"'[]\1!'!`'8H)A!```,``!@M?$.QPP"%&`M\?DG%
+M_CX``!85_^MF,0`(/`/_@"02``$T8P'?)`(``@`#&CP``"`M-&,`0-QE``!D
+M<`A`?D4`!_QE``#\8@A`_&((2/QB"%#\8@A8_&((8"0"``;\8@AH)`(`']QQ
+M``A^4<8&#`$0\GQ1K`8``"`M?%$`!@"`$"U^\?T'?E%SA_X1]\C>`_@H?`,X
+M!_X#^"C?OP!(W[X`0-^W`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L```
+M`^``"&>]`%`"0"`M`F`H+0(`,"T,`1R*9.>Z0`@`O`$\`O^``````-^_`$@D
+M!/__W[X`0`"`$"W?MP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@
+M``AGO0!09[W_X/^Q``@\$0`$_[```#8Q``C_OP`8/!``!/^R`!`"`"`M#`"X
+M7"80``$40``>/`00#!81__L"`"`M/`+_@#P2``0T0@'?/!``!``"$CPV4@`(
+M-$(`2-Q#``!D40(X?`.L!OQ#``#<0@````````(`("T,`+B2)A```?X@```6
+M$O_[9C$`"-^_`!@``!`MW[(`$-^Q``C?L````^``"&>]`"``````#`)_>F2$
+MNE#?OP`8W[(`$"0"___?L0`(W[````/@``AGO0`@`````&>]_[#_L0`()-$`
+M`O^^`$``$1#X_[0`(`"`H"W_L@`09$(`"/^P```#H/`M_[\`2/^W`#C_M@`P
+M_[4`*/^S`!@#HN@OW*0```.@D"W<HP`(),+___^D```0P`!A_Z,`"&>C`!`D
+M"/__W.4``"1"__]DYP`(_&4``!1(__MD8P`(,H/__SP"``0`8A`A/!,4&-YC
+M6-``0+`M`!:I`G!"&3(RM0`/`J*H)3:U!`!^M_@#`!<1.`!B$"W01```9(,`
+M`?!#```08/_\T$,`"!!D``0````````!0!``__S00P`(WF)8T!!``$`"0(`M
+M9N4'```%*3@`12@MC*,`")2B``X"(R`A`((0*A!``#L"(#`MW*@``'T(>`$1
+M```O`````"0"__]\2/_&"`"\Z0(@$"V,HP`()&<``680``BLIP`(``,8^-X'
+M__@!`Q@M)$+__QQ`__?\9P`````0+0```4\```%/%$``!SP#_X!RE!#R-&,!
+MWP`#&CPT8P(``H.@+?Z1``````%/WF-8T``5J3@`=:@MWJ,`"&1C``'^HP`(
+M```!3P/`Z"W?OP!(W[X`0-^W`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?
+ML````^``"&>]`%`(`+SF``!`+0@`O+PD$0`"#`"W6```("T(`+S7WF)8T`+`
+M("T,`+DT`D`X+0@`O/,``````````&>]_JC_OP%0_[<!2/^V`4#_M0$X_[0!
+M,/^S`2C_L@$@_[$!&/^P`1#<J@``W*(`"/^J`0!]2@T"_Z(!""0"``(10@#_
+M+4(``Q1``)D!`!`M$0`"03P"``$!`A`J%$`"./^@```\%``!-I3__P$4$"H4
+M0`)/`0`0+3P"``(T0O_^`0(0*A1``D\!`!`M/`(``S1"__T!`A`J%$`"0"08
+M`"@\$P`!/!(``CP1``,\$/_\`0`0+0``6"T#H!@M-G/__C92__TV,?_\"`"]
+M8S80``0\!0`!`$4H*A2@`1O\8````%0H*A2@`68\!0`"-*7__@!%*"H4H`&(
+M/`4``S2E__T`12@J%*`!Z@``````?2@O9ZX`"`"N8"UGM0`0)`[__S0/___\
+M;@```,]X+?V&````M7`M_<\``&>U`!AGK@`@`--H+0#22"T`M6`M_8T```"N
+M*"T"`A`A9&,`*/RI````T3`M%$#_VB5K``0!8!`M,6L`#R1#__\D0@`!``,8
+M@@!#H"%RF/CR)I0``0.XP"W_````/!<``3;W__\!%Q`J%$`!^@,`$"T\`@`"
+M-$+__@$"$"H40`'Q`P`0+3P"``,T0O_]`0(0*A1``><\$0`!/!```CP&``,\
+M&?_\`P`0+0``2"UG%@`(9Q4`$&<3`!AG$@`@-C'__C80__TTQO_\"`"]L3<Y
+M``0\`P`!`0,8*A1@`//\0````1<8*A1@`/8\`P`"-&/__@$#&"H48`$F/`,`
+M`S1C__T!`Q@J%&`!@```````6!@O)`[___Q.````=F`M_8<``#0/__\`[W@M
+M`/%H+0#P*"T`=7`M`'-@+0,H0"']SP```'(8+?V-``!D0@`H_&4```#F."T5
+M`/_>)2D`!`$@$"TQ*0`/)$/__P!4H"$``QB""`"^7P*#,"$``"@M``!8+1$`
+M`9LD#1__*$,@``&@2"T`0T@+`Z5@+25K``%DI0`(`2`8+20)``$`"4]\`$,0
+M(WQIY`9\R4@%`,,P+11`__+]B0``,7D`#SP"``$`&7CX`0(0*@.O>"T40`&^
+M_>```#P8``$W&/__`1@0*A1``:P!X!`M/`(``C1"__X!`A`J%$`!JP'@$"T\
+M`@`#-$+__0$"$"H40`&J/!,``3P2``(\$0`#/!#__`'@$"T``$@M9?<`"&7V
+M`!!E]0`89?0`(#9S__XV4O_]-C'__`@`OA,V$``$`````#P#``$!`Q@J%&``
+MA?Q````!&!@J%&``I#P#``(T8__^`0,8*A1@`.X\`P`#-&/__0$#&"H48`$`
+M``````!/&"\D#?___$T```!W,"W\QP``-`[__P#N<"T`\V`M`/(H+0!V:"T`
+M=3`M`@A`(?VN````=!@M_,P``&1"`"C\90```/$X+14`_]XE*0`$)2/__R<Y
+M``$#*1`A``,8@C$I``\`0S`A"`"^7S%K``\``````0`0+0``*"T``%@M$0`!
+M.20-'_\`````*$,@``&@2"T`0T@+`Z5@+25K``%DI0`(`2`8+20)``$`"4]\
+M`$,0(WQIY`9\R4@%`,,P+11`__+]B0``,68`#P``&"T`!G#X``!(+0.N<"TD
+M#1__`````"D"(``!H*@M`0*H"R0%``$`!2]\`<-@+24I``%D8P`(`J`0+0$5
+M0"-\1>0&?.5(!0#B."T5`/_R_84``#$T``\Q:P`/,2D`#P*&,"'?H@$`9Z4!
+M``.@."U](DF&?6(8!GU"K08,`+R<_Z(!`-^_`5#?MP%(W[8!0-^U`3C?M`$P
+MW[,!*-^R`2#?L0$8W[`!$`/@``AGO0%8)6L``0%@*"TQ:P`/)*G__R2E``$`
+M"4B"`*F@(7*8^/(FE``!I&(```.XP"W\9@`(/`(``0$"$"H00/\$_P````,`
+M$"TD"0`!```P+20#``&D2````&88(?Q'``@(`+Y?`'0P(0`````E*0`!`2`8
+M+3$I``\D9O__``8P@B<Y``$Q:P`/I$@```,C&"'\1P`("`"^7P!F,"$E*0`!
+M`2`8+3$I``\D9O__"`"^A@`&,((E*0`"`2`8+3$I``\D9O__``8P@C0%__\E
+M"``!`.4H+20,__^D3````&88(:1(``(`=#`A_$<`"`@`OE_\10`0)2D``@$@
+M&"TQ*0`/)&;__P`&,((G.0`!-`7__R4(``$`Y2@M`R,8(20,__^D3````&8P
+M(:1(``(Q:P`/_$<`"`@`OE_\10`0)6L``@%@*"TQ:P`/)*G__R2E``$`"4B"
+M`*F@(7*8^/(FE``!-`7__R1"``$`Q2@M)`G__Z1I``"D8@`"_&8`"`@`O8/\
+M90`0)2D``P$@&"TQ*0`/)&;__P`&,((\!0`!-`S__S2E__X`9A@A)0@``B0&
+M__\`[&`M`.4H+:Q&````=#`AI$@`!/Q'``C\3``0"`"^7_Q%`!@E:P`#`6`H
+M+3%K``\DJ?__)*4``0`)2((`J:`A<ICX\B:4``$D!?__-`G__ZQE```\!0`!
+M-*7__B1"``(`R4@M`,4H+:1B``3\9@`(_&D`$`@`O8/\90`8)2D``P$@&"TQ
+M*0`/)&;__P`&,((\!0`!)SD``30,__\TI?_^)0@``@#L8"T`Y2@M`R,8(20-
+M__\Q:P`/K$T```!F,"&D2``$_$<`"/Q,`!`(`+Y?_$4`&"4I``0!("@M,2D`
+M#R2F__\`!C""W$,``"0,``$`#&0\)SD``66,__\T#?__?8/\!3P,``'\0P``
+M/`,``C6,__XT8__])0@``P#M:"T`[&`M`.,8+0,E*"$Q:P`/I$@`!@"F,"'\
+M1P`(_$T`$/Q,`!@(`+Y?_$,`("4I``0!("@M,2D`#R2F__\`!C""W$,``"0,
+M``$`#&0\-`W__V6,__\E"``#?8/\!3P,``'\0P``/`,``C6,__XT8__]`.UH
+M+0#L8"T`XQ@M`*8H(:1(``8`M#`A_$<`"/Q-`!#\3``8"`"^7_Q#`"`E:P`$
+M`6`H+3%K``\DJ?__)*4``0`)2((`J:`A<ICX\B:4``'<90``)`D``0`)3#PD
+M0@`#_&8`"&4I__]])?P%-`G___QE```\!0`!I&(`!CP"``(TI?_^-$+__0#)
+M2"T`Q2@M_&D`$`#"$"W\90`8"`"]@_QB`"```$@M"`"^7SP&0````$@M"`"^
+M7P``,"T!`!`M)`L``204``,D&``0"`"^>P.@&"T``%@M``!(+0@`OE\\!H``
+M`P`0+20)``0``#`M"`"_-20%``0D"0`#```P+0@`OM<D`P`#)`D``@``,"T(
+M`+ZC)`,``@$`$"TD"P`$)!0`!@@`OU4#H!@M)`L``B04``0D&``8"`"^R0.@
+M&"TD"P`#)!0`!208`"`(`+[O`Z`8+20)``(``#`M"`"^LR0#``(D"0`#```P
+M+0@`OP$D`P`#`>`0+20)``0``#`M"`"_%R0%``0!X!`M)`D``0``,"T(`+Z1
+M)`,``3P"%`#\1`%@9$(!8/Q%``@#X``(_$8`$#P"%`#<10%@9$(!8-Q#``C<
+M0@`0_(4``/R#``@#X``(_((`$`````!GO?]@_[``@`.@("U\$``[_[(`D#(&
+M`'__L0"(_[\`F`P`NX@`P(@M*@0``"8#`#\"!!@*)`0``0($(!0\"O_P``0@
+M)S5*`",``Q&#``I4N``"$/@\"_^``Z(0+3P)__#<0P``-6L!`35*``,U*0`C
+M``M:/``*5G@`@R`D)`/___Q$```D8P`!``,1NP`)2OP``D#X?A()PW^H0@HD
+M!P`()`P`/S5K`0`U2A<`$0``'S4I`/@(`+_L,&,`/P`````D8P`!*&0`0!"`
+M`!@``````&@@%LB`__H```````(1@`!#&"$$8``@?&()PS!D`'\``A$\)`@`
+M`0"((!0`2T`E_00```!*0"7]!````$D0)=Q"```D8P`!``,1NP`"0/A_J$(*
+M%0#_ZC!C`#\D0@`!*$,`"!!@``P``ACX?Z,:"A!@``8``R`O"`#`'P`"$8!_
+MHQH*%&``$``#("\D0@`!%$?_^P`"&/@\!!`,`D`H+0(@,"UDA+J(`D`X+0P!
+MKR8"($`M0@``($(``"`(`,`9`````````````A&``&08)'!C&"0!@Q@O"`"_
+M\0!#&"$D`H`!9[W_Z``"%3API9CR-$(0"?^Q``@``A<X_[````"`B"W_OP`0
+M#`&72@"B@"V40P#`)`(``1!B``5R)`DS)`(``@"0("7\@@``W((``-^_`!``
+M`!`MW[$`"-^P```#X``(9[T`&&>]_]#_M``@_[,`&```F"W_L@`0`("0+?^Q
+M``@`H(@M_[\`*/^P``!\`@`[#`&72@!`H"V40P#`)`(``1!B`!,D$(`!<B.8
+M\@`0A'AR0@DS-A`"`0`0A_@`<(`M`%"`)=X"``#(3P`2`D`@+0(@*"T,`,`D
+M<I0PLB:4``,D`P`"?H.\!_X#``#>`@``W[\`*`)@$"W?M``@W[,`&-^R`!#?
+ML0`(W[````/@``AGO0`P"`#`8203__]GO?_@_[$`"`"`B"W_L```_[\`&`P!
+METK_L@`00!!X`)1$`,`D`@`!$((`'0``&"T\`Q(/W&)LX!!``!%D8VS@C&4`
+M"(QD``P`L"@D$*0`'```*"T(`,")9&,`$`````",9P`(C&8`#`#P."00Y@`4
+M9&,`$-QB```40/_Y)*4``=^"@*`\!!`,9(2ZZ"0%``$D!@`6#`)B@MQ'`!@D
+M`___W[\`&`!@$"W?L@`0W[$`"-^P```#X``(9[T`(``````\`Q(/``4HN&1C
+M;-`\$A08?&4H"CP$%!C<0P``)!``&/Y";:@08/_NK(5MH`````"00P`6,&4`
+M]W!C`>]PI0!O`*,8)!!@``,"("`M#`#`/HQ%`!#>0FVH`%`0+=Q#```48/_S
+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
+M%+7_]V8Q`!@4O@`'`N`@+=QB```04O_R?$4]`P`%+3@4L__O``````P`P"2,
+M90`0CH-MH`(#&"H48/_NWL-MJ-^_`$@``!`MW[X`0-^W`#C?M@`PW[4`*-^T
+M`"#?LP`8W[(`$-^Q``C?L````^``"&>]`%``````9[W_L/^U`"@`@*@M_[\`
+M2`"@("W_MP`X_[,`&/^Q``@`H(@M_[```/^^`$#_M@`P_[0`(`P!.&;_L@`0
+M`B`@+0P!.'H`0(`M?@0Z`R0#`-Y^%PP#$(,`!#(3`/]\%P`[,A,`_W[W"<,\
+M%!08`!.9`(Z#;:`"8I@A&&``(P`3G0`\$@",``"(+392``D``(`M`!*6>#P6
+M%!@D'@`!"`#%9C92`$``````CH-MH`(#&"H08``6W[\`2-[#;:@F$``!`'$8
+M+9!E`!84M?_W9C$`&!2^``<"X"`MW&(``!!2__)\13T#``4M.!2S_^\`````
+M#`##_HQE`!".@VV@`@,8*A1@_^[>PVVHW[\`2```$"W?O@!`W[<`.-^V`##?
+MM0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`4`````!GO?_@?((.`O^D
+M````@!@M_[\`&#!"`/__L0`0/`04&?^P``@``A#X9(25P'R"$@H00``3?&-*
+M`@"@@"T``XBX``,9.`(CB"T``"@M`%&(+20&`!`,`F9@`B`@+1(```C?OP`8
+M`B`@+=^Q`!`"`"@MW[``""0&`!`(`H+.9[T`(-^_`!C?L0`0W[``"`/@``AG
+MO0`@`````'R"#@,\`Q09,$(`_V1CE>```A#X?&(2"A!``!@D!@`09[W_Z/^Q
+M``A\D2P#_[`````1B;@`48@M`*"`+?^_`!```"@M#`)F8`(@("T2```(W[\`
+M$`(@("W?L0`(`@`H+=^P```D!@`0"`*"SF>]`!C?L0`(W[```&>]`!@#X``(
+M```````````#X``(```0+6>]_]`P@O__-`/YH_^T`"!\E`X#_[(`$'R2+`/_
+MOP`H_[,`&/^Q``@00P`/_[```#P$$`P\!1`,9(3KH`P"?KQDI?'@)`+__]^_
+M`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P/!$4&0`4$/AF,97@?B**
+M"A(@`%`D$$:?<,;!\@`0A'@`$A&X9A#+"0"@("UPT(`#)`8`@`#@F"T"(H@M
+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
+M/`+_\``'(,`T0@`E``89/``"%;@T0@$!``(5>`""$"T`0Q`EW$@``"0"`"!]
+M`S@!$&(`!P`(0``\!!`,/`40#&2$[]!DI?*X#`)^O"4(_^#?I``````X+0(@
+M*"T,`,92```P+0(`("T``"@M#`)F8"0&`!0,`,\<WZ0``-^_`!C?L0`0```0
+M+=^P``@#X``(9[T`(`````!GO?^0-`+YH_^T`$``@*`M_[X`8#"$____MP!8
+M?IX.`_^_`&A^ERP#_[8`4"0#____M0!(_[,`./^R`##_L0`H$((`#O^P`"#?
+MOP!H`&`0+=^^`&#?MP!8W[8`4-^U`$C?M`!`W[,`.-^R`##?L0`HW[``(`/@
+M``AGO0!P/!44&0`>$/AFM97@?J*J"A*@_^X#P(@M`!<1N`*B$"W_H@`0W$(`
+M.!!`_^@``!@M/`C__#P3$`PU"``)/!(0#``(1#@`'K$\-0A``0``@"T`"*]X
+M9G/P``@`S(-F4O+0`````"80``$2`@`:`````-^B````$!C``'48+0!V&"5_
+MPLX&?@**!O^B```D`OFCIZ(`!-QB``!\0B@#,$(`_Q17__`D`@(``@`X+0)@
+M("T"0"@M#`)^O`(@,"W?I```#`#,`B80``$D`@(`%@+_Z=^B```\$/_P`!>0
+MP-^C`!`V$``E`!"%^#80`0/<:``P`!"%.`)0@"T"%H`EW@(``'Q"&`$02``(
+M/`00##P%$`QDA/`P9*7RT`(@,"T"X#@M#`)^O`$"0"\"("`M#`#.NB0%__\`
+M'IX`-`7YHR0#__\``B`_?+.H!*^B``ROI``(WZ0`"'""_#HP0O__%$7_F_^D
+M``#?HP`0)`+YHWQ4>`0"@"@MC&@`-`$`,"TE!P`!#`#&4O^H`!C?J``8$0``
+M$24#___?I```)`CYHR0'__]\A@X"?(1*`@`````\`O^`)&/__Z>H``0T0@$I
+M``(2/'S".09\@LP'W$(``!1G__<`````)`+YHP)@*"VGH@`$```P+=^D```,
+M`,92```X+0P`SQS?I```/`(`$`@`S.LD!/__)$+__Q!$`'P`````````#]X#
+M``!\8Q@!%&#_^0`````80`!V/`00##P&__`\!/_\-,8`)32$``D`P"@M`,`X
+M+0`&-?@`!2VX`,`8+0`$)'@`P$`M-*4`@S3&`04TA(`!-&,!!P`7$/@`!STX
+M``8U.``%+7@`!"<X``,=.`!&,"T`12@M`D0@+0)#&"TU"`$)-.<`(0"6("4`
+M=A@E`-8P)=S&````MB@EW*4````(13C\@`````<]^/Q@```"2!`MWZ,`$`)'
+MD"T`5A`E`E:P)?Q```#^P```W&0`&!"``!9\QA'!W'``,-QB`#A\I1'!`*:0
+M+P`&B?AF$``!`!*1^'("@`,0D0`M9A#_@#P$$`P\!1`,9(3PF`P"?KQDI?+0
+MWZ,`$#P$$`P"(#`M9(3PP`P"?KS<90`8WZ,`$```("W<8@`0$$``!-QE`"``
+M0"`M)`+__WQ$_\8,`3_T?]3.!'[TK`0D`OFC?%1X!`P`SXX"@"`MWZ0`$```
+M*"T,`F9@)`8`0-^_`&C?O@!@```8+=^W`%@`8!`MW[8`4-^U`$C?M`!`W[,`
+M.-^R`##?L0`HW[``(`/@``AGO0!P`E`0*Q!``!8D`O__/`00##P%$`QDA/#8
+M#`)^O&2E\M`\!!`,9(3PP`(`*"T,`GZ\`D`P+0@`S3??HP`0/`00##P%$`QD
+MA/!H9*7RT`(@,"T,`GZ\`N`X+0@`S/,\!O_P`@`H+0P!/_1\1/_&"`#--]^C
+M`!`\`__\?(9*`C1C``E\@@X"``,<.``&,/@T8T`!9[W_X``#'W@``BD\`,,8
+M+?^Q`!``91@E_[``"``"A@#_OP`8_Z0``-QE```D`_FC,*4`/WRPK`1\<'@$
+M?%#.!'RPK`0,`,P"?'!X!`1```L`0(@M#`#,2`(`("T$0``3`$"(+=^_`!@"
+M(!`MW[``"-^Q`!`#X``(9[T`(#P$$`P\!1`,9(3Q``P"?KQDI?+HW[\`&-^P
+M``@"(!`MW[$`$`/@``AGO0`@`````#P$$`P\!1`,9(3Q*`P"?KQDI?+HW[\`
+M&-^P``@"(!`MW[$`$`/@``AGO0`@`````&>]_]@L@@`(_[``$`"`@"W_OP`@
+M$$``0_^Q`!@\`A09W$*6`!!``#\`!(CX``09>`(CB"T`48@MWB@`&!$``!0\
+M`O_P/`,`@#1"`",T8P$H``(4.``$(,`T0@`%`@,8)0`"%O@``QH\-$(`F```
+M."T`@B`M`````-QB```00``K`````&3G``$4Z/_[`````-XD`"`0@``A_B``
+M&"0"__]\1/_&#`$_]-XE`!#^(``0_B``(#($`__?HP`()`+YHWP&`#M\Q@G#
+M```H+7S#S@9\@XH&_Z,`"*>B``S?HP`(?,/.!GR#B@;_HP``IZ(`!-^D```,
+M`,6(_Z0`"`P`S_H"`"`M```0+=^_`"#?L0`8W[``$`/@``AGO0`H"`#-VP``
+M("T(`,WT)`+__]R"```00``)`.@0*WP%^#MDI0`R?`+X.P!%$"L40/_]````
+M``@`S=``````$$#_S3P$$`P\!1`,9(3Q4&2E\Q`,`GZ\`@`P+0@`S=?>)``@
+M`````&>]_^#_OP`8?`4`.P2``!Q\I0G#,(0#_S0#^:/?H@``?*+^!GP"O(9\
+M@HH&_Z(``*>C``3?H@``?*+^!GP"O(9\@HH&_Z(`$*>C`!3?H@`0?*+^!GP"
+MO(9\@HH&_Z(`"*>C``S?I``(#`#-=/^D`!#?OP`8`^``"&>]`"`````````8
+M+0``("T(`,X9```H+0/@``@``!`M/`(4&=Q#E>`\`A09W$*5P/R#```#X``(
+M_*(````````\`A09_$25X#P"%!D#X``(_$65P``````\!2^`/`)C=C2E%Q<T
+M0FU?``4L.``"%#@TI1<7)(0`,``%+'@T0F%U9[W_\'"#/#,TI2XN``(4.`!E
+M&"4T0G)A`^``"&>]`!`\!2^`/`)C=C2E%Q<T0FU?``4L.``"%#@TI1<7)(0`
+M,``%+'@T0G!O9[W_\'"#/#,TI2XN``(4.`!E&"4T0F]L`^``"&>]`!`#X``(
+M)`("`&>]_\C_L``H`("`+?^D`!!\A`X"_[\`,`P`SD8PA`#_?A!*`C(%__\#
+MH"`M_Z(`&/^C`"#_H@``#`#45O^C``C?OP`PW[``*`/@``AGO0`X/`,#&SP"
+M%Q<T8[-K-$(7%P`#''@``A0X9&/V9S1"%Q=GO?_H``,=.``"%'@`@"@M-&-A
+M+C1"+BX#H"`M_[\`$/^C```,`-16_Z(`"-^_`!`#X``(9[T`&&>]_^#_OP`8
+M?`4`.P2``!Q\I0G#,(0#_S0#^:/?H@``?*+^!GP"O(9\@HH&_Z(``*>C``3?
+MH@``?*+^!GP"O(9\@HH&_Z(`$*>C`!3?H@`0?*+^!GP"O(9\@HH&_Z(`"*>C
+M``S?I``(#`#.;/^D`!#?OP`8`^``"&>]`"`````````8+0``("T(`,Z=```H
+M+6>]_[#_L@!`_[$`.`"@B"W_L``P_[\`2`P`U-@`@(`M)`/__Q(#`"8`0)`M
+M#`#.1@(`("T#H"`M)`4"`/^B`"#_HP`H_Z(```P`TC[_HP`(%$``*3P$$`P#
+MH"`M!B``-@)`*"T"(#`M#`#31"0'``$$0``Y/`00#`8``#,`````WZ,`&'X#
+MS@9\0XH&)`+YH_^C`!BGH@`<WZ(`&/^B`!#?OP!(WZ(`$-^R`$#?L0`XW[``
+M,`/@``AGO0!0`````'P0`#M^$`G##`#.1@(`("T#H"`M)`4"`/^B`"#_HP`H
+M_Z(```P`TC[_HP`($$#_VP.@("T\!!`,/`40#`(`,"UDA/,H#`)^O&2E\]#?
+MH@`0W[\`2-^R`$#?L0`X?`+Z!O^B`!"GH``4WZ(`$-^P`#`#X``(9[T`4`P`
+MTP8`````"`#.U@````!\$``["`#.VGX0"<,`````/`40#&2$\UADI?/0`@`P
+M+0P"?KP"(#@MWZ(`$'P"^@;_H@`0"`#.XJ>@`!0`````9[W_N/^Q`#APD?PZ
+M_[``,`"`@"W_I``8?(0.`O^_`$`,`,Y&,(0`_WX02@*OL``0,C'___^B`"#_
+MH@``-`+YH_^C`"@2(@`(_Z,`"-^_`$`D`O__W[$`.-^P`#`#X``(9[T`2```
+M```#H"`M9Z4`$`P`TYXD!@`!W[\`0-^Q`#C?L``P`^``"&>]`$@`````9[W_
+MP/^R`##_L0`H`*"(+?^P`"#_OP`X#`#4V`"`@"TD`___$@,`(@!`D"T,`,Y8
+M`@`@+0.@("TD!0`@_Z(`$/^C`!C_H@``#`#2/O^C``@40``E/`00#`.@("T&
+M(``N`D`H+0(@,"T,`--$)`<``0!`&"T$8``'```0+08``"H`````<@(.,GQB
+MK`0D`_FC?&)X!-^_`#C?L@`PW[$`*-^P`"`#X``(9[T`0`````!\$``[?A`)
+MPPP`SE@"`"`M`Z`@+20%`"#_H@`0_Z,`&/^B```,`-(^_Z,`"!!`_]\#H"`M
+M/`00##P%$`P"`#`M9(3S*`P"?KQDI?/HW[\`.-^R`#```!`MW[$`*-^P`"`#
+MX``(9[T`0`P`TP8`````"`#/70!`&"U\$``["`#/87X0"<,`````9[W_N/^P
+M`"@`@(`M_[(`.'X2#@/_L0`P,E(`_P)`("W_OP!`#`#.6"01__]^!"P#,A#_
+M__^B`!C_H@``-`+YHZ^D`!#_HP`@$@(`"?^C``C?OP!``B`0+=^R`#C?L0`P
+MW[``*`/@``AGO0!(``````.@("T,`-(^)`4`(!1```P#H"`M9Z4`$`P`TYXD
+M!@`!W[\`0-^R`#C?L``H`$"(+0(@$"W?L0`P`^``"&>]`$@\!!`,/`40#&2$
+M\RADI?0`#`)^O`)`,"T(`,^CW[\`0&>]_]C_L0`8_[``$/^_`"`,`-38`("`
+M+3P$`QL\`Q<7-(2S:S1C%Q<`!"1X``,<.&2$]F<T8Q<7``0E.``#''@TA&$N
+M-&,N+O^D```D!0`(`Z`@+0!`B"T,`-(^_Z,`"!1``!$#H"`M!@``"P(@*"T"
+M`#`M#`#31"0'``$$0``1/`00#-^_`"#?L0`8W[``$`/@``AGO0`H#`#3!@``
+M```(`,_A`````#P$$`P\!1`,9(3S@`P"?KQDI?08"`#/XR0"__\\!1`,9(3S
+MJ&2E]!@,`GZ\`@`P+0@`S^,D`O_^/`,#&SP"%Q<T8[-K-$(7%P`#''@``A0X
+M9&/V9S1"%Q=GO?_@``,=.``"%'@T8V$NKZ0`$#1"+B[_OP`8`Z`@+?^C``!G
+MI0`0_Z(`"`P`TYXD!@`!W[\`&`/@``AGO0`@9[W_\/^P``#_OP`(#`#/P@"`
+M@"TD!?__$$4`!```&"T,`,_Z`@`@+20#``'?OP`(`&`0+=^P```#X``(9[T`
+M$&>]__C_OP``#`#/0``````T`_FC,$3__Q"#``7?OP`````0+0/@``AGO0`(
+M``````P`SXX`0"`MW[\``"0"``$#X``(9[T`"&>]_^C_OP`0#`#.N@````"O
+MH@`,``(0/Z^B``@T`OFCWZ0`"'"#_#HP8___$&(`!-^_`!```!`M`^``"&>]
+M`!@,`,\<`````-^_`!`D`@`!`^``"&>]`!@`@"@M"`#0-```("T`````9[W_
+MJ/^R`$`\$F-V_[``,#P0%Q<V4FU?-A`7%P`2E#@`$(0X-E)F8380%Q?_LP!(
+M`!*4./^Q`#@`$(1X_[\`4`"`B"T`H)@M-E)U+C80+BYGI``@_[(`("0%"``,
+M`-(^_[``*!1``"0D`O__$F(`&`.@("W_L``(_[(`````*"T"8#`M#`#31`(@
+M."T`0(`M)`+__Q("`"4J`@@`$$``'#P"%!ED0I8(`@(0+:!1``#?OP!0`@`0
+M+=^S`$C?L@!`W[$`.-^P`#`#X``(9[T`6/^P`!AGI``0_[(`$```*"T"(#`M
+M#`#2@`(@."T(`-!R`$"`+0`````\!!`,)!#__PP"?WIDA/0P"`#0>]^_`%`\
+M!!`,`@`H+62$])`,`GZ\)!#__P@`T'O?OP!0/`00#`(@*"T,`GZ\9(3T6`@`
+MT'O?OP!0``````"`*"T(`-!.)`0``0``````@"@M"`#03B0$``(``````(`H
+M+0@`T$XD!``$``````"`*"T(`-!.)`0`"`````!GO?_@*(((`/^P`!``@(`M
+M$$``'?^_`!@\`V-V/`(7%S1C;5\T0A<7/`84&0`#'#ADQI8(``(4.'S$,8HT
+M8V9A-$(7%P`#'#@``A1X-&-U+C1"+BX#H"`M_Z,```(`*"T,`--P_Z(`""0$
+M__\01``,```8+=^_`!@`8!`MW[``$`/@``AGO0`@`(`H+3P$$`P,`GZ\9(3T
+MP`@`T,TD`___/`00#`(`*"T,`GZ\9(3T\`@`T,TD`___/`-C=CP"%Q<T8VU?
+M-$(7%P`#'#@``A0X-&-F831"%Q=GO?_H``,<.``"%'@T8W4N-$(N+@.@("W_
+MOP`0_Z,```P`T_;_H@`(W[\`$`/@``AGO0`8````````*"T(`F9@)`8(````
+M```D!@`!/`@0##P)$`-GO?_X)`0(````*"T`!C?X)`<`@&4(]2#_OP``#`"T
+M:&4I0]```!@M$$``!?^"@Q#?OP```&`0+0/@``AGO0`(/`00#`P"?WIDA/4X
+M"`#1!R0#__\#X``(_(```&>]__#_L```_[\`"`P`MO@\$!`,9@3U<`P`LV@D
+M!0`"$$``"R0$$!#<0@``/!`4&?X"GA@,`+<$`````-^_``C>`IX8W[````/@
+M``AGO0`0```H+0``,"TD!P"`9@CU<`P`L\PD"0`"!$``#0!`&"TD!/__/!`4
+M&7R#_\;^`IX89&(0$`````#\8```9&,`"!1B__T`````"`#1'P`````\!!`,
+M/`40#&2$]8ADI?<0)`80$`P"?KP\$!09"`#1'P``````````9[W_V/^R`!@\
+M$A09WDF>&/^_`"#_L0`0_[``"-R1```1(`!'W)``"!2@``PD!/__)`+__V4I
+M``1\2?_&P2(``!1`__XD`@`!X2(``!!`__L`````WDF>&"0$__]E(@`(?(+_
+MQMQ#```08``>92(`$&4F`!@`0#@M?(;_QGR'_\;<YP``W,0``'#Q,"IR!"`J
+M`,0@)!2``#`D!___"`#1=F4B`#``````W,8``-R$``!PT3`J<@0@*@"&("04
+M@``F``````$`$"T`0#`M9$0`"&1C__]\YO_&?.3_QA1@__)D2``@$*``"```
+M$"W?OP`@W[(`&-^Q`!#?L``(`^``"&>]`"@````````!#R0"__]E*0`$?$G_
+MQJT@``````$/W[\`(```$"W?L@`8W[$`$-^P``@#X``(9[T`*``````,`-$2
+M_Z4``-Y)GA@(`-%.WZ4````````D`___9$(`$'QB_\;<0@``%*#_X=^_`"``
+M``$/92D`!'QI_\:M(``````!#]^_`"#?L@`8W[$`$-^P``@#X``(9[T`*```
+M``!GO?^(_[8`6`"@L"W_M0!0`."H+?^S`$``P)@M_[(`.#P2%!G_OP!P_[X`
+M:/^W`&#_M`!(_[$`,/^P`"C<D0``W)``"-Y"GAC_L0`8$$``1O^P`"`68``*
+MWD*>&"0#__]D0@`$?&+_QL!#```48/_^)`,``>!#```08/_[`````/^Q`!AG
+MI``8_[``(`P`T40D!0`!$$``&`!`H"VNH```%F``!]Y"GA@D`___9$(`!'QB
+M_\8```$/K$```````0_?OP!P`H`0+=^^`&C?MP!@W[8`6-^U`%#?M`!(W[,`
+M0-^R`#C?L0`PW[``*`/@``AGO0!X`````-Y"GA@D`P`!KJ,``"05__]D0@`(
+M?J+_QMQ7```NX@"`%$``%P.@("TD`P`X)`;_^`!@*"TD8__X`+$X%@"P*!:@
+MAP``H(4`"!1F__EDA``!/`00##P%$`QDA/709*7W,`P"?KP#H#`M"`#1U```
+M```,`-$2``````@`T<$``````!;P`"0%`(`#P"`M```P+0P`L9H``#@M$$``
+M%WQ"2`$00``5WD2>&``7&7AF]P`!`$"@+0!D&"UDA``(9&<`(&1F`"AD90`0
+M9&,`&'ZG_\9^IO_&_.(``'ZE_\;\U@``?J/_QORQ``!^I/_&_'````@`T=3\
+MEP```Z`8+20"`#@D"/_X``````!`*"TD0O_X`+$P%@"P*!:@9@``H&4`"!1(
+M__ED8P`!/`00##P%$`QDA/8(9*7W,`.@,"T,`GZ\`\`X+0@`T=0`````````
+M`&>]_\``@!`M_[$`*`"@B"W_L``@/!`4&?^_`#C_L@`PW(,```"@("W<0@`(
+M_Z,```P!E&[_H@`(W@.>&!!@`"``0"@M)!+__V1C``1^0__&P&(``!1`__XD
+M`@`!X&(``!!`__L`````)`8``0.@("T,`-&L9Z<`$!!``!L`0"`MCZ,`$!1@
+M`!0``!`MW@.>&"0$__]D8P`$?(/_Q@```0^L8``````!#]^_`#C?L@`PW[$`
+M*-^P`"`#X``(9[T`0`P`T1+_H@`8W@.>&`@`TD_?I0`8``````P!E'("("@M
+M"`#28MX#GAC>`IX89$(`!'Y"_\8```$/K$```````0\(`-)H)`+__V>]_L``
+M@!`M_[0!,`#`H"W_LP$H`."8+?^R`2``H)`M_[\!."0%``'_L0$8_[`!$-R0
+M``!GI`$`W%$`"/^P`0`,`-%$_[$!"!!``!\#H!@M/!$4&200___>(YX89&,`
+M!'X#_\;`9```%(#__B0$``'@9```$(#_^P``````0"`M`D`H+0*`,"T,`94@
+M`F`X+=XCGAAD8P`$?@/_Q@```0^L8``````!#]^_`3C?M`$PW[,!*-^R`2#?
+ML0$8W[`!$`/@``AGO0%`)`(`."0&__@`0"`M)$+_^`"0*!8`D2`6H&4``*!D
+M``@41O_Y9&,``3P$$`P\!1`,9(3V,&2E]U`,`GZ\`Z`P+0@`TJHD`O__9[W^
+MP`"`$"W_M`$P`,"@+?^S`2@`X)@M_[(!(`"@D"W_OP$X)`4``?^Q`1C_L`$0
+MW)```&>D`0#<40`(_[`!``P`T43_L0$($$``'P.@&"T\$109)!#__]XCGAAD
+M8P`$?@/_QL!D```4@/_^)`0``>!D```0@/_[``````!`("T"0"@M`H`P+0P!
+ME2("8#@MWB.>&&1C``1^`__&```!#ZQ@``````$/W[\!.-^T`3#?LP$HW[(!
+M(-^Q`1C?L`$0`^``"&>]`4`D`@`X)`;_^`!`("TD0O_X`)`H%@"1(!:@90``
+MH&0`"!1&__ED8P`!/`00#`.@*"T,`GZ\9(3V6`@`TNXD`O__9[W^T`"`$"W_
+ML@$@`*"0+?^_`2@D!0`!_[$!&/^P`1#<D```9Z0!`-Q1``C_L`$`#`#11/^Q
+M`0@00``?`Z`8+3P1%!DD$/__WB.>&&1C``1^`__&P&0``!2`__XD!``!X&0`
+M`!"`__L`````)`8``0!`("T"0"@M)`<``0P!E(8D"``!WB.>&&1C``1^`__&
+M```!#ZQ@``````$/W[\!*-^R`2#?L0$8W[`!$`/@``AGO0$P`````"0"`#@D
+M!O_X`$`@+21"__@`D"@6`)$@%J!E``"@9``(%$;_^61C``$\!!`,`Z`H+0P"
+M?KQDA/98"`#3+20"__]GO?_``(`0+?^R`#``H)`M_[$`*"0%``'_L``@/!$4
+M&?^_`#@D$/__W(,```.@("W<0@`(_Z8`$/^C``#_H@`(#`#11/^G`!C>(YX8
+M9&,`!'X#_\;`9```%(#__B0$``'@9```$(#_^P````#?I@`0`$`@+=^G`!@,
+M`950`D`H+=XCGAAD8P`$?@/_Q@```0^L8``````!#]^_`#C?L@`PW[$`*-^P
+M`"`#X``(9[T`0&>]_\@`@!`M_[$`&`#`B"W_L``0`*"`+?^_`#`D!0`!_[,`
+M*/^R`"#<@P```Z`@+=Q"``C_HP``#`#11/^B``@`0"`M$(``%0``$"T\$Q09
+M)!+__]YBGAAD0@`$?D+_QL!#```48/_^)`,``>!#```08/_[``````(`*"T,
+M`98(`B`P+=YCGAAD8P`$?D/_Q@```0^L8``````!#]^_`##?LP`HW[(`(-^Q
+M`!C?L``0`^``"&>]`#AGO?_(`(`0+?^Q`!@`P(@M_[``$`"@@"W_OP`P)`4`
+M`?^S`"C_L@`@W(,```.@("W<0@`(_Z,```P`T43_H@`(`$`@+1"``!4``!`M
+M/!,4&202___>8IX89$(`!'Y"_\;`0P``%&#__B0#``'@0P``$&#_^P`````"
+M`"@M#`&5Y`(@,"W>8YX89&,`!'Y#_\8```$/K&```````0_?OP`PW[,`*-^R
+M`"#?L0`8W[``$`/@``AGO0`X9[W_T`"`$"W_L``0`*"`+?^_`"@D!0`!_[(`
+M(/^Q`!C<@P```Z`@+=Q"``C_HP``#`#11/^B``@`0"`M$(``%```$"T\$A09
+M)!'__]Y"GAAD0@`$?B+_QL!#```48/_^)`,``>!#```08/_[``````P!E8X"
+M`"@MWD.>&&1C``1^(__&```!#ZQ@``````$/W[\`*-^R`"#?L0`8W[``$`/@
+M``AGO0`P9[W_Z`"`$"W_OP`0)`4``=R#```#H"`MW$(`"/^C```,`-%$_Z(`
+M"-^_`!!GO0`8"`&63`!`("UGO?_(_[(`$#P2%!G>0IX8_[\`,/^U`"C_M``@
+M_[,`&/^Q``@00`!$_[```"0$__]D0@`$?(+_QL!#```48/_^)`,``>!#```0
+M8/_[`````-Y"GAAD0P`(?(/_QMQC`````Q@`&&``'R1S__\\%1`,?G/X`SP4
+M$`QF<P`!``"`+0`3F7@D$?__9K7V>`@`U"QFE/=X`````!(3`!+>0IX8`%`0
+M+0``,"UD0P`@9$(`*'XC_\9^(O_&W&0``&80`"#<10``#`"QR@`````40/_R
+M`J`@+0P"?KP"@"@M%A/_\-Y"GA@```$/)`/__V1"``1\8O_&K$```````0\\
+M!!`,#`"SRF2$]7#?OP`PW[4`*```$"W?M``@W[,`&-^Q``C?L```_D">&-^R
+M`!`#X``(9[T`.``````,`-$2``````@`U`_>0IX89[W_X`"`$"W_L``0`*"`
+M+?^_`!@D!0`!W(,```.@("W<0@`(_Z,```P`T43_H@`(%$``!=^_`!@D`O^H
+MW[``$`/@``AGO0`@`@`H+=^P`!``0"`M"`&6+F>]`"``````9[W_L/^P`!@\
+M$!09W@*>&/^_`$C_M0!`_[0`./^S`##_L@`H$$``1_^Q`"`D!/__9$(`!'R"
+M_\;`0P``%&#__B0#``'@0P``$&#_^P````#>`IX89$,`"'R#_\;<<0``_Z``
+M`/^@``@2(``CHZ``$#P2$`P``*`M)!7__R03__AF4O:H```````4(7@#H!@M
+M`((@+20"`#ADA@`@9(<`$&2%`!A^IO_&W,8``'ZG_\;<Y```?J7_QMRH````
+M`````$`H+21"__@`I#@6`*@H%J!G``"@90`(%%/_^61C``%FE``!`D`@+0P"
+M?KP#H"@M%I'_Y=X"GA@\!!`,#`)_>F2$]N#>`IX8)`/__V1"``1\8O_&```!
+M#ZQ```````$/W[\`2-^U`$#?M``XW[,`,-^R`"C?L0`@W[``&`/@``AGO0!0
+M#`#1$@`````(`-1YW@*>&``````\"!`,/`D0`V>]__@D!``(```H+3P&@``D
+M!P"`90CW`/^_```,`+1H92E$0````0]P0!C?W[\``&1B``$\`Q099[T`"`/@
+M``C\8IX(`````&>]__#_L```/!`4&=X"G@@40``$_[\`"`P`U,0`````W@*>
+M"-^_``C?L````^``"&>]`!``````/`(`""0#_/\T0L`'``,?.&>]__``@#`M
+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
+M?!,I!OYB```D`@$8$H(`<`````!\%O@[#`"W4B0$``,\`P`!-&.&H#P$(8UP
+M0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`1``=W@(`````(!``!"2ZR%$`#P"6
+M("T`````?`+X.P""$"L40``_W[\`.'P#^#MD8P!D?`+X.P!#$"L40/_]````
+M`-X"``#H4?_T`````#(B___^`@``)`(!&!*B`#L\`@`!?D)B!_YB```D`@$8
+M$H(`03P"__!\$?@[#`"W4B0$``,\`P`!-&.&H#P$(8UP0Q`#-(3O00`$)#@T
+MA&O;``0D>#2$--L`1``=W@(`````(!``!"2ZR%$`#P"1("T`````?`+X.P""
+M$"L40``5W[\`.'P#^#MD8P!D?`+X.P!#$"L40/_]`````-X"``#H4?_T````
+M`-^_`#@``!`MW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!`
+M)`+__]^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`0#P"__`T
+M0@`C``(2_#1"`/C<0@``/`(``7Y"8@?^8@``)`(!&!:"_\$\`O_P-$(`(P`"
+M$OPT0@#X"`#6W=Q"```(`-:SW&+(^-S"R/`(`-:F/`/_\`````!GO?_(_[0`
+M*`"@H"W_LP`@,),`__^Q`!`D$0`#_[``""00``+_OP`P_[(`&```("T"8"@M
+M```P+20'``$D"``!#`&;B@.@2"T`$1@K!$``"0(`("V/L@`$`!(7P@!B&"00
+M8``'`````"80__\(`-<S)C'__Q8@__P`````)!+__Q"``!<D$``#```@+0)@
+M*"T``#`M)`<``0``0"T,`9X``H!(+0`0&"L``A?"`&(8)!1@__4F$/__W[\`
+M,`)`$"W?M``HW[,`(-^R`!C?L0`0W[``"`/@``AGO0`X``````@`UU8D$O__
+M9[W_T/^P````@(`M_[(`$/^_`"C_M``@_[,`&`P!ETK_L0`(CA(`%"0"__^.
+M`P`8$&(`:W)2_^^.!``P!(``;292``&.`@`T)`4``0P`UR@`12@$!$``:0!`
+MB"V.`P`<9@8`%(X4`"048``IC@(`+#P+_X`\#O_P-6L!!S7.`",`"UH\``YR
+M_#5K"0```!@M96S_D"0$``$US@#X"`#7D66-__@`````_:4``"1C``$`<B@J
+M$*``'63&``2,R```)`4!&`!B2`<`"$#X`0M`+0$`."U]"I("?`<I!MSH``!\
+MB``'_.@``!5%``(`````W<4``(S%````I"@4Z2#_ZGRE^`/]A0``"`#7CB1C
+M``$D!``!$&0`%#P$$`P\!1`,9(3Y<`P"?KQDI0A0C@0`,`2```,``)@M#`#7
+M*`(@*"W?OP`H`F`0+=^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#``````
+M)!,`_P``&"TD!P`!``````!B(`?H@``%)&,``8S$````AR`$``0@)P)DF"0`
+M<B`J%(#_]V3&``0RE`#_)!(``P``("T"@"@M```P+20'``$``$`M#`&>``)@
+M2"T`$A@K``(7P@!B&"048/_U)E+__P@`UZZ.!``P$D#_UR03__^.!``P!('_
+ME202``$(`-=Y``"(+0@`U[(D$___`````#P(__!GO?^@-0@`(R0#``'_M0`X
+M``A"_``$J?@U"#@8_[``$`*H$"W_LP`H`("`+?^R`"``0"`M_[$`&'P$*0;_
+MOP!8`*"(+?^^`%!\19("_[<`2`#`D"W_M@!``."8+?^T`##<@@``?&+&!WQB
+M8P?\@@``)`(!&!2B``,\`__PW0+(X#P#__`R9/__-&,`(P`#&OPT8S@(`J,0
+M+0!`H"U\0I("?!0I!OZ$```D!`$8$$0`B@`````\!/_P,B4`'S2$`",`!1(X
+M``0B_#)>`!\TA#@`?\(@!P*D&"T`8+@M?':2`GP7*0;^X@``)`(!&!+"`'@`
+M````?`/X._^C``@D!``##`"W4O^E```\!``!/`8AC32$AJ`TQN]!<$00`P`&
+M-#C?HP`(-,9KV]^E````!C1X-,8TVP!&`!W>@@`````@$``$)+K(40`.`(,@
+M+7P"^#L`@A`K%$``2@````!\`_@[9&,`9'P"^#L`0Q`K%$#__0````#>@@``
+MZ%'_]``````\`@`#?*)B!W_"(`?^X@``)`(!&!+"`#4\`O_P#`"W4B0$``,\
+M`P`!-&.&H#P$(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`1``=```P$``&
+M-+I\`O@[/`7_\`#","TTI0`C``4J_#2E.!`"I2@M?`4I!GP#^#MD8P/H?`+X
+M.P!#$"L40/_]`````-RB``!\0P1#$&``!0````!\!/@[`(8@*Q2`__,`````
+M%&``,3!$___(4``KW[\`6`"`$"W?O@!0W[<`2-^V`$#?M0`XW[0`,-^S`"C?
+ML@`@W[$`&-^P`!`#X``(9[T`8#1"`",``A+\-$(`^`@`V$S<0@``/`00"P(`
+M*"UDA$_``B`P+0)`."T,`GZ\`F!`+=^_`%C?O@!0)`+__]^W`$C?M@!`W[4`
+M.-^T`##?LP`HW[(`(-^Q`!C?L``0`^``"&>]`&`(`-@BW(+(^-QBR/`(`-@3
+M/`3_\#P$$`L"`"@M"`#8B&2$3W`\!!`+`@`H+0@`V(ADA$\89[W_X#P#__#_
+ML@`0-&,`(_^Q``@``QK\_[```#1C.!C_OP`8/`8``8R"``!D<?_H-,8`&20$
+M``,``)`M?%"Z`WQ&8@<`$('X?@,J"@(#."T"$1`M?`7&!_SE``#<9<C@_$8`
+M`-QBR.`,`+=2`````#P$``$\`R&--(2&H#1C[T%P1!`#``,<.#1C:]L``QQX
+M-&,TVP!#`!T``#`0``8TNGP"^#MF)0`0`,(P+0(%*"U\!/@[9(0#Z'P#^#L`
+M9!@K%&#__0````#<HP``R'$`!0````!\!/@[`(8@*Q2`__0`````R'``"#!B
+M__]\0A(#/`,0#``"$/AD8P68?&(2"@!```@`````/`(`##1"`^A\4I@'W[\`
+M&`)`$"W?L0`(W[(`$-^P```#X``(9[T`(-^_`!@\`@`,W[$`"#1"`&3?L```
+M?%*8!P)`$"W?L@`0`^``"&>]`"#?OP`8/`(`"-^Q``@T0@/HW[```'Q2F`<"
+M0!`MW[(`$`/@``AGO0`@W[\`&#P"``C?L0`(-$(`"M^P``!\4I@'`D`0+=^R
+M`!`#X``(9[T`(-^_`!@\`@`,W[$`"#1"``K?L```?%*8!P)`$"W?L@`0`^``
+M"&>]`"#?OP`8/`(`"-^Q``@T0@!DW[```'Q2F`<"0!`MW[(`$`/@``AGO0`@
+M9[W_L#P"__#_MP`X-$(`(_^V`#```A+\_[4`*#1".!C_M``@)`4``?^S`!AD
+M1O_P_[(`$"0#``'_L0`(``"(+?^P``#_OP!(_[X`0(R$````!+(",)4`_P`6
+M@?@RM``??@(B"@("D"T"!K@M9$;_Z'Z#8@<"!I@M?*3&!WRD8P?^1```W$3(
+MX/[@``#<1,C@_F,``-Q"R.!\'O@[#`"W4B0$``,\`P`!-&.&H#P$(8UP0Q`#
+M-(3O00`$)#@TA&O;``0D>#2$--L`1``=WN(`````(!``!"2ZR%$`#@">("U\
+M`O@[`((0*Q1``*8"P"@M?`/X.V1C`&1\`O@[`$,0*Q1`__T`````WN(``.A1
+M__0`````/`,``SP>__`T8P`!-]X`(WZ#8@<`'O+\_F,``#?>`/C?P@``#`"W
+M4B0$``,\`P`!-&.&H#P$(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`1``=
+M```P$``&-+I\`O@[9\4W&`#","T"!2@M?`/X.V1C`^A\`O@[`$,0*Q1`__T`
+M````W*(``'Q#!$,08``%`````'P$^#L`AB`K%(#_\P`````48`$,,$3__\A0
+M`1PP@R!\)`(@0!!B`/(D`B<0WD0``"0%``$\`__P)`(``31C`"-^@F('?*3&
+M!P`#&OQ\I&,'-&,`^/Y$``#<9```)`0`"O[D``#<9```_F(``-QB``!\'O@[
+M#`"W4B0$``,\`P`!-&.&H#P$(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`
+M1``=WN(`````(!``!"2ZR%$`#@">("U\`O@[`((0*Q1``$X"P"@M?`+X.V1"
+M`&1\`_@[`&(8*Q1@__T`````WN(``.A1__0`````/`(``SP>__`T0@`!-]X`
+M(WZ"8@<`'O+\_F(``#?>`/C?P@``#`"W4B0$``,\`P`!-&.&H#P$(8UP0Q`#
+M-(3O00`$)#@TA&O;``0D>#2$--L`1``=```H$``%++I\`O@[9]XW&`"B*"T"
+M'H`M?`/X.V1C`^A\`O@[`$,0*Q1`__T`````W@(``'Q#!$,08``%`````'P$
+M^#L`A2`K%(#_\P`````48`"U,$3__\A0`,4D`@`!Z(``*7Q1E(??OP!(`B`0
+M+=^^`$#?MP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!0
+M/`00"V2$3\`"H#`M)`<``0P"?KP``$`M"`#9F0`````\!!`+`J`P+62$3\`D
+M!P`!#`)^O"0(``K?OP!(W[X`0`(@$"W?MP`XW[8`,-^U`"C?M``@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0!0WD4``#P$__`TA``C)`,`!``$(OQ^@V('?$7&
+M!S2$`/A\16,'_D4``-R"```D`@`8_N(``-R"``#^8P``W((``'P2^#L,`+=2
+M)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0TVP!$`!W>
+MX@`````@$``$)+K(40`.`)(@+7P"^#L`@A`K%$``1P+`*"U\`_@[9&,`9'P"
+M^#L`0Q`K%$#__0````#>X@``Z%'_]``````\`P`#/`+_\#1C``0T0@`C?H-B
+M!P`"$OS^8P``)`0``S1"`/C<0@``#`"W4@`````\`P`!/`0AC31CAJ`TA.]!
+M<$,0`P`$)#@TA&O;``0D>#2$--L`1``=```H$``%++I\`O@[`*(H+0````!\
+M`_@[9&,#Z'P"^#L`0Q`K%$#__0````#>`@``?$,$0Q!@``4`````?`3X.P"%
+M("L4@/_S`````!1@`%,P1/__R%``2``$$P+?OP!(W[X`0'Q1G,??MP`X`B`0
+M+=^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`4`@`V9E\48@'
+M/`00"P*@,"UDA$_`)`<`!`P"?KPD"``8W[\`2-^^`$`"(!`MW[<`.-^V`##?
+MM0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`4#P$$`L"P"@M9(1/&`*@
+M,"TD!P`!#`)^O```0"T(`-F9`````#P$$`L"P"@M9(1/&`*@,"TD!P`!#`)^
+MO"0(``H(`-GYW[\`2#P$$`L"P"@M9(1/<`*@,"TD!P`!#`)^O```0"T(`-F9
+M`````#P$$`L"P"@M9(1/<`*@,"TD!P`!#`)^O"0(``H(`-GYW[\`2#P$$`L"
+MP"@M9(1/<`*@,"TD!P`$#`)^O"0(`!@(`-GYW[\`2#P$$`L"P"@M9(1/&`*@
+M,"TD!P`$#`)^O"0(`!@(`-GYW[\`2`````!GO?_`_[\`./^P````@(`M_[8`
+M,/^U`"C_M``@_[,`&/^R`!#_L0`(C(0`"`P!.&:.$0``#`$[#@!`("T``A``
+M<$,#+G!"`6X`8A`E%$``>#P"__``$8("-$(`(P`0F?@``A+\)`0``31".!@R
+M,0#_?F(:"@)B,"UD1?_P,C4`'P)ED"UD1?_H?(/&!P)EH"U\@V,'_,,``"0#
+M``/<1,C@-`3A#?Y$``!^HV('W$3(X/Z#``#<0LC@?!;X.PP`MU(D!``#/`,`
+M`31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'=Y"`````"`0
+M``0DNLA1``X`EB`M?`+X.P""$"L40`!5`@`H+7P#^#MD8P!D?`+X.P!#$"L4
+M0/_]`````-Y"``#H4?_T`````#P#``,\$O_P-&,``S92`"-^HV('`!*2_/Z#
+M```V4@#XWD(```P`MU(D!``#/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1K
+MVP`$)'@TA#3;`$0`'0``,!``!C2Z?`+X.V9%-Q@`PC`M`F4H+7P#^#MD8P/H
+M?`+X.P!#$"L40/_]`````-RB``!\0P1#$&``!0````!\!/@[`(8@*Q2`__,`
+M````%&``*3!$___(4``P,(0!$20#`1$``"@M%(,`$0``$"W?OP`X/`(`#-^V
+M`#`T0@/HW[4`*'Q%F`??M``@`*`0+=^S`!C?L@`0W[$`"-^P```#X``(9[T`
+M0`P`V20"`"`MW[\`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(
+M9[T`0#P$$`MDA$_``B`P+20'``,,`GZ\-`CA#0@`VU0``"@M/`00"P(`*"UD
+MA$\8`B`P+20'``,,`GZ\-`CA#0@`VU0``"@M/`00"P(`*"UDA$]P`B`P+20'
+M``,,`GZ\-`CA#0@`VU0``"@M9[W_P#P"__#_M0`H-$(`(_^T`"```A+\_[,`
+M&#1".!C_L@`09$7_\/^P```D`P`6_[\`.```F"W_M@`P_[$`"(R1``!^-;H#
+M,C$`'P`5J?A^(V('?J(B"@*BH"T"I9`M9$7_Z`*E@"U\!,8'_H0``-Q$R.#^
+M0```W$3(X/X#``#<0LC@?!;X.PP`MU(D!``#/`,``31CAJ`\!"&-<$,0`S2$
+M[T'>0P````0D.#2$:]L`!"1X-(0TVP!$`!T``"@0``4LNLAQ``\`MB@M````
+M`'P#^#L`HQ@K%&``"@````!\!/@[9(0`9'P#^#L`9!@K%&#__0````#>0P``
+MZ''_]`````#>@P``/!+_\#92`",\`@`!`!*2_#1"`!%\`\8'-E(`^/Z#``!^
+M(F('WD,``"0$``/^`@``WD(```P`MU(`````/`0``3P#(8TTA(:@-&/O07!$
+M$`,``QPX-&-KVP`#''@T8S3;`$,`'0``&!```QRZ?`+X.V92-Q@`8A`M`K*0
+M+0````!\!/@[9(0#Z'P#^#L`9!@K%&#__0````#>0P``R'$`!0````!\!/@[
+M`((@*Q2`__0`````R'``4S!U__\RH@@`$$``'0*@L"TRPPP()`(,"!!B``PD
+M`P`!W[\`.`)@$"W?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]
+M`$``%A-#?'.<QP`6LX-\4Y2')`(``A+"`#PD`@`#$L(`."0"``$2P@`[)`(`
+M"@@`W`!\4X@'WH4``#P"__`T0@`C/`,``0`"$OQ^(V('?`7&!S1"`/C^A0``
+M)`0``]Q%``#^`P``W$(```P`MU(`````/`0``3P#(8TTA(:@-&/O07!$$`,`
+M`QPX-&-KVP`#''@T8S3;`$,`'0``*!``!2RZ?`+X.P"B*"T`````?`3X.V2$
+M`^A\`_@[`&08*Q1@__T`````WD(``,A1``4`````?`/X.P!E&"L48/_T````
+M`,A0_[@P0___,&(0`!1`_[8RPPP(-K4(``@`V_P"H+`M"`#<````F"TD`@/H
+M"`#<`'Q3B`<D`@!D"`#<`'Q3B`<`````9[W_@/^R`$``!9#X_[\`>``%*;C_
+MO@!P`D60+?^W`&AF4@`0_[8`8/^U`%C_M`!0_[,`2/^Q`#C_L``PW((`>(R#
+M``",Q``H`%*0+20"``$0@@89CE$`(#P"__```_("-$(`(P`>L?@``A+\,'<`
+M_S1".!@F)1*MD,0`>P+"@"W>`P``)`8``?^^```4@`+^?,/&!V1$__!\PV,'
+M_@,```+$\"W<1LC@9$3_Z#"E__\R]0`?_\4```+$H"W<1<C@`!4B./Z$``#<
+M0LC@?!/X.PP`MU(D!``#/`0``32$AJ`\!2&-<$00`S2E[T$`!2PX-*5KVP`%
+M+'@TI33;`$4`'=_"`````"@0``4LNLA1``\`LR@M`````'P"^#L`HA`K%$``
+M-@````!\!/@[9(0`9'P"^#L`1!`K%$#__0````#?P@``Z%'_]``````\`O_P
+M/`0``31"`"-^I&('_\`````"$OPT0@#XW$4``/Z$``#<0@``?!/X.PP`MU(D
+M!``#/`0``32$AJ`\!2&-<$00`S2E[T$`!2PX-*5KVP`%+'@TI33;`$4`'=_"
+M`````"@0``4LNLA1``\`LR@M`````'P"^#L`HA`K%$``#`````!\!/@[9(0`
+M9'P"^#L`1!`K%$#__0````#?P@``Z%'_]``````(`-S4``"8+203___>!```
+M)`4``3P"__`F)A*P-$(`(S#&__]\I,8'``(2_'RD8P<T0@#X_@0````5*CC<
+M1```_\8``-Q$``#^A0``W$(``'P%^#O_I0`H#`"W4B0$``,\!``!-(2&H#P&
+M(8UP1!`#-,;O0=^E`"@`!C0X-,9KVP`&-'@TQC3;`$8`'0``$!```A2Z`$4H
+M+=_"``#(40`./`+_\'P"^#L`HA`K%$``-P````!\!/@[9(0`9'P"^#L`1!`K
+M%$#__0````#?P@``Z%'_]#P"__`D!@`%-$(`(SP%``'_Q@````(2_#1"`/A^
+MI6('W$0``/Z%``#<0@``?`7X._^E`"@,`+=2)`0``SP$``$TA(:@/`8AC7!$
+M$`,TQN]!WZ4`*``&-#@TQFO;``8T>#3&--L`1@`=```0$``"%+H`12@M````
+M`-_"``#(40`/`````'P"^#L`HA`K%$``"@````!\!/@[9(0`9`````!\`O@[
+M`$00*Q1`__T`````"`#=)``````D$___?`7X._^E`"@,`+=2)`0``R0$)Q#?
+MI0`H/`8AC7!$$`,TQN]!``8T.#3&:]L`!C1X-,8TVP!&`!T``"`0``0DN@"%
+M("U\`O@[`$00*Q1`__T`````W@0``"0%``$\`O_P)B8:K31"`",PQO__?*3&
+M!P`"$OQ\I&,'-$(`^/X$````%2HXW$0``/_&``#<1```_H4``-Q"``!\!?@[
+M_Z4`*`P`MU(D!``#/`0``32$AJ`\!B&-<$00`S3&[T'?I0`H``8T.#3&:]L`
+M!C1X-,8TVP!&`!T``!`0``(4N@!%*"W?P@``R%$`#CP"__!\`O@[`*(0*Q1`
+M`#4`````?`3X.V2$`&1\`O@[`$00*Q1`__T`````W\(``.A1__0\`O_P/`4`
+M`31"`"-^I6('_\`````"$OPT0@#XW$0``/Z%``#<0@``?`7X._^E`"@,`+=2
+M)`0``SP$``$TA(:@/`8AC7!$$`,TQN]!WZ4`*``&-#@TQFO;``8T>#3&--L`
+M1@`=```0$``"%+H`12@MW\(``,A1``\`````?`+X.P"B$"L40``*`````'P$
+M^#MDA`!D`````'P"^#L`1!`K%$#__0`````(`-V8`````"03___>!```)`4`
+M`3P"__`F)AJP-$(`(S#&__]\I,8'``(2_'RD8P<T0@#X_@0````5*CC<1```
+M_\8``-Q$``#^A0``W$(``'P%^#O_I0`H#`"W4B0$``,\!``!-(2&H#P&(8UP
+M1!`#-,;O0=^E`"@`!C0X-,9KVP`&-'@TQC3;`$8`'0``$!```A2Z`$4H+=_"
+M``#(40`//`+_\`````!\`O@[`*(0*Q1``#<`````?`3X.V2$`&1\`O@[`$00
+M*Q1`__T`````W\(``.A1__0\`O_P)`8`!31"`",\!0`!_\8````"$OPT0@#X
+M?J5B!]Q$``#^A0``W$(``'P%^#O_I0`H#`"W4B0$``,\!``!-(2&H#P&(8UP
+M1!`#-,;O0=^E`"@`!C0X-,9KVP`&-'@TQC3;`$8`'0``$!```A2Z`$4H+0``
+M``#?P@``R%$`#P````!\`O@[`*(0*Q1```H`````?`3X.V2$`&0`````?`+X
+M.P!$$"L40/_]``````@`W?H`````)!/__WP%^#O_I0`H#`"W4B0$``,D!"<0
+MWZ4`*#P&(8UP1!`#-,;O00`&-#@TQFO;``8T>#3&--L`1@`=```@$``$)+H`
+MA2`M?`+X.P!$$"L40/_]`````-X$```D!0`!ED,`,#P"__`T0@`C)B80CWRD
+MQ@<``A+\_Z,`"'RD8P>60P`T-$(`^)9%`#(PQO___@0``/^C`!C_I0`0`!4J
+M.-Q$``#_Q@``W$0``/Z%``#<0@``?`7X._^E`"@,`+=2)`0``SP$``$TA(:@
+M/`8AC7!$$`,TQN]!WZ4`*``&-#@TQFO;``8T>#3&--L`1@`=```0$``"%+H`
+M12@MW\(``,A1``[?HP`(?`+X.P"B$"L40``_`````'P$^#MDA`!D?`+X.P!$
+M$"L40/_]`````-_"``#H4?_TWZ,`"-^E`!!P9A,RWZ,`&'"B&C(`PC`E/`4`
+M`7ZE8@<P8@`_`,(P)3P"__`T0@`C,,;____&`````A+\-$(`^-Q$``#^A0``
+MW$(``'P%^#O_I0`H#`"W4B0$``,\!``!-(2&H#P&(8UP1!`#-,;O0=^E`"@`
+M!C0X-,9KVP`&-'@TQC3;`$8`'0``$!```A2Z`$4H+0````#?P@``R%$`#P``
+M``!\`O@[`*(0*Q1```H`````?`3X.V2$`&0`````?`+X.P!$$"L40/_]````
+M``@`WGX`````)!/__]X$```D!0`!/`+_\"8H$)`T0@`C,1'__WRDQ@<``A+\
+M?*1C!S1"`/C^!````!4B.-Q&``#_T0``W$4``/Z$``#<0@``?`7X._^E`"@D
+M!``##`"W4O^H`"`\!``!/`8AC32$AJ`TQN]!<$00`P`&-#C?I0`H-,9KV]^H
+M`"``!C1X-,8TVP!&`!T``!`0``(4N@!%*"W?P@``R%$`#P``````````?`+X
+M.P"B$"L40`.W/`00"WP$^#MDA`!D?`+X.P!$$"L40/_]`````-_"``#H4?_T
+M`````#P%__`\!``#-*4`(WZD8@?^A`````4J_#2E`/@D!``#W*(``/^E`"@,
+M`+=2_Z@`(#P&``$\!"&--,:&H#2$[T%P1A`#``0D.#2$:]L`!"1X-(0TVP!$
+M`!T``#`0``8TNGP"^#O?I0`H`,(P+=^H`"!DI3<8`L6P+0````!\!/@[9(0#
+MZ'P"^#L`1!`K%$#__0````#>P@``?$0$0Q"```4`````?`7X.P"F*"L4H/_S
+M`````!2`!GXP1?__R%`&A0+@,"TPM\``W@0``"0&``$\`O_P`!4J.)96`#@T
+M0@`C?,3&!P`"$OR64@`Z?,1C!_X$```T0@#XW$0``/_1``#<1```_H4``-Q"
+M``!\$/@[#`"W4B0$``,\!``!-(2&H#P%(8UP1!`#-*7O00`%+#@TI6O;``4L
+M>#2E--L`10`=W\(`````*!``!2RZR%$`#@"P*"U\`O@[`*(0*Q1``#H`````
+M?`3X.V2$`&1\`O@[`$00*Q1`__T`````W\(``.A1__0``````!:)P#)2`#\R
+M,0#_/`+_\`(RB"4T0@`C`C>()0`"$OPR,?__/`4``?_1```T0@#XW$0``'ZE
+M8@?^A0``W$(``'P0^#L,`+=2)`0``SP$``$TA(:@/`4AC7!$$`,TI>]!``4L
+M.#2E:]L`!2QX-*4TVP!%`!W?P@`````H$``%++K(40`/`+`H+0````!\`O@[
+M`*(0*Q1```H`````?`3X.V2$`&1\`O@[`$00*Q1`__T`````W\(``.A1__0`
+M````?!#X.PP`MU(D!``#)`,G$#P$(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$
+M--L`1``=```8$``#'+H`<!@M?`+X.P!#$"L40/_]W[\`>`)@$"W?O@!PW[<`
+M:-^V`&#?M0!8W[0`4-^S`$C?L@!`W[$`.-^P`#`#X``(9[T`@&1$__!\PV,'
+M_@,```+$\"W<1LC@9$3_Z#"E__\R]0`?_\4```+$H"W<1<C@`!4B./Z$``#<
+M0LC@?!/X.PP`MU(D!``#/`0``32$AJ`\!2&-<$00`S2E[T$`!2PX-*5KVP`%
+M+'@TI33;`$4`'=_"`````"@0``4LNLA1``X`LR@M?`+X.P"B$"L40``V````
+M`'P$^#MDA`!D?`+X.P!$$"L40/_]`````-_"``#H4?_T`````#P"__`\!``!
+M-$(`(WZD8@?_P`````(2_#1"`/C<10``_H0``-Q"``!\$_@[#`"W4B0$``,\
+M!``!-(2&H#P%(8UP1!`#-*7O00`%+#@TI6O;``4L>#2E--L`10`=W\(`````
+M*!``!2RZR%$`#P"S*"T`````?`+X.P"B$"L40``,`````'P$^#MDA`!D?`+X
+M.P!$$"L40/_]`````-_"``#H4?_T``````@`W]```)@M)!/__]X$```D!0`!
+M/`+_\"8F$K`T0@`C,,;__WRDQ@<``A+\?*1C!S1"`/C^!````!4J.-Q$``#_
+MQ@``W$0``/Z%``#<0@``?`7X._^E`"@,`+=2)`0``SP$``$TA(:@/`8AC7!$
+M$`,TQN]!WZ4`*``&-#@TQFO;``8T>#3&--L`1@`=```0$``"%+H`12@MW\(`
+M`,A1``X\`O_P?`+X.P"B$"L40``W`````'P$^#MDA`!D?`+X.P!$$"L40/_]
+M`````-_"``#H4?_T/`+_\"0&``DT0@`C/`4``?_&`````A+\-$(`^'ZE8@?<
+M1```_H4``-Q"``!\!?@[_Z4`*`P`MU(D!``#/`0``32$AJ`\!B&-<$00`S3&
+M[T'?I0`H``8T.#3&:]L`!C1X-,8TVP!&`!T``!`0``(4N@!%*"T`````W\(`
+M`,A1``\`````?`+X.P"B$"L40``*`````'P$^#MDA`!D`````'P"^#L`1!`K
+M%$#__0`````(`.`@`````"03__]\!?@[_Z4`*`P`MU(D!``#)`0G$-^E`"@\
+M!B&-<$00`S3&[T$`!C0X-,9KVP`&-'@TQC3;`$8`'0``(!``!"2Z`(4@+7P"
+M^#L`1!`K%$#__0````#>!```)`4``3P"__`F)AJM-$(`(S#&__]\I,8'``(2
+M_'RD8P<T0@#X_@0````5*CC<1```_\8``-Q$``#^A0``W$(``'P%^#O_I0`H
+M#`"W4B0$``,\!``!-(2&H#P&(8UP1!`#-,;O0=^E`"@`!C0X-,9KVP`&-'@T
+MQC3;`$8`'0``$!```A2Z`$4H+=_"``#(40`./`+_\'P"^#L`HA`K%$``-0``
+M``!\!/@[9(0`9'P"^#L`1!`K%$#__0````#?P@``Z%'_]#P"__`\!0`!-$(`
+M(WZE8@?_P`````(2_#1"`/C<1```_H4``-Q"``!\!?@[_Z4`*`P`MU(D!``#
+M/`0``32$AJ`\!B&-<$00`S3&[T'?I0`H``8T.#3&:]L`!C1X-,8TVP!&`!T`
+M`!`0``(4N@!%*"W?P@``R%$`#P````!\`O@[`*(0*Q1```H`````?`3X.V2$
+M`&0`````?`+X.P!$$"L40/_]``````@`X)0`````)!/__]X$```D!0`!/`+_
+M\"8F&K`T0@`C,,;__WRDQ@<``A+\?*1C!S1"`/C^!````!4J.-Q$``#_Q@``
+MW$0``/Z%``#<0@``?`7X._^E`"@,`+=2)`0``SP$``$TA(:@/`8AC7!$$`,T
+MQN]!WZ4`*``&-#@TQFO;``8T>#3&--L`1@`=```0$``"%+H`12@MW\(``,A1
+M``\\`O_P`````'P"^#L`HA`K%$``-P````!\!/@[9(0`9'P"^#L`1!`K%$#_
+M_0````#?P@``Z%'_]#P"__`D!@`)-$(`(SP%``'_Q@````(2_#1"`/A^I6('
+MW$0``/Z%``#<0@``?`7X._^E`"@,`+=2)`0``SP$``$TA(:@/`8AC7!$$`,T
+MQN]!WZ4`*``&-#@TQFO;``8T>#3&--L`1@`=```0$``"%+H`12@M`````-_"
+M``#(40`/`````'P"^#L`HA`K%$``"@````!\!/@[9(0`9`````!\`O@[`$00
+M*Q1`__T`````"`#@]@`````D$___?`7X._^E`"@,`+=2)`0``R0$)Q#?I0`H
+M/`8AC7!$$`,TQN]!``8T.#3&:]L`!C1X-,8TVP!&`!T``"`0``0DN@"%("U\
+M`O@[`$00*Q1`__T`````W@0``"0%``&60P`D/`+_\#1"`",F)A"/?*3&!P`"
+M$OS_HP`(?*1C!Y9#`"@T0@#XED4`)C#&___^!```_Z,`&/^E`!``%2HXW$0`
+M`/_&``#<1```_H4``-Q"``!\!?@[_Z4`*`P`MU(D!``#/`0``32$AJ`\!B&-
+M<$00`S3&[T'?I0`H``8T.#3&:]L`!C1X-,8TVP!&`!T``!`0``(4N@!%*"W?
+MP@``R%$`#M^C``A\`O@[`*(0*Q1``#\`````?`3X.V2$`&1\`O@[`$00*Q1`
+M__T`````W\(``.A1__3?HP`(WZ4`$'!F$S+?HP`8<*(:,@#","4\!0`!?J5B
+M!S!B`#\`PC`E/`+_\#1"`",PQO___\8````"$OPT0@#XW$0``/Z%``#<0@``
+M?`7X._^E`"@,`+=2)`0``SP$``$TA(:@/`8AC7!$$`,TQN]!WZ4`*``&-#@T
+MQFO;``8T>#3&--L`1@`=```0$``"%+H`12@M`````-_"``#(40`/`````'P"
+M^#L`HA`K%$``"@````!\!/@[9(0`9`````!\`O@[`$00*Q1`__T`````"`#A
+M>@`````D$___W@0``"0%``$\`O_P)B@0D#1"`",Q$?__?*3&!P`"$OQ\I&,'
+M-$(`^/X$````%2(XW$8``/_1``#<10``_H0``-Q"``!\!?@[_Z4`*"0$``,,
+M`+=2_Z@`(#P$``$\!B&--(2&H#3&[T%P1!`#``8T.-^E`"@TQFO;WZ@`(``&
+M-'@TQC3;`$8`'0``$!```A2Z`$4H+=_"``#(40`/``````````!\`O@[`*(0
+M*Q1``,,\!!`+?`3X.V2$`&1\`O@[`$00*Q1`__T`````W\(``.A1__0`````
+M/`7_\#P$``,TI0`C?J1B!_Z$````!2K\-*4`^"0$``/<H@``_Z4`*`P`MU+_
+MJ``@/`8``3P$(8TTQH:@-(3O07!&$`,`!"0X-(1KVP`$)'@TA#3;`$0`'0``
+M,!``!C2Z?`+X.]^E`"@`PC`MWZ@`(&2E-Q@"Q;`M`````'P$^#MDA`/H?`+X
+M.P!$$"L40/_]`````-["``!\1`1#$(``!0````!\!?@[`*8H*Q2@__,`````
+M%(`#>3!%___(4`.1`N`P+3"WP`#>!```)`8``3P"__``%2HXEE8`+#1"`"-\
+MQ,8'``(2_)92`"Y\Q&,'_@0``#1"`/C<1```_]$``-Q$``#^A0``W$(``'P0
+M^#L,`+=2)`0``SP$``$TA(:@/`4AC7!$$`,TI>]!``4L.#2E:]L`!2QX-*4T
+MVP!%`!W?P@`````H$``%++K(40`.`+`H+7P"^#L`HA`K%$``.@````!\!/@[
+M9(0`9'P"^#L`1!`K%$#__0````#?P@``Z%'_]```````%HG`,E(`/S(Q`/\\
+M`O_P`C*()31"`","-X@E``(2_#(Q__\\!0`!_]$``#1"`/C<1```?J5B!_Z%
+M``#<0@``?!#X.PP`MU(D!``#/`0``32$AJ`\!2&-<$00`S2E[T$`!2PX-*5K
+MVP`%+'@TI33;`$4`'=_"`````"@0``4LNLA1``\`L"@M`````'P"^#L`HA`K
+M%$``"@````!\!/@[9(0`9'P"^#L`1!`K%$#__0````#?P@``Z%'_]`````!\
+M$/@[#`"W4B0$``,D`R<0/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0TVP!$
+M`!T``!@0``,<N@!P&"U\`O@[`$,0*Q1`__W?OP!X`F`0+=^^`'#?MP!HW[8`
+M8-^U`%C?M`!0W[,`2-^R`$#?L0`XW[``,`/@``AGO0"`WZ4```+@,"UDA$_`
+M```X+0P"?KPT%\``"`#>]P````#?I0```N`P+62$3\```#@M#`)^O#07P``(
+M`.'S`````#P"__```[H"-$(`(P`7(?@``A+\)`8``31".!@P8P#_?((J"@""
+MH"W_HP``9$?_\"8C$JT`A[`M?,7&!V1'_^A\Q6,'`(>`+?Z%``#?I0``_Z,`
+M"#!C__\PLP`?W$7(X/[#````$QHXW$3(X/X#``#<0LC@?!7X.PP`MU(D!``#
+M/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``(!``
+M!"2Z`)4@+0````#>P@``R%$"C#P"__!\`O@[`((0*Q1```HD%?__?`/X.V1C
+M`&0`````?`+X.P!#$"L40/_]``````@`XK``````WH(``"0#``$\!/_P)B42
+ML#2$`",PI?__?&+&!P`$(OS_I0`0?&)C!_Z"```TA`#X`*`8+0`3$CC<A0``
+M_L,``-R#``#^`@``W((``'P>^#L,`+=2)`0``SP#``$T8X:@/`0AC7!#$`,T
+MA.]!``0D.#2$:]L`!"1X-(0TVP!$`!T``"`0``0DN@">("T`````WL(``,A1
+M`BXD`P`)?`+X.P""$"L40``*`````'P#^#MD8P!D`````'P"^#L`0Q`K%$#_
+M_0`````(`.+D`````"05__]\'O@[#`"W4B0$``,D`R<0/`0AC7!#$`,TA.]!
+M``0D.#2$:]L`!"1X-(0TVP!$`!T``!@0``,<N@!^&"U\`O@[`$,0*Q1`__T`
+M````WH0``"0"``$\`__P)CX:K31C`",SQ?__?$3&!P`#&OQ\1&,'-&,`^/Z$
+M````$Q(XW&0``/[%``#<9```_@(``-QB``!\`_@[_Z,`*`P`MU(D!``#/`0`
+M`32$AJ`\!2&-<$00`S2E[T'?HP`H``4L.#2E:]L`!2QX-*4TVP!%`!T``"`0
+M``0DN@"#("T`````WL(``,A1`;H\`__P?`+X.P""$"L40``*`````'P#^#MD
+M8P!D`````'P"^#L`0Q`K%$#__0`````(`.,L`````"05___>@@``)`,``3P$
+M__`F)1JP-(0`(S"E__]\8L8'``0B_/^E`!A\8F,'_H(``#2$`/@`H!@M`!,2
+M.-R%``#^PP``W(,``/X"``#<@@``?`/X._^C`"@,`+=2)`0``SP$``$TA(:@
+M/`4AC7!$$`,TI>]!WZ,`*``%+#@TI6O;``4L>#2E--L`10`=```@$``$)+H`
+M@R`MWL(``,A1`5@D`P`)?`+X.P""$"L40``*`````'P#^#MD8P!D`````'P"
+M^#L`0Q`K%$#__0`````(`.-B`````"05__]\`_@[_Z,`*`P`MU(D!``#)`0G
+M$-^C`"@\!2&-<$00`S2E[T$`!2PX-*5KVP`%+'@TI33;`$4`'0``$!```A2Z
+M`$,8+7P"^#L`0Q`K%$#__=^F``@"X"`MWZ4```P`UGPT!X``WZ4```+@("TF
+M)Q*L_Z(`"`P`U^0``#`MWH8``-^D`!`\!?_P`$`X+20"``%\1L8'-*4`(WQ&
+M8P<`!2K\_H8``#2E`/C<H@```!,:./[$``#<H@``_@,``-RB``!\`_@[_Z,`
+M*"0$``,,`+=2_Z<`(#P$``$\!2&--(2&H#2E[T%P1!`#``4L.-^C`"@TI6O;
+MWZ<`(``%+'@TI33;`$4`'0``*!``!2RZ`*,H+0````#>PP``R'$`U#P"__!\
+M`_@[`*,8*Q1@``H`````?`3X.V2$`&0`````?`/X.P!D&"L48/_]``````@`
+MX[@`````)!7__WP#^#O_HP`H#`"W4B0$``,D!"<0WZ,`*#P%(8UP1!`#-*7O
+M00`%+#@TI6O;``4L>#2E--L`10`=```0$``"%+H`0Q@M?`+X.P!#$"L40/_]
+MWZ4```/`,"T"X"`M#`#6?#0'@`#?I0```N`@+28G&JP``#`M#`#7Y`!`\"W>
+MA@``WZ0`&#P%__``0#@M)`(``7Q&Q@<TI0`C?$9C!P`%*OS^A@``-*4`^-RB
+M````$QHX_L0``-RB``#^`P``W*(``'P4^#O_IP`@#`"W4B0$``,\`P`!-&.&
+MH#P$(8UP0Q`#-(3O0=^G`"``!"0X-(1KVP`$)'@TA#3;`$0`'0``*!``!2RZ
+M`+0H+0````#>PP``R'$`5CP"__!\`_@[`*,8*Q1@``H`````?`3X.V2$`&0`
+M````?`/X.P!D&"L48/_]``````@`Y`P`````)!#__WP3^#L,`+=2)`0``R0#
+M)Q`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``&!```QRZ`',8
+M+7P"^#L`0Q`K%$#__0+@("V61P`\ED,`/B8F$(^60@!`)C$0D-^E``!PYQ,R
+M<&,:,@#C."4P0@`_#`#6?`#B."7?I0```N`@+0(@."T`4!`E```P+0P`U^0`
+M0)@MED<`1`+@("V60P!&,$+``-^E```"(#`M<.<!\C!C`#\`XS@E#`#6?`#B
+M."5\$/@[#`"W4B0$``,D`R<0/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0T
+MVP!$`!T``!@0``,<N@!P&"T`````?`+X.P!#$"L40/_]W[\`>`@`WVL"8!`M
+M,.3__S1"`",\`P`!_L0````"$OPT0@#X?F-B!]Q$``#^`P``W$(``'P0^#L,
+M`+=2)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0TVP!$
+M`!T``"`0``0DN@"0("W>P@``R%'_G0/5@"5\`O@[`((0*Q1`_YDD$/__?`/X
+M.V1C`&0`````?`+X.P!#$"L40/_]``````@`Y'X`````,.3__S1"`",\`P`!
+M_L0````"$OPT0@#X?F-B!]Q$``#^`P``W$(``'P#^#O_HP`H#`"W4B0$``,\
+M!``!-(2&H#P%(8UP1!`#-*7O0=^C`"@`!2PX-*5KVP`%+'@TI33;`$4`'0``
+M(!``!"2Z`(,@+=["``#(40`.WZ,`"'P"^#L`@A`K%$#_&`````!\`_@[9&,`
+M9`````!\`O@[`$,0*Q1`__T`````"`#DJ@`````(`./)`'6H)3P$__#^PP``
+M-(0`(P`$&OP\`@`!-&,`^'YB8@?<9```_@(``-QB``!\`_@[_Z,`*`P`MU(D
+M!``#/`0``32$AJ`\!2&-<$00`S2E[T'?HP`H``4L.#2E:]L`!2QX-*4TVP!%
+M`!T``"`0``0DN@"#("W>P@``R%'^F0````!\`O@[`((0*Q1`_I0`````?`/X
+M.V1C`&0`````?`+X.P!#$"L40/_]``````@`Y-@`````/`(``31C`"-^8F('
+M_L`````#&OPT8P#XW&0``/X"``#<8@``?`/X._^C`"@,`+=2)`0``SP$``$T
+MA(:@/`4AC7!$$`,TI>]!WZ,`*``%+#@TI6O;``4L>#2E--L`10`=```@$``$
+M)+H`@R`M`````-["``#(4?XW`````'P"^#L`@A`K%$#^,@````!\`_@[9&,`
+M9`````!\`O@[`$,0*Q1`__T`````"`#E!``````\!/_P_L,``#2$`",`!!K\
+M/`(``31C`/A^8F('W&0``/X"``#<8@``?![X.PP`MU(D!``#/`,``31CAJ`\
+M!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``(!``!"2Z`)X@+=["
+M``#(4?W%`````'P"^#L`@A`K%$#]P`````!\`_@[9&,`9`````!\`O@[`$,0
+M*Q1`__T`````"`#E+@`````\`P`!-$(`(WYC8@?^P`````(2_#1"`/C<1```
+M_@,``-Q"``!\%?@[#`"W4B0$``,\`P`!-&.&H#P$(8UP0Q`#-(3O00`$)#@T
+MA&O;``0D>#2$--L`1``=```@$``$)+H`E2`M`````-["``#(4?UF``"H+7P"
+M^#L`@A`K%$#]8B05__]\`_@[9&,`9`````!\`O@[`$,0*Q1`__T`````"`#E
+M6`````#?I0``/`00"P+@,"UDA$\8```X+0P"?KPT%\``"`#A\P````#?I0``
+M/`00"P+@,"UDA$\8```X+0P"?KPT%\``"`#>]P````#?I0``/`00"V2$3W``
+M`#@M#`)^O#07P``(`-[W`````-^E```\!!`+9(1/<```."T,`GZ\-!?```@`
+MX?,`````9[W_T/^P`````(`M_[\`*/^T`"#_LP`8_[(`$!"@``K_L0`(W[\`
+M*`(`$"W?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P#`$LP`"`B"T40``Q
+M`$"`+9(B`'@00``V`````)(B`-\00``S`````(XD`6@,`1E0CB4!;!!``#``
+M0)@MW$(`>!!``"T`````DB(`WA!``!0``)`M)!0`!`)`*"T"8"`M`B`P+0P`
+MW%0F4@`!`%`0)194__D`0(`MW[\`*`(`$"W?M``@W[,`&-^R`!#?L0`(W[``
+M``/@``AGO0`P`````(YE``0"8"`MW[\`*`(@,"W?M``@W[,`&-^R`!#?L0`(
+MW[````@`W%1GO0`P`````-XF`!`\!!`,/`40#&2$^0@,`GZ\9*4&\`@`Y93?
+MOP`H"`#EDR00__^.)@%H/`00#(XG`6P\!1`,9(3YB&2E!O`,`GZ\)!#__P@`
+MY93?OP`H9[W_R#P"__#_M0`H-$(`(_^T`"```A+\_[,`&#1".!C_L@`0/`,`
+M`?^Q``AD4O_H_[\`,#1C``'_L`````"8+8R0```D!``#?A2Z`S(0`!\`%*'X
+M?@-B!WZ"*@H"@J@M`I*(+7P%Q@?^I0``W$7(X/XC``#<0LC@#`"W4@`````\
+M!``!/`,AC32$AJ`T8^]!<$00`P`#'#@T8VO;``,<>#1C--L`0P`=```H$``%
+M++I\`O@[9E(`$`"B*"T"DI`M?`3X.V2$`^A\`_@[`&08*Q1@__T`````WD,`
+M`,AQ``4`````?`3X.P"%("L4@/_T`````,AP``TP=/__,H(`!!1```O?OP`P
+M```0+=^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`X)!3__]ZD```\
+M`O_P-$(`(SP#``$``A+\?@-B!WP$Q@<T0@#X_J0``"0$``/<10``)`4``?XC
+M``!\LYS'W$(```P`MU(`````/`0``3P#(8TTA(:@-&/O07!$$`,``QPX-&-K
+MVP`#''@T8S3;`$,`'0``*!``!2RZ?`+X.P"B*"T`````?`3X.V2$`^A\`_@[
+M`&08*Q1@__T`````WD(``,A1``4`````?`/X.P!E&"L48/_T`````,A0`!LP
+M0___,&00`!2``!D`8!`M``(B`S!#`$`48``0?).4AS!"(``00`#@)`(`"B0"
+M`&1\4X@'`F`0+=^_`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`
+M."0"`^A\4X@'"`#F;`)@$"TD`O__,I0`(!*`_^<``B(#WJ0``#P"__`T0@`C
+M/`,``0`"$OPT8P`*?`3&!WX#8@?^I```-$(`^-Q%```D!``#_B,``-Q"```,
+M`+=2`````#P$``$\`R&--(2&H#1C[T%P1!`#``,<.#1C:]L``QQX-&,TVP!#
+M`!T``"`0``0DNGP"^#L`@B`M?`+X.V1"`^@`````?`/X.P!B&"L48/_]````
+M`-Y"``#(40`%`````'P#^#L`9!@K%&#_\P````#>I```?$8$`S!%__\\`O_P
+M-$(`(R0#__]\!,8'`*88"_ZD```\!``!``(2_#2$``E^!&('-$(`^-Q%````
+M8*`M_B0``"0$``/<0@``#`"W4@`````\`P`!/`0AC31CAJ`TA.]!<$,0`P`$
+M)#@TA&O;``0D>#2$--L`1``=```@$``$)+I\`O@[`((@+7P"^#MD0@/H?`/X
+M.P!B&"L48/_]`````-Y"``#(40`%`````'P#^#L`9!@K%&#_]`````#>I```
+M?$8$`S!%__\\`O_P``4H@#1"`"-\!,8')`/__/ZD```\!``!`*88"P`"$OPT
+MA``%-$(`^-Q%``!^!&('_B0``"0$``/<0@``#`"W4@*#H"0\`P`!-&.&H#P$
+M(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`1``=```@$``$)+I\`O@[`((@
+M+7P"^#MD0@/H?`/X.P!B&"L48/_]`````-Y"``#(40`%`````'P#^#L`9!@K
+M%&#_]`````#>I```?$8$`S!%__\\`O_P-$(`(R0#__]\!,8'`*88"_ZD```\
+M!``!``(2_#2$``1^!&('-$(`^-Q%````8(`M_B0``"0$``/<0@``#`"W4@``
+M```\`P`!/`0AC31CAJ`TA.]!<$,0`P`$)#@TA&O;``0D>#2$--L`1``=```@
+M$``$)+I\`O@[`((@+7P"^#MD0@/H?`/X.P!B&"L48/_]`````-Y"``#(40`%
+M,$7__WP#^#L`9!@K%&#_]#!%__\D`___?$($`S*$#``4@``.`*(8"P(#$"0P
+M0P&`$&``$#!#`&`D`P!D``(2`WQSB`=\4Y2'"`#F;`)@$"U\4X@'"`#F;`)@
+M$"TD`@/H`!2BPWQ3B`=^DY2'"`#F;`)@$"T08/\9)`,`"@`"$8-\<X@'?%.4
+MAP@`YFP"8!`M9[W_D#P"__#_M@!0-$(`(_^U`$@``A+\_[0`0#1".!C_LP`X
+M)`4``?^R`#!D1O_P_[$`*#P5``3_L``@_[\`:/^^`&#_MP!8C)<``/^D``@`
+M%[(",O,`_P`6H?@"8!@M?H(B"@*"@"W_LP``,'(`'P*&F"UD1O_H?*3&!P*&
+MB"U\I&,'`!(J./X$``#<1,C@_F```-Q$R.#^)0``W$+(X'P>^#L,`+=2)`0`
+M`SP$``$TA(:@/`8AC7!$$`,TQN]!``8T.#3&:]L`!C1X-,8TVP!&`!T``!`0
+M``(4N@!>*"W>8@``R%$`#P``````````?`+X.P"B$"L40`%O/`00"WP$^#MD
+MA`!D?`+X.P!$$"L40/_]`````-YB``#H4?_T`````#P%``,\`O_P?D5B!S1"
+M`"/^)0````(J_#2^`/@D!``#W\(```P`MU(`````/`8``3P$(8TTQH:@-(3O
+M07!&$`,`!"0X-(1KVP`$)'@TA#3;`$0`'0``.!``!SRZ?`+X.V?%-Q@`XC@M
+M`H4P+7P$^#MDA`/H?`+X.P!$$"L40/_]`````-S"``!\1`1#$(``!0````!\
+M!?@[`*<H*Q2@__,`````%(`$%#!%___(4`/S``````"@\"W>!0``)`0``3P"
+M__``$C(X-$(`(WR%Q@<``A+\?(5C!S1"`/C^!0``W$4``/YD``#<1```_B8`
+M`-Q"``!\!?@[_Z4`&`P`MU(D!``#/`0``32$AJ`\!B&-<$00`S3&[T'?I0`8
+M``8T.#3&:]L`!C1X-,8TVP!&`!T``!`0``(4N@!%*"W>8@``R%$`#P``````
+M````?`+X.P"B$"L40`$8/`00"WP$^#MDA`!D?`+X.P!$$"L40/_]`````-YB
+M``#H4?_T`````#P%__`\!@`#-*4`(WY&8@?^)@````4J_#2E`/@D!``#W*(`
+M``P`MU+_I0`8/`8``3P$(8TTQH:@-(3O07!&$`,`!"0X-(1KVP`$)'@TA#3;
+M`$0`'0``.!``!SRZ?`+X.]^E`!@`XC@M9*4W&`*%,"T`````?`3X.V2$`^A\
+M`O@[`$00*Q1`__T`````W,(``'Q$!$,0@``%`````'P%^#L`IR@K%*#_\P``
+M```4@`/(,$7__\A0`\H`!10``%X0)7Q$V``\`@`#-$(#Y1""`.??HP`(W@0`
+M`"0&``$\`O_P`!(J.#1"`"-\Q,8'``(2_'S$8P<T0@#X_@0``-Q$```D!``N
+M_F0``-Q$``#^)0``W$(``'P7^#L,`+=2)`0``SP$``$TA(:@/`4AC7!$$`,T
+MI>]!``4L.#2E:]L`!2QX-*4TVP!%`!W>8@`````H$``%++K(40`.`+<H+7P"
+M^#L`HA`K%$`!FM^F``!\!/@[9(0`9'P"^#L`1!`K%$#__0````#>8@``Z%'_
+M]``````\%__P/`4``S;W`"-^16('_B4````7NOPV]P#X)`0``][B```,`+=2
+M`````#P%``$\!"&--*6&H#2$[T%P11`#``0D.#2$:]L`!"1X-(0TVP!$`!T`
+M`#@0``<\NGP"^#MFYC<8`.(X+0*&,"U\!/@[9(0#Z'P"^#L`1!`K%$#__0``
+M``#<P@``?$0$0Q"```4`````?`7X.P"G*"L4H/_S`````!2``U0P1?__R%`#
+M6SBE)Q`D`B<0)`0#Z`"%$`I\58@')`0#Z-X"``!^I8@#$*0!?``````D!``!
+M/`7_\'R"Q@<TI0`C?()C!_X"````!1+\-$(`^"0%`6W<1````!(B./YE``#<
+M10``_B0``-Q"``!\$/@[#`"W4B0$``,\!``!-(2&H#P%(8UP1!`#-*7O00`%
+M+#@TI6O;``4L>#2E--L`10`=WF(`````*!``!2RZR%$`#@"P*"U\`O@[`*(0
+M*Q1``4X\!!`+?`3X.V2$`&1\`O@[`$00*Q1`__T`````WF(``.A1__0`````
+M/!#_\#P$``,V$``C?D1B!_XD````$(+\-A``^"0$``/>`@``#`"W4@`````\
+M!``!/`,AC32$AJ`T8^]!<$00`P`#'#@T8VO;``,<>#1C--L`0P`=```H$``%
+M++I\`O@[9A`W&`"B*"T"D*`M?`/X.V1C`^A\`O@[`$,0*Q1`__T`````WH(`
+M`'Q#!$,08``%`````'P$^#L`A2`K%(#_\P`````48`,3,$3__\A0`N$`````
+M,((``RQ"``%\59S'W[\`:`*@$"W?O@!@W[<`6-^V`%#?M0!(W[0`0-^S`#C?
+ML@`PW[$`*-^P`"`#X``(9[T`<`+`*"UDA$_`WZ8`````."T``$`M#`)^O"0>
+M__\(`.?/``````+`*"UDA$_`WZ8`````."T,`GZ\)`@``3P"__\`7A`E?$38
+M`#P"``,T0@/E%(+_&]^C``@,`3AFC&0`"`P!.PX`0"`M``(0`'!$!*YP0@/N
+M`((0)1!``5@D'AHW/!?_\"0$``$V]P`C?)6<QP`7NOPV]P#X9NDW&`*)H"W>
+M`@``)`0``3/#__\`$BHX_Z,`""1F^`!\@L8')\/X`/^C`!!\@F,'_@(``##&
+M___>X@``_F8``-[B``#^)0``WN(``'P%^#O_I0`8#`"W4B0$``,\`P`!WZ4`
+M&#1CAJ!P0Q`#/`,AC31C[T$``QPX-&-KVP`#''@T8S3;`$,`'0``$!```A2Z
+M`$4H+=YB``#(40`.`````'P"^#L`HA`K%$``KM^F``!\!/@[9(0`9'P"^#L`
+M1!`K%$#__0````#>8@``Z%'_]``````\!0`#)`0``WY%8@?^)0``WN(```P`
+MMU(`````/`,``31CAJ!P0Q`#/`,AC31C[T$``QPX-&-KVP`#''@T8S3;`$,`
+M'0``,!``!C2Z?`+X.P#","U\!/@[9(0#Z'P"^#L`1!`K%$#__0````#>@@``
+M?$0$0Q"```4`````?`7X.P"F*"L4H/_S`````!2``D@P1?__R%`"B#"B`"`4
+M0``"`````'P5G,?>`@``)`0``=^F``@`$BHX_[X`"'R"Q@=\@F,'_@(``-[B
+M``#^9@``WN(``/XE``#>X@``?`7X._^E`!@,`+=2)`0``SP#``'?I0`8-&.&
+MH'!#$`,\`R&--&/O00`#'#@T8VO;``,<>#1C--L`0P`=```0$``"%+H`12@M
+MWF(``,A1``\``````````'P"^#L`HA`K%$``3-^F``!\!/@[9(0`9'P"^#L`
+M1!`K%$#__0````#>8@``Z%'_]``````\!0`#)`0``WY%8@?^)0``WN(```P`
+MMU(`````/`,``31CAJ!P0Q`#/`,AC31C[T$``QPX-&-KVP`#''@T8S3;`$,`
+M'0``,!``!C2Z?`+X.P#","U\!/@[9(0#Z'P"^#L`1!`K%$#__0````#>@@``
+M?$0$0Q"```4`````?`7X.P"F*"L4H/_S`````!2``>4P1?__R%`"'#"B`"`4
+M0``"`````'P5G,<GWA``)`):-Q?"_T;?OP!H`J`0+=^^`&#?MP!8W[8`4-^U
+M`$C?M`!`W[,`.-^R`##?L0`HW[``(`/@``AGO0!P/`00"P+`*"UDA$_````X
+M+0P"?KPD"``N"`#HE20")Q`\!!`+WZ@`"`+`*"UDA$_`#`)^O```."T(`.GF
+M)]X0`#P$$`O?J``0`L`H+62$3\`,`GZ\```X+0@`Z8L`````WZ8```+`*"UD
+MA$_````X+0P"?KPD"`%M```0+0@`Z/E\59S')`0``3P%__!\@L8'-*4`(WR"
+M8P<`!2+\_@(``#2$`/C<@@``)`4,`?YE````$A(XW(4``/XB``#<@@``?!#X
+M.PP`MU(D!``#/`0``32$AJ`\!2&-<$00`S2E[T$`!2PX-*5KVP`%+'@TI33;
+M`$4`'=YB`````"@0``4LNLA1``\`L"@M`````'P"^#L`HA`K%$``.M^F``!\
+M!/@[9(0`9'P"^#L`1!`K%$#__0````#>8@``Z%'_]``````\$/_P/`(``S80
+M`"-^0F('_B(````0@OPV$`#X)`0``]X"```,`+=2`````#P$``$\`R&--(2&
+MH#1C[T%P1!`#``,<.#1C:]L``QQX-&,TVP!#`!T``"@0``4LNGP"^#MF$#<8
+M`*(H+0*0H"U\`_@[9&,#Z'P"^#L`0Q`K%$#__0````#>@@``?$,$0Q!@``4`
+M````?`3X.P"%("L4@/_S`````!1@`:DP1/__R%`!R@````!\@@"#"`#H^7Q5
+MG,<\!!`+`L`H+62$3\```#@M#`)^O"0(#`$(`.H4```0+=X%```D!@`!/`3_
+M\``2$C@TA``C?,7&!P`$(OQ\Q6,'-(0`^/X%``#<A0``)`4!G_YE``#<A0``
+M_B(``-R"``!\'O@[#`"W4B0$``,\!``!-(2&H#P&(8UP1!`#-,;O00`&-#@T
+MQFO;``8T>#3&--L`1@`=```0$``"%+H`7B@MWF(``,A1``T\`@`#?`+X.P"B
+M$"L40`#]WZ8``'P$^#MDA`!D?`+X.P!$$"L40/_]``````@`ZIT`````/`7_
+M\#2E`"-^0F('_B(````%*OPTI0#X)`0``]RB```,`+=2_Z4`&#P&``$\!"&-
+M-,:&H#2$[T%P1A`#``0D.#2$:]L`!"1X-(0TVP!$`!T``#@0``<\NGP"^#O?
+MI0`8`.(X+62E-Q@"A3`M?`3X.V2$`^@`````?`+X.P!$$"L40/_]`````-S"
+M``!\1`1#$(``!0````!\!?@[`*<H*Q2@__(`````%(`!=C!%___(4`%K)`(`
+M$A"B`-W?HP`(C'<`!``7NP#>!0``)`(``3P$__`F_A(W-(0`(S/&__]\1<8'
+M``0B_'Q%8P<TA`#X_@4````2$CC<A0``_F8``-R%``#^(@``W((``'P%^#O_
+MI0`8#`"W4B0$``,\!``!-(2&H#P&(8UP1!`#-,;O0=^E`!@`!C0X-,9KVP`&
+M-'@TQC3;`$8`'0``$!```A2Z`$4H+=YB``#(40`-/`(``WP"^#L`HA`K%$``
+MH3P$$`M\!/@[9(0`9'P"^#L`1!`K%$#__0`````(`.L!`````#P%__`TI0`C
+M?D)B!_XB````!2K\-*4`^"0$``/<H@``#`"W4O^E`!@\!@`!/`0AC33&AJ`T
+MA.]!<$80`P`$)#@TA&O;``0D>#2$--L`1``=```X$``'/+I\`O@[WZ4`&`#B
+M."UDI3<8`H4P+7P$^#MDA`/H`````'P"^#L`1!`K%$#__0````#<P@``?$0$
+M0Q"```4`````?`7X.P"G*"L4H/_R`````!2``/,P1?__R%``[0````!\I`%#
+MW@8``"0"``$\!?_P)O<:-S2E`",RY___?$;&!P`%*OQ\1F,'-*4`^/X&````
+M$A(X?)6<Q]RD``#^9P``W*0``/XB``#<H@``?!#X.PP`MU(D!``#/`0``32$
+MAJ`\!2&-<$00`S2E[T$`!2PX-*5KVP`%+'@TI33;`$4`'0``*!``!2RZ`+`H
+M+=YB``#(40`-/!#_\'P"^#L`HA`K%$``2=^F``!\!/@[9(0`9'P"^#L`1!`K
+M%$#__0`````(`.MA`````#P"``,V$``C?D)B!_XB````$(+\-A``^"0$``/>
+M`@``#`"W4@`````\!``!/`,AC32$AJ`T8^]!<$00`P`#'#@T8VO;``,<>#1C
+M--L`0P`=```H$``%++I\`O@[9A`W&`"B*"T"D*`M?`/X.V1C`^A\`O@[`$,0
+M*Q1`__T`````WH(``'Q#!$,08``%`````'P$^#L`A2`K%(#_\P`````48`"9
+M,$3__\A0`(8P@@`@%$#^3-^_`&@(`.GI?!6<QSP$$`L"P"@M9(1/P```."T,
+M`GZ\)`@!GP@`ZMS?HP`(`L`H+62$3\#?I@`````X+0P"?KP#P$`M"`#K/R0$
+M``$\!!`+`L`H+62$3\```#@M#`)^O`+@0"T(`.GIW[\`:'+W`+*,8@`$`N(0
+M+3P7$`P``A!X9O<'8`@`ZMY^XKT*/`00"P+`*"T(`.D(9(1/<-^F```\!!`+
+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
+M9,8"(`P"3RP``#@M`F`@+11`_S<"("@M``````P!%:H``#`M/`80#`(`("T"
+M0"@M9,8".`P"3RP``#@M`F`@+11`_S8"("@M``````P!%&H``#`M/`80#`(`
+M("T"0"@M9,8"6`P"3RP``#@M`F`@+11`_S4"("@M``````P!&((D!@`!"`#Q
+M0CP&$`P\!!`,#`)_>F2$`5@(`/&,)`+__SP$$`P,`G]Z9(3]0`@`\8PD`O__
+M/`00#`P"?WIDA`&0"`#QC"0"__\\!!`,)`7__PP"?KQDA`'("`#QC"0"___?
+MI0``/`00#`P"?KQDA`'("`#QC"0"__\(`/'?``"@+3P$$`P\!1`,9(0">`P"
+M?KQDI0?H"`#QC"0"__\\!!`,/`40#&2$`I!DI0?H#`)^O`*`,"T(`/&,)`+_
+M_V>]_]C_L0`(`("(+?^_`"``H"`M_[(`$/^P````H(`M#`$X9O^S`!@"`"`M
+M#`$X>@!`D"T`0(`MCX*!S!!```H`````W[\`(`)`("W?LP`8`@`H+=^R`!#?
+ML0`(W[````@!$\9GO0`H#`#N\@(@("T00``3)`(``0P`\,0"("`M`B`@+0P"
+M6W0`0)@M`%,0)11`_^S?OP`@`D`@+=^S`!@"`"@MW[(`$"0"``'?L0`(W[``
+M`&>]`"@(`1/&KX*!S`@`\EJO@H',"`#OB`````!GO?_X_[\```P`[X@`````
+MW[\``&>]``@#X``(``(7PV>]_V@`@"@M_[\`D`P`[X@#H"`MCZ,``-^_`)`H
+M1```9[T`F`/@``@`9!`*`````&>]_V@`@"@M_[\`D`P`[X@#H"`MCZ,`1-^_
+M`)`H0@``9[T`F``"&`L#X``(`&`0+0@`\H0`````9[W_6/^P`)``@(`M_[\`
+MH`P!ETK_L0"8E$,`P"0"``$08@`7)`/__PP!ETH`````W$(!"!!``!@D!@"0
+M`Z`@+0P"9F```"@M`Z`@+0P`[X@"`"@M`$`8+20"__X08@`)W[\`H`1@``@`
+M8!`MCZ,```1@``F/H@`0$$``70````#?OP"@`&`0+=^Q`)C?L`"0`^``"&>]
+M`*@,`9=*`````)1"`,`L0P`9%&``%2Q#`!<L0P`F%&``'BQ#`"0D`P`I$$,`
+ML20#__\L0P`J$&``9"0#)Q$D`P`G$$,`C2Q"`"@40`#5)`+_]BX"``000`!*
+M`````"8#`!\(`/*R,&,`'Q1@`"4L0P`-)@,`"BQC``(48`$?`@`0+280``(D
+M`___+$(`!`@`\K("`A@+`````!!@_],D`___)`,`(!!#`)8`````+$,`(1!@
+M`&DD`P`B)`,`'A!#`+8`$!@K+$,`'Q!@`&<D`___)`,`'11#`$0`````````
+M`"0"__82`O_````8+28"``$D`___+A``!`@`\K(`4!@+$&``(2Q#`!,L0P`)
+M$&``2@`````D`P`#$$,`1P`````L0P`$$&``P"0#``8D`P`!$$/_K20#__\D
+M`P`"%$,`*@`````F$/_P)`/__RX"``0(`/*R`@(8"PP`UV(#H"`M"`#RLH^C
+M```F`P`*+&,``A1@`.,N`@`$%$``A0`````(`/*R)`/__Q1@`"$L0P`1)`,`
+M%!!#_Y0D`___+$,`%!1@_[0F`P`*)`,`%11#``XF`O_P)`/__R80__$L0@`$
+M"`#RL@("&`L00P!!+@0`!"Q#)Q(08`"&)`,G$R0#`"L00__G``````P!ETH`
+M````/`00##P%$`QDA`,`E$8`P`P"?KQDI0A@"`#RLB0#__\08/^S`````"0#
+M``X00P`&+$(`#A1`__`F$/_P"`#S"R0#__\`````)`+__SH%``$D!``))`,`
+M!`"%$`H(`/*R`%`8"P`````00__)+$(`(Q1`_\$D`___)`(`'`@`\K(`4!@*
+M`````"0"__82`O]:)`,`!B8#^``L8P$`%&``F'X#"0,F`_8`+&,!`!1@`)I^
+M`PD#)@/U`"QC`0`48`"8)@+T`"Q"`0`00/^Q`````'X#"0,(`/*R)&,``0``
+M```4@/]%`@`8+28"__`F!/_T)`/__RQ"``0(`/*R`((8"R8"``$N$``""`#R
+ML@!0&`LD`O_V$@+_.```&"TN`P`$$&``528"__"3@X'0)`(``Q!B`!L``"`M
+MHX*!T"0%`'$``#`M)`<``20(``$,`9X`)`D``WP1^#L,`+=2)`0``R0#*O@\
+M!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``&!```QRZ`'$8+7P"
+M^#L`0Q`K%$#__0`````(`/*R)@,!`0@`\K(``Q@O$@+_$20#``$D`O_W$@+_
+M#B0#``(,`3AF`@`@+0P!.PX`0"`M)`0`!0`"$``01/\&`@`8+2X#``0F!``#
+M)`+__P"#$`L(`/*R`$`8+0`````00P`))`/__R0#3B(40_]Z)`(`!R0#__\`
+M4!`C+A```P@`\K(`4!@+.A```B0"``0(`/*R`%`8"A!#_T8`````)`,`"!!#
+M_NPD`___)`,`!11#_VDN!``$%(#^YP(`&"TF`O_P)`/__R80__0L0@`$"`#R
+ML@("&`LL0@`$$$#_1"0"``R3@X'0$&(`&P``("VC@H'0)`4`<0``,"TD!P`!
+M)`@``0P!G@`D"0`,?!'X.PP`MU(D!``#)`,J^#P$(8UP0Q`#-(3O00`$)#@T
+MA&O;``0D>#2$--L`1``=```8$``#'+H`<1@M?`+X.P!#$"L40/_]``````@`
+M\K(F`P#Q"`#RLB1C`0$(`/*R)@,`"@@`\K(F`P`."`#RLB1C`@%^`PD#"`#R
+MLB1C`P$`````9[W_\/^P``#_OP`(#`$9=@#`@"T00``3W[\`"(Q#`"@$8``0
+M,&0`_R0%``$``QH[`(4@%)!"`#SJ$P`-<&,),Q1```T\`O^`?(3X`S1"`0<`
+M`A(\-$((D`!B&"7\9```W[\`"-^P```#X``(9[T`$!1`__4\`O^`?(3X`S1"
+M`0<``A(\-$((B`!B&"7\9```W[\`"-^P```#X``(9[T`$``$$@-GO?_(,$(`
+M_R0#`-[_M``@,)0`__^S`!A\DPP#_[(`$`#`D"W_L0`(`*"(+?^_`##_M0`H
+M$$,`!/^P``!\$P`[,)0`_WYS"<,,`1EV`B`H+1!``#T`0(`M$D``"R0"@`'?
+M@H'8$$``@P````!\`_@[W@0`$`!$$"T`8A`K%$``,]^_`#`D`H`!,I0`!P`"
+M%/@R,0`#`!2A.#1"P`<"D8@M``(7>``1C3@T0@`X`B(0+0`3F3R.`P`P`%.8
+M)=YB``#>!```$((`-0`#*CL\!/^`)`8``32$`0<P8P#_``0B/`!F&`0TA`B(
+M<*4),P"D*"5\8_@#_*,``&2$`'B.`P`P@@<`0@`#*/A\8PH#`*0@+0`#*3P`
+M@!@M?(:2`GP#*08DYP`0`*,8)=QD``!\Y*0'_&0``"0#`1@0PP`\`````!9`
+M``K^`@``W[\`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`X?`+X
+M._X"`!#?OP`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#@`````
+M/`3_@``#&/@TA`$',*4``P`$(CP`!2D\-(0)``!D&"T`8"`M?&.2`GP$*08`
+MI"`EW(8``'P&I`?\A@``)`0!&!!D`!T\`__PC@,`,#P%_X`TI0$')`8``0`%
+M*CPP9`#_?&,*`P"&(`0``QD\-*4(D'R$^`,`91@E_&0``!)`_\O^`@``"`#T
+MA```````````/`/_\#1C`",``QK\-&,`^`"C*"7<HP``$D#_P/X"```(`/2$
+M`````#1C`",``QK\-&,`^`"C*"7<HP``"`#THXX#`#``````CA4`)`P`MU(D
+M!``#/`,(,31C)NEP51`#``,<.#1C>-4``QRX9&/WSP`"$/H`0P`=```0$``"
+M$3H(`/1$_X*!V&>]_T#_L0"8`("(+?^P`)```(`M_[\`N/^T`+#_LP"H#`&7
+M2O^R`*"40P#`)`(``1!B`&_?OP"X!B``3P``*"T,`3AF`B`@+0(@("T,`3AZ
+M`$"0+0)`("T`0"@M#`$8K@!`F"T00``P`D`@+0P!&5`"8"@M$$``=@!`H"V.
+M@P``)`+__Q!B`$4"@"`M!&``'@``$"V.@@`0$$``40````#>@@"`$$``9@``
+M````0/@)`H`@+0!`@"T&(``%`D`@+0)@*"T"`#`M#`#T```````"0"`M#`$:
+MO`)@*"T00``)`````,H3``0`````C$,!(!!@``0`````W$4!,`P!+X8`0"`M
+M`@`0+=^_`+C?M`"PW[,`J-^R`*#?L0"8W[``D`/@``AGO0#`#`$[#CP0``P`
+M`A``+$,`$Q!@``P"`#`M)`,``0!#$!0\`P`#-&,0(`!#&"048``P,$-@3A!@
+M`#`\`P`$9A`#Z`(`,"T"0"`M"`#U"`)@*"T#H"`M)`8`D`P"9F```)@M)`+_
+M_Z^B`````)`M`Z"@+0*`("T,`.^(`B`H+1!``"0`````)`+__ZZ"```\`@`,
+M-$(#Z`8@_]%\4)@'`D`@+0)@*"T,`/0``@`P+0@`]1@"`!`M``````P`UV("
+M@"`M"`#T_]Z"`(`\`@`,W[0`L#1"`^C?LP"HW[(`H-^Q`)C?L`"0`^``"&>]
+M`,``````"`#U,&80)Q`T8X```$,0)#P#``PT8YQ`"`#U,`!B@`L(`/3YCH,`
+M``P!/JP"("`M"`#U!`!`@"TD!`"0#`"QJ@``*"T00``-`$"@+0!`("T``"@M
+M#`)F8"0&`)`D`O__KH(```)`("T"8"@M#`$9*`*`,"T(`/3VCH,``#P$$`P\
+M!1`,9(0">`P"?KQDI0B("`#U&```$"UGO?\X_[,`J```F"W_L@"@``"0+?^P
+M`)``@(`M_[\`P/^U`+C_M`"P!(``!_^Q`)@,`3AF``````(`("T,`3AZ`$"8
+M+0!`D"T,`9=*`````-Q#`0@48``6/`(4&=Q#GB`08``?``````!@^`D"`"`M
+M!@``!0!`B"T"8"`M`D`H+0P`]``"(#`M`B`0+=^_`,#?M0"XW[0`L-^S`*C?
+ML@"@W[$`F-^P`)`#X``(9[T`R`P`]-8"`"`MW[\`P-^U`+C?M`"PW[,`J-^R
+M`*#?L0"8W[``D`/@``AGO0#(``````P!ETH``(@ME$(`P"Q#`!D08``5+$,`
+M*BQ#`!<08``O)A4`"B0#``X00P"3+$,`#Q!@`',D`P`3)`,`"1!#`(XL0P`*
+M$&``AR0#``$00P!0/`(`#````````*`M"`#U]```J"T`````%&``#RQ#`"@D
+M`P`M$$,`;"Q#`"X08``\)`,`+B0#`"H00P!M)`,`+!1#__$`````)!0``0@`
+M]?0``*@M`````!!@`%(``*`M)`,`(1!#`&(D`P`F$$,`320#`!T40__E````
+M`'(5_:X(`/7T``"@+285``H``*`M+K4``@`````#H"`M```H+0P"9F`D!@"0
+M)`/__Z^C```#H"`MK[``"`P`[X@"`"@M%$``(0````"/H@``!$``$``````6
+M@``J`Z`@+1*@`!X`````#`#8I@``````0(@M?$($PP`"%/@00``%``````8!
+M_Y("8"`M"`#UI0(@$"T&`?^-``"(+0@`]:4"(!`M$$,`,R0#)Q,40_^X``"@
+M+20"``$6`O_8)!4``3P"``P(`/6E-$(#Z`P`\I("`"`M"`#V`:^B```,`-DD
+M``````!`B"U\0@3#``(4^!1`_^0`````"`#V$@``````````#`#G6```````
+M0(@M?$($PP`"%/@40/_:``````@`]A(`````"`#U]"05``$`````$$/_M2Q#
+M`!008``D)`,`%"Q"`!$00/^M````````H"T(`/7T``"H+0P!ETH``*`MD%4`
+MP@@`]?0NM0`#`````"8"``H``*`M+$(``A!`_Z8``*@M#`#RD@(`("T(`/7T
+M+%4``B1"__4`8A`K%$#_>P``H"T`````)`(``0``H"T6`O^9``"H+3P"``PT
+M0@/H?%&8!P@`]:4"(!`M%$/_;P``H"TD`@`"%@+_]P`````(`/6E```0+3P"
+M__!GO?^8-$(`(_^^`%@``A+\``3R.S1".!C_L``8`![Q^/^V`$@#PH`M_[$`
+M(`(`L"W_M0!`,+$`!O^T`#@PE0#__[,`,'S4!(/_OP!@`,"8+?^W`%!\%BD&
+M%B`!J/^R`"A^$)("WL(``,B@`21^8X@#?`+&!_["```08`(@)`(!&!("!"T\
+M`O_P/`/_\#P"``$T8P`C-$(``0`#&OPRM0`?-&,X`'ZB8@<#PX@M`B"0+7XQ
+MD@)\$BD&_D(``"0"`1@2(@0;``````P`MU(D!``#/`,``31CAJ`\!"&-<$,0
+M`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``(!``!"2Z?`+X.SP7__``@B`M
+M-O<`(P`7NOPV]S@0`]>X+7P7*08`````?`/X.V1C`^A\`O@[`$,0*Q1`__T`
+M````WN(``,A1``4`````?`/X.P!D&"L48/_T`````-[$``!\100#)`/__P!%
+M&`L`@!`M?`+&!_["```D`@$8$@(#YC!E__\\`@`!-$(`!'ZB8@?^0@``)`(!
+M&!(B`Y@\`O_P_Z4`$`P`MU(D!``#/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X
+M-(1KVP`$)'@TA#3;`$0`'0``(!``!"2Z?`+X.]^E`!``@B`M?`/X.V1C`^A\
+M`O@[`$,0*Q1`__T`````WN(``,A1``4`````?`/X.P!D&"L48/_T`````'Q$
+M!`,D`___`$08"S"E`0`PI?__,&/\'Q2@`S(``S@`?F*(`R0#`&0``A``$$,#
+M9B0#`^@00P/`)`,`"A!#`FP`$Q2ZWL(``##G__]\`L8'_L(``"0"`1@2`@)P
+M/`+_\"0#`1@T0@`C``(2_#1".`@#PJ`M`H#P+7Z4D@)\'BD&_\<``!*#`G4`
+M````)`(`!'ZB8@?^0@``)`(!&!(B`G8\`O_P?!/X._^E`!`,`+=2)`0``SP$
+M``$TA(:@/`8AC7!$$`,TQN]!WZ4`$``&-#@TQFO;``8T>#3&--L`1@`=W\(`
+M````(!``!"2ZR%$`#@"3("U\`O@[`((0*Q1```H`````?`/X.V1C`&1\`O@[
+M`$,0*Q1`__T`````W\(``.A1__0`````%*`"6P````#>P@``?`+&!_["```D
+M`@$8$@(#,CP"__`\`@`!?J)B!_Y"```D`@$8$B(#)SP"__`,`+=2)`0``SP#
+M``$T8X:@/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0TVP!$`!T``"`0``0D
+MNGP"^#L`@B`M`````'P#^#MD8P/H?`+X.P!#$"L40/_]`````-[B``#(40`%
+M`````'P#^#L`9!@K%&#_]`````!\1`0#)`/__P!$&`LD`@`!WL0``'Q#^\5\
+M0V,'?`3&!_[$``!\0TI')`(!&!("`S<P8____\,``"0"`1@2@@,M/`+_\``5
+MJC@D`@$8_E4``!(B`R,\`O_P?!#X.PP`MU(D!``#/`,``31CAJ`\!"&-<$,0
+M`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'=_"`````"`0``0DNLA1``\`D"`M
+M`````'P"^#L`@A`K%$``"]^_`&!\`_@[9&,`9'P"^#L`0Q`K%$#__0````#?
+MP@``Z%'_]`````#?OP!@```0+=^^`%C?MP!0W[8`2-^U`$#?M``XW[,`,-^R
+M`"C?L0`@W[``&`/@``AGO0!H?`+&!_["```D`@$8$@(!JCP#__`\`@`!-&,`
+M(S*U`!\``QK\?J)B!S1C.``#PX@M`B"0+7XQD@)\$BD&_D(``"0"`1@2(@&O
+M``````P`MU(D!``#/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@T
+MA#3;`$0`'0``*!``!2RZ?`+X.SP$__``HB@M-(0`(P`$(OPTA#@0`\0@+7P$
+M*08`````?`/X.V1C`^A\`O@[`$,0*Q1`__T`````W((``,A1``4`````?`/X
+M.P!E&"L48/_T`````'Q$!`,D`___`$08"R0"``%^9H@#)`4#Z'Q#^\5\`V,'
+M?$-*1WZ#0@<0Q0*.``,@`"0#`&00PP+9`````"0"``H0P@&B`````-["```P
+MA/__?`+&!_["```D`@$8$@("BSP"__`D`P$8-$(`(P`"$OPT0C@(`\+P+0/`
+M@"U_WI("?!`I!OX$```3PP*0```````5JC@D`@$8_E4``!(B`I$\`O_P?!'X
+M.PP`MU(D!``#/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;
+M`$0`'0``(!``!"2Z`)$@+=X"``#(4?^"W[\`8'P"^#L`@A`K%$#_?M^_`&!\
+M`_@[9&,`9`````!\`O@[`$,0*Q1`__T`````"`#X&`````#>PP``?A"2`GP#
+MQ@?^PP``)`,!&!(#`IP`````/`/_\#P"``$T8P`C-$(`!``#&OPRJ``?-&,X
+M`'T"8@<#PY`M`D"X+7Y2D@)\%RD&_N(``"0"`1@20@*>`````/^E`!`D!``#
+M#`"W4O^H``@\`P`!/`0AC31CAJ`TA.]!<$,0`P`$)#@TA&O;``0D>#2$--L`
+M1``=```X$``'/+I\`O@[/`3_\`#B."W?J``(-(0`(]^E`!``!"+\-(0X$`/$
+M("U\!"D&`````'P#^#MD8P/H?`+X.P!#$"L40/_]`````-R"``#(40`%````
+M`'P#^#L`9Q@K%&#_]`````!\1`0#)`/__P!$&`MR,0"NWL(``#!C__]\`L8'
+M?B-:Q_["``!^(U*')`(!&!("`F(P8___/`3_\#2$`",`!"+\-(0X"`/$$"T`
+M0(@M?$*2`GP1*0;^(P``)`,!&!!#`E,`````)`(`!'T"8@?^X@``)`(!&!)"
+M`D@\`O_P?!+X._^E`!`,`+=2)`0``SP#``$T8X:@/`0AC7!#$`,TA.]!WZ4`
+M$``$)#@TA&O;``0D>#2$--L`1``=```@$``$)+H`DB`MWB(``,A1_>@`````
+M?`+X.P""$"L40/WD`````'P#^#MD8P!D`````'P"^#L`0Q`K%$#__0`````(
+M`/B8`````!("`O\\`O_P/`/_\#P"``$T8P`C-$(``0`#&OPRLP`?-&,X`'YB
+M8@<#PX@M`B"0+7XQD@)\$BD&_D(``"0"`1@2(@,(``````P`MU(D!``#/`,`
+M`31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``(!``!"2Z
+M?`+X.SP7__``@B`M-O<`(P`7NOPV]S@0`]>X+7P7*09\`_@[9&,#Z'P"^#L`
+M0Q`K%$#__0````#>X@``R%$`!0````!\`_@[`&08*Q1@__0`````WL,``'Q$
+M!`,D%?__`$2H"P!@$"U\`L8'_L(``#*U__\D`@$8$@("TP*@H"T\`@`!-$(`
+M!'YB8@?^0@``)`(!&!(B`L<\`O_P#`"W4B0$``,\`P`!-&.&H#P$(8UP0Q`#
+M-(3O00`$)#@TA&O;``0D>#2$--L`1``=```@$``$)+I\`O@[`((@+0````!\
+M`_@[9&,#Z'P"^#L`0Q`K%$#__0````#>X@``R%$`!0````!\`_@[`&08*Q1@
+M__0`````?$0$`R0#__\`1!@+?J@#P]['``!^I@,#?J4"PWZD`X,P8O__?K4#
+M0WT"2D<`X!@M?,(QAWP#Q@?^PP``?*(I1WR"0@<D`P$8?J(YQQ(#`HTP0O__
+M/`/_\#1C`",``QK\-&,X"`/#J"T"H/`M?K62`GP>*0;_P@``)`(!&!*B`K<`
+M````)`(`!'YB8@?^0@``)`(!&!(B`JP\`O_P?`/X._^C``@,`+=2)`0``SP$
+M``$TA(:@/`4AC7!$$`,TI>]!WZ,`"``%+#@TI6O;``4L>#2E--L`10`=```@
+M$``$)+H`@R`MW\(``,A1`'X`````?`+X.P""$"L40`!Z`````'P#^#MD8P!D
+M`````'P"^#L`0Q`K%$#__0`````(`/E&`````#P"__`T8P`C-$(`(P`#&OP`
+M`A+\-&,X`#1"`/C<0@```\.(+0(@D"T\`@`!,K4`'WP2*09^HF('?C&2`OY"
+M```D`@$8%B+^4P`````(`/>[W&+(^'Z',8<X0@`!?$<I1]["````!S@`,.?_
+M_WP"Q@?^P@``)`(!&!8"_9(\`O_P)`,!&#1"`",``A+\-$(`^-Q"```\`O_P
+M-$(`(P`"$OPT0C@(`\*@+0*`\"U^E)("?!XI!O_'```6@_V-`````-Q"R/`D
+M`@`$?J)B!_Y"```D`@$8%B+]C#P"__`T0@`C``(2_#1"`/@(`/<8W$(``#"$
+MW[\(`/?Q``0@`-["``"7LP`&?`+&!_["```D`@$8$@(!_3P"__#_TP``)`(!
+M&!*"`?X\`O_P)`(`"7ZB8@?^0@``)`(!&!(B`?X\`O_P?!/X.PP`MU(D!``#
+M/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``(!``
+M!"2Z`),@+=_"``#(4?V#`````'P"^#L`@A`K%$#]?P````!\`_@[9&,`9```
+M``!\`O@[`$,0*Q1`__T`````"`#YM@````#JB`$8`````-["``!\`L8'_L(`
+M`"0"`1@2`@(,/`+_\#P"``%^8F('_D(``"0"`1@2(@(!/`+_\`P`MU(D!``#
+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
+M-$(`(P`"$OPT0@#X"`#YG-Q"```T0@`C``(2_#1"`/C<0@``"`#YH20"``DT
+M0@`C``(2_#1"`/@(`/FFW$(``#1"`",``A+\-$(`^-Q"```(`/BK/`/_\#P#
+M__`T8P`C``,:_#1C`/C<8P``"`#Y(SP#__`T0@`C``(2_#1"`/@(`/COW$(`
+M`#P"__`T0@`C``(2_#1"`/C<0@``"`#XZ3P"``$(`/BZW&+(^#1"`",``A+\
+M-$(`^`@`^@?<0@``-$(`(P`"$OPT0@#XW$(```@`^@,`$YHX/`+_\#1"`",`
+M`A+\-$(`^`@`^?[<0@``-$(`(P`"$OPT0@#X"`#YU-Q"```T0@`C``(2_#1"
+M`/C<0@``"`#YSSP"``$T0@`C``(2_#1"`/@(`/DTW$(``-QBR/`(`/DO)`(`
+M!#1"`",``A+\-$(`^-Q"```(`/HV_Z4`$#1"`",``A+\-$(`^-Q"```(`/HO
+M/`(``0````!GO?_H_[$`"`"`B"W_L```_[\`$`P!ETH`H(`ME$(`P"1"__0P
+M0___+&,`'A!@``S?OP`0/`,0#'!">/)D8P78?&(2"@!```@``````````!8@
+M``/?OP`0)!```M^_`!`"`!`MW[$`"-^P```#X``(9[T`&``````,`3L.`B`@
+M+=^_`!#?L0`(``(0`'!"`>\``A`C`%`0)`!`@"T"`!`MW[````/@``AGO0`8
+M`````-^_`!!R,0!O`!&((P(PB"0"((`MW[$`"`(`$"W?L````^``"&>]`!C?
+MOP`0)!```=^Q``@"`!`MW[````/@``AGO0`8`````-^_`!``$8@K`!&((P(P
+MB"0"((`MW[$`"`(`$"W?L````^``"&>]`!AGO?_P_[```/^_``@,`9=*`("`
+M+91#`,`D`@`,$&(`4@`````,`9=*`````)1#`,`D`@`?$&(`-@`````,`9=*
+M`````)1#`,`D`@`+$&(`8``````,`9=*`````)1#`,`D`DXB%&(`)=^_``@\
+M!?_\/`+_\#2E``ER$`;R``4L>#1"`"-DI8`+``(2_``%+S@T0@#X-*4`("0$
+M`!!DHP`H`@4H+?R@```"`S`MW$4``&1E_^#\Q````@4H+=Q&``!D9@`(_*``
+M``(&,"W<10``9&7_Z/S$```"!2@MW$8``&1C`!#\H````@.`+=Q#``#^!```
+MW$(``-^_``@``!`MW[````/@``AGO0`0`````!8`__D\`__\/`+_\#1C``DT
+M0@`C``,<>"0$`!!D8X`+``(2_``#'S@T0@#X-&,`2/QD``#<10``_&3_V-^_
+M``C<0@`````0+=^P```#X``(9[T`$``````6`/_C/`/__#P"__`T8P`)-$(`
+M(P`#''@``A+\9&.`"S1"`/@``Q\X)`4`##1C`%#\8```9&3_V-Q&``#\8/_8
+MW$,``/R%`"#<0P``_(7_^-^_``C<0@`````0+=^P```#X``(9[T`$!8`_\K?
+MOP`(#`#RD@``("TD`___$$/_Q#P%__```H(#-*4`(P`0@?@`!2K\,$(`_S2E
+M.!@"!2`M`(`8+7R&D@)\`RD&W&0``'P$Q@?\9```)`,!&!##`&0`````/`3_
+M\#P#``$TA``C-&,``@`$(OQ\0V('-(0X``($$"T`0"@M?$*2`GP%*0;\HP``
+M)`,!&!!#`%,`````#`"W4B0$``,\`P`!-&.&H#P$(8UP0Q`#-(3O00`$)#@T
+MA&O;``0D>#2$--L`1``=```H$``%++I\`O@[/`3_\`"B*"TTA``C``0B_#2$
+M.!`"!"`M?`0I!GP#^#MD8P/H?`+X.P!#$"L40/_]`````-R"``#(40`%````
+M`'P#^#L`91@K%&#_]`````#(4/^`,$/__R0"`4,48O]^W[\`"#P0$`P,`G[B
+M)`0`"@P"?WIF!`,@/`00#`P"?WIDA`,H/`00#`P"?WIDA`-X/`00#`P"?WID
+MA`/(#`)_>F8$`R`,`G[B)`0`"GP#^#L\`CN:-$+*``!B&"U\`O@[`$,0*Q1`
+M__T\`O_P/`/__#1C``DT0@`C``,<>"0$``5D8X`+``(2_``#'S@T0@#X-&,`
+M(/QD``#<10``_&0`*-Q"```(`/Q[W[\`"`@`_-;<@LCXW*/(X`@`_,@\!/_P
+M`````&>]_]C_L``(_[\`(/^R`!@,`9=*_[$`$-Q0`0@2``!"/`40#`(`("T,
+M`D^29*4$$`1``&\`0(@M/`80#`(`("T"("@M9,8$,`P"3RQGIP`$$$``8P!`
+MD"V/H@`$&$``8``````\!A`,`@`@+0(@*"UDQ@1`9Z<`!`P"3RP``(`M$$``
+M!(^D``0D`P`$$(,`8``````\!1`,`D`@+0P"@8IDI018%$``#@)`("T\!`"W
+M+@,``32$&P!R!(`J`@.`)1(``&LD`@`#W[\`(-^R`!C?L0`0W[``"`/@``AG
+MO0`H/`40#`P"@8IDI02@%$``-CP$$`P\`P"W-&,;`!(#__(D8P`!`@,8*Q!@
+M`$\\`P%N$@``%20"``(\!!`,`@`H+0P"?KQDA`2P#`&72@````"40P#`)`(`
+M(Q!B`!LL8@`D%$``#R0"`!0D`@`M$&(`%B0"3B(08@`4)`0`)1!D_]H``!`M
+M)`(``M^_`"#?L@`8W[$`$-^P``@#X``(9[T`*!!B``DL8@`4%$#_]R0"``(D
+M8__B)`(``0!#&"L48/_R)`(``@````#?OP`@)`(``]^R`!C?L0`0W[``"`/@
+M``AGO0`H``````)`*"T,`GZ\9(0$Z`@`_7@``````````#P2$`P(`/U'9E($
+M"``````\!1`,`@`@+0P"3Y)DI00@!$#_R0!`B"T(`/T]/`80#(Q"``!\4#P#
+M?$,^`P`#'C@`$(0XKZ(```(#@"4P0_\``@.`)3!#`/\`$(``"`#]4P(#@"4`
+M````-&,V`!(#_YXD`@`!/`("W#1";``6`O^O/`00#`@`_8@D`@`"`````#P$
+M$`P,`G]Z9(0$8`@`_7@``````````&>]__#_L```_[\`"`P!ETH`@(`ME$,`
+MP"0"`"D08@`(+&(`*A1```PD`@`5)`(`+1!B``\D`@`R%&(`"=^_``C?OP`(
+M``"`+0(`$"W?L````^``"&>]`!`08O_YW[\`"`(`$"W?L````^``"&>]`!`,
+M`9=*`````-^_``B00@#"+$(``P`"$",`4!`D`$"`+0(`$"W?L````^``"&>]
+M`!``!!(#9[W_J#!"`/\D`P#>_[,`(#"3`/__L@`8?)(,`_^Q`!``P(@M_[``
+M"`"@@"W_OP!0_[X`2/^W`$#_M@`X_[4`,!!#``3_M``H?!(`.S"3`/]^4@G#
+M#`$3Q@(`*"T00`"6```8+3)W``<D'H`!,@(``P`7N3@`'O3X`N*X+3?>P`<`
+M%[TX`![W>``2L3P"_O`M/!7_\`/6\"4VM0`CW\(````5JOPVM0#X`M6H)7P"
+M<T?_P@``WJ(``'P#^#LD!``#)!2``0P`MU+_HP``)`0G$#P%(8UP1!`#-*7O
+M00`%+#@`%*3X-*5KVS:4P`<`!2QX`!2F>#2E--LVE#@!WZ,````4H3@`10`=
+M`O2@+0``(!`"EJ`EWH(````$)+KH3``.`(,@+7P"^#L`@A`K%$``LP````!\
+M`_@[9&,`9'P"^#L`0Q`K%$#__0````#>@@``R$S_]`````!\`_@[_Z,```P`
+MMU(D!``#)`0G$-^C```\!2&-<$00`S2E[T$`!2PX-*5KVP`%+'@TI33;`$4`
+M'=Z"`````"`0``0DNNA-``X`@R`M?`+X.P""$"L40`"3`````'P#^#MD8P!D
+M?`+X.P!#$"L40/_]`````-Z"``#(3?_T`````"0%@`%^(P3#``4L^``#'/@T
+MI<`'+&8``=Z"````!2ZX-*5@#P`%*/@"Y2@M`+8H)=RD```48``W?,1:QWXC
+MB`,D!@!D``,8`!!F`#DD!@/H$&8`620&``H49@`6)`.``20&``$``QSX?`((
+M1S1CP`=\PD('``,>.'P"&,<T8QP1``,9>`+C,"UD8P`(`-8P)0+CN"TD`P!`
+M`O:P)?S#``#>HP``)`,`&?[```!\9#`'WJ,``/RD```D!``#WJ,`````&"W^
+M@@``WJ(``-Z"``#?P@``?()S1__"``#>H@``W[\`4`!@$"W?O@!(W[<`0-^V
+M`#C?M0`PW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`6'XC!(,D!@!D?&(0
+MAWXCB`,``Q@`%&;_R20&`^@D`X`!)`8`!0`#'/A\Q#`'-&/`!WP""$<``QXX
+M?`)"!S1C'!%\`AC'``,9>`+C,"UD8P`(`-8P)0+CN"TD`P!``O:P)?S#``#>
+MHP``_L```-ZC``#\I```)`0``]ZC`````!@M_H(``-ZB``#>@@``W\(``'R"
+M<T?_P@``WJ(```@`_JC?OP!0)`:``20#``$`!C3X?&((1S3&P`=\`D('``8V
+M.'QB&,<TQAP1?&0P!P`&,7@"YA@M9,8`"`!V&"4"YK@M)`8"``+VL"7\9@``
+MWJ,``,A"``0D`R``_L````@`_IS>HP``_L,```@`_IS>HP``/`00#`)`*"UD
+MA`BP`F`P+0P"?KP"`#@M"`#^IR0#__\`!!(#9[W_L#!"`/\D`P#>_[,`&#"3
+M`/__L@`0?)(,`_^Q``@`H(@M_[````"`@"W_OP!(_[X`0/^W`#C_M@`P_[4`
+M*!!#``3_M``@?!(`.S"3`/]^4@G#`@`@+0P!$\8"("@M%$``#@``&"W?OP!(
+M`&`0+=^^`$#?MP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AG
+MO0!0/!;_\#)T``<VU@`C,B(``P`4H3@`%K;X`H*@+3;6X`,`%*4X`!:T.`*6
+ML"T`$I$\`M*P)3P5__#>W@``#`&72C:U`".40P#`)`(``1!B`)XD`@`!`!6J
+M_'Q>>\<VM0#X_MX```)5J"7>H@``?!?X.PP`MU(D!``#)`,G$#P$(8UP0Q`#
+M-(3O00`$)#@TA&O;``0D>#2$--L`1``=WL(`````(!``!"2ZR$\`#@"7("U\
+M`O@[`((0*Q1``'$"8"@M?`/X.V1C`&1\`O@[`$,0*Q1`__T`````WL(``.A/
+M__0`````)`*``0(`("T``A3X`B`H+31"P`<``A=X`H(0+0!2$"7<5P``#`$6
+M)@````#>W@``%$``3"0"``%\7C&'?!YJQ_[>``#>H@``)!Z``0(`("T`'O3X
+M`B`H+0P!%$(WWL`'`![VN`(`("TWWF`/`B`H+0`>\/@,`124`$"P+0*>*"T`
+MLB@E```8+=RD``!^Q$I'?$1"!_RD``#>H@``%L#_D]^_`$@"`"`M#`$8K@(@
+M*"T00/^-`L`8+0P!ETH`````E$0`P"0"``$0@O^'`L`8+3+W!P`D`@4`$N+_
+MA-^_`$A\$/@[)`0``PP`MU)GWO^0)`,G$#P$(8T"GJ`M<$,0`S2$[T$`!"0X
+M`I*0)32$:]L`!"1X-(0TVP!$`!T``"`0``0DN@"0("W>0@``Z$7_;@``&"U\
+M`O@[`((0*Q1``"T"8"@M?`/X.V1C`&1\`O@[`$,0*Q1`__T`````"`#_JP``
+M```RY`<`)`,%`'Q>2D<0@P`$```0+0(`("T,`1BN`B`H+7Q>8P=\'EK'_MX`
+M`-ZB```(`/]T)!Z``3P$$`L"(#`M#`)^O&2$5&#?OP!(W[X`0"0#___?MP`X
+M`&`0+=^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`4``5JOPV
+MM0#X"`#_80)5J"4\!!`,9(0(Z`P"?KP"(#`M"`#_&R0#__]\A8@#)`,``7"B
+M`J\XI@!D``(0(SP%__`P0@`"-*4`(P!&&`L`!2SX9[W_V#2E`-O_L@`0``4N
+M./^P``!\D`3#_[\`(`(`("W_LP`8``"0+?^Q``@`8#`MW*(``-RQ`#`2```#
+M```````"D"<`$I?^RB(`"SP%__!\`GO'-*4`(P"@&"T`!2SX-*4`VP`#&OP`
+M!2XX-&,`^/RB``#<8P``$(``>SP#__`$00`%?C$(`S(Q`/\2)@!2-&,`(SP#
+M__`D!0`!-&,`(P!@("T``QSX-&,`VP`$(OP``QXX-(0`^-QB``!\HO_&)`4!
+M`/QB``#<@@``W'$`,'S1"`?\<0`PW((``-QB`!!\HKO'_&(`$-R"``#<8@`0
+M?`((!_QB`!#<@@``W&(``'P"6L?\8@``W((``'P3^#L,`+=2)`0``SP$(8TT
+MA.]!``0D.``"&'@TA&O;``(0^``$)'@`8A@M-(0TVP!D`!T``!@0``,<N@!S
+M&"T`````?`+X.P!#$"L40/_])`4``3P#__`T8P`C.C$`!`!@("T``QSX-&,`
+MVP`$(OP``QXX-(0`^#1C`"!R,?BZW&(``'P"_\;\8@``W((``-QB_^!\HCG'
+M_&+_X-R"``#<8O_@?B)[Q_QB_^#<@@``W&+_X'RB$(=\H@`'_&+_X-R"```\
+M`__P-&,`(P!@("T``QSX-&,`VP`$(OP``QXX-(0`^-QB``!^`AC'?@((1_QB
+M``#<@@``$D``#SP"__`\!/_P-$(`(S2$`",``A3X)`4``31"`-L`!"+\``(6
+M.#2$`/@T0@$`W$,``'RC``?\0P``W((``-^_`"```!`MW[,`&-^R`!#?L0`(
+MW[````/@``AGO0`H`````#1C`",`8"`M``,<^#1C`-L`!"+\``,>.#2$`/C<
+M8@``?@(8QWX""$?\8@``W((``'P0^#L,`+=2)`0``R0#)Q`\!"&-<$,0`S2$
+M[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``&!```QRZ`'`8+0````!\`O@[`$,0
+M*Q1`__T`````/`/_\#1C`",`8!`M``,<^#1C`-L``A+\``,>.#1"`/C\8```
+M"`$`;]Q"````````9[W_\/^P``#_OP`(#`&72@"`@"V40P#`)`(``1!B`!@F
+M!/_[?!#X.RR"``X40``8/`(0#`P`MU(D!``#-`/#4#P$(8UP0Q`#-(3O00`$
+M)#@TA&O;``0D>#2$--L`1``=```8$``#'+H`<!@M`````'P"^#L`0Q`K%$#_
+M_0````#?OP`(W[````/@``AGO0`0<(3X\F1""C!\1"(*`(``"```````````
+M#`"W4B0$``,\`P`#-&/0D#P$(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`
+M1``=```8$``#'+H`<!@M`````'P"^#L`0Q`K%$#__=^_``C?L````^``"&>]
+M`!``````#`"W4B0$``,T`\-0/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0T
+MVP!$`!T``!@0``,<N@!P&"U\`O@[`$,0*Q1`__W?OP`(W[````/@``AGO0`0
+M``````P`MU(D!``#/`,``31CAJ`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@T
+MA#3;`$0`'0``&!```QRZ`'`8+0````!\`O@[`$,0*Q1`__W?OP`(W[````/@
+M``AGO0`0```````$&@,D`@#>,&,`_Q!B`!(D`X`!,(0`_P`#'/@PA``'-&/`
+M!P`$)C@``Q]X-&,0`'P"`#M\0@G#`(,@+0`"$3P`@B`EW((``'Q"$`,#X``(
+M,$(`_P`````P@P#_?((,`P!@("TD`X`!``,<^#"$``<T8\`'``0F.``#'W@`
+M`A$\-&,0``"#("T`@B`EW((``'Q"$`,#X``(,$(`_P``````!!(#)`,`WC!"
+M`/\00P`B,((`_WP#`#LP@@#_?&0)PS!"``<D`X`!``(1.#"E``,``QSX`$4H
+M+31CP`<`!2TX``,?>``$(3P`HQ@M```0+0!D&"7<8P``?&,2`S!C`/\L9@`&
+M$,``"0`````\`A`,<&,0\F1""J!\0QH*`&``"```````````)`(`!0/@``@`
+M``````````@!`51\A`P#)`.``20"``\``QSX-&/`!P`#'K@T8R`-``,8^`"C
+M*"TD`P`2`*0@)=R$```PA``"`^``"`!D$`L#X``()`(``0/@``@D`@`&`^``
+M""0"``PD`H`!``(4^#1"P`<``A:X-$(@#0`"$/@`HB@M`*0@)=R"``!P0OAZ
+M,$(``0/@``@D0@`0```````%$@-GO?^(,$(`_R0#`-[_M@!8,+8`__^U`%!\
+MM0P#_[(`.`"`D"W_L``H`*"`+?^_`'#_O@!H_[<`8/^T`$C_LP!`$$,`!/^Q
+M`#!\%0`[,+8`_WZU"<,"`"`M#`&,`@)`*"W_H``(,M$`!Q9```O_H@`0)`*`
+M`0`1'C@``A3X-$+`!P`"%WA\8A(*,$('`#A"!0`L0@`!_Z(`"`(`("T,`0%,
+M`D`H+0`"\``GPO_Q+$(`!!1``?S_H```)!.``3)"``,`$8$X`!.<^`("@"TV
+M<\`'`!"%.``3GW@D!8`!`!6Y/`(3F"T`!2SX`G>8)32EP`?>8P````4NN#P1
+M__`TI2!#-C$`(P`%*/@`$8K\`@6@+7P#<T<V,0#X_F,```+QB"7>(@```I>@
+M)=Z#```D`@`!?$-C!_Z#``#>(@``#`&72O^E`!B40P#`)`(``1!B`2+?I0`8
+M9*7^L`(%&"T`=Q@EW&(``.A,`5QDH@`()\+_[RQ"``(40`'1)`*``=YC```\
+M"/_P-0@`(P`(1O@U".`!``A$.`((0"T!%T`EW0(``,A.`7]SQ0%N?![X._^H
+M`!@,`+=2)`0``R0#)Q#?J``8/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0T
+MVP!$`!W=`@`````@$``$)+K(3P`.`)X@+7P"^#L`@A`K%$`!7"0"__]\`_@[
+M9&,`9'P"^#L`0Q`K%$#__0````#=`@``Z$__]`````#?HP``$&`!=0````!\
+M'O@[#`"W4B0$``,D`R<0/`4AC20$@`%P0Q`#-*7O00`%+#@`!"3X-*5KVS2$
+MP`<`!2QX``0F>#2E--LTA!`#``0A.`!%`!T"!"`M```H$`"7("7<@@````4L
+MNNA```\`OB@M`````'P"^#L`HA`K%$`!,B0"__]\`_@[9&,`9'P"^#L`0Q`K
+M%$#__0````#<@@``R$#_]``````D`H`!)`0``0`"%/@T0L`'``(6N#1"(`<`
+M`A#X`@(0+0!7$"7<0P``?(-[Q_Q#``#>(@``)!Z``20#``$`'O3X-][`!P`>
+M]C@WW@@!`![Q>`(>\"T#U_`EW\(``'QB4H?_P@``WB(``-_"``#H2@$,)`+_
+M_WP#^#O_HP`@#`"W4B0$``,D!"<0WZ,`(#P%(8UP1!`#-*7O00`%+#@D!(`!
+M``0D^#2E:]LTA,`'``4L>#2E--L`!"9X-(0@`P!%`!T`!"$X```H$`($("T`
+MER`EW((``#!"``,`!2RZ$$``#P"C*"U\`O@[`*(0*Q1``.PD`O__?`/X.V1C
+M`&1\`O@[`$,0*Q1`__T`````W((``#!"``,40/_S`````'P#^#O_HP`@#`"W
+M4B0$``,D!"<0/`8AC20%@`%P1!`#-,;O00`&-#@`!2SX-,9KVS2EP`<`!C1X
+M``4M.#3&--LTI0$!WZ,`(``%*G@`1@`=`@4H+0``(!``MR@EW*(````$)+KH
+M0``/`(,@+0````!\`O@[`((0*Q1``,(D`O__?`/X.V1C`&1\`O@[`$,0*Q1`
+M__T`````W*(``,A`__0`````?`/X._^C`"`D!``##`"W4O^E`!@D!"<0/`8A
+MC7!$$`,TQN]!WZ4`&``&-#C?HP`@-,9KVP`&-'@TQC3;`$8`'=RB`````"`0
+M``0DNNA!``X`@R`M?`+X.P""$"L40`"@)`+__WP#^#MD8P!D?`+X.P!#$"L4
+M0/_]`````-RB``#(0?_T`````-_"``#H2@"3)!Z``20#``$`'O3X-][`!P`>
+M]K@WWB`!`![P^`(>\"T#U_`EW\(``'QB$(?_P@``WB(``'P#^#O_HP`@#`"W
+M4B0$``,D!"<0WZ,`(#P%(8UP1!`#-*7O00`%+#@TI6O;``4L>#2E--L`10`=
+MW\(`````(!``!"2ZZ$(`#P"#("T`````?`+X.P""$"L40`!P)`+__WP#^#MD
+M8P!D?`+X.P!#$"L40/_]`````-_"``#(0O_T`````-^C```08``H)`*``0`"
+M%/@T0L`'``(6N#1"(`L``A#X9$/_X`("$"T"`X`M`%<0)=Q"```"%X`EW@(`
+M`,A/`/,\!!`,Z$X`PP````!\$O@[#`"W4B0$``,D`P7</`0AC7!#$`,TA.]!
+M``0D.#2$:]L`!"1X-(0TVP!$`!T``!@0``,<N@!R&"T`````?`+X.P!#$"L4
+M0/_]`````-X"``#H3@`])`+__]Z#```D!``#```0+7P#8P?^@P``WB,``-YC
+M``!\@W-'_F,``-^_`'#>(P``W[X`:-^W`&#?M@!8W[4`4-^T`$C?LP!`W[(`
+M.-^Q`##?L``H`^``"&>]`'@"`A`M`%<0)=Q"``#H1?ZB)\+_[P`5$'@`%8#X
+M`@*`+SP"__`"%H`M-$(`)0`0@+@\!!(4`A*`+62$<J```A+\`!"`^#1"`/`"
+M!(`MW%(```*@("W>$P``)`4``0P`MQS_HP`@``(0>`!3$"T"0A`K$$``"-^C
+M`"#<8@``)`0``?X2``!\@DI'_&(``-XB````````)`+__]^_`'#?O@!HW[<`
+M8-^V`%C?M0!0W[0`2-^S`$#?L@`XW[$`,-^P`"@#X``(9[T`>'/"`^X`HA`E
+M%$``9"0"``P3P@!T,&,'`"0"!0`08OYZ*D,``M^D``@X8P`!<L8`KM^E`!``
+MPS`D`D00(R9#__X`9A`+`J`@+?^H`!@,`9#&`$`P+1!`_FS?J``8"`$#<R0"
+M__]\'O@[#`"W4B0$``,D`R<0/`4AC20$@`%P0Q`#-*7O00`%+#@`!"3X-*5K
+MVS2$P`<`!2QX``0FN#2E--LTA"`%``0@^`!%`!T"!"`M```H$`"7("4`!2RZ
+M`+XH+0````#<@@``Z$S^IR0>@`%\`O@[`*(0*Q1`_[TD`O__?`/X.V1C`&0`
+M````?`+X.P!#$"L40/_]``````@!`[``````#`&72B03@`&45P#`<O<`;P@!
+M`<;_MP```J`@+0`"%/@"0#`MWZ4`$#1>P`<`'O8X-]X($0`>\7AGR/Y(`AX8
+M+0((0"T`=Q@EW&(```$70"7=`@``_Z,`(`P!DC[_J``8WZ,`(-^H`!C<8@``
+MZ$X`.P````#(30!K9\C]X`((0"T(`0(!`1=`)?X"``#>(@``"`$#(`````#?
+MI0`0`J`@+?^H`!@,`9#&)`;__Q1`_X;?J``8)`(``A;"_A(D!0`&`J`@+0P!
+MD,8D!O__$$#^#=^H`!@(`0-S)`+__P````!RP@"O`!(80``"$",J1``"WZ4`
+M$`!#$"3_J``8`&00"]^C``@"H"`M`$,0(P!`,"T,`9#&`$#P+11`_VO?I0`0
+M`J`@+0P!D,8GQ@`!$$#]]=^H`!@(`0-S)`+__P`````"H"@M9(0)*`+`,"T,
+M`GZ\`D`X+0@!`W,D`O__)`)@`/QB``#>(@``?!+X._^H`!@,`+=2)`0``R0#
+M!J3?J``8/`0AC7!#$`,TA.]!``0D.#2$:]L`!"1X-(0TVP!$`!T``!`0``(4
+MN@!2D"U\`O@[`%(0*Q1`__TD`X`!``,<^#1CP`<``QZX-&,@#P`#&/AD8@`0
+M`@,8+0!W("4"`A@M_(```&1"``C>)````'<8)?Q@```"`H`M`A<X)20#``'>
+M(@``_.```-XB``#=`@``?&(`!_T"``#>(@``"`$#<R0"__\\!!`,#`)_>F2$
+M"0@(`0-S)`+__V>]_^#_L@`0`("0+?^_`!C_L0`(#`$X9O^P```D`P#>?$0Z
+M`Q"#`")\4`P#,$(`_WP0`#L`0(@M?A`)PS)$#_\,`3AZ,C$`!R0#@`$`$8DX
+M``,<^#!"``,T8\`'`B(0+0`#'W@``A4X`!`A/`!#$"T\!?_P`$00)32E`"/<
+M0P````4J_#2E`/@`A2`E?`-S1_Q#``#?OP`8W[(`$-^Q``C?L```W((```/@
+M``AGO0`@,$(`_P@!!%T`0(@M``````@!`20```````02`R0#`-XP0@#_$$,`
+M*"0#@`$PA`#_``,<^#"$``<T8\`'``0F.``#'W@T8Q``?`(`.WQ""<,`@R`M
+M``(1/"0#``(`@B`EW((``'Q"$`,P0@#_$$,`*2A#``,48``()`,``20#``,0
+M0P`I)`,`!!!#``D``````^``"```$"T40__]`````!2@__LT`H```^``"```
+M```LI0`$$*#_]@`````#X``()`(@```````P@P#_?((,`P!@("TD`X`!``,<
+M^#"$``<T8\`'``0F.``#'W@``A$\-&,0``"#("TD`P`"`((@)=R"``!\0A`#
+M,$(`_Q1#_]DH0P`#+*4``A"@_]T``````^``""0"0``LI0`#$*#_V``````#
+MX``()`(@````````!!(#9[W_N#!"`/\D`P#>_[0`('R4#`/_LP`8`,"8+?^R
+M`!`PD@#__[$`"`"@B"W_L````("`+?^_`$#_MP`X_[8`,!!#``3_M0`H?!0`
+M.S"2`/]^E`G##`&72@````"41`#`)`(``1""``T``!@M`@`@+0P!`4P"("@M
+M``(0`"Q#`!,48``2/`,0#`(`("T"("@M#`$8@@)@,"T``!@MW[\`0`!@$"W?
+MMP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!(<$3X\F1C
+M"M!\9!H*`&``"````````)@M/!;_\#)5``<VU@`C,B(``P`5J3@`%K;X`J*H
+M+3;6X`,`%:TX`!:T.``4H3P"MA@M`'08)3P$__#<8@``-(0`(P`$(OPTA`#X
+M?F)C!P*$("5^8DI'_&(``-R"```28/_2`@`@+7P7^#LD!``##`"W4F;6``@D
+M`R<0/`4AC0*V("UP0Q`#-*7O00`%+#@`E"`E-*5KVP`%+'@TI33;`$4`'0``
+M*!``!2RZ`+<H+0````#<@@``Z$7_NP````!\`O@[`*(0*Q1``%P`````?`/X
+M.V1C`&0`````?`+X.P!#$"L40/_]``````@!!3``````)!:``3)5``<`%K3X
+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
+M_6````%%*"7>RP```,0@+?R@``!D0OY(WL4```%$("7\@````,(0+=[$```!
+M0A`EW$0``'QD"$?\1```WL(``"0"@`$D!``!``(4^#1"P`<``A5X-$("`0`"
+M$C@`PA`M`4(0)=Q#``!\@QC'_$,``-["``#_I@`X_Z<`*`P!ETK_J@`@WZ8`
+M.)1#`,`D`@`!WZ<`*!!B`/;?J@`@)`N``3P"%!D`"USX`B`@+35KP`<"`"@M
+MW$*>*``+7C@U:P@%``M9>`#+6"T!2U@EW6,``/^F`#C_IP`H_Z,`,/^J`"`0
+M0`#L_ZL`&`!`^`D`````WZ,`,-^F`#C?IP`HWZH`('Q#``??JP`8)`6``20$
+M``$`!2SX<HX$KC2EP`=RC01N``4NN"0/@`$TI2`9``]\^/UC````!2CX`,48
+M+62E`!#>P@```4,8)=QB````Q6`M9*4"*`%,8"4"I4`M->_`!P%(D"5\`FM'
+MWZ@````/+W@`Q2@M`44H)7T"8P?\8@``WL(``-UC``#=@@``?&)[QGR"<X9\
+M`M9'?<+&!WVBO<=\`K5'?`)K!_V"``#>P@``WD(``'R"[T=\0P2#``,8``/#
+M\"5_PI2'_D(``-["``#<H@``?()[Q_RB``#>P@``W.(``'P"6L?\X@``WL(`
+M`"0#@`$"X"`MW.(````#'/@T8\`')!X``0`#'C@D!0`!-'<0"WP"6L?\X@``
+M`!>Y>-[#````UQ`M`4)0)6;W``C=0@``?\((!_U"``#>P@``#`"W'/^F`#@\
+M!2&-`H`@+=Y#```TI>]!``4L.#2E:]L`!2QX-*4TVP!%`!T``!`0``(4NF1"
+M__]\0U@&_D,``-["```,`0"T``````(@("T,`02``@`H+=^H``C?I@`X/`/_
+M\#1C`",``A$#``BA/"1%__;?J``0``,2_`#7("TPI0?_`)0@)31"`/C\A0``
+M<F,#+@`(J"L"@A`EW$0```!U&"008/YN)`.``0`#'/@T8\`'``,>N#1C($,`
+M`QCX`,,P+0#4H"7>@P``?\-2A_Z#``#<0@``"`$'\-^_`(@`````#`$X>GXT
+M#`,"("`M,C(`_P!`*"T,`0%,`$"`+?^T``@"@/`M"`$'?P`"F``(`0?1?C4,
+M`V1C_]!RQ[`#`,,8+0*CJ"4`%AJZ?&5X!_R%```D!``/W$,``-ZC``!\`VL'
+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
+MW[\`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[```-SB```(`0&69[T`.``````R
+MI@`')`>``0`'//@`!BDX-.?`!P"B*"T`!S]X``4M.``4&3P`IR@M`*,H)3P'
+M__#<J```-.<`(P`'.OPD"0`!-.<`^'TH8P<`9S@E_*@``-SE```(`0PR/`C_
+M\`````!GO?^@_[,`*/^Q`!@`@(@M_[\`6/^^`%#_MP!(_[8`0/^U`#C_M``P
+M_[(`(`P!.\;_L``0&$``10!`F"TR(P#_/!(2%'P"`#O_HP``?$()P_^B``A^
+M/CH#?C<,`P``@"TD%@`,"`$,C692="``````)A```1(3`#;?OP!8`B`@+0P!
+M$\8"`"@M$$#_^0(@("T,`0%,`@`H+0(@("T"`"@M#`$X*``"H``2E@`U`$"H
+M+0!`("T,`0=B```H+7*#`&\L0@`!`$,8)!!@_^DD`@`&$H(`-=^C``@[P@#>
+M`N(8"@!@$"T``QBX``*A.`*#H"_?HP```H*@+P*#H"T`%*(X`I"@+0@!#+@`
+M%*"X`````(QB```D1``!*$(`!1!`_]0`````K&0```(`("T,`0&6`B`H+20$
+M__\01/_U`I(8+280``$6$__.`B`@+=^_`%@``!`MW[X`4-^W`$C?M@!`W[4`
+M.-^T`##?LP`HW[(`(-^Q`!C?L``0`^``"&>]`&`"`"@M#`$6)@(@("T"H"`M
+M#`$'8@`"*``00/_/WZ,`"`@!#(LF$``!#`$%]@*@("T"H"`M#`$&;`!`*"T(
+M`0R+)A```0````!GO?_H_[\`$/^Q``C_L```#`$X9@"`@"T"`"`M#`$X>@!`
+MB"T"("`M#`$!3`!`*"T``A``<$,`;G!"`:X`8A`E%$``"0(`("T,`0L"````
+M`-^_`!#?L0`(W[````/@``AGO0`8``````P!!?8`````W[\`$-^Q``C?L```
+M`^``"&>]`!@`````9[W_X/^_`!C_L@`0_[$`"`"@B"W_L```#`$X9@"`@"T"
+M`"`M#`$X>@!`D"T"0"`M#`$!3`!`*"T"`"`M``(0`'!#`&YP0@&N`&(0)11`
+M``@"("@MW[\`&-^R`!#?L0`(W[````@!"ZYGO0`@`````-^_`!C?L@`0W[$`
+M"-^P```(`09L9[T`(&>]_]C_I@``_[\`(/^R`!C_L0`0`*"(+?^P``@,`3AF
+M`("`+0(`("T,`3AZ`$"0+0)`("T,`0%,`$`H+=^F```"`"`M``(0`'!#`&YP
+M0@&N`&(0)11```@"("@MW[\`(-^R`!C?L0`0W[``"`@!#!!GO0`H`````-^_
+M`"#?L@`8W[$`$-^P``@(`0HP9[T`*"0"@`%PI1$R``(4^##&``,T0L`'`*8H
+M+0`"%K@`!2TX-$)`0W"$"3,``ACX`*,8+3P%__``9!@E-*4`(]QB````!2K\
+M-*4`^`"%("5\X@`'?.((1_QB``#<@@```^``"```````````)`*``7"E$3(`
+M`A3X,,8``S1"P`<`IB@M``(6N``%+3@T0D`!<(0),P`"&/@`HQ@M/`7_\`!D
+M&"4TI0`CW&(````%*OPTI0#X`(4@)7SB&,=]`A"'_&(``-R"```#X``(````
+M```````D`H`!<*41,@`"%/@PQ@`#-$+`!P"F*"T``A=X``4M.#1"`*!PA`DS
+M`*(8+3P%__``9!@E-*4`(]QB````!2K\-*4`^`"%("5\XAC'?0(01WTB``?\
+M8@``W((```/@``@``````````&>]_]`PI0#__[```#"0``,THMX``!`<``!B
+M$"4`P"@M_[0`(`!`("W_LP`8`$"@+?^R`!`!`)@M_[$`"`#@D"W_OP`H#`$3
+MQ@#`B"T00``ZW[\`*"0'@`$R@@`'``<\^"0&@`$TY\`'``(1.#(Q``,`!C3X
+M``<]^`!1$"TTQL`'``(5.#3G#@D`!C=X/`/_\``0(3P`!SFX`$8P+31C`",`
+M1R@M`,0P)0`#&OS<Q@``9.?_V`"D*"4D!@`[_*8```!'."TT8P#X`.0X)0"#
+M&"4D!H`!W&4````&-/C<Y0``-,;`!P`&-K@TQD`C?D40AP`&,/A^90A'`$9`
+M+?SE``!DQO_HW&4```!&$"T!!"@E)`<`0/RG````1"`EW&4``-R%``!^11"'
+M?F4(1_R%``#<8@``W[\`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#``
+M````9[W_P/^V`##_M0`H_[0`(`#`H"W_LP`8`*"8+?^R`!``X)`M_[$`"/^P
+M``#_OP`X#`$X9@"`B"T`0(`M?$,Z`R0"`-Y^%0P#$&(`!#(6`/]\%0`[,A8`
+M_WZU"<,,`3AZ`B`@+0(`("T`0"@M#`$3Q@!`B"T00`!&W[\`.#+6``<D!8`!
+M`!81.#(F``,`!2SX`$8P+32EP`<`!C4X``4O>``5(3P`Q2@M/`+_\`"D*"4T
+M0@`CW*,````"$OPT0@#X<B<-,P""$"5\:P-#?&H#@WP#<T?\HP``W$@``!)`
+M``0D"(`!)`@``7T'A`8D"(`!<BD(\@`(1/@`%K5X-0C`!P+)2"T`"$=X``E(
+M^#4(`0!^1W@%`2A(+64(_Z`!)$@E`,A`+?TG```!!$`EW$<``-T'```60``@
+M)`D``7P'&,<D"8`!?H<01P`)3/A^9P`'-2G`!WUC:T?]!P````E.>#4G."-]
+M0W.'W$@````'.3@`QS`M`,0@)?R2``#<1```_*,``-Q"``#H;P`-W[\`.-^V
+M`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`0``````(`0X\?2<8
+MQP(`("T,`0%,`B`H+=^_`#C?M@`PW[4`*``"(`#?M``@W[,`&-^R`!#?L0`(
+MW[````@!`+1GO0!```02`R0#`-XP0@#_$$,`'#""`/]\`P`[,((`_WQD"<,H
+M0P`#$&``%``````D!X`!/`;_\``'//@PI0`/-.?`!P`"%C@`!S]X-,8`(S3G
+M`Q@`!"$\``4:.`!'$"T`!C+\`$00)7RC&`<TQ0#X_$,```"%("7<@@```^``
+M"```$"T(`0YR?(0,`P`$$@-GO?_0,$(`_R0#`-[_M``@?)0,`_^S`!@`P)@M
+M_[(`$#"2`/__L0`(`*"(+?^P````@(`M$$,`!O^_`"A\`P`[,((`_WQC"<,`
+M8*`M`$"0+0(`("T,`1/&`B`H+11```G?OP`HW[0`(-^S`!C?L@`0W[$`"-^P
+M```#X``(9[T`,``````"("@M#`$!3`(`("TR4@`',C$``P`2D3@``A```E&(
+M+7!#`&YP0@&N`&(0)20#@`$`$8TX%$``&``#'/@\`O_P-&/`!S1"`",``QZX
+M`!2A/``"$OPT8T`#``,8^#1"`/@"(X@M?G/X`P*"$"4"-*`E_I,``-^_`"C?
+MM``@W[,`&-^R`!#?L0`(W[```-Q"```#X``(9[T`,#P"__`T8\`'-$(`(P`#
+M'K@`%*$\``(2_`@!#L0T8W`'``02`V>]_\`P0@#_)`,`WO^S`!@PDP#__[(`
+M$`"@D"W_L```?)`,`_^_`#C_M@`P_[4`*/^T`"`00P`$_[$`"'P0`#LPDP#_
+M?A`)PRIB``,40``-``"(+=^_`#@"(!`MW[8`,-^U`"C?M``@W[,`&-^R`!#?
+ML0`(W[````/@``AGO0!```````P!$\8"0"@M$$#_\20%@`$R0@`#`!.A.``%
+M+/@"@J`M-*7`!P`4I3@`!2]X`!")/`*%("T`D2`E/`+_\-R#```T0@`C``(2
+M_&2E`"`T0@#X`H4H+7P#<T<"(A`E_(,``#!C!P#<1@``.&0%`"R$``$`L2@E
+M+&,``20&``?\I@```(,8)=Q$```08``S)`.``3P5@`$D!0__-K48`0`5K'AF
+MM<`'`!6K^`*5("UFM04``)$@)0*5&"W\A0```'$8)=Q$```D!``?_&0``-Q"
+M``!\%O@[)`0``PP`MU)FM?L0)`,G$#P$(8T"E:`M<$,0`S2$[T$`!"0X`I&(
+M)32$:]L`!"1X-(0TVP!$`!T``"`0``0DN@"6("W>(@``Z$P`=P````!\`O@[
+M`((0*Q1``)T`````?`/X.V1C`&0`````?`+X.P!#$"L40/_]``````@!#T0`
+M````/!7_\#:U`",``QSX`!6NN#1CP`<VM7`!)`8/_P`5K'@``QXX`I4H+6:U
+M`4``L2@E`I4@+?RF```T8P@1W$4```"1("4D!0`?``,9>/R%```"@Q@MW$0`
+M``!Q&"4D!'___&0``-Q"``!\%O@[)`0``PP`MU)FM0#`)`,G$#P$(8T"E:`M
+M<$,0`S2$[T$`!"0X`I&()32$:]L`!"1X-(0TVP!$`!T``"`0``0DN@"6("W>
+M(@``Z$``#@````!\`O@[`((0*Q1``%8`````?`/X.V1C`&0`````?`+X.P!#
+M$"L40/_]``````@!#X``````?!3X.PP`MU(D!``#)`,G$#P$(8UP0Q`#-(3O
+M00`$)#@TA&O;``0D>#2$--L`1``=```@$``$)+H`E"`M`````-XB``#H00`0
+MW[\`.'P"^#L`@A`K%$``-@````!\`_@[9&,`9`````!\`O@[`$,0*Q1`__T`
+M````"`$/H`````#>(@``W[\`.```B"W?M@`P`B`0+=^U`"C?M``@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0!`?!3X.PP`MU(D!``#)`,G$#P$(8UP0Q`#-(3O
+M00`$)#@TA&O;``0D>#2$--L`1``=```@$``$)+H`E"`MWB(``.A-_^(`````
+M?`+X.P""$"L40``5`````'P#^#MD8P!D`````'P"^#L`0Q`K%$#__0`````(
+M`0_,`````#P$$`QDA`GP/`40#`(`,"UDI0MH`F`X+0)`0"T,`GZ\)!'__P@!
+M#O/?OP`X/`00#`@!#]YDA`FP/`,4))!BGE@40`!./`+__6>]_[#_M``@/!0`
+M`O^^`$`VE,``_[$`""0>____OP!()!$``?^W`#C_M@`P_[4`*/^S`!C_L@`0
+M_[```"020``T0D```H*8+3P"%!D\`Q099$*>:&1CGE@`4Z@M``"X+0!S@"T`
+M`````A>P+0``*"T"P"`M#`)F8"0&`$"NOO_PKK[_]&;W`$#^H/_XHKX``**^
+M``&BO@`"HKX``Z*@``26P@`6?B)[QWP"<<>FP@`6HJ``!9;"`!9\`C&'IL(`
+M%J*@``BNO@`@_J``*!;R_^9FM0!`9G-``!:3_]P\`A09/`(``CP#``TT0L``
+M-&/```*"H"T6@__1/`+__=^_`$@D`@`!W[X`0#P#%"3?MP`XW[8`,-^U`"C?
+MM``@W[,`&-^R`!#?L0`(W[```&>]`%"@8IY8`^``"`````````````02`V>]
+M_^`P0@#_)`,`WO^Q`!`PD0#__[``"'R0#`,00P`%_[\`&#"$`/]\$``[`("(
+M+7X0"<,\`A0DD$*>6!1```4`$!DX#`$/ZO^E``#?I0```!`9.``0$+C?OP`8
+M`&(0+P!0$"\\`Q09`%$0+61CGEC?L0`0``(2.-^P``@`11`M``(1N`!#$"V`
+M0@`0`^``"&>]`"``!!(#9[W_X#!"`/\D`P#>_[$`$#"1`/__L``(?)`,`Q!#
+M``7_OP`8,(0`_WP0`#L`@(@M?A`)PSP"%"200IY8%$``!0`0&3@,`0_J_Z4`
+M`-^E````$!DX`!`0N-^_`!@`8A`O`%`0+SP#%!D`41`M9&.>6-^Q`!```A(X
+MW[``"`!%$"T``A&X`$,0+8!"`!$#X``(9[T`(``$$@-GO?_@,$(`_R0#`-[_
+ML0`0,)$`__^P``A\D`P#$$,`!?^_`!@PA`#_?!``.P"`B"U^$`G#/`(4))!"
+MGE@40``%`!`9.`P!#^K_I0``WZ4````0&3@`$!"XW[\`&`!B$"\`4!`O/`,4
+M&0!1$"UD8YY8W[$`$``"$CC?L``(`$40+0`"$;@`0Q`M@$(`$@/@``AGO0`@
+M``02`V>]_^`P0@#_)`,`WO^Q`!`PD0#__[``"'R0#`,00P`%_[\`&#"$`/]\
+M$``[`("(+7X0"<,\`A0DD$*>6!1```4`$!DX#`$/ZO^E``#?I0```!`9.``0
+M$+C?OP`8`&(0+P!0$"\\`Q09`%$0+61CGEC?L0`0``(2.-^P``@`11`M``(1
+MN`!#$"V`0@`3`^``"&>]`"`\`A0```0@N&1"!'@`1"`M`^``"(2"``(\`A0`
+M``0@N&1"!'@#X``(?$01"@`````\`A0D`^``"(Q"GEP`````/`(4)`/@``B,
+M0IY@`````!2```4\`Q0````0+0/@``C\909X``````/@``@D`O__$(```R0"
+M__\#X``(`````#P"%``#X``(W$(&>``````\`A0D9[W_X(Q#GF3_L``0``"`
+M+1!@``;_OP`8W[\`&`(`$"W?L``0`^``"&>]`"`\!F-V/`,<733&;5\T8UE=
+M``8T.``#''@TQG!K-&.YER0%``$`!C0XK$6>9``#''@TQF]?-&,N+@.@("TD
+M!0$`_Z8```P`TC[_HP`($$#_YP!`@"T\!!`,/`40#&2$"X@,`GZ\9*4.^-^_
+M`!@"`!`MW[``$`/@``AGO0`@`````&>]_]#_L@`@/!(4`/^Q`!@`@(@M_[``
+M$&92!'C_OP`H#`$0^@"@@"T`$1"X`D*0+89'``(0\``JW[\`*!S@`"X\!!`,
+M+B(!`!!``#,\`V-V/`(<731C;5\T0EE=``,<.``"%'@T8W!K-$*YEP`#'#@`
+M`A1X-&-O7S1"+B[_HP```Z`@+?^B``@"("@M`@`P+0P`TH`D!P`!)`/__Q!#
+M``H\`Q0D`%`@(8QEGEPDA/__ID(`````$"T`I"@J$*```J90``*L9)Y<W[\`
+M*-^R`"#?L0`8W[``$`/@``AGO0`PAD(``-^R`"#?L0`8W[``$`/@``AGO0`P
+M/`40#&2$"\!DI0[@#`)^O``1,``(`1%8)`+__P`````\!!`,/`40#&2$"^AD
+MI0[@`!$P``P"?KPD!P$`"`$16"0"__\`````9[W_T`"%$"O_L@`0`*"0+?^P
+M````@(`M_[\`*/^T`"#_LP`8$$``'O^Q``@`!I@`"`$1B"04__]F$``!`A(0
+M*Q!``!C?OP`H`@`@+0P!$28"8"@M%%3_^`!`B"T\!!`,/`40#``0,``"8#@M
+M9(0,``P"?KQDI0[`W[\`*-^T`"`"(!`MW[,`&-^R`!#?L0`(W[````/@``AG
+MO0`P`````-^_`"@``(@MW[0`(`(@$"W?LP`8W[(`$-^Q``C?L````^``"&>]
+M`#!GO?_H_[```#P0%!F2!9XX9A">.)(&``7_L0`(_[\`$`P!$78``"`MDA$`
+M`9(&``8D!``09C$`$`P!$78"("@M%$``'P(@("V2!@`+#`$1=B0%`"22!@`*
+M)`0`)`P!$78D!0`HD@8`#"0$`"@,`1%V)`4`*I(&``TD!``J#`$1=B0%`"R2
+M!@`.)`0`+`P!$78D!0`ND@8`#R0$`"X,`1%V)`4`,```$"W?OP`0W[$`"-^P
+M```#X``(9[T`&``````(`1'2)`+__V>]_^#_L``0_[\`&`P!$/H`@(`M+@(!
+M`!!``!\\`V-V/`(<73P$%``T8VU?9(0$>#1"65T`$("X``,<.`($@"T``A1X
+MA@4``#1C<&N&!@`"-$*YEP`#'#@``A1X-&-O7S1"+B[_HP```Z`@+0P`TW#_
+MH@`(%$```R0#__^F```"I@,``-^_`!C?L``0`^``"&>]`"``````/`00##P%
+M$`QDA`Q`9*4/$``0,``,`GZ\)`<!``@!$?LD`O__`````&>]_]C_L0`(/!$4
+M`/^S`!AF,01X_[(`$"03____L```)!(`@/^_`"```(`M`````(8B```"`"`M
+M9C$`!!!3``-F$``!#`$1V@`````6$O_XW[\`(-^S`!C?L@`0W[$`"-^P```#
+MX``(9[T`*``````\`V-V/`(<731C;5\T0EE=``,<.``"%'@T8W!K-$*YEV>]
+M_\```QPX``(4>#1C;U\T0BXN`Z`@+?^T`#`D%/___[,`*#P3$`S_L@`@9G,,
+M6/^Q`!@\$10`_[``$&8Q!'C_OP`X``"`+?^C```D$@"`#`#3]O^B``B&(@``
+M`@`H+0)@("TF$``!$%0``P!`,"T,`GZ\AB<``A82__=F,0`$W[\`.-^T`##?
+MLP`HW[(`(-^Q`!C?L``0`^``"&>]`$!GO?_`_[8`,#P6$`S_M``@/!00#/^S
+M`!@\$Q`,_[$`"```B"W_OP`X9I0,P/^U`"AF<PS0_[(`$`P!.PS_L````B(0
+M*A!``#,"("`M#`$[#@``@"T\$A`,#`$V-@`"(``"("`M#`$[G`!`J"UFQ`R`
+M`B`H+0*@,"T,`GZ\`$`X+0@!$I``````#`$0/@`````"`#`M`H`@+0(@*"T,
+M`GZ\`$`X+0(`*"T,`1"*`B`@+0(`,"T"8"`M`B`H+0P"?KP`0#@M`@`H+0P!
+M$+`"("`M`@`P+69$#/`"("@M`$`X+0P"?KPF$``!#`$[G`(@("T"`"@M`@(0
+M*A1`_^,"("`M#`$[#"8Q``$"(A`J%$#_SP(@("T\$10`/!(4`#P4$`QF,01X
+M9E(!>```@"TD%?__9I0-$"03`("&(@```@`H+0*`("TF$``!$%4`!0!`,"V&
+M)P`"AD@```P"?KR&20`"9C$`!!83__1F4@`&W[\`.-^V`##?M0`HW[0`(-^S
+M`!C?L@`0W[$`"-^P```#X``(9[T`0``````\`A0D9[W_J)!"GEC_L@`8``"0
+M+?^P``@``(`M_[\`4/^^`$C_MP!`_[8`./^U`##_M``H_[,`(/^Q`!`40``#
+M_Z````P!#^H`````#`$[##P6%``"`A`J$$``.V;6`7C?HP``/`(4&0(`("UD
+M0IYJ``"H+7P0OB`,`3L.`$/P+0(`("T``I@`)G3_^')B`N\NE``".I$``0P!
+M.YP"(H@D`J(0*A!``!O?HP```````(/#``"#Q``!`(,@(0!D$"H00``,?!4^
+M('P2-B````````,0>``#*/@`HB@O)&,``0+%*"VDMP``I*<``A1D__BDI@`$
+M`@`@+0P!.YPFM0`!`C*0(0*B$"H40/_I9]X`0-^C``!R<P+N)D(``0)`2"T"
+MDZ`E)A```0!42`MD8T``_Z,```P!.PP!()`M`@(0*A1`_\C?HP``W[\`4#P"
+M%"3?O@!(W[<`0-^V`#C?M0`PW[0`*-^S`"#?L0`0W[``"*Q2GF#?L@`8`^``
+M"&>]`%AGO?_`_[8`,"06``'_M0`H/!4`!_^T`"`VM9!@_[,`&```F"W_OP`X
+M_[(`$/^Q``@,`3L,_[```'P4`#M^E`G#`F(0*G*4##(00``F-I3>`#)P`/\"
+M%(`E`@`@+0P!.PX"`(@M`@`@+0P!.\8``H``+@,`$Q!@`!8``````A:`%`(5
+M@"02```2`````!A``!````````"`+0!`D"T"`"@M#`$X*`(@("TT!?__#`$I
+MB`!`("T"`"@M`B`@+280``$,`0Z,-`;__Q82__4"`"@M#`$[#"9S``$"8A`J
+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
+M`$,0+=Q"`!!GO0`@`^``"'Q"`L,```````0:`V>]_]@P8P#_)`(`WO^Q`!@P
+MD0#__[``$'R0#`,08@`%_[\`(#"$`/]\$``[`("(+7X0"<,\`A0DD$*>6!1`
+M``<`$!DX_Z4```P!#^K_I@`(WZ8`"-^E````$!DX`!`0N`!B$"\\`Q09`%`0
+M+V1CGE@`41`M``(2.`!%$"T``A&X`$,0+91#`!9\PT('I$,`%M^_`"#?L0`8
+MW[``$`/@``AGO0`H``02`V>]_^`P0@#_)`,`WO^Q`!`PD0#__[``"'R0#`,0
+M0P`%_[\`&#"$`/]\$``[`("(+7X0"<,\`A0DD$*>6!1```4`$!DX#`$/ZO^E
+M``#?I0```!`9.``0$+C?OP`8`&(0+P!0$"\\`Q09`%$0+61CGEC?L0`0``(2
+M.-^P``@`11`M``(1N`!#$"W<0@`09[T`(`/@``A\0@(#`````#P"%"1GO?_X
+MD$*>6!!``!#_OP``WX*!X!!```4``````$#X"0`````40``-/`00#`P!$KP`
+M````#`$3>@```````!`MW[\```/@``AGO0`(#`$/Z@`````(`194WX*!X`P"
+M?WIDA`U@"`$67R0"__\\`A0D9[W_V)!"GEC_LP`8`("8+?^R`!``X)`M_[$`
+M"`"@B"W_L````,"`+1!``#3_OP`@`F`@+0(@*"T,`6ZR`@`P+01``#("8"`M
+M#`$0B@(@*"T"8"`M`B`H+0P!$+``0(`M`%"8(0(3$"H00``<`@"(+0@!%HX"
+M("`M`````"80``$2$P`7```0+0(@("T,`1$F`D`H+01!__EF,0`!/`00##P%
+M$`P"`#`M`D`X+62$#<@,`GZ\9*4/*-^_`"#?LP`8)`+__]^R`!#?L0`(W[``
+M``/@``AGO0`H````````$"W?OP`@W[,`&-^R`!#?L0`(W[````/@``AGO0`H
+M#`$/Z@`````(`19X`F`@+3P$$`P\!1`,9(0->&2E#R@"8#`M`B`X+0P"?KP"
+M`$`M"`$6HR0"__\\`A0D9[W_J)!"GEC_OP!0_[X`2/^W`$#_M@`X_[4`,/^T
+M`"C_LP`@_[(`&/^Q`!`00`!W_[``"``$&3@`!!"X`&(0+SP6%!D`1!`O9M:>
+M:'"$##(``A.X-)7>``P!.PP"PK`M``"0+0``F"T``(`M``"(+0)"$"H00``J
+M)!0`"#)>`/\#U?`E#`$[G`/`("T#P"`M#`$[#@!`N"TJXP`)`H`@+0+C(`L`
+M`A``.$(`"P"`&"T#P"`M`N(8"PP!.PX`8+@M``(0`!!4`#$`````&N``#0(@
+M$"T"`"`M`M,8+0(W*"$`````H&(``"1"``&@9``!)(0``11%__MD8P!``C>(
+M(0+P@"$F4@`!9G-```P!.PP``````D(0*A1`_]DR7@#_*C$`01(@`#`\!!`,
+M*A``018```K?OP!0/`00##P%$`P\!A`,9(0."&2E#IADQ@Y8#`)^O"0'!,G?
+MOP!0```0+=^^`$C?MP!`W[8`.-^U`##?M``HW[,`(-^R`!C?L0`0W[``"`/@
+M``AGO0!8&N``#H^$@Q@"TQ@M```0+0+@*"T"Y``:`(`!]```(!(0@@`+````
+M`*!Q```D0@`!H'```11%__ID8P!`)C$``280``$F4@`!"`$6_&9S0``F,0`!
+M"`$7)B80``$\!1`,/`80#&2$#@ADI0XP9,8.6`P"?KPD!P3("`$7!2H0`$$,
+M`0_J_Z0```@!%L;?I`````02`V>]_]@P0@#_)`,`WO^Q`!@PD0#__[``$'R0
+M#`,00P`%_[\`(#"$`/]\$``[`("(+7X0"<,\`A0DD$*>6!1```<`$!"X_Z4`
+M``P!#^K_I@`(WZ8`"-^E````$!"X`!`9.`!B$"\`4(`O/`(4&0(1@"UD0IY8
+M`!"".`(%*"T`!2FX`*(H+:RF``#?OP`@W[$`&-^P`!`#X``(9[T`*``$$@-G
+MO?_@,$(`_R0#`-[_L0`0,)$`__^P``A\D`P#$$,`!?^_`!@PA`#_?!``.P"`
+MB"U^$`G#/`(4))!"GE@40``%`!`0N`P!#^K_I0``WZ4````0$+@`$!DXW[\`
+M&`!B&"\`<!@O/`(4&0!Q&"UD0IY8W[$`$``#&CC?L``(`&48+0`#&;A\0Q`*
+M`^``"&>]`"``````WX*!Z&>]_[C_OP!`_[<`./^V`##_M0`H_[0`(/^S`!C_
+ML@`0_[$`"!!``&+_L```/`(4))!"GE@00`!0``````P`\,3?A('H$$``4@!`
+MN"TD$X`!``"0+0`3G/@``(@M-G/`!R04`.0`$Y]X)!7__R06``,``(`M#`$[
+MG`(@("TR`P`#`'(8+0(`*"T"("`M`@(0*A!``!P``QTX`````'QS&@KH:P`N
+M,&(`_S!F!P`P8P,`.,8$`'!C0"\45``B``8P*P##&"008``?``````(`*"T"
+M("`M```P+0P!$^XF$``!#`$[G`(@("TR`P`#`'(8+0(`*"T"("`M`@(0*A1`
+M_^<``QTX)C$``18V_]EF4@`0W[\`0`+@$"W?M@`PW[<`.-^U`"C?M``@W[,`
+M&-^R`!#?L0`(W[````/@``AGO0!(``````P!%V@`````$%7_X`(`*"T(`1?'
+M)A```0(`*"T"("`M```P+0P!$^XF$``!"`$7QP`````,`0_J``````P`\,3?
+MA('H%$#_L`!`N"T,`EMTWX2!Z!1`_ZP`0+@M#`#N\M^$@>@(`1>B`$"X+0P!
+METH`````/`4``@P`MP[<1`$("`$7FO^"@>@D`O__9[W_^*RB```\#109K,(`
+M`#P"``+_L`````!P+0``>"UEK9Y8)`I``"08``LT4,``)!D`!`'`8"T``%@M
+M```0+0``."T(`1@8`:Q(+1!*`!,DYP`!`2(8+9!H`!9Q"/GZ$0#_^F1"`$",
+M8P``%&3_]P`````U:]X```]\`-^P```!;U@EK*L`````$"VLQP```^``"&>]
+M``@`````)6L``15X_^9EC$``)>\``17Y_^$!T'`MW[```"0"__\#X``(9[T`
+M"``$$@-GO?_8,$(`_R0#`-[_L0`8,)$`__^P`!!\D`P#$$,`!?^_`"`PA`#_
+M?!``.P"`B"U^$`G#/`(4))!"GE@40``'`!`0N/^E```,`0_J_Z8`"-^F``C?
+MI0```!`0N``0&3@`8A`O`%"`+SP"%!D"$8`M9$*>6``0@C@"!2@M``4IN`"B
+M*"VLI@`$W[\`(-^Q`!C?L``0`^``"&>]`"@`!!(#9[W_X#!"`/\D`P#>_[$`
+M$#"1`/__L``(?)`,`Q!#``7_OP`8,(0`_WP0`#L`@(@M?A`)PSP"%"200IY8
+M%$``!0`0&3@,`0_J_Z4``-^E````$!DX`!`0N-^_`!@`8A`O`%`0+SP#%!D`
+M41`M9&.>6-^Q`!```A(XW[``"`!%$"T``A&X`$,0+8Q"``0#X``(9[T`(``$
+M&@-GO?_8,&,`_R0"`-[_L0`8,)$`__^P`!!\D`P#$&(`!?^_`"`PA`#_?!``
+M.P"`B"U^$`G#/`(4))!"GE@40``'`!`9./^E```,`0_J_Z8`"-^F``C?I0``
+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
+M)`T``31C`"4`#6H\``,=N#P$$`PT8P$#9:W__P`#'7@"H#@M`D.0+0(`*"T"
+M,H@E9(00H-XJ```#P#`M`M5`+P!`2"T2S0`5``I0``P"?KPF$``!)`("`!8"
+M_\,JXP``#`)^XB0$``K?OP#8W[X`T-^W`,C?M@#`W[4`N-^T`+#?LP"HW[(`
+MH-^Q`)C?L`"0`^``"&>]`.``````/`00##P($`QDA!!(#`)^O&4($)`(`1OS
+M)A```0`````D`O__$((`!``````(`1M:``````````!\!``["`$;6GR$"<,`
+M````9[W_T/^R`!C_L0`0`("(+?^P``@``(`M_[\`*/^S`"!\$@`[?E()P]^B
+M```J(P```D`@+0(C(`I\@LX&?@**!B80``'_H@``)`+YHZ>B``0R$`/_#`#,
+M`M^D```D`@(`%@+_\M^B``!\$@`[``"`+7Y2"<,J(@```D`8+0(B&`HD`OFC
+M?'/.!'X3K`0F$``!?%-X!#(0`#\,`,Q(`F`@+20"`"`6`O_T*B(``-^_`"@`
+M`!`MW[,`(-^R`!C?L0`0W[``"`/@``AGO0`P``````"@$"T`P$`M`.`H+0``
+M,"T(`,O0`$`X+6>]_YC_MP!0/!<4`/^_`&!F]SZ8_[X`6`"`\"W_M@!(_[4`
+M0#P5%`#_LP`P`*"8+?^Q`"``X(@M_[``&`$`@"W_M``X_[(`*([R`"P,`2OZ
+MCO0`1`P!E\;>MD30#`&7QF:U1-#>X@`PWO<`2/^B``#?@H(X_[<`$-Q"```,
+M`2O^_Z(`"`P!E\8`````WX*".'P$`#O>M0`(?(0)PPP`R-[<5P`(&\``"-^B
+M```\!1`,`D`@+62E$,@``#`M`\!`+0P`R]```C@``!,0*G)4D"L`4I`D%D``
+M(-^B`!`:(``(WZ(`"#P%$`QDI1#H```P+0`7.``"($`M#`#+T``"(``:```'
+M/`40#``6(`!DI1#X```P+0`5.``,`,O0`@!`+=^_`&```!`MW[X`6-^W`%#?
+MM@!(W[4`0-^T`#C?LP`PW[(`*-^Q`"#?L``8`^``"&>]`&@`````/`40#`*`
+M("UDI1#8```P+0)@0"T,`,O0``(X``@!',<``````````"0#@`%GO?^@``,<
+MN'"$"3,T8V`!/`+_\``#'+@T0@`C-&-`!0`"$OS_O@!8``,;./^W`%``@U`E
+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
+M``!(+3P#%`!D8SVDKF(`!`)#&"V48P`"$'<`"#P$$`R.9@``/`40#&2$$7@,
+M`GZ\9*4:D`@!'TP\$A0`WF,```)4D"VN0@`(?&(L`S!"`/^N8@``"`$?1JY"
+M``0\!!`,`$`H+0P"?KQDA!%8"`$?:@`0$+@D`O__``08^`"E$`L`!"%X/`44
+M``"#("]DI3V@`(4@+:R"``#\A@`(`^``"/R'`!``!!#X``0A>`""("\\`A0`
+M9$(]0`""("VLA0``K(8`!`/@``BLAP`4``00^``$(7@`@B`O/`(4`&1"/:``
+M@B`M`^``"/R%`!``!!#X``0A>`""("\\`A0`9$(]0`""("T#X``(K(4`%``$
+M&3@`!!"X`&(0+V2C`*``1"`O/`(4```$(3AD0CJ``$0@+=RH``#<IP`(W*8`
+M$-RB`!ADI0`@_(@``/R'``C\A@`0_((`&!2C__9DA``@W*,``-RB``C\@P``
+M`^``"/R"``@```````00N``$&3@`8A`O`$0@+SP"%`!D0CJ```0A.`""("UD
+M@@"@W(@``-R'``C<A@`0W(,`&&2$`"#\J```_*<`"/RF`!#\HP`8%(+_]F2E
+M`"#<@P``W((`"/RC```#X``(_*(`"`````",J@````00N(RI``0`!"%XC*@`
+M"`""("^,IP`,/`(4)(RF`!!D0I^HC*,`%`""("V,H@`8K(H``*R)``2LB``(
+MK(<`#*R&`!"L@P`4`^``"*R"`!@```````00N``$(7@`@B`O/`(4)&1"GZ@`
+M@B`MC(H``(R)``2,B``(C(<`#(R&`!",@P`4C((`&*RJ``"LJ0`$K*@`"*RG
+M``RLI@`0K*,`%`/@``BLH@`8```````$(;@\`A0``(4H+61",H``!2#X`((@
+M+0/@``C\A@``/`(4`&1"/@``1"`M`^``"*"`````````/`(4`&1"/D@`1"`M
+M`^``"*"%````````9[W_\/^P``#_OP`(#`$=L@"`@"T,`5FJ`@`@+3P#%`!D
+M8SY(,@(``WQP&8H08``B``(1/#P#__`D!@`!-&,`(P!@*"T``QQX-&,`$0`%
+M*OP``QZX-*4`^#1C`0``12@E`$,8)=QD``!\Q!"'_&0``-RC```D`X`!)`8`
+M`0`#'+@"`"`M-&-@`0`#''@T8R`%``,;>`!#$"7<0P``?,/&!_Q#``#?OP`(
+MW[```-RB```(`5E.9[T`$#P%__`TI0`C``4J_#2E`/@(`2!U`$4H)0/@``@`
+M`!`M9[W_\/^P``#_OP`(#`%9>@"`@"T,`5G&`@`@+0P!68X"`"`M#`%J-`(`
+M("T\"__P-6L`(SP"__`!8'@M``M=^``/?O@U:P1#-$(`(S7O1`$`"UTX,@,`
+M`P`"$OP`#WPX-6L`0``#&3QE:@`(-$(`^#7O`!``8A`E`&]X)0``,"UE3@`(
+M94T`$&5,`!@`P"`M)`4``@"+0"T`BC@M`0-`)0".2"W]`````.,X)=Q(```!
+M(T@E_.````"-0"W<1P```0-`)?T@````C#@MW$D```#C."7]````)*7__]Q(
+M``#\X```/`<``0"'("W<1P``%*#_Z0"+0"W]X```9,8!`-Q$```D!$``%,3_
+MX0#`("T\&/_P/`\!0#<8`",``#`M`P!@+0`8QK@`#&7X-Q@B`36,!$4`&,1X
+M``QE.#<80!!EBP@``'C`)65N"``\#0`!->\`(```````P"`M```H+20*``(`
+MC$@M`(M`+0$C2"4`CC@M_2````$#0"7<20```.,X)?T````DI0`!W$@```"-
+M("W\X```W$<``!2J__(`C$@M_P\``&3&``C<1```)`0"`!3$_^C?OP`(W[``
+M``/@``AGO0`0$(``%20"``$D@___+&,``A1@`!$D`@`()`,``Q"#``XD`@`@
+M)(/__"QC``(48``*)`(`0`"`*"T\!!`,9[W_^/^_```,`GZ\9(01R-^_``!G
+MO0`(```0+0/@``@`````9[W_X"0&``'_L@`0`("0+?^Q``@`H(@M_[```/^_
+M`!@,`6G`C*4```!`@"TD`O_^$@(`%"0"__\2`@`-`@`H+:XP```"0"`M#`%=
+MZ`(@,"W?OP`8`@`0+=^R`!#?L0`(W[````/@``AGO0`@`````#P$$`P,`G]Z
+M9(02*`@!(2W?OP`8CB4``#P$$`P,`GZ\9(01\`@!(2W?OP`8`````&>]__`!
+M`!`M_[\`"`%`0"W_L````,#`+02``$<`@%`M!*``/@,',"4\`__P<+E(\C1C
+M`"4L1@#_``,=>'%*"3,T8P"!)`\`_P`#';@`1G@*`R,8+2UF`0`!0Q`E.,8`
+M`=Q#```!Z8`K```0+20.`$!\8S@!`&M@*P!I:"LYK0`!.8P``0(-:"0!AF`D
+M``,P>@!M2`H`S%@*`2`8+0%I:"L!;1@*"`$A;P!@:"T`````)$(``1!.`"0`
+M`````$U@%GP,.`<5@/_Z`$`8+3!"`#\\!O_P`&E@%C3&`"4`;W@6``8U.`!K
+M6!8TPP!!`P<P)0`#'?@#(\@M`5E0)=U)``!]Z7H'?8F\!WUI_@=\22@&?,DQ
+MAGT).<;]20``#`%>Q`````#?OP`(W[``````$"T#X``(9[T`$'P*`#L(`2%(
+M?4H)PP```````!`M"`$A="0#`$``````9[W_T"BB`@#_OP`H_[0`(/^S`!C_
+ML@`0_[$`"!!``#S_L```*,("`!!``#,`P(@M`0"`+0"`F"T,`5[L`."0+28"
+M__\2```7,$+__P`"$'@F$/_^?D(5"C04__\`0"@M+$(0`!1```DR$/__"`$A
+MR3P$$`P`````?D(5"@!`*"TL0A``$$``$#!P__\"8"`M#`%?$@(@,"T`$!!X
+M%A3_]B8#__\``!`MW[\`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#`\
+M!!`,#`)^O&2$$K#?OP`HW[0`("0"___?LP`8W[(`$-^Q``C?L````^``"&>]
+M`#`\!!`,`,`H+0P"?KQDA!*("`$AP"0"__\\!!`,#`)^O&2$$F`(`2'`)`+_
+M_P````!GO?_P_[\`"/^P```,`3L.`*"`+0(`("T,`2$```*``"8$__AR$`&O
+M+(0``CB$``$`D(`D$@``"M^_``@P0@#_W[`````"&",`0Q`D9[T`$'!"$"``
+M`A`G`^``""1"`"`P0P#_)`0``BQB`!$X0@`!+&,`(=^P````@Q@C``(0(V>]
+M`!`#X``(`$,0)`````!GO?_@_[(`$`"`D"W_L```_[\`&/^Q``B0H@`,$$``
+M!`"@@"V,I0`0!*``*0``2"V2`@`P%$``#@````"2`@!($$``!```B"V.`@!,
+M!$``,@````#?OP`8`B`0+=^R`!#?L0`(W[````/@``AGO0`@C@4`-`2A__$`
+M````C@0`"-X&`#B.!P`D#`#)WHX(`$0``A@```(0/ZX"`````R0"-`+YHQ""
+M`#"N`P`$C@8`-#P$$`P\!1`,9(03,&2E&K@,`GZ\)!'__P@!(AK?OP`8W@8`
+M&(X'`"0,`,D\C@@`+#0#^:.N`@`(,$+__Q!#`!H`````C@8`$#P$$`P\!1`,
+M9(03$&2E&K@,`GZ\)!'__P@!(AK?OP`8#`&7*@)`("T$0``5`$"(+0`2D@``
+M`(@M`D*0)0(@$"VN$@!,W[\`&-^R`!#?L0`(W[````/@``AGO0`@`````)8"
+M``@P0@`_"`$B$*X"`!#>`@``?$)*`@@!(A.N`@`T/`00#`P"?WIDA!+8"`$B
+M&M^_`!@`````9[W_X/^R`!``@)`M_[```/^_`!C_L0`(D*(`%!!```0`H(`M
+MC*4`&`2@`"D``$@MD@(`.!1```X`````D@(`4!!```0``(@MC@(`5`1``#(`
+M````W[\`&`(@$"W?L@`0W[$`"-^P```#X``(9[T`((X%`#P$H?_Q`````(X$
+M``#>!@!`C@<`+`P`R=Z."`!,``(8```"$#^N`@`$``,D`C0"^:,0@@`PK@,`
+M"(X&`#P\!!`,/`40#&2$$YADI1K8#`)^O"01__\(`2)^W[\`&-X&`"".!P`L
+M#`#)/(X(`#0T`_FCK@(``#!"__\00P`:`````(X&`!@\!!`,/`40#&2$$WAD
+MI1K8#`)^O"01__\(`2)^W[\`&`P!ERH"0"`M!$``%0!`B"T`$I(```"(+0)"
+MD"4"(!`MKA(`5-^_`!C?L@`0W[$`"-^P```#X``(9[T`(`````"6`@``,$(`
+M/P@!(G2N`@`8W@(``'Q"2@,(`2)WK@(`/#P$$`P\!1`,9(034`P"?KQDI1K8
+M"`$B?M^_`!@`````9[W_X/^R`!``@)`M_[```/^_`!C_L0`(D*(`%!!```0`
+MH(`MC*4`&`2@`"D``$@MD@(`.!1```X`````D@(`4!!```0``(@MC@(`5`1`
+M`#(`````W[\`&`(@$"W?L@`0W[$`"-^P```#X``(9[T`((X%`#P$H?_Q````
+M`(X$``#>!@!`C@<`+`P`R=Z."`!,``(8```"$#^N`@`$``,D`C0"^:,0@@`P
+MK@,`"(X&`#P\!!`,/`40#&2$$YADI1KX#`)^O"01__\(`2+DW[\`&-X&`"".
+M!P`L#`#)/(X(`#0T`_FCK@(``#!"__\00P`:`````(X&`!@\!!`,/`40#&2$
+M$WADI1KX#`)^O"01__\(`2+DW[\`&`P!ERH"0"`M!$``%0!`B"T`$I(```"(
+M+0)"D"4"(!`MKA(`5-^_`!C?L@`0W[$`"-^P```#X``(9[T`(`````"6`@``
+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
+M?$0BPA"``!`PA`#_/`80#22"__\`@"@M+$,`%A!@``5DQ@_8/`80#'!"^/)D
+MQALX?,(R"CP$$`P,`GZ\9(07B-XB`!``0!@M?$0D`A"``!`PA`#_/`80#22"
+M__\`@"@M+$,`%A!@``5DQ@_8/`80#'!"^/)DQALX?,(R"CP$$`P,`GZ\9(07
+MF-XB`!``0!@M?$0E0A"``!`PA`#_/`80#22"__\`@"@M+$,`%A!@``5DQ@_8
+M/`80#'!"^/)DQALX?,(R"CP$$`P,`GZ\9(07J-XB`!``0!@M?$0F@A"``!`\
+M!A`-,(0`_R2"__\`@"@M+$,`%A!@``5DQ@_8/`80#'!"^/)DQALX?,(R"CP$
+M$`P,`GZ\9(07N-XB`!``0!@MZ%$`1@````#H4@!2`````.A3`$H`````Z%0`
+M@SP$$`Q\1`V#$(``"`````#H5P#`/`00#.AV`,(\!!`,#`)^XB0$`"#>(@`0
+MZ%4`;P````#H4`!E`````.A/`%L`````Z$X`40````#H30!'`````.A,`$``
+M````Z$L`@``````P0P?_%&``<WQ"$@,,`G[B)`0`"@@!*!C>)@`8/`00#"0%
+M``0,`GZ\9(06H)(E`"<4H`":`````)(E`"84H`"2`````)(E`"44H`"*````
+M`)(E`"04H`""`````)(E`",4H`!Z`````)(E`"(4H`!R`````)(E`"$4H`!J
+M`````)(E`"`4H`!B``````P"?N(D!``*"`$H*3P3$`P\!!`,#`)^O&2$%\C>
+M(@`0R%+_N`!`&"T(`2D)/`00##P$$`P,`GZ\9(07V-XB`!`(`2BY`$`8+3P$
+M$`P,`GZ\9(07T-XB`!#(4_^L`$`8+0@!*0,\!!`,/`00#`P"?KQDA!A8"`$H
+MT=XB`!`\!!`,#`)^O&2$&$C>(@`0R$S_MP`````(`2D1/`00##P$$`P,`GZ\
+M9(08.-XB`!#(3?^M``````@!*18\!!`,/`00#`P"?KQDA!@HWB(`$,A._Z,`
+M````"`$I'CP$$`P\!!`,#`)^O&2$&!C>(@`0R$__F0`````(`2DF/`00##P$
+M$`P,`GZ\9(08"-XB`!#(4/^/``````@!*2X\!!`,#`)^O&2$%^#>(@`0"`$H
+MNP!`&"T\!!`,#`)^O&2$%V#>(@`0"`$H1P!`&"T\!!`,,$4`_PP"?KQDA!AP
+MDB4`%SP$$`P,`GZ\9(08@`@!*-8`````/`00#`P"?KQDA!AH"`$HT]XB`!`\
+M!!`,#`)^O&2$&2`(`2CV`````#P$$`P,`GZ\9(09$`@!*/22)0`@/`00#`P"
+M?KQDA!D`"`$H\9(E`"$\!!`,#`)^O&2$&/`(`2CNDB4`(CP$$`P,`GZ\9(08
+MX`@!*.N2)0`C/`00#`P"?KQDA!C0"`$HZ)(E`"0\!!`,#`)^O&2$&,`(`2CE
+MDB4`)3P$$`P,`GZ\9(08L`@!*.*2)0`F#`)^O&2$%^@(`2C`WB,`$`P"?KQD
+MA!?X"`$HP@``````````9[W_T/^_`"C_M``@_[,`&/^R`!``H)`M_[$`"`"`
+MB"W_L```#`$X9@`$@P,"("`M,A```PP!.'H`0*`M`H`@+0P!.&(`0"@M`@`@
+M+0P!7SH`0"@M/`3_\#2$`",`$!D\``0E^'!"*/(TA`1%)`6``0`$)3@`!2RX
+M`$0@+32E8`$`@R`E``4L.-R"```\!/_P-*40`32$`",`!2NX``0B_'Q"!L,T
+MA`#X,$(`_P!D("4``A#``$40+0!B&"7<8@``?D+\!_QB``#?OP`HW[0`(-^S
+M`!C?L@`0W[$`"-^P``#<@@```^``"&>]`#``````9[W_L#"E`/__L```,)``
+M`_^V`#`THMX`_[4`*``0M`#_OP!(`("H+?^^`$``5K`E_[<`./^T`"#_LP`8
+M_[(`$!C``"S_L0`(/!'_\``0@3PV,0`C,/0``0(@D"T`$8WX`!*2_#8Q!$,V
+M4@#X`!&-.``'F"L"$I`E``#P+38Q`$``P+@M`\`H+0P!.&("P"`M)]X``0*@
+M("T"8#`M,$,`/P!`*"T``T(X9&,!``$10"T``QHX`1!`)0!Q&"W=`@```'`8
+M)0)@."U^@CG'_0(``-Y"``#<8@``?H(YQ_QB``#>0@``#`%?=``````7U__F
+M`\`H+=^_`$C?O@!`W[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#
+MX``(9[T`4`````!GO?^X_[0`(`"@H"W_L0`(`("(+?^_`$#_MP`X_[8`,/^U
+M`"C_LP`8_[(`$`P!.PS_L```&$``''(W##(``*@M-O?>``!`L"T,`3O&`J`@
+M+1A``!(`````,K(`_P``@"T"5Y`E`$"8+0(`*"T,`3AB`D`@+0(@("TF$``!
+M#`%?.@!`*"T"("`M`H`P+0P!7T@`0"@M%A/_]``````FM0`!%K;_Z0````#?
+MOP!`W[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`2```
+M``!GO?_`_[$`"`"`B"W_OP`X_[8`,/^U`"C_M``@_[,`&/^R`!`,`3L,_[``
+M`!A``!MR-@PR``"@+3;6W@``0*@M#`$[Q@*`("T80``1`````#*2`/\``(`M
+M`E:0)0!`F"T"`"@M#`$X8@)`("T"("`M)A```0P!7SH`0"@M`B`@+0P!7UX`
+M0"@M%A/_]0`````FE``!%I7_Z@````#?OP`XW[8`,-^U`"C?M``@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0!``````&>]_N#_LP$0`*"8+?^_`1@#H"@M_[(!
+M"`#`D"W_L0$`_[``^`P!)S)\D`L#E[$`.`(`("UGI@#8#`%=Q`(@*"VOLP#D
+MK[(`Z`(`("T"("@M#`%=Z&>F`-C?OP$8W[,!$-^R`0C?L0$`W[``^`/@``AG
+MO0$@`````&>]_S#_L`"X`Z`X+?^Q`,``@(`M_[\`R`P!7*@`P(@M`@`@+0P!
+M9N(D!?__!$``#`!`*"T"`"`M_Z(`L`(@,"T,`5TL`Z`X+=^B`+#?OP#(W[$`
+MP-^P`+@#X``(9[T`T`@!*J<D`O__`,<X*A#@``8```````8P^```$"T`AB`M
+M`^``"/R%```#X``()`+__QC```X`````W((``'Q".`$010`,9(0`"`@!*L0`
+M`!`MW(,``'QC.`$090`'9(0`""1"``$41O_Z``````/@``@D`O__```0+0/@
+M``@`````9[W_:/^V`'A\]G@"_[4`<``6$`#_M`!H`,"H+?^S`&`!`*`M_[(`
+M6`"`F"W_L0!0`*"0+?^_`)``X(@M_[X`B/^W`(#_L`!(_Z```/^@``C_H``0
+M_Z``&/^@`"#_H``H_Z``,!!``!>OH``X?-YX`CP7%```!1P``%X0)&;W+(``
+M0X`E)`H`P`+@$"T(`2KU```8+0`````D8P`!$&H`50)@("W<20``?2DX`18)
+M__ID0@`(``.0^'[RD@H`$I(^`!*0`'XQ^`,`$1@`$&``$P``$"U^M?@#/!84
+M```5$`!FUB:``$,8)``2@#Q\8_@#`L`0+0(#@"4(`2L.9LD&`!!)`!,"8"`M
+MW$,``'QC.`$6`__[9$(`"```$"W?OP"0W[X`B-^W`(#?M@!XW[4`<-^T`&C?
+MLP!@W[(`6-^Q`%#?L`!(`^``"&>]`)@`````)`7__R0&``$,`6CB)`<`#P1`
+M`%DH0P#`$&``!20#__\``ACX`L.P+?[0```D`___`F`@+?^C``@D`P`+_[(`
+M``.@."VOHP`0`I*0(_^U`!@D`P#__[$`(&>H`"BOL@`P`$`H+:^C`!0,`5X(
+M)`8`#]^_`)#?O@"(```0+=^W`(#?M@!XW[4`<-^T`&C?LP!@W[(`6-^Q`%#?
+ML`!(`^``"&>]`)@D!?__```P+0P!:.(D!P`/!$``*0!`&"TD`O__`F`@+?^B
+M``@D`@`*KZ(`$`)`*"TD`@#_)`8`#_^C`$#_L@``KZ(`%/^^`!@,`2J4_[8`
+M(`1``!3?HP!``%*0(P!@*"VOL@`P`F`@+?^C`$`D!@`/`Z`X+6>H`"@,`5X(
+M`$"0+=^C`$`H8@#`$$#_D0`#&/AR0CHS`N.X+0!0@"4(`2K]_O```#P$$`P,
+M`G]Z9(092`@!*Q,D`O__/`00#`)@*"UDA!$(#`)^O```,"T(`2L3)`+__SP$
+M$`P"8"@M9(01"`P"?KPD!@`!"`$K$R0"__\`````9[W^,/^S`<`#H"@M_[(!
+MN`#@D"W_L`&H?)`+`_^_`<@,`2<R_[$!L(^S`!AGH@`H9Z,`V&>D`,C<2```
+MW$<`"-Q&`!#<10`89$(`(/QH``#\9P`(_&8`$/QE`!@41/_V9&,`(-Q&```"
+M`"`MW$(`""0%___\9@``#`%FXOQB``@$0``N`$"(+9>E`.@"`"`M#`%=Q&>F
+M`8@D`O__KZ(!B`(`("VOL@&49Z4!B`P!(1BOL@&8!$``*"0&``]GIP#8IZ(`
+MZ`(`("T,`5TL`B`H+20&``$`!C0\`@`@+63&__\"8"@M`,`X+0P!*LP"($`M
+M/`8"@#3&@,$D!P`!``<\/``&-+@"`"`M`F`H+63G__\TQ@4&#`$JS`(@0"W?
+MOP'(`B`0+=^S`<#?L@&XW[$!L-^P`:@#X``(9[T!T#P$$`P\!1`,9(09<`P"
+M?KQDI1OH"`$KS201__\\!!`,/`40#&2$&9@,`GZ\9*4;Z`@!*\TD$?__````
+M`#P"%`#\1#Y0/`(4`/Q%/E@\`A0D`^``"/Q&H*``````/`(4)`/@``C\1*"@
+M`````#P"%``\!10DW$,^4#P"%`#<0CY8W*6@H/R#``#\@@`(`^``"/R%`!`\
+M`A0``^``"-Q"/E``````/`(4``/@``C<0CY8`````#P"%"0#X``(W$*@H```
+M``!GO?_@_[```#P0%`#_L@`0DA(^5_^Q``@\$10`_[\`&`P`R#0"0"`M``(0
+M`!!```X\`A0`#`$6N```("V2!#Y7#`%L/HXE/ES?OP`8W[(`$```$"W?L0`(
+MW[````/@``AGO0`@`````#P'$`R,0C[4`D`@+=XE/EADYQP(``(P0`#"$"$`
+M`C#"#`$<BB3&`(`$0?_H/`00##P%$`QDA!P8#`)^O&2E'$@(`2P3`````#P"
+M$`QGO?^X:$,<.&1"'#AH0@`(_[4`.#P5%"3_LP`H)!/___^Q`!@`@(@M_[``
+M$/^_`$#_M``P_[(`(/^C```,`3O&_Z(`"`(@("TD4/__$A,`"0(`*"T,`1/&
+M`````!1```\"`"@M)A#__P(`*"T6$__Y`B`@+=^_`$```!`MW[4`.-^T`##?
+MLP`HW[(`(-^Q`!C?L``0`^``"&>]`$@,`3@H`B`@+0.@*"T`0)`MWJ*@F!!`
+M``,"0"`M`$#X"0`````"0"`M#`%L&"80__\"0"`M#`%L'@!`H"T"0"`M`H`H
+M+0!`,"T,`6S>`Z`X+0@!+$X"`"@M9[W_T/^_`"C_M``@_[,`&/^R`!#_L0`(
+M#`$0XO^P```80``B``"0+0!`F"T``````D`@+0P!;H("0(`M!$``)`!`H"U\
+M$?@[#`"W4B0$``,``ABX`&(0+1*``!$`48@M?`+X.P!1$"L00``:W[\`*'P#
+M^#MD8R<0?`+X.P!#$"L40/_]``````P!;H("`"`M'$#_\P`````40``.W[\`
+M*"92``$64__B`````-^_`"@``!`MW[0`(-^S`!C?L@`0W[$`"-^P```#X``(
+M9[T`,-^_`"@D`O__W[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`,`````!G
+MO?_P)`0!</^P``#_OP`(#`"QJB0%``@00``%`$"`+0!`("T``"@M#`)F8"0&
+M`7#?OP`(`@`0+=^P```#X``(9[T`$`````!GO?[`_[`!``"`@"W_OP$X_[8!
+M,/^U`2C_M`$@_[,!&/^R`1#_L0$(W)(`&`P"5;0"0"`M$D`"F0!`H"V.`P`@
+MD@4`WB03``$D8O_T<&0$;BQ"``)P8P7O`$00)3A"``$`8A@D`*.8"Q"@`!DR
+M<P#_W@0!`(R"`!`$0``5``````P"6'H``"@M$$``$0!`B"T\!!`,/`40#&2$
+M')@,`GZ\9*4?4-^_`3C?M@$P`B`0+=^U`2C?M`$@W[,!&-^R`1#?L0$(W[`!
+M``/@``AGO0%``D`@+0P"56`D!0`!%$``&0)`("T&@`(]`H`@+9(%`-P``#`M
+M)`<!`"0(``$,`9[N`Z!(+01``!@`0(@M)`8`H&8$`"`,`F9@```H+9.F```L
+MP@`8%$``-B0"``$\!!`,/`40#&2$'5`,`GZ\9*4?4`)`("T,`E5@```H+11`
+M__P`0(@M%F``$``````D`@`!H@(`WZ("`'C?OP$X`B`0+=^V`3#?M0$HW[0!
+M(-^S`1C?L@$0W[$!"-^P`0`#X``(9[T!0`````"2`@#>$$#_\"0"``'>!`$`
+MC((`$`1`_^PD`@`!#`)8>B0%``$00/_G`````*(``-\`0(@MH@``>`(@$"W?
+MOP$XW[8!,-^U`2C?M`$@W[,!&-^R`1#?L0$(W[`!``/@``AGO0%``````#P#
+M`((`PA`4-&,P``!#&"048`"]9Z0`O\A#_\1GH@`!9Z4`/R0$``,(`2U.```8
+M+9!$``!D0@`!%$7__7"#&"B3IP`_9Z(`0&>F`%\``"`MD$4``&1"``$41O_]
+M<(4@*).B`%]P9Q@J<$00*@!#$"000`&HDZ4``20"``.N`@`@)*+__RQ"``<0
+M0`(=)`(`!!2B`A&3HP`#)`0`(I.B``*3I0`D,&8`\*X"`"2N!@`L$$0!M:X%
+M`#`L10`C$*`!;``````00`&Y`````"0$`"$01`%KDZ8`").B`!*2"@!ZDZ8`
+M""0#``$50`%RH@,`>P`"&$```A#``&(0(:X"`(R3H@`.$$`!?I.C``\``AB`
+M``(AP`"#&",`8A`A``(0P*X"`("3HP`3DZ4`$).D`!&3H@`,``,X0``#&,``
+M!4A```1`0`#C&"$`!2C```0@P*X#`)`!)2@A`00@(20#``RN!0"$$$,!>*X$
+M`(@D`P!G$$,!GR0$`/\01`&K`````(X#`"AP8P#N`4,8)``"((```A$``((0
+M(0`"((``1!`AK@(`F##&``PD`@`($,(!&I.B`#P08``*CZ(`%(X#`#`D`@`,
+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
+M_@``Z&2E'XC^``$`_@`!"`P"?KS^``$0W[\`4"0"___?O@!(W[<`0-^V`#C?
+MM0`PW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`6`````#>`@`8)`,`4:(#
+M`-TD`__^K@,!(!1`_["N`P$DW@8`$#P$$`P\!1`,9(0=^`P"?KQDI1^HW@0`
+MX!"```,``"@M#`)F8"0&`#C>!`#H$(```P``*"T,`F9@)`8`.-X$`/`0@``#
+M```H+0P"9F`D!@`XW@(`^!!```D`````H$```*!```&@0``"H$```Z!```2@
+M0``%H$``!J!```?^``#@)`+___X``.C^``#P_@``^-^_`%#?O@!(W[<`0-^V
+M`#C?M0`PW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`6`@!,"/_D('X`B`@
+M+0P"5=`"@"@M"`$P:_X"`!@`````/!X0##P7$`PD$O__/!40#&?>'DAF]QY0
+M/!80#``````"0"@M`B`@+0P"49QFIAXP!$``60!`D"T,`2RN`````!!`_Z$`
+M0(`M`B`@+0)`*"T,`DWD```P+:X2`-@"("`M`D`H+?X"`!`,`E>Z`\`P+0(@
+M("T"0"@M`N`P+0P"5[K^`@$8`B`@+0)`*"UFQAY8#`)7NOX"`.@\!A`,`B`@
+M+0)`*"W^`@$`#`)7NF3&'F`\!A`,`B`@+0)`*"W^`@$(#`)7NF3&'F@\!A`,
+M`B`@+0)`*"W^`@$0#`)33F3&'>@80``,`$"@+0(@("T,`E70`$`H+3P&$`P"
+M("`M`H`H+?X"`!ADQOW`#`)2+"0'`%"B`@#</`80#`(@("T"0"@M#`)33F3&
+M'?`80/\W`$"@+3P&$`P"("`M`$`H+63&_<`,`E(L)`<`4=X#`!@08`!NH@(`
+MW20"__ZN`@$@K@(!)"0"``&B`@#?WX*!^!!```@`````$F```@````#^<```
+M_A,`"`@!,+`"`)@M``````@!,07_D('X/`80#`(@("TD!?__#`)1G&3&`N`$
+M0/]&`$"0+3P&$`P"("`M`$`H+0P"4TYDQ@+0!$``;`(@("W?D('X$@``#```
+M``".`P#8%&(`!@!`("T(`3$V/!,0#(X#`-@09``0/!,0#-X0```6`/_[````
+M``(@("T`0"@M#`)-Y```,"T\!!`,/`40#&2$'QADI1^(#`)^O`!`,"T(`3!;
+MW[\`4`(@("T"0"@M9F;]P`P"4BPD!___!$``9P!`H"T"0"@M#`)0T@(@("T$
+M0/\9`$"0+0(@("T`0"@M9F;]P`P"4@0D$___`B`@+0)`*"T04P!/_Z(```P"
+M5#P#H#`M/`,`""0$_/\T8\`'`$`P+0`$)SA\!BD&`$0@)``#'W@0@P`:_Z8`
+M`#P$$`P\!1`,9(3WD`P"?KQDI1^(W[\`4-^^`$@D`O__W[<`0-^V`#C?M0`P
+MW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`6``````"("`M#`)5T`*`*"T(
+M`3`M_@(`&`````!\QAX#?$()`@`"C```!A```B*()0*`*"TV,=X``B`@+0P!
+M."@"()`M`B`@+0P!.PZN`@#(``(0`'!#!*YP0@/N`&(0)1!```TD$0`!KA,`
+MS*X3`-`(`3!:KA,`U#P&$`P"0"@M#`)33F3&`L`$0?^1WY"!^`@!,%O?OP!0
+M)!,`!`(@*"T,`3@H`D`@+28Q``&N`@#,%C/_^F80``0(`3!;W[\`4`P"3>0`
+M`#`M/`00##P%$`QDA![@9*4?B`P"?KP`0#`M"`$P6]^_`%`\!!`,/`40#&2$
+M'K`,`GZ\9*4?B`@!,%O?OP!0WX*!^!!```H`0!@M9$8`$(QE`,@0I``&9&,`
+M!!1F__P`````W$(``!1`__@`0!@M`^``"`````#?@H'X$$``#@````",0P#8
+M%&0`!@`````(`3'(`````(Q#`-@09``&`````-Q"```40/_[``````/@``@`
+M`````^``"`````!GO?^P_[$`"`"`B"W_L````*"`+?^_`$C_O@!`_[<`./^V
+M`##_M0`H_[0`(/^S`!@,`1/&_[(`$!1```\``!@MW[\`2`!@$"W?O@!`W[<`
+M.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`4``````\%/_\
+M`!&4>#:4``D"4)`M`!2D>``2DKAFE(`+`!2G.#:4$``"5*`MWI<```P!ETH`
+M````E$,`P"0"``$08@`E?I.2`B0"``%\5WO')`(!&/Z7```28@"\/`+_\'P5
+M^#L,`+=2)`0``R0#)Q`\!"&-<$,0`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`
+M'=Z"`````"`0``0DNLA/``X`E2`M?`+X.P""$"L40`!Y`B`H+7P#^#MD8P!D
+M?`+X.P!#$"L40/_]`````-Z"``#H3__T``````(@("T,`11"`@`H+205``$`
+M0+`M$L``>P``$"U\5V,')`(``7Q76L<D`@$8_I<``!)B`(`\`O_PWH(```P!
+METH`````E$,`P"0"``$08@`5`````'P>^#L,`+=2)`0``R0#8:@\!"&-<$,0
+M`S2$[T$`!"0X-(1KVP`$)'@TA#3;`$0`'0``$!```A2Z`%X0+0````!\`_@[
+M`&(8*Q1@__T`````?!=:QR0"`1C^EP``$F(`93P"__`"("`M#`$4E`(`*"T\
+M!/_\-(0`"0`$)'ADA(`+``0G.#2$$'A^1!H*`D0@+7R%D@)\0T(')`(!&'[#
+M2D?\@P``$*(`63P"__`6H/]\```8+0P!ETH`````E$0`P"0"``$0@O]V`J`8
+M+7P3^#L,`+=2)`0``R0#)Q`\!"&-/`7__'!#$`,TA.]!``0D.#2E``DTA&O;
+M``4L>``$)'ADI8`+-(0TVP`%+S@TI1`(`$0`'0)%D"T``"`0``0DN@"3("T`
+M````WD(``.A%_UP``!@M?`+X.P""$"L40``]`B`H+7P#^#MD8P!D`````'P"
+M^#L`0Q`K%$#__0`````(`3)\`````#P$$`P"`#`M#`)^O&2$']C?OP!(W[X`
+M0"0#___?MP`X`&`0+=^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(
+M9[T`4`(@("T,`1BN`@`H+3A5``%\5V,')`(``3*U`/]\5UK')`(!&/Z7```6
+M8O^"/`+_\#1"`",``A+\-$(`^`@!,BO<0@``-$(`(P`"$OPT0@#XW$(```@!
+M,DP"("`M-$(`(P`"$OPT0@#X"`$R7=Q"```T0@`C``(2_#1"`/@(`3'_W$(`
+M`#P$$`QDA"`0#`)^O`(`,"T(`3':)`/__P`````#X``()`(`!#P"__!PA#[R
+M-$(`(SP%__```A0X)`8``31"``$TI0`C``(6^``%*OPT0@?X-*4`^'R"&@H`
+M@B`M)`(`!'S#"$?\@P``W*,```/@``@`````9[W_V/^_`"#_LP`8``"8+?^R
+M`!``@)`M_[$`"`P!.&;_L````D`@+0P!.'H`0(@M`B`@+0!`*"T,`1/&`$"`
+M+11```??OP`@W[,`&-^R`!#?L0`(W[````/@``AGO0`H#`&72@````"40P#`
+M)`(``1!B`!L\`__\`!$4>#1C``D`4!`M``,<>``"$KAD8X`+``,?.#1C$`!\
+M0R(*Z(X`$&1C`'A\0Q(*R$D`%P(@("W?OP`@/`(`#-^R`!`T0@/HW[$`"'Q3
+MF`??L````F`0+=^S`!@#X``(9[T`*`````#?OP`@/`(`#-^S`!@T0@/HW[(`
+M$-^Q``C?L````^``"&>]`"@`````#`$5U`(`*"T40/_G``````P`]8("0"`M
+M"`$R[M^_`"!GO?^@_[\`6/^T`#``H*`M_[$`&/^P`!``@(`M_[X`4/^W`$C_
+MM@!`_[4`./^S`"@,`3AF_[(`(`(`("T,`3AZ`$"(+0(@("T`0"@M#`$3Q@!`
+M@"T00`"*```8+7Z2!,,`$I3X%D``!P(@("T,`9=*`````)1#`,`D`@`!$&(`
+MDP(@("T,`3'*`@`H+0(@("T"`"@M#`$3QGZ3B`,`$Y@`?I0$@Q!``'8``!@M
+M/!;_\``1O#@VU@`C`O"X+0`6M#@`%[KX-M8``0`6MO@VU@`0`O:P+=["``!^
+MWI(",$,``7P"``?^P@``)`(!&!/"`''_HP``?!7X.PP`MU(D!``#)`0G$#P%
+M(8UP1!`#-*7O00`%+#@TI6O;``4L>#2E--L`10`=WL(`````(!``!"2ZZ$P`
+M#@"5("U\`O@[`((0*Q1``1X`````?`+X.V1"`&1\`_@[`&(8*Q1@__T`````
+MWL(``,A,__0`````?`/X._^C``@,`+=2)`0``R0$)Q#?HP`(/`4AC7!$$`,T
+MI>]!``4L.#2E:]L`!2QX-*4TVP!%`!W>P@`````@$``$)+KH30`.`(,@+7P"
+M^#L`@A`K%$``_@````!\`O@[9$(`9'P#^#L`8A@K%&#__0````#>P@``R$W_
+M]``````\`__\`!$D>#1C``D`D"`M``,<>``$(KAD8X`++D4``=["`````Q\X
+M-&,0>`"#&"W<9```$D```GRD6L=^@A"')`4`9!)E`+PD!0/H$F4`FB0%``H2
+M90!U/`7_\/QD``!\8Y(")`0!&!!D`&L\`__P_L(``"0"`1@3P@!;/`3_\-["
+M`````!@MWZ4``'RB``?^P@``W[\`6`!@$"W?O@!0W[<`2-^V`$#?M0`XW[0`
+M,-^S`"C?L@`@W[$`&-^P`!`#X``(9[T`8#P"__`T0@`C``(2_#1"`/@(`3-C
+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
+MW[0`.-^S`##?L@`HW[$`(-^P`!@#X``(9[T`:``````T8P`C``,:_#1C`/C<
+M9```%$#_L0````#(R?^Z`J`@+=YB```D`P`&?F22`GQB8H?^8@``%);_LCP#
+M__`T8P`C``,:_#1C`/C<8@``"`$U8P*@("T``````!<YN``7NC@`][@M`!<X
+MN`+GN"T`%[JZ"`$U4G[E>`<(`33;WF(``#1C`",``QK\-&,`^-QB```(`35"
+M/`(AC31C`",``QK\-&,`^-QB```(`34M`````"0$``$T8P$'``,:/#1C!Y#<
+M8@``?(+_QR0$``]\@J0')`0`#7R"8@?\8@``"`$T^P(`("T`````9[W_V/^_
+M`"#_LP`8`*"8+?^R`!``P)`M_[$`"`"`B"T,`3AF_[````(@("T,`3AZ`$"`
+M+0(`("T`0"@M#`$3Q@!`B"T00``A/`/__``0%'@T8P`)`%$0+0`#''@``A*X
+M9&.`"P`#'S@T8Q``?$,B"@!#&"U\99("?F1SA_QD```D`P$8$*,`(#P$__PT
+MA``)``0D>&2$@`L`!"<X-(00>'Q$&@H`1!`M?$22`GY#4H?\0P``)`(!&!""
+M``T\`O_P`@`@+0P!,<H"("@MW[\`(```$"W?LP`8W[(`$-^Q``C?L````^``
+M"&>]`"@`````-$(`(P`"$OPT0@#XW$(```@!-@T"`"`M/`/_\#2$``DT8P`C
+M``0D>``#&OQDA(`+-&,`^-QC````!"<X-(00>'Q$&@H`1!`M?$22`GY#4H?\
+M0P``)`(!&!2"_]T\`O_P"`$V&31"`",\`A`,`^``"&1"(&@`````/`(0#"R#
+M`!008``%9$(@H#P"$`QPA/CR9$(BZ'Q$$@H#X``(`````&>]_YC_OP!@_[X`
+M6/^W`%#_M@!(_[4`0/^T`#C_LP`P_[(`*/^Q`"#_L``8#`$GMO^D``#?HP``
+MD&(`!!!``)4\!!`,E'X`"!/``#G<<@`8W&(``#P1$`P\$Q`,/!<0##P6$`QF
+M,2%H?$(#PF9S(7`40`!8?E0X`7Y42`%FY"#0?H41P0`2A#X`!2GX``"H+0P"
+M?KS_L@`(9L0@Z`P"?KP"@"@M/`40#&2D(0`,`GZ\`@`H+1*```4\`Q`,`H"H
+M+20"__]\5?_&/`,0#`*P@"T,`GZ\9&0A8`*P$"L00``G`````!/``!```*`M
+M`````)*E```"("`M9][__PP"?KQFM0`!<H0![@`>$"L`@A`D%$``%6:4``$2
+ML``8`````!?`__,`````#`)^XB0$``H``!`MW[\`8-^^`%C?MP!0W[8`2-^U
+M`$#?M``XW[,`,-^R`"C?L0`@W[``&`/@``AGO0!H``````)@("T,`GZ\``"@
+M+1:P_^H`````#`)^XB0$``H3P/_JWZ,``-QB``!\0@/"%$``-"0#``'?I``(
+M)`4``0`%*KQDI?_X`(48+7QC2`$08``$```@+0!@("TD`___?&3_QA!`_ZO<
+MD@``?E0X`7Y('L(`%"GZ9N0@T`"H*"]^4'H"?*4X`0``J"W_J``0``4I^`P"
+M?KQ\I3@!/`00#&2$(1@,`GZ\`!(O_M^H`!`\!!`,9(0A,`P"?KP!`"@M?D46
+M`CP$$`PPI0#_#`)^O&2$(4AFQ"#H#`)^O`*`*"T\`A`,9$0A``P"?KP"`"@M
+M$H#_G3P#$`P(`39P`H"H+0```````QH\9&/_^`)#D"U^4C@!$D``!```&"T"
+M0!@M)`3__WR#_\8(`39<W'(``#P%$`QDA""H#`)^O&2E(X@(`3:-)`+__P``
+M``#<@@``?`,`._A/`$<`````W(4`$`2@`$1\2A0"W(4`&&>]__"0A@`$``IF
+M/'QC"</_I0``?*=(`20%``$0Q0!"?.PX!9>E``!\K+H&WZ4``-BO`#<``RBX
+M``,Y.`#E*"\\"10``*,8+V4I.H```QDX?$43`@$C2"TPI0#_E2,`)"1C``@`
+M91@A``,9PWQL]L8LPP`"%&``'/^L``@\"10`)`W__V4I.H`D"P`!`````-^E
+M``@`"AX\),;__R0"__A\I3@!$*```P"@."U]I__&9.+_^&A%``"5)P`F``5$
+M/GRC.`4DYP`(?0.Z!O^E````!SG#?./VQO^C``@4R__LL$,``-R"``#\C``8
+M`$`8+20"``%GO0`0?$-[Q@&`$"T#X``(_(,```/@``C<@@`8?(-(`0#C."\`
+M!SGZ"`$W$'SL]L8```````-!.``#*+@!!2@O``-9>``#0/@\"10``6A8+P"C
+M*"\\"!0```4I.&4(/:!E*3J``6A8+0$E2"V5)0`D?$@3`MUI``@!)2@O`*@H
+M+V2E__@(`3;_?*RZ!MR"``#X3P`(D(,`!!!@`!``````W(,`&/AO``Y\0EP"
+M`^``"``````08``)?(5(`=R#`!A\9C@!?&,>PGP&,`<``QGX`,,8+Q!E``T`
+M````?$)<`GR$2`$``BJ#,$(#_P```4\\`_^`-&,!*0`#&CPT8P`(?*,Y!GQ#
+MS`?\9````^``"`````"0@P`$W((`&!!@`%7\@``8W(4``/BO`%1\1S@!?*5<
+M`B0-``$`!7*Z,*P#_V1E__]\#P`[?>\)PP@!-YH!X,`M```0+0`(0`H0@``$
+M``M9P@"`$"TD`___?&+_QMQ"``````%//`/_@&2E__\T8P$I``,:/'W#.09]
+M@\P'?6-8Q_QH```D`___$*,`3P````!\2#@!)`0``20#``$`"#'Z?$D>P@`$
+M(KQ\2GH"``,:/'Q'2`%\2WP"9(3_^#%*__\`R3`O9&/_^`#D("T!`Q@M,6O_
+M_R5*`']\QC@!?.<1P0`'0?@E:P!_?(1(`0`*4<,`!C'X%:#_TGQC.`%\QC@!
+M?$P6`GS$2`$#`'`M``8@"@``$"T!25`A$&``!`"`,"T`8!`M)`/__WQB_\;<
+M0@`````!3SP#_X!DI?__-&,!*0`#&CQ]XSD&?8/,!WU#6,?\9@``)`/__Q2C
+M_\Y\2#@!`^``"``````D!0`!``=!^GQ&'L(`!2H\`08P+V2E__A\QC@!`.4H
+M+0`&,?A\I3@!?,8X`1"@``0``#@M`*`X+20%__]\I__&W.4``'R$2`$4Q/^>
+M``!H+20$``$`H!`M%&3_FV1E__X#X``(`````#P(__!GO?_8-0@`)20)``/_
+ML`````A"_'P0`#M^$`G#-0@`4/^_`"``$!$\_[,`&&4'`+#_L@`0`$A`)?^Q
+M``@`1S@EW0(``#P#%`!D8SZ8```P+7P""$=](DD'_0(``"0(``'<X@``?0)H
+M!_SB``",<0`LC&D`/`$DF",!)9`C`@`@+0P!7NP"("@MW[\`(`(`("T"("@M
+MW[````)@0"W?L0`(`D!(+=^S`!@D!@`!W[(`$```."T``%`M``!8+0@!(4!G
+MO0`H9[W_^/^_```,`3?J`````-^_`````!`M`^``"&>]``@#X``(```0+0@!
+M;!0```````02`V>]_^`P0@#_)`,`WO^_`!@PAP#__[$`$'R&#`,00P`$_[``
+M"'P&`#LPAP#_?,8)PSP0$`P`!Q$X9A`CH`!0@"TD`@`!C@,``!!B`!*.$0`$
+M)`(``A!B``<D`@`$$&(`!20"``,08@`#)`(`!11B`!4``````B4H(=^_`!@`
+MH!`MW[$`$-^P``@#X``(9[T`(``````,`3L._Z4``-^E```D`P`%``(0```%
+M*0`40__R`+$H(8X%``P(`3A'`+$H(0`````\!!`,/`40#&2E)%`,`GZ\9(0A
+M>`@!.$<D!?__``````@!$#X`````"`$09``````\`Q`,,(0/_V1C(Z```!`M
+M)`8`"P````",90`$`(4H*A2@``4`````C&4`"`"D*"H0H``%`````"1"``$4
+M1O_V9&,`$"0"__\#X``(`````&>]__#_L```_[\`"`P!.PPPD`__&$``$R1(
+M__\\!!`,?0CX`V2$(Z!E"``!`(`H+0`(03@``!@MC*(`!`"#,"T"`C@J%.``
+M!61C`!",IP`(`/`X*A#@``X`````%&C_]F2E`!`\!!`,/`40#`(`,"UDA"&@
+M#`)^O&2E)'#?OP`(W[```"0"__\#X``(9[T`$(S#```D!``!$&0`"-^_``@0
+M8/_P+&,`!A!@_^X"`A`CW[````/@``AGO0`0C,,`#`("@","`Q`C`@,8*@(#
+M$`O?L```9[T`$`/@``@``A$[9[W_R#P"$`S_L0`@,(8/__^P`!@`@(@M_[\`
+M,&1"(Z#_L@`H``"`+20'``L`````C$,`!`##&"H48``%`````(Q#``@`9A@J
+M$&``!0`````F$``!%@?_]F1"`!`D$/__#`$X>@(@("TD`X`!``,<^`(`("T`
+M0)`M-&/`!3P"__```Q]X-$(`(S1C`!C\8`````(2_`)`*"TT0@#XW$(```P!
+M$#X`````/`7_\`(`("TTI0`C<$,I\@`%%G@"0"@M-$(H`0`"%+A\8C(*9$(`
+M"'QB,@ID4``(?'"""F1&`!!\9C(*9$8`&'QF,@ID1@`@?&8R"F1&`"A\9C(*
+M9$8`,'QF,@ID1@`X?&8R"F1&`$!\9C(*9$8`2'QF,@ID0@!0?&(2"@P!$#X`
+M````/`/_\#P$$`PT8P`C<$(I<@`#'K@"("@M-&-0`0`0,#\``QQX9(0AR'Q#
+M.@ID8P`(?$,Z"F1C``A\0QH*#`)^O``````"("`M`Z`P+0P!;GH``"@MCZ8`
+M`#P$$`P"("@M#`)^O&2$(?C?OP`PW[(`*-^Q`"#?L``8`^``"&>]`#@`````
+M9[W_L/^S`!@`P)@M_[\`2/^^`$#_MP`X_[8`,/^U`"C_M``@_[(`$/^Q``@0
+MP`!%_[```#P2$`P`@*@M`*"@+692(C``````+G8`$20"`!`"=A`+/`00#&2$
+M(B@"H"@M``*(``!`L"T,`GZ\`B"`+1(@`!`D%P`!`H#P+0``N"V3Q@```D`@
+M+20%``(F]P`!#`)^O&?>``$"\!`K%$#_^``````F-P`!+C$`$1(@``L`````
+M/!$0#&8Q(C@`````#`)^O`(@("TNX@`1%$#__";W``$2```4``````*`N"T(
+M`3E>``"(+0!`("T,`G[B)C$``0(P$"L00``+9O<``9+B```D1?_@+*4`7Q2@
+M__8D!``N#`)^XB8Q``$",!`K%$#_]V;W``%^UO@#)`0`"@)VF"\,`G[B`A6H
+M(19@_\("EJ`MW[\`2-^^`$#?MP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?L0`(
+MW[````/@``AGO0!0`````&>]__C_OP``#`"W4B0$``$\`_J\-&/'<0`#'/@T
+M8\(Q``,<>&1CSOT`0P`=```0$'!"_CHD0O__``(0NQ!```8``!@M```````"
+M$'L40/_^)&,``3!C``<\`O^`)`0`#S1"`0=\9%('``(2/#1"!VC\1```W[\`
+M`-Q"```#X``(9[T`"``````\`O^`)`<``31"`0<DJ/__``(2/``'/[PT0@=H
+M?0<@!MQ#``!\Q_@')`@``0"(0`0`8#`M?0=B!GR&,0=D0P`(_$8``-Q$``#\
+M1P`(`````-QB``#X7O_^``(0```%*",#X``(`*(0!F>]_^#_L````*"`+?^_
+M`!C_L@`0&*``#?^Q``@`@(@M)!(`("H%`"$"0!`M`@40"P(@("T``#`M`$`H
+M+0P!.9X"!8`C'@#_^"H%`"'?OP`8W[(`$-^Q``C?L````^``"&>]`"``````
+M/`+_@"0%``$T0@$')`,``0`"$CP`@Q@$-$(':``%+WS<1@``?&5B!F1#``A\
+MAC$'_$8``-Q$``#\10`(`````-QB``#X7?_^``````/@``@``````````#P"
+M_X`D!?__-$(!!R0#``$``A(\`(,8!#1"!V@`!2_\W$8``'QE8@9D0P`(?(8Q
+M!_Q&``#<1```_$4`"`````#<8@``!$#__@`````#X``(````````````!!H#
+M)`(`WC!C`/\08@`2,(,`_WP"`#LP@P#_?$()PRAD``40@``.``,H^``"(/@`
+M`QEX``(2.`""$"T`91@O`&(8+3P"%"1D0J(8`^``"'Q#$`H`````"`$Z!GR"
+M#`,#X``()`+__P`$&@,D`@#>,&,`_Q!B`!0P@P#_?`4`.S"#`/]\I0G#*&0`
+M!1"```P``!`M``40^``#,/@`!2HX``,9>`!%*"T`9A@O/`(4)`!E&"UD0J(8
+M`&(8+8QB``@#X``(``````@!.B!\A0P#``0:`V>]_[@`H!`M,&,`_R0%`-X`
+MP$`M_[\`0`#@2"W_LP`X_[(`,/^Q`"@090`Z_[``('P#`#LPD0#_?&,)PRHD
+M``40@`!```,@^``1*/@``QHX`!&!>`"#&"T"!8`O/`04)`(#@"UDA*(8/`80
+M#`($@"T``I#`K@D`"`.@("VN"``$)`4`(*X"``!DQB28#`)_U@(@."T``"@M
+M```P+20'``@#H$`M``!(+0P`M&@"0"`M`D`H+0P`MPX`0"`M$$``&?X"`!".
+M!```&(``"```&"T`````_$```"1C``&.!````&0@*A2`__MD0@`(``"`+=^_
+M`$`"`!`MW[,`.-^R`##?L0`HW[``(`/@``AGO0!(`````#"1`/\(`3I"?(,,
+M`P`````20/_R)!#__SP$$`P"("@M#`)^O&2$)+`(`3IPW[\`0`@!.F\D$/__
+M?(3X`SP#%"0`!!#X``0B.&1CHA@`1!`M`$,0+20#``5D0@`0_$```"1C__\4
+M8/_]9$(`&`/@``@``````````'P#`#M\8PG#/`04)``#$/@``QHX`$,0+62$
+MHA@`1!`M)`,`!61"`!#\0```)&/__Q1@__UD0@`8`^``"```````!!(#)`<`
+MWC!"`/\01P`8,((`_WP#`#LP@@#_?&,)PRA$``40@``4``(X^``#(/@``A%X
+M``,:.`!'$"\`@Q@M/`<4)`!#$"UDYZ(8`$<0+=Q#`!`08``(``4H^```$"T`
+M91@M`^``"/QF````````"`$ZKGR##`,#X``()`+__P`$&@,D!@#>,&,`_Q!F
+M`!HP@P#_?`8`.S"#`/]\Q@G#*&0`!1"``!(``SCX``80^``#&7@`!C(X`&<8
+M+P!&,"T\!Q0D`&88+63GHA@`9Q@MW&,`$!!@``,``!`M``40^'QB$@H#X``(
+M```````````#X``(```0+0@!.LY\A@P#``0:`R0"`-XP8P#_$&(`$#"#`/\P
+MA`#_?`(`.WQ""<,`!"CX``(8^``$(7@``A(X`(4@+P!B$"T\`Q0D`((0+61C
+MHA@`0Q`M`^``"(Q"``1\@@P#`&`@+0`"&/@`!"CX``(2.``$(7@`8A`M`(4@
+M+SP#%"0`@A`M9&.B&`!#$"T#X``(C$(`!#P"%``#X``(_$0^8``````#X``(
+M)`(`!6>]_^!\@SH#)`(`WO^_`!C_L@`0_[$`"!!B`!O_L```?`(`.S"0`/]\
+M0@G#*@,`!1!@``T``(@M``(8N``"*3@`HQ@O/!(4)`!B$"]F4J"X`%`0+0`"
+M$/A^0A(*$$``#@````",40``W[\`&`(@$"W?L@`0W[$`"-^P```#X``(9[T`
+M(``````PD`#_"`$[&7R"#`,`````*@(``Q1```HD`@`#$@(`&CP"$`P`$(#X
+M9$(I4/Y"`"!^4)(*"`$[*(Y1````````#`&,`@``*"TD`___$$,`%0``````
+M0"`M#`&0?@`0@/@L0P`H%&``%3P#$`P\`Q`,`E`0+61C)R#\0P``?E"2"@@!
+M.RB.40``/`(0#``0@/AD0BD8_D(`&'Y0D@H(`3LHCE$````0@/@\`A`,`A*0
+M+61")R`(`3LH_D(``'!"^/)D8R5`?&(2"@!```@`````/`,0#`)0$"UD8RC@
+M_$,``'Y0D@H(`3LHCE$``#P#$`P"4!`M9&,HJ/Q#``!^4)(*"`$[*(Y1```\
+M`Q`,`E`0+61C*'#\0P``?E"2"@@!.RB.40``/`,0#`)0$"UD8R@X_$,``'Y0
+MD@H(`3LHCE$``#P#$`P"4!`M9&,H`/Q#``!^4)(*"`$[*(Y1```\`Q`,`E`0
+M+61C)\C\0P``?E"2"@@!.RB.40``/`,0#`)0$"UD8R>0_$,``'Y0D@H(`3LH
+MCE$``#P#$`P"4!`M9&,G6/Q#``!^4)(*"`$[*(Y1````!!H#9[W_X#!C`/\D
+M`@#>_[(`$#"2`/__L0`(?)$,`_^P````@(`M$&(`!/^_`!A\$0`[,)(`_WXQ
+M"<,,`3L.`@`@+0`1$+@`$1DX`&(0+P!1B"\",I`M`!*(^#P2%"1F4J"X?E&2
+M"MY9``@3(``(W[\`&`(`("W?L@`0W[$`"-^P```#(``(9[T`(````````!`M
+MW[(`$-^Q``C?L````^``"&>]`"`(`3N<``````@!.YP```````0:`V>]_\@P
+M8P#_)`(`WO^R`!`PD@#__[$`"'R1#`/_L````("`+?^_`##_M0`H_[0`(!!B
+M``3_LP`8?!$`.S"2`/]^,0G#`@`@+0`1F+@,`3L.`!&A.`*3$"\\%10D`%$0
+M+V:UH+@`4A`M``(0^'ZB$@K<0@`0$$``!"0%__\`0/@)`@`@+0!`*"T"DY@O
+M`G&(+P(RD"T`$I#X?K*J"HZB```L0@`4%$``!3P"$`P``(@M"`$\`@``D"T`
+M````GJ,``&1")H```QCX?$,2"@!```@`````)!$``202``$D`O__$*(`"B0"
+M__\,`/OT`@`@+0(`("T"0#`M`B`X+0P!.C(`0"@M```!3P``$"W?OP`PW[4`
+M*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#@`````)!$``0@!/`(``)`M
+M````````B"T(`3P")!(``0```````(@M``"0+0@!/`4``"@M9[W_^/^_```,
+M`3L.```@+0P!.PXD!``!#`&72@````#?OP`````0+0/@``AGO0`(``0:`V>]
+M_^@P8P#_)`(`WO^P````@(`M_[\`$!!B`!S_L0`(?`(`.S"$`/]\0@G#``(8
+MN``"*3@`HQ@O`&(8+SP"%"0`9!@M9$*@N``#&/A\0Q(*W$(`&!!```0``(@M
+M`$#X"0(`("T`0(@M#`#\/`(`("W?OP`0W[````!1$"7?L0`(`^``"&>]`!@`
+M````,(0`_P@!/#Q^`@P#`````&>]_]C_LP`8`("8+?^R`!!R<PPR_[```#9S
+MW@#_OP`@``"`+0P!(%C_L0`()!(`!0(3B"4F$``!#`$[G`(@("T80``#`B`@
+M+0P!/#``````%A+_]SP"`/\\`P`--$+_#S1C`0!`!'@``((0)!!#``HD8P$`
+M$$,`"-^_`"```!`MW[,`&-^R`!#?L0`(W[````/@``AGO0`H#`&72@````"4
+M0P#`)`(``1!B__3?OP`@#`'"7@````#?OP`@W[,`&```$"W?L@`0W[$`"-^P
+M```#X``(9[T`*'P$`#L(`3Q8?(0)PP````!GO?_X_[\```P!@-X`````W[\`
+M````$"T#X``(9[T`"`"@$"U\`A@$%$``&2R#``,`@!`M?`(`!"Q"``$`0Q`D
+M$$``$SP&__`PI0`/-,8`(SP#__``!C0X``42.#3&``%PA/[R``8V^#1C`",T
+MQ@3(?*(8!P"&("T``QK\_((``#1B`/C<0@```^``"```$"T#X``()`+__V>]
+M__#_L```_[\`"`P!P@@`H(`M)`/__Q!#`!L\`__P,@4``S1C`",``C;X``,<
+M.``%(C@T8P`!?*0(!P`#'O@``!`M-&,$R`##&"W\9```?&.2`B0$`1@49``'
+MW[\`"#P#__`T8P`C``,:_#1C`/C<8P``W[\`"-^P```#X``(9[T`$``````(
+M`3S5)`+__SP"`/]GO?^H-$+_/T`#>`#_M``H`&(0)#P#``T`@*`M_[\`4#1C
+M!P#_O@!(_[<`0/^V`#C_M0`P_[,`(/^R`!C_L0`0$$,`QO^P``@\`O_P,I(`
+M`S1"`",`$K$\``(5.#P0__`T0@$!-A``(P`"%?@D!``"`L(0)0`0@OS<0P``
+M-A``^`+0B"5\@WN'_$,``-XB```,`9=*`````)1#`,`D`@`!$&(`$@````!F
+M$#<H`M"`)=X"``#H0``&/`/_\"0#``%\8@`'_@(``-XB```\`__P-&,`(P`#
+M&OPT8SB@`L,8)=QB``#(0`"%)`0``0P!%XX`$I0X_[0``#92W@```(`M)!$`
+M!0(2("4,`3O*)A```181__T"$B`E#`$6N-^D```,`<YR`H`@+20#``$`0)@M
+M/`+_@#1"`6<``A(\-$(0B`+"L"7>P@``?&(`!_["```&8`!2/!X0#```@"UG
+MWB38)!8`!0(2B"4,`3N<`B`@+1A``!4"("`M#`$[G``````"("`M#`$[#@!`
+MN"T,`38V``(@``+@."T"@"@M`@`P+0!`0"T,`GZ\`\`@+0P!Q*P"("`M`B`@
+M+0P!R=@`0+@M`%<0)0!3F"4F$``!%A;_Y@(2B"7?I```/!$`!P``J"TD%@`!
+M-C&2(`P!'Q8\%Q0`)!``!0!3$"4`0)@M`K+P)0P!.PX#P"`M``(0``!6,!0L
+M0@`4$$``#0#1."0\`P`(`\`@+31C($X4X``J`,,0)!1``"G>Y3Y@R,X`!`*@
+M("W>Y3Y@#`$\N``%*"LFM0`!%K#_ZP*R\"7?@H,@$$``!0``````0/@)````
+M``!3$"4`0)@M/`(4`-Q"/J@00``(W[\`4#P"%`!^E/@#9$(^`'Q4H8H6@``?
+M`````-^_`%`"8!`MW[X`2-^W`$#?M@`XW[4`,-^T`"C?LP`@W[(`&-^Q`!#?
+ML``(`^``"&>]`%@`````WN4^8":U``$`!2@K``4H(PP!#FHPI0`/%K#_Q`*R
+M\"4(`3UTWX*#('R"``?\8@``WB(```@!/1@```````````P!/%C?I```W[\`
+M4-^^`$C?MP!``%,0)=^V`#@`0)@MW[4`,`)@$"W?M``HW[,`(-^R`!C?L0`0
+MW[``"`/@``AGO0!8``````P!DR0D!``!"`$\\#P"__!\!``["`$\W'R$"<,`
+M````9[W_L/^Q``APD0PR_[<`.#8QW@#_M@`P)!<`!/^U`"@D%@`%_[``````
+MJ"W_OP!(`("`+?^^`$#_M``@_[,`&/^R`!`"L9`E`D`@+0P!.YP"0)@M`D`@
+M+0``*"TH5``%`O00"@P!#FH`0*`M&H``%0`````(`3W?``"0+0`````F4@`!
+M$E0`#P`````"0"@M#`$3Q@)@("T00/_Y`D`H+0P!#MP"8"`M`D`H+0)@("T`
+M`#`M#`#T`"92``$65/_T`D`H+2:U``$6MO_>``````P!((X"`"`M)`P``0`,
+M8KP``#`M?`T`.R0*__]]K0G#98S_^`````!\`O`[$$#__CP"__PT0@`+``(3
+M?#1"``A]HCD&W$(```1``#5\3D@!$<``,P'`6"U]2__&D6(`!-UH`!@00``;
+M9$/__P````#=9P``?0A(`0$,$"U]"!'!``@A^'Q"2`%\YUP"```H+0`'2H(`
+M!"`*$$```S#G`_\`0"@M?47_QMRH``````%//`+_@&1C__\T0@$I``(2/'TB
+M.09\XLP'_$0``!1J_^@`````W6(`&/A/``,`````"`$]^B3&``'=9```?<Y(
+M`7R$7`(```%//`/_@``$$H(T8P$I),8``0`#&CQ\0SD&?(/,!P@!/?K\;@``
+M`````!#```<``)`M/`00##P%$`QDA"4`#`)^O&2E*8@`````)!,`!0)1("4,
+M`<\.)E(``193__T"42`E/!<`#P(`J"T``)@M)!X``3;WD&`D%@`%`G&`)0(`
+M("T,`3L.`@"@+0`"$``L0P`4$&``'0!>$!0`5Q`D$$``&@`````,`3N<`@`@
+M+1A``!8```````"0+0@!/F$`0(`M)E(``1)0`!```````D`H+0P!$\8"@"`M
+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
+M`^``"&>]``@#X``()`+__P/@``@D`O__`^``""0"__\#X``()`+__P/@``@D
+M`O__`^``""0"__\#X``()`+__P/@``@D`O__`^``""0"__\#X``()`+__P/@
+M``@D`O__`^``""0"__\#X``()`+__P/@``@``!`M9[W_P/^U`"@`H*@M_[0`
+M(`"`H"W_LP`8_[(`$/^Q``@``(@M_[```/^_`#@,`3AF_[8`,#!3`/\`0)`M
+M)F4``20"``$0H@`$`*"`+3P$$`P,`GZ\9(0J4`(`("T,`3_Z```H+1!```[?
+MOP`X)`(``1*@``4``(`M?%$YQB00``A^D0`&```0+3*#``<H8P`"%&``#3*4
+M``$"(!`MW[\`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`
+M0``````"0"`M`H`H+0P!.&(`0+`M)`:``0`&-/@\!?_P-,;`!7!'*/(`!C=X
+M)`0``33&`@`TI0`C?.8:"@"@0"TNM0`!`.8P+0`%+C@`1!`4?@,P!P`(@OQ^
+MPV,'-A``^'R#E(8TI10!?J.$!@`%+/C\PP````(0)]X#```\`__\W*8``#1C
+M``D``QQX`D`@+61C@`4F<P`=`$80)``#ESC\H@``-E(`"-X"```"@"@MWE0`
+M``P!."8`````?%0X!_Y4``#>`@``WD(0*'["]X9^8J0'_D(0*-X"```(`4!K
+M`B`0+0/@``@``````^``""0"__]GO?_@/`,4`/^Q``AD8SJ`?!$`._^_`!A^
+M,0G#_[(`$'XE^`,`!1"X``4Q./^P````PC`OW((`<`#%,"_<BP````8Q.-R*
+M``@`PQ@MC&<`2``"1_Y\20:"?$8'@MR,`"`!*$@E?$@&0GTGWL0!!D`E?$D%
+M@GQ&!L)]!ZU$`29()7Q(!@)\1@="?2=[Q`$&,"5\207"?$@'`GS']X0!*$`E
+M?$(%0MR&`#!]!\8$W(D`8'Q'G,3<B`!8)`(``=R0`"C<D@`XK&P`**1K`"2D
+M:@`F_&8`,*QI`!P1`@`FK&<`2"0"``(1`@`K``48^``%$7@`8A@M/`(4)&1"
+MGP@`8A`M)`,`?ZQ#`!`\`Q0```4J>&1C,H```!`M`*,8+20%`$#\8@``9$(`
+M`11%__UD8P`(`!"````2D``"("`M`@`H+0)`."T,`1^^``8P`-^_`!@"("`M
+M`@`H+=^Q``@"`#`MW[````)`."W?L@`0"`$?RF>]`"``!1%X``48^`!B&"T\
+M`A0D9$*?"`!B$"T(`4#TK$``$``%$7@`8A@M/`(4)&1"GP@`8A`M)`,``P@!
+M0/2L0P`0`````&>]_X!D@P!@_[\`>`.@$"W<B```W(<`"-R&`!#<A0`89(0`
+M(/Q(``#\1P`(_$8`$/Q%`!@4@__V9$(`(-R'```\!10`W(8`"`.@&"W<A``0
+M9*4^F/Q'``!GIP!@_$8`"/Q$`!#<:```W&8`"-QD`!#<8@`89&,`(/RH``#\
+MI@`(_*0`$/RB`!@49__V9*4`(-QB`!`#H"`MW&<``-QF``C\H@`0_*<```P!
+M0++\I@`(W[\`>```$"T#X``(9[T`@#P"%`!D0CZ89$,`8-Q(``#<1P`(W$8`
+M$-Q%`!AD0@`@_(@``/R'``C\A@`0_(4`&!1#__9DA``@W$4``-Q#``C<0@`0
+M_(4``/R#``@#X``(_((`$``````\`A0``^``"/Q$/M``````9[W_X`"@0"W_
+ML@`0/`(4`/^Q``@`!H@`_[`````$@`!\$@`[?E()PV1"/IC_OP`8`(!(+0#`
+M&"T"0"`M`@`H+0(@."W\20`H``@P`/Q(`#`,`1^^_$,`.-^_`!@"0"`MW[(`
+M$`(`*"T"`#`M`B`X+=^P``#?L0`("`$?RF>]`"`\`A0``^``"/Q$/N@`````
+M/`(4`&1"/IC\1`!`_$4`2`/@``C\1@!0/`+_@#P#%``T0@%/9&,^F-QH`"@`
+M`A(\W&X`0#1"`R#<20``W$O\^,DQ``M]:P.#W$($B#P#`(`T8P$H?$(``1%@
+M`-$``A'X`0,8)7QB^@8```%/_$```#$B`'\00``W/`;_@'TL,`,TQ@%/,8P`
+M_P`&,CPTQ@>`W,(``!&``"@``!@M/`T`@#6M`2@!S7`E"`%!P0$-:"5]I/H&
+M```!3_R````D8P`!`&P@*A"``!P`````?`)"!SP'_X!\13Q#?$0V0S"E`/\T
+MYP%/`*,H(0`'.CP`I``:`(`!]#3G!X@``%`0`40@(7R".`?\P@``W,(``-SD
+M``!\A``!%6#_Y@`$(?A]Q/H&```!3_R````D8P`!`&P@*A2`_^8`````/`/_
+M@"0$``$T8P%/?()"!P`#&CPT8P>`_&(``,DR``\\!O^`/`+_@#P#`(`T0@%/
+M-&,!*``"$CP!`Q@E-$('H-Q"``!\0@`!``(1^'QB^@8```%/_$```#P&_X`T
+MQ@%/``8R/#3&!YC<P@``?$0R`S"$`/\0@``8```8+3P'`(`TYP$H`0<X)7SG
+MN`,``````&0`&@"``?1\`CG'```H$'RB,`?\P@``W,(``'Q%`\$`!2GX?.7Z
+M!@```4]\1#(#)&,``?R@```PA`#_`&0H*A2@_^\`````/`;_@"0#``$TQ@%/
+M?&(YQP`&,CQ]*Q.#-,8'F/S"```18``H,2(_@-S"__@Q:P#_$6``'```&"T\
+M"@"`-4H!*&3&__@!"E`E?4JX`P````!\`AC'?$41`WQ$$<,PI0#_,(0`_P"C
+M*"$`I``:`(`!]```.!!\XA`'_,(``-S"``!\1`*!``0A^'U$^@8```%/_(``
+M`"1C``$`:R`J%(#_[``````\`_^`)`0``31C`4]\@AC'``,:/#1C!Y#\8@``
+M,2(_@!!``"\\!O^`?2DQPS3&`4\Q*0#_``8R/#3&!X#<P@``$2``(```&"T\
+M"@"`-4H!*`$*0"5]"K@#`````'P"0@<\!_^`?$4Z0WQ$-D,PI0#_,(0`_P"C
+M*"$TYP%/`*0`&@"``?0`!SH\-.<'B```0!!]`C@'_,(``-S"``#<Y```?(0`
+M`0`$(?A]1/H&```!3_R````D8P`!`&D@*A2`_^<`````/`/_@"0$``$T8P%/
+M?()"!P`#&CPT8P>`_&(```/@``@```````````'#&"5\8OH&```!3_Q````(
+M`4&K,2(`?SP"_X`T0@%/``(2/#1"`!C<0@``R$X`&C"C`#\D`@`0+*4`$`!E
+M$`H\`_^`,,8`/S1C`4\PA`__``,:/##G``_\8@``,0@`#_QF``@Q*0`'_&0`
+M$&1B``C\9P%0_&@!6/QI`"#<8P`8?4,01WUC&,?\0P`0`^``"```````````
+M"`%"AC"B`#\`IA`C/`/_``!B`!L`0`'T/`+_@#1"`4]GO?_X``(2/'"$$/(T
+M0@%X?,7X!CP#``$T8_\!``,8/```.!*OIP`$9$<!:`""$"T`AR`M_$4`````
+M$"V/I0`$?*/X!_R#```#X``(9[T`"`/@``@D`O__/`+_@&>]__`T0@%/_[\`
+M"``"$CS_L```-$(`&-Q0``#J```9/`00##P#%``D`@`!W&,^L!!@``I\4``'
+M/`0`_S2$_P]``W@``&0@)#P#``TT8P`!$(,``@````!\4$I'/`+_@#1"`4\`
+M`A(\-$(`&/Q0``#?OP`(W[````/@``AGO0`0``````P"?WIDA"IP"`%"Q3P#
+M%`!\!``["`%9>GR$"<,`````/`+_@#1"`0$``A(\-$(!H-Q"``!\`P`[?&,)
+MPWQ">`%P0!`M`((0*Q!```UPA"CR/`+_\#1"`",``QD\``(6>#1"("$``A2X
+M`((@+0!D&"7<8@``,$+__P/@``@``A```^``""0"__\\`O^`-$(!`0`"$CPT
+M0@&@W$,``'P"`#M\0@G#?&-X`7!@&"T`@Q@K$&``$SP&__`\`__P-,8`(W"$
+M*/(`!C9X-&,`(S3&("$``A$\``8TN``#&OP`AB`M?*7X`P!$("4T8P#X_(4`
+M``!#$"7<0@```^``"```$"T#X``()`+__R0%@`$\`__P``4L>#1C`",TI3`!
+M``,:_``%+;A\A/@#?`(`.S2E0@%\0@G#``(1/``%*G@`12@E-&,`^/RD````
+M0Q`EW$(```/@``@``!`M)`*``0`"%'@T0C`!``(5N'P#`#LT0D(!?&,)PP`#
+M&3P``A)X`&(0)=Q"```P0O__`^``"``"$``\`O_P-$(`(P`"%G@T0B`A?`,`
+M.P`"%+A\8PG#``,9/#1"`@@`8A`EW$(``#!"__\#X``(``(0`&>]_^C_L``(
+M`("`+13``#C_OP`0/`+_\"0#``$T0@`C``(5N#1"!`4``A5X-$(`"-Q"```2
+M`P`]`````!(``"HD`P`"$@,`/`````!\HOX'/`?_\#P%__`TYP`C-*4`(P#@
+M,"T`!SVX`*`8+33G!`4`!C9X`&`@+0`'/7@TQB`I``4N.#3G``C\X@````,:
+M_``&-+@TI1`5``0F>#1C`/C<9P``-,8`"/S"````!2SX-(0@*S2E``C<9@``
+M``0DN/RB```TA``(W&4``/R"``#?OP`0W[``"-QB```#X``(9[T`&``````(
+M`4-B?*(X!_^E```\!!`,#`&?Y&2$*J`\`O_P-$(`(R0#``'?I0````(5N#1"
+M!`4``A5X-$(`"-Q"```6`__%``````@!0V)\HGH'``````@!0V)\HKP')`6`
+M`7"$"/(`!2QX```8+32E,`$``!`M``4M>#P'``0TI2@!/`8`$``%*K@`A2@M
+M?*,B"@!G&"T49O_]`$00+0/@``@`````/`/_\``$$?HT8P`C``,=.#1C`0$`
+M`QWXW&,``,A@``0`````,$(``P/@``@``A````0;.@`$)+H`8A`F`$00)C!"
+M``,#X``(``(0```````\`_``/`40``"#&"T`92@K$*```R0"__\#X``(````
+M`#P"(``T0@`!`((0*P""&`M\8X2#`^``"``#$```````/`/_\``$$?HT8P`C
+M``,=.#1C`0$``QWXW&,``.A@``<`!!LZ?(1,@S!E``-P8Q"R`(4@)@""$"8`
+M0Q`F,$('_P/@``@``A``/`+_\#"C``<T0@`C``,<N``"%;APA`DS-$($!7"E
+M"?(``A5X-$('V`!B&"T`@Q@EW&,``#!C/_\P8A@`<&0R\@`"$(,P8P>``((0
+M)0`#&L``0Q`E`^``"`!%$"4`````/`+_\'"E%+(T0@`C<(0),P`"%;@T0@0%
+M``(5>#1"!^``HB@M`(4H)=RB``!\0QR#?$)1PP`#'0```A'``^``"`!B$"4`
+M`````^``""0"``L#X``()`((`#P#__`D`H`!-&,`(P`"%'@``QK\-$(P`31C
+M%!@``A6XW&,``#1"0@$D!``#``(2>-Q%````!"`\?&,0`@`#&#P09``/)`(`
+M!"0$``$`!"!\$&0`"R0"``@D!``!``0@/!!D``<D`@`,,*7__Q"@``0D`@`0
+M``40)S!"__]P0!`M`^``"`````!GO?_X_[\```P!1!0`````W[\``&>]``@#
+MX``(``(4@&>]_^C_L0`(`*"(+?^P``#_OP`0#`%$%`"`@"T"`A`J$$``)0``
+M&"TJ(@@`$$``+``0A(``$8G``A&`)20"__]^$/@#?%#_QKX'```````//`+_
+M\#1"`",``A6X-$($!0`"%7@T0@`0W$(``#!$``P0@``/)`0``7Q$'P)\10!#
+MW[\`$'R#$(9\0PA&?$2L@]^Q``A\HP`&W[```'R#^`<`8!`M`^``"&>]`!@`
+M````"`%$7'R#&,8\!!`,#`)_>F2$*MC?OP`0W[$`"```$"W?L````^``"&>]
+M`!@`````/`00#`(@*"UDA"L0#`)^O"0&"`#?OP`0W[$`"```$"W?L````^``
+M"&>]`!@`````9[W_X/^R`!``P)`M_[$`"`"@B"W_L```_[\`&`P!1!0`@(`M
+M`@(0*A!``"D``!@M*B((`!!``#P`$(2``!&)P`(1@"4D!/__?A#X`RY"``40
+M0``I?)#_QKX'```````//`+_\')2_+(T0@`C``(5N#1"!`4``A5X-$(`$'Y"
+M,@HPP@`,$$``!'S"'P(D`@`!?$,8QGS"'P)\Q`!#W[\`&'Q#$(9\PPA&?,*L
+M@]^R`!!\@P`&W[$`"'Q#^`??L````&`0+0/@``AGO0`@`````#P$$`P,`G]Z
+M9(0JV-^_`!C?L@`0```0+=^Q``C?L````^``"&>]`"`\!!`,`D`H+0P"?KQD
+MA"M0W[\`&-^R`!```!`MW[$`"-^P```#X``(9[T`(``````\!!`,`B`H+62$
+M*Q`,`GZ\)`8(`-^_`!C?L@`0```0+=^Q``C?L````^``"&>]`"`\`__P9[W_
+MT#1C`",`!!'Z_[0`(``#'3C_OP`H-&,!`?^S`!@``QWX_[(`$`"`H"W_L0`(
+M_[```-QC``#H8``J,%(``P`$DSH`!)RZ`D*0)@)3D"8R4@`#`!*0``*`("T,
+M`4/4``"`+7YSB`,`$Y@`#`%$%``"B``"`"`M`B`H+0("$"H00``/`D`P+0``
+M```,`42"`````-A#``,``A@`$',`%20#__\,`404)A```0(`("T"("@M`@(0
+M*A1`__0"0#`MW[\`*```$"W?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P
+M``2<N@@!1.\`$I```````'QT_\:^EP``W[\`*'Q"`$+?M``@W[,`&-^R`!#?
+ML0`(W[````/@``AGO0`P`````&>]_^!DI0!_,((`?_^P````HH`M_[$`"'P0
+M,`?_L@`0`("(+?^_`!A\$3`'$@``"```D"T``````B`@+0P!1-AF$/^`9C$`
+M@!8`__L`4I`AW[\`&`)`$"W?L0`(W[(`$-^P```#X``(9[T`(`````!GO?_X
+M_[\```P!1!0````````P+20(__\D!P@``````!!```L```````8I^```&"U]
+M!?_&``,DN`"%("6\@P``9&,``0!B("L4@/_[``,DN&3&``$4Q__RW[\```/@
+M``AGO0`(`````&>]_^#_L0`(`("(+?^P``#_OP`8#`%$%/^R`!`\`Q```$"`
+M+3P"\``"(A`M`$,8*Q1@`%,"("`M/`,@`#1C``$"(Q@K`B,0"WQ"A(,,`4/4
+M``*0`#P#__`T8P`C<$+!\@`#)3@D`___-(0!`7QB_\8`!"7X`!$9^MR$```P
+M:``#R(``1P`(0``D`___?''_QKX_``````$/$@``)0````"\1P``````#SP#
+M__``"$2X-&,`(P`#';@T8P0%``,=>#1C`!`!`T`MW0,``'QDK(,`!"``$)(`
+M'@``("T(`469`D`X+0````"\IP``````#]T#``!\9:R#``4H`!"G`!C?OP`8
+M?&:M`S!E``P0H``#``8P`!#'``X`````9(0``0`$++@`D!@K%&#_[P"B*"4D
+M`O__W[\`&-^R`!#?L0`(W[````/@``AGO0`@``````"0("L0@/_W)`+__]^_
+M`!@P8@`!W[(`$"Q"``'?L0`(<$(`.M^P```#X``(9[T`(`P!0]0`````/`00
+M#&2$*X@,`GZ\`B`H+0@!1:4D`O__`!%#.@`1)+H!`T`F`01`)C$(``,(`45Z
+M``A```````!GO?_@9*4`?S""`'__L````**`+?^Q``A\$#`'_[(`$`"`B"W_
+MOP`8?!$P!Q(```D``)`M``````(@("T,`4589A#_@&8Q`(```A`K%@#_^@)"
+MD"/?OP`8`D`0+=^Q``C?L@`0W[````/@``AGO0`@9[W_Z/^_`!#_L0`(_[``
+M``P!1!0`@(`M/`/_\#1C`",D!``!``,N>`!$$`0TI2`A)$3__WP1`#L`!2RX
+M?C$)PP!@$"T`D(`D`!$9/#2E`@A^$/@#`&4H)?RP`````A+\W[\`$#1"`/C?
+ML0`(`&(8)=QB`````!`MW[````/@``AGO0`8`````&>]_^@LH@@!_[````"@
+M@"W_OP`0$$``$O^Q``@,`404`("(+0!1$"L40``5`!&,@``0@<`"$8`E)`+_
+M_WX0^`-\4/_&O@,``-^_`!#?L0`(W[````/@``AGO0`8`````-^_`!`\!!`,
+MW[$`"&2$*\#?L```"`)_>F>]`!@`````W[\`$#P$$`S?L0`(9(0K\-^P```(
+M`G]Z9[T`&``````\`@`"9[W_Z#1"``$`H$@M_[$`"`"B$"O_L````("(+?^_
+M`!`00``T`,"`+1"@`"O?OP`0`2`0+0``."T``!@M.$@``0`"$'H`"$``)&,`
+M`3$(``$40/_Z`0<X(0!G.",H8@`*<.<`;CA"``$`XC@D$.``&3P%__`R(@`#
+M-*4`(R1C__<`!2TX``(1/#2E`0%P8QDR``4M^'X#``<TI0`P/`3_\`!%*"4T
+MA``C_*,````$(OS?OP`0-(,`^-^Q``@`0Q`EW[```-Q"```#X``(9[T`&```
+M``#?OP`0/`00#-^Q``@!("@MW[```&2$+'`(`GZ\9[T`&#P$$`P\!@`"#`)^
+MO&2$+"@(`48[/`D``@"`$"T`H#`M```@+0@!1BX`0"@M``````/@``@D`O__
+M`^``""0"__\#X``()`+__P/@``@D`O__`^``"``````#X``(```0+0/@``@D
+M`O__`^``"``````#X``(`````&>]_WC_L@!P/!(0"_^S`'@`@)@M_[\`@`"@
+M("W_L0!H9D4[Z`P"@V#_L`!@$$``$0)@("UGL`!8``"(+692.^@`0"`M#`)>
+MMB8Q``$``"`M`D`H+0P"@V"N`@``*B,`%P`","L`PQ@D%&#_]680__P"8"`M
+M`Z`H+0``,"T``!@M)`H``20)`!>,IP````,0``!*0`0D8P`!`01`)&2E``0`
+M2!`'`.(0!`!&$"44:?_V`$`P+=^_`(#?LP!XW[(`<-^Q`&C?L`!@`^``"&>]
+M`(AGO?_H_[````"`@"W_OP`0#`&72O^Q``@2``,!)`8!G`(`("T``"@M#`)F
+M8`!`B"T,`+=2)`0``ZX"```D`@`"EB8`P!#"`2QF`@`$)`(`#Q#"`95F`@`$
+M)`(`"!#"`?YF`@`$)`(`!A#"`$,`````)`(`$!#"`F)F`@`$)`(`"1#"`1,D
+M`@`-%,("N3P$$`QF`@#,H@``!&2$+-!DA0!``(`8+:(``&@`H#`MH@`!E*8`
+M`9;<9P``W&D`"-QH`!"P1P``W&<`&&1C`""P20`(L$@`$+!'`!@49O_V9$(`
+M()!J``!F!@$PD&D``9!H``*09P`#D&,`!*!*``"@20`!H$@``J!'``.@0P`$
+MW((``-R'``C<@P`0L,(``-R"`!ADA``@L,<`"+##`!"PP@`8%(7_]F3&`""0
+M@P`$```0+9")``"0B``!D(<``I"%``.@PP`$)`,``J#)``"@R``!H,<``J#%
+M``.B`P&5)`,`0`@!1_>F`P&8DB,`PBQC``048`!Q9@(`!#P#$`QD8RVH9&0`
+M0-QE``#<9P`(W&8`$+!%``#<90`89&,`(+!'``BP1@`0L$4`&!1D__9D0@`@
+MD&D``#P%$`R0:``!9*4M\)!G``)F!`!HD&8``V2J`$"08P`$H$D``*!(``&@
+M1P`"H$8``Z!#``3<H@``W*8`"-RC`!"P@@``W*(`&&2E`""PA@`(L(,`$+""
+M`!@4JO_V9(0`()"I```\`Q`,D*@``61C+CB0IP`"9@(`S)"F``-D:@!`D*4`
+M!*")``"@B``!H(<``J"&``.@A0`$W&0``-QF``C<90`0L$0``-QD`!AD8P`@
+ML$8`"+!%`!"P1``8%&K_]F1"`""0:0``/`40#)!H``%DI2Z`D&<``F8$`3"0
+M9@`#9*H`0)!C``2@20``H$@``:!'``*@1@`#H$,`!-RB``#<I@`(W*,`$+""
+M``#<H@`89*4`(+"&``BP@P`0L((`&!2J__9DA``@D*@``)"G``&0I@`"D*,`
+M`Y"B``2@B```H(<``:"&``*@@P`#H((`!"0$``(D`P"`H@0!E```$"VB!`&5
+MI@,!EJ8#`9C?OP`0W[$`"-^P```#X``(9[T`&``````\!!`,9(0LT&2%`$``
+M@!@M`*`P+=QG``#<:0`(W&@`$+!'``#<9P`89&,`(+!)``BP2``0L$<`&!1F
+M__9D0@`@D&L```"`."V0:@`!9@8`:)!I``(`H&`MD&@``Y!C``2@2P``H$H`
+M`:!)``*@2``#H$,`!-SB``#<Z``(W.,`$+#"``#<X@`89.<`(+#(``BPPP`0
+ML,(`&!3L__9DQ@`@D.L```"`&"V0Z@`!9@(`S)#I``(`H&`MD.@``Y#G``2@
+MRP``H,H``:#)``*@R``#H,<`!-QF``#<:``(W&<`$+!&``#<9@`89&,`(+!(
+M``BP1P`0L$8`&!1L__9D0@`@D&H``&8&`3"0:0`!D&@``I!G``.08P`$H$H`
+M`*!)``&@2``"H$<``Z!#``3<@@``W(<`"-R#`!"PP@``W((`&&2$`""PQP`(
+ML,,`$+#"`!@4A?_V9,8`()"(``"0AP`!D(4``I"#``.0@@`$H,@``*#'``&@
+MQ0`"H,,``P@!1X.@P@`$`````"0"``$D`P$`H@(!E```$"VF`P&6W[\`$-^Q
+M``C?L````^``"&>]`!@\!!`,9(0LT&2%`$``@!@M`*`P+=QG``#<:0`(W&@`
+M$+!'``#<9P`89&,`(+!)``BP2``0L$<`&!1F__9D0@`@D&L``#P'$`R0:@`!
+M9.<M&)!I``)F!@!HD&@``V3L`$"08P`$H$L``*!*``&@20`"H$@``Z!#``3<
+MX@``W.@`"-SC`!"PP@``W.(`&&3G`""PR``(L,,`$+#"`!@4[/_V9,8`()#K
+M``!F`@#,D.H``9#I``*0Z``#D.,`!*#+``"@R@`!H,D``J#(``.@PP`$W(,`
+M`-R'``C<A@`0L$,``-R#`!ADA``@L$<`"+!&`!"P0P`8%(7_]F1"`""0B0``
+M/`40#)"(``%DI2U@D(<``F8#`3"0A@`#9*H`0)"$``2@20``H$@``:!'``*@
+M1@`#H$0`!-RB``#<I@`(W*0`$+!B``#<H@`89*4`(+!F``BP9``0L&(`&!2J
+M__9D8P`@D*D``"0$``*0J``!```0+9"G``*0I@`#D*4`!*!I``"@:``!H&<`
+M`J!F``.@90`$)`,`@*8#`98D`P!`H@0!E*($`94(`4?WI@,!F``````\!!`,
+M9(0LT&2%`$``@!@M`*`P+=QG``#<:0`(W&@`$+!'``#<9P`89&,`(+!)``BP
+M2``0L$<`&!1F__9D0@`@D&T``#P'$`R0;``!9.<M8)!K``)DZ`!`D&H``P#@
+M,"V0:0`$9@,`:*!-```!`&@MH$P``:!+``*@2@`#H$D`!-S"``#<R@`(W,D`
+M$+!B``#<P@`89,8`(+!J``BP:0`0L&(`&!3-__9D8P`@D,P``&8"`,R0RP`!
+MD,H``I#)``.0Q@`$H&P``*!K``&@:@`"H&D``Z!F``3<@P``W(D`"-R&`!"P
+M0P``W(,`&&2$`""P20`(L$8`$+!#`!@4A?_V9$(`()"*``!F`P$PD(D``9"&
+M``*0A0`#D(0`!*!*``"@20`!H$8``J!%``.@1``$W.(``-SE``C<Y``0L&(`
+M`-SB`!ADYP`@L&4`"+!D`!"P8@`8%.C_]F1C`""0ZP``)`4``I#J``$D!`"`
+MD.D``@``$"V0Z``#D.8`!*!K``"@:@`!H&D``J!H``.@9@`$)`,!D*(%`92B
+M!0&5I@0!EJ8$`9@(`4?WI@,!F@`````\!!`,9(0LT&2%`$``@!@M`*`P+=QG
+M``#<:0`(W&@`$+!'``#<9P`89&,`(+!)``BP2``0L$<`&!1F__9D0@`@D&T`
+M`#P'$`R0;``!9.<M&)!K``)DZ`!`D&H``P#@,"V0:0`$9@,`:*!-```!`&@M
+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
+M"`%)P&2EC9`\!1`,"`%)P&2EC;`0P@`*`````#P%$`PLPG4Z%$#^(V2EE6`D
+M`GD8%,+^'CP%$`P(`4G`9*65L#P%$`P(`4G`9*65B!#"``@`````/`40#"S"
+M``T00/X59*6(Z#P%$`P(`4G`9*6(J#P%$`P(`4G`9*6(R!#"``@`````/`40
+M#"S")QT00/X)9*62*#P%$`P(`4G`9*61Z#P%$`P(`4G`9*62"!#"``@`````
+M/`40#"S"`!T00/W]9*6*@#P%$`P(`4G`9*6*4#P%$`P(`4G`9*6*:!#"``H`
+M````/`40#"S"`%040/WQ9*60""0"`%44POWL/`40#`@!2<!DI9`X/`40#`@!
+M2<!DI9`@$,(`"``````\!1`,+,(`%1!`_>-DI8FX/`40#`@!2<!DI8F`/`40
+M#`@!2<!DI8F8$,(`"``````\!1`,+,(`1!!`_==DI8Z0/`40#`@!2<!DI8Y@
+M/`40#`@!2<!DI8YX$,(`"``````\!1`,+,)U,Q!`_<MDI91X/`40#`@!2<!D
+MI90P/`40#`@!2<!DI910$,(`"``````\!1`,+,(`)!!`_;]DI8M(/`40#`@!
+M2<!DI8L(/`40#`@!2<!DI8LH$,(`"``````\!1`,+,(`-!!`_;-DI8S@/`40
+M#`@!2<!DI8RH/`40#`@!2<!DI8S`$,(`"``````\!1`,+,(`!1!`_:=DI8@8
+M/`40#`@!2<!DI8?H/`40#`@!2<!DI8@```4H`"0"``$`HA`$`$00)`/@``@`
+MHA`'`*0@!`/@``@`AA`E`````&>]_WC_L@!(`("0+?^_`(#_O@!X_[<`</^V
+M`&C_M0!@_[0`6/^S`%#_L0!`$(``PO^P`#B0@P&5`*"`+9""`90``Z@K``*@
+M*P*@0"T"E2`D%(``GP*`2"T2H`"S`&"X+993`9B>0P``/`)#&S1"WH,D$4X@
+M<&(0`SP#``\T8T(_``(4O@!#&"$L1P%P`&(`&P!``?0``#`2``880`(C`!H`
+M8`'T``"($```$!(`$8@K`B*((3(B``$`48@A*B(`!!1``(TLYP`!*B(`"1!`
+M`)HF-@`!)`(`!``64$`2(@`()!X`@20"``8`%E!`$B(`!"0>`((D`@`(%B(`
+MCR0>`(,D`@`!$N(`@P``6"W_I@`H9D4`!/^G`!`#P"`M_Z@`&/^I`"`,`4:*
+M_ZH`,&9%`&@#P"`M``)@``P!1HK_K``(9D4`S`/`("T``E@`#`%&BO^K```#
+MP"`M9D4!,`P!1HH``I```!,8>SKD``+?I@`H`&28"M^G`!```F@`WZ@`&-^I
+M`"#?J@`PWZL``-^L``@D`@`0$F(`#"0"`"`28@`+)`0``20"`$`28@`()`0`
+M`B0"`(`28@`%)`0``R0"`0`28@`")`0`!```("T\`P`[``8R0#1CF=``ZB@A
+M`&8`&@#``?0DI0`!``4H0S"J``$!12@A`+8H(R2E``$$H`!.```P$B8J``(Q
+M0@`!`$I0(20"__\!45`C)4H``1%"`$8\`@!```<Y`#1"0!``"4A``0)`)3P"
+M`&``XC@E`0E`)0`1$@``!"3``.8P)0$$("4`PC`E``4I@``6LP``A2@E`-:P
+M)0`*4H``$8P``*I0):X*```"T8@EKA$`!```$"VN$@`(K@P`$*X-``RN"P`4
+MHA4`&*(4`!FB%P`:W[\`@-^^`'C?MP!PW[8`:-^U`&#?M`!8W[,`4-^R`$C?
+ML0!`W[``.`/@``AGO0"(`````)93`98`0+@MED0!F`!B$"L`DR@K$$```@"%
+MF`L`8+@M"`%,0S+W`/\D`@`!)`H`"B0>`($D%@`%%N+_@"01``0``%@M``!@
+M+0``:"T(`4R.``"0+0`````2@``#`$"X+0@!3$.64P&6W[\`@"0"___?O@!X
+MW[<`<-^V`&C?M0!@W[0`6-^S`%#?L@!(W[$`0-^P`#@#X``(9[T`B`````!G
+MO?X@_[\!V/^R`=`D$@`!_[$!R/^P`<`,`9=*`("`+0.@("T``"@M)`8!G`P"
+M9F``0(@MEB,`P!!R`'$\!!`,)`(`"1!B`#`\!!`,$@``/`(`("T,`4PJ9Z4!
+MH!1``(P\!!`,D@4!E#P$$`R2`@&59(0OH``%*"L``A`K#`)^O`"B*"&2`P&4
+M%&``#P````"6`@&6D@0!E98%`9@``Q`*```8+0"D&`L`0Q`A``(5`-^_`=C?
+ML@'0W[$!R-^P`<`#X``(9[T!X)($`940@``8`````)8%`9B6`@&6,*;__S!'
+M__\`QS`K$,```@``````H!`MI@(!F#!%__^F`@&6"`%-+0"@$"T,`G]Z9(0O
+M.-^_`=C?L@'0/`(0`-^Q`<C?L`'``^``"&>]`>``````E@(!E@@!32V6!0&8
+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
+M$*,`0_^_```HH@`"%$``>B0#``(0HP`,/`+_\"0#``,0HP`C-$(`(SP$$`P,
+M`GZ\9(0OZ"0"__[?OP```^``"&>]``@`````,(0``S1"`",`!"$\``(4N#1"
+M`&$``A9X-$($&`""$"7<0@``R$``5#P%__`\`__P)`+__]^_```T8P`C``,<
+M^#1C`)4``QXX-&,`@`"#("4D`P`%W(0``&>]``@PA``!`^``"`!D$`LPA``#
+M``0A/``"%/@T0@##``(6.#1"!!@`@A`EW$(``,A``"<D`O__/`/_\-^_```T
+M8P`C``,<N#1C`$L``QYX-&,`@`"#("4D`P`&W(0``&>]``@PA``!`^``"`!D
+M$`LD`H`!/`7_\``"%+@PA``#-$)@`S2E`",``A>X``0A/#1"!!``!2SX`((0
+M)32E`)'<0@````4N.#2E`(``A2`EW(0``.A#`!??OP``,(0``20"__]GO0`(
+M`^``"`!D$`L\`O_P-$(`(P!`*"T``A2X-$(`80`%+/@``A9X-*4`DS1"!!``
+M!2XX`((0)32E`(#<0@```(4@)=R$``#(0__KW[\```@!4`8D`O__`````"0"
+M___?OP``-*4`(P`%++@TI0!)``4N>#2E`(``A2`EW(0``&>]``@PA``!`^``
+M"`!D$`L`````%*#_BSP"__QPA`DSW[\``#1"``D``A1X9$*`"0`"%S@T0@"`
+M`((@)=R"``!GO0`(,$(``2Q"``$#X``(<$(`.B0"1H$`!!D#``(0O'QB*08#
+MX``(?(((!B0"``$#X``(``(0/``````P@P`#)`(`(R1C``,``A+\``0A`WQB
+M4@8#X``(?((I!B0"``$#X``(``(1/`````!GO?_@_[````"`@"W_L0`(,A$`
+M`_^_`!@D!``#_[(`$`P!ODH"("@M?!+X.R0$``,,`+=2?A`)`SP#(8TT8^]!
+M`!"!/``"(+@``C'X``,<.`#$,"\T8VO;`,(P+20$@`$``QQX``0DN``&,3@T
+M8S3;-()@`P##`!T``A>X```P$#1"`)@`$28X`((@+0"0("7<@@````8TNA!`
+M``X`TC`M?`+X.P#"$"L40``D`B`H+7P#^#MD8P!D?`+X.P!#$"L40/_]````
+M`-R"```40/_T`````#P"__`\`__P-$(`(P`1(,```A2X-&,`(S1"``,``QK\
+M``(6>#1C`/@T0A;``((0+20$``$"`A`E`@.`)=Q#``!\@P`'_$,``-^_`!C>
+M`@`````0+=^R`!#?L0`(W[````/@``AGO0`@/`00#`P"?KQDA#``"`%0TCP"
+M__`D`X`!/`?_\``#'+API0XR-&-@`S3G`",``Q^X<(0),S1B`#``!SK\`*(0
+M+7S&^`,`1!`E-.<`^/Q&````AR`EW(,``-Q"```#X``(``(0/P"`$"T`H#`M
+M```@+0@!4/``0"@M`````&>]_\C_L````,"`+?^U`"@D!@`8_[0`(`$`J"W_
+MLP`8`2"@+?^R`!``@)@M_[$`"`"@D"W_OP`P#`%0\`#@B"T`$2@K,$8`_P#0
+M."HXX@`!`$4H)!2@``T``!@M/`+@`#1"1D$``A"\?F(I!A#``!)^0@@&?.+G
+M!WX"W0=^(IO'?J)S!P!`&"U^@U@'W[\`,`!@$"W?M0`HW[0`(-^S`!C?L@`0
+MW[$`"-^P```#X``(9[T`.``````DQ``!`)`@*@@!42A\@N<'9[W_\`"@6"T`
+MP%`M`.`8+0$`$"TPA0`#_[```'R$"0/_OP`(`2"`+0%@,"T!0#@M`&!`+0P!
+M40H`0$@M$$``!=^_``A\$!B@`",<`JQ#``#?OP`(W[````/@``AGO0`09[W_
+M\`"@6"T`P%`M`.`8+0$`$"TPA0`#_[```'R$"0/_OP`(`2"`+0%@,"T!0#@M
+M`&!`+0P!40H`0$@M$$```GP0&*"D0P``W[\`"-^P```#X``(9[T`$&>]__``
+MH%@M`,!0+0#@&"T!`!`M,(4``_^P``!\A`D#_[\`"`$@@"T!8#`M`4`X+0!@
+M0"T,`5$*`$!(+1!```/?OP`(H%```-^_``C?L````^``"&>]`!``!!D#,((`
+M`P"@8"TP8P`#`,!8+0#@4"UGO?_H`0!(+0!@("T`0"@M`8`P+0%@."T!0$`M
+M_[$`"`!@B"W_L```_[\`$`P!40H`0(`M%$``""0$___?OP`0`(`0+=^Q``C?
+ML````^``"&>]`!@``````!&(N`(P@"T\$1(:9C&%.'XP@8H2`/_TW[\`$(Q"
+M``#?OP`0W[$`"-^P``!\`B"@`"0D`@"`$"T#X``(9[T`&`#`&"T`H%`M`.`0
+M+6>]__@!`$@M,(4``P!@."U\A`D#`4`P+?^_```,`5$*`$!`+0!`&"T48``$
+M-`+__]^_```#X``(9[T`")1C``#?OP``9[T`"'P#$*`#X``(,$+__P#`&"T`
+MH%`M`.`0+6>]__@!`$@M,(4``P!@."U\A`D#`4`P+?^_```,`5$*`$!`+0!`
+M&"T48``$)`(`_]^_```#X``(9[T`")!B``#?OP``9[T`"`/@``@P0@#_````
+M`"0"@`$\`__P``(4N'"E#C(T0F`#-&,`(P`"%[APA`DS-$(`*``#&OP`HB@M
+M?.;X!@"D*"4T8P#X_*8```"#("7<@@```^``"````````````(`8+0"@$"T`
+MP#@M```@+0!@*"T(`5'<`$`P+0````!GO?]P_[0`8``$H0/_LP!8,I0``_^D
+M``@PDP`#_[\`B`)@*"W_L@!0`H`@+?^^`(#_MP!X_[8`</^U`&C_L0!(#`%/
+M]O^P`$``0"`M#`&0?@!`D"TD1/_X+(0``Q2`!F@D!``!$$0&<B1$__XLA``"
+M%(`&A"0$``L01`9T<$4&[W!$`2\`I"`D`H"(+12``Q8"8(`M/`/_\``0F,`T
+M8P`C`!'Q//^S`````QRX-&,``P`#'G@T8Q;`9&G_@`)CH"T":4@M`\F8)=YC
+M``#(9@9F/`,`_S1C_S]`!'@``(,@)#P#``TT8Y``$(,#+G!5`:[?A((`+((`
+M`0!5$"040`,\```````$$"L`5:@D%J`$O#P%$`P#U*`EWI8``,K``X,\%?_P
+MWI8``#P"__`T0@`C``(2_#1"`/A\%@`'_I8```/"$"7<0@``WH(``'P2^#L,
+M`+=2)`0``SP$(8TTA.]!``(8N``"*?@`!"0X`*,8+S2$:]L`8A@M``04>``#
+M&/@T0C3;`&(`'0``&!```QRZ`'(8+0````!\`O@[`$,0*Q1`__T`````?!+X
+M.PP`MU(D!``#)`,G$#P$(8UP0Q`#-(3O00`$)#@TA&O;``0D>#2$--L`1``=
+MWF(`````(!``!"2ZZ$@`#P"2("T`````?`+X.P""$"L40`+8`B`H+7P#^#MD
+M8P!D?`+X.P!#$"L40/_]`````-YB``#(2/_T`````"0"@`$`$)8X``(4N#1"
+M8`,``A>X-$($0`)"$"T`7A`EW$<``!#@``<"("`M/`00#`(@*"UDA#$X#`)^
+MO`(`,"T"("`M`@`H+20&`'@,`5#P)!8`!R0#`!\"("`M`@`H+0`"$``D!@!X
+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
+M#`%0\"0&`'@D`P`?`@`H+0)`("T``A``)`8`>'QB.`0D`P`'?&)RQ`P!4=P`
+M0#@M/`+_@#1"`=\`$"#```(2/#P%_X`T0@D`-*4!'P""("T`!2A\`B0@)20&
+M``/<@@``-*4$>P`%*?@`$!DX)`<`(`!E&"U\`B$'`'$8)7S""`<`$#&X?.)R
+M!P#%*"W\@@``9*5#8-QD````$('\`+&()0``$"W\9```_C```-^_`!C?L@`0
+MW[$`"-^P```#X``(9[T`(``````\`_^`-&,!!Q8```T``QH\-&,'@-QB```D
+M!``!?(+_QR0$``5\@J0')`0`%WR"8@?\8@``"`%8O"0'``8`````"`%8^31C
+M!X@(`5CM)`+__SP"_X`T0@$?``(1/#1"*%\``A$XW$4``!"```LPH@`_?*(M
+M@Q!``"D`````?*5_`S!&`/\`Q3`A),;__S#&__\(`5DE`,5`*A1```,`````
+M`^``"`````!\IB@#?*5Y@S#&`/\`Q3`A),;__S#&__\`Q4`J/`?_@#3G`1\`
+M!SD\-.<H7P`'.3C<XP``?&)_`WQC>8,5```(`&00"@#"&"H`11`J`&(0)1!`
+M__<``````^``"```````11@J`,(0*@!B$"000/_P``````/@``@`````````
+M`"0"@`$P@P`#``(4N``#'C@T0F`#?(0)`P`"%[@`!"$\-$($"`!B$"T`@B`E
+MW((``#!"``,#X``(<$(`[@`````\`__P9[W_X#1C`"/_L`````,<>#1C`!%P
+MD`DS_[\`&``#'KC_L@`0-&,`$/^Q``@"`Q@E`````-QB```$0/_^/!+_\#92
+M`",`$I1X-E(`$0`2EK@V4@$``A*0)=Y1``#*(``%)`,``3P$$`P,`G]Z9(0R
+M<"0#``$\`O_P?'$`!S1"`"/^40````(2_-^_`!@T0@#XW[(`$`("@"7>`@``
+MW[$`"-^P```#X``(9[T`(#P"__`\`__P-$(`(S1C`",``A1X``,:_#1"`!%P
+MA`DS``(6N#1C`/@T0@$``(,8)0""("7<@@``?`(`!_R"``#<8@```^``"```
+M````````/`/_\'"$"3,T8P`C``,<>#1C`!$``QZX-&,`$`"#&"7<8@``^$#_
+M_CP%__`D!@`!-*4`(WS"``?\8@````4J_#2E`/@`A2`EW(0```1!``4`````
+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
+M)`+__P/@``AGO0`(**@"`"C'`@`!!S@D`*`0+1#@`!<`P!@M/`7_\#"&``,T
+MI0`C<$)(\@`%+?@`!C$\-*4$23P'__``!2TX-.<`(P!%*"T`!SK\`*8H)33G
+M`/C<I````,<P)0``$"U\9$@'_*0``-S#```#X``(`````#P$$`QGO?_X_[\`
+M``P"?KQDA#-(W[\``"0"__\#X``(9[T`"```````H!`M*,,"`"BE$```HQ@D
+M$&``%P#`."T\`__P,(4``S1C`"-P0ECR``,=N``%*3PT8P(E/`;_\``#'7@T
+MQ@`C`$,8+0`&,OP`91@E-,8`^-QD````IB@E```0+7SD2`?\9```W*,```/@
+M``@`````/`00##P%$`QGO?_X9(0S>&2E3H#_OP``#`)^O`!`,"W?OP``)`+_
+M_P/@``AGO0`(/`+_\'"E*C(T0@`C<(0),P`"%?@T0@1#``(5.#1"`$@`HB@M
+M`(4H)=RB```#X``(,$(`_P`````D`H`!/`/_\``"%+@T8P`C-$)@`7"E*/(`
+M`A0X``,:_#1"$`EPA`DS``(3N#1C`/@`HB@M`(,8)0"%("7<@@``?,)K1_R"
+M``#<8@```^``"```````````)`*``3P#__```A2X<*4H\C1"8`$T8P`C``(4
+M.'"$"3,T0A`)``,:_``"$[@T8P#X`*(0+20%``$`@A`E`(,@)=Q#``!\HP`&
+M_$,``-R"```#X``(`````#P-__!PA`DS-:T`(W"E*C(!H$@M``UM^`$@8"TU
+MK01#``E*_``,9?@U*0#X``UM.#6,!$4`B4@E```0+36M`$@`#&4X/`L``20*
+M0```K1@M`*LH+0!D&"7<:```,0@`/P$"0"UD0B````A`^`$,0"T!!$`EW0,`
+M`'S#M8=\X[W'_0,``-TC```42O_P``````/@``@`````/`[_\'"$"3,US@`C
+M<*4J,@'`4"T`#G7X`4!H+37.!$,`"E+\``UM^#5*`/@`#G4X-:T$10"*4"4`
+M`!@M-<X`2``-;3@\#``!)`M```"N$"T`K"@M`$00)=Q)```Q*0`_`2-(+61C
+M(```"4CX`2U(+0$D2"7=(@``?,+O1WSBUH=]`LY'_2(``-U"```4:__O````
+M``/@``@``````````#P+__!PA`DS-6L`(W"E*C(!8#@M``M=^`#@4"TU:P1#
+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
+M-*4")P`%+7@TI0!@`.4H+0!E0"7=$0```BD0*Q1``!$D`@`!)`H`%0````#=
+M$0```BD@*Q2``OL`````)$(``11*__H`````_Z,`B#P$$`S_IP"`#`)^O&2$
+M-R#?IP"`WZ,`B#P%__`D"0`!-*4`(P`)3#P`!2VX-*4")P`%+7@TI0!H`.4H
+M+0!E0"7=$@```DD0*Q1``!$D`@`!)`H`%0````#=$@```DD@*Q2``K\`````
+M)$(``11*__H`````_Z,`B#P$$`S_IP"`#`)^O&2$-R#?IP"`WZ,`B#P%__`D
+M"@`!-*4`(P`*5#P`!2VX-*4")P`%+7@TI0!P`.4H+0!E2"7=)@```,H0*Q1`
+M`!+_I@``)`(``20+`!7=)````(HP*Q3``IL`````)$(``11+__H`````_Z0`
+M`/^C`(@\!!`,_Z<`@`P"?KQDA#<@WZ<`@-^C`(@\!?_P)`H``32E`",`"E0\
+M``4MN#2E`B<`!2UX-*4`>`#E*"T`94@EW28```#*$"L40``3_Z8`""0"``$D
+M"P`5`````-TD````BC`K%,`"C0`````D0@`!%$O_^@````#_I``(_Z,`B#P$
+M$`S_IP"`#`)^O&2$-R#?IP"`WZ,`B#P%__`D"@`!-*4`(P`*5#P`!2VX-*4"
+M)P`%+7@TI0"``.4H+0!E2"7=)@```,H0*Q1``!/_I@`0)`(``20+`!4`````
+MW20```"*,"L4P`)G`````"1"``$42__Z`````/^D`!#_HP"(/`00#/^G`(`,
+M`GZ\9(0W(-^G`(#?HP"(/`7_\"0*``$TI0`C``I4/``%+;@TI0(G``4M>#2E
+M`(@`Y2@M`&5()=TF````RA`K%$``$_^F`!@D`@`!)`L`%0````#=)````(HP
+M*Q3``HD`````)$(``11+__H`````_Z0`&/^C`(@\!!`,_Z<`@`P"?KQDA#<@
+MWZ<`@-^C`(@\!?_P)`H``32E`",`"E0\``4MN#2E`B<`!2UX-*4`D`#E*"T`
+M94@EW28```#*$"L40``3_Z8`("0"``$D"P`5`````-TD````BC`K%,`"8P``
+M```D0@`!%$O_^@````#_I``@_Z,`B#P$$`S_IP"`#`)^O&2$-R#?IP"`WZ,`
+MB#P%__`D"@`!-*4`(P`*5#P`!2VX-*4")P`%+7@TI0"H`.4H+0!E2"7=)@``
+M`,H0*Q1``!/_I@`H)`(``20+`!4`````W20```"*,"L4P`)5`````"1"``$4
+M2__Z`````/^D`"C_HP"(/`00#/^G`(`,`GZ\9(0W(-^G`(#?HP"(/`7_\"0*
+M``$TI0`C``I4/``%+;@TI0(G``4M>#2E`+``Y2@M`&5()=TF````RA`K%$``
+M$_^F`#`D`@`!)`L`%0````#=)````(HP*Q3``B\`````)$(``11+__H`````
+M_Z0`,/^C`(@\!!`,_Z<`@`P"?KQDA#<@WZ<`@-^C`(@\!?_P)`H``32E`",`
+M"E0\``4MN#2E`B<`!2UX-*4`N`#E*"T`94@EW28```#*$"L40``3_Z8`."0"
+M``$D"P`5`````-TD````BC`K%,`!\0`````D0@`!%$O_^@````#_I``X_Z,`
+MB#P$$`S_IP"`#`)^O&2$-R#?IP"`WZ,`B#P%__`D"@`!-*4`(P`*5#P`!2VX
+M-*4")P`%+7@TI0#``.4H+0!E2"7=)@```,H0*Q1``!/_I@!`)`(``20+`!4`
+M````W20```"*,"L4P`'+`````"1"``$42__Z`````/^D`$#_HP"(/`00#/^G
+M`(`,`GZ\9(0W(-^G`(#?HP"(/`7_\"0)``$TI0`C``E,/``%+;@TI0(G``4M
+M>`#E*"T`94`EW1````()$"L40``1)`(``20*`!4`````W1````()("L4@`%3
+M`````"1"``$42O_Z`````/^C`(@\!!`,_Z<`@`P"?KQDA#<@WZ<`@-^C`(@\
+M!?_P)`H``32E`",`"E0\``4MN#2E`B<`!2UX-*4`"`#E*"T`94@EW2@```$*
+M$"L40``3)`(``20+`!4`````W2@```$*("L4@`%!`````"1"``$42__Z````
+M`/^C`(@\!!`,_Z<`@&2$-R`,`GZ\_Z@`>-^H`'C?IP"`WZ,`B#P%__`D"P`!
+M-*4`(P`+7#P`!2VX-*4")P`%+7@TI0`0`.4H+0!E4"7=20```2L0*Q1``!4D
+M`@`!)`P`%0````#=20```2L@*Q2``1L`````)$(``11,__H`````_Z,`B#P$
+M$`S_IP"`9(0W(/^H`'@,`GZ\_ZD`<-^I`'#?J`!XWZ<`@-^C`(@\!?_P)`P`
+M`32E`",`#&0\``4MN#2E`B<`!2UX-*4`&`#E*"T`95@EW6H```%,$"L40``8
+M)`(``20-`!4`````W60```",,"L4P`$7`````"1"``$43?_Z``````"`4"W_
+MHP"(/`00#/^G`(!DA#<@_Z@`>/^I`'`,`GZ\_ZH`:-^J`&C?J0!PWZ@`>-^G
+M`(#?HP"(/`7_\"0$``$TI0`C``0D/``%+;@TI0(G``4M>#2E`"``Y2@M`&5H
+M)=VL```!A!`K%$``&R0"``$`@&`M)`X`%0````#=I````(PP*Q3``.L`````
+M)$(``11.__H``````(!@+?^C`(@\!!`,_Z<`@&2$-R#_J`!X_ZD`</^J`&@,
+M`GZ\_ZP`8-^L`&#?J@!HWZD`<-^H`'C?IP"`WZ,`B#P%__`D!``!-*4`(P`$
+M)#P`!2VX-*4")P`%+7@TI0`H`.4H+0!E:"7=K@```<00*Q1``!TD`@`!`(!P
+M+20/`!4`````W:0```".,"L4P`$1`````"1"``$43__Z``````"`<"W_HP"(
+M/`00#/^G`(!DA#<@_Z@`>/^I`'#_J@!H_ZP`8`P"?KS_K@!8WZX`6-^L`&#?
+MJ@!HWZD`<-^H`'C?IP"`WZ,`B#P%__`D#P`!-*4`(P`/?#P`!2VX-*4")P`%
+M+7@TI0`P`.4H+0!E:"7=JP```6\0*Q1``!TD`@`!)!@`%=VD````CS`K%,``
+MXP`````D0@`!%%C_^@``````@%@M_Z,`B#P$$`S_IP"`9(0W(/^H`'C_J0!P
+M_ZH`:/^K`%#_K`!@#`)^O/^N`%C?K@!8WZP`8-^K`%#?J@!HWZD`<-^H`'C?
+MIP"`WZ,`B#P$__!]"'@!-(0`(R0%@`$`!"7X``4L>#2$!$\TI0(!``0E.``%
+M+#C?I@``9((`"&1-``@`Y"`M`.(0+0#M."T`9"`E`&(0)=R-````9S@EW$0`
+M`#2E(!_<X@````4K^/_(`$!\R'@!WZ8`$'[W>`'_R`!P?M9X`?_7``!^M7@!
+M?,=X`7Z4>`'?I@`(?G-X`?_'`'A^4G@!_]8`"'XQ>`%\R'@!?A!X`=^F`"!\
+M0G@!_\@`@'TI>`'_U0`8?4IX`7S'>`%]C'@!WZ8`&'W.>`'_QP"(?6MX`?_4
+M`!!\A'@!?,AX`0!E&"7?I@`P/`4``?_(`)`TI?``_],`(/_2`"A\QW@!WZ8`
+M*/_'`+#_T0`P_]``.'S(>`'?I@!`_\@`N/_)`$C_R@!0?,=X`=^F`#C_S`!8
+M_\X`8/_+`&A\R'@!_\<`P'VG>`'_P@"H)`(``?_$`*#_R`#(_\<`F/QB``#?
+MI`!(W[\`V-^^`-#?MP#(W[8`P-^U`+C?M`"PW[,`J-^R`*#?L0"8W[``D`@`
+MP#YGO0#@*$(`%!1`_K8`````"`%CVO^C`(@`````*$(`%!1`_O(`````"`%D
+M&/^C`(@`````*$(`%!1`_LH`````"`%C^/^C`(@`````*$(`%!1`_-(`````
+M"`%B"/^C`(@`````*$(`%!1`_*X`````"`%AZO^C`(@`````*$(`%!1`_R<`
+M@&`M"`%D8?^C`(@`````*$(`%!1`_OD`@%`M"`%D._^C`(@`````*$(`%!1`
+M_6__I```"`%BO?^C`(@`````*$(`%!1`_4H`````"`%BGO^C`(@`````*$(`
+M%!1`_:/_I``0"`%B_?^C`(@`````*$(`%!1`_7W_I``("`%BW?^C`(@`````
+M*$(`%!1`_-X`````"`%B1/^C`(@`````*$(`%!1`_+H`````"`%B)O^C`(@`
+M````*$(`%!1`_0X`````"`%B@/^C`(@`````*$(`%!1`_.H`````"`%B8O^C
+M`(@`````*$(`%!1`_C__I`!`"`%CO?^C`(@`````*$(`%!1`_AG_I``X"`%C
+MG?^C`(@`````*$(`%!1`_S,`@%@M"`%DL?^C`(@`````*$(`%!1`_P,`@'`M
+M"`%DB?^C`(@`````*$(`%!1`_:?_I``@"`%C/?^C`(@`````*$(`%!1`_8'_
+MI``8"`%C'?^C`(@`````*$(`%!1`_=O_I``P"`%C??^C`(@`````*$(`%!1`
+M_;7_I``H"`%C7?^C`(@`````9[W^P/^Q`/@`!8@`_[``\`"`@"T`!",`,A``
+M`_^_`3@`D2`A_[X!,/^W`2C_M@$@_[4!&/^T`1#_LP$(#`$X9O^R`0`"("`M
+M#`$X>@!`D"T"0"`M#`$X8@!`*"T\#?_P-:T`(P`0(3P`#6VX<$(J,C6M`B<\
+M!?_P``UM>#2E`",UK0`X``4M^&6G``@`31@M`$<P+0!D&"7<=@```,0P)?^F
+M`!!D_@`8W,8``&3W`"#_HP`(9.,`"`!#&"T`7O`M_Z8``&3F`!``9!@E`$8P
+M+0!7N"T`Q#`E`\3P)0+DN"7_MP`P`&!`+=T(``!D]0`HW-(``&3T`##?UP``
+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
+M"`&!#``````(`8$,``````@!@/(`````"`&`\@`````\!!`,/`40#&2$5$@(
+M`GZ\9*56\`````!GO?_H_[$`"`"@B"W_L```_[\`$`P!.PX`@(`M)`,`"0`"
+M$``00P`(W[\`$`(`("W?L````B`H+=^Q``@(`3@F9[T`&``````D`O__W[$`
+M"-^P```#X``(9[T`&``````\`__\/`?_\#1C``DTYP`C``,<>``'.OQD8X`%
+M```0+0`#'S@TYP#X-&H!`"0)`(`\!O_\/`,``33&``DT8Q^`_4`````&-'C<
+MZ```9,:`!0`&-S@\"/_P?$,P!S4(`",TQA````A"_/S#```D0@`!W.,``!1)
+M_^XU"`#X``4HPCP#__QP@A4R-&,`"22D__\``QQX?()@!V1C@`_\PO`0W0(`
+M```#%S@D`P___$,``-T"```#X``(```````````\`O_\9[W_\#1"``G_OP`(
+M``(4>/^P``!D0H`%``(7.-Q0``#*```#/`00#`P"?WIDA%1H#`$0\@``("T\
+M!/_\-(0`"20#``%\4`A'``0D>'QP``=DA(`%?'`0AP`$)SC\D```/`+_\-^_
+M``@T0@`CW[`````"$OPT0@#XW$(```/@``AGO0`0/`+__#P$__`T0@`)-(0`
+M(P`"%'@`!"+\9$*`!32$`/@``A<XW$,``'P#``?\0P``W((```/@``@`````
+M`````#P"__QGO?_(-$(`"3P#__```A1X-&,`(_^T`"!D0H`%_[,`&``"%SC_
+ML@`0``,:_/^P```T8P#X_[\`,&14`0#_M0`H``"`+?^Q``@`8)`MW$0``"03
+M`(!\!``'_$0``-QB````````/!'__#P"``$V,0`)-$(?@/Z`````$8QXWD,`
+M`&8Q@`4`$8\X/`/_\'X",`<T8P`C-C$!``(`("W^(@\`)A```0`#$OS>0P``
+M#`"XDC15`/@6$__K`````-XB_P`D`P`!?&(8Q_XB_P#>H@``W[\`,-^U`"C?
+MM``@W[,`&-^R`!#?L0`(W[````@!$@IGO0`X9[W_:/^D``#_OP"0_[8`>`#@
+ML"W_LP!@`*"8+?^R`%C_L`!(`,"`+?^^`(C_MP"`_[4`</^T`&@,`2OZ_[$`
+M4`P!*_[_H@`PWZ0``"B#`"APD@_O.&,``0!R&"048`!H`G`8(2AC`($08`!-
+MWZ8``!)``'D`````&@`!(205__\D!?__```8+20&__\D#0`))@S__P(`6"T0
+MI@`C,&0`#Q:F`"0``T`K?L0YBG#G`F\`Z#@D%.``'R1U__\!@T@F`,`@+0&)
+M(`H`@$@M`2"H+21C``$4:__P`````!B@`&(\!!`,)`,``_^C`"@,`GZ\9(15
+M>-^_`)#?H@`HW[X`B-^W`(#?M@!XW[4`<-^T`&C?LP!@W[(`6-^Q`%#?L`!(
+M`^``"&>]`)A^Q#F*$.T`,@`````"HT`J<J?_[P$'."00X/_C`````'[$(8H4
+MC?_@/`00#`!@*"T"H#`M#`)^O&2$50#?OP"0W[X`B"0#``/_HP`HWZ(`*-^W
+M`(#?M@!XW[4`<-^T`&C?LP!@W[(`6-^Q`%#?L`!(`^``"&>]`)@\!!`,/`40
+M#"0#``)DA%2X9*57"`)@."T"`$`M#`)^O/^C`"C?OP"0WZ(`*-^^`(C?MP"`
+MW[8`>-^U`'#?M`!HW[,`8-^R`%C?L0!0W[``2`/@``AGO0"8"`%M!@!@*"W?
+MI@``/`00##P%$`PD`P`!_Z,`*&2$5)@,`GZ\9*57"-^_`)#?H@`HW[X`B-^W
+M`(#?M@!XW[4`<-^T`&C?LP!@W[(`6-^Q`%#?L`!(`^``"&>]`)@`````&@#_
+MVO^@`"@D%?__)`7__R8#__\\$?_P_Z,`"#8Q`"/?HP````4H)V1"__@`$8K\
+M?*4'PP``\"TP8P`_-C$`^/^C`!`R8P!__Z4`&/^@`"BOHP`DKZ(`.-^C``@S
+MP@!_,\4`#P`>6,-^Q2F*`],P(7!^0"IQ=`!RCZ,`)'$7!#)_UWM'``8APP!#
+M$"'?HP`0?'=AQ]^C`!A\5S`'`KX0*CA"``%\=_>&?%?O1G/5$"I\5__&+*(`
+M"A1``#-\E``'_Z8`0#P"$`P,`GZ\9$15T-^F`$`D`O__)`,``_^C`"A\5^5&
+M`````!)``#$`````WZ,`,##,__^/IP`X`8`@+?^L`$```"@M#`"WE@`#,``4
+M0`!'WZP`0`P`N0H!@"`M?$08`0`"(`I\EZ1%```!3SP$__P\`O_\-(0`"31"
+M``D`!"1X``(4>&2$@`5D0H`%``0G.``"%S@TA`$`-$(0`/R4```GW@`!WB0`
+M`/Q7``#>(@``%]#_N=^C``@(`6U0W[\`D``````\!!`,``4H^&2$5J!\A2H*
+M`*``"``````D`O__%D#_TGQ7Y48`````"`%MOWP7I$4D`@!_"`%MKGQ7Y48`
+M````)`(`=P@!;:Y\5^5&`````"0"`%<(`6VN?%?E1@`````D`@!5"`%MKGQ7
+MY48`````)`(`20@!;:Y\5^5&`````"0"`!$(`6VN?%?E1@`````D`@`!"`%M
+MKGQ7Y48`````"`%MKGP7Y48D`__\$$,`"B0#__\00P`2/`00##P%$`QDA%9H
+M#`)^O&2E5P@D`P`&"`%M3_^C`"C?I@``/`00##P%$`PD`P`%9(16.&2E5P@,
+M`GZ\_Z,`*`@!;5#?OP"0/`00##P%$`QDA%8(#`)^O&2E5P@D`P`$"`%M3_^C
+M`"@(`6U/_Z``*&>]_^#_L```,)``?_^_`!@D!``!_[(`$`#`D"W_L0`(#`"W
+M4@"@B"T\!/_\-(0`"3P#__``40`?`B`!]``$)'ADA(`%`@`H+0`$)S@T8P`C
+M-(00(``#&OPT8P#X```0+0``,!(`!CDZ?.:X`WSE^@=PTI`#_(4``-QE````
+M$I(Z?E#Z!_R0``C?OP`8W[(`$-^Q``C?L```W&,```/@``AGO0`@`````&>]
+M_^#_L0`(`("(+?^_`!@D!``!_[(`$`#`D"W_L```#`"W4@"@@"T\"/_\-0@`
+M"3(D`'\``A$X``A$>`!0`!\"``'T`(`H+64(@`4\!__P``A'.#3G`",U"!`@
+M``<Z_#3G`/@``!`M```8$G!RD`,``S&X``-*.``#&``!)C`O<&-AL@`&,CI\
+MQ?H'?&60!OT%````$I(ZW.,``'Y$^@?]!``(W[\`&-^R`!#?L0`(W[```-SC
+M```#X``(9[T`('P"`#M\0@G#``4H```"$P``@B`M"`%TMC"$__\`````?`(`
+M.WQ""<,`@"@M"`%T:`!`("T`````/`(4)&>]_^",0[98_[``$```@"T08``&
+M_[\`&-^_`!@"`!`MW[``$`/@``AGO0`@/`9C=CP#-+@TQFU?-&,WN0`&-#@`
+M`QPX-,9P:S1C.A<D!0`!``8T.*Q%ME@``QQX-,9O7S1C+BX#H"`M)`4!`/^F
+M```,`-(^_Z,`"!!`_^<`0(`M/`00#`P"?WIDA%<@W[\`&`(`$"W?L``0`^``
+M"&>]`"````````02`V>]_\@P0@#_)`,`WO^S`"@PDP#__[(`(`"@D"W_L0`8
+M`,"(+?^P`!!\D`P#$$,`!?^_`#`PA`#_?!``.P"`F"U^$`G##`%NB``````\
+M`V-V/`(TN#1C;5\T0C>Y``,<.``"%#@T8W!K-$(Z%P`#'#@``A1X`F`H+31C
+M;U\T0BXN_Z,```.@("W_H@`(?D7X!@`1,``,`-*`)`<``20#__\00P`.`!`8
+MN``0(3@`@Q@O`'"`+SP#%!D"$Y@M9&.>6``3FC@"<I`M`!*1N`)#D"VB0@`2
+M```0+:)1`!/?OP`PW[,`*-^R`"#?L0`8W[``$`/@``AGO0`X```````$$@-G
+MO?_0,$(`_R0#`-[_L@`@,)(`__^Q`!A\D0P#_[``$`"@@"T00P`%_[\`*#"$
+M`/]\$0`[`("0+7XQ"<,,`6Z(```````1&3@`$1"X/`04&0!B$"\\`V-V`%&(
+M+SP"-+@",I`M9(2>6``2DC@T8VU?`E"`+31"-[D`$(&X``,<.`($@"T``A0X
+M@@4`$C1C<&N"!@`3-$(Z%P`#'#@``A1X-&-O7S1"+B[_HP```Z`@+0P`TW#_
+MH@`(%$```R0#__^B`P`2H@,`$]^_`"C?L@`@W[$`&-^P`!`#X``(9[T`,```
+M``!GO?^X_[<`.#P7%!G_M@`P9O>>:O^U`"@D%@`+_[0`(```J"W_LP`8)!3_
+M__^R`!`D$P$`_[\`0```D"W_L0`(#`%NB/^P```"]8@M``"`+8(B```"`"@M
+M`D`@+280``$05``#9C$`0`P!;O(`````%A/_]P`````F4@`!%E;_\F:U0`#?
+MOP!`W[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`2&>]
+M_Z#_OP!8_[X`4```\"W_MP!(/!<4&?^V`$!F]YYJ_[4`."06``O_M``P``"H
+M+?^S`"@\$Q`,_[(`("04____L0`89G-76`P!;HC_L``0/`-C=CP"-+@T8VU?
+M-$(WN0`#'#@``A0X-&-P:S1".A<``QPX``(4>#1C;U\T0BXN`Z`@+202`0#_
+MHP``#`#3]O^B``@``````O6(+0``@"V"(@```@`P+0)@("TF$``!`\`H+1!4
+M``,`0#@M#`)^O((H``$6$O_V9C$`0"?>``$7UO_Q9K5``-^_`%C?O@!0W[<`
+M2-^V`$#?M0`XW[0`,-^S`"C?L@`@W[$`&-^P`!`#X``(9[T`8&>]_^C_L0`(
+M`*"(+?^P````@(`M_[\`$-R#``C<A```?&,BPBAE``\0H``3`&`0+12``$@`
+M````9&0``R1C``$`!"#X,&,`'P($("T`8!`M_)$``)8$``H`@"@M?&7ZQ*8%
+M``K?OP`0W[$`"-^P```#X``(9[T`&!2``#:'@X!4?`0`.P1A``Q\A`G#/`/_
+MX``$(3PT8P!5``,=.#1C``,``QVX-&,`$`"#&"7<8P``,&,/_Z>#@%0\!/^`
+M?&4*@S2$`2D`!"(\?*0Y!GQDS`?<A```$(``,R0%__\D1O_^?*3_Q@`&,/C^
+M!```9@4`*`P"95RF`P"@W@0``-X&`!@``!`MW@4`")8#``I\AT@!``0X"@`&
+M,CY\I2+".,8``3"E`/\P8P?_?.)(!31C&`"F`P`*?,)C!OX"`"@DHO_^I@(`
+M*"0#``+>`@`H?&)[1OX"`"B6`@`H+$,!_A!@``H``ACX`(,@+?R1``"6!``H
+MW@,`""2$``&F!``H?&,BP@@!;[,`8A`M/`00##P%$`QDA%>(#`)^O&2E7F@(
+M`6^S)`+_^?X````(`6^S)`+_ZMR#``CX8``1```0+<A_``YD@P`8W((`L/R#
+M`!`D`P`(?$4A@@`%*``PI0`<$*,`"GQ%)4*4@P`*```0+31C``$#X``(I(,`
+M"B0"_^H#X``(``````````"0@P"M``4H`#"E`!B@@P`=)`,`$!"C`!@`````
+M?$(E0B0#`!$``A5\``,=?!!#``XD`P`!``,>?!!#``<D`P`)``,=O!1#_^4`
+M````)`(``P@!<!.@@@"D)`(``@@!<!.@@@"D`````"0"``$(`7`3H((`I```
+M``"0@P"J"`%P(Z"#`!P`````/`(0#"R#`!`08``%9$)7J#P"$`QPA/CR9$)<
+MR'Q$$@H#X``(`````&>]_L#_L0#X``6*NO^_`3C_O@$P_[<!*/^V`2#_M0$8
+M_[0!$/^S`0C_L@$`_[``\!(D``;_I`"P_Z4`Z#P$$`P,`G]Z9(17P-^E`.C?
+MHP"P/!#_X#80`%4`$(6X-A``#3!R``,`$(4X`!*Y/#80``@"\'@EW>(``.A`
+M`D?_KP#@/`/_X"0"``$T8P!5<C$*L@!@."T``QWX-&,``0`'/3@``QSX-.<`
+M`S1C`/@`!SVX`N,8)33G``C<9```9.@`$&3F``A\L4@'`N<X)0+F,"5\1`A'
+M`N@H)?QD``#\X```_-$``/RB``!\$?@[)`0``PP`MU)F$/_X/`0(,32$)ND"
+M\(`E``0D.``"$/K_L`#8-(-XU0`#'+AD8_?/`$,`'0``&!```QDZ``,0N``#
+M&3@`0Q`M``(@N`!$$"T`42`MWZ,`V-QF``!\`_@[`,`0+0"#&"L48``#?`+P
+M!1!`__G?HP#8$$`"'R0%``,\`O_@-$(`50!`("T``A"\-$*0`P`$)/@``A(X
+M-(0``0+B$"4`!"7XW$,```+D("5\HS`'_$,``"0"`>#\@@``#`$[#``````#
+MH"`M_Z``J```*"T``A``)`8`H/^@`*`,`F9@_Z(`R&>B``)GI`!()`,`'Z!`
+M``"@0/_^H$/__V1"``441/_[WZ\`R!'@`$@#H*@M`!*4."04``DV4MX`_[(`
+MT```D"W?HP#0,E``_P(#@"4"`"`M#`$[#@(`B"T"`"`M#`$[G``"@``2```T
+MWZ\`R'($`BYR`P+N`(,8)7($`F\X8P`!`(,8)!!@`;,`````$$``*@!`J"TR
+M(@#_``#P+21$``(``A"```0@0"1"``+_I`"X+E8``_^B`,``````%L`!'0/`
+MF"T,`3L.`B`@+0`"$``05`$A+$0`"A"``1`D!``*)`0`"!!$`.\D"0`!WZ,`
+MP`)C2"$%(``#*2(`#A1``.HD`@`,WZ8`L#P$$`P\!1`,9(186&2E76@"0#@M
+M`\!`+0P"?KPD"@`.)]X``0/5$"L40/_BWZ\`R"92``$5\O_!WZ,`T`.@J"UG
+ML0!&`Z`0+0``,"V00P``9$(`!111__T`9C`A+,0`$20'``$4@``?)`D`!`*@
+M$"T(`7$B`2`H+0`````4@``/9$(`!1!1``T`````D$,``!1E__H`````D$@`
+M`@#H0"L5`/_V``,8>J!#````PS`C+,0`$1"`__-D0@`%+.(`!!1```,DYP`!
+M``E(0B0'``$X@P`!``D0*P!B$"040/_D`J`0+3P3$`P\$A`,HZ``K"0'``,D
+M%``$``"P+20>`!]F<UB09E)=:`@!<4<"H(`M`````&80``42,``>`````)("
+M````5!`K%$#_^@````"2`@`!%%[_]W[$Z(,D`P`$D@8``P.D$"V010"@HA8`
+M`0#%*"$2@P$8H$4`H"0#``(2@P$2)`,``1*#`4@RQ0`"_Z<`Z`)@("T,`GZ\
+M`D`H+=^G`.@"U+`A9A``!18P_^0`````).?__Q3@_]L`%*!"+L(`$1!``6T\
+M`O_@9Z8`J#1"`%5GI0"@``(0?"0,``$T0D@!)`L``@`"$G@D#@`#9$T`*)#(
+M```"XB`EW(,```'`>"TQ!P`'*.H``WQI$`,!:G@+,2D`_Q$H``(!X%`M?8,Q
+MAY"H``!\XQ`'+0<`*!3@`-0M!P`*?4,HQ_R#``!D0@`(?`,QAV3&``'\@P``
+M%$W_Z&2E``%D1_Y(9Z,``61"_=B09@```N(@)=R%``!D0@`(9&,`!7S%(`?\
+MA0``%$?_^``````\%O_@/!(0##;6`%4``(`M`!:U^&9276@VU@`5`!:T^```
+M``"2H@``$$``*9*Q``0L0P`%$&``!"0$"@```B)```(2P`""("$2``"6)!0!
+M`"0"``$2`@#M)!0`@``1$T!^,0A#``+Q`C/&#_\STPX``,"@+0!$$"$``A$"
+M,$0/_Q""``0\#Q`,`D`H+0P"?KQEY%C8$]0`!@)`*"T\!!`,#`)^O&2$60`D
+M`@__?%-8!P+V$"7\4P``/`+_Z`+"$"T`5Q`EW$,``'XC,4?\0P``)A```20"
+M``YFM0`%%@+_T6;6``C?KP#@)`,``0``$"W]XP``WZ,`V-QF```$P0#W/`40
+M#-^_`3C?O@$PW[<!*-^V`2#?M0$8W[0!$-^S`0C?L@$`W[$`^-^P`/`#X``(
+M9[T!0"0"``P2`@`O`B`@+20"``\2`@!=)`(`!1("`(,D`@`0$@(`DP(@("T2
+M%``Y)@+_]BQ"``(40`!J)`(`"!8"`#X#P"@M``D0N`!)2"TD`@`$`ZE(+:$B
+M```D`@`"H2(``B0"`#*A(@`#)`(``0@!<0>A(@`$`````!!$`"$D!``+%$3^
+M\M^C`,`(`7#^)`G__P(@("T,`0%,`\`H+0(@("T,`3L.``*````"$``45/[A
+M+$0`"B0"``P6`O_4``!(+0(@("T#P"@M#`$$@/^I`.C?J0#H``(30@`)(+@`
+MB4@M)`0``@.I2"VA(@`$)`(`"J$D``*A(@`#"`%Q!Z$D``#?KP"X"`%P^@)O
+M2"$```````D@N"0"``$`B4@M`ZE(+:$B``"A(@`"H2(``P@!<0>A(@`$````
+M``P!!(#_J0#HWZD`Z``"$T(`"2"X`(E(+20$``$#J4@MH2(`!*$D``"A)``"
+M"`%Q!Z$D``,```````"(+203`0`D'@$`"`%QMB0"$````````B`@+0/`*"T,
+M`02`_ZD`Z-^I`.@``A-"``D@N`")2"TD!``$`ZE(+:$B``0D`@`HH20``J$B
+M``,(`7$'H20```&`2"TM"``4%0``.0`'2`L(`7&&?6,HQP`)(+@D`@`$`(E(
+M+20$``,#J4@MH20``B0$`"BA(@``H20``P@!<0>A(@`$`````#+#``,48``J
+M)`,``Z!#`*@(`7%A`M2P(0(@("T#P"@M#`$$@/^I`.C?J0#H``(30@`)(+@`
+MB4@M`ZE(+:$B``0D`@`#H2(``B0"``2A(@``)`(`%`@!<0>A(@`#``````/`
+M*"T,`02`_ZD`Z-^I`.@``A-"``D@N`")2"T#J4@MH2(`!"0"``.A(@`")`(`
+M!*$B```D`@`*"`%Q!Z$B``,(`7#B)!4``0@!<89](RC'D$,`J"0"``,48O["
+M``````@!<6$"U+`A``"(+203`(`D'@"`"`%QMB0""```````$*``!"0%``.0
+M1@"H$,7_QP`````RPP`#)`(``Q!B_K8#I"`M`M2P(0@!<6&@@`"H/`00##P%
+M$`QDA%?H9*5=2`P"?KP`8#`MW[\!.-^^`3```!`MW[<!*-^V`2#?M0$8W[0!
+M$-^S`0C?L@$`W[$`^-^P`/`#X``(9[T!0#P"_^`\!!`,-$(`53P%$`P``A4X
+M9(18&#1"``-DI5U(``(5N`+BN"7>YP``#`)^O``````(`7':)`+__SP$$`QD
+MA%DH#`)^O&2E74@(`7':)`+__SP$$`P\!1`,9(18L&2E76@,`GZ\`L`P+0@!
+M<=/?KP#@9[W_T/^T`"`\%/_@_[,`&#:4`%7_L@`0`!2@O/^Q``@VE)`!_[``
+M`#P3$`P\$A`,<)`),_^_`"@``(@M`!2B.&9S65`(`7+V9E)=@``````F,0`!
+M+B(`#A!``!P\`__@<B+@\B0#`!\`5!`M`%`0)=Q"```P1``?$(/_]3!##^`0
+M8/_S?$(Q0P(@,"TP1P#_`F`@+0)`*"T,`GZ\)C'__WP#^#MD8P/H?`+X.P!#
+M$"L40/_]`````"8Q``$N(@`.%$#_Z'(BX/(\`__@/`?_^#1C`%4TYP`0`&`0
+M+0`#';@T8P`-``(5^``#'3@T0@`!-&,`"``"%/@"`Q@E/`L``20*``\U:^``
+M_&`````*4SQDZ0`H9$@@``!'("T`21@M`@(H)3P&``_\I@```)`@)?R+````
+M<!@E_&H``&1"`@`42/_V`$<@+3P"_^`D!0`?-$(`50`"%;@T0@`)``(5.&1$
+M`'``4!@E9$(`"/QE```41/_]`%`8)61%`;`D!@!`9$(!D`!0&"5D0@`(W&0`
+M`!"```(`````_&8``!1%__D`````/!+_X"0"``$V4@!5`!*5.#92``,`$I6X
+M-E(`"`(2B"7^(@``?!/X.PP`MU(D!``#/`,(,31C)NEF1O_X``,<.``"$/HT
+M8WC5`@8P)0`#'+AD8_?/`$,`'0``$!```A$Z``(H>``"$/@`HB@M`+,H+0``
+M``#<P@``?`3X.P"D("L4@``#,$,``1!@__H`````/`3_X```$"TTA`!5``0E
+M.#2$``,`!"6X-(0`&`($@"7^````_B```!!@``D\!!`,W[\`*-^T`"#?LP`8
+MW[(`$-^Q``C?L````^``"&>]`#`\!1`,9(19>`P"?KQDI5V8"`%S=R0"__\`
+M````)`(`PA"B``0``!@M)`(`LQ2B``TD`P`!/`7_X'"$"3,TI0!5```0+0`%
+M*;PTI8`/``4I.`"%("7\@P```^``"````````````^``""0"__]GO?_@_[``
+M``"`@"W_L@`0`@"0+?^Q``C_OP`8#`%_,@"@B"T\`P`!,@(`_SP$$A7\@R0@
+M+$,`!!!@`%8R)O__/`,4)``"$/AD8[9@?&(2"A!```-DA20@``8I^`!%*"W,
+MH``````!3SP"(`$D!O__-$)1`0``&"W\!H$```(0/'X".09^(LP'```!3WP&
+M\#L0P/_^`````/P"H@!\0CP",$(`_Q1``"@`````)`(``7Q#C`9\`_\&?&9X
+M`7QC'P(D!0`,,&,`_Q!E`!@``!`M%&``(SP'$`P\`P`!_(,D("Y#``008``I
+M/`02%3P#%"1R4OCR9&.V8'QRD@H20``C`````'(Q^?("48@M$B``"-^_`!B.
+M(P`$```0+11@``.N)@``)`,$`*XC``3?OP`8W[(`$-^Q``C?L````^``"&>]
+M`"``````````C]P#@0!\9G@!"`%SR:RF``````````,8^&3G7,@\!!`,?.,Z
+M"CP%$`QDA%FH9*5=L`P"?KP"(#`M"`%SY20"__\(`7/?9)$D(`@!<[)DA20@
+M`````&>]_^`\`P`!_[```#""`/__OP`8`*"`+?^R`!`\!1(5_*,D(#(&__\L
+M0P`$$&``0_^Q``@\`Q0D``(0^&1CMF!\8A(*$$```V2E)"``!BGX`$4H+<R@
+M``````%//`(0`"0&__\T0JB!```8+?P&@0```A!\?((Y!GX"S`<```%/?`3P
+M.Q"`__X`````_`*B`'Q"/`(P0@#_%$``(R0"``)\0XP&?`/_!GQQ>`%\8Q\"
+M,&,`_W!D`V\``Q`K`((0)!!``!+?OP`8/`<0#``#&/ADYUS(/!(0#'SC.@H\
+M!!`,9(19T&9%7>`,`GZ\`@`P+3P$$`QDA%H`9D5=X`(`,"T,`GZ\`!$X`-^_
+M`!@``!`MW[(`$-^Q``C?L````^``"&>]`"``````````C]P#@0!\<7@!"`%T
+M+:RQ```(`7079*4D(``````\`O_@<*5*<C1"`%5PA`DS``(5^#1"``4``A3X
+M-$(`X`"B*"TD`@`&`(4@)?R"``!\`_@[9&,`9'P"^#L`0Q`K%$#__0`````#
+MX``(_(```#P#``$P@@#_/`<2%0"@,"W\XR0@+$,`!!!@`$4PI?__/`,4)``"
+M$/AD8[9@?&(2"A!```-DYR0@``4Y^`!'."W,X``````!3SP"(`$D!?__-$)1
+M`P``&"W\!8$```(0/'R".09\PLP'```!3WP$\#L0@/_^`````&>]__#_OP`(
+M_[```/P"H@!\0CP",$(`_Q1```\D`@`#?$.,!GP#_P9\9'@!``,?/A1@`!<\
+M!1`,%(``#0`$@``"`!`MW[\`"-^P```#X``(9[T`$`````````"/W`.!`'QD
+M>`$(`721K.0````````\!!`,/`40#&2$6DADI5WX#`)^O`(`."T(`727`@`0
+M+3P'$`P``QCX9.=<R#P$$`Q\XSH*9(1:(`P"?KQDI5WX"`%TER0"__\(`71X
+M9.<D(&>]_]A\`@`[_[\`('Q""</_LP`8`$"8+?^R`!``H)`M_[$`"`"`B"W_
+ML```#`&!#`#`@"T"("`M#`&`\@`"B`"N````_@``"`!1$"$"(A@K$&``*?X`
+M`!`\"O_@`!,A/#5*`%4`"E*\-4H`T`@!=.%E1P`(`````/S`````"$``W28`
+M`"8Q``'](```C@D``-X#``A\QG@!`2A`(:X(````9C`M$B(`%/X&``AR(TIR
+M`&HP+0!G0"T`Q#`E`01()=S(```60/_L`````-TF````"$``C@D``"8Q``'>
+M`P`(?,9X`0$H0"&N"````&8P+18B_^[^!@`(W[\`(-^S`!C?L@`0W[$`"-^P
+M```#X``(9[T`*```````!!(#9[W_R#!"`/\D`P#>_[4`*'R5#`/_M``@`,"@
+M+?^S`!@PDP#__[(`$`"@D"W_L0`(`0"(+?^P````X(`M$$,`!/^_`#!\%0`[
+M,),`_WZU"<,,`3L.`````"0#``D``A``$$,`0CP)_^`L0P`*%&``$20#``@D
+M`P`*$$,`2"0#``L40P`/`!-(@#P$$`QDA%IH/`40#`*@,"UDI5X0`F`X+0P"
+M?KP"0$`M"`%U2B0"__\`````$$,`,SP)_^``$TB`)2D``@$R2"$%(/_O<2D@
+M\CP"_^`T0@!5``(5N#1"``D``A4X`2)(+0`5$3P!(D@E)`(`']TD```PA0`?
+M$*(`*P"`&"U\@@0#$@(`%'R%`\,D!0`?```0+7RC(`=^`X0'?H-[QWXC<<?]
+M(P``?(,@!_TC``#?OP`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]
+M`#@`````%H7_[```$"T(`75+W[\`,#4I`%4`"4VX-2D`"0@!=3<`"4TX````
+M`#4I`%4`"4VX-2D`"0`)33@(`74W-2D`""9I``(`"4A`"`%U+P$R2"$\!!`,
+M"`%U(62$6I``````/`+_X'"E2/(T0@!5<(0),P`"%K@T0@"/``(4.`"B*"T`
+MI"`EW((``'S"``?\@@```^``"``````\`O_@<(0),S1"`%4\!__\``(5.#3G
+M``DT0@`#``<\.``"%;@TYT`!-$(`$``'/W@`@B`EW((``#P$__`TA``E`(`H
+M+0"`,"UP0TCR?$(*@P`"$3P`9S@M`.(X)0`$)?C<YP````4M>``&-;@TA`$#
+M-*4`@33&`0%PYRCR``8U>``$)3@`!2VX`.0@+0!E*"T`9A@M`((@)=R$````
+MHB@EW*4```!B$"7<0P````00``"C&"\`@R`J``,8``/@``@`9!`*```````$
+M,@-GO?_@,,8`_R0"`-[_OP`8`(`8+?^R`!#_L0`($,(`1?^P```PA`#_`*"(
+M+0"`D"T,`3L.`&`@+20&``E\$``[``(8`!!F`$5^$`G#+&8`"A3```PD`@`(
+M)`(`"A!B`$<D!``+%&0`"20"___?OP`8W[(`$-^Q``C?L````^``"&>]`"`0
+M8@`W/`+_X``2$(`D0@`"`%$0(01`__0D`P`?$$,`9-^_`!@\`__@<$(@\C1C
+M`%4``QVX-&,`"0`#'3@`0Q`M`!`A/#P&_^``1!`E-,8`5=Q#````!C!\-,9(
+M`20"__\`!C)X,&,`'P`#*(,P9P`#<*40\@"F*"T`A2`EW(0``'R$$`,PA`#_
+M+(4`!1"@_]??OP`8/`(0#'"$$/)D0ER@?$0B"@"```@``````````#"$`/]\
+M<`P#`("0+0!@("T,`3L.`*"(+20&``D``A@`%&;_OBQF``H(`777```0+31"
+M`%4``A6X-$(`"0`"%3@(`77>-$(`""9"``(``A!`"`%UTP!1$"$D`P`#$./_
+MM@``$"TD`P`"$./_LR0"%`#?OP`8)`(*`-^R`!#?L0`(W[````/@``AGO0`@
+M`````-^_`!@LYP`!W[(`$``'."/?L0`(,.(H`-^P```#X``(9[T`(`````#?
+MOP`8,&(``=^R`!`X0@`!W[$`"``"$"/?L```,$(4``/@``AGO0`@)`,``1#C
+M_Y0``!`M$.#_DB0"%``(`787W[\`&````````!`MW[(`$-^Q``C?L````^``
+M"&>]`"``!#(#9[W_T##&`/\D`P#>_[\`*`"`$"W_M``@_[,`&/^R`!#_L0`(
+M$,,`B_^P```PA`#_`*"(+0"`@"T,`3L.`$`@+7P3`#L``A@`)`(`"1!B`(M^
+M<PG#+&(`"A1``%`D`@`()`(`"A!B`(@D!``+$&0`0B0"__\`$!"`)$(``@!1
+M$"$$0``^W[\`*"0#`!\00P"+`$"@+3P#_^!P4"#R-&,`50`#';@T8P`)``,=
+M.`(#&"T`$YD\/`+_X`!S&"4T0@!5W'$````"$+PT0I`!``(2.'XQ(`,R,0#_
+M`!&0^`)"D"T"<I`EWD(``'Q"(`,P0@#_$%0``SP$$`P,`9_D9(1:N`P!?;PD
+M!`#1``(0`!!``!D`````/`?_X#3G`%4`!SWX-.<``0`'//@"9Q@EW&,``'QC
+M)`,P8P#_$'0`;P*`,"T(`7:;```8+0``````AR@M`F4H)=RE``!\I20#,*4`
+M_Q"F`!0`````)&,``11#__=P9")R)`+__]^_`"C?M``@W[,`&-^R`!#?L0`(
+MW[````/@``AGO0`P`````!!B`#X`$!"`)$(``@@!=F$`41`A`````#P"_^`T
+M0@!5``(2O#1"`.``@B`M`),@)20%``'<@@``/`,`0#1C``%\H@`'_((```@!
+M=KX`````$&``.SP$$`P````/WD0``#"$#^`4@/_Z)&/__SP"_^`T0@!5``(0
+MO#1"J`$``A(X`@*`+0(3F"7>8@``,$(?_Q1`__W?OP`HW[0`(-^S`!C?L@`0
+MW[$`"-^P```#X``(9[T`,``````PA`#_?%,,`P"`@"T`0"`M#`$[#@"@B"T`
+M`A@`)`(`"11B_W<```````"@+0@!=F8``!`M)@(``@`"$$`(`79A`%$0(3P#
+M_^`D$``(-&,`5204``$``QVX-&,`"0`#'3@(`79M-&,`"```$"W?M``@W[,`
+M&-^R`!#?L0`(W[````/@``AGO0`P/`40#&2$6N!DI5XP#`&?Y`(@,"T(`7;$
+M/`+_X#P$_^`TA`!5``0BO`@!=K,TA`#@``0:`V>]_]`P8P#_)`(`WO^R`!``
+MH)`M_[$`"`"`B"W_L````("`+?^_`"C_M``@$&(`6_^S`!@D!`#1#`%]O`)`
+MH"T"`"`M?!,`.PP!.PX``I``?G,)PP`"&``D`@`)$&(`6S(Q`/\L8@`*%$``
+M-"0"``@D`@`*$&(`5R0$``L09``F)`+__P`1$(`D0@`"`%00(01``"+?OP`H
+M`$`X+20#`!\0XP`>```0+1)``!LD`O__/`C_X``3,3PU"`!5``A%^#4(``$`
+M"$3X`,@0)=Q"``!\0B0#,$(`_Q!'`$0``!@M"`%W1P)`$"T``````(@H+0#%
+M*"7<I0``?*4D`S"E`/\0IP`4`````"1C``$48O_W<&0B<B0"___?OP`HW[0`
+M(-^S`!C?L@`0W[$`"-^P```#X``(9[T`,``````08@`I`!$0@"1"``((`7<I
+M`%00(0`````\`O_@-$(`50`"$KPT0@#@`((@+0"&,"7<PP``,&(``7P#``?\
+MPP``W[\`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#`D!`#1#`%]O`)`
+MH"T"`"`M?C,,`S(Q`/\,`3L.``*0```"&``D`@`)%&+_J"QB``H(`7<O```X
+M+28B``(``A!`"`%W*0!4$"$(`7<O)`<``3P$_^`TA`!5``0BO`@!=U\TA`#@
+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
+M`(,8+34I@`$`0Q@E``E/.-QJ```PZ`__W@,`&``1*`"6!``*,4H`/P`*4,!\
+MX]P&`4DX+0!'$"7<0@``_@,`&*8(``A\0U`"`(`0+0`#&?@D8___`&48)'QB
+M4$0(`7DCI@(`"@@!>34D`O__?`(`.P@!>3U\0@G#`````#P$$`P\!1`,9(1;
+M.`P"?KQDI5Z@"`%Y-20"__\`````W((`F!1``!8Q"@`#W*L`"'RB2`$D`P`%
+M``40"G#&"C(!8$`M``,;?'P(>P8`QS@E_*@`"'Q#2`6LJ0`,?./M!MRH``A]
+M0YR&```0+7U("`9\Z%B&_*@`"`/@``C\@P"8/`00##P%$`QGO?_X9(1;:/^_
+M```,`GZ\9*5>P-^_```D`O__`^``"&>]``@`````?*-(`20")`<`!1@*``(3
+MO&>]__#_L````("`+?^_``A\8D@%#`%OF@!`*"T80``#W[\`"*8"`*+?OP`(
+MW[````/@``AGO0`0?*-(`30"P`,`!1@*``(3O&>]__#_L````("`+?^_``A\
+M8D@%#`%OF@!`*"T80``#W[\`"*8"`*+?OP`(W[````/@``AGO0`09[W_T/^Q
+M``@`P(@M_[```/^_`"C_M``@_[,`&/^R`!#<B``(?0A(0@$&$"H40`!<`("`
+M+=R#``!DA``HW@(`&`#@D"T`@Q@*?$<"PMQB``!\1`N"%(``:WQ$2`$4@``\
+M```P+0"1("\!$4`C?()(!3$3__\``B0^?!.F(/QB````!$```B@0(:1B``"6
+M`@`>`B(0(:8"`![<8@``?$(30A!``"4`T2`O%.``2``````,`F5<`B`P+98"
+M``H"`"`M?F)01`P!<`:F`@`*+D(`!1!``",`````W@(`$)!#``0"(Q@AH$,`
+M!"0"``020@`<`````-X"`!"00P`%`B.((:!1``4D`@`#$D(`%0`````"@!`M
+MW[\`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#``````9(+_^!3@`!ID
+MQO_X:,,```@!>>*P0P```(`P+20)__\(`7G/?2;_QMX#`+`D`@`(?&,A@@`#
+M&``P8P`>$&(`!B0#``'>`@`8D@,`I'QB>X8(`7GZ_@(`&-X"`!A\8FM&"`%Z
+M%OX"`!@(`7G[)`+_Y```&"TD"``(.&<`!R1C``%\Y_@#?,=)B@!'."T4:/_Z
+MH.D``!(@_[H"(#@M```0+9"F```X0P`'?&/X`R1"``$`@Q@MH&8```!'&"L4
+M8/_X9*4``0@!>>66`@`*"`%Y^R0"_^H`````9[W_P/^R`!``P)`M_[````"`
+M@"W_OP`X_[8`,/^U`"C_M``@_[,`&/^Q``C<E0`8E(,`'MR"``A^M0+"`&88
+M*Q1@`%E\1$A"WA$``&8"`"@`48@*WB(``'Q#"X(48`!6`````)8F````TA@K
+M%&``4'Q'2`$4X`!"``"8+7Y4^`,R0___`H<X+0##,"-\XD@%`&0@(?XB```P
+MEO__IB8``)8"`!X`0Q@C$*``!J8#`!X6H`!#`H`P+0"@("T,`F5<`F`H+=XB
+M``!\0A-"%$``!@)TH"UF<__X%J``16:"__AJ8P``L$,``)8"``H"`"`M?L)0
+M1`P!<`:F`@`*W@(`$)!#``4"0R`K%(``%0````"00P`$H$``!0)#&"L08``<
+MW@(`$)!#``0`<I`CH%(`!)8"`![?OP`XW[8`,-^U`"C?M``@W[,`&-^R`!#?
+ML0`(W[````/@``AGO0!``````#)2`/\`<A@CH$,`!=X"`!"00P`$`'*0(P@!
+M>H:@4@`$`."8+20#__\(`7I9?'/_QJ!```3>`@`8?`)[A@@!>H;^`@`8````
+M``@!>H<D`O_D"`%ZAR0"__0(`7J')`+_Z@``$"T20/^_`D`@+3A#``<D0@`!
+M?&/X`WYC&8J@HP``%$3_^F2E``$(`7ILWB(`````&"TD!0`(.&0`!R1C``%\
+MA/@#?F0QB@!$("T49?_ZH(8```@!>G66`@`*`````-R"`!@`QQ@AE(@`'GQ"
+M`L(!`Q@K%&``*``"2OS<@P``9(0`*`"#&`K<:```?00+@A2``"<`````E&,`
+M``!@$"T`XQ@K$&``'@````!GO?_P`$<0(_^P````PH`K`-`0"WT(2`'_OP`(
+M```8+14```X`0(`M?.?X`Q"@`!,`9S@M%2``%7X&^`,`H"`M#`)E7`#@*"T"
+M`!`MW[\`"-^P```#X``(9[T`$`$`&"TD`O__"`%ZWWQ#_\8#X``()`+_Y`/@
+M``@D`O_T"`%ZZ"0"_^H#X``()`+_Z@``$"T2`/_M`@`@+3A#``<D0@`!?&/X
+M`WSC&8J@HP``%$3_^F2E``$(`7KH`@`0+=R"`!@XI@`!W(,``'S"0@848``#
+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
+M"`%_2R02__]DP@`'?.OX`P`"&+@``D'X`0-`+P`$2'H!`D`M)`H`#7T(X`$`
+M`!`M`$@8%`!I&"T`9``?`(`!]```8!(M@Q_Q$&``=P`````D0@`!%$K_]P!(
+M&!0D#``,)`D`%"0*`!`D`P`,`4@0%`$H0!0`1``?`(`!]-RJ``!\:H-'```0
+M$@$$`!\`@`'T`$L8*P%C$`L``$`2``@:."QH`@`5``![_*H`````0"T``QAZ
+M+&D"`!$@__TE"``!,0@`_R4(__@Q"``/`0!H+7QJ0$<``A0X?0IB1S!C`/\L
+M2`(`%0``;ORJ`````$`M``(0>BQ)`@`1(/_])0@``3$(`/\E"/_W,0@`#R4)
+M``$T8P$`?$HG10&C&!0\#0@Q``,:.C6M)NEP9"`#``UL.#6M>-5]"D%&``UL
+MN#!"`/_\J@``9:WWSWR#X`$`;0`=```8$``#&3H!@Q@7`&88+P`#&````R?#
+M`(,8)@!D&",``RHX``,@^`"D("\`!"FX`*0@+P"#&"T``QFX`&8`'P#``?04
+MX``&```8$BAB)Q$00``=``````/@``@``!`M-$(!`"AE)Q$!(D@4<2GZ.@$G
+M.",`!Q?#`$<X)@#B(",`!#(X``00^`#"$"\``C&X`,(0+P!$("T`!"&X`(L`
+M'P%@`?00H``(``!8$C0"PU$`"Q@``6(0*CA"``$``A`C`^``"`!#$"0``Q``
+M`^``"``"$",`````$$``!R1,__\1@``%,8,`#R1*``,(`7^))$D`!P`````!
+M!``?`(`!]```&!(L8A_Q%$``"0`$$3@`!$-X`0)`+P``8"TD"0`()`H`!`@!
+M?XD``!@M````````8"TD"0`()`H`!`@!?XD``!@M)`T`"`@!?Z(D"``()`D`
+M"`@!?[(D"``'`````#P+_^!PPR)R-6L`57"$"3,`"UWX/`S_X#5K``$UC`!5
+M``M<^``,9;@`:Q@M-8P``0"#&"5PI4)RW&(``&5K``@`#&4X<.<>,@"K6"T`
+MK&`M?2)`!GT'N`=]0B!'`(M8)?QB``!PQB0R_6<```",8"7]A@```^``"```
+M````````/`O_X'##0G(U:P!5<(0),P`+7;@\#/_@-6L``36,`%4`"UTX``QE
+M^`!K&"TUC``#`(,8)7"E0G+<8@``96L`"``,9/APYQXR`*M8+0"L8"U](D`&
+M?0>X!WU"($<`BU@E_&(``'#&1#+]9P```(Q@)?V&```#X``(```````````\
+M`__@<,)"<C1C`%5PA`DS``,=^#P-_^`T8P`#-:T`50`#'/@\#/_@`$,8+0`-
+M;?@`9!@E-8P`5=QB```\"__@-:T`!0`,9;@U:P!5``UL^#6,``,`"UJ\?2)(
+M!G"E2G)]0B!'-:T`"/QB````#&4X-6L`0'#G'C(`K6@M`*Q@+0"K6"TD`@`!
+M?0>X!P&D:"7]IP``<,9,,@&$8"4!9%@E_88````"%'S]8@```^``"```````
+M```````H+0@"9F`\!@`!`````&>]_]`P@@#__[0`(`"@H"W_LP`8`$"8+?^R
+M`!#_L0`(``"(+?^P``#_OP`H#`$[#@"`@"TD`P`)``(0`!!#``I^$CH#+$,`
+M"A1@`#,D`P`()`,`"A!#`#8D`P`+%$,`,"01__\`````)`0`T0P!?;Q^$`P#
+M.E(`WGP#`#M\8PG#&$``&P!R@`L\!__@`!`I/#3G`%4`!SWX-.<``0`'//@`
+MIQ@EW&,``'QC)`,P8P#_$'$`(P```````!@M"`&`Q0(@,"T``````(<@+0"D
+M("7<A```?(0D`S"$`/\0A@`&W[\`*"1C``$48O_W<&0B<B0#___?OP`H`&`0
+M+=^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#`00__3)!$``0`3B(`F,0`"
+M"`&`I@(TB"$F<0`"`!&(0`@!@*8"-(@A"`&`R0``&"T\"!`,/`D0!F>]__@\
+M!``!```H+0``,"TD!P`$90ABZ/^_```,`+1H92D"(!!```8`````_X*#*```
+M$"W?OP```^``"&>]``@(`8#M)`+__]^#@RAGO?_H_[$`"'R1"P/_L```,)`/
+M_Q!@``__OP`0`!$C```0@+@`!""X)`+__]^_`!``9!@M?'`8"M^Q``C?L```
+M9[T`&'QC+H,P8P#_`^``"`!C$`L,`8#>``````@!@/K?@X,HWX.#*&>]_^C_
+ML0`(?)$+`_^P```PD`__$&``$O^_`!``$1,``!"`N``"$+@`8A@M?'`8"GQB
+M+H,P0@#_$$``!"0"__]\8DP#,$+__WXB^H7?OP`0W[$`"-^P```#X``(9[T`
+M&`P!@-X`````"`&!%-^#@R@```````02`V>]_]`P0@#_)`,`WO^T`"``X*`M
+M_[,`&`#`F"W_L````("`+?^_`"C_L@`0$$,`*?^Q``A\$@`[,(,`_WY2"<,D
+M`@#_$&(`'P(`("T,`3@H`!*3``1``"X`0(@MWX.#*!!@`"`R,`__`!(@N``0
+M@+@`9"`M`)`@+8R"``!\0BZ#,$(`_Q1``!L\!1`,E(,`````$"U^8T@'?H-Z
+MAZ2#``#?OP`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`,```````$I,`
+M"`&!0B91#_\`````,(,`_P@!@3M\D@P#``````P!@-X`````"`&!1=^#@R@\
+M!!`,9(1C,&2E8]`,`GZ\`B`P+0@!@5,D`O__/`00##P%$`QDA&,(9*5CT`P"
+M?KP"`#`M"`&!4R0"__\```````02`V>]_^`P0@#_)`,`WO^P````@(`M_[\`
+M&/^R`!`00P`E_[$`"'P2`#LP@P#_?E()PR0"`/\08@`;`@`@+0P!."@`$I,`
+M!$``*@!`B"W?A(,H$(``'#(P#_\`$ABX`!"`N`"#&"T`<!@MC&(``'P"R`00
+M0``8/`00#)1D`````!`M?`1ZAZ1D``#?OP`8W[(`$-^Q``C?L````^``"&>]
+M`"```````!*3``@!@8PF40__`````#"#`/\(`8&%?)(,`P`````,`8#>````
+M``@!@8_?A(,H/`40#&2$8UADI6/P#`)^O`(@,"T(`8&;)`+__SP$$`P\!1`,
+M9(1C"&2E8_`,`GZ\`@`P+0@!@9LD`O__`````#P"_^!PPT)R-$(`57"$"3,`
+M`A7X/`D0##1"``%E*60H``)4^``'$CHU2@`X,$@`#P!J4"TP0P#^`(I0)7!C
+M`2_=2P``<$(`;P!B$"0P[`#__XF""##C`#]\ZU@&`8(8"OU+```D`@#_?2A!
+MBA$"`!<D`@#N$0(`#P`(03@!`Q@E!&``#S0"@``\!__@-.<`57RB:D<`!SVX
+M<&-(\C3G``M\PD`'``<M.`!E&"T`9"`E_((```/@``@``````````"0"__\4
+M8O_[`````#P$$`P\!1`,9(1C@&2E9!`(`GZ\`.`P+0`````\`__@<,8B<C1C
+M`%4PI0`?`&`0+0`#'?@``A*\-&,``31"`!```QSX9$<`*'"$"3,`PQ@M`,(0
+M+0!D&"4`QS`M``4\.`!$$"7\9P```,0@)0`%&W@`!2L\_$,`````$"W\A0``
+M`^``"```````````9[W_H`"@$"W_OP!8+*,!`/^^`%#_MP!(_[8`0/^U`#C_
+MM``P_[,`*/^R`"#_L0`8$&``6O^P`!`\`Q`,<*7Y,F1C9%@`HQ@MW'(`")!C
+M````$B@K``,8*P!E&"008`!'*2,`"B0"``D!(Q`+`0*@*@$4$`L`0*`M)`(`
+M`1$"`#8`X(`M!H``.`$4$","@(@M&H``.``"$0``0/`M`1"8(0(3&"L08``>
+M`@"P+?^D``C_I@```B"H+0``N"T(`8)*`!2@*@`````F$``!`A,@*Q"``!,F
+M]P`!WZ0`"`(`*"W?I@```N`X+0/`0"T"P$@M`D#X"0*@4"TGQ/_P`\`H+0"4
+M*`L"\2`K%(#_[P`````F$``!`A,@*Q2`_^\`H/`M```0+=^_`%C?O@!0W[<`
+M2-^V`$#?M0`XW[0`,-^S`"C?L@`@W[$`&-^P`!`#X``(9[T`8``````D$0`/
+M"`&".```$"T```````"(+0@!@CLD'@`0"`&".R0>`!`\!!`,9(1?V#P%$`P`
+M0#`M#`)^O&2E9#@(`8)=)`+__SP$$`P(`8)U9(1CJ&>]_\C_L0`H`*"(+?^P
+M`"``@(`M_[\`,!3``!'_H```/`/_X'"Q(G(T8P!5<)`),P`#&KP``!`M-&,`
+M&`(CB"T",(`E_@```-^_`##?L0`HW[``(`/@``AGO0`X`````/^H`!@D!0`!
+M_Z8`"'(Q(G(,`+<<_Z<`$#P$U54#H"@M-(1557(0"3/?I@`(``0D.-^G`!`T
+MA%55``0D>#2$JJL`1``=```@$`P!?W``!"%ZWZ,``"0%``$\!/_@-(0`57RC
+M``<`!"*\?&890C2$`!@`!C```B0H+23&__]DA/_X?,-!1@"P*"7_HP```B2(
+M+?RC```",(`EW@,``-^H`!A]`T`'_@,``-^_`##?L0`HW[``(`/@``AGO0`X
+M`````&>]_]#_L0`0`("(+?^S`"`D!`"&_[(`&`#@F"W_L``(`*"0+?^_`"@,
+M`7V\`,"`+21"__\6```4`%*0)#P#_^!R4DIR-&,`57(Q"3,``QWX```0+31C
+M``4``QSX-&,`&`)#D"T"48@E_B```-^_`"C?LP`@W[(`&-^Q`!#?L``(`^``
+M"&>]`#`"("`M#`"W'"0%``$\!-55-(1550.@*"T`!"0X`@`P+32$554"8#@M
+M``0D>')22G(TA*JK<C$),P!$`!T``"`0#`%_<``$(GK?I```/`7_X"0#``$T
+MI0!5?(<;0P`%+?A\ACA#?..#1S2E``5\PT!'?(<90GR&&D,`!2SX?,-B1S2E
+M`!A\AC]#``<@``)%D"U\PR=%)(3__P)1B"5\@T%&_B,``-^_`"C?LP`@W[(`
+M&-^Q`!#?L``(`^``"&>]`#!GO?_0_[$`$`"`B"W_LP`@)`0`AO^R`!@`X)@M
+M_[``"`"@D"W_OP`H#`%]O`#`@"TD0O__%@``%`!2D"0\`__@<E)*<C1C`%5R
+M,0DS``,=^```$"TT8P`%``,<^#1C`"`"0Y`M`E&()?X@``#?OP`HW[,`(-^R
+M`!C?L0`0W[``"`/@``AGO0`P`B`@+0P`MQPD!0`!/`35532$554#H"@M``0D
+M.`(`,"TTA%55`F`X+0`$)'AR4DIR-(2JJW(Q"3,`1``=```@$`P!?W``!")Z
+MWZ0``#P%_^`D`P`!-*4`57R'&T,`!2WX?(8X0WSC@T<TI0`%?,-`1WR'&4)\
+MAAI#``4L^'S#8D<TI0`@?(8_0P`'(``"19`M?,,G122$__\"48@E?(-!1OXC
+M``#?OP`HW[,`(-^R`!C?L0`0W[``"`/@``AGO0`P9[W_V/^R`!``@)`M_[,`
+M&"0$`(;_L0`(`*"8+?^P````X(@M_[\`(`P!?;P`P(`M)`,``3(G`?\2`P`9
+M)$+__R0#``(2`P`:)`,``7P'4D<\`__@`F(0)#1C`%5P0DIR``,=^')2"3,T
+M8P`%``,<^#1C`!``0Q`M`%*0)?Y'``#?OP`@W[,`&-^R`!#?L0`(W[````/@
+M``AGO0`H`````"0#``,(`8-^?&=21P`````(`8-^?&=21P#$,"V0PP``%&``
+M!0"`$"V@Q0```^``"```$"T`````/`<0#0`#,/ADYX!H<*7X\GSF,@H\!!`,
+M?.4Z"F>]__ADA'18_[\```P"?KP`0"@MW[\``"0"__\#X``(9[T`"&>]_]C_
+MOP`@_[,`&`#@F"W_L@`0`2"0+?^Q``@!`(@M_[````P"?KP`P(`M/`00"PP"
+M?KQDA#PX/`00#`(@*"T"0#@M9(1TH`(@,"T,`GZ\`D!`+1(``!H\!!`,%F``
+M#``````\!!`,#`)^O&2$=-C?OP`@W[,`&"0$``K?L@`0W[$`"-^P```(`G[B
+M9[T`*#P$$`P,`GZ\9(1TR-^_`"#?LP`8)`0`"M^R`!#?L0`(W[````@"?N)G
+MO0`H``````P"?KQDA'3PW[\`(-^S`!@D!``*W[(`$-^Q``C?L```"`)^XF>]
+M`"AGO?_`<(+X\O^R`!``@)`M_[8`,#P$$`UDA(!H`0"P+7R"(@K_M0`H`."H
+M+?^T`"``P*`M_[$`"`#@,"W_L````*"(+?^S`!@!((`M_[\`.`$`."T``"@M
+M`2!`+0%`2"T,`8.P`4"8+1*@`"??OP`X%L``%``0(``2$P`0)E7__BZU``@`
+M`````!`@``)`*"T,`8.8`H`P+0`0&;@40``'`B,8+1*@`!(`````W'`,(#(0
+M!_\6</_U`!`@```3(`#?OP`X`D`H+=^V`#`"@#`MW[4`*-^T`"#?LP`8W[(`
+M$-^Q``C?L```"`&#F&>]`$#<<`P@?A!30Q9P_^,`$R``"`&$&]^_`#C?M@`P
+MW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`$``````/`/_@&>]_X`T
+M8P%G_[$`.``#&CS_OP!X<)$),_^^`'`T8Q#P_[<`:`(C*"7_M@!@_[4`6/^T
+M`%#_LP!(_[(`0/^P`##<H@``R$``H&1G$!!D8__P`B,P)=S#```")Q@EW'0`
+M`#*4`_\$@`"5_[0`"-^C```D!P`!?.(A!WSB,8<PAP`#?(/.!GP"``??I``(
+M_Z<`$"0'__]\@XH&/`0``?^C```D`_FCIZ,`!/RB``#<Q0``?`/X.V1C`^@`
+M````?`+X.P!#$"L40/_],*(`/Q!``'(`````)(3__Q2'__0`````/`+_@#P#
+M__PT0@%G-&,`"P`"$CP\$/^`-$(0D``#'#@"(A`E-A`!9]Q"```T8S@!`!"%
+M>``#'W@V$``!-'X'```".```$(3X_Z(`&```D"T(`82A_Z<`(``````!MF@F
+M?L@1P7VM$<$5H``1``A!^!$```]]!$@!```!3]^C`!`\`O^`-$(!*0`"$CPT
+M0@$`?&(Y!M^C``A\8LP'_$0``/Y@``#^@```_J```/[@```\`@`!)E(``0/"
+M\"TD`@!`$D(`'680``@\"0`!/`L``@()2"T""U@M/`H``P(PF"7>=@```@I0
+M+0$QN"4!<:`EWNT```%1J"7>@@```CX0)=ZD``#<1P``?.(``1!`_],\!!`,
+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
+M)`P!`#,*__\#`%@M`!AA^'ZY&<,O(@`#%$``IB0-`!@S)?__`R`@+0`9:/@\
+M#_^`/`+__#7O`6<\"?^`-$(`"P`/>CPU*0%G->\@@``"%#@`"4RX9>X`8#1"
+M.`$U*0"!``(7>`(/>"4"#G`E``E-N`("0"5D1P$`W0,``#P&``$`1A`M`/`X
+M)0``,"U\=6`#?6-@!WV#8`8!5:@O_0,``'*C;#(08``"`````/WC``#<XP``
+M?&A0`WR#4`=]HU`&``A``/SC````J!@C?&;D!WS#9`,08``"`````/W&```4
+M2?_D`@)`)=Y6````&#&`WB,````908!^Q60#,*7__Q"F``H`8*@M?&-4`SP$
+M$`Q\UN0'?174!S!G__\,`GZ\9(1Z2/Y6``#^-0``/!'_@#8Q`6<`$8H\-C$0
+M\`(1B"7>(@``Z$``;#P$$`P6@`!=)`D".MXB```\!A`,`F`@+20%__]DQGJX
+M```X+7P"``<D"!``?`(A!WP",8?^(@``#`#*:@`````\`_^`-&,!9P``*"T`
+M`B`_``,=>*^B``PT8P`!KZ0`"``#%/C?HP`(/`T``CP,``,\"P`!)`X`0'QS
+M#@)\<DH"_Z,```)@4"T\`_^``$TX+31C`2D`3#`M``,:/`!+("U]0SD&`@)(
+M)7Y#S`<`\#@EW&,```#0,"4`D"`E9$(`"!!@`"5\:!'!``@9^"2E``'](P``
+M_.```/S```#\@P``%*[_ZCP#_X`\`O^`?G):AS1"`6<``A(\-$(A`&1#[R@"
+M`A`E_%(```(#@"7^````)`,``=XB``!\8@`'?`(A!WP",8?^(@`````0+=^_
+M`$C?M@!`W[4`.-^T`##?LP`HW[(`(-^Q`!C?L``0`^``"&>]`%``````/`00
+M#`P"?KQDA'K("`&*ASP"_X`D!``#)`4``P@!B@4D&0`#/`).Q":4`9\T0NQ/
+M<H)(`P`4I\,`"4G_`31((P@!BD\E*0(P)`L``B0*``((`8G^)!@``CP%$`UD
+MA'J0#`)^O&2E@\#?OP!(W[8`0```$"W?M0`XW[0`,-^S`"C?L@`@W[$`&-^P
+M`!`#X``(9[T`4`````!\`@`[?$()PP"`*"T(`8GB`$`@+0`````(`80V````
+M`'P$`#L(`80V?(0)PP`````D`H`!/`;_\``"%+@TQ@`C-$)@`0`&-?@``A0X
+M-,8$17P'`#LT0A`)?.<)PV>]_^@`!QD\``8U.``"$[C_OP`0`&8P)?^Q``@`
+M8A`E_[```#P(__#<R0``-0@`(]Q0````"$4X-0@`B20"`(!Q*5#R``A%^'X&
+M+8,!*$`M``8P^`!H&"4`QA`+<@A@\MQC````H#`M`(`H+7X$#P,!`D`C``"`
+M+0$&0"L5```D,&,#_SP(_X`U"`$I``A"/'SH.09\:,P'W0@``!$``!W?OP`0
+M)`G__P`'.H!]*/_&`.,8)3P)`0``!('X?&G<!B0#__\!$(`M``,?_/X```@!
+M`B`M_@``(##1___^`P`0_@D``!#```G^```8IA$`&'R'2`'>`P`8``0X"GS&
+M^`-\XT@%#`)E7/X#`!BF$0`(W[\`$`(`$"W?L0`(W[````/@``AGO0`8````
+M`&>]__#_L```_[\`"`P!ETH`@(`ME$,`P"0"``$08@`+/`+__#(#``,T0@`)
+M``,<^``"%'AD0H`)``(7.#1"$#A\8A(*Z$``<-^_``@D`P`!$@,`3R0"``(2
+M`@`C/`3_\!8``&G?OP`(/`3_\#P%__PTA``C-*4`"0`$)#@`!2QX-(0``62E
+M@`$`!";X``4O.#2$!_@TI0?XW(0``-RE``!\A!$#,(0`_Q""`%LD!@`#$(8`
+M"B0"`!40@P!E?*,1`S!C`/\D8___+&0``A2``&HD`O__`````-^_``C?L```
+M`^``"&>]`!`\`__P-&,`(S2$`",``QWX`(`0+31C"0$D!8`!``,=.``%++@T
+M8P((``0D^-QC`````A2X-*5@`S2$`,$T0@!A``4ON``$)C@``A9X-$($$#2E
+M!!#<I0``-(0$$-R$``#<1@``Z&#_XB0"`!8PI0`#)`,``A"C_]XD`@`$,(0`
+M`Q"`_]LD`@`%)`(``12"`$0PQ``#,,(``R0#``=P0@!N"`&+8`!B$",\`__P
+M)`*``31C`",``A2X``,=^#1"8`,T8PD!``(7N``#'3@T0@00-&,""-QD``#<
+M0P``?&,0`S!C`/\L8@`'$$``#=^_``@D!0`!`&48%#!E`$04H/^])`(`!#!B
+M`"(40``3)`(`!S!C`!$48/^W)`(`!=^_``@D`O__W[````/@``AGO0`0?*,1
+M`S!C`/\D8___+&0``A"`_ZLD`@`2<&/XLF>"@&`(`8M@?$,0"@`$(``PA``!
+M"`&+8`!$$",P8P#_)&/__RQD``(0@/^>)`(`#G!C^+)G@H!8"`&+8'Q#$`H`
+M````<&/XLF>"@&@(`8M@?$,0"B0"__\XA``!)`,`!@@!BV``9!`*`````&>]
+M_^C_L0`(_[\`$/^P``#<!0``$*``$@"`B"T(`8O?``"`+0````#>!0``$*``
+M#3P$$`T,`H&*`B`@+11`__IF$``09A#_\-^_`!`"`!`MW[$`"-^P```#X``(
+M9[T`&#P$$`T"("@M9(2$``P"?KP``(`MW[\`$-^Q``@"`!`MW[````/@``AG
+MO0`8``````/@``@D`@`'/`00#6>]__C_OP``#`)_>F2$A##?OP``)`+__P/@
+M``AGO0`(`````#"$`/\H@@`"%$``*20"``(4@@`]`````#P"__`T0@`C`$`8
+M+0`"%/@``QRX-$(`E31C`$L``A8X``,>>#1"`(#<1@``-&,`@-QD``#H@@`*
+M`````,C"`"P`````W$3_@"0#__\D`@`%,(0``P/@``@`9!`+`````,C"`!T`
+M````W$+_@-QC_X`P0@`#$$```S!C``,48``<`````"BB``(X0@`!`^``""1"
+M``4`````/`+__"2$``(T0@`)``0>.``"%'AD0H`)``(7.'QB*@HPI0`#%*``
+M#&1%`(`D`O__?&4:"C!C``0#X``(`(,0"]QD_X`D`@`&)`/__S"$``,#X``(
+M`&00"P/@``@D`O__)`(``A2"`!8\`__P-&,`(P!@$"T``QSX-&,`E0`"%+@`
+M`QXX-$(`2S1C`(```A9XW&,``#1"`(#<0@``R&(`!``````P0@`$`^``""Q"
+M``%P0@"Z`^``"#!"``(``````^``""0"__\HA``$)`,`!"0"``(#X``(`&00
+M"P`````#X``(```0+0/@``@``!`M`^``"`````!GO?_H_[$`"`"`B"W_L```
+M_[\`$`P!B](`P"`M`$"`+1(``!$``!`M#`$YZ`(@("T"("`M#`$YN```*"V.
+M!0`,#`$YN`(@("V.!0`(C@(`#`(@("T``#`M`*(H(PP!.9XDI0`!?$+X`]^_
+M`!#?L0`(W[````/@``AGO0`8`````&>]_^C_L0`(`("(+?^_`!``P"`M#`&+
+MTO^P```00``B`B`@+0P!.>@D$``H)A#__P(@("TD!0`@#`$YG@``,"T6`/_[
+M)A#__PP!.=("("`M?!#X.PP`MU(D!``#/`,AC31C[T$``B"X``(I^``#'#@`
+MI"`O-&-KVP""$"T``QQX``(0^#1C--L`0P`=```8$``#'+H`<!@M?`+X.P!#
+M$"L40/_]`````-^_`!#?L0`(W[````/@``AGO0`8``````/@``@``````^``
+M"``````#X``(``````/@``@``!`M/`/__'"$'C(T8P`)```0+0`#''AD8X`)
+M``,?.#1C`1A\@QH*?&,8`S!C`/\L9``,$(``!``#&+@\`A`-9$*%@'Q#$`H#
+MX``(``````````!GO?_@_[$`$"01``'_OP`8$)$`,?^P``@D`@`"$((`(@``
+M```0@``(`````"00___?OP`8`@`0+=^Q`!#?L``(`^``"&>]`"#_I0``#`&+
+M*@``("W?I0``%*``,0!`@"TL0@`6$$#_\20"``$\`P`!`@(0%#1C8```0Q@D
+M%&#_["00``$\`P`6`$,8)!1@_^@D$``,Z%7_YB00``,(`8SD)!#__P`````D
+M!``"#`&+*B00___?OP`8W[$`$"0#`!8X0@`6`&*`"@(`$"W?L``(`^``"&>]
+M`"#_I0``#`&+*B0$``$D!``"#`&+*@!`@"W?I0``$+$`'"0#``(0HP`BW[\`
+M&"0"___?L0`0`$6`"P(`$"W?L``(`^``"&>]`"`4L?_$W[\`&"Q"`!400/^_
+M)`(``3P#`!`"`A`4-&.@``!#&"048/^[)!```3P#``L`0Q`D%$#_MR00``P(
+M`8SE)!#__P`````D`P`&$@/_L"1#__LD$/__+&,``@@!C.0`0X`+`````"00
+M__\X0@`&)`,`!@@!C.0`8H`*``````/@``@`````**,`"!1@``0D`@`M`^``
+M"`````````````1`^#P#$@\!!#`M9&-M@`#%,"TD!___``8PN`!F,"V,P@``
+M%.+_\S"J``\\`O_\-$(`"3")``,``A1X``I6.&1"@`D`"4D\``(7.#1"`(`!
+M0A`M`$D0)=Q"``#(0``(`````"RB``440``M`````*S'```#X``()`+__P``
+M``#H00`C`````,A"__DHJ@`")*+__@"J$`LD"X`!``M<^"0*@`$U:\`'``I4
+M^'!"%C(`"U]X`$M8+35*P`<!:5@E``I6N-UK```U2B`-``I0^`!*4"U]8A(#
+M`4E()=TJ```P0@#_+$D`!1$@_^$`````/`80#7!"$/)DQH28`00@+7S"$@H`
+M0``(`(4@+0`````D`P`+)`(`"P/@``BLPP``/`(0#7"F^/)D0H3`?$82"@!`
+M``@`````/`7_\``$$+@TI0`C``0A>``%++@TI0!A``4N>#2E!!`!)2@EW*4`
+M`,BC``8\!?_P`$0H+20&`!L`92@MK*8`##P%__``1!`M-*4`(P!B&"T`!2SX
+M-*4`PP`%+C@TI000`25()=TE``#(HP!D)`0`!"0$`!LD`@`;`^``"*QD``P\
+M`O_P-$(`(P`"%+@T0@!A``(6>#1"!!`!(D@EW2(``,A#`$X```````00N``$
+M(7@`1!`M)`0`&P!B&"TD`@`;`^``"*QD``@D`H`!`00@+0`"%+@`A2`M-$)@
+M`P`"%[@T0@00`2)()=TB``#(0P!.```````$(+@D`@`;`&08+20$`!L#X``(
+MK&0``#P"__`T0@`C``(4^#1"`,,``A8X-$($$`$B2"7=(@``R$,`-@``````
+M!!"X``0A>`!$$"TD!``;`&(8+20"`!L#X``(K&0`$``$(+@D`@`#`&08+20$
+M``,#X``(K&0``,E!`#0```````0@N"0"`!D`9!@M)`0`&0/@``BL9`````0@
+MN"0"``$`9!@M)`0``0/@``BL9`````0@N"0"``(`9!@M)`0``@/@``BL9```
+MR4$`)@``````!""X)`(`&@!D&"TD!``:`^``"*QD````!!"X``0A>`!$$"TD
+M!``$`&(8+20"``0#X``(K&0`""0"``0#X``(K&0`#``$$+@`!"%X`$00+20$
+M``0`8A@M)`(`!`/@``BL9``0``0@N"0"``0`9!@M)`0`!`/@``BL9`````0@
+MN"0"`!@`9!@M)`0`&`/@``BL9`````0@N"0"`!<`9!@M)`0`%P/@``BL9```
+M9[W_T/^P```\$!(/_[$`"&80;<C_LP`8``2(N/^R`!`"$9`M_[\`*"03____
+MM``@CD(``!!3``H`````W[\`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]
+M`#``````*((`!Q!``0DP@P`//`+__#1"``D``QXX``(4>&1"@`D``A<X-$(`
+M@'QB$@K(0``*`````"R"``<40`!7`````"0"__\"$8`MK@(```@!CD$D`O__
+M`````,A"`$D`````*((`!!1``&(D@__^)(3_^RR$``(4@`!.```8+0``$"TD
+M#P`$```H+20-@`$`HQ@M``UL^``%((`!H'`M-:W`!P`-;K@USL`'-:T@#0`#
+M'3@``$`M```X+0`.=W@`#6CX/`P`$`````!\;E(*`(`P+7QM6@HDI0`!`&P8
+M+22$``1]2A(#`*](*GUK`$,`RE`$`,LP!`%'."45(/_S`,A`)20#``(00P":
+M/`/_\"0#`@`0XP`]*.,"`1!@`'\D`P(U)`,`!1#C`/,HXP`&$&``LR0#`#,D
+M`P`!$.,`U"CD``(4@`$H)`0``A#D`+X`````)`,`!!#C`.(```````````(1
+M&"TD!/__K&0``"0#``(00P`N/`/_\`@!CD%^$1`*R$4`%P`````D`P`6)`(`
+M%@@!CD&N0P``/`(0#7"$^/)D0H3H?$0B"@"```@`````#`&,1B0$``(00`#[
+M)`,`("0#``$00P$9)`0``B0#`"`D#P`$$$3_K"0%``(`````KE,```@!CD$D
+M`O__````````$"UP8Q$R)`\`!`@!CFP``"@M`````"0#``(40P!T``````(1
+M$"TD`P`5K$,``"0"``1\5!`'/`/_\#1C`",`8!`M``,<N#1C`'$``A+\``,>
+M>#1"`/@T8P,(_'0``-Q$``#\=`SXW$(```@!CD%^$1`*)`(`!0(1@"VN`@``
+M"`&.020"``4\`O_P-$(`(P`"%+@T0@!A``(6>#1"!!#<0@``R$,`/B0#``0D
+M`P`;)`(`&P@!CD&N`P`,/`+_\#1"`",``A2X-$(`80`"%G@T0@00W$(``,A#
+M`#0D`P`$)`,`&R0"`!L(`8Y!K@,`""0"@`$"$8`M``(4N#1"8`,``A>X-$($
+M$-Q"``#(0P`J`````"0"`!NN`@``"`&.020"`!L`````$.,`,2CC`C808``E
+M)`,S!20#`@40XP`L*.,"!A!@`)(D`P(E)`,"`A3C_X@"$1@M)`,``A!#_[$D
+M`P`!$$,`KP(1@"TD`@`#K@(```@!CD$D`@`#`````#1C`",``QRX-&,`<0`#
+M'G@T8P,(W'0```@!CHXD`P(`)`(`!`@!CD&N`P`,)`(`!`@!CD&N`P`()`(`
+M!*X"```(`8Y!)`(`!!#C``DHXS,&$&``4"0#,S,D`S,`$.,`)"0#,P(4X_]C
+M`A$8+0`````40/]@`A$8+20"`","$8`MK@(```@!CD$D`@`C$.,`*RCC`#00
+M8`!.)`,`-20#`!40XP`B)`,`(A3C_U("$1@M)`0``P@!CJ6L9````(`H+3P$
+M$`T,`GZ\9(2$2`@!CD$D`O__%$/_Y@`````D`@`5`A&`+:X"```(`8Y!)`(`
+M%1!`_^$D`P`"%$/^]0`````1``!U`A$0+20#`"6L0P``)`(`!`@!CM1\5!`'
+M`A$8+20$``((`8ZEK&0```(1&"TD!``@"`&.I:QD```D0___+&,``A!@_N(`
+M````$0``7P(1&"TD!``EK&0``"0#``(00__K``````@!CD%^$1`*$0``-`(1
+M&"TD!``:"`&.I:QD```"$1@M)`0`'`@!CJ6L9```$.,`"0`````D`S,U%./_
+M$P`````1```O`A$8+20$`!X(`8ZEK&0``!$``"<"$1@M)`0`&0@!CJ6L9```
+M$.,`""0#`$44X_\%`````!$``!L"$1@M)`0`(@@!CJ6L9```$$#_H``````1
+M```F`A$8+20$`"D(`8ZEK&0``!#C``4D`P(S%./^]@(1&"T(`8]"``````(1
+M&"TD!``?"`&.I:QD```D#P`$"`&.;```*"TD!``7"`&.I:QD```D!``A"`&.
+MI:QD```D!``8"`&.I:QD```D!``="`&.I:QD```4X/[?`A$8+20#``(00P`,
+M)`,`!`(1&"TD!``!"`&.I:QD```D!``J"`&.I:QD```D`@`5K@(```@!CD$D
+M`@`5"`&/R'QT$`<D`P`@)`\``@@!CFP``"@M)`0`)@@!CWVL9```)`,`)JQ#
+M```D`@`$"`&.U'Q4$`<`````/`<2#P`$,+ADYVWH)`7__P#F&"V,8@``$$4`
+M`P`````#X``(`````"B"``H00`!])(+__BQ"``(40`!//`+__#"(``\T0@`)
+M``A&.``"%'AD0H`)``(7.#1"`(!]`A(*R$``!RR$``(0@``_)`0`!"0"``0#
+MX``(K&0```````#(0@`Y/`3_\#2$`",`@!`M``0D>#2$`"4``A3X``0FN#1"
+M`)4TA`"```(6.-R$```T0@"`W$(``.B"`#TD&``"R$(`*209``(D&``$)`,`
+M`B0.@`$``R"```YT^``#%3@!P'@M-<[`!P`.=K@U[\`'-<X@#0``2"T``$`M
+M``]_>``.</@\#0`0?$]:"@"`*"U\3F(*)&,``0!-$"TDA``$?6L2`P!X4"I]
+MC`!#`*M8!`"L*`0!:$`E%4#_\P"I2"45```A`````"<Y__\O.0`"%R``/@#F
+M,"TD`@`!K,(```/@``@D`@`!K&4```/@``@D`O__`````#P"__!PA`"O-$(`
+M(P`$)C@``A0X-$(`&0`"%O@T0@$`?((B"LB`__(D!``()`(`"`/@``BL9```
+M,$(`!"0#``0L60`!`&+`"P@!D!8``!@M)`(S`!$"``8``````.8P+20"__^L
+MP@```^``""0"__\7(``%)`(`(P#F,"VLP@```^``""0"`",D`@`"%R+_\P``
+M```1(``3`.8P+20"`"6LP@```^``""0"`"4`@"@M/`00#6>]__C_OP``#`)^
+MO&2$A$C?OP``)`+__P/@``AGO0`()`(`)*S"```#X``()`(`)"0"`":LP@``
+M`^``""0"`"8`````"`&.,@`````HH@`'``0@*SA"``$`@B`E%(``+P`````\
+M`O_\,*4`#S1"``D`!2XX``(4>&1"@`D``A<X-$(`@'RB&@KH8``0/`,'<V1#
+M`)@``!`M?*,J"GRE&`,PI0#_+*,`#!!@`!(`````/`(0#7"E&/)D0H4@?$4J
+M"@"@``@``````````&1"_XA\HBH*/`(%]31C64`T0N$`,*4`!`/@``@`91`+
+M/`()4#1"+Y`#X``(`````#P"!W,#X``(-$)90``````\`@7U`^``"#1"X0``
+M`````^``""0"__\\`A`-``08N&1"A;!\0Q`*$$```P`````#X``(`````'P"
+M`#M\0@G#`(`H+0@!D(``0"`M``````@!D+8`H"`M/`+__&>]_Z`T0@`),*D`
+M#P`"%'@D`P`$_[X`4&1"@`G_L``0``GV.``"%SAPD`DS_[<`2`/"$"W_OP!8
+M`%`0)?^V`$`D%P`"_[4`."BD``3_M``P`&2X"_^S`"C_L@`@_[$`&-Q"```P
+M0@`#%$``2#P#__``P(@M-&,`(W#6_^\``QYX/`8`$#1C)!,``QRX-&,`(`/#
+M&"UR(C@K`'!`)0#V."04X``$)$(``=T'``#HY@`XW[\`6`!7."H4X/_V`&88
+M+3P3__P\`__P-G,`"31C`",`$YQX``,>N&9S@`D`"4SX`!.?.#1C2"<V<P$8
+M``,<>`/3$"TT8P!(`%`@)0``D"W<A```,(0`#P$D("T`!"%X`(,8+0!P&"7<
+M8P``Z&X`#]^_`%C<0@``?$(8`S!"`/\L0P`,%&``(SP4$`W_I0`(#`&.,@"@
+M("W?I0`(**4`"!"@`1UF<_]PW[\`6`)`$"W?O@!0W[<`2-^V`$#?M0`XW[0`
+M,-^S`"C?L@`@W[$`&-^P`!`#X``(9[T`8-^_`%@D$O__W[X`4`)`$"W?MP!(
+MW[8`0-^U`#C?M``PW[,`*-^R`"#?L0`8W[``$`/@``AGO0!@``(0N`"@("UF
+ME(6`_Z4`"`P!CC)^@J`*WZ4`""BE``@0H``]9F/_<"J4&&H6@/_:W[\`6'!$
+M!NYP0P$N`(,8)11@_^$D0O_[+$(``A1`_]XD`O__?!+X.Q(B`#LD!``##`"W
+M4@`````\`R&--&/O03P%__P``B"X``(Q^``#'#@`Q#`O-&-KVP#","T``Q1X
+M``8PN#1"--LTI0`)`,(`'0`%+'@``#`09*6`"0`%+S@D!``!-*4!4`(D(`0#
+MQ2@M`+`H)0`&-+H`TC`M`````-RB``!\0AH#,$(`_P!$$"040`!'/`?__'P"
+M^#L`PA`K%$#_MM^_`%A\`_@[9&,`9'P"^#L`0Q`K%$#__0`````(`9%L````
+M``/#&"T`<!@EW&0``"0#``\PA``/$(/_O@`````JE!]`$H#_OM^_`%@(`9$?
+M`D`0+0P`MU(`````/`,AC31C[T$\!?_\``(@N``",?@``QPX`,0P+S1C:]L`
+MPC`M``,4>``&,+@T0C3;-*4`"0#"`!T`!2QX```P$&2E@`D`!2\X)`0``32E
+M`5`"Y"`$`\4H+22$__\`L"@E``8TN@#2,"W<H@``?$(:`S!"`/\01``./`?_
+M_'P"^#L`PA`K%$#_?=^_`%A\`_@[9&,`9`````!\`O@[`$,0*Q1`__T`````
+M"`&1I@`````\"/_P-.<`"34(`",`!SQX``A"_&3G@`DU"`#X``<_.`/`&"TT
+MYP0````0+20*``$""$`E9.D`&'(B,"L`9R@M`&D@+0#6,"0`L"@E`)`@)13`
+M``HD0@`!W*8``'U&$(?\I@``)`8``MT%``#<A0``?,5[A_R%``#=!````%<@
+M*A2`_^UD8P"`/!4AC3P3__`VM>]!-G,`(P`5K#@`$YK\-K5KVS9S`/@`%:QX
+M`A.8)?^S`````)`M``"@+0@!D>XVM33;`````"92``$"5Q`J$$``/6?>`(!R
+M,A`K`%80)!1`__D`````?!/X.PP`MU(D!``#/`8``S3&T)`\`__\<$80`S1C
+M``D``QQX9&.`"0`#'S@T8P08`\,@+0!5`!T`D"`E```P$-R"````!C2ZZ$X`
+M#@#3,"U\`O@[`,(0*Q1```L\`O_\?`/X.V1C`&1\`O@[`$,0*Q1`__T`````
+MW((``,A.__0`````/`+__"92``'<A@``-$(`"0`"%'AD0H`)``(7.##&0``T
+M0@0``\(8+20"``$`<!@E`H80"]QD``!GW@"``$"@+0)7$"I\!!"'_&0``-^D
+M``#<@P``%$#_QG(R$"O?OP!8`!0X*]^^`%!P\@`ZW[<`2`)`$"W?M@!`W[4`
+M.-^T`##?LP`HW[(`(-^Q`!C?L``0`^``"&>]`&`#T_`M`]"`)=X"```(`9$>
+MW[\`6#P#`/\\`@`--&/_/V>]_]A`!W@`-$*7``#C&"3_L@`0`*"0+?^Q``@`
+M@(@M_[````#`@"W_OP`@$&(`#_^S`!@D1``!$&0`#"1$``(09``*)$0!`!!D
+M``@``!`MW[\`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`*'P3^#L,`+=2)`0`
+M`SP#(8T\!/_\-&/O00`"*/@TA``)``(1>``#'#@`HA`M``0D>``".+ADA(`)
+M-&-KVP!'."T``QQX``07.#)&``\T0@%0-&,TVS(H``,`!BXX`.,`'0"B*"T`
+M"$$\```X$`$%*"7<H@``)`0``0($(`1\0AH#,$(`_P`'/+H`1!`D%$``$@#S
+M."T`````?`+X.P#B$"L40``^W[\`('P#^#MD8P!D?`+X.P!#$"L40/_]````
+M`-RB``!\0AH#,$(`_P!$$"000/_Q`````#P$__`R`@`#-(0`(P`&,3@`!"9X
+M`,(0+32$)!,``A4X``0DN#P%__`TA`!@-*4`(P!$&"TD!@`!`&@8)62$`!#<
+M9P````4J_`!$$"TTI0#X`$@@)0$%*"5\QV,'```0+?QG``#<HP``W(,``'S#
+M.<?\@P``W*,``-R#``!\PWO'_(,``-RC``#<@P``?`,YQ_R#``#<HP``W(,`
+M`'S#>\?\@P``W[\`(-^S`!C?L@`0W[$`"-^P``#<HP```^``"&>]`"@D`O__
+MW[,`&-^R`!#?L0`(W[````/@``AGO0`H**,`!"0"``0D"P`"/`8`#0!#6`L\
+M`P#_-&/_/S3&EP!``G@``$,8)!!F``<DP@`!$&(`!23&``(09@`#``````/@
+M``@`````/`K_\#P(__`U2@`C-0@`(P`*5G@PAP`#-4HD$0`(0OP`"E2X,*(`
+M#P`'.3PU"`#X-4H`6`#H0"4``A8X```8+20/``-E3O_()`W-;SP,`!``2B@M
+M`$X@+0"G*"4`AR`EW*8``"1C``$`3!`M`&M(*GWF>X?\I@``W04``-R%``!]
+MI7@'_(4``-T$```5(/_P``````/@``@``````````&>]_^`HA``$_[(`$"0"
+M``0D$@`"/`40#0!$D`L\!!`-_[$`"&2$A&#_L```9*6$:/^_`!@,`GZ\/!$0
+M#0``@"UF,82(`@`H+0(@("T,`GZ\)A```0(2$"H40/_[`@`H+=^_`!@D!``*
+MW[(`$-^Q``C?L```"`)^XF>]`"``````/`+_@#1"`0<``A(\-$('<-Q"``!\
+M0B("$$```P`````#X``(`````&>]_^C_L0`()!$`!/^P``#_OP`0#`$Y?`"`
+M@"TD!0!`#`$YN`(`("TD!@`#`@`@+0P!.9XD!0`$`@`@+20%``D,`3FX)C'_
+M_P(`("TD!0`!#`$YGB0&``$"`"`M#`$YN"0%`+X6(/_N)`4`0-^_`!`"`"`M
+MW[$`"-^P```(`3G29[T`&`````!GO?_8/`7__/^Q``@TI0`)_[,`&#P1%`#_
+ML@`09B,_&/^_`"``!2QX_[```&2E@`?<8@`0``4O.-QG``@\`__P-&,`(S2E
+M`!#\I`````,:_``'D`!\1?@#)`@`$``"$``T8P#X`*)`"XXD/QQ\Y_@#W&(`
+M`"Y"$``00``$`D"8+203$``D!Q``)!(0`#P%$`T``#`M#`#+T&2EA?`$0``V
+M`$"`+?XP/Q@\!``#```H+0(`,"T,`+>6`F`X+11``#8\`__\/`+_\#1C``DT
+M0@`C?`0`.WR$"<,``QQX``0B@&1C@`<`D(`E``,?.'(07#,`$I#"-&,`"'Y0
+M:$;\<`````(2_#P$``,T0@#XW$(```P`N0H`````/`3__'Q#2`$TA``)``(8
+M"@`$)'ADA(`'``0G.`!@$"T\`__P-&,`(S2$`"#\@@````,:_#1C`/@``!`M
+MW&,``-^_`"#?LP`8W[(`$-^Q``C?L````^``"&>]`"@`````CB8_'#P$$`T\
+M!1`-9(2&``P"?KQDI89@"`&3>OXP/Q@(`9.F)`+__V>]__`\!``#_[\`"`P`
+MN%S_L```%$``+CP"__P\!/_P-$(`"20%``$``A1X-(0`(V1"@`<`!"+\``(7
+M.#2$`/C<0P``?*,`!_Q#``#<@@``?`/X.V1C`&1\`O@[`$,0*Q1`__T\!``#
+M#`"XD@``@"T\!?_\-*4`"3P#%```!2QX9&(_&&2E@`<\!/_PW$(`$``%+S@T
+MA``C-*4`"/R@````!"+\-(0`^-R$```00``$W[\`"`P`SA*,9#\<W[\`"`(`
+M$"W?L````^``"&>]`!`\!!`-)!#__PP"?WIDA(8P"`&3Z-^_``AGO?_@_[$`
+M"#P1%!C>*%C0_[(`$`"@D"W_L````("`+1$``#W_OP`8-`6@``$%*"W1`S``
+M9&(``?$",``00/_\T0(P"!!#``0````````!0!``__S1`C`(/`,``0$#&"V,
+M8J`(E&2@#@(","$`Q"`J$(``+0````#<::``?2EX`1$@`",D`___?&G_QAH`
+M``X"`!@M/`H``0@!E!L!"E`MC4*@""1(``%F4@`(K*@`"``"$/C>2/_X`2(0
+M+21C__\48/_W_$@`````$"T```%/WB-8T-QD,`ADA``!_&0P"````4\40``$
+M/`/_^#1C`!<``QL\_'```-^_`!C?L@`0W[$`"-^P```#X``(9[T`(`@!E!4`
+M`$@M#`"W6```("T(`9/\WBA8T#P$``,"`#`M#`"Y-`)`."T(`90E`````#P"
+M%`#\1#\89$(_&/Q%``@#X``(_$8`$(^B``1PYP?R?2<A!GUG$(9]!_>'?4<8
+MQGQ'"$:/H@`,?$<`!GS'N`=\I^X'`^``"/R'````````<*4%\WS%JX9\Y;6&
+M?05(!0/@``C\A0``<*4&,WS%2`4#X``(_(4``'RE2`$#X``(_(4````````\
+M`A0`W$4_&&1"/QC<0P`(W$(`$/R%``#\@P`(`^``"/R"`!``````)((``0/@
+M``@``A#```````"`$"TD`___?&+_QOQ%```0H``,9(0`"```$"TD!___)`;_
+MJ`"`&"UD0@`!?./_QF2$``C\9@```$48*Q1@__H`@!@M`^``"```$"T`````
+M`(#`+20"__]\6/_&WPP``!&``)(`!W@O9[W_Z/^P````!W#X_[(`$``/>/C_
+ML0`(```0+629``@D"O__)`W_J!4``$<`!H`K`$<`'P#@`?3?"P`````8$!!@
+M``D`2Q@K9$(``0!'`!\`X`'T```8$!1@__QD0@`!9$+__P!+&"L08``5W[(`
+M$``"&/@#(Q@M?4/_QMQC```0;0`6`$"(+0!'$"T``ACX"`&4MP,C&"W<A```
+M`$=(+1"-``T`;A@M`2`0+0!@("T`2T@K%2#_^'U$_\;?L@`0)`+__]^Q``C?
+ML````^``"&>]`!@``````$"(+1(J__<"+!`K`%`0)!!``%,"()`M`!$@^`(@
+M$"T`F2`M```8+0"`2"UD0@`!?4G_Q@!,6"O=*0``<2GJ+@$C&"UPPT@K`2M(
+M)!4@__9DA``($&8`,`(C&"T`3!@K$&#_X``````1`/^[`````-\#``!D8___
+M`$(8"P!G`!\`X`'T```0$!!```D`XQ`K9&,``0!G`!\`X`'T```0$!1`__QD
+M8P`!9&/__P#C$"L00/_,``,0^`,B$"U]0O_&W$(``!!-`!(``````&<8+P`#
+M$/@(`93_`R(0+0````#<A````&=(+Q"-``D`3Q`M`2`8+0!`("T`XT@K%2#_
+M^'U$_\8(`92\W[(`$``````(`93#`&"(+0(C$"L00``*`!$0^"0$__\#(L@M
+M`R`0+692``%\@O_&9SD`"/Q%```60__[`R`0+=^R`!``$1``W[```-^Q``@#
+MX``(9[T`&`(@$"T(`937```8+0/@``@D`O__``````@!E(8``$`M)`+__P"`
+M&"U\0__&W&H``!%``"=DA``(``!(+0"`&"T``!`M)`S__P@!E3(D"_^H$28`
+M#F1"``$02@`;``````!@0"UD8P`(?8C_QMT(```5"__W``E`N&4I``$`Z$`M
+MK0(``!4F__1D0@`!$2``#``)2+@D`___`.E(+0````",X@``9.<`!``"$/@`
+M1!`M?&+_QOQ%```4Z?_Y``````/@``@``!`M`^``""0"__\#X``(``80"@"`
+M$"TD!/__`$`8+0#'2"U\@__&`*`X+=QH```!"1@K%&``)P#)&"L08``@``88
+M^&1+``@!8U@M`6`8+7R#_\;<9```)`/_J!2#`!MDQ``"`,`8+0`$(/@D#/__
+M`((@+0@!E6TD#?^HW0@``!4-`!)DA``(`(!`+61C``$`:5`K%4#_^7V(_\8`
+MP!@M)`+__P%@("UD8P`!?$3_QF5K``C\AP``%&G_^P%@("T#X``(``80````
+M```#X``()`+__SP$$`T\!1`-9[W_^&2$AGADI8>(`$`P+0`(0`#_OP``#`)^
+MO``)2`#?OP``)`+__P/@``AGO0`(`(`0+20#__]\8O_&W$@``!$``!9DA``(
+M)`+__P``,"TD"?__)`K_J`"`&"UDQ@`!?2/_QF2$``C<9P``$*<`!@`````4
+MR/_Y`(`8+0/@``@``````````/QJ```4R/_R```0+0@!E:$``````^``""0"
+M__\`````9[W_^"0#__\`@!`M_[\``'QB_\;<20``$,``'P````",IP```.D0
+M*Q!``!]DA``(``<X^`#D."TD`O^H?&?_QMSC```08@`B9*4`!```$"TD"___
+M"`&5SB0*_Z@`````C*<``&2E``0`!QCX`.E`*Q$```T`9!@M?6/_QMQC```0
+M:@`4W[\``&1"``$`1A@K%&#_\P````#?OP``)`(``0/@``AGO0`(/`00#3P%
+M$`UDA(;09*6'H`P"?KP`"3``W[\`````$"T#X``(9[T`"-^_`````!`M`^``
+M"&>]``AGO?_@_[(`$`"`D"W_L0`(`*"(+?^P``#_OP`8#`&5K`#`@"TD`P`!
+M%$,`$B0"__\2```/```0+69$``@"("@M)`C__R0&_ZB,HP``9$(``62E``0`
+M4#@K``,8^`!D&"U]`__&_&8``!3@__<````````0+=^_`!C?L@`0W[$`"-^P
+M```#X``(9[T`(``````D`O__`(`8+7Q#_\8`Q3@AW&8```#'$"L40``2`*<0
+M*Q!```X`X$`M9((`"``%&/@`0Q`M)`;__R0$_Z@`0!@M9*4``7S#_\9D0@`(
+M_&0```"H&"L48/_Z`$`8+0/@``@``!`M/`00#3P%$`UGO?_X9(2'"&2EA\#_
+MOP``#`)^O``&,`#?OP``)`+__P/@``AGO0`(`````"0#__\`@!`M?&+_Q@"@
+M."W<1@```*80*Q!```D```````4X^`"'("UDA``(?&3_QMR"```#X``(````
+M```````\!!`-/`40#6>]__ADA(=`9*6'X``&,`#_OP``#`)^O``'.`#?OP``
+M```0+0/@``AGO0`(`````&>]_[@``"@M_[,`&`"`F"W_M@`P)`3___^_`$`"
+M8!@M_[<`.&9B``C_M0`H?(/_QO^T`"!\@O_&_[(`$#P6$`W_L0`(9L2'</^P
+M``#<=```W%$```P"?KP"(#`M+H(``A1``"%F<P`0)!```0``&"TD%___9M6'
+M<`)@$"T``R@`?N+_QF9S``C<4@```B`P+1(R``0"H"`M#`)^O``````"`!@M
+M9A```184__,"0(@M``,H`-^_`$!FQ(=PW[<`.`)`,"W?M@`PW[4`*-^T`"#?
+MLP`8W[(`$-^Q``C?L```"`)^O&>]`$@"()`M"`&6>0``*"T`````9[W_P"R"
+M``3_L@`P`("0+?^_`#C_L0`H$$``(?^P`"`\`A@`/!%C=C1"%Q<V,6U?``(4
+M.``1C#@T0A<7))``,``"%'@V,7-S<A`\,S1"+BX`$8PX`@*`)38Q;U]GI``0
+M_[$`$"0%`$`,`-(^_[``&!1``!\\!!`-W[\`./^Q``#_L``(WZ(``-^C``C?
+ML@`PW[$`*-^P`"`#X``(9[T`0#P0%Q<\$6EN-A`7%S8Q=F$`$(0X`!&,.#80
+M%Q<V,6QI`!"$>``1C#@V$"XN-C%D+O^Q`!!GI``0_[``&`P`TCXD!0!`$$#_
+MY=^_`#@\!!`-`D`H+0P"?KQDA(?X/`-I;CP"%Q<T8W9A-$(7%P`#'#@``A0X
+M-&-L:=^_`#@T0A<7``,<.``"%'@T8V0N-$(N+O^C``#_H@`(WZ,`"-^B``#?
+ML@`PW[$`*-^P`"`#X``(9[T`0`````!GO?_(_[$`*`#`B"W_L``@_[\`,`P!
+MEHH`H(`M/`5I;CP$%Q<TI79A-(07%P`%+#@`!"0X-(07%S2E;&D`!#1X``4L
+M.`!`0"TTI60N-,8N+G$%*"IP9C`J`&`@+?^C`!@`IC`D_Z(`$"0#____J```
+M%,``"O^D``B.!@``!,``#@``*"T#H"`M#`#31`(@."V.!0``%$4`'@``&"W?
+MOP`P`&`0+=^Q`"C?L``@`^``"&>]`#@``````Z`@+0(@,"T,`-*`)`<``01`
+M__0D`__^&B``"-^_`#`"`"@M`%$P(:RB```D0@`!%$;__62E``3?OP`P```8
+M+=^Q`"@`8!`MW[``(`/@``AGO0`X`````#P$$`T`L3`A#`)^O&2$B#@(`9<'
+M)`/__F>]__`D`O__`Z`H+20&``'_OP`(#`&6X*^B``"/I```)`/__]^_``AG
+MO0`0`((8"@/@``@`8!`M9[W_R/^_`##_I0`@#`&6BO^F`"C?I0`@`Z`@+=^F
+M`"C_H@`0_Z,`&/^B```,`--P_Z,`"-^_`#`#X``(9[T`.`@!ES@D!@`!/`(4
+M)`/@``AD0K:(`````#P"%"1D0K:(P$,!$!1@__XD`P`!X$,!$!!@__L`````
+M?`,`.RAE```D9``_`&4@"B0%``$`91@4``0A@P`$(/@`1"`MW(4`*`!E&"7\
+M@P`H```!3ZQ``1````%/`^``"```````````/`(4)&1"MHC`0P$0%&#__B0#
+M``'@0P$0$&#_^P````!\`P`[*&4``"1D`#\`92`*)`4``0!E&!0``Q@G``0A
+M@P`$(/@`1"`MW(4`*`!E&"3\@P`H```!3ZQ``1````%/`^``"`````!GO?_(
+M_[```#P0%"3_LP`89A"VB/^R`!``@)@M_[$`"`"@D"W_OP`P`,"(+?^U`"@"
+M`"`M_[0`(```*"TD!@$0`."@+0P"9F`!`*@MW[\`,"0"``'^$P`(IA(`P*(1
+M`,*B%`##KA4`N-^T`"#?M0`HW[,`&-^R`!#?L0`(W[````/@``AGO0`X/`+_
+M\"0$``$T0@`C/`7_\``"%#@TI0`C-$(`"P`%*OP``A;X-*4`^-Q#``#?AH(P
+MW$<`P'R#$(=\@P`'_,<`$/Q#``#<H@```^``"``````\`O_P-$(`(P!`("T`
+M`A0X-$(`"P`$(OP``A;X-(0`^-Q#``!\`P`'_$,``-R"```#X``(`````-^"
+M@CAGO?_X$$``!?^_``#?OP```^``"&>]``@`````/`@0#20$`$```"@M```P
+M+20'`"!E"(H@#`"T:```2"T00/_S_X*"."0#``,D!``0_$,``"0#!`#?@H(X
+M_$,`"&1#`!C\1``0"`&7RO^#@C!GO?^X_[<`.`"`N"W_M0`H)`0`!/^T`"``
+MH*@M_[(`$``7D?C_OP!`_[8`,/^S`!C_L0`(#`"W4O^P```\`_^``!<@N#1C
+M`0$"1)`O``,:/`)7D"TT8P&@`!*0^-QT``"/@X)`?I1X`7*`H"T48``%`'08
+M*R0$`$`D`P!`KX2"0`!T&"L08``$`````(^4@D`2@`#%)`,`0#P0+Z\\%@`=
+M-A`(`#;6S64,`9?&`$*`"]^"@C@`%K3X#`&7QMQ1```"T``?`@`!]#P"__`T
+M0@`C/`?_\``"%#@TYP`C-$(`"P`'.OP``A;X-.<`^-Q#`````"@MWX:".-^$
+M@C!\`P`'W-,`""0&`"C\0P``W.(```P"9F```+`2`!8P>`)&$"L40`#4`!8=
+MN"0"``(`<A@K%&``Y20%`!0`5A@4`D,8*Q1@`+<`````)$(``11%__L`5A@4
+M)`0`'20"`!UR\+@#/`,AC=^2@C`T8^]!``,<.#1C:]NN50`@``,<>*Y$`!@T
+M8S3;`N,`'3P$``\``!@0-(3__JY4`"0``QRZ<'6H`_Y#``@`51`6``(0`"1"
+M__\``AA"`&(0)0`"&((`8A`E``(9`@!B$"4``AH"`&(0)0`"'`(`8A@E)&(`
+M`21C__X`9!@K$&``GJY"`!QP5!`")`4`@'!5^7(,`+&J`J`@+?Y"``#?@H(P
+MW$0``!"``)\"H#`M#`)F8```*"U\!``[#`#(WGR$"</?@H(XW$8`$!3``'X\
+M!Q`-WX*",'Z*^`,10`!<_$``$#P,__!^>&##-8P`(P``,"T!@#@M``QD.#6,
+M``L`!SK\``QF^#3G`/B,20`<-8PD`&6+W*@D&0`#96\K6&5N)UAE;1]8````
+M```&&7A]*?@#<&E(`]Q"``!PR"CR`0P@+?R```#<XP```$E(+7P%^#M\`_@[
+MWX*",-Q"``APHA`#`%``'P(``?0``"@2``40``!#&"T`````?`+X.P!#$"L4
+M0/_]`````-UE```4H``[,B/__P$/$"W\0P```!@:/-SB```1(``&```0+0`)
+M+[]](L%#`+DH)GTI(4$!)1`+?$,@!0$.$"W\0P```0U`+=SB``#?@H(PW$(`
+M"``"&`!PPR@#`*H`'P%``?0``$@2`2,8+7QB^`;]`@``W.(``-R"``#X4O_^
+MWX6","0"`!D``A,\9,8``0#*&"N,I0`<)*7__WRBF`?\@@``W.(``!!@``;?
+M@H(P"`&8AHQ)`!PD%`!`"`&8"*^#@D```!`MW[\`0-^W`#C?M@`PW[4`*-^T
+M`"#?LP`8W[(`$-^Q``C?L````^``"&>]`$@\!!`-#`)^O&2$B<C?OP!`W[<`
+M."0"___?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`$@D0@`)
+M"`&8.0!`("T`$2```F`H+0P!'(IDYXF@$$#_?CP%$`T\!!`-9(2)L`P"?KQD
+MI8J@"`&8T"0"__\`````/`00#0P"?WIDA(DP"`&8T"0"__\\!!`-`D`H+0P"
+M?KQDA(AH"`&8T"0"__\\`@@Q`!4H^C1")ND\!!`-``(4.&2$B6`T0GC5``(4
+MN&1"]\\`H@`=```H$`P"?KP`!2DZ"`&8T"0"__\\!!`-`D`H+62$B-@,`GZ\
+M`L`P+0@!F-`D`O__`````&>]__#_OP`(#`&7QO^P``#?@H(X#`&7QMQ0``#?
+MAX(X/`3_\-^#@C`TA``C`(`P+0`$)#@TA``+``8R_``$)O@TQ@#XW(4````0
+M$`#<Z@`(?`4`!_R%````"DCZG&\`)&4I___<Q```$>``2C(0`_\``F?"``R`
+M"P`"6"<`"U_#``!P+7P"`#M\0@G#,@S__P%B6"2,8@`<$$``.@``:"U\1?@#
+M?:3X`W"N*`/<8P```*0H+0`%*7@`92@MS*``@-RB````````C*<`"&5$__@D
+M!O__`((@+3%H`/\``!@M$.``(GS$_\;<AP``$$```P``````0!@M?,/_QGQB
+M2`$``Q`*`$`8+0```4\\!/^```DP`#2$`2D`X!`M``0B/'T$.09]A,P'_(,`
+M`(RC``A\8_@#`2,8*Q!@`!L`````C*,`"&5$__@`@B`M,6@`_P!F,",``!@M
+MK*8`""0&__^,IP`(%.#_X'S$_\;?@X(P):T``8QB`!P!HB`K%(#_R`````!E
+MS@`!`<\0*Q1`_\$`````W[\`"-^P```#X``(9[T`$`````"LH``("`&93@#@
+M$"T`````9[W_X/^R`!``@)`M_[$`"`"@B"W_L```_[\`&`P!E\8`P(`MWX*"
+M.!!```;?OP`8_%(``-^"@CC\40`(_%``$-^_`!C?L@`0W[$`"-^P```#X``(
+M9[T`(&>]__#_L```_[\`"`P!E\8`@(`MWX*".!!```C?OP`(W$0``-Q#``C<
+M0@`0_@0``/X#``C^`@`0W[\`"-^P```#X``(9[T`$#P'__`D`O_C-.<`(P`$
+M(G@`!SK\``(6O#3G$`!\HA`&`(<@+7S"^`<`@!@M?(22`GP#*0;\8@``)`(!
+M&!""``@``````````-QB```$0/_^``````/@``@``````````-SB\/@(`9G$
+M```````````\!O_P``0B>#3&`",D`O^-``8R_``"%CPTQA``?*(0!@"&("T`
+M@!@M?(22`GP#*0;\8@``)`(!&!""``<`````W&(```1`__XP0@#_`^``"```
+M````````W,+P^`@!F=X``````````&>]__`D!0`"_[```"0&`%#_OP`(#`&9
+ML@"`@"T"`"`M#`&9SB0%``/?OP`(W[```&>]`!!P0CXO`^``"'!"`#IGO?_0
+M_[,`&#P3(8W_L@`0-G/O00`3G#@`@)`M_[```#9S:]L`$YQX)!`#Z/^_`"@V
+M<S3;_[0`(/^Q``@``````D`@+0P!F<XD!0`",%$`"!8@`!3?OP`H?!3X.PP`
+MMU(D!``#``(8>``"$/@`8A@M``,HN`!E*"T`LP`=```H$``%++H`M"@M?`/X
+M.P!E&"L48/_]`````"80__\6`/_HW[\`*"XB``'?M``@<$(`.M^S`!C?L@`0
+MW[$`"-^P```#X``(9[T`,#P"__!GO?^8-$(`(SP#Q@#_L``8``(2_/^^`%@`
+M!()X-$(0`#1C``$"`O`M``,8?/^_`&`#P"`M_[<`4'P$*0;_M@!(-&,`0/^U
+M`$!_WI("_[0`./^S`##_L@`H_[$`(/^D``#<A```_[X`"/^D`!#?I```_(,`
+M`"0#`1@3PP"S`````'P1^#L,`+=2)`0``SP%(8TTI>]!``(@>``"&/@`!10X
+M`(,8+31":]L``A1X-$(TVP!B`!T``!@0``,<N@!Q&"T`````?`+X.P!#$"L4
+M0/_]/!+_\#92`",`$I+\-E(0$`(2D"T"0(@M?!$I!MX^``!\$/@[#`"W4B0$
+M``,\!B&--,;O00`"('@``ACX``84.`"#&"TT0FO;``(4>#1"--L`8@`=```8
+M$``#'+H`<!@M`````'P"^#L`0Q`K%$#__0````!\'DI'?E*2`OX^```D`@$8
+M$D(`=SP"__!\$/@[#`"W4B0$``,\!B&--,;O00`"('@``ACX``84.`"#&"TT
+M0FO;``(4>#1"--L`8@`=```8$``#'+H`<!@M?`+X.P!#$"L40/_]/!,AC3P6
+M__`V<^]!-M8`(P`3G#@`%K+\-G-KVR00``D`$YQX)!4``204`1@VU@#X-G,T
+MVWZ^2D?^/@``$E0`40````!\%_@[#`"W4B0$``,``AAX``(0^`!B&"T`<P`=
+M```8$``#'+H`=Q@M?`+X.P!#$"L40/_]`````'P>2D?^/@``$E0`/0````!\
+M%_@[#`"W4B0$``,``AAX``(0^`!B&"T`<P`=```8$``#'+H`=Q@M?`+X.P!#
+M$"L40/_]`````"80__\6`/_:WZ,``"0"`1C?I``0_&0``-^C``@48@`%/`+_
+M\#1"`",``A+\-$(`^-Q"``!\$/@[#`"W4B0$``,\!2&--*7O00`"('@``ACX
+M``44.`"#&"TT0FO;``(4>#1"--L`8@`=```8$``#'+H`<!@M`````'P"^#L`
+M0Q`K%$#__=^_`&#?O@!8W[<`4-^V`$C?M0!`W[0`.-^S`##?L@`HW[$`(-^P
+M`!@#X``(9[T`:``````(`9JXWL(```@!FJ;>P@``-$(`(P`"$OPT0@#X"`&:
+M@MQ"``#<0O#X"`&:2P````!GO?_H)`4``O^Q``@D!@!@_[\`$`"`B"T,`9FR
+M_[````P!F?@"("`M$$``%P!`@"T"("`M#`&9SB0%``,D`P#X$$,`!P````#?
+MOP`0`@`0+=^Q``C?L````^``"&>]`!@,`9HJ`B`@+0(@("TD!0`"#`&9LB0&
+M`&`,`9GX`B`@+11`__$`0(`M`B`@+0P!F<XD!0`#W[\`$-^Q``AP4`0O<$("
+M+P("@"1R$``Z`@`0+=^P```#X``(9[T`&`````!GO?^H9,(``?^W`$`D]___
+M_[X`2'[W^`/_M@`X<*4P<O^R`!@`X+`M_[``"`#`\"W_OP!0`("`+?^U`#``
+M5[@M_[0`*"02`&C_LP`@_[$`$/^E````````#`&;``(`("T40``NWZ8``"0%
+M``$,`9FR`@`@+0(`("TD!0`"#`&9LB0&`$`,`9GX`@`@+11``"3?OP!0&L``
+M(@/`B"TD%`!X)!4`L"03`#@"`"`M#`&9SB0%``,D!0`!`@`@+7!&"B]P0P8O
+M$%+_Y`##&"0L1P!I$.``'P`````04__?`````!1@``XD`O__DB8```P!F;)F
+M,0`!`@`@+20%``(,`9FR)`8`0`P!F?@"`"`M%$``!-^_`%`6-__D`````-^_
+M`%#?O@!(W[<`0-^V`#C?M0`PW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`
+M6``````05/_!`````!15_^$`````"`&;1@````!GO?]H).+___^T`&@L0@`(
+M_[\`D`#@H"W_O@"(_[<`@/^V`'C_M0!P_[,`8/^R`%C_L0!0_[``2/^D`#C_
+MI@`($$``K_^I`!@M(P`!``@7P@!B$"4I`P`#.$(``0!B$"000`"G`0"8+3P6
+M__``!!IX-M8`(SP1(8T`%K+\-C'O03;6$```$8PX9L(`&`!VL"T`8A@M,/X`
+M__^C`"!\PR##_Z,`$``&&CK_HP`H-C%KV]^C`"`"P(`M)][__P`1C'A^UI("
+M,]X`!WQCD@(`H+@M_Z,`,'P0*0;?HP`@)!(`!/^V```D%2<0-C$TVWP#*0;_
+MHP!`)`+_`P``&"T``A7\?\*U!A)@``I^XHH&)`0``7R"YD;?I``0?((XQM^D
+M``A\@A`&)`0``A)D`$[?I``HWZ,``/X"```D`@$8$&(`1#P$__#>`@``!$$`
+M%@`````FM?__&J``4@````!\%O@[#`"W4B0$``,``AAX``(0^`!B&"T`<0`=
+M```8$``#'+H`=A@M`````'P"^#L`0Q`K%$#__0````#>`@``!$#_[``````:
+MH``^`````/A8`&(``A@``&!`+7!B'B]P9#(O?`@8Q"0'_]<`@B`D<&8:+G!B
+M#BYQ""PO`&<X)`$$("1PXR`O`,(0)0!D&"0X0@`!`&(0)!1``$(F0@`!&$``
+M0=^_`)!\%O@[#`"W4B0$``,``B"X``(1.`""$"T``B"X`$00+0!1`!T``!`0
+M``(4N@!6&"T`````?`+X.P!#$"L40/_]``````@!F\<F4O__-(0`(P`$(OPT
+MA`#X"`&;V]R"``!\@S@&WZ0`0/R#```D`P`!WZ0`,'QB[T8D`P$8%(/_JSP$
+M__`TA``C``0B_#2$`/C<@P``"`&;U]^C```,`9HJWZ0`."9"``$80``5W[\`
+MD'P6^#L,`+=2)`0``P`"(+@``A$X`((0+0`"(+@`1!`M`%$`'0``$!```A2Z
+M`%88+0````!\`O@[`$,0*Q1`__T`````"`&;QR92___?OP"0)!3__]^^`(@"
+M@!`MW[<`@-^V`'C?M0!PW[0`:-^S`&#?L@!8W[$`4-^P`$@#X``(9[T`F"J"
+M``440``@)`(`!-^D`"!\8_@#)`7__P"`$"W?I``8?`(I!OR#```D!``(W$(`
+M``"4(",`!"#``(4@!@`"$```@A`D``(0/`!B&"7?H@`8_$,```*`$"W?OP"0
+MW[X`B-^W`(#?M@!XW[4`<-^T`&C?LP!@W[(`6-^Q`%#?L`!(`^``"&>]`)@D
+M!/__`%00(P`"$,``1!`&`$,0)-^C`!A\0O@#_&(```*`$"W?OP"0W[X`B-^W
+M`(#?M@!XW[4`<-^T`&C?LP!@W[(`6-^Q`%#?L`!(`^``"&>]`)@`````9[W_
+MF"3"____LP`P+$(`"/^_`&``P)@M_[X`6/^W`%#_M@!(_[4`0/^T`#C_L@`H
+M_[$`(/^P`!C_I``0$$``KO^G```\`O_P``0:>#1"`",\$2&-``(2_#8Q[T$T
+M0A``,-8`_P!BJ"TD`O\#`*"X+0`1C#@FUO__``(5_`*@@"TV,6O;,M8`!W[B
+MB@8`$8QX?!`I!G["M09^M9("_Z,`""0%`1C^`@``)!(`!"0>)Q`2I0!,-C$T
+MV]X"```$00`7```````````GWO__&\``3`````!\%/@[#`"W4B0$``,``AAX
+M``(0^`!B&"T`<0`=```8$``#'+H`=!@M`````'P"^#L`0Q`K%$#__0````#>
+M`@``!$#_[``````;P``X`````/A8`$XD!?_7``(0``!`."UP1!XO<$,R+WP'
+M&,0`@Q@D<$8:+@!%("1PYRPO<$(.+@#C&"1PA"`O`,(0)0"#&"0X0@`!`&(0
+M)!1``&(F0@`!&$``8=^_`&!\%/@[#`"W4B0$``,``B"X``(1.`""$"T``B"X
+M`$00+0!1`!T``!`0``(4N@!4&"T`````?`+X.P!#$"L40/_]`````"92__\D
+M`O\#)`4!&``"%?Q^XHH&?L*U!OX"```6I?^V`````#P#__`T8P`C``,:_#1C
+M`/C<8@``"`&<O@`````,`9HJWZ0`$"9"``$80``[W[\`8'P4^#L,`+=2)`0`
+M`P`"(+@``A$X`((0+0`"(+@`1!`M`%$`'0``$!```A2Z`%08+0````!\`O@[
+M`$,0*Q1`__T`````"`&=`292__\J8P`%%&``,@`"$`#?I0``?$+X`SP#__`D
+M!``(-&,`(P"3("/\H@````,:_-^E``@T8Q`8``0@P`"C&"TD!?__?`,I!@"%
+M(`;<8P````,8``"#&"0``Q@\`&(0)=^C``#\8@```F`0+=^_`&#?O@!8W[<`
+M4-^V`$C?M0!`W[0`.-^S`##?L@`HW[$`(-^P`!@#X``(9[T`:-^_`&`D$___
+MW[X`6`)@$"W?MP!0W[8`2-^U`$#?M``XW[,`,-^R`"C?L0`@W[``&`/@``AG
+MO0!H)`,`!"0$___?I0```',8(P`#&,``9!@&`&(0)'Q"^`/\H@```F`0+=^_
+M`&#?O@!8W[<`4-^V`$C?M0!`W[0`.-^S`##?L@`HW[$`(-^P`!@#X``(9[T`
+M:"3"__\L0@`($$``B``$&GAGO?^`_[4`6#P5__#_L0`X-K4`(SP1(8T`%:K\
+M-K40`#8Q[T'_M@!@9J(`&##6`/\`$8PX`'6H+38Q:]L`8A@M)M;___^W`&@`
+M$8QX_[0`4``'N`#_L``P`("@+0*@@"U\9)("?K62`C+6``?_O@!P``<X/_^S
+M`$@HQ@`%_[(`0'P#*0;_M0`(`*#P+?^_`'A\$"D&_[8``"02``3_IP`8)!4G
+M$/^D`"`D$P$8KZ8`$#8Q--O_HP`HWZ,``"0"_P$``A7\?\**!G[B^`=\8K4&
+MCZ,`$!1@``C?HP`(GZ,`'-^D`"C\@P``WZ,`(!!S`#<\!/_PWZ,`"/X"```0
+M<P`M/`3_\-X"```$00`6`````":U__\:H``5`````'P6^#L,`+=2)`0``P`"
+M&'@``A#X`&(8+0!Q`!T``!@0``,<N@!V&"T`````?`+X.P!#$"L40/_]````
+M`-X"```$0/_L`````!Z@`!_?OP!X)E+__PP!FBH"@"`M%D#_T-^C``#?OP!X
+M)`+__]^^`'#?MP!HW[8`8-^U`%C?M`!0W[,`2-^R`$#?L0`XW[``,`/@``AG
+MO0"`-(0`(P`$(OPTA`#XW((```@!G;<`````-(0`(P`$(OPTA`#XW(,```@!
+MG;3?HP`(``(6/M^^`'`X0@`!W[<`:'!"`#K?M@!@W[4`6-^T`%#?LP!(W[(`
+M0-^Q`#C?L``P`^``"&>]`(`#X``()`+__P````!GO?]0).+___^_`*@L0@`(
+M_[X`H/^W`)C_M@"0_[4`B/^T`(#_LP!X_[(`</^Q`&C_L`!@_Z<`4/^D`#C_
+MI0!($$``L_^F`"`M`@`#$$``L`$`F"T\%/_P``0:>#:4`",\$2&-`!2B_#8Q
+M[T$VE!`8`!&,.&:"_^@`=*`M`&(8+0*`("T`8(`M?&.2`O^C``A\PR##_Z,`
+M,##^`/\`!AHZ-C%KV_^C`%A^E)(")][__P`1C'@`";``?`0I!O^T`!@`"4@_
+M*.,`!3/>``?_I``0`*"X+?^I`$!\$"D&KZ,`*"02``0D%"<0-C$TVR0"_P$`
+M`!@M``(5_'_"M09^XHH&$F``#G["^`<D!``!?(+F1M^D`#!\@CC&WZ0`('R"
+M$`8D!``"%F0`!H^D`"@D!``!?(+O1M^D`%A\@S@&CZ0`*!2```3?I``0WZ0`
+M0'R#^`??I``0_(,``"0#`1C?I``8$(,`3CP$__#?HP`(_@(``"0"`1@08@!$
+M/`3_\-X"```$00`6`````":4__\:@`!)`````'P5^#L,`+=2)`0``P`"&'@`
+M`A#X`&(8+0!Q`!T``!@0``,<N@!U&"T`````?`+X.P!#$"L40/_]`````-X"
+M```$0/_L`````!J``#4`````^%@`5P`"$`!P1#(O<$,>+P!`."T`@Q@D?`<8
+MQ"0$_]<`1"`D<$8:+G#G+"]P0@XN`.,8)'"$("\`PA`E`(,8)#A"``$`8A`D
+M%$``."9"``$80``WW[\`J'P5^#L,`+=2)`0``P`"(+@``A$X`((0+0`"(+@`
+M1!`M`%$`'0``$!```A2Z`%48+0````!\`O@[`$,0*Q1`__T`````"`&>.R92
+M__\TA``C``0B_#2$`/@(`9Y?W((``#2$`",`!"+\-(0`^-R#```(`9Y;WZ,`
+M"`P!FBK?I``X)D(``1A``!3?OP"H?!7X.PP`MU(D!``#``(@N``"$3@`@A`M
+M``(@N`!$$"T`40`=```0$``"%+H`51@M?`+X.P!#$"L40/_]``````@!GCLF
+M4O__W[\`J"0"___?O@"@W[<`F-^V`)#?M0"(W[0`@-^S`'C?L@!PW[$`:-^P
+M`&`#X``(9[T`L"00`&,(`9[7)!'__R80__\2$?_OW[\`J-^D`#@D!@`!WZ4`
+M2`P!G)`#H#@M!$#_]]^C`%``$(`JW[\`J"0"___?O@"@W[<`F`!P$`O?M@"0
+MW[4`B-^T`(#?LP!XW[(`<-^Q`&C?L`!@`^``"&>]`+``````$0``H@````!G
+MO?[`)0+___^S`1@`H)@M_[(!$`$@D"W_L0$(`."(+?^P`0``@(`M_[\!./^V
+M`3#_M0$H!$``"_^T`2```A#``,!8+0.@&"TD"O_X``````!+,`<D0O_XH&8`
+M`!1*__QD8P`!`@`@+0)@*"T#H#`M#`&;,`$`."T`$1@J+$(``0!B&"008``V
+MW[\!.`P!FP`"`"`M%$``,7)F,'(D!0`!-,8``0P!F;("`"`M`@`@+20%``(,
+M`9FR)`8`0`P!F?@"`"`M%$``)0.@H"T``)@M)!4`0`@!GS0"(+`M``````P!
+MF;(D!@!$#`&9^`(`("T"`"`M%$``&20%``$,`9G.`````**"```2=@`?9I0`
+M`0(`("T,`9G.)`4``R9S``$D!0`")`8`0#!"`.\450`+`@`@+0)Q$"H40/_I
+M``````P!F;("`"`M#`&9^`(`("T"`"`M$$#_Z20%``'?OP$X)`+__]^V`3#?
+MM0$HW[0!(-^S`1C?L@$0W[$!"-^P`0`#X``(9[T!0"0"``$2(@`_9ZH`""8K
+M__X`"UC"`Z`0+0`+(/@"0!@M`410+0````"01@``D$0``9!%``>020`"``8V
+M/)!(``,`!"0\D$<`!`#$("601@`%`(4@)0`)2CP`"$`\D$4`!@")("4`B"`E
+M``<^.`"'("4`!C0X`(8@)0`%*C@`A2`E9$(`"/QD```42O_G9&,`""5K``$R
+M(@`'%$``#F5C__\,`9GH`@`@+=^_`3C?M@$P```0+=^U`2C?M`$@W[,!&-^R
+M`1#?L0$(W[`!``/@``AGO0%`)`0`"``#&/@`@A`C`D.0+0`"$,#>0P```$,8
+M%@!#$!0(`9]Z_D(```/@``@D`O__"`&?=P``6"T`````$0``2`````!GO?[P
+M)0+___^P`0``@(`M!$``1/^_`0@``A#``,!8+0.@&"TD"O_X`$LP!R1"__B@
+M9@``%$K__&1C``$!`#`M).(`!R3C``XH1````&00"P`"$,,80``D``(0P`!&
+M>"'=(@```Z;`+23.``$DS0`"`ZYP+23$``,``LX^`ZUH+:,9`````L0^H=@`
+M```"<CZAK@``),P`!`.D("T``F@^H(T``"3+``4#K&`M``(F.J&$```DR@`&
+M),,`!P.K6"T``F0Z`ZI0+:%L```#HQ@M``):.B3&``BA2P``92D`"!3/_]^@
+M8@```@`@+0.@,"T,`9LP`0<X(11```0D`O__#`&9Z`(`("T``!`MW[\!"-^P
+M`0`#X``(9[T!$`/@``@D`O__"`&?J```,"T`````9[W_6/^P`"!GH@"H_Z(`
+M``"`@"W_H@`(9Z(`</^B`!`\!!`-)`(`.&2$BK"CH@`8)`(`0/^_`"C_I0!P
+M_Z8`>/^G`(#_J`"(_ZD`D/^J`)C_JP"@HZ(`&?>L`##WK0`X]ZX`0/>O`$CW
+ML`!0][$`6/>R`&`,`G]Z][,`:`(`("T,`I]T`Z`H+=^_`"C?L``@`^``"&>]
+M`*@PH@!_)(1````"&$```A#``&(0(20#@`$``QSX`((0(31C"`5P0ICR``,?
+M>'RE"<,`0Q`M``4I/`!%*"4D`@`!_*(``-RB```#X``(`````(R"`%@\!!0G
+M9(2'N``"$/A\@B(*$(``!`````#<F0```R``"``````#X``(`````"R"``H0
+M0``(/`(4)W"$^/)D0H>X`((@+?R%``````$/`^``"```````@"@M/`00#0@!
+MG^1DA(K``^``""0"``IGO?^8_[\`8/^^`%C_MP!0_[8`2/^U`$#_M``X_[,`
+M,/^R`"C_L0`@_[``&`P!ETK_I``($$``!3P#$`>,0P"H?`(`.Q1B``0\`Q`'
+M/`(4)&1C@"C\0[>H#`&72@`````00``%/`,4)(Q#`*A\`@`[%&(`*SP#%"0\
+M!!`'C&*WL&2$@*C_HP`0/`,4)/QDMZ`40`!C/!44)#P3$`<``*`M``"(+69S
+M@'AFM;>X)!(`"C0#M``"@Q@M_Z,````````"M(`M``"P+0(`N"T``/`M`M`@
+M+0``*"TD!@!@#`)F8&;6`&"N_@!8KO$``"?>``'^\P`(%]+_]F;W`&#?HP``
+M9I0#P!:#_^XD`@`$)C$``18B_^<`````"`&@PP`````\%10D_Z,`$&:UM[C?
+MHP`0C&*WL!!`__[?HP`0?`(`.WQ$"<,P0@!_``0K.``$&K@`HQ@O?$3X`P`$
+M*;@``S$X``0BN`##&"\`A2`O``*@0`!D&"T``A#``H*@(0*CJ"T``(@M)I1`
+M````@"TD%@`!`J"X+3P3%"<(`:"E)!(`"B80``$2$@`29C$`8-^C``@"%A`$
+M`$,0)!!`__G>8HC(`O'P+0(4("$#P"@M`$#X"280``$"L1`MW$(`(`/`("T`
+M0/@)9C$`8!82__'?HP`(W[\`8-^^`%C?MP!0W[8`2-^U`$#?M``XW[,`,-^R
+M`"C?L0`@W[``&`/@``AGO0!H9K6WN````4_?HP`0)`(``:QBM[````%/"`&@
+MAM^C`!`0@``/)`/__WQD_\:,@@`0`*(0*Q!```H`````?*+X`V1"``,``A#X
+M?((2"A!```0``````^``"'QB_\8``````^``"```$"T`I!@K`,00*SAC``$X
+M0@`!`$,0)11```@`A2@C)*7__P"F,"$`Q``;`(`!]`/@``@``!`0``````/@
+M``@D`O__`*08*P#$$"LX8P`!.$(``0!#$"440``0`*08*Q1@``0D`O__)(3_
+M_P/@``@`@A`C`(4H(R2E__\`IC`A`,0`&P"``?0DA/__```0$`/@``@`@A`C
+M``````/@``@D`O__9[W_L/^V`#``X+`M_[,`&`$`F"W_L@`0`,"0+?^P``#_
+MOP!(_[X`0/^W`#C_M0`H_[0`(`P!H,K_L0`($$``3@!`@"W<0@`0$$``!```
+MB"T`0(@M)`+__WQ1_\;"`@`@%$#__B0"``'B`@`@$$#_^P`````:P``N``#P
+M+3P4``\R<P`!-I1"0(X#`"2.!``<C@(`&`"#,"L`0R@K.,8``3BE``$`Q2@E
+M%*``,0!BJ"$FM?__`J2H(P*C`!L`8`'T```H$!B@`"X`H*@M`+80*@+"J`H"
+MI!`A`$,0*Q1```,"H+@M`&2X(P+@J"U\A/@#`EXH+0(D("T,`F5<`J`P+0``
+M`0^.`P`<`M6P(XX"`"0#U?`A`'>X(0+B`!L`0`'T```8$![`_]BN`P`<````
+M`````4^N```@```!3]^_`$@#P!`MW[<`.-^^`$#?M@`PW[4`*-^T`"#?LP`8
+MW[(`$-^Q``C?L````^``"&>]`%`(`:%0)![__P@!H5,D'O__%*#_^P`````6
+M8/_I`````'P$^#L`E"`M?`/X.P!D&"L48/_]`````![`_[<`````"`&A4```
+M``!GO?_8/`(0`/^Q`!@`P#@M_[\`(`"@B"W_L``0`((0*A1```,``"@M,)#_
+M_P(`*"W?A()(%(``"]^_`"#_I0``/`00#?^G``@,`+.(9(2*Z-^G``C?I0``
+MW$0``/^$@DC?OP`@`B`P+=^P`!```$`MW[$`&`@!H01GO0`H`````&>]_]#_
+MM``@`0"@+?^S`!@`P)@M_[(`$`#@D"W_L```_[\`*`P!H,K_L0`($$``;@!`
+M@"W<0@``%$``/P``*"V.`@`DC@,`#(X$``@`8C@K`((P*SCG``$XQ@`!`.8P
+M)13``"LD$?__`$0@(211__\DA/__`(,8(P!B`!L`0`'T```@$`(DB",&(``B
+MW[\`*,("`"`40/_^)`(``>("`"`00/_[`````,J``#*.`P`DC@(`"`)1("H"
+M1(@+`B(@(0"#("L4@``#`B"0+0!BD","0(@M?$+X`P)@("T`HB@M#`)E7`(@
+M,"V.`P`(C@(`)`!RD"$"0@`;`$`!]```&!"N`P`(```!3ZX``"````%/W[\`
+M*`(@$"W?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P``````!`*"TD`O__
+MC@,`#'Q%_\:.!``(C@(`)`!B."L`@C`K..<``3C&``$`YC`E%,#_ZB01__\(
+M`:&M`$0@(8X$``R.`@`(`(,X*P!#,"LLYP`!+,8``0#F,"44P/_()!'__P!B
+M,"$D<?__),;__SP(``\`Q"`C`(,`&P!@`?0``#`0`B:((Q8@_[TU"$)`````
+M`'P#^#L`:!@M?`+X.P!#$"L40/_]``````@!H@0`````"`&AUB01__]GO?_X
+M_[\```P!H,H`````$$``'`!`&"V,1``DC&4`#(QC``@`I#@K`&0P*SCG``$X
+MQ@`!`.8P)1#```4``!`MW[\```/@``AGO0`(`````-^_````@Q@A)&/__V>]
+M``@`92@C`*0`&P"``?0``!`0`$`@+0`"$"H``B`*`^``"`"`$"T(`:(>)`+_
+M_P````!GO?_X_[\```P!H,H`````$$``'0!`&"V,1``DC&4`#(QC``@`I#@K
+M`&0P*SCG``$XQ@`!`.8P)1#```4``!`MW[\```/@``AGO0`(``````"#&"$D
+M@O__W[\``"1C__\`92@C9[T`"`"D`!L`@`'T```P$`!&(",`!!`J``(@"@/@
+M``@`@!`M"`&B0B0"__\D`@!0$,(`#@`````8P``)```0+0````#<IP``)$(`
+M"&2E``@`1A@J_(<``!1@__IDA``(`^``"```````````W*@``-RG``C<I@`0
+MW*,`&-RB`"#\B```_(<`"/R&`!#\@P`8_((`(-RH`"C<IP`PW*8`.-RC`$#<
+MH@!(_(@`*/R'`##\A@`X_(,`0`/@``C\@@!(`````&>]__`\`A`-9$*2&'RY
+M'0+_L0`(?+@<`O^P````!8\^?+`>`GRO&P)\KAH"?*T9`GRL&`)\JQ\#?*H>
+M`WRI'0-\J!P#?*<;`WRF&@-\HQD#,*4`#P(BB"V2,0```@*`+9(0```#(L@M
+MDSD```,"P"V3&````>)X+9'O```!PG`MD<X```&B:"V1K0```8)@+9&,```!
+M8E@MD6L```%"4"V12@```2)(+9$I```!`D`MD0@```#B."V0YP```,(P+9#&
+M````8A@MD&,```"B$"V00@``H)$``*"0``&@F0`"H)@``Z"/``2@C@`%H(T`
+M!J",``>@BP`(H(H`":")``J@B``+H(<`#*"&``V@@P`.W[$`"-^P``!GO0`0
+MH((`#P/@``B@@``0_*```-R"``"`0P``$&``$P``$"T`````)&;_GRS&``80
+MP``1)&?_T"1C_ZD$8``7`````-RF````!C$X`&88)?RC``#<@P``9&8``?R&
+M``"`8P`!%&#_\"1"``$#X``(```````````LY@`*$,``!"1H_[\(`:+1`.`8
+M+0`````M"``&%0#_Z21C_\D#X``(```````````\!A`-9[W_\&3&BO@``!`M
+M_[X```#`&"W_OP`(`Z#P+61C``&`9P``%.#__61"``&`@P``$&``3@`"2```
+M@!@M```X+0````!D8P`!@&@``!4`__UDYP`!``<0``$B$"$D`P`A)$(``61"
+M``Y\`A`'`Z+H+P.@."T#H!`M`````*!#``!DQ@`!@,,``!1@__QD0@`!H$``
+M`("#```08``'`.D0+0````"@0P``9(0``8"#```48/_\9$(``:!````HH@`*
+M$$``%"0"`"`DI0`PH.(`!J#E``??@X)0W&0`"#P#$`UD8Y((``0@^'QD&@K<
+M8P`@$&```P``$"T`8/@)`.`@+0/`Z"W?OP`(W[X```/@``AGO0`0**(`9!!`
+M`!``!1_#/`)F9C1"9F=PHA`#``(0OP!#$",``B!```(8P`"#&"$D0@`PH.(`
+M!@"C*",DI0`P"`&C(J#E``<`````)`(`/Z#B``8(`:,BH.(`!P@!HP,``!`M
+M9[W_Z/^Q``@`H(@M_[```/^_`!#<@@!($$``!`"`@"T\!!`-#`&B[&2$BPC?
+M@H)0`B`H+=Q#``@\`A`-9$*2"``#&/A\0Q(*W$(`,`!`^`F.!``T_A$`,-^_
+M`!#?L0`(W[````/@``AGO0`8`````&>]_^C_O@`(_[\`$/^P``"`@P``$&``
+M)P.@\"T`@!`M```P+0````!D0@`!@$<``!3@__UDQ@`!9,(`'WP"$`<#HN@O
+M`Z"`+0.@$"T`````H$,``&2$``&`@P``%&#__&1"``&@0```#`&B?`(&("W?
+M@X)0W&0`"#P#$`UD8Y((``0@^'QD&@K<8P`@$&```P``$"T`8/@)`@`@+0/`
+MZ"W?OP`0W[X`"-^P```#X``(9[T`&&>]_^@``#`M`Z`0+0@!HW\#H(`M9[W_
+M\/^_``@0@``1_[```'R02`$D`O__?%#_QCP&``@"`"`M```H+0P"9F`TQDL`
+M)`(`!OX"```D`@$`_@(`(-^_``C?L````^``"&>]`!`D$/__/`8`"``0A_P`
+M`"@M`@`@+0P"9F`TQDL`)`(`!OX"```D`@$`_@(`(-^_``C?L````^``"&>]
+M`!``````*(,`(!1@``YD@@`!)(+_VBQ#`"`48``&)(3_X"R"`"@40``+<(3X
+M\@/@``@``!`M9$(`+0`"$/@#X``(`*(0+0`"$/@#X``(`*(0+0`````\`A`-
+M9$*-"'Q$(@H`@``(```````````#X``(9*(#&`/@``ADH@,@`^``"&2B`M@#
+MX``(9*("L`/@``ADH@*H`^``"&2B`G`#X``(9*(":`/@``ADH@*@W((``#!"
+M``P40``+WX*"4-Q#``@\`A`-9$*2"``#&/A\0Q(*W%D`(!,@``@\!!`-`R``
+M"&2$BR#<I0.P/`00#62$BQ@(`:-F``4H``/@``@``````````&>]_S`D!@!0
+M_[``H-^0@E#_O@#``Z#P+?^Q`*C_Q`"89A$`*`/`("T"("@M_[\`R/^S`+@,
+M`:)6_[(`L-_"`)AD0P`!_\,`F)!#```D8__],&0`_RR$`'@4@``7/`00#=X#
+M``@\`A`-9$*2"``#&/A\0Q(*W$(`(!!```0D$``!/`00#0!`^`EDA(O@`\#H
+M+0(`$"W?OP#(W[X`P-^S`+C?L@"PW[$`J-^P`*`#X``(9[T`T`````!P8SCR
+M9(2.2'R#&@H`8``(`````-_"`)`L0@`$$$#_XM_"`)AD0P`!_\,`F(!1```6
+M,__=9\0`F`P!HL9GQ0"($$#_V=_"`)AD0P`!_\,`F(!"```44?_49\0`F`P!
+MHL9GQ0!X$$#_T-_$`'AD@O__+$(``Q!`_\S?PP"0<((`;M_(`(```A`O,$(@
+M`#B$``)D9P!W9&8`?P`'./@`!C#X`D8P+0)'."W\Z```)`40`/S`````1"@+
+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
+MWY2"4`.@("TD!@!09I0`*`P!HE8"@"@MWZ4``"0"``$"@"`M`D(0%"0&`%``
+M`A@G`*(0)=^E`!C_H@```*,8)`.@*"T,`:)6_Z,`&````4^N``!X```!3PP`
+MN7@"8"`M#`&72@`````00``O`````(Q#`*A\`@`[$&(`*P````#?@H)0W$,`
+M&!!@__X`````#`&72@````",0@#\R$(`#3P#_X`\`O_P-&,!`31"`",``QH\
+M)`4``7P$`#LT8P&``(4@%/QD`````A+\-$(`^-Q"```,`9=*`````!!```4`
+M````C$,`J'P"`#L48@`'W[\`>-XB``@00``$W[\`>`!`^`D`````W[\`>-^T
+M`'#?LP!HW[(`8-^Q`%C?L`!0`^``"&>]`(#?DX)0`Z`@+20&`%`D$``!9G,`
+M*`P!HE8"8"@MWZ(``/^R`#`"8"`M_[``$`.@*"W_H@`X)`8`4/^P``@,`:)6
+M_[``(````0_?@H)0_%``&````0\(`:<<WX*"4#P($`T\"1`'-(1+````*"T\
+M!B``)`<`"&4(B^@,`+1H92F.8!!```5\0D@!)`/__WQB_\8(`:;6_X*"4#P$
+M$`T,`G]Z9(2,``@!IVX`````WX*#.&>]^N#_OP48_[X%$/^W!0C_M@4`_[4$
+M^/^T!/#_LP3H_[($X/^Q!-@00``(_[`$T$`EP`#?AH,X/`00#0P"?KQDA(QX
+M"`&G@@````!\`P`[)`(L.'QC^`-P8A`#/`,2&@"@@"UD98;8WX."4`"`B"TD
+M!@$`9$(`@`!BL"UFPP`(_Z,$J`!@("UFPP$(#`&B5O^C!*#?I`2@/`(2&F1%
+MAD@,`:)6)`8`8/[1`FC^T`)P0"(``/["`GA`(A``_L("@$`B&`#^P@*(0")0
+M`/["`I!`(B@`_L("F$`B8`#^P@*@0")H`/["`K!`(H``_L("N$`B@`'^P@+`
+M0"*``O["`LA`(H`#_L("T$`BN`#^P@+H0"*P`/["`O!`(L@!_L("^$`BR`/^
+MP@,`0"+(`/["`PA`(L@"_L(#$$`BP`#^P@+80"+X`/["`N!FPP%H/`(2&CP2
+M$AID185(`&`@+20&`0!F5X;(#`&B5O^C!+#>0H;(/`7_,-[F``@TI1`````@
+M+?["`QADH@$`_L8#("0&``3<I0``_L4#*-Q)``!\A?@#9*<`9F2H`&H`!SCX
+M``A`^`+'."T"R$`M_.D``&2G`&[<20`(``<X^`+'."UDI0!R``4H^"2$``']
+M"0```L4H+=Q(`!#\Z```W$<`&&1"`0`4AO_I_*<``#P"_S```"`M-$(@`"0&
+M``3<10``9$(!`/[%`[#<20``?(7X`V2G`'=DJ`![``<X^``(0/@"QS@M`LA`
+M+?SI``!DIP!_W$D`"``'./@"QS@M9*4`@P`%*/@DA``!_0D```+%*"W<2``0
+M_.@``-Q'`!AD0@$`_*<``!2&_^C?A8)0```@+=RF`"`0P``6```0+0````!`
+MI```0@```4`F$````CCX``(1>`#B$"T"PA`M_$8$2$`F&`#\1@100"90`/Q&
+M!#A`)B@`_$8$0"2$``'<I@`@?(+X`P!&,"L4P/_M`````````0_?@H)0P$0`
+M>!2`__XD!``!X$0`>!"`__L`````WY""4`.@("TD!@!09A$`*`P!HE8"("@M
+M)`(``?^B`$@"("`M`Z`H+0P!HE8D!@!0```!3ZX``'@```%/)`(`!/["````
+M``$/?!,`.WYC^`,"8(@M_Z,$N-^"@E#`1`!X%(#__B0$``'@1`!X$(#_^P``
+M``#?@H)0W$0`$!"```D`````W$0`$"R$``,0@`(+`````-Q$`!#\0``09(3_
+M__Q$``@```%/K$``>````4_?GH)0/`(0#61"D@@#H"`M)`8`4-_'``AGU0`H
+M`J`H+0`'./A\1SH*#`&B5HST`!#?I0`X)`8``=[$`N@"9C`4`,4P)``&,``4
+MP`",WZ4`&#"&`",4P`"*`!0P*WP$0@?^Q`+HWL(#L'P":`?^P@.PWL("\#1"
+M``'^P@+P_L```````0_?I02H/`(2&F1$AM@,`:)6)`8!`-^E!*`\`Q(:)`8`
+M8`P!HE9D9(9(WL4#L#P$_S```!`M-(0@`"0&``3\A0``9(0!`&1)`'=D2`![
+M``E(^``(0/A^R4H*9$<`?P`'./AD10"#``4H^"1"``'\B0``?LA""OR(``A^
+MQSH*_(<`$'[%*@K\A0`8%$;_[F2$`0#>Q@,H/`7_,#2E$````!`M9*0!`"0'
+M``3\I@``9$D`9F1(`&H`"4CX``A`^'[)2@ID1@!N``8P^&1%`'(`!2CX)$(`
+M`?R)``!^R$(*_(@`"'[&,@K\A@`0?L4J"OR%`!@41__N9(0!`-["`GA`H@``
+MWL("@$"B$`#>P@*(0*(8`-["`I!`HE``WL("F$"B*`#>P@*@0*)@`-["`K!`
+MHF@`WL("N$"B@`#>P@+`0**``=["`LA`HH`"WL("T$"B@`/>P@+H0**X`-["
+M`O!`HK``WL("^$"BR`'>P@,`0*+(`]["`PA`HL@`WL(#$$"BR`+>P@+80*+`
+M`-["`N!`HO@`WZ4$L#P"$AID1(5()`8!`-[1`FC>T`)P#`&B5@````#>Q`,8
+MWL(#(/Y$ALC^X@`(`B``$P(``!'?OP48W[X%$-^W!0C?M@4`W[4$^-^T!/#?
+MLP3HW[($X-^Q!-C?L`30`^``"&>]!2``%#`K`F4H%C"E``$`!2@``,4H)!2@
+M_W,`````WL<"Z&>D!"@"H"@M)`8`4/^G!(`PYP`?<.<`;@P!HE;_IP3(WZ0$
+M,!2```??IP3(CX6"6!2@`/@`````WL4"H.BA`/4`````WZ4$@#"E``,4H``$
+MW[`$N-^E!%@0L`$R`````-[%`M@LA``!`(<X)!#@`"+?I`18$)``(-^D!#@4
+M@``>/`(')S1"#@#_H@1XWZ0$>!"``!D\"``)/`<`!S4()\$TYZ$@9Z0$*`*@
+M*"W_IP3()`8`4`P!HE;_J`3`WZ0$>-^H!,``B"`K%(``!=^G!,C?I`0X$(``
+M`@````#_IP1XWZ0$>&2$____I`1XWZ0$>!2`_^UGI`0HP\0`>!2`__XD!``!
+MX\0`>!"`__L`````WX6"4&>D!"@D!@!0`B"H+0P!HE9DI0`H)`0``8^B!%P"
+M)"`4_Z0$D`"`&"W?I`1H`&0@)?^D!&@`1"`6Z(``#M^D!(`PA``>$(``!M^D
+M!"AGI`0H#`&C2@(@*"V/H@1<WZ0$*`!$$!;H0``#9Z0$*`P!HTH"H"@MWY6"
+M4"0"``'_H@0X9Z4$*"0&`%`,`:)69J0`*````4^NH`!X```!3]^^!%@3T`#7
+M9Z0$@-^%@E!GI`0H)`8`4"05``$NE``!#`&B5F2E`"C?I`18$)``'P````"O
+MH`2,CZ($C"A"`/`00``-WZ($4```````````````````````````CZ($C"1"
+M``&OH@2,CZ($C"A"`/`40/_VWZ($4!1``)8`````WX6"4-RB`!`40`#C9Z0$
+M*&2E`"C?O@18#`&B5B0&`%#?I`18%)#_XP````#>Q```<(0!+@"4("00@``"
+M)`0``?[$``````$/WZ0$6'_%^`,0I``*WZ0$0`/$$!;(0``(WX*"4-^B!%`4
+M0``$9Z0$@`P!H^8"P"@M`````-^"@E`\`Q`-9&.2"-Q"``@``A#X%H``BGQB
+M$@K<0@`8`Z`@+20%!"(`0/@))!X``1!```0`````#`&C_`.@("T``O``WX*"
+M4,!$`'@4@/_^)`0``>!$`'@0@/_[`````-^"@E!GI`0H)`8`4/^B!)AD0@`H
+M_Z($P`P!HE8`0"@M)`,`!!/#`'/?H@3`$]4`"0````#?I`10$(``!G_%^`,`
+M0"`M_Z4$2"0&`%`,`:)69Z4$*````4_?H@28K$``>````4\3U?^O<\<`KM^D
+M!(#?@H)0?.1"!_^D!(#`1`!X%(#__B0$``'@1`!X$(#_^P````#?D8)09Z0$
+M*"0&`%!F,P`H#`&B5@)@*"W?H@1HWZ,$D`)@("UGI00H)`8`4`!#$"8,`:)6
+M_Z($:````4^N(`!X```!3]^"@E#<1`!0$(``!-^D!%C<1`!H%(#_^M^D!%@2
+M!``B`````-^B!(`(`:AU_L("Z!#@_PS?I02`P\0`>!2`__XD!``!X\0`>!"`
+M__L`````WY""4&>D!"@D!@!09A,`*`P!HE8"8"@MWZ($.!!```3?H@18?B3X
+M`Q""`%$`````WL("V(Q$```\`D(`-$(`&!""`$7?H@18"`&J-0)@("T(`:G?
+MC[X$3,!$`'@4@/_^)`0``>!$`'@0@/_[`````-^0@E!GI`0H)`8`4&81`"@,
+M`:)6`B`H+20"``'_H@1(`B`@+6>E!"@,`:)6)`8`4````4^N``!X```!3]^B
+M!(`(`:AU_L("Z-Q"`"@`0/@)`L`@+0@!J;\``O``WZ0$6!"0_XX`````"`&I
+MVR0>``$,`:/F`L`H+0@!J7+?O@18KZ`$B(^F!(@HQA+`$,#^RP``````````
+M`````````````````````(^F!(@DQ@`!KZ8$B(^F!(@HQA+`%,#_]@`````(
+M`:D;`*"`+=Q%`!`\!!`-9(2,P`P"?KPD!@`""`&J9`````!^,?@#%B+_NB0"
+M``$"8"`M"`&J-?^B!#C>P@+8_Z`$.(Q$```\`D(`-$(`&!2"_\,"8"`M"`&J
+M9M^B!%@#H"`M```H+0P"9F`D!@"`WZ($:`.@("T,`+EX_Z(``-^B!(#^P@+H
+M"`&H1]^"@E``````/`/_@#P"__`T8P$!-$(`(P`#&CPD!0`!?`0`.S1C`8``
+MA2`4_&0````"$OPT0@#X`^``"-Q"``!GO?\8```H+0.@("TD!@"`_[``T/^_
+M`.`,`F9@_[$`V-^"@E!\$``[$$``5M^"@*`,`E^&W$0`$-^"@*`,`E^&W$0`
+M&-^"@E#`0P!X%&#__B0#``'@0P!X$&#_^P````#?D8)09Z0`@"0&`%!F,0`H
+M#`&B5@(@*"W?I@"8WZ,`@"0"``$"`A`4`B`@+6>E`(``8A@F`,(0)?^B`)@D
+M!@!0#`&B5O^C`(#?H@#(%$``.CP$$`W?H@"8#`&72O^B``!GHP`X9Z;_^&1"
+M`&``````W$4``&1"__C<9```%*0`$F1C__@49O_Z`````-^B`,@00``.WZ(`
+ML-^"@E#<0P`(/`(0#61"D@@``QCX?$,2"MQ"`"`00``$`````#P$$`T`0/@)
+M9(2-`-^B`+!^$/@#$%``']^C`(#?D()0```!3ZX``'@```%/WZ(`R!!```T\
+M`_^`/`+_\#1C`0$T0@`C``,:/"0%``%\!``[-&,!@`"%(!3\9`````(2_#1"
+M`/C<0@``W[\`X-^Q`-C?L`#0`^``"&>]`.@"`"@M#`&B[&2$C/`(`:J^WZ(`
+MF``````08/_BWY""4```*"T(`:L%)`0`,``````DI0`!$*3_V]^0@E``HQ`6
+MR$#_^P`````,`:-*9Z0`@-^0@E!GI0"`)`8`4`P!HE9F!``H"`&JWP``````
+M````0+KX`$`:>`$S6@#_`!K1`"=:8``G6F``)UI@`"=:8``G6F``)UI@`"=:
+M8``G6F```#K7PB-:``$`.M!"_T$``/];``A`.[``RW``&@````!`.[@`,WL`
+M/Q=@`!8`````0#NX`'][(H,38``2`````$`[N`#K?___`````#P;$A)G>Q3X
+M_WL``#P;$A)G>Q4(WWL``!-@``<`````WT$``-];``A`.L``9UH`!`-```A`
+M.O@`/!L2&F=[AMC?00``_V```"=[``C_80``)WL`"/]B```G>P`(_V,``"=[
+M``C_9```)WL`"/]E```G>P`(_V8``"=[``C_9P``)WL`"/]H```G>P`(_VD`
+M`"=[``C_:@``)WL`"/]K```G>P`(_VP``"=[``C_;0``)WL`"/]N```G>P`(
+M_V\``"=[``C_<```)WL`"/]Q```G>P`(_W(``"=[``C_<P``)WL`"/]T```G
+M>P`(_W4``"=[``C_=@``)WL`"/]W```G>P`(_W@``"=[``C_>0``)WL`"`-@
+MR"W?6P`(`R#0+4`Y^`#_60``)UH`"/];```G6@`(_UP``"=:``C_70``)UH`
+M"/]>```G6@`(_U\``"=:``@\&Q(29WL4\(][```;8``R`````#P;$A)G>Q4`
+MCWL``!M@`!X`````/!L2&F=[ADAP`!@1<``@$7``*!'_8P``<``8$?]D``AP
+M`"`1_V4`$#0&``%P`"@1_V,`&'#`,!'_9``@<``8$?]E`"AP`"`1_V8`,'``
+M*!'_8P`X<``8$?]D`$!P`"`1_V4`2/]C`%#_9`!8$```$``````\&Q(:9WN&
+M2'``$!%P`!@1_V(``'``$!'_8P`(-`,``7!@&!'_8@`0<``0$?]C`!AP`!@1
+M_V(`(/]C`"A`.H`!RT``3@````!`.F``/!LD``-ZV"5`NV``/!L2&F=[A4CW
+M8```)WL`"/=A```G>P`(]V(``"=[``CW8P``)WL`"/=D```G>P`(]V4``"=[
+M``CW9@``)WL`"/=G```G>P`(]V@``"=[``CW:0``)WL`"/=J```G>P`(]VL`
+M`"=[``CW;```)WL`"/=M```G>P`(]VX``"=[``CW;P``)WL`"/=P```G>P`(
+M]W$``"=[``CW<@``)WL`"/=S```G>P`(]W0``"=[``CW=0``)WL`"/=V```G
+M>P`(]W<``"=[``CW>```)WL`"/=Y```G>P`(]WH``"=[``CW>P``)WL`"/=\
+M```G>P`(]WT``"=[``CW?@``)WL`"/=_```G>P`(/!L2&F=[ALA$1```_V0`
+M`$1$^`#_9``(0+I@`#P=$A)GO1(PW[T`````(!(``"@0#`&G<`````!`.H`!
+MRT``3@````!`.V``/!HD``-;T"5`NF``/!H2&F=:A4C70```)UH`"-=!```G
+M6@`(UT(``"=:``C70P``)UH`"-=$```G6@`(UT4``"=:``C71@``)UH`"-='
+M```G6@`(UT@``"=:``C720``)UH`"-=*```G6@`(UTL``"=:``C73```)UH`
+M"-=-```G6@`(UTX``"=:``C73P``)UH`"-=0```G6@`(UU$``"=:``C74@``
+M)UH`"-=3```G6@`(UU0``"=:``C750``)UH`"-=6```G6@`(UU<``"=:``C7
+M6```)UH`"-=9```G6@`(UUH``"=:``C76P``)UH`"-=<```G6@`(UUT``"=:
+M``C77@``)UH`"-=?```G6@`(/!H2&F=:ALC?1```1,0``-]$``A$Q/@`0+M@
+M`#P;$A)G>Q3PCWL``!M@`"H`````/!L2$F=[%0"/>P``&V``%P`````\&A(:
+M9UJ&2-]%`##?1@!(WT,`.-]$`%!PI@`(WT4`0'!D``S?1@!8WT,``-]$`!AP
+MI@`-WT4`"'!D``G?1@`@WT,`$-]$`"API@`*<&0`"Q````\`````/!H2&F=:
+MADC?0@`HWT,`('!```W?0@`8<&``#-]#`!!P0``(WT(`"'!@``O?0P``<$``
+M"G!@``D\&A(:9UJ&V-]````G6@`(WT$``"=:``C?0@``)UH`"-]#```G6@`(
+MWT0``"=:``C?10``)UH`"-]&```G6@`(WT<``"=:``C?2```)UH`"-])```G
+M6@`(WTH``"=:``C?2P``)UH`"-],```G6@`(WTT``"=:``C?3@``)UH`"-]/
+M```G6@`(WU```"=:``C?40``)UH`"-]2```G6@`(WU,``"=:``C?5```)UH`
+M"-]5```G6@`(WU8``"=:``C?5P``)UH`"-]8```G6@`(WUD``"=:``C?6P``
+M)UH`"$"[^`#?6P``)UH`"-]<```G6@`(WUT``"=:``C?7@``)UH`"-]?```G
+M6@`(0#KX``0?``!"```?`````&>]__@D`G__KZ(``````0_<@P``)`(``11B
+M`!``````CZ(```1```T`````"`&LZ20#``$`````CZ(```1```<`````CZ(`
+M`"1"__^OH@``W((``!!#__@````````!#]R"``````$/``(0``/@``AGO0`(
+M``````/@``@`````CX.`?"0"__\08@`#)`(``0/@``@``````^``"*^"@'QG
+MO?_P_[````"`@"V/A(!\_[\`"`P!NB(`````W[\`"(^$@'P"`"@MW[````@!
+MNA)GO0`0`````(^$@'P\!1`'"`&YU&2EM$B/A(!\9[W_X/^P```\$/_P_[\`
+M&#80`"/_L@`0`!""_/^Q``@PA``!-A`(*``$$H!\4!(*R$``'&82_]@(`:TG
+M)!$``P````!\4!(*R$``%]^_`!@`!!*`?%(:"@`#&``4<?_Y`````-^"@*`,
+M`E^&W$0`&-^"@*`,`E^&W$0`$$`BL``T0A$00**P`(^$@'PPA``!``02@'Q0
+M$@KH0/_N``02@`````#?OP`8W[(`$-^Q``C?L````^``"&>]`"`\`O_P)`H`
+M)#1"`",D#``C``(2_#1)""AE+?_8`:!8+8^'@'PPYP`!``<2@`!),"T`34`M
+M)`)__Q!``"<`````W,,``,A@__PD0O__W0(``'!".#H42O_X)`)__Q"@`!H`
+M`#`M``!`+0`'.H``Z1@MW&(``,A`__X`````?.L:"G!B.#H02@`,``,8`!!,
+M`!0`AC@M9,8``:#B````Q1`K$$``"7$#0"B/AX!\"`&M7##G``$````````P
+M+0#%$"L40/_Y``!`+0"&,"T(`:U*H,`````````#X``(```0+0"&("T\`O_P
+MH(```#1"`"./@X!\``(2_#1"""@P8P`!``,:@`!B$"W<1```R(#__CP$__`T
+MA``C``0B_#2$"```9!@MW&4``'"E.#K<1```R(#__@````#<9```)*+_GRQ"
+M``8DH_^I%$``"G"$.#HDH__0+&(`"A1```<D@O^?)*+_OR0#__\DI?_)+$(`
+M!@"B&`LD@O^?+$(`!A1```]P8O_N)(+_T"Q%``H0H``2)(7_OP!`("UP8O_N
+M<(7_[@"B*"44H``*```0+0`#$0``1!`E`^``"'!($"HDA/^I<(7_[@"B*"40
+MH/_X```0+0/@``@`````+*4`!A"@__P``!`M"`&MJ"2$_\D`````D((``!!`
+M`'-GO?_@9(,``0``*"UD8P`!<$4H*)!B__\40/_]9&,``7"F^3HPI0`//`,0
+M#0.F,"W<9Y(P9&*2,-Q#``@#I2@MD$(`$#P(%"?_IP``_Z,`"*.B`!"0PP``
+MD*(``*.@`!JCHP`8HZ(`&<$"B+@40/_^)`(``>$"B+@00/_[`````(^&@'P\
+M`__P-&,`(P`#&OPPQ@`!-&,(*``&,H``PQ@MW&(``,A%__X\!?_P)`(`)#2E
+M`",`!2K\-*4(0`#%,"W\P@``@((``-RC^+@00``2CX.`?#!F``%DH__H``8R
+M@&2G^+@`PQ@M`,4P+3!%`/_<8@``R$7__@````#\Q0``9(0``8""``#<Y0``
+M%$#_^#!%`/^/@X!\/`+_\#!C``$T0@`C``,B@``"&OPT8P@H`(,8+0````#<
+M8@``R$7__CP%__`D`P`C@Z(`&#2E`",`!2K\-*4(0`"%("W\@P``W*/XN!!`
+M`!./@X!\,&8``62C_^@`!C*`9Z0`&`##&"UDI_BX`,4P+3!%`/\`````W&(`
+M`,A%__X`````_,4``&2$``&`@@``W.4``!1`__@P10#_```!3ZT`B+@```%/
+M```0+0/@``AGO0`@```H+0@!K<H``#`M?`(`.SP%_X`P0P!_``,@0#2E`0$`
+M@Q@A``4L^#2E``$D8P`"?$0)PW!C./(`!2UX``0A/`!E$"T`1!`EW$(``.A`
+M``,D`X`!`^``""0"__]\19@"``,=.``%*/@T8Q`)``,?.`"C&"T`@R`E)`,`
+M`?R#``#<@P```^``"`````!!9F``0`-@`(R$`$PD`@`!)(0`"`""(`00H``#
+M`&00)0`$$"<`0Q`D0()@`,C```(`````06!@(`/@``@`````"`&N5B0%``$(
+M`:Y6```H+=R#`$@D!8`!C((````%+3@TI!`)``0G.'!CF/(`9!@M<$(),P!#
+M$"4D`P`"_$,``-Q"```#X``(```````````(`:YJ`````&>]_^C_OP`0_[$`
+M""01@`'_L````!&,>-R"`$@V,0(!`*"`+0`1C_AP0ICR#`&N:@!1B"UR`S"R
+M?A`)PR0"``(D8P`!`!"!/'QBO`<"$8`E_@(``-^_`!#>`@``W[$`"-^P```#
+MX``(9[T`&`````!\!0`["`&N?```````````9[W_^"0#`%S_OP``$(,`$#0"
+M@``L@@!=%$``$2R"``@D`P!=$(,`"C0"@$`D@O]^+$(`,!1``!#?OP```(`H
+M+3P$$`T,`9_D9(222```$"W?OP```^``"&>]``@`````$$#_]P"`*"W?OP``
+M`(`0+0/@``AGO0`()((1?@/@``AGO0`(`````$`BR`$$0``$``````/@``@`
+M``````````@!U$X`````W*<`0#P"$`=D0KL8`(`8+1#B`$.,I@``+,0``A"`
+M`#I\9#L#$(``)ORB`$`\`A`'?&/X`_RC`$AD0KFH_*(`&#P"$`=D0KI@/`,0
+M!_RB`"`\`A`'9$*YZ&1CN?#\H@`H/`(4)_RC`##`0\G@%&#__B0#``'@0\G@
+M$&#_^P````!PQOIR/`,4)P#$("UD8XG@``0@^`"#("W<@P``_(4``/RC`#@`
+M``%/K$#)X````4\````/`^``"```````````,&,`/W#&^/(`PS`M/`(4)V1"
+MB-@`!C#X_*,`2`#","W\Q0``/`(0!V1"N9C\H@`8/`(0!V1"N:#\H@`@````
+M#P/@``@`````/`00#3P%$`UDA)*H"`)^O&2EJ8@`````/`00#3P%$`UDA))X
+M9*6IB`@"?KP`8#`M9[W_\/^P``#_OP`(?`(`.PP!KC8`0(`M)`/__Q1#``3?
+MOP`(W[````/@``AGO0`0?@0)P]^P``!\0I@"``(H``@`P+YGO0`09[W^8`"`
+M$"W_I@%P`$`P+6>B`6@#H"`M_Z(!$"0"`#BCH@$89Z(!H/^B`0`D`@!`_Z4!
+M:"0%`0#_IP%X9Z<!`*.B`1EGH@&@_[\!(/^H`8#_J0&(_ZH!D/^K`9C_H@$(
+M]ZP!*/>M`3#WK@$X]Z\!0/>P`4CWL0%0][(!6`P"G]#WLP%@&$``&B1'__\\
+M!?_P`Z`@+32E`",D!@`*``4J_"0)__\TI0@H)`H`#62H`!C<H@``R$8`$@``
+M``"`@@``$$8`%P`````\`__P).?___T"```T8P`C``,2_&2$``$T0@#XW$(`
+M`!3I__$`````W[\!(`/@``AGO0&@`````'P#^#MD8R<0?`+X.P!#$"L40/_]
+M``````@!KU(`````_0H``#P#__"`@@``-&,`(P`#&OPT8P#XW&,```@!KUD\
+M`__P`````#P#_X!\`@`[-&,!`3!(`']\1PG#``@@0``#%/APB"`H-$(``7SC
+M^`-PA#CR``(5>``#23P`@A`M`$D0)=Q&``#(P``W?,:8`@`#&G@`!C``/`04
+M)P`&$P-DA(G@`&(8+0`#&/A\@R(*$(``#7S#^`/<@@!(%$,`!P`````(`:^Q
+MW((`$`````#<@@!($$,`%`````#<A``X%(#_^P`````D`H`!``88P``"%3@\
+M!!`--$(0"3P%$`T``A<X9(22^`!B$"UDI:EP`2)()20"``/](@``W2(```@!
+MKR8`````W((`$`1```HD`H`!``8PP``"%3@T0A`)``(7.`#"$"T!(D@E)`(`
+M`?TB``#=(@``W)D`"`,@``@``````````#P$$`T\!1`-9(22T`@!KR9DI:EP
+M`````&>]_[#_MP!`/!<0#?^U`#`\%1`-_[0`*#P4$`W_M@`X9O>5</^S`"``
+M@+`M_[(`&&:UEW#_L0`0`("0+?^P``@``(@M_[\`2```@"UFE),H)!,`$```
+M``#>2P"``O$H+=Y(```"`#`M`K%(+28*`!``"Q```H`@+?^B````"#@_``M8
+M/P`(0``,`:\F)A```692``@6$__P9C$`($`T8`#JG0`G/`00#4`G:``\$!`-
+M/`40"V8$D]``!S`_9*5J.`P!KR8`!S@`/`40"V8$D]!DI6J``!0P/PP!KR8`
+M%#@`0"=``#P%$`L`!S`_9@23T&2E:J@,`:\F``<X`$`G<`#?OP!(9@23T-^W
+M`$`\!1`+W[8`.``',#_?M0`P9*5JT-^T`"@`!S@`W[,`(-^R`!C?L0`0W[``
+M"`@!KR9GO0!0/!,0#62$DV`,`:\F9M$!(```@"UF<Y.`)!(`(`````#>)@``
+M`@`H+0)@("TF$``!9C$`"``&$#]$IF@`1((```P!KR9&``,A%A+_]3P%$`V.
+MQ@(D/!`0#68$D[`,`:\F9*63P([&`BP\!1`-9@23L`P!KR9DI9/("`&O\```
+M``!GO?_@_[````"`@"W_L0`(/`00#?^_`!ADA)/H_[(`$`P!O"H\$10GPB*)
+MV!1`__XD`@`!XB*)V!!`__L`````#`&[!`(`("U`(V@`/`(0#7QC((,``QGX
+M9$*9<`!B$"T\`Q`+@$8``&1C:F`\!!`-/!(0"V2$D_``1A@+?`4`.PP!KR8`
+M8#`M#`&O)F9$:R@,`:_&`@`@+0P!KR9F1&LH/`00#0P!KR9DA)0PW@(!&!1`
+M`"P`````W@(`^#P$$`=DA+R89$+_^`P";WK^`@$8_@`!&`P!KR9F1&LH```!
+M3ZX@B=@```%/#`&72@````"40P#`)`(``1!B`"@`````CX.`?#P"__`T0@`C
+M``(2_#!C``$T0@@H``,:@`!B&"W<8@``R$#__@````!`(K``-$(`$$"BL`#<
+M8@``R$#_^`````!`(K``-$(`$$"BL`#<8@``R$#_\@`````(`;"!`````#P$
+M$`<,`F]Z9(2\F`P!KR9F1&LH```!3ZX@B=@```%/#`&72@````"40P#`)`(`
+M`11B_]H`````````#0@!L'>/@X!\9[W_R/^P````@(`M_[\`,/^U`"C_M``@
+M_[,`&/^R`!#_L0`(0#-H`$`Q8``R<@!\%D``!#P"__\T0@#]`B(0)$"B8`#>
+M`P#8)`(!`'P4`#LP8P>```,8`!!B`#$"@*@MW@(!$.A*`"@\!!`-Z$D`(#P$
+M$`T60``0`C,P)'S&.@,0P``1```0+20$``$D!0`(`$08!`!F&"048``W?H,)
+MPR1"``$41?_[`$08!`P!L#8"`"`M`````#P"%"?<0HC0`$#X"0(`("U`L6``
+MW[\`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`X`J`H+0P!KR9D
+MA)40)`("``@!L+U`HM```J`H+0P!KR9DA)38)`($``@!L+U`HM``RB+_SP``
+M``!`(]@`W@(!$.A``"M\1B$#R&``(P*`*"U\9BJ#/`00#7QC.,,`!C````,X
+M``P!KR9DA)1X)`(``4"BT````!`M0*+8``@!L+G>`@$0`````#P$%"<``QCX
+M9(2(V`!B$"T``A#X?((B"MR"``@`0/@)`@`H+4"Q8`#?OP`PW[4`*-^T`"#?
+MLP`8W[(`$-^Q``C?L````^``"&>]`#@`````/`00#0P!KR9DA)2X"`&P^"0"
+M``$`````/`00#7Q""$,`!C````(X``*`*"T,`:\F9(240`@!L/@D`@`!````
+M`&>]_ZC_LP`@)!,``?^R`!C_L0`0_[``"/^_`%#_O@!(_[<`0/^V`#C_M0`P
+M#`&72O^T`"A\$``[,@<`?SP%_X``!V"`-*4!`26,``$`H"`M`8`8+0`%+C@D
+M:P`!`$"0+0`$)?@`H!`M,8P`_S%K`/\D9@`"-*4`$21C``,TA``)-$(`$P`,
+M2,``"T#```4L.``$)'@``A0X,&H`_P`,>7@`"VEX?@,)PP`#&3P!)8@M`2)P
+M+0$"8"T!!4@M,,8`_P'D>"T!I&@M`2-()0`&6,`!HV@E`8-@)0`&,7@`\S@4
+M`B.()0'C>"7^(````<-P)?WG````"D#`_<`````*47C](```_:````%E:"W]
+M@````6)8+0#$8"T!`A`MW28```%C6"4!HS`E`8-()0$%*"T!1"`M)`@``@"C
+M*"7\R````(,@)?TG````0Q@E_6```-S"``#\H```_(```/Q@``#<H@``#`&7
+M2@`````00``$/`,0!XQ"`*@44``(`````#P"%"=D8[L8_$.(R#P#$`=D8[IP
+M/`(4)_Q#B,`````/#`'42``````,`9=*`````!!``$$\!!0GC$,`J'P"`#L0
+M8@`^/!<4`(R#B=P08/_^``````P!ETH`````E$,`P"0"``$08@`&`````"00
+M__\,`:XV`````!10__T`````/!04`#P3%````(@M``"`+6:4/S!F<T"P)!4`
+M!``0&<`D8@`_*&0```!$&`L``QF#``,8^`)#&"W<8P`H%&``%"80``%F,0!@
+M%A7_]0`0&<`````/!!\``$%@8"#?OP!0W[X`2-^W`$#?M@`XW[4`,-^T`"C?
+MLP`@W[(`&-^Q`!#?L``(`^``"&>]`%@``````C0@+=R"`"``0/@)``````(S
+M("W<@@`@`$#X"68Q`&`(`;&T`````#P7%````)@M``"(+0``@"UF]S\P`!`1
+MP"1#`#\H1````&00"P`"$8,``A#X`D(0+=Q"`"@40`!:)A```20"``1F,0!@
+M%@+_\V9S`%B.10"T/`00!V2$R9`\`H``/`,0!V2&`(``HB@E9&/`V#P"%"<`
+MP#@M_$.(T`"`$"UDHP"`:$L``&A*``AH20`0:$@`&&1"`""P:P``L&H`"+!I
+M`!"P:``8%$?_]F1C`"`\`A`'9*,!`&1"S<QD1P"`:$L``&A*``AH20`0:$@`
+M&&1"`""P:P``L&H`"+!I`!"P:``8%$?_]F1C`"``@!`M9*,!@`#`."UH2P``
+M:$H`"&A)`!!H2``89$(`(+!K``"P:@`(L&D`$+!H`!@41__V9&,`(&2E`@!H
+MB```:(<`"&B#`!!H@@`89(0`(+"H``"PIP`(L*,`$+"B`!@4AO_V9*4`(#P"
+M@``T0@`(_$```/Q```C\0``0````#PP!OA0``"`M$$``!``````\!!`-#`&?
+MY&2$E5````%//`04)R0"``&L@HG<```!3P@!L90`````/`,4``(W*"UD8T"P
+M/!04)P(CL"T\`Q`'WH*(P&1CO>#\HP`(/`,0!V1CO%`\'A0G_L,`""0$``+_
+MI0```$#X"=_5B,C?I0```J#X"0`"(`#>@HC`W]6(R`!`^`DD!``$`L`H+0*@
+M^`D``B``WH*(P-_>B,@`0/@))`0`!CP%%`!DI4(P`+,H+0/`^`D``B``"`&Q
+MX"0"``0\`Q0GW&*(T/QDB-````%/`^``"``````\&A`'9UK)H`-`V`D`````
+M9[W]T/^@``#_H0`(_Z(`$/^C`!C_I``@_Z4`*/^F`##_IP`X_Z@`0/^I`$C_
+MJ@!0_ZL`6/^L`&#_K0!H_ZX`</^O`'C_L`"`_[$`B/^R`)#_LP"8_[0`H/^U
+M`*C_M@"P_[<`N/^X`,#_N0#(_[H`T/^[`-@``-`0``#8$O^\`.!GH0(P_Z$`
+MZ/^^`/#_OP#X_[H!`/^[`0A`.M@!_[H!$$`:>``\&P`--WN5``-;T"H?0``#
+M`````$`ZT`#_N@$00#IP`/^Z`1A`.H`!RT``2P````!`.F``/!LD``-ZV"5`
+MNV``8[L!(/=@```G>P`(]V$``"=[``CW8@``)WL`"/=C```G>P`(]V0``"=[
+M``CW90``)WL`"/=F```G>P`(]V<``"=[``CW:```)WL`"/=I```G>P`(]VH`
+M`"=[``CW:P``)WL`"/=L```G>P`(]VT``"=[``CW;@``)WL`"/=O```G>P`(
+M]W```"=[``CW<0``)WL`"/=R```G>P`(]W,``"=[``CW=```)WL`"/=U```G
+M>P`(]W8``"=[``CW=P``)WL`"/=X```G>P`(]WD``"=[``CW>@``)WL`"/=[
+M```G>P`(]WP``"=[``CW?0``)WL`"/=^```G>P`(]W\``"=[``A$1```_V0`
+M`$1$^`#_9``(0+I@`#P:$A)G6A08)!L``:];```\&A`'9UK"@`-`^`ECI```
+M/!H2$F=:%!BO0```0#J``<M``$L`````0#I@`#P;)``#>M@E0+M@`&.[`2#7
+M8```)WL`"-=A```G>P`(UV(``"=[``C78P``)WL`"-=D```G>P`(UV4``"=[
+M``C79@``)WL`"-=G```G>P`(UV@``"=[``C7:0``)WL`"-=J```G>P`(UVL`
+M`"=[``C7;```)WL`"-=M```G>P`(UVX``"=[``C7;P``)WL`"-=P```G>P`(
+MUW$``"=[``C7<@``)WL`"-=S```G>P`(UW0``"=[``C7=0``)WL`"-=V```G
+M>P`(UW<``"=[``C7>```)WL`"-=Y```G>P`(UWH``"=[``C7>P``)WL`"-=\
+M```G>P`(UWT``"=[``C7?@``)WL`"-=_```G>P`(WV0``$3$``#?9``(1,3X
+M`$"Z8`#?N@$`W[L!"`-``!$#8``3WZ$`"-^B`!#?HP`8WZ0`(-^E`"C?I@`P
+MWZ<`.-^H`$#?J0!(WZH`4-^K`%C?K`!@WZT`:-^N`'#?KP!XW[``@-^Q`(C?
+ML@"0W[,`F-^T`*#?M0"HW[8`L-^W`+C?N`#`W[D`R-^Z`-#?O`#@W[X`\-^_
+M`/C?O0#H0@``&`````#\&@`(0#K8`<M```1`NM@!W!H`$&=:``'\&@`00#K8
+M`,M```1`NM@`W!H`&&=:``'\&@`8W!H`"$(``!@`````_!H`"$`ZT`#+0``$
+M0+K0`-P:`!!G6@`!_!H`$$`ZV`#+0``$0+K8`-P:`!AG6@`!_!H`&-P:``A"
+M```8``````````!GO?_8<(0"LO^Q``@\$?_P_[```#8Q`"/_OP`@`!&*_/^S
+M`!@V,0@H_[(`$`"1@"W>`P``R&``&&8Q_]@D$@`#`)&(+0@!LYLD$P`!````
+M`-X"``#(0``1W[\`(-XB`````A``%%+_^@`````,`GV<```````"$``04P`(
+MW[\`($`BL``T0A$00**P`-X"``#H0/_R`````-^_`"#?LP`8W[(`$-^Q``C?
+ML````^``"&>]`"@`````9[W_^/^_```,`9=*``````P`N7AD1``H#`&72@``
+M```00``'`````(Q#`*A\`@`[$&(``P`````,`E[,```@+0P"?:8`````"`&S
+MP`````!GO?\8_[<`T`"`N"W_M`"X_[$`H/^_`.#_O@#8_[8`R/^U`,#_LP"P
+M_[(`J`P!ETK_L`"8WO$!B`!`H"V.(@``+$,``A1@`/(`````9B(`H`.@&"UF
+M)`$@:$@``&A'``AH1@`0:$4`&&1"`"#\:```_&<`"/QF`!#\90`8%$3_]F1C
+M`"!\$``[`!`1@AA``%(`0"@MWZ,``!1@``H`````)$3__V>B``APA/CR`$0@
+M+1!$`$ED0@`(W$/_^!!@__P`````CH(`J!!0`%(\`Q0GC&+)Z!!`__X`````
+M#`'=+@````".X@%`R$8!'P````".@P#\CH(`J#!C`"`04`$A_Z,`D`P!L2(`
+M````CH(`J!!0`-G?H@"0CN(!0,A&`-(`````0`)@`#P!`$``(`@G`$$0)$""
+M8`!`(K``-$(1`$"BL``````/WZ(`D!1```\`````CN(!0.A&``P`````WH(`
+M.!1``!#?OP#@WH(`2!1```[?O@#8WH(`6!1```L`````#`&FP@`````,`;E2
+M`H`@+0P!NM0`````CN(!0,A&`*7?OP#@W[X`V-^W`-#?M@#(W[4`P-^T`+C?
+MLP"PW[(`J-^Q`*#?L`"8`^``"&>]`.@```````40^#(#`#]_HA(*)&,``0`"
+M("\`@A`D)`0`0'!"$"0`@A`O%&+_L0````".X@%`Z$;_K@````"ND`"H#`"P
+MD)XD`#R.X@``+$,`!A1@`34L0@`(%$``!``````\!!`-#`)_>F2$J=C>\0&(
+M)!,``8XE```4LP$E9I(`*```*"T"0"`M#`)F8"0&`(">)``T9B(`6&:%`,O^
+MA``HWB0`$/Z$`!C>)P`8WB0`$`#D("^NA``DWB0`"/Z$`!".)``LKH0`()XD
+M`#S^A``(GB0`*/Z$`+".)`!$KH0`N(XD`$@`!"!`KH0`O)8D`%"FA`#`DB0`
+M4J*$`,*2)`!3HH0`PY(D`&RBA`#$DB0`;:*$`,62)`!NHH0`QI(D`&^BA`#'
+MDB0`<**$`,B2(P!QHH,`R9(C`'*B@P#*:$0``&A#``BRA`#+L*,`")!#`!"@
+MHP`0D$,`$:"C`!&00P`2H*,`$I!"`!.@H@`3HH`!`(XB`##(0P`"`````**3
+M`0".(P`X/`0"`#2$``%\8O@#`&08*Q!@``(```````(5./Z"``".(@`$$$``
+ME@````#>(@!X_H(`X-XB`(#^@@#HWB(`B/Z"`/".(@`$+$(``A1``)D`````
+MCB(`D*Z"`/B.(@"4KH(`_(XB``0L0@`#%$``!`````#>)`"8%(``NB0"___^
+M@`$(CB(`!"Q"``000`"D9B(`H`P!W'@````````!#SP#%"<D`@`!K&+)Z```
+M`0\(`;/Z`````"0#``$00P!@`Z`@+0``*"T,`F9@)`8`@)XB`#0(`;/G_Z(`
+M``````!FA``HW[X`V-^W`-#?M@#(W[4`P-^T`+C?LP"PW[(`J-^Q`*#?L`"8
+M"`"Y>&>]`.@,`+EX9H0`*`@!M`\`````%$``30````".\@`\/!X0#3P5$`UG
+MWJK0_Z``B&;Q`$#_O@"```"`+3P6@``60``-9K6JR`@!M0[?H@"0``````/`
+M("T,`H)T)`8`!A!``"(`````)A```0(2$"L00``19C$`!(XC```"H"@M)`8`
+M!@!V\"4,`H)T`\`@+11`__#?I0"`9\0`!@P"7K8F$``!CO(`//^B`(@"$A`K
+M%$#_\68Q``3?H@"0$$#^_=^D`(@\`Q`'/`*``&1CSL@T0@X`/`40!ZQ#```,
+M`;G49*7.$`@!M`V.X@%`#`)>MF?$``:.\@`\"`&T^:^"@'P`````#`"Y>&:$
+M`"B.@P#\CH(`J#!C`"`44/[A_Z,`D$`$>``,`=UF``````@!M`<`````CB(`
+M!"Q"``040/^>``````@!L]IF(@"@#`&72@````",0@#\R$+_L#P$$`T,`G]Z
+M9(2JD`@!M3D``````````):"`,!P1`/N<$,`K@"#&"5P0@DO.&,``0!#$"00
+M0``5/`(=`/Z``.#^@`#H"`&TK?Z``/"N@`#XKH``_([B`4`P0P`"$&``!3!"
+M``0D`@`$KH(`_([B`4`P0@`$$$#_80````".@@#\-$(`"`@!M+6N@@#\DH,`
+MPC1""`#^@@#@/`(=`?Z"`.@D`@`!$&(`$SP"'0(T0@#X"`&TK?Z"`/`"0!@M
+M9C$!(&A'``!H1@`(:$4`$&A$`!AD0@`@L&<``+!F``BP90`0L&0`&!11__9D
+M8P`@"`&TP0`````(`;2M_H(`\'Q$_\8,`DJ^_H0!"!1``!$`````/`00#0P"
+M?WIDA*IX"`&TOHXB``2.)@`$/`00#0P"?KQDA*H0#`)>S"0$__\\!!`-#`)_
+M>F2$J:@,`E[,)`3__SP$$`T,`G]Z9(2J6`P"7LPD!/__`````&>]__#_OP`(
+M#`&72O^P```,`9=*`$"`+91#`,`D`@`!$&(`!``````\!!`-#`&\*F2$JMA`
+M)=@`?*4H`@`%*#P4H``M`````$`E6`=\!<@%%*``)3P$$`U`)5@')`(`(7P%
+M0`<``A.\)`.!`#1"`00D!(&``*(0)?Q@``!D8P`(%&3__0````!`HE@'#`"P
+MD-X$``@,`-#X``````P!W3XD!``"%$``"X^"@G@00``8``````P!ETH`````
+M$$``(`````",0P"H?`(`.Q!B`!P`````W[\`"```$"W?L````^``"&>]`!`,
+M`GZ\9(2K$`@!M:8`````/`00#0P"?KQDA*KH"`&UH@``````````#`&72@``
+M```00``%`````(Q#`*A\`@`[%&+_X@`````,`(./``````@!M;T`````#`&,
+M:@````#?OP`(W[``````$"T#X``(9[T`$`````!GO?_X_[\```P!JI``````
+M#`&72@````"40P#`)`(``1!B``,`````"`&U\@`````````-"`&U\@``````
+M````)`(``A"B``X`````)`(`!!"B``D`````)`(``1"B``0``````^``"-R"
+M`````````^``")""```#X``(G((```/@``B4@@``)`(``A#"`!(`````)`(`
+M!!#"``L`````)`(``1#"``0`````_(4```/@``@``!`MH(4```/@``@``!`M
+M`````*R%```#X``(```0+0````"DA0```^``"```$"T```````0A.`"%*"TL
+MH@'Q%$``!``%*/@#X``()`+__P`````\`A`-9$*K.'Q%*@H`H``(`````$`B
+M^``#X``(`````$`B\``#X``(`````$`BZ`,#X``(`````$`BZ`(#X``(````
+M`$`BZ`$#X``(`````$`BX`,#X``(`````$`BX`(#X``(`````$`BX`$#X``(
+M`````$`BX``#X``(`````$`BV`$#X``(`````$`BV``#X``(`````$`BR`,#
+MX``(`````$`BR`(#X``(`````$`BR`$#X``(`````$`BR``#X``(`````$`B
+MP``#X``(`````$`BN``#X``(`````$`BL``#X``(`````$`BH``#X``(````
+M`$`BF`$#X``(`````$`BF``#X``(`````$`BD`$#X``(`````$`BD``#X``(
+M`````$`B@`,#X``(`````$`B@`(#X``(`````$`B@`$#X``(`````$`B@``#
+MX``(`````$`B>`$#X``(`````$`B>``#X``(`````$`B<``#X``(`````$`B
+M:``#X``(`````$`B8`(#X``(`````$`B8`$#X``(`````$`B8``#X``(````
+M`$`B6`<#X``(`````$`B6`8#X``(`````$`B6``#X``(`````$`B4``#X``(
+M`````$`B2`<#X``(`````$`B2`8#X``(`````$`B2``#X``(`````$`B0``#
+MX``(`````$`B.``#X``(`````$`B,``#X``(`````$`B*`$#X``(`````$`B
+M*``#X``(`````$`B(``#X``(`````$`B&``#X``(`````$`B$``#X``(````
+M`$`B"``#X``(`````$`B```#X``(`````&>]__#_L````("`+?^_``C<A``(
+MW@(`&-X+`!`LA`!!+$,`"#B$``$X8P`!`&08)11@``^N``!8+$,`"!1@``8\
+M`Q`-`6#X"0`````(`;;H_@(`8````````A#X9&.ZP'QB$@H`0``(````````
+M```D`@`!K@(`6"0"``/^`@!@W[\`"-^P```#X``(9[T`$-X$`"#>!0`HW@8`
+M,-X'`#C>"`!``6#X"=X)`$@(`;;H_@(`8`````#>!``@W@4`*-X&`##>!P`X
+M`6#X"=X(`$`(`;;H_@(`8-X$`"#>!0`HW@8`,`%@^`G>!P`X"`&VZ/X"`&``
+M````W@0`(-X%`"@!8/@)W@8`,`@!MNC^`@!@W@0`(`%@^`G>!0`H"`&VZ/X"
+M`&```````6#X"=X$`"`(`;;H_@(`8-X$`"#>!0`HW@8`,-X'`#C>"`!`W@D`
+M2`%@^`G>"@!0"`&VZ/X"`&`\"!(5```0+64(12`D!P`("`&W*0$`&"TD0@`!
+M$$<`%&1C`!C<9@``%(;_^P````#<9@`(%*;_^````````ACX``(1>`!#&"\!
+M`T`MW0,``!1@``0``!`M_00```/@``C]!0`(`^``"````````````0`8+0``
+M$"TD!P`(W&8``!#`_^YD8P`8)$(``11'__L``````^``""0"__\`````/`<2
+M%0``$"UDYT4@)`@`P`@!MU``X!@M$$@`#61C`!C<9@```$=(+12&__MD0@`8
+MW&8`"!2F__@`````_2``````$"W](``(`^``"/T@`!`#X``()`+__SP+$A4`
+M`!`M96M%(```2"T!8!@M"`&W:20,`,``````)2D``1!,`"1D8P`8W&H```!+
+M:"T4BO_Z9$(`&-QJ``@4JO_W`````-VK`!`D`P`($6,`&R0"__X`"1&X/`X2
+M%0`)2CAESD7@`2)@+P#`*"T!S%`M"`&W@`%`$"T`````$&``$61"`!B,1```
+M%(7__"1C___<20`0%2C_^0````#<1``(%(?_]@`````#X``(```0+0`````#
+MX``()`+__P/@``@`````96,``0``$"W]HP`0`<P@+20)`,``````?4(8"@""
+M*"T08``%9$(`&!1)__L``````^``"```$"VLI@`````0+?RG``@#X``(_*@`
+M$``````\"Q(5```0+65K12```$@M`6`8+0@!MZ\D#`#``````"4I``$03``.
+M9&,`&-QJ````2V@M%(K_^F1"`!C<:@`(%*K_]P````#=JP`0%6``!B0"__\#
+MX``(```````````#X``()`+__P`)$;@`"1HX/`02%0!B&"]DA$7@```0+0"#
+M&"TD"@#`"`&WR@!@*"T02O_S9&,`&(QD````HD@M%(;_^V1"`!C<9``(%(?_
+M^`````#<9``0%(C_]0````!E:___```0+?VK`!"M(```_2``"`/@``C](``0
+M`````-^"@FAGO?_P_[```/^_``B,0P````.!>&80``@`4(`MC@@``"T'``00
+MX``#C$L`!'P'^#O^!P`()&H``0`*3\,`"4V"`2HX(3#G`_\`Z3@C$.L`%R1C
+M``(``T_#``E-@@!I&"$P8P/_`&E((Q$K`!`D`P`!$0,`)@````"N!`````<9
+M>/X%`!``0Q@M_@8`&*Q@``BL1P`````!#]^_``C?L````^``"&>]`!``````
+M%0``#R0"``'>`@`()`,``:X#``#^```8_@(`$-X"`!AD0@`!_@(`&````0_?
+MOP`(W[````/@``AGO0`0`````!$"__8\!!`-/`40#62$NV@,`GZ\9*6[0`@!
+MN!#>`@`8``>!>&80``@`4(`M?`/X._X#``@DYP`!``<?PP`#'8(`9S@A,.<#
+M_P@!M_L`XS@C9[W_R``$$;C_L`````2"./^T`"`"`H`O/`(2%3P4$`W_LP`8
+M9$)%X/^U`"@"`H`M_[(`$#P3$`W_L0`(`("0+?^_`#!F$``(``"(+205``1F
+ME+N("`&X2&9SNU@`````)C$``20"``@2(@`79A``&(X"__@45?_Z)`(``MX&
+M``@0P@`M+,(``Q!``!DD`@`$)`(``1#"`"``````W@<```(@2"T"@"`M`F`H
+M+0`&,``,`GZ\`D!`+28Q``$D`@`(%B+_ZV80`!C?OP`PW[4`*-^T`"#?LP`8
+MW[(`$-^Q``C?L````^``"&>]`#@`````$,(`#20"``@4PO_H`````-X%``#<
+MI@``#`&WW"0$``0(`;A%)C$``=X%```(`;AND*8```````#>!0``"`&X;IRF
+M````````W@4```@!N&Z4I@```````&>]_]@D`@`!_[,`&`"@F"W_L0`(`("(
+M+?^_`"#_L@`0$*(`2_^P```\!A`-/`(0#63&N_`XHP`"9$*[X`!#,`H\!!`-
+M`B`H+62$O`@,`GZ\``"`+3P$$A5DA$4@```0+0"`&"T(`;B=)`<`P``````F
+M$``!$$<`*&1C`!C<9@```$20+18F__ID0@`8W&4`"!9E__<"`"@M/`00#0P"
+M?KQDA+Q8CD4`%#P$$`T,`GZ\9(2\:-Y"`!`00``:`!`1N``0@C@"`H`O/`(2
+M%61"1>`\$Q`-`@*`+0``B"UF<[P@"`&XNR02``@F,0`!$C(`#680`!B.!0``
+M$*#_^P(@,"W>!P`(W@@`$`P"?KP"8"`M"`&XN28Q``$\!!`-#`)^O&2$O'@,
+M`G[B)`0`"M^_`"#?LP`8```0+=^R`!#?L0`(W[````/@``AGO0`H`````#P&
+M$`T(`;B.9,:[T`````#?@H)@9[W_X/^Q`!#_OP`8_[``"'P1`#L00``E/`00
+M#0`1&3@`$8'X`@.`+P!0@"T\`A`-G@,``&1"NQ@``QCX?$,2"A!```H`````
+M`$#X"0(`("T```$/W[\`&-^Q`!#?L``(`^``"&>]`"``````#`&OQ@"@("T\
+M!!`'#`)O>F2$O)@D`@`!K@(`6"0"``+^`@!@```!#]^_`!C?L0`0W[``"`/@
+M``AGO0`@`````/^E```,`+.(9(2\B!!```??I0``W$(``!!```0D`___?&+_
+MQ@@!N-[_@H)@W[\`&`(@,"W?L``(/`00#=^Q`!`\!1`-_X""8&2$O)ADI;L`
+M"`)^O&>]`"!GO?_(_[\`,/^Q`"@4@``0_[``("0$``$,`=T^``"`+1!```7?
+MOP`P#`'=%B0$``'_@()HW[\`,`(`$"W?L0`HW[``(`/@``AGO0`X`````"0$
+M``$,`=T^``"`+11`__4\!1`-`Z`@+7P"`#MDI;S8`$`P+0P"@$8`0(@M#`"S
+MB`.@("T00``./`00#=Q#```08``+)`+__R0$``%\0__&#`'=`/^#@FC?OP`P
+M`@`0+=^Q`"C?L``@`^``"&>]`#@\!1`-_X"":&2$O+ADI;LP`B`P+0P"?KPD
+M$/__"`&Y)M^_`#``````9[W_^/^_```,`:`Z)`0`"`P!ETH`````$$``!]^_
+M``",0P"H?`(`.Q!B``,``````^``"&>]``@\`A0DW%FWH#P%%``D!``#9*5#
+MD`,@``AGO0`(`````&>]_]C_L0`(`("(+?^S`!@D!``!_[\`(`"@F"W_L@`0
+M#`'=/O^P```00``;/!(2%0``@"UF4D4@)`<``0)`$"T(`;E])`0`""80``$2
+M!``29$(`&-Q#```6(__[`````-Q#``@49__X`B`H+20$``(,`;?<`F`P+0`0
+M$/@`$!EX`&(0+P)"D"W>0@`0%$``"=^_`"``````W[\`(-^S`!C?L@`0W[$`
+M"-^P```#X``(9[T`*`(`("W?LP`8W[(`$-^Q``C?L```"`&X+&>]`"AGO?_8
+M_[$`"`"`B"W_LP`8)`0``?^_`"``H)@M_[(`$`P!W3[_L```$$``&SP2$A4`
+M`(`M9E)%("0'``("0!`M"`&YL20$``@F$``!$@0`$F1"`!C<0P``%B/_^P``
+M``#<0P`(%&?_^`(@*"TD!``##`&WW`)@,"T`$!#X`!`9>`!B$"\"0I`MWD(`
+M$!1```G?OP`@`````-^_`"#?LP`8W[(`$-^Q``C?L````^``"&>]`"@"`"`M
+MW[,`&-^R`!#?L0`(W[````@!N"QGO0`HW)D`8`,@``B,A`!8`````&>]_^``
+M!!"X_[`````$@3@"`H`O/`,4``($@"T\`A0GW$*(P&1C0YC_OP`8`!"`^/^R
+M`!`"`X`M_[$`"#P#%"?^!0!@`("(+=QRB,@`0/@))(0`7`(`*"TR,0`!``(@
+M``)`^`D`$8J`/`+_\#1"`",D!0`!``(2_`(`("TT0@@(?B(:"@(BB"U\HP`'
+M_B,``-X#`"#<0OCP`&#X"0````#>`@`H?`4`.Q!```,``````$#X"0(`("W>
+M&0`P$R``"-^_`!@"`"`MW[(`$```*"W?L0`(W[````,@``AGO0`@W[(`$-^Q
+M``C?L````^``"&>]`"````````00N``$&3@`8A`O`$0@+3P"%```!"#X9$)#
+MF`""("W<F0`H$R```P`````#(``(``````/@``@````````````$$+@`!!DX
+M`&(0+P!$("T\`A0```0@^&1"0Y@`@B`MW)D`,!,@``,``````R``"``````#
+MX``(``````````!GO?_`_[(`$`"`D"W_L0`(`*"(+?^P````P(`M_[\`./^V
+M`##_M0`H_[0`(`P!ETK_LP`8E$,`P"0"``$08@!./`+_\``0L,``$($``M&(
+M(0(P`!\"``'T-$(`(S)0``$``A+\-$((4``0@H`"`A@M)`0`!_QD```D%``!
+MW$+XJ```B"T``+`2,M/__S+6`/\25`!(`!.J.GP1*4<\`O_P)`,``31"`"-\
+M<0A'``(2_"0$`),T0@@H?@(:"F1"__`"`B@M9$8`:/RD```"!C`MW$/XX&1#
+M`'#\U@```@,8+=Q&^.!\!#G'_'4``-Q#^.#\I```W$+XX`P!ETH`````E$,`
+MP"0"``$08@`*/`/_\'P#^#L`$YE`)G,G$`!S&"U\`O@[`$,0*Q1`__T`````
+M/`/_\```$"TT8P`C``,:_#1C""`"`X`M_A$``-^_`#C?M@`PW[4`*-^T`"#?
+MLP`8W[(`$-^Q``C?L```W&/XV`/@``AGO0!`,E```31"`",`$(*```(2_"0$
+M``<T0@A0)!0``0("&"T``*@M_&0``"06``'<0OBH)!,``194_[H``(@M#`&7
+M2@````"40@#`%%3_M0`````(`;I9)!$`(&>]__#_L````("`+?^_``@,`+=2
+M)`0``=^_``@"`"`M/`8``=^P`````B@`-,;"``@!NC)GO0`09[W_\/^_``@0
+M@``9_[```'R02`$D`O__?%#_QCP&``@"`"`M```H+0P"9F`TQF*@/`)#3S1"
+M4D4D`P`"_@,`"``"%#@T0D15)`,!`/X#`!```A0X-$)-4/X"``#?OP`(W[``
+M``/@``AGO0`0`````"00__\(`;J[`!"'_``````\!``(/`@0#3P)$`=GO?_X
+M-(1BH```*"T\!B``)`<`$&4(O.C_OP``#`"T:&4IZM`00``?)`/__WQ"2`%\
+M8O_&W$0``#P#0T\T8U)%``,<.#1C1%4``QPX-&--4!"#``;_@H)PW[\``&>]
+M``@#X``(_X""<`````#<1``()`,``A2#__G?OP``?`,`.R0$+#A\8_@#<&08
+M`P!#$"W\0!@@W[\```/@``AGO0`(`````"0"__\(`;KD``(7_`````#?@X)P
+M9[W_^'P%`#O_OP``$&``5B0"``%\I?@#)`(L.'"B,`,`@!`M9(4!`&3&&"``
+M9C`M9,,`"&A*``!H20`(:$@`$&A'`!AD0@`@L&H``+!I``BP:``0L&<`&!1%
+M__9D8P`@W((!`/S"`FC<@@$(_,("<$`B``#\P@)X0"(0`/S"`H!`(A@`_,("
+MB$`B4`#\P@*00"(H`/S"`IA`(F``_,("H$`B:`#\P@*P0"*X`/S"`NA`(K``
+M_,("\$`BR`'\P@+X0"+(`_S"`P!`(L@`_,(#"$`BR`+\P@,0W((!&/S"`MA`
+M(O@`WX>"</S"`N#<X@`0$$``%@``&"T``"`M0*0``$(```%`)1````,0^``#
+M&7@`0Q`M`,(0+?Q%!$A`(Q@`_$,$4$`C4`#\0P0X0",H`/Q#!$`DA``!W.(`
+M$'R#^`,`8A`K%$#_[0`````D`@`!_,(``````0\\!!`-#`&O)F2$O/@``!`M
+MW[\```/@``AGO0`(WXB"<!$``!IE`@`@```8+0@!NVLD!P$`)&,``1!G`!8`
+M````W$8``!3`__MD0@`89&8``0`#$/@``QEX``8X^`!B$"\`!C%X`0(0+0#'
+M,"_\1``H)`,``?Q#`"`!!A`M_$4`&-T"`!AD0@`!_0(`&`/@``@`````/`00
+M#3P%$`UDA+T8"`)^O&2EO6``````9[W_\/^P``#?D()P$@``%_^_``AF`@`H
+M```8+0@!NY,D!@$``````"1C``$09@`4W[\`"-Q%```4I/_[9$(`&``#$/@`
+M`R%X`((@+P``*"T"!"`M)`8`&`P"9F!DA``@W@(`&&1"___^`@`8W[\`"-^P
+M```#X``(9[T`$``````\!!`-W[```#P%$`UDA+U`9*6]@`@"?KQGO0`0````
+M`"0"``$#X``(KX*">``````\!!`-9[W_^/^_```,`GZ\9(2]H-^_```D`O__
+M`^``"&>]``@`````9[W_Z/^_`!#_L0`(_[```````4_?@H,0/!`4)Q!``"N.
+M$<GL`%$0+0``&"T```$/<$,<WWQC\$(``Q@```,9>!!@``X\`A0`W$)$T'P%
+M`#L``B``!(``%GRE"<,P1`/_```!3SP"_X`T0@$I``(2/'RB.09\@LP'_$,`
+M`````4_?@H,0$$``#8X0R>P`4!`M```!#_Q```````$/W[\`$-^Q``C?L```
+M`^``"&>]`!@``"@M"`&[U```("T,`-#X``````@!N]_?@H,0#`#0^``````(
+M`;O%WX*#$``````\`A0`_$1$T&1"1-#\10`(`^``"/Q&`!`\`A0`W$5$T&1"
+M1-#<0P`(W$(`$/R%``#\@P`(`^``"/R"`!``````9[W_X/^_`!C_L@`0`("0
+M+?^Q``@`H(@M#`&72O^P``",0P#T/`*```!B$"4,`9=*`$"`+91#`,`D`@`"
+M$&(`"@`````R4@`'`A*`+:(1``#?OP`8W[(`$-^Q``C?L````^``"&>]`"`,
+M`9=*`````)!#`,(D`@`!%&+_\B0"``,R4@`#`%*0(P(2@"T(`;P8HA$`!```
+M``!GO?_@_[$`"`"`B"W_OP`8_[(`$`P!ETK_L```W$(`\!1```??OP`8W[(`
+M$-^Q``C?L````^``"&>]`"``````#`&72@``@"V,4@#T/`*```P!ETH"0I`E
+ME$,`P"0"``(08@`-)`8`(`@!O$LD!0`(H((``&8Q``%F$``!$@7_ZM^_`!B"
+M(@``%$#_^0(2("T(`;Q(H(8```P!ETH`````D$,`PB0"``$48O_O)`8`(&92
+M``<D`@`$)`0`(((C```08``)`````*)#``!F,0`!)$+__Q1`__EF4O__"`&\
+M--^_`!@`````"`&\7J)$``!GO?_P)`(``O^_``@0@@`B`*!(+2R"``,40``+
+M)`(``20"``,0@@`B`````"0"``00@@`+``4@/]^_``@``!`M`^``"&>]`!`4
+M@O_\W[\`"-RB```#X``(9[T`$``````#H%`M```H+20&__\``#@M``!`+0P!
+MVZP`"4@`GZ,``-^_``AGO0`0``(8"P/@``@`8!`M`````-^_``@XJ0`$C2(`
+M`&>]`!`#X``(?$+X`P`%(#\,`5$$``4H`-^_``AGO0`0`^``"'Q"^`,`````
+M9[W_H/^^`%#_M``P``"@+?^S`"@`@)@M_[\`6/^W`$C_M@!`_[4`./^R`"#_
+ML0`8_[``$-YE``@,`;QFC(0``-YE`!@4H`!>`$#P+3P5%"B.HDGP&$``7CP6
+M%"<\`A`'9M;)\```D"T"P(`M```X+0``B"T(`;S#9$CR:`````".!0``$*,`
+M'`````".HTGP)C$``692`&`"(Q@J$&``.F80`&".8P``C@4`2!2C__0"5K@M
+MW@8`4-YD``@4Q/_P`*`8+=X"`%@#PA`D$$#_[`+@("W_IP``#`&\FO^H``C?
+MIP``CF,``(X%``#?J``(%*/_Y@!'."'>!``(WF,`"!2#_^(`````W@(`&!!`
+M``8`````W@(`(!!```,`5!`D$$#_VXZC2?#>`P`0`'X0)`/#$`H00/_6CJ-)
+M\-X"`#@``B`K<$@8*P"#&"008/_/`N`@+?^G``#_J``(`$#X"28Q``'?IP``
+MCJ-)\&92`&#?J``(9A``8`(C&"H48/_)`$<X(0````#?OP!8`.`0+=^^`%#?
+MMP!(W[8`0-^U`#C?M``PW[,`*-^R`"#?L0`8W[``$`/@``AGO0!@``````P!
+MO&:.9```"`&\K0!`H"T(`;S\```X+20"``(`H$@M$((`(0#`4"TL@@`#%$``
+M""0"``$D`@`#$((`(20"``00@@`1``4@/P/@``@`````%((`&`````#])@``
+M)`(!&'RID@(5(O_X/`+_\#1"`",``A+\-$(`^-Q"```#X``(```````````D
+M!O__```H+0``."T``$`M``E(``@!VW8`"E`````````&4``XJ0`$K2H```/@
+M``@````````````%(#\`!C``"`%1\``%*`!GO?_P`(`0+?^_``C_L```W$4`
+M"-Q&`!",A```#`&]$-Q0`$`\!!`,`@`H+0P!KR9DA!=PW[\`"-^P```D`@`!
+M`^``"&>]`!`#X``(```0+3P%%"B,HTGP*&($`!!``!8``Q%X``,Q^`#","\\
+M`A0G9$+)\`!&$"UDA@!@W(H``-R)``C<B``0W(<`&&2$`"#\2@``_$D`"/Q(
+M`!#\1P`8%(;_]F1"`"`D8P`!```0+0/@``BLHTGP/`00#6>]__C_OP``#`&?
+MY&2$O>C?OP``)`+__P/@``AGO0`(`````#P"%"AGO?^XC$))\/^_`$#_MP`X
+M_[8`,/^U`"C_M``@_[,`&/^R`!#_L0`(&$``0?^P```D0O__/!(4)WQ#^`,`
+MH*@M9&,``692R?```REX``,9^`#`L"T`X+@M`D`0+0!EH"\``(`M```P+0@!
+MO9<`@)@M`````&80`&`2%``@`B`0+8Q#```"4"`M%'/_^F11`&#<0P`(%'7_
+M]P````#<0P`0`'8H)!1E__,`````$N``#`+@&"W<2```W$<`"-Q&`!#<10`8
+M9$(`(/QH``#\9P`(_&8`$/QE`!@44?_V9&,`("0&`&```"@M#`)F8&80`&`D
+M!@`!%A3_X@(@$"T0P``,```0+=^_`$#?MP`XW[8`,-^U`"C?M``@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0!(/`00#0P!G^1DA+X`"`&]N"0"__\\`A0H9[W_
+M^(Q"2?`80``K_[\``"1"__]\0_@#/`(4)P`#87AD0LGP``,9^&1+`&``;!@O
+M``!@+0@!O=L!8U@M9$(`8!!+`!@`````C$,``!1D__L`````W$,`"!1E__@`
+M````W$,`$`!F:"04;?_T`````!$@``,`````W$,`./TC```10``#`````-Q#
+M`$#]0P``_$<`./Q(`$!D0@!@%$O_ZB0,``$1@``$```0+=^_```#X``(9[T`
+M"#P$$`T,`9_D9(2^.`@!O?0D`O__9[W_Z/^Q``@`@(@M_[```/^_`!`,`9=*
+M`*"`+91#`,`D`@`!$&(`"-^_`!`"("`MW[$`"`(`*"W?L```"`#$F&>]`!@`
+M```````0+=^Q``C?L````^``"&>]`!@`````9[W_X#P"%"BL1$GT_[(`$"02
+M``3_L0`(_[```/^_`!@,`9=*``"`+0!`B"T`$!G`)&0`/RAE````A1@+``,9
+M@P`#&/@"(Q@MW&,`*!1@`!8`````)A```182__4`$!G`#`&_3@`````40``4
+MW[\`&```("T,`;W\```H+20$``8,`;W\```H+=^_`!C?L@`0```0+=^Q``C?
+ML````^``"&>]`"``````#`#`;`(`("T00/_I)A```=^_`!@D`O__W[(`$-^Q
+M``C?L````^``"&>]`"``````9[W_Z/^Q``@`@(@M_[```/^_`!`,`9=*`*"`
+M+91#`,`D`@`!$&(`"-^_`!`"("`MW[$`"`(`*"W?L```"`#$Z&>]`!@`````
+M```0+=^Q``C?L````^``"&>]`!@`````9[W_N/^R`!`\$A0HCD))\/^_`$#_
+MMP`X_[8`,/^U`"C_M``@_[,`&/^Q``@80``\_[```#P0%"<`@*@M`*"@+0#`
+ML"T``(@M9A#)\```&"T`@)@M"`&^?B07``,`````CD))\`(B$"H00``=9A``
+M8(X"```44__Z)C$``=X"``@45/_XCD))\-X"`!``5B`D%$3_](Y"2?#>!0`8
+M$*#_\@(B$"H,`;QF`J`@+=X%`"".`P```$4P)1!W`!8`8"`M#`&]$-X%`!B.
+M`@`H)`,``7P"$(0(`;YZK@(`*``````08``/```0+=^_`$#?MP`XW[8`,-^U
+M`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!(``4H)P@!OI(`13`D/`00
+M#0P!G^1DA+YP"`&^G"0"__\`````9[W_P/^R`!`\$A0HCD))\/^_`#C_M@`P
+M_[4`*/^T`"#_LP`8_[$`"!A``#G_L```/!`4)P"`J"T`H*`M`,"P+0``B"UF
+M$,GP```8+0@!OLH`@)@M`````(Y"2?`"(A`J$$``'V80`&".`@``%%/_^B8Q
+M``'>`@`(%%3_^(Y"2?#>`@`0`%8@)!1$__2.0DGPW@4`&!"@__("(A`J#`&\
+M9@*@("W>`P`@C@0``-X%`!@``S`G`$,8)0!&$"0XA@`#`$88"PP!O1``8#`M
+MC@(`*"0#``$T0@`$"`&^QJX"`"@08``+```0+=^_`#C?M@`PW[4`*-^T`"#?
+MLP`8W[(`$-^Q``C?L````^``"&>]`$`\!!`-#`&?Y&2$OJ@(`;[J)`+__P``
+M```\`A0HC$=)\!C@``\`````/`(4)V1"R?#<0P`($&0`##P%%"<``!@M"`&_
+M"62EREC<IO^@$,0`"``````D8P`!%&?_^V2E`&`#X``(```0+0``&"T`````
+M``,A>``#&?@`9!@O`^``"`!#$"T`````C((`,#P%__`TI0`C/`;_\``%+#@T
+MQ@`C,$,``32E`!$``S]X``,G^``%+O@`AR`O`(4@+0`"7CC<@P``9*4`('UE
+M6@H`!BK\-*4`^/R#``!\9AU#W*0``'QC'D-PP#`M<&`X+0#F&"448``#?6@6
+M@P/@``@D`@`!?6IK`WUC6`-GO?_(?6D/@S$(`/\Q2O__,&/__SP$$`T`0"@M
+M_Z(``#$I`/__J``(9(3;D/^B`!``0$`M_ZH`&'UK!T/_H@`@_Z,`*/^_`#`,
+M`:\F`$!0+=^_`#`D`@`!`^``"&>]`#@#X``(```0+3P"__QGO?_X-$(`"3P#
+M__```A1X-&,`(V1"@`,``QK\_[\````"%S@T0@`H/`00#=Q%```T8P#X9(3<
+M</Q%``#<8@``#`&O)@````#?OP``)`(``0/@``AGO0`(`````#P"__QGO?_X
+M-$(`"3P#__```A1X-&,`(V1"@`,``QK\_[\````"%S@T0@`H/`00#=Q%```T
+M8P#X9(3<L/Q%``#<8@``#`&O)@````#?OP``)`(``0/@``AGO0`(`````#P"
+M__QGO?_X-$(`"3P#__```A1X-&,`(V1"@`,``QK\_[\````"%S@T0@`H/`00
+M#=Q%```T8P#X9(3<Z/Q%``#<8@``#`&O)@````#?OP``)`(``0/@``AGO0`(
+M`````#P"__QGO?_X-$(`"3P#__```A1X-&,`(V1"@`,``QK\_[\````"%S@T
+M0@`H/`00#=Q%```T8P#X9(3=*/Q%``#<8@``#`&O)@````#?OP``)`(``0/@
+M``AGO0`(`````#P"__QGO?_X-$(`"3P#__```A1X-&,`(V1"@`,``QK\_[\`
+M```"%S@T0@`H/`00#=Q%```T8P#X9(3=8/Q%``#<8@``#`&O)@````#?OP``
+M)`(``0/@``AGO0`(`````#P"__QGO?_X-$(`"3P#__```A1X-&,`(V1"@`,`
+M`QK\_[\````"%S@T0@`H/`00#=Q%```T8P#X9(3=H/Q%``#<8@``#`&O)@``
+M``#?OP``)`(``0/@``AGO0`(`````#P"__QGO?_X-$(`"3P#__```A1X-&,`
+M(V1"@`,``QK\_[\````"%S@T0@`H/`00#=Q%```T8P#X9(3=V/Q%``#<8@``
+M#`&O)@````#?OP``)`(``0/@``AGO0`(`````"0"@`%GO?_@``(4>#P$$`TT
+M0C`!9(3>&/^_`!@``A?X_[```#1"`"#_L@`09%``"/^Q``C<1@``W$<`"-Q2
+M__#<4?_X#`&O)@(@*"U^)!+#?B5(0PP!1@8PA`#__A+_Z-^_`!@\`__P-&,`
+M(R0"``'?L@`0``,:_-^Q``@T8P#XW[```-QC```#X``(9[T`("0"@`%GO?_@
+M``(4>#P$$`TT0C`!9(3>:/^_`!@``A?X_[```#1"`"#_L@`09%``"/^Q``C<
+M1@``W$<`"-Q2__#<4?_X#`&O)@(@*"U^)!+#?B5(0PP!1@8PA`#__A+_Z-^_
+M`!@\`__P-&,`(R0"``'?L@`0``,:_-^Q``@T8P#XW[```-QC```#X``(9[T`
+M("0"@`%GO?_@``(4>#P#__`T0C`!-&,`(_^R`!```A?X_[$`"#1"``C_OP`8
+M``,:_/^P```\!!`-W%```#1C`/ADA-ZX_%```'X'*4-^$DK#?A$50S#G`/\"
+M0"@MW&(```(@,"T,`:\F,A`'X!8``!("("`M#`%$%``````80``'`$"(+0(`
+M("T"0"@M#`%&!B80``$6$?_\`@`@+=^_`!@D`@`!W[(`$-^Q``C?L````^``
+M"&>]`"`,`48&`D`H+=^_`!C?L@`0)`(``=^Q``C?L````^``"&>]`"``````
+M)`*``6>]__@``A1X/`/_\#1",`$T8P`C_[\````"%_@T0@`(``,:_-Q%```\
+M!!`--&,`^&2$WP#\10``W&(```P!KR8`````W[\``"0"``$#X``(9[T`""0"
+M@`%GO?_X``(4>#P#__`T0C`!-&,`(_^_`````A?X-$(`"``#&OS<10``/`00
+M#31C`/ADA-^(_$4``-QB```,`:\F`````-^_```D`@`!`^``"&>]``@D`H`!
+M9[W_X``"%'@\`__P-$(P`31C`"/_L@`0``(7^/^Q``@T0@`(_[\`&``#&OS_
+ML```/`00#=Q0```T8P#X9(3@$/Q0``!^!RE#?A)*PWX1%4,PYP#_`D`H+=QB
+M```"(#`M#`&O)C(0!^`6```2`B`@+0P!1!0`````&$``!P!`B"T"`"`M`D`H
+M+0P!1@8F$``!%A'__`(`("W?OP`8)`(``=^R`!#?L0`(W[````/@``AGO0`@
+M#`%&!@)`*"W?OP`8W[(`$"0"``'?L0`(W[````/@``AGO0`@``````@!OQ8`
+M````"`&_%@`````\`O^`9[W_^#1"`6<\!!`-_[\````"$CPT0@(89(3@6-Q#
+M``#\0P``#`&O)@````#?OP``)`(``0/@``AGO0`(/`+_@&>]__`T0@%G_[\`
+M"``"$CS_L```-$("&-Q0``#\4```?A!D`^H``%D\!!`-,@(``A1``%(\!!`-
+M,@(`!!1``$L\!!`-,@(`"!1``$0\!!`-,@(`$!1``#T\!!`-,@(`(!1``#8\
+M!!`-,@(`0!1``"\\!!`-,@(`@!1``"@\!!`-,@(!`!1``"$\!!`-,@("`!1`
+M`!H\!!`-,@($`!1``!,\!!`-,@((`!1```P\!!`-,A`0`!(```7?OP`(/`00
+M#0P!KR9DA.58W[\`""0"``'?L````^``"&>]`!`,`:\F9(3E"`@!P1XR$!``
+M#`&O)F2$Y+@(`<$;,@((``P!KR9DA.2`"`'!&#("!``,`:\F9(3D``@!P14R
+M`@(`#`&O)F2$XZ`(`<$2,@(!``P!KR9DA.,@"`'!#S("`(`,`:\F9(3BH`@!
+MP0PR`@!`#`&O)F2$XD`(`<$),@(`(`P!KR9DA.'8"`'!!C("`!`,`:\F9(3A
+M6`@!P0,R`@`(#`&O)F2$X/@(`<$`,@(`!`P!KR9DA."("`'`_3("``(\`O^`
+M9[W_^#1"`6<\!!`-_[\````"$CPT0@(89(3EJ-Q#``#\0P``#`&O)@````#?
+MOP``)`(``0/@``AGO0`(/`+_@&>]__@T0@%G/`00#?^_`````A(\-$("&&2$
+MY=C<0P``_$,```P!KR8`````W[\``"0"``$#X``(9[T`"&>]_]`\!O_P_[,`
+M&#3&`"/_L0`(``8UN/^_`"@TQ@0%_[0`(#P3__#_L@`0-G,`(_^P````!C5X
+MC((`,#3&`"@`$YUX`("(+39S`@,\!/_P,$,`!S!"``,``QRX``(4N`!F&"T`
+M$YVXW'```&3&![A\1J(*-(0`(V3&``@V<P?P?$:2"GQ3F@H`!!+\_'```#1#
+M`/C<8@``,@,``Q!@``D`````Z@``-'Z":</J`0!))`/__SP$$`T"@"@M#`&O
+M)F2$YG@R`P`,$&``"0````#J`@!+?D)IP^H#`#0D`___/`00#0)`*"T,`:\F
+M9(3G"#(#`#`08``*W[\`*.H$`!8`````Z@4`#@`````\!!`-`F`H+0P!KR9D
+MA.>8W[\`*"0"``'?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`PCB4`,#P$
+M$`T,`:\F9(3G8`@!P;P\!!`-CB4`,#P$$`T,`:\F9(3G*,H%_^@`````"`'!
+MR8XE`#`D`___``(1^'QB_\:\0P``````#XXE`#`\!!`-#`&O)F2$Y@C*`?_%
+M?H)IPP@!P>TD`___``(1^'QB_\:\0P``````#XXE`#`\!!`-#`&O)F2$YM`(
+M`<&Q/`00#0`"$?A\8O_&O$,```````^.)0`P/`00#0P!KR9DA.9`"`'!ICP$
+M$`T`````)`/__P`"$?A\8O_&O$,```````^.)0`P/`00#0P!KR9DA.:8R@/_
+MKGY":<,(`<'C)`/__P`````#X``(```0+0/@``@D`O__`^``"```$"UGO?_P
+M_[```/^_``@,`3@H)`7__SP)__PD!`$`-2D`"0!`@"T`"4QX/`+_\&4I@`4T
+M0@`C``E/.``"$OPU*0`(-$(`^/TD```D`P`HW$(``&4I$`@(`<(F)`@`&```
+M```08``3`````-TE```\!__\-.<`"21C__\`!SQX9.>`!3"F`#\`!S\X%,C_
+M]33G$!`\`O_P)`,"BC1"`"-\97F'_.4````"$OPT0@#XW$(```P!X$0D!/__
+M#`'@5`(`("TD!/__#`'@?@!`*"W?OP`(W[``````$"T#X``(9[T`$&>]__C_
+MOP``#`'@5`````#?OP```^``"&>]``@`````9[W_\/^_``@,`3AF_Z4``-^E
+M```D!/__W[\`"`@!X'YGO0`0`````'P"^#L`1"`M?`+X.P!$$"L40/_]````
+M``/@``@`````/`+_\&>]_S@T0@`C_[``>``"%#@T0@`!/!#__/^S`)```A;X
+M_[$`@#1"`!#_OP#`-A``"?^^`+@`$(1X_[<`L&80@`O_M@"H`!"'./^U`*`V
+M$``(_[0`F#P1%`#_L@"(9C,^F-Q#``#>90!`_Z,`(-X#``#_HP`H9$,`*-X$
+M__C_I``P```@+=Q"`"C_I0`0_Z(`.-QC__@,`=`(_Z,`0/X`__@\`O_P-$(`
+M(P`"$OPT0@#XW$(``'P#^#L\`@7U-$+A``!B&"U\`O@[`$,0*Q1`__T\`O_P
+M/!8`@-^C`!`T0@`C``(4.#P*__``0)`M-$(`!0`"%O@VU@$H`':P)392``$U
+M2@`C-$(`F'!C&/(`%K(\`!*6^``*4OS_M@`8`&(8+?^C`$@V4@`0)!``"C56
+M`/@`````/`3_@#2$`4\`!"(\-(0#(-R"``!\1C'#),8``@#","\PW@`#$\`!
+M2#P%__PD!``!WF,`,#2E``G>8@`(``4L>&2E@`LGUP`!``4O.&1C__C>*3Z8
+M-*4`0/RD````8A`OWL0``'/"(`,`:4@O``(0>@$B2"\!)$@M``FH``````_?
+MHP`8```X+=QT```2@`%8WZ,`2'Z4.`%^AS@%?.(X`1!``2/?HP`0```H+=YD
+M`"A\9]8&/`,`@#1C`2A^Y[H&`(,8)0`#&CS<8@``$$`!*@````!\0T@!?$(X
+M`7Q%.`5\HC@!$$`!$B0"``'>9``PDFL`+WQ%_\;>*CZ8?&(X`62$__@``!@M
+M?676!@"*("\00``$?(6Z!@!`&"TD`O__?$/_QCP"``$FI/_R-$)KG0`$)#P`
+M`A>X/`@(`#1"0``U"$40_&@`"`""("7\9``0/`0'2S2$^!4\`O__``0D>"0(
+M___\8@``-(0$'0`$)+@``!`M9(3`J/QD`!@`````)$(``1*```,``!@M`H`8
+M+7T#_\;\90```%<8*A!@``IFE``(WF,`,-YD``A^E#@!9&/_^`!D&"\7PO_Q
+M?&6Z!@@!PPQ\!?_&WD,``"0"``$\!?_\/`3_\#2E``DTA``C?$,`!P`%+'C^
+M0P``9*6`"][#```\`__\-&,`"0`%+S@``QQX``0D.&1C@`LTA``!``,?.#P5
+M%!@T8P`()!0``?QB````%*?XWL,``#0#_U[\H@````06^-[$```\!/_P-(0`
+M(S1"`#``!"0X?O2L!S2$``$`!";X-(0`./R#`````"`MWL4``/Q#``#>P@``
+M_Z<`:`P!;!C_J0!P#`%L&```("W?J0!PWJ-8T#!+__]P1!DR`$#P+0`+$0(P
+M0@`/?31X!]^G`&@`1!`E$&``J0!`2"U](O@#9$4'```"$3@`!2DX`&(0+0!E
+M*"W01```9(,``?!#```08/_\T$,`"!!D``0````````!0!``__S00P`(C*(`
+M")2C``XD1@`"`,,8*A!@`,P!8"`MW*,``'QC>`$08`"$)`3__WR#_\8``A#X
+M```@+:RF``@`8A@M_'0``/QG``@```%/WJ)8T``)23@`24@MW2(`"&1"``']
+M(@`(```!3Q2```L`````#`$3M@`````\`__`-&,`J0`#&GQ\0Z,'?\-8QP``
+M`4\D`@`"_&(```````\\`@`!?`8`.S1"AJ!\Q@G#`````'P$\#L\`__\$(#_
+M_31C``L``QM\)`0``31C``@``*`M?,,Y!MQC```$8`!5?&5(`1"@``0D`___
+M`*"@+7QT_\8NA``!)$+__P`"&"H`9"`D%(#_ZP`````00`!%/`00#1*```,`
+M````#`$W=@*`("TF$/__%@#^^@`````D$``!/`;_\#P#__`TQ@`C/`+__-^E
+M`"``!C0X-,8``31C`",`!C;X-$(`"33&`!```QK\_,4``#1C`/C<9`````(4
+M>-^D`"AD0H`+``(7.#1"``C\1```9$?_^-^E`##<9``````@+?Q%__@``"@M
+MW&(``-^B`#C\P@`HW&(``-^B`$#\P@`@W&(``/S@`$#<8@``#`$_```````,
+M`3],```@+0````\2X``%W[\`P#P$$`T,`G]Z9(3H.-^_`,`"`!`MW[X`N-^W
+M`+#?M@"HW[4`H-^T`)C?LP"0W[(`B-^Q`(#?L`!X`^``"&>]`,@`````#`)_
+M>F2$Y_@(`<.L``````@!PZ4``*`M"`'#=```&"T\!!`-)!```0P"?WIDA.>X
+M"`'#M3P&__```+@M"`'#M```@"W_JP!0```@+0P`MUC_H@!PWJ-8T-^K`%#?
+MJ0!P"`'#6=^G`&@\`O_P<(08\C1"`",``A0X-$(`!0`"%O@T0@"8`()0+=U"
+M```00``2`````/^C`%@D!``R_Z4`8/^G`&C_J0!P#`'"5O^J`%#?HP!8WZ4`
+M8-^G`&C<8@``WZD`<!1`_K_?J@!0W4(``!1`__```!`M"`'"XP``&"W<8@``
+M$$#^J`````#_IP!H)`0`,@P!PE;_J0!PWZ,`&-^G`&C?J0!PW'0``!:`_IW?
+MHP!(W&(``!1`__0``*`M"`'"TWZ'.`7_IP`(_ZD`<"0&``+_M```#`"Y-`.@
+M."W?J0!P"`'#>@!`("T`````D(,`$!!@`!P`````W((`&'Q&%@(0P``<?$5Z
+M`B2E__@D!@`!?**Z!@`&,CS\@@`89&3__V3&__@0@``/)`?__P!&$"UDA/__
+M?$(X`1!```,``!@M`$`8+7SC_\;<8@``?$5Z`@`%*``DI?_X?**Z!A2`__/\
+M8@`````!3P/@``@``!`M`````#P&%`!\1Q["W,8^R``'.?@P2`!_`.@X+0#E
+M."UDQ@`($.;_W22E__@#X``(```0+6>]__#_L```/!`4`/^_``AF$#Z8?`0`
+M.PP`R-Y\A`G#W@8`.!3```8\!Q`+W[\`"```$"W?L````^``"&>]`!".!``L
+MW@4`,`P!'(IDYSR(W@8`4!#`__;?OP`(C@0`1#P'$`W>!0!(#`$<BF3GZ&#?
+MOP`(W[``````$"T#X``(9[T`$`````!GO?_X_[\```P!Q'(`````/`,4`"0+
+M``'<93Z89&(^F-Q&``C<1``PW$D`0&2G``B,2@`D9,@`"``$(/H`!2CZ``8P
+M^@`'.?H,`4)\``A!^M^_`````!`M`^``"&>]``AGO?^X_[8`,/^U`"C_M``@
+M_[$`"`"`B"W_L```?C4Z`_^_`$`R-@#__[<`.'XT#`/_LP`8#`$[QO^R`!``
+M0(`M)`(`WA*B``4"("`M?!0`.S(V`/]^E`G#`B`@+0P!."@``"@M`$"8+20"
+M__\2`@`H)`,``2K$``,D`@`0)A#__P!$&`LD$O__`&"X+0(`*"T2$@`,`B`@
+M+0P!$\8F$/__$$#_^P(`*"T"8"@M#`$>O`*`("T"=Y@A`@`H+182__8"("`M
+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
+M`^``"`````!GO?_`_[,`&#"3`/__M``@`F`@+?^_`#@`$Z;X_[8`,/^U`"C_
+ML@`0_[$`"`P!.\;_L```/`/_\#1C`",``QPX-&,``0`#'O@T8P?X?H,B"B0#
+M__\00P"O`````,B!`*T`````)`0`0!!$`(\``!@M/`;__"0%__\TQ@`)`$4H
+M%``&-'@`!2@G9,:`"S)P``$`!C<X,*4`#P`0)O@TQ@`(/`?_\`"&0"TTYP`C
+M?*,8!_T#``!DQO_X``<:_`"&("TT8P#XW&<``/R%``#<8P``&$``BSP#__`\
+M!?_\-&,`(S2E``D``QPX``4L>#1C``%DI8`+/`G_\``#'O@U*0`C``4O.#1C
+M`!@`"4K\-*4`2``0AC@"@Q@M``"(+20/``$D!@$8-2D`^`@!T*9DKO_8)`Q.
+M(/QL`B`19@`@)`M*./QK`C`1!@`B`````/U'``!D8P@`W2@``/R'``#=)```
+M$B(`(P````#<:```,B0``P"0("UD:P(@``0@^&1M`C!]Z#&'?&R2`OQH````
+MA5`M)`<`&`".("U]:Y("?:B2`A6&_^,F,0`!W2P``"0,3B#\;`(@%6;_XB0+
+M2CC=*P``)`M*./QK`C`5!O_@`````-TH``!D8P@`_4<``-TH``#\AP``W20`
+M`!8B_]\`````/!#_\#P6__`V$``C-M8`(P`0A#@"8"`M-A```0!`*"T`$(;X
+M`!:R_`P!."0V$``0`I"`+0``D"TD%0`!)!0!&`@!T-PVU@#X$E$`$&80"``"
+M0"@M#`$X*`)@("TF4@`!#`$_3`!`("W>`@``?@.2`GZB``?^`@``%'3_\P``
+M``#>P@``%E'_\F80"````!`MW[\`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`
+M"-^P```#X``(9[T`0#P&__PR<``!-,8`"3P#__``!C1X`!`N^&3&@`LT8P`C
+M``8W."0$``\TQ@`(``,:_`"F."UDQO_X_.0``#1C`/C<9P```*8H+?RD``#<
+M8P``"`'0@CP#__`"8"`M#`$X)`!`*"T(`=#L```0+0@!T.PD`O__`````&>]
+M_^C_OP`0_[$`"/^P```,`3AF`("`+0(`("T,`3AZ`$"(+3P#__QR,0;R-&,`
+M"0`#''AD8X`+``,?.#1C`$!^(XH*?C$8`S(Q`/\`41`'R$``!]^_`!`\`@`,
+MW[$`"#1"`^C?L````^``"&>]`!@,`/6"`@`@+=^_`!#?L0`(W[````/@``AG
+MO0`8`````&>]_^C_L0`(`("(+?^_`!`,`3AZ_[```!!```W?OP`0)`0``20#
+M``%\D)S')`(#Z'QPE(??L0`(?%"(!P(`$"W?L````^``"&>]`!@`````#`'1
+M%`(@("W?OP`0W[$`"`!`@"U\0H@#?@0$PWX#!(-\D)S'``(0`'QPE(=\4(@'
+M`@`0+=^P```#X``(9[T`&&>]_NC_OP$0_Z4`F/^W`0#_M@#X_[``R`"`@"W_
+MO@$(_[4`\/^T`.C_LP#@_[(`V`P!.&;_L0#0`@`@+0P!.'H`0+`M#`&72@!`
+MN"TD`P`!E$(`P!!#`4`\%?_P/`+__#:U`",`%B0X`!6L.#1"``DVM0`!`)<@
+M+0`$(O@``A1X`!6N^#+'``'_I`"0`(!`+0+C&`1D0H`+-K4`$``')O@!%:@M
+M``(7.``#0"<`@A`MKZ@`N#P3__S_IP#`/!+_\-ZG```V<P`)W$0``#92`"/_
+MH@"``!.<>/^C`*``0!@MCZ(`N``2DOS_IP"P9G.`!392`/@``"@M`((0)"0&
+M`(#\8@```Z`@+=Y"```,`F9@`!.?.-^T`+`#H(@M``#P+0@!T;HV<P`(#`%L
+M&``````\!/_\-(0`"0`$)'@`7A`A9(2`!2?>``'^8@````0G.-Y#```TA!`(
+MW(,``'X#8<=\0S`'_B,``'P#Y4;\@P``9C$`"-Y"```,`6P>`@`@+0/"$"H4
+M0/_H`@`@+3P"__``%H[XCZ<`N#1"`"/?J`"@``(4.#1"``$``A;X-$($R`(B
+MB"W>)0``?B:2`O^F`*A\HQD#`*`0+?^E`(@``Q@``.,8)'QB.0=\0QH#``,8
+M``$#&"5\8EH'_B(``"0"`1@0P@$J/`+_\``6$,`\$_^``%<0(39S`1\``A(`
+M`!.:/-XC```D0@B`-G,`"/YB``!\%O@[#`"W4B0$``,D`R<0/`4AC69D`>!P
+M0Q`#-*7O00`%+#@TI6O;``4L>#2E--L`10`=W((`````*!`P0@`'``(0```%
+M++H00``0`+8H+7P"^#L`HA`K%$``#`````!\`_@[9&,`9'P"^#L`0Q`K%$#_
+M_0````#<@@``,$(`!P`"$``40/_R`````'P3^#L,`+=2)`0``R0#)Q`\!2&-
+M/`3_@'!#$`,TI>]!``4L.#2$`1\TI6O;``0B/``%+'@TA`'H-*4TVP!%`!W<
+M@@`````H$#!"``\``A````4LNA!``!``LR@M?`+X.P"B$"L40``,`````'P#
+M^#MD8P!D?`+X.P!#$"L40/_]`````-R"```P0@`/``(0`!1`__(`````?!0`
+M!WZSD@+^M```)`(!&!)B`,L\`O_PWZ,`F-ZB``!\8@3#``(4^!!``(??J`"8
+MWZ<`F'SC!(-\=!"'?1Z(`R0#``H3PP"'WZ<`P"0#`&03PP#0WZ<`P#P%__`T
+MI0`C,N,``]^H`)``!2PX``<T.#2E``$`PS`M``4N^#P'__`TI0((-.<`(P`&
+M,O@D`P`!`,4P+?S#``!DI``8``<J_`$$("U\=!C'-*4`^-RF```D!P(`?'0(
+M1WR&D@+\AP``)`,!&!##`-X`````/`/_\"0$(`#?IP"0-&,`(P`#'#@T8P`!
+M``,>^#1C`B@`XQ@M_&0``'QCD@(D!`$8$&0`@CP#__#>HP``)`,!&/ZT```2
+M8P"&/`/_\!!```K?J`"`/`+_\-^G`*`T0@`C``(2_-T#```T0@#X`&<8)?T#
+M``#<0@``/![__#P7__`WW@`)-O<`(P`>]'@`%[K\9]Z`!0.@L"T`'O<X``"0
+M+3?>``@(`=*<-O<`^``````,`6P8`````#P$__PTA``)`%(0(0`$)'C_P@``
+M9(*`!=[%`````A<XWN0``#1"$`@F4@`!9M8`"/Q%``#>X@``#`%L'@(`("T"
+M0A`J%$#_[`(`("W?J`"()`(!&-^C`*C^*```$&(`8SP"__#?IP"P)`(!&'ST
+M``?^M```%F(`!]^_`1`\`O_P-$(`(P`"$OPT0@#XW$(``-^_`1```!`MW[X!
+M"-^W`0#?M@#XW[4`\-^T`.C?LP#@W[(`V-^Q`-#?L`#(`^``"&>]`1@D`P`!
+M?'00AR0#``I]'H@#%\/_?20#`&3?IP#`/`3_\#2$`",RXP`#``0D.#P&__``
+M!RPX-(0``=^H`)``HR@M``0F^#3&`",TA`((``4J^`"D*"UD@P`8``8B_"0&
+M`#+\I@```0,8+32$`/@D!@!`W(4``'P4&,?\9@``?&62`B0#`1@0HP`N?!0(
+M1SP#__`D!`$8WZ<`D#1C`",``QPX-&,``0`#'O@T8P(H`.,8+?Q@``!\8Y("
+M%&3_@#P#__`T8P`C``,:_#1C`/C<8P``WJ,``"0#`1C^M```%F/_?#P#__`T
+M8P`C``,:_#1C`/@(`=)SW&,``#1"`",``A+\-$(`^-Q"```(`=(TWZ,`F#1"
+M`",``A+\-$(`^-Q"```(`=';`!80P#1"`",``A+\-$(`^-Q"```(`=*HWZ<`
+ML-R#```(`=+C/`/_\#P#__`T8P`C,N0``P`#'#@\!O_P``<L.#1C``'?J`"0
+M`*0H+0`#'O@TQ@`C-&,""``%*O@`HR@M9&0`&``&&OPD!@`%_*8```$$("TT
+M8P#X)`8`0-QE``!\%!C'_(8``'R%D@(D!`$8$*0`$WP4"$<\`__P)`0!&-^H
+M`)`T8P`C``,<.#1C``$``Q[X-&,"*`$#&"W\8```?&.2`A1D_S0\`__P"`'2
+M\#1C`"/<HP``"`'283P#__#<8P``"`'3+SP#__``````9[W_V/^_`"#_LP`8
+M`,"8+?^R`!``@)`M_[$`"/^P```,`3AF`*"`+0)`("T,`3AZ`$"(+3P%__`T
+MI0`C`$`@+0`%+#@`$10X-*4``0!$$"T`!2[X``(2^#2E`!`R,0`!`$4X+=SC
+M```P:0`!$@``)7P#``<`$30X,(H``P#*4"T\"/_P``I2^&2F`A`U"``C9*4!
+M^`%%*"T`"$+\)`H``0!&,"W\J@``-04`^-RH```D"@(`_,H``'S(D@(D!@`'
+M?,,81R0&`1@1!@!E`````#P%__`TI0`C``4L.#2E``$`!2[X-*4"*`!%$"TD
+M!2``_$4``'Q"D@(D!0$8$$4`4CP"__#\XP``?.*2`B0%`1@010!'/`7_\#P(
+M__P`$8[X-0@`"20%``$`"$1X`(4H!&4(@`L`"$<X-0@`0`(H0"W=!```$@``
+M-C"&``\`IC`E?,08!Q)@`"Y\AAD#`*8P)7S$.0?]!```/`3_\#2$`",`!"+\
+M-(0`^-R&```2```2/`C__"0)``$U"``)``A$>&4(@`L`"$<X-0@`"`(H,"UE
+M"O_XW,@```(JB"T!!4`E_,@``-R&``#>)@```,4H)?XE``#<A```?2,`!_SC
+M```D`P$8%$,`!]^_`"`\`O_P-$(`(P`"$OPT0@#XW$(``-^_`"```!`MW[,`
+M&-^R`!#?L0`(W[````/@``AGO0`H``50)P%&,"0(`=.=?,0Y!P`%4"<!1C`D
+M"`'3F7S$&`<TI0`C``4J_#2E`/C<I0``"`'3BSP(__PT0@`C``(2_#1"`/C<
+M0@``"`'3A0````#<I0``/`7_\#2E`",`!2PX-*4``0`%+O@TI0(H`$40+20%
+M(`#\10``?$*2`B0%`1@41?^</`+_\`@!T]<T0@`C9[W_^/^_```,`+.(````
+M`!!```@\!!`-W$(``!!```7?OP``)`/__WQB_\8#X``(9[T`"#P&$`T\!Q`-
+M9(3PZ"0%`&1DQO&8#`)>FF3G\2@\!!`-9[W_^/^_```,`=/L9(3Q0#P#%"AD
+M9$H@_((`"&A$``@\`A0H_$1*.````4\D`@`!K&)*(````4_?OP```^``"&>]
+M``AGO?_P_[````"`@"W_OP`(/`00#0P!T^QDA/%89@,`!#P$%"@`$"M```,8
+M^&2$2B``11`M`&08+1!``![\8@``_$``$"0%`_G\10`()`4``0`%*WS\10``
+MW&4``&2E`%#\10`P_$4`./Q%`"#\10`8W&4``&2E(`#\10`H```!3Z^`@(``
+M``%/W((`"&80``+<8P```!"`^/^"@U``4!`M_$,``-^_``C?L````^``"&>]
+M`!`\!!`-/`80#3P'$`UDA/#H)`4`=F3&\;`,`EZ:9.?Q:`````!`(D@'?`))
+MQS1"`P`#X``(0*)(!P````!GO?_0_[$`"#P1%"B.(DH@_[\`*/^T`"#_LP`8
+M_[(`$!!``#7_L```CX*`@!!```0`````?`0`.PP!U!(`````?`0`.P"`H"T`
+M@)`M0#-P`&20``1F,4H@`!"`^'XP@@K>`@`8$$``*`````#>`P`H$$,`'0``
+M``#>`@`PK%,`!*Q2``#>!``0W@,`,-^"@U!DA``!_@0`$&1C``C^`P`8_@,`
+M,````4\D`P`!<$,`&0```4_>(P`8)`+__P`"%_P`0Q`O0*+(`=^_`"C?M``@
+MW[,`&-^R`!#?L0`(W[````/@``AGO0`PW@(`./X"`#`(`=1M_@(`&`P!U```
+M````"`'468^"@(#>`@`H%$#_V@`````,`=0```````P!U!("@"`M"`'4:=X"
+M`!@`````9[W_V/^R`!`\$@$`_[,`&'S2^`;_L0`(`("8+?^_`"``H(@M_[``
+M`'RRN`=\$/@[#`"W4B0$``,D`R<0/`0AC7!#,`,TA.]!``0D.#P"__`TA&O;
+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
+M/`84*'Q%Z`<``$@M``<Y."0#`!MDQDP`)`S__R0+``L``````,D0+0```4__
+MH@``<$!0GP```4\10``L`````-SD```0I``LW[\`*````4]P3``8```!3R1C
+M__]DY__P%&O_\&4I__P\!!`-`E&(+62$]<@,`G]Z`!&(^#P"__`T0@`C`!`9
+M>``"%#@`<!@M-$(`&0)#&"T``A;X9&,`$#1"`8```QBX?B(2"CP"%"AD0DO`
+M`$,0+61$``0```%/)`/__G"#`!@```%/W[\`*```$"W?L@`@W[$`&-^P`!`#
+MX``(9[T`,`````#\Y0``W.(``-^_`"@D`@`C``,@@P`"$OS?L@`@?()2!M^Q
+M`!A\8AB&W[``$'VB"`4#X``(9[T`,`(`*"UDA/4(#`)^O`%`,"T(`=FN```0
+M+3P$$`T"`"@M9(3U4`P"?KP!H#`M"`'9K@``$"T`````/`+_@'R#$@(T0@$?
+M?(0(@@`#&+@``A#\`&08+31"%`$``R$X``(1>`""$"TD8__TW$8``#P$%"C<
+M0@``9(1+P``#&+A\PN@#`&08+0`"$`!D9P`$``(N0P`"%`-P0@"R<*4`\@"B
+M*"4```%/)`+__W#B`!@```%/?,,1PCP&__```SEX-,8`(P#C$"T`!C0X`*(0
+M+7!C#7(TQ@`99$(`$`"C*"T`!C;X``(0N#3&`8``1!`M``4H^'RF*@ID1``$
+M```!3R0#__YP@P`8```!3P/@``@``!`M9[W_N"0"____LP`H`4"8+?^R`"`!
+M()`M_[$`&`#`B"W_L``0`("`+?^_`$#_M0`X$,(`*?^T`#``"!8``*`8+0!)
+M$"$`X%@M?$+X`P$`J"W_H@``)`(`!/^B``@D!0`&```P+20'``8``$`M`&!(
+M+0P!V60"(%`M$$``20!`H"T`$!'X`!`8N`!B&"T\`A0H9$)+P'Q#$`KH0``I
+M`H`0+20#__]\8O_&`H`@+:Q3```D!0`$W[\`0-^U`#C?M``PW[,`*-^R`"#?
+ML0`8W[``$`@!VDQGO0!(``01^``$&+@`8A@M/`(4*&1"2\!\0Q`*R$``"-^_
+M`$``@"@M/`00#62$]?@!(#`M#`)^O`%`."W?OP!``@`@+=^U`#@"0"@MW[0`
+M,`)@,"W?L@`@W[,`*-^Q`!C?L``0"`'4FF>]`$@\!!`-`@`H+62$]B`"(#`M
+M`J`X+0)`0"T,`GZ\`F!(+0*`$"TD`___`H`@+7QB_\8D!0`$K%,``-^_`$#?
+MM0`XW[0`,-^S`"C?L@`@W[$`&-^P`!`(`=I,9[T`2`````#?OP!`)`+__]^U
+M`#C?M``PW[,`*-^R`"#?L0`8W[``$`/@``AGO0!(9[W_H"0"____M``P`2"@
+M+?^S`"@!0)@M_[$`&`#`B"W_L``0`("`+?^_`%C_O@!0_[<`2/^V`$#_M0`X
+M$,(`7/^R`"``"!8``*`8+0!)$"$`X%@M?$+X`P$`\"W_H@``)`(`!/^B``@D
+M!0`&```P+20'``8``$`M`&!(+0P!V60"(%`M$$``7@!`D"T`$+BX`!"Q^#P5
+M%"@"]A`M9K5+P'ZB$`KH0``L)`/__P)`$"U\8O_&`D`@+8Q"```D!0`$`O:P
+M+0``B"T,`=I,KF(``'ZVJ`KJH``.`````-^_`%@"(!`MW[X`4-^W`$C?M@!`
+MW[4`.-^T`##?LP`HW[(`(-^Q`!C?L``0`^``"&>]`&".90``/`00#0P"?KQD
+MA/;0W[\`6-^^`%`"(!`MW[<`2-^V`$#?M0`XW[0`,-^S`"C?L@`@W[$`&-^P
+M`!`#X``(9[T`8``````\!!`-`B`P+0(`*"UDA/:0`\`X+0P"?KP"@$`M)`/_
+M_P)`$"T"0"`M?&+_QB0%``2,0@```O:P+0``B"T,`=I,KF(``'ZVJ`K*H/_/
+MW[\`6`@!VSF.90```2`H+0P!U1@!0#`M%$#_QP!`B"T`$!'X`!`8N`!B&"T\
+M`A0H9$)+P'Q#$`K(0/^_/`00#8YG``!DA/9H`@`H+0P"?KP"@#`M"`';+-^_
+M`%@(`=LK)!'__V>]_[``!!"X_[``"#P0%"C_MP!`9A!-T/^V`#@`4(`M_[4`
+M,`"@N"W_M``H`,"P+?^S`"``X*@M_[(`&`$`H"W_L0`0`2"8+?^_`$@`@(@M
+M`4"0+<("```40/_^)`(``>("```00/_[``````P!VH*OH````B`@+0+@*"T"
+MP#`M`J`X+0*`0"T"8$@M#`':]`.@4"V/H@``<%*0*P`2$",```%/K@``````
+M`4_?OP!(W[<`0-^V`#C?M0`PW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`
+M4&>]__``!!"X_[```#P0%"C_OP`(9A!-T`!0@"W"`@``%$#__B0"``'B`@``
+M$$#_^P`````,`=KT`````````4^N```````!3]^_``@``!`MW[````/@``AG
+MO0`0`````&>]_^@``"@M)`;__P``."T``$`M)`D!0"0*``/_L``(_[\`$`P!
+MVW8`@(`M%$``%P(`("T``"@M)`;__P``."T``$`M)`D!1`P!VZP#H%`M%$``
+M#]^_`!"/H@```@`@+0``*"TD!O__```X+0``0"TD"0%$!$``"@.@4"T,`=NL
+M`````!!`__6/H@``W[\`$"0"___?L``(`^``"&>]`!@\`__P)@0``C1C`",\
+M`O_P``,<N'"$"/(T8P`#-$(`(P`#'G@``A+\-&,6P#1"`/@`@R`M)`,``?R#
+M``#<0@``?`/X.V1C``I\`O@[`$,0*Q1`__T`````_(```#P#__#?OP`0-&,`
+M(]^P``@``QK\-&,`^-QC```#X``(9[T`&&>]_]C_L``0`*"`+?^_`"`0H`!=
+M_[$`&``$(``,`3AF`,"(+0P!.PX`0"`M)`,`"@`"$``40P!5W[\`(-X#```2
+M(``/?&(X`1!```0``!@M`$`8+20"__]\0__&WB0`````$"W\9```W[\`(-^Q
+M`!C?L``0`^``"&>]`"@`````$$``1R0$__\`0#`M?(;_QMS&``!D1``(?(0X
+M`0`"$?I\@S@%``0Y^@`#*CX``T0^,*4`_S$(`/]]!7H$`$<0*_^F````!2@`
+M)*7_^'RCN@800``&_@,``'QB'L(``A``)$(``7Q#]L;^`P``$(``+B0"__\`
+M@!@M?$/_QM^E`````!`MW&0``'RE#X)\I/^&_&0``-^E``!\I0="?*3O1OQD
+M``#?I0``?*4'`GRDYP;\9```WZ4``'RE'@)\I-X&_&0``-^E``!\I7H"?*2Z
+M!OQD``#?I0``?*4(@GRD&(8D!0`!?`0Y!GP$"`9\I`@'_&0``-^_`"#?L0`8
+MW[``$`/@``AGO0`HW[\`("0"___?L0`8W[``$`/@``AGO0`H"`'<,```,"T(
+M`=Q+```8+3P$__`\!10HD*9.`#2$`",`!"+\)`(0#S2$%0#\@@```(`8+=R"
+MZ_@TP@`$"`'<B*"B3@``````R$P`!7Q"!$/<8@``%$#__`````!\0@1#``(0
+M`!1```4\`O_PD*).`#1"``B@HDX`/`+_\&2C3@"09``$-$(`(P`"$OPT0A00
+MW$(``#2$``B@9``$?$0.@Q2```<\!O_P^$(`620"@`&0HDX`-$(`$*"B3@`\
+M!O_P)`P!`S3&`",`#&:X``8R_"0)__\TQA00``E(O-S$```D`A`+D*A.`&3'
+M`/"0:@`!`(Q@)`#@("T!B6`M-0L`()!I``(!;$`*_,(`\"0"_^(!0C`EW.+K
+M^#$(`/\U(@`"-0@`0:!F``&@8@`""`'<Q*"H3@``````R$P`!7Q"!(/<@@``
+M%$#__`````!\0@2#``(0`!1```0`````D&(``C1"``B@8@`"D&(``SP%`/\T
+MI?\_)`?_P$`$>```A2@D/`3_\C2$;?XT1@`#`*0H(31"`!,`13`*/`3_\#2$
+M`",D`A`0``0B_`#`*"TTA!4`D&8`!``%*`#\@@```*<H)=R"Z_B@90`#-,(`
+M=P@!W.R@8@`$`````,A,``0`````W((``!1`__P`````D&0`!7Q"!8,``A``
+M-(4`!`"B(`H`!"``-(0`6P/@``B@9``%``(4N#1"8`$``A>XW$(``.A)_Z20
+MHDX`"`'<I#P&__!GO?_X`(`P+2R"``,00``*_[\``).#@U@D`@`!`((P!```
+M$"T`PS`EHX:#6-^_```#X``(9[T`"#P$$`T\!1`-9(3V\&2E]T`,`GZ\)`<`
+M`P@!W0LD`O__9[W_^`"`,"TL@@`#$$``#/^_``"3@X-8)`(``0"",`0``!`M
+M``8P)P##,"2CAH-8W[\```/@``AGO0`(`````#P$$`T\!1`-9(3V\&2E]U`,
+M`GZ\)`<``P@!W2(D`O__9[W_^/^_```,`9=*`````!!```??OP``C$,`J'P"
+M`#L08@`$```@+0/@``AGO0`(```@+0@!W0!GO0`(`````&>]__@`!!C[_[\`
+M`"AE``@0H``),((`!V>$@UA\@QF*`$,0!S!"``'?OP```^``"&>]``@`````
+M`(`H+3P$$`T,`GZ\9(3W&`@!W4@D`O__/`/_\"0"$``T8P`C?((X!P`#(OPT
+MA!4`_((```"`&"W<@NOX"`'=8```````````R$P`!`````#<8@``%$#__```
+M```#X``(?$(\`P`````\`@(-9[W_Z#1"`@#_L````("`+?^_`!`0@@`__[$`
+M"#P#``TT8Y<"$(,`;7R&>@`\`@`-``8R`#1"`P``PA`K%$``6SP"`0!\!,`$
+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
+M)`4`"MR"``#>8@``$J4`,B0%`&02I0`Z)`4``7RB*`<\!?_P)`8``?YB```T
+MI0`C)`(``P`%*OPTI0#X?$,I!]RB`````!`M_@,``'S#``?<IP``_@,``-RC
+M``#<@P``?,,(1_R#``!\PQ"'W*8``-R&``#\@P``W*,``-R#``#?OP`XW[8`
+M,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!`)`0`9'Q#$(=^HH@#
+M``(0`!1$_[<D!`/H?`,(1R0"``%\`QC'?`-"!P@!X.Q\0S&')`4`,@@!X05\
+MHB@')`(``7P#0@=\0PA'?$,8QWQB`(,(`>#L?$,QAR0%``4(`>$%?*(H!SP$
+M$`T"("@M#`)^O&2$`%@(`>$=)`+__P`$&@,D`@#>,&,`_Q!B``P`````?`,`
+M.S""`/]\9`G#)$(``0`$('@`@B`M/`(4```$(+AD0CYH`^``"'Q$$`HP@@#_
+M?(0,`R1"``$`!"!X`((@+3P"%```!""X9$(^:`/@``A\1!`*`^``"``````\
+M`HB(/`/_\#1"B(DT8P`C<*(0`P`#'O@`!4_#-&,4`22G``$``QPX-&,`6'"$
+M`[(`@U`M9&@`"#P+__``B$`M``(0/S5K`",`11`A``LJ_``"$,,TI0#X`$D0
+M(V1I`!``XA`A`(D@+2A'```D0P`'`$<8"@!@."T``A_#``,?0@`'.,,`8A`A
+M,.D`/_U)```P0@`'W*4```!#$"/=!0``W(,``.C@``,`8$@M)`<``7SE0<<L
+M1P`($.``"SP'$`UP0OCR9.<`B'SB$@H`0``(``````````!\"1B&`2`8+7S#
+M!L4`````_04``#P"__`T0@`C``(2_#1"`/C<10``_(,``-Q"```#X``(````
+M`#P"__!\"=9'-$(`(P$@&"W]!0````(2_#1"`/A\P[R'W$4``/R#``#<0@``
+M`^``"```````````/`+_\'P%0<<T0@`C?,4H!_T%`````A+\-$(`^-Q%``#\
+M@P``W$(```/@``@`````/`+_\'P%C`<T0@`C?,5R1_T%`````A+\-$(`^-Q%
+M``#\@P``W$(```/@``@`````/`+_\'P%UD<T0@`C?,6\A_T%`````A+\-$(`
+M^-Q%``#\@P``W$(```/@``@`````/`+_\'P%&(8T0@`C?,4&Q?T%`````A+\
+M-$(`^-Q%``#\@P``W$(```/@``@`````/`+_\'P)0<<T0@`C`2`8+?T%````
+M`A+\-$(`^'S#*`?<10``_(,``-Q"```#X``(```````````\`O_P?`F,!S1"
+M`",!(!@M_04````"$OPT0@#X?,-R1]Q%``#\@P``W$(```/@``@`````````
+M`"0#``\`!3?#`*,`&@!@`?0\`XB(-&.(B0`$03L``#@0<*,0`R3C``$``C@_
+M)`(``0#E."$`!SC#`.8X(P`'.0`08@`9`.,X(3#C`?\\!__P-.<`(SP&__``
+M!S[X<(0"\C3G%`$`@R`M-,8`(P`'/#@PHP#_,0(``P`&,OP`!"#X-.40```"
+M$3PTQ@#X`(4@+0!&,"4`@A`E_$,``-S"```#X``(`````#P#__`DYO__-&,`
+M(W"$`O(``Q[X,,8!_S1C%`$Q`@`#``,<.`#$0"T\!O_P-&,0```(0/@TQ@`C
+M``(1/`$#0"T`!C+\)`,``0`#&#P!`D`E_0,``#3&`/@`1C`EW,,``##C`?\\
+M!__P`(,@+33G`",PHP#_``<^^``$(/@TYQ0!``<\.#3E$```A2`M`((0)?Q#
+M``#<P@```^``"``````(`>(``````#P#B(@`!3?#-&.(B20'``%PHQ@#``01
+M.P`#&#\`91@A``,8PP!F&",``S$``,,8(P"C&",D8P`!$&<`&0##,"$PPP'_
+M/`;_\#3&`",\!__P``8VN'"$`O(TQ@H!`(,@+33G`",`!C1X,*,`_S!"``,`
+M!SK\``0@^#3%$````A$\-.<`^`"%("T`1S@E`((0)?Q#``#<X@```^``"```
+M```\`__P),C__S1C`"-PA`+R``,>N#$(`?\T8PH!`01`+0`#''@\!__P-&,0
+M`#!"``,`"$#X-.<`(P`"$3P!`T`M``<Z_"0#``$``Q@\`0)`)?T#```TYP#X
+M`$<X)=SC```PPP'_/`;_\`"#("TTQ@`C,*,`_P`&-K@`!"#X-,8*`0`&-'@T
+MQ1```(4@+0""$"7\0P``W.(```/@``@`````/`*(B#P#__`T0HB)-&,`(W"B
+M$`,``QZX``5/PS1C"@$DIP`!``,<>#1C`*!PA`.R`(-0+61H``@\"__P`(A`
+M+0`"$#\U:P`C`$40(0`+*OP``A##-*4`^`!)$"-D:0`0`.(0(0")("TH1P``
+M)$,`!P!'&`H`8#@M``(?PP`#'T(`!SC#`&(0(3#I`#_]20``,$(`!]RE````
+M0Q`CW04``-R#``#HX``#`&!(+20'``%\Y4''+$<`"!#@``L\!Q`-<$+X\F3G
+M`,A\XA(*`$``"```````````?`D8A@$@&"U\PP[%`````/T%```\`O_P-$(`
+M(P`"$OPT0@#XW$4``/R#``#<0@```^``"``````\`O_P?`G61S1"`",!(!@M
+M_04````"$OPT0@#X?,/$A]Q%``#\@P``W$(```/@``@``````````#P"__!\
+M!4''-$(`(WS%,`?]!0````(2_#1"`/C<10``_(,``-Q"```#X``(`````#P"
+M__!\!8P'-$(`(WS%>D?]!0````(2_#1"`/C<10``_(,``-Q"```#X``(````
+M`#P"__!\!=9'-$(`(WS%Q(?]!0````(2_#1"`/C<10``_(,``-Q"```#X``(
+M`````#P"__!\!1B&-$(`(WS%#L7]!0````(2_#1"`/C<10``_(,``-Q"```#
+MX``(`````#P"__!\"4''-$(`(P$@&"W]!0````(2_#1"`/A\PS`'W$4``/R#
+M``#<0@```^``"```````````/`+_\'P)C`<T0@`C`2`8+?T%`````A+\-$(`
+M^'S#>D?<10``_(,``-Q"```#X``(```````````(`>)4``````/@``@``!`M
+M"`%`/@````!GO?^0_[\`:/^^`&#_MP!8_[8`4/^U`$C_M`!`_[,`./^R`##_
+ML0`H#`$X9O^P`"`D`P#>?$0Z`Q"#`,Y\4PP#,$(`__^B``A\$P`[?G,)P]^B
+M``@\$B&--E+O00`3('@`$I0X`!.9/"1#``$\`O_P-$(`(S!V``$``A:X`!:S
+M@#1""@$\%/_P``(4>#92:]LT0@`(-I0`(V11``@"PA`M`(,8+0!3@"4\`A0`
+M`M&(+0`2E'@`%*+\``.H>&1"/HC_M@```C.()?^@`!`D'@#(-E(TVS:4`/@"
+MHJ@M`````-X7``#>(@``,N/__Q1@`"P`````)`,`!`)T$"7^(P``EJ,``-Q$
+M``!\=W@'?!>$!_X7``#<0@``?!;X.PP`MU(D!``#``(8>``"$/@`8A`M``(8
+MN`!#&"T`<@`=```8$``#'+H`=A@M?`+X.P!#$"L40/_]`````"?>__\7P/_@
+M`````.KT`'8\`O_PW[\`:```$"W?O@!@W[<`6-^V`%#?M0!(W[0`0-^S`#C?
+ML@`PW[$`*-^P`"`#X``(9[T`<.KP`"``````R$(`""0#``D"=!`E_B,``-Q#
+M```D`P`!?'>$!_X7``#<0@``?!;X.PP`MU(D!``#``(8>``"$/@`8A`M``(8
+MN`!#&"T`<@`=```8$``#'+H`=A@M`````'P"^#L`0Q`K%$#__0`````GWO__
+M%\#_L@`````(`>.A`````.A``#P`````ZO0`%@````#(0P`4WZ4``#P$__`T
+MA``C`(`0+0`$)O@TA!0!``(2_``$)#@T0@#X-(0`"`)B$"4`I+`M`M.8)=YD
+M``#>!@``?(0%`P#`N"U\EZ4'_A<``-Q"``#_HP`8)`0`!PP!O?P``"@MWZ(`
+M"-^E`!`D1``")`(``WQ%G(<,`8S$_Z4`$-^C`!@\!`>D``(1@#2$3&MP1"`#
+M``(7PW!@&"S?OP!HW[X`8-^W`%C?M@!0W[4`2``$('_?M`!``((0(W!#$`/?
+MHP`0W[,`.-^R`##?L0`HW[``(&>]`'!\0X@'`^``"`!@$"T\`O_P?!>`!_X7
+M```T0@`C``(2_#1"`/@"8A`EW$(``,KT_XP\`O_P?!>E!S1"`",D!``'``(2
+M_```*"W^%P``-$(`^`)BF"7>8@``#`&]_``````(`>.DW[\`:#!"`/\(`>-<
+M_Z(`"`/@``@``!`M9[W[N/^R!#`\$A0`_[,$.&92/FC_L00H)!,``O^_!$``
+M`(@M_[`$((Y0```#H"`M```H+0P"9F``$#"X&@``"`.@&"T``!`M`@`H+0``
+M``"L8@``)$(``11%__UD8P`$`B`@+6>E!``F,0`!9E(`!*^P!`BOH`08#`%`
+MKO^]!``6,__IW[\$0-^S!#C?L@0PW[$$*-^P!"`#X``(9[T$2`/@``@D`O__
+M`^``"```$"UGO?_X_[\```P!.\8PA`#_W[\``"0"__\#X``(9[T`"&>]__C_
+MOP``#`$X9@````#?OP`````0+0/@``AGO0`(`^``"```$"T#X``(``````/@
+M``@D`O__`^``""0"__\#X``()`+__P/@``@D`O__`^``"```$"T#X``(```0
+M+0/@``@``!`M`^``"```$"T#X``(```0+0/@``@``!`M`^``"```$"T#X``(
+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
+M```H+0P"9F`D!@+&WZ,``"0"_\`D!/\``L`H+:!B`&8"P!@MWZ@`(*;$``(D
+M!``(HL(`!```$"VBR``!HL@`!9/&``7?JP`8WZH`$`@!ZK_?J0`(`````)/&
+M``4`1@`:`,`!]"1"``$``#@0H*<`!A1$__EDI0`!$N``"3$I`/\!5U`C````
+M```1$"LF,?__`$D0(:!B``X6*O_[9&,``0P"`X0!8"`M)`(ON'*B$`/>8T8`
+M`&(0+3P#`,0`8A`MD$.29A!@`#J@0)AP)`,``J!#F'$,`>;6`J`@+11`_P0`
+M0+`MWF-&`"0"+[ARHA`#`&(0+3P#`,0`8A`MH$"8>=J;_QJ@0)AX#`(%+@*@
+M("T00/\6`$"P+0P!Z/0"H"`MWD8`"'S&!L((`>F?``8V_"04``$0E/]*9OZ_
+M8*!4F'$"WO`M`'X8+<!B`&`40/_^)`(``>!B`&`00/_[`````#*U`/\,`?[$
+M`J`@+=YB1@``7O`M```!3Z_``&````%/WF)&`&;WE]@"U[`M`%80+0```4^L
+M5`!D```!3PP!\,`"H"`M"`'J0```````````)`,``0@!ZMV@0YAQ``````P!
+M[%("("`M"`'J!-^_`'#<@P`89[W_^```$"U\8T@!$&``!/^_````8!`M)`/_
+M_WQB_\;<0@`()`,`#GQ"-0(P0@#_$$,`&BA#``\48``(`````"A"`!$40``/
+MW[\``"0"__\#X``(9[T`"``````D`P`,%$/_^M^_```,`>EL`````-^_````
+M`!`M`^``"&>]``@`````#`()[@````#?OP`````0+0/@``AGO0`(#`'R&```
+M``#?OP`````0+0/@``AGO0`(9[W_D/^S`#@T$ZZ`<),8`_^R`#`\$A0`,(0`
+M/]Y"1@#_L0`H``"(+?^_`&C_O@!@_[<`6`!#&"W_M@!0_[4`2/^T`$#_L``@
+M%(``$XQT#00D%B^X/!4`Q'*6L`,`5A@M`J,8+9!DDF00@``,W[\`:)!CDF40
+M8``)`````&:DEY@"Q"`M`$0@+620`&".`P!T$&``#SP&``+?OP!H`B`0+=^^
+M`&#?MP!8W[8`4-^U`$C?M`!`W[,`.-^R`##?L0`HW[``(`/@``AGO0!P````
+M`#P%`*XTQJ&`)`,``7*&,`.B`R>8-*6$`"0)_X"B`">;)`C_PJ(`)YPD`P`.
+MH@,GG20*``>B"2>9)`<``Z(()YH`Q2@M`$40+0`'6'B010`J)`,`""0>``&@
+MA2?^D$P`*Z",)_^03``LH(PH`)!,`"V@C"@!D$P`+F1"`"J@C"@"D$(`!:""
+M*`,D`HC,I@(GI"0"``*B`B>F)`(`!*(*)Z>B`B>HD((G_J""*`F0@B?_H((H
+M"I""*`"@@B@+D((H`:""*`R0@B@"H((H#9""*`.@@B@.)`(`!*(")Z\D`@`#
+MH@HGL*(")[&0@B?^H((H$I"")_^@@B@3D((H`*""*!20@B@!H((H%9""*`*@
+M@B@6D((H`Z""*!<D`@`"H@(GN20"`'FB`B>[)`(`_J(")[XD`@`&H@LGN*(`
+M)[JB`">\H@`GO:(")[_>0D8`H@,GPR0#__^B`"?`H@DGP0!6$"VB""?"`J(0
+M+:(#)\2B`"?%H%Z7^````4^N'@!$```!3P```4^N'@!P```!3P```4^N!P!T
+M```!3SP"_X`T0@$I?`,`.P`"$CQ\8PG#?&(Y!MQ'```0X`!./`+_@"0$__\T
+M0@$I`."X+0`"$CQ\E__&?&(Y!MQ)```1(`!+`2!`+0``*"U\B/_&)`8`,/^C
+M`!@!`"`M_Z@`"/^I```,`F9@_Z<`$-^H``@`'B<\WZ,`&"0"``Y\1-4&_00`
+M"-Y*1@!P90HRK10`#-[H``C>Y````5:P+=[F`!`"MJ@MCJ*28'_("`9_QO_&
+M<%.8`P%34"V50@SF_N@`"/[F`!!\1%@&)`(`"O[D``"B``!"H@(`*J8``%#>
+MX@`(WZD``-[D`!@`0$`M?$8(`GP(>P9\0CB"?,@(!@"B*"4!`!`M?20X!8[J
+M``Q\HEB&_N0`&/[B``@```%/WZ<`$"0"``$\!/_```(3O#2$`+-\PIR&``0B
+M?'SB2`5\9#D&?*+M!GU$&04```%/_((```@!ZW'?OP!H/`00#201``$,`!>6
+M9(0!N`@!ZW'?OP!H_Z<`$#P$$`W_HP`8#``7EF2$`?#?IP`0?.=(`0```4_?
+MHP`8/`+_@#1"`2DD$0`!``(2/'QB.0;\1P``"`'K<=^_`&@`````-`.N@&>]
+M_^AP@Q@#_[```#P0%``PA``_W@)&`/^_`!#_L0`(`$,8+12``"^,<0T$)`4O
+MN#P#`,1R)2@#`$4@+0!D("V0A))D$(``)V1DEY@`I"`M`$00+61"`&",1`!T
+M$(``(M^_`!````%/K$``=````4_>!$8`9&*_8`"B$"T`@A`MP$0`8!2`__XD
+M!``!X$0`8!"`__L`````W@)&``!%*"TD`@`"`&48+9!CF'$08@`3,B0`_PP!
+M_L0`````)`(ON#P#`,-R(H@#W@)&`#1COV`"(X@M`%&(+0```4^N(`!@```!
+M3]^_`!#?L0`(W[````/@``AGO0`8``````P!^;(`````"`'L@R0"+[@\`@`"
+M9[W_\#1"H8!P@B`#/`(4`-Q"1@#_L````*"`+?^_``@`1"`M/`(`KP!$$"T,
+M`6P:C$2$`)8&`"@D!``!```8+0`$(KPP10/_?,1X!_P$@0#>!``@E@8`*'R'
+M2`$`!#@*)`0``7SC2`5\P_P&?(-[1OP#@0C^```@I@``*````4\\`Q08W&-7
+M>)!C``T`HQ@C+&0`@!"```4\!!08W(1(&'R#&8H48``I)`8`"0`"$H(\!@`!
+M/`,2%3!$`/_\9DR`+(8`!!#``"8\!A0D``0@^&3&MF!\Q"(*$(```V1C3(``
+M!1GX`(,8+20$__\``#`M_`2!$```("T```%/C&<`!(QH````Z$`J%0``%SP(
+M_^`D!P`!<&<`&#P#`"(T8P!1?&3Z!GQ$.09\!`@&?*3,!WP"\#L00/_^````
+M`/P$I`A\!HP&?`;_!@`&-S[?OP`(``80*]^P```#X``(9[T`$`@![-%D8TR`
+M``520#4(`%5P20DS``A"O#4(`%`!2$`M`2A`)=T)``!]*7@!``E``'TF>`4`
+MZ#@J$.#_WZQH``!\!HP&)`(`"0@![.E\1O\&`````&>]_Y#_L0`H`("(+?^P
+M`"#_OP!H_[X`8/^W`%C_M@!0_[4`2/^T`$#_LP`X_[(`,-R"`!A\0C@!$$``
+M!"00``XD`___?&+_QF10``[>(P``KZ```'QB6`(P10@`$*```P!`("TP0@_P
+M`$`@+0`#$[X\$A0`,$(P`"0#"@``1!`E`$`@+7P$(000@P!GWD5&`"0#"``0
+M0P"`)`,)`!1#`,8D$P#_/`(`Q`"B$"V,5)`$,I,`_S*4`/\D!B^X/`,`Q')F
+M,`,`IB@M`&4H+9"EDF40H`!")`(``61COV``P+`M``"H+3P7$`T`P_`MD@,`
+M`)('``$`8#`M``,8>G#&`C(08``/`.8P)20(``,0:`!`)`<`?Q!G`$YF`P`%
+M9,8``@(&@"V2`P``D@<``0!@,"T``QAZ<,8",A1@__0`YC`E%J``)CJB``$D
+M`B^X/`0`Q')B$`/>0T8``&(0+0""$"V00IAP$$``'#P0%``D!``!$$0`C20$
+M``(41``%)`(ON`P!]#8"@"`MW@-&`"0"+[@\!`#$<F*8`R0"``$`<Q@M`(,8
+M+:!@F'#?OP!HW[X`8-^W`%C?M@!0W[4`2-^T`$#?LP`XW[(`,-^Q`"C?L``@
+M`^``"&>]`'`ZH@`!W[\`:-^^`&#?MP!8W[8`4-^U`$C?M`!`W[,`.-^R`##?
+ML0`HW[``(`/@``AGO0!P`````)8$``(0@/_*`````&80``((`>T_`@:`+3P4
+M`#!\0AD#-I3D``!4H"T`%*"X?+2@"C*3`/\(`>TR,I0`_P````"2!``"HZ0`
+M`)($``.CI``!)`0;(9("``2CH@`"CZ(````"$@(01``^KZ(``#0$@,(01``+
+M/`4`Q&3&__T(`>T_`&:`+0`````\`@#$`*(0+8Q4D``RDP#_"`'M,C*4`/_>
+M0D8``%8@+0"D("V0A9)F$*``-SP'%`"0B)AQ)`4``A$%`!>2$``%H(68<0!>
+M$"W`1`!@%(#__B0$``'@1`!@$(#_^P````#_IP`0`H`@+?^C`!@,`?FR_Z8`
+M"-^G`!#<XD8``%X0+0```4^L0`!@```!3]SB1@#?I@`(WZ,`&#P$`,0`5A`M
+M`((0+20$``*@1)AP)A#_^"0"``0`4(`K%@#_SF3&__T"@"`M#`'SW@(@*"T(
+M`>U[```0+0````"2`@`%)`0``1!$_UP`8(`M)`4``A!%``X\!1`-9N0"&`P`
+M%Y9DI04H"`'M0)(#```(`>T_`&"`+0P"`$H"@"`M"`'M9]X#1@`(`>TR)!0`
+M_]Y"1@`\!@#$`%8H+0#%*"V0II)G$,#_13P'%`"0IIAQ$,0`%0````"@I)AQ
+M`%X0+<!$`&`4@/_^)`0``>!$`&`0@/_[`````/^G`!`"@"`M#`'^Q/^C`!C?
+MIP`0W.)&``!>$"T```%/K$``8````4_<XD8`WZ,`&#P$`,0`5A`M`((0+20$
+M``&@1)AP`B`H+?^C`!@,`?_R`H`@+=^C`!@D%0`!"`'M/P!@@"T`````9[W_
+M^"0#``K_OP``D((`$A!#`!8D`P`$D(,`&!1@``4L10`*C(4`6#"E`/\0H``.
+M+$4`"A2@``8\!1`-/`00#0P`%Y9DA`(P"`'N/0``$"T``A#X9*4$&'RB$@H`
+M0``(```````````D`P`$)`(``:"#`!+?OP```^``"&>]``B,@P!<)`(``S!C
+M`/\08@`')`,`!XR%`%PD`P`",*4`_Q2C__0``!`M)`,`!R0"``&@@P`2W[\`
+M``/@``AGO0`(C((`4!!``"8D`P`!D((`&11#__8D`P`'H((`$@@![CTD`@`!
+M`````(R"`%PP0@#_$$``%@````",@@!<)`4``3!"`/\010`1`````!!E`!4D
+M`P`)C(,`%!1E_]8``!`M)`,`""0"``$(`>X]H(,`$B0%``$090`.)`,`!8R#
+M`%@P8P#_%&7_RP``$"TD`P`&)`(``0@![CV@@P`2`````"0#``DD`@`!"`'N
+M/:"#`!(D`@`!"`'N/:"#`!(`````9[W_\/^_``C_L```#`'U#`"@@"VB```8
+M)`(``:("`!K?OP`(W[````/@``AGO0`0H*``&V>]__"@H``8H*``&?^P``#_
+MOP`(#`'U#`"@@"W>!```$(``!``````,`"2^`````/X```````%/K@``%```
+M`4_?OP`(```0+=^P```#X``(9[T`$`/@``B@H``8)`(ON#P#%`!P@A`#W&-&
+M`#P&`,-GO?_PH*``&C3&EYB@H``9_[```/^_``@`1A`M`&(0+20#``&00@#9
+M$$,`%`"@@"TD`P`"$$,`%0`````\!!`-#``7EF2$`EC>!```$(``!``````,
+M`"2^`````/X```````%/K@``%````4_?OP`(W[````/@``AGO0`0#`(`;@``
+M```(`>Z\W@0```P!]P8`````"`'NO-X$``!GO?_@)`(ON/^R`!!P@I`#/`(4
+M`#P#`,/<0D8`-&.7F/^P````H(`M_[$`"`"`B"W_OP`8`D.0+0P!]0P`4I`M
+MW@0``!"```1F4@!@#``DO@````#^````)`(``20#``&F```0H@(`&I)"`'D0
+M0P`*)`,``A!#`!#?OP`8/`00#=^R`!!DA`)8W[$`"-^P```(`!>69[T`(-^_
+M`!@"("`MW[(`$`(`*"W?L0`(W[````@!_]!GO0`@`B`@+=^R`!`"`"@MW[$`
+M"-^P```(`?229[T`(`````!GO?_0_[,`&#P3$`W_L@`0`("0+?^Q``@`H"`M
+M_[0`(#P1$`W_L```)!0``?^_`"@`H(`M#`'N(&9S`C`(`>\>9C$$:``````,
+M`!>6`F`@+0P![B`"`"`M$$``$M^_`"B2`@`2+$(`"A!`__<`````D@(`$@`"
+M$/A^(A(*`$``"````````````D`@+0P![M`"`"@M#`'N(`(`("T40/_PW[\`
+M*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#`"0"`M#`'NI`(`*"T(`>\:
+M```````````(`>\:H@``&`)`("T,`>Z,`@`H+0@![QH```````````)`("T,
+M`>Z``@`H+0@![QH```````````@![QJB%``:)`(``0/@``B@@@`:`````&>]
+M__C_OP``D((`*A!``!4D`P`!C(,`6#!C`/\08``0)`,``A!#`!PL10`#%*``
+M$B0%``,010`&)`4`!!1%`!$`````H(,`*@@![VLD`@`!E(,`1A1@``4``!`M
+M`````"0#``$D`@`!H(,`*M^_```#X``(9[T`""0#``$00P`8`````#P$$`T,
+M`!>69(0"B`@![VL``!`MC((`7#!"`/\00``=`````(R"`%PP0@#_$$,`&B0#
+M``.0@P`R$&#_ZP``$"V4@P!($&#_Z=^_```D`P`$)`(``0@![VN@@P`JC(4`
+M7"0"``,PI0#_$*(`!0````",A0!<,*4`_Q2C_]L``!`M)`,``B0"``$(`>]K
+MH(,`*@`````D`P`#)`(``0@![VN@@P`JI*``,"0"``*DH@`Z)`(`!*2B`#PD
+M`@`>I*(`/B0"``$#X``(I*(`0)2%`#Z4@P`\<*,8`C0%__\`92@J$*```S0"
+M__\D8@`!,$+__P/@``BD@@`P`````"0"+[AGO?_@<((@`SP"%`#<0D8`_[$`
+M$#P1`,/_OP`8-C&7F/^P``C<L``@`)&(+0!1B"T2```P9C$`8"0"`"8"`"`M
+MI*(`*"0&`"8,`F9@```H+68C)YAH:```9B4GIF8D)Z\``!`ML@@``)!H``BB
+M"``(D&@`":((``F0:``*H@@`"I!H``NB"``+D&@`#*((``R08P`-H@,`#6BC
+M``"R`P`.D*,`"*(#`!9H@P``L@,`%Y"#``BB`P`?BB,GN*^C``"GH``"CZ,`
+M`*H#`""2(R>\H@,`))(C)[VB`P`EW[\`&-^Q`!#?L``(`^``"&>]`"``````
+M/`+_@#1"`2E\`P`[``(2/'QC"<-\8CD&W%```!(```4\!!`-)`+__WQ0_\8(
+M`>^__+``(/R@`"`,`!>69(0"L`@![^@D`@`!9[W_Z/^Q``@`H(@M_[```/^_
+M`!"4H@!&$$``#P"`@"TD`B^X<@*``SP"%`#<0D8``%"`+3P"`,0`4(`MH@"7
+M^-^_`!#?L0`(W[````/@``AGO0`8``````P![[``````$$``$3P$$`T,`!>6
+M9(0"Z"0"+[AR`H`#/`(4`-Q"1@``4(`M/`(`Q`!0@"VB`)?XW[\`$-^Q``C?
+ML````^``"&>]`!@``````@`@+0P![)8"("@M)`(ON'("@`,\`A0`W$)&``!0
+M@"T\`@#$`%"`+:(`E_C?OP`0W[$`"-^P```#X``(9[T`&"0"+[@\`Q0`<((0
+M`]QC1@`\!@##9[W_Z#3&EYC_L0`(`("(+?^P``#_OP`0`$80+0!B$"TD`P`!
+MD$(`V1!#`"``H(`M)`,``A!#`!$``````B`@+0P![)8"`"@ME@(`2!1```<`
+M````H@``,M^_`!#?L0`(W[````/@``AGO0`8)$+__P@!\%2F`@!(``````P!
+M^&@`````$$#_[@(@("T\!!`-/`40#62$`QADI05(#``7E@(@,"T(`?!5H@``
+M,@P!_N8`````"`'P3P(@("UGO?_0)`(ON/^P``!P@H`#/`(4`#P#`,/<0D8`
+M-&.7L/^S`!@\$Q`-_[(`$`"`D"W_M``@9G,#6`(#@"TT%/___[$`"`!0@"UF
+M$`!@)!$``O^_`"@,`>]0`@`@+0@!\)&2`@`J`````!!#`"\D`P`$#``7E@)@
+M("T,`>]0`@`@+1!``!'?OP`HD@(`*A!1`!PL0P`#%&#_]"0#``$D`P`#$$,`
+M$20#``040__Q`D`@+0P!\#H"`"@M#`'O4`(`("T40/_QW[\`*-^T`"#?LP`8
+MW[(`$-^Q``C?L````^``"&>]`#```````D`@+0P!\``"`"@M"`'PC```````
+M````E@0`/I8#`#QP@Q@"`'0@*A"```,T`O__)&(``3!"__\(`?",I@(`,*81
+M`#JF`P`\)`,`'J8#`#ZF`@!`"`'PC*8``#``````/`+_@&>]_\@T0@$I?`,`
+M._^_`#```A(\_[4`*'QC"</_M``@?&(Y!O^S`!C_L@`0_[$`"/^P``#<40``
+M$B``5"0"__\"((`M?%#_Q@"`D"UF$P`(```H+0)@("T,`F9@)`8%CB0"+[AR
+M0A`#)`,!#0`#'3P\%!0`_@,```)`J"VN$@`$`D`@+=Z#1@``8A`M/`,`Q`!B
+M$"V00YAQ)`(``A!B`#<"8"@M#`("C@````"2`@`($$``(#P$_\`TA`++``0B
+M?'XD.`4```%/)`(ON'R'>@)RHJ@#WH-&`#P"`,0``"@M)`8``0!UJ"T`5:@M
+M-`*N@(ZHDF!Q`A`#`&(0+9!(#/>00@(X#`")SG$"0"@40``OW[\`,-^U`"C?
+MM``@W[,`&-^R`!#?L0`(W[````/@``AGO0`X?`,`.WXQ2`$```%//`+_@'QC
+M"<,T0@$I``(2/'QB.0;\40``W[\`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[``
+M``/@``AGO0`X#`'U'@`````(`?#MD@(`"#P$$`T,`!>69(0#H#P"%!C<0E=X
+MH$```0```4_?OP`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`#@\
+M!!`-W[4`*&2$`X#?M``@W[,`&-^R`!#?L0`(W[````@`%Y9GO0`XE((`1!!`
+M``(D0O__I((`1)2"`$8D`P`!$$```Z"#`$PD0O__I((`1@/@``@`````C((`
+M4!!```L`````9(,`4````4\D`O__<&(`&````4^,@@!0%$```P`````D`@`!
+MH((`&`/@``@``````````&>]__C_OP``E((`.!!``!DD`P`!C(,`6#!C`/\0
+M8``5)`,``8R#`%PP8P#_$&``$20#``&,A0!<)`,``C"E`/\0HP`++$,`!Q1@
+M``\\`Q`-/`00#3P%$`UDA`/(#``7EF2E!6@(`?%Y```0+0`````D`P`!```0
+M+:2#`#C?OP```^``"&>]``@``A#X9&,$N'QB$@H`0``(``````````",@P!<
+M)`(``S!C`/\08@`')`,``HR%`%PD`P`!,*4`_Q2C_^X``!`M)`,``B0"``$(
+M`?%YI(,`."0#``4D`@`!"`'Q>:2#`#@D`P`#)`(``0@!\7FD@P`XC((`+!1`
+M__<D`P`%E((`1!!`__@D`P`#D((`'11```@D`P`&D(,`3!!@_]8``!`M)`,`
+M!"0"``$(`?%YI(,`."0"``$(`?%YI(,`.`````!GO?_0_[0`("04``'_LP`8
+M)!,`!?^R`!`D$@`$_[$`"#P1$`W_L```_[\`*`P!\5H`@(`M9C$$\)8"`#@L
+M0@`'$$``#0````"6`@`X``(0^'XB$@H`0``(``````````"6`@`T%$``!*(`
+M`!V6`@!"I@(`-``````,`?%:`@`@+11`_^W?OP`HW[0`(-^S`!C?L@`0W[$`
+M"-^P```#X``(9[T`,`````"B%``R```!3ZX``"P```%/E@(`-!!``#0"`"`M
+ME@(`0`P!\5JF`@!$%$#_V=^_`"@(`?'/W[0`()8"`$B6`P!*`$,8*Q!@_^*B
+M``!,)$(``0(`("T,`?%:I@(`2!1`_\S?OP`H"`'QS]^T`"``````)`(``@(`
+M("VF`@`Z)`(`'J8"`#XD`@`!H@``,J8``$2F```TI@``1J83`$JF$P!(IA(`
+M0J82`#P,`?%:I@(`0!1`_[??OP`H"`'QS]^T`""6`@`T$$#_PB1"__\"`"`M
+M#`'Q6J8"`#040/^MW[\`*`@!\<_?M``@E@(`/@P!\5JF`@!$%$#_IM^_`"@(
+M`?'/W[0`(`````!GO?_0/`,4`/^S`!@``)@M_[(`$/^Q``@`@(@M_[\`*/^T
+M`"#_L```W((`&'Q"2`$00``$W')&``!`F"TD`O__?%/_QHYE``PD`B^X/!0`
+MQ'"B$`,"0A@M`H,8+9!CE_@08`!M9I"7L`!0@"T"4(`M9A``8)8"`$000``"
+M)$+__Z8"`$26`@!&)`,``1!```.B`P!,)$+__Z8"`$8PL@#_#`'QK`(`("T,
+M`?!N`D`@+8X"`%`40`!.9@,`4`)`("T,`>\&`@`H+0```4\,`9?&`````-^"
+M@C#?@X(X/`3_\#2$`".,10`@``0D.-QR```TA``+``0F^#2$`,`LI0/HW(8`
+M`'P#`#L4H`":?&;X`XQ%`!Q\<PG#9(0C0'!C*/(`9!@M`!,A/`"#&"5\L/@#
+MW&,``'#0,`/<4```)*7__WQBG0-D0@/H`$4H)`#%,"T`!C%X#`&7Q@(&@"W?
+M@H(XC@0`#-Q"``@``A#Z$(``CF1#__^.!@`,``,8`(X%``Q^)$@!W@(`$`!F
+M&",DI?__<&/X\JX%``P`0Q@MC@(`""1"``&N`@`(WB(`"'Q%"`)\0DB"``4L
+MO``"%3P`HA`E`$00)?QB``````%/W[\`*-^T`"#?LP`8W[(`$-^Q``C?L```
+M`^``"&>]`#`````````!3R0"__]P8@`8```!3XX"`%`40/^N`D`@+20"``$(
+M`?)(H@(`&#P$$`U^<T@!#``7EF2$`]A\`@`[?$()PP```4\\`_^`?C%(`31C
+M`2D``QH\?$,Y!OQS``````%//`/_@`)4H"TT8P$I``,:/'Q#.0;\<0``WH.8
+M,!!@``=\8T@!```!3SP$_X`TA`$I``0B/'Q$.0;\@P``/!$`PP``*"TV,9?X
+M)`8`$`)1B"T\$`#$9B0`"`P"9F`"4)`M9B0`&```*"T,`F9@)`8`8*)`F'"B
+M0)AX9B0"R*)`F'D``"@MHD"8>@P"9F`D!@)`9B0'5```*"T,`F9@)`8"+&8D
+M!2@``"@M#`)F8"0&`BQF)`F````H+0P"9F`D!@`D9B0+L0``*"T,`F9@)`8!
+M^68D%:T``"@M#`)F8"0&`?EF)!^I```H+0P"9F`D!@'Y9B0GI@``*"T,`F9@
+M)`8`(*)`O[[?OP`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`,#P$$`L,
+M`G]Z9(1C6-^_`"@\!!`-W[0`(&2$!`C?LP`8W[(`$-^Q``C?L```"``7EF>]
+M`#``$B``!(``)@`````R<P#_,E(#_SP$_X`TA`$I``0B/'YD.09^1,P'W(0`
+M`!"``"4`````C@8`"`"`*"TD!___$,``&GSE_\;>!@`0``,8^'R$2`$`PQ@M
+M_&0``(X#``@D8P`!K@,`"&1"__Y^(T@!_@4`$``"$`"N`@`,WB(`"'Q$"`)\
+M0DB"``0DO``"%3P`@A`E`$,0)0@!\HK\H@````"0+0@!\P<``)@M?(1(`20#
+M``'^!```K@,`"`@!\QUD0O_^/`00"PP"?WIDA&/@"`'R^=^_`"@#X``(I(4`
+M."0"``0D`P`%I((`0J2"`#PD`@`>I(,`2J2#`$@D`P`"I((`/B0"``&@@``R
+MI(``1*2``#2D@`!&I(,`.@/@``BD@@!``````)""```D`P`&,$(`_A!#``QG
+MO?_XD(8``)"#``%PQ@(R`&8P)20#``(PQO__$,,`!"0"``$#X``(9[T`"```
+M``"0@@`#D(,``J.B``&CHP``EZ(``````4^LH@!0```!3Y""``!GO0`(D(,`
+M`7!"`C(`8A`E`^``"&1"``(`````)`(ON#P#%`!P@A`#W&-&``!B$"T\`P#$
+M`&(0+9!"DF000``+`````)"B```P0@`'$$``!P````"0H@`!R$$`!@`````(
+M`?H8```````````#X``()`(``0@"`^H`````)`(ON#P&%`!P@B`#W,)&`#P#
+M`,,T8Y@8`(,8+0!#&"UD8@!@D$<`$A#@`!6090!@,*<``A#@`!(`````-*4`
+M`:!E`&#<Q48``*0@+3P%`,0`I"`MD(22;:!`!(R@1`2-:&("S;!B!.YH8@+5
+ML&($]FAB`MT#X``(L&($_@`````TI0`!H&4`8)!#`!2@0`2,H$,$C6A#`!6P
+M0P2.:$,`';!#!)9H0P`E`^``"+!#!)XD`B^X/`,4`'""$`/<8T8`/`4`PS2E
+MF!@`11`M`&(0+61"`&"01`!%W$8`"-Q%`D@0@``7D$,``3!D``(0@``4`,4X
+M*Y!$`H4`!"`K`.0X)!3@``\`IB@K.*4``0"D("04@``(-&,``9!&`H:010*'
+MD$0"B*!#``&@1@2(H$4$B:!$!(H#X``(``````````"01@!&-&,``9!%`$>0
+M1`!(H$,``:!&!(B@102)`^``"*!$!(H`````)`(ON&>]_]!P@A`#_[(`$/^Q
+M``@\$A0`WD-&`#P1`,/_LP`8-C&7L/^T`"``@)@M_[```&8D)[#_OP`H`%&(
+M+0!QB"T`1!`M`*"@+0!B$"UF,`!@P$,`8!1@__XD`P`!X$,`8!!@__L`````
+MW@0`"!"```0D`B^X#``DO@`````D`B^X/`,`PW)BF`/>0D8`-&._8#P$%`#^
+M%``(`F.8+0!3$"T```%/K$``8````4_>(@!@$$``"@````#?OP`H```0+=^T
+M`"#?LP`8W[(`$-^Q``C?L````^``"&>]`##>`@`($$#_]=R"1@``4Q`MP$,`
+M8!1@__XD`P`!X$,`8!!@__L`````W@(`"/XB`&#^```(```!3R0"``&N`@`4
+M```!3]R"1@``4Y@M```!3ZY@`&````%/W[\`*```$"W?M``@W[,`&-^R`!#?
+ML0`(W[````/@``AGO0`P`````&>]_\`D`B^X_[,`&'""F`/_M0`H/!44`/^T
+M`"`\%`##WJ)&`#:4F!C_M@`P9I8G2/^P```"=(`M`G:P+?^R`!``4(`M_[$`
+M"`!6$"W_OP`X`("(+682`&#`0P!@%&#__B0#``'@0P!@$&#_^P`````,`?.$
+MH@``8)("`&`"("`M9@4$[F8&!/9F!P3^-$(`!`P!YZ2B`@!@%$``,3P$$`VB
+M0``!#`'SL`(@("V20@`!DD4$B@(@("V21@2)-$(`!`P!Y:2B0@`!%$``'6:4
+M_\"20@`"`G28+31"``2B0@`"WK1&``*3F"T```%/)`(``:YB`&0```%/#`'P
+MP`(@("W>HD8``%:P+0```4^NP`!@```!3]^_`#C?M@`PW[4`*-^T`"#?LP`8
+MW[(`$-^Q``C?L````^``"&>]`$``````/`00#0P`%Y9DA`6P#`'HI@(@("T(
+M`?1WWJ)&```````,`!>69(0%B`@!]'?>HD8`9[W_P/^Q``@D$2^X<)&(`_^P
+M``#_M0`H/!`4`-X"1@`\%0##_[8`,#:UOV#_LP`8`*"P+?^R`!``@)@M_[\`
+M.`(U&"W_M``@`("0+0!#$"W`0P!@%&#__B0#``'@0P!@$&#_^P````#>`D8`
+M/!0`Q`!1$"T"@A`M#`'SA*!`F'C>`D8``%$8+0*#&"V09)AXZ(``(0)`("V@
+M8)AY#`'SL`)`("W>!D8``-&(+0*1H"V2@IAYZ$``-B0%+[@`````#`'PP`)`
+M("TD`B^X<F*8`]X"1@`\`P##-&._8`)CF"T`4Y@M```!3ZY@`&````%/W[\`
+M.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`0&:UW4`"-8@M
+M`%$X+63E`&9DY@!N#`'GI&3G`'840``H/`00#204+[@\$0#$<G2@`]X"1@`"
+M0"`M`%00+0(B$"T,`?.PH$"8>=X&1@``U*`M`C2(+9(BF'GH0``')`4ON```
+M`4\D`@`!KL(`+````4\(`?3"`````#P#`,-R92@#-&.<H`)`("T`HQ`M`,(0
+M+9!%`&(,`>6DD$8`81!`__`\!!`-/`40#62$!A@,`!>69*4(:`@!]/``````
+M``````P`%Y9DA`7@"`'TXB04+[@D`B^X/`,`PW""(`,\`A0`W$)&`#1CEYAG
+MO?_X```H+20&`D#_OP```(,@+0!$("T,`F9@9(0#*-^_`````!`M`^``"&>]
+M``@D!B^X/`,4`'"&,`/<8D8`/`D`PR0'``*@IP`!-2F8&`#),"T`1D@M92<`
+M8)#B``$P1@`"$,``$0````"0H@``-$(`$*"B``"0X@*'H*(``Y#B`HB@H@`$
+MD.("AJ"B``60X@*%$$``!`````"0H@`"-$(`0*"B``*0X@`!R$``$`````"0
+MH@``-$(``:"B``"0X@2)H*("R9#B!(J@H@+*D.($B*"B`LN0X@!%$$``!```
+M``"0H@+(-$(`0*"B`LB1(@!@,$8``A3``#\D!B^XR$``$0````"0H@``-$(`
+M`J"B``"0X@`2%$``20````"0X@2-H*("S9#B!(R@H@+.:.($EK"B`M=HX@2.
+ML*("SVCB!)ZPH@+?D.(``LA!`!P`````D*(``#1"`$"@H@``D.("B1!``!:@
+MH@`C)$+__V2C`"0P2`#_```0+24(``$``B!X`((@+21"``$`Y"`MD(8"BGS&
+M$`.@9@``D(8"BG#&^7J@9@`!D(8"C)"$`HM\AGH$I&8``A1(__%D8P`$D2(`
+M8.A"``0`````D.(``<A"`!\`````D*,``"0"_X``8A`EH*(``-TB`&!\`OH&
+M`^``"/TB`&"0H@``<(8@`S1"`""@H@``W&)&`#P#`,0`1!`M`&(0+9!"DFV@
+MH@`':.("=;"B`!%HX@)ML*(`"6CB`GVPH@`9"`'U4I$B`&"0H@+,-$(`0`@!
+M]5J@H@+,D.(``NA"_^``````W2(`8'P"^@8#X``(_2(`8`````"@H````*`P
+M+:"@``$``!`MH*```B0(``B@H``#H*``!*"@``6@H``&H*``!P````"0AP``
+M,$4``21"``$`A2`M,$(`_P`'&3HPYP`/`.48"Z##```42/_V9,8``0/@``@`
+M`````````&>]_7C_OP*`_[<">/^V`G#_M0)H_[0"8/^S`EC_L@)0_[$"2/^P
+M`D#<H@`8?$(X`1!``($D`___?&+_QF1"``X\$A0`/`T0#=Y%1@```*`M``"8
+M+0``J"T``(@M``!@+0``@"T``%@M``!X+0``P"T``'`M)`D``R0*`']EK0@8
+M)!D`&0````"00P``D$<``0!@0"T``QAZ<08",A!@``X`YC`E$&D`7@`````0
+M:@`J`````&3&``(`1A`MD$,``)!'``$`8$`M``,8>G$&`C(48/_T`.8P)2G"
+M``(I:P`".$(``3EK``$`2Q`E%$``"BH"``(K&``".$(``3L8``$`6!`E*>\`
+M`CA"``$!XG@D%>``2R07+[@\!!`-#``7EF2$!C`D`@`!W[\"@-^W`GC?M@)P
+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
+MW[$`.-^P`#`#X``(9[T`@``````4:O^/`````)+"``4D0O_X,$,`_RQC``40
+M8/^)/`00#7!"./)DA`A`?((2"@!```@``````````!$"`$4"P"`MC@(`4!1`
+M_X#?HP`()`(ON'!BJ`/>8T8`/`(`PS1"OV`"HA`M`&(0+0```4^L0`!@```!
+M3P@!]R$``!@M`````"0"``@(`?>#HN("5``````(`?=L`L"@+0@!]VP"P/`M
+M"`'W;`+`6"W?I0`(`L`@+?^H`!C_J@`@#`(%JO^K`"C?J``8WZH`(`@!]VS?
+MJP`HDL(``#P&5562PP`!-,955M^D`!!FQ0`'<$(",@!B$"4P0O__)$+_^W!&
+M&`,``A?#``,8/P!B$".BX@*),$(`__^H`!@``C!`_ZH`(`#","$,`F5<_ZL`
+M*)+B`HG?J``8WZH`(!!`_T+?JP`HDN(``C1"``((`?=LHN(``@````"2P@`"
+M`@`H+:.B``"2P@`#_ZH`(/^K`"@,`?-,HZ(``=^K`"C?J@`@"`'W[`+"L"V2
+MY02*#`'EI)+F!(D00/]Z/`00#3P%$`UDA`88#``7EF2E")@(`?>Z``````P`
+M%Y9DA`7@"`'WI``````6@/]:)`(``0@!]\`"("`M````````,"T``!`M```8
+M+20(``0(`?A9)`L`"#$I``1DA``!,2@`_Y")````IC@MD.H``"1"``$P0@#_
+M<&8P*`$)0`0P0P`!.&D``0$*0"6@Z```%$O_\0`)2",#X``(`````"0#+[AG
+MO?_(<(,8`_^S`!C_L0`(/!,4`-YB1@`\$0##_[4`*#8QF!C_M``@`("H+?^_
+M`#!F)"=(_[(`$`!QB"W_L````&08+0!1B"T`H*`M`$,0+68Q`&#`1`!@%(#_
+M_B0$``'@1`!@$(#_^P````"2(@!)W+``(``"D$`"0I`A)E(`4!(``*PR4O__
+M`D`P+0(`("T,`F9@```H+20$+[ARI"`#WF)&`*:2`"@\!0##-*6_,&2H``@`
+MA2@M`(@@+0!%$"UD0@!@:$4``+(%``"010`(H@4`")!%``FB!0`)D$4`"J(%
+M``J010`+H@4`"Y!%``RB!0`,D$(`#:("``W>8D8``$00+612`&9D10!O:D@`
+M`&1$`'BR"``.DD@`"*((`!9HIP``L@<`%Y"E``BB!0`?EH4`,'"F^CJB1@`4
+MHD4`%9!"`'BB`@`@D((``:("`"&0@@`"H@(`(I""``,D!``(H@``)J("`",D
+M`@#^H@(`)"0"`!FB`@`E)`+_@*("`"<D`O_"H@(`*"0"``FB`@`IDB,`$I("
+M`"I\8CG'H@(`*I(C!(Q\8C&'H@(`*I(C!(T09`!<`````'QB$`>B`@`J9B0$
+MC@P!^%!F!0`K:B,$EB0(`'\D!_^```@0>"0&_\*R`P`O9@0`3FHC!)YF)0!*
+M9A0`1[(#`#>B`@`_)`(`!J("`$`D`@`+H@8`0Z("`$2B``!!H@<`0I(I`$62
+M`@!%D@,`1WTB.<>B`@!%?0,X1Y(I!(@``Q@``&!`+7P(``1](C&'H@(`19(I
+M!(E](A@'H@(`19(B!(JB`P!'H@(`1I(C`$FB!@!+)`8`#*(&`$RB``!)``,0
+M0*('`$H`0Q`A)$(`!:("`$A\0@(#``(0``$"$"6B`@!'DB(`20`",'@,`F5<
+M`,(P+9(#`$>2!`!()`(ON'*BJ`/>8D8`<&,",@"#&"4\!`##-(2_8&1C``("
+M@Q@M`J2H+0!5J"T```%/KJ``8````4^21``6```0+:!D``"21``7H&0``=^_
+M`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`.`````!\`A`'"`'X
+MV:("`"H`````/`+_@#1"`2E\!``[``(2/'R$"<-\@CD&W%```!(```7>8D8`
+M)`+__WQ0_\8(`?B+_+``(/R@`"``0Q@M```!3ZQ@`&````%//`00#0P`%Y9D
+MA`*P"`'Y*"0"``$`````9[W_T/^_`"C_M``@/!00#?^R`!``@)`M_[$`"&:4
+M!R#_L````D"(+?^S`!@D$``(D(4`!3P$$`T,`!>69(0&L))%``0\!!`-#``7
+MEF2$!M"210``/`00#0P`%Y9DA`;H/`00#0P`%Y9DA`<``````)(E``<F$/__
+M`H`@+0P`%Y9F,0`!%@#_^CP3$`T"@(@M9F0HN`P`%Y8D%``(/`00#0P`%Y9D
+MA`<H`E`0+0(@("V010`/#``7EF80``$6%/_[`E`0+69D*+@,`!>6``"`+3P$
+M$`UDA`=(#``7EB04``@"4!`M`B`@+9!%`!<,`!>69A```184__L"4!`M#``7
+MEF9D*+B210`"/`00#0P`%Y9DA`=HDD4`(3P$$`T,`!>69(0'@))"`"$00``1
+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
+M?<@YQWV(,8=]*"E'H$@`*9%(`'B@J`"+D,8``:"F`(R0Z`0&D$8`+0`(2$``
+M""C``*DH(R0(``0DI0`$?08X1Z!%`"Y\J`(#``8P```(*`!\!@`$`,4P):!&
+M`"V0Y0`#H$4`+Y#E``2@10`PD.D`!I!%`#&0Z``"D.8`!:!``#)])3G'?04Q
+MAWS%*4>@10`Q:&D``&AH``AH9@`0:&4`&&1C`""PB0``L(@`"+"&`!"PA0`8
+M%&W_]F2$`"!H9@``:&4`"&AC`!"PA@``L(4`"+"#`!"0XP0&`^``"*!#`BL`
+M````H*````"@4"V@H``!`*`8+:"@``(``!`MH*```R0,``B@H``$H*``!:"@
+M``:@H``'H,```*#```&@P``"H,```Z#```2@P``%H,``!J#```>0BP``,$<`
+M`20)``\4X``#,6@`#P`+03HD"0#P)$(``0"'("V@:```,$(`_Q1,__1D8P`!
+M``!`+20+``@`H!`M)`,`"`$`."V01```)&/__S!C`/\0AP`$9$(``11@__H`
+M`````0!(+24(``$Q"`#_%0O_\P"@$"T``!`M)`4`#R0'``(D!``(D4,``!!E
+M``P`````$2(`#`````"@QP``)$(``65*``$P0@#_%$3_]F3&``$#X``(````
+M```````5(O_VH4D```@!^]"@P```9[W_V"0#``+_L0`8`("(+?^P`!``H(`M
+M_[\`()"B```00P`)_Z```"0#``,00P`JW[\`(-^Q`!C?L``0`^``"&>]`"@`
+M````9*(`%!3```)DHP(-9*,$!FAD```#H#`M9Z4`"+!$``"09``(H$0`")!D
+M``F@1``)D&0`"J!$``J09``+H$0`"P!`("V08P`,H$,`#"0#``$,`?N4H@,`
+M!@(@("UGI0`(9@8`&`P!YZ0#H#@MC@(`$#1"``&N`@`0W[\`(-^Q`!C?L``0
+M`^``"&>]`"@`````%,``$V2B`!20I`0&D*,$!Z"D`!2@0P`!D@4`%"0"``&2
+M!@`5`B`@+0P!Y:2B`@`&C@(`$#1"``&N`@`0W[\`(-^Q`!C?L``0`^``"&>]
+M`"B0I`(-D*,"#J"D`!0(`?P8H$,``0````"0@@``)`,``Q!#``\D`P`$$$,`
+M"R0#``(00P`)/`00#6>]__C_OP``#``7EF2$",#?OP`````0+0/@``AGO0`(
+M`^``""0"``&0@P`&D(('_@/@``AP8A`J9[W_\#P"%`#_L````*"`+?^_``B0
+MI0`!W$-&`"RB`!<40``)/`(0#3P$$`T,`!>69(0(\)("``'?OP`(W[````/@
+M``AGO0`0``4P^&1""AA\1A(*`$``"```````````)`,`"B0"``JB`P`!W[\`
+M"-^P```#X``(9[T`$``````D`P`5)`(`%:(#``'?OP`(W[````/@``AGO0`0
+M`````)("``PD0@`4,$(`_Z("``'?OP`(W[````/@``AGO0`0D@('_!!```0`
+M````D@(`#!1`_^,`````D@(`!Q!``#P\!0##)`(ON'""(`,TI:$8`(4@+0!D
+M&"UD8P!@D&0`#Q"`_\TD`@`5D&0`#A2``#H`````D@0'_1"``#\`````D@0`
+M#!2```4`````D&0`((X#``@4@__!W[\`")(""`"2`P`$D@0``P!B*"L`91`+
+M$$0`-20#``XD`@`."`'\4*(#``$`````D@(`!A!``!(D`P`3D@('_A!```\`
+M````D@,``A1@`!:2`@7_%$``'B0#`!$,`?PL`@`@+11``!HD`P`1)`,`$"0"
+M`!`(`?Q0H@,``0`````D`@`3H@,``=^_``C?L````^``"&>]`!`D`P`+)`(`
+M"P@!_%"B`P`!%$#_["0#`!(D`@`2"`'\4*(#``$`````)`,`#"0"``P(`?Q0
+MH@,``20"`!$(`?Q0H@,``0`````D`P`-)`(`#0@!_%"B`P`!D@,'_Q!B``0D
+M`P`/)`(`#P@!_%"B`P`!)`,`%B0"`!8(`?Q0H@,``6>]_\`D`B^X_[8`,'""
+ML`/_M``@/!04`/^S`!@\$P##WH)&`#9SH1C_L@`0/!(0#?^U`"AF4@K0`M.8
+M+3P5$`W_L0`(`%.8+?^P````@(@M_[\`.`"@@"UF<P!@``````(@("T,`?Q"
+M`@`H+20#`!400P`-W[\`.)(%``$LH@`7%$``$P`%$/@,`!>69J0)*`(@("T,
+M`?Q"`@`H+20#`!440__UW[\`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P
+M```#X``(9[T`0`````!^0A(*`$``"````````````B`@+0(`*"T``#`M#`'[
+MW`````"2`@`%H@``!3A"``$(`?SNH@(`#`(@("T"`"@M"`']$20&``%F`@@!
+M9@,"#68$">%H2```:$<`"&A&`!!H10`89$(`(+!H``"P9P`(L&8`$+!E`!@4
+M1/_V9&,`(&A&``!H10`(:$0`$+!F``"P90`(L&0`$)!"`!B@8@`8C@(`$)(#
+M"?HT0@`"H@,%_P@!_.ZN`@`0`B`@+0(`*"T,`?O<```P+9("``4D`P`!H@,`
+M!0@!_.ZB`@`,`````"0"``$(`?SNH@(`#`````"2`P`$D@((`#!D`/\P10#_
+M`(4@*Q2``&H`````H@(``Z(```R.8@`$)$(``0@!_.ZN`@`(``````(@("T"
+M`"@M#`'[W```,"TD`@`!H@(`#`@!_.ZB`@`%`B`@+0(`*"T,`?O<```P+:(`
+M``R.8P`$)`0``8X"`!"B!``%)&,``:X#``@T0@`$"`'\[JX"`!`"("`M`@`H
+M+0P!^]P``#`M"`'\[J(```62!`?Z9@,&`)(&!_MF`@0&D@4'^68'!^"B!``'
+M.(0``:($``RB!@`&H@4``HQL``",:P`$C&H`"(QI``R,:``0C&8`%(QE`!B,
+M9``<9&,`(*A,``"H2P`$J$H`"*A)``RH2``0J$8`%*A%`!BH1``<%&?_[F1"
+M`"",:0``C&@`!(QG``B,9@`,C&4`$(QD`!2H20``J$@`!*A'``BH1@`,J$4`
+M$*A$`!208P`8H$,`&(YC``3>@D8`H@`'_"1C``&N`P`(`%80+3P#`,0`8A`M
+MD$*8<!1`_T@"("`M`@`H+0P!^]P``#`M"`'\[P(@("TD`@`!H@(``Z("``0(
+M`?SNH@(`!P````".8@`$)$(``0@!_.ZN`@`(H@``#`!@$"VB`P`#CF(`!"1"
+M``$(`?SNK@(`"``````D`B^X9[W_\'""(`,\`A0`W$)&`/^P```\$`##_[\`
+M"#80H1AF`P`@`)"`+0"#("T`4(`M`$00+9(%`&!F`P!@+*8`!Q3```ID0@!D
+M/`00#0P`%Y9DA`E@D@(`8-^_``C?L````^``"&>]`!``````/`00#0`%*/AD
+MA`N(?(4J"@"@``@`````C&4`"(QD`!@4I``C`````)!D`"",8P`$$&0`)P``
+M```D`P`!)`(``:(#`&#?OP`(W[````/@``AGO0`0`````)!D`"",90`$$*0`
+M+0````"09``1$(#_WR0"``&08@`.%$``,R0"``.09``3D&(`#9!E``P`1#`K
+M`$8@"Q"%`#``````)`,`!"0"``0(`?W5H@,`8``````D`P`&)`(`!J(#`&#?
+MOP`(W[````/@``AGO0`0`````)!#"@@08``))`,``I!#``P08``&)`,``I!"
+M%`040/_3)`,``0`````D`P`")`(``J(#`&#?OP`(W[````/@``AGO0`0````
+M`)!$"@@0@/_V`````)!$``P0@/_S`````)!"%`040/_,``````@!_ADD`P`"
+M`````"0#``,(`?W5H@,`8`````"08P`2%&3_HP``$"TD`P`%)`(`!0@!_=6B
+M`P!@`````"0#+[AGO?^P<(,8`_^V`##_L```/!84`-["1@`\$`##_[0`(#80
+MH1C_M0`H9A0`(/^S`!@\%1`-`'"`+0!TH"T`5*`M/!,0#?^W`#@`4(`M_[(`
+M$`"`N"W_L0`(9I(`9/^_`$@`@(@M_[X`0&:U"9AF<PO`9A``8&:4"F`"("`M
+M#`']OB0>``$07@`.`````)(%```LHP`'%&``)0`%&/@,`!>6`J`@+9("``\4
+M0``O`B`@+0P!_;XD'@`!%%[_]`````"2`@`0$$``#``````,`?KT`B`@+20"
+M+[ARXK@#WL)&`*(``!"B```.`%>X+3P"`,0`5Q`MK%Z8/*(``!'?OP!(W[X`
+M0-^W`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`%!^8QH*
+M`&``"```````````C@(`&"0#``&B`P`0"`'^8JX"``@`````C@(`%"0#``&B
+M`P`/H@(`(`(@("T,`?S6`D`H+0(@("T,`?S6`H`H+0(@("T,`?S69D43^`P!
+M\,`"("`M"`'^5Z(```\`````C@(`!"0#``&B`P`0)$(``0@!_F*N`@`$K@``
+M!"0"``&N```(K@``'*(``""B`@`,H@(`#0@!_I*B`@`/`````)(#``V2`@`3
+M,&0`_S!%`/\`A2`K$(```@``````8!`MH@(`#"0"``$(`?YBH@(`$)("``VN
+M```$K@``"*("``PD`@`!H@``(`@!_I*B`@`/)`(ON&>]__AP@B@#/`(4`-Q#
+M1@`\`@##-$*<P/^_````HA`M`&4H+0!B$"T\`P#$`&4H+:R@F#PD!0`!C$,$
+MW*!%!,8D!0(`H$`$N*!`!,E\H_P$K$,$W"0#``.@0P[8)`,`!*!`#MF@0QC4
+M#`'^.*!`&-7?OP`````0+0/@``AGO0`(`````"0#+[AGO?^8<(,8`_^S`##_
+ML0`@/!,4`-YB1@`\$0##_[0`.#8QEYC_L@`H`("@+?^_`&!F)"?(_[X`6`!Q
+MB"W_MP!0`&08+?^V`$@`48@M_[4`0`"@D"W_L``8`$,0+68Q`&#`1`!@%(#_
+M_B0$``'@1`!@$(#_^P````"2(@=3W+``(``"($```JC``J2H(R:U`%D2``"L
+M,K7__V8#`%<"`"`M`J`P+0``*"W_HP``#`)F8"06+[C>8T8``I8`'#P6`,,`
+M`!`2-M:_,*95`"AF'P`._[\`$&8W)Z9F-2>O9B<%+F8E!5O_H@`(`%80+0!B
+M$"UF(P5`9$(`8&;6`#!H1```L@0``)!?``C?I```HA\`")!?``FB'P`)D%\`
+M"J(?``J07P`+HA\`"Y!?``RB'P`,D$(`#:("``UJX@``W[\`$+/B``"2X@`(
+MH^(`"&JB``"R`@`7DJ(`"*("`!^60@`PDC(GN*(B)[MP0OHZHB(GNJ(2`""2
+M(B>YH@(`(9(B)[JB`@`BDB(GNZ("`".2(@4HH@(`))(B!2FB`@`EDB(%*J("
+M`":2(@4KH@(`)Y(B!2RB`@`HDB(%+:("`"EHX@``L@(`*I#B``BB`@`RD.(`
+M":("`#.0X@`*H@(`-)#B``NB`@`UDB(%.J("`#:2(@4[H@(`-Y(B!3RB`@`X
+MDB(%/:("`#F2(@4^H@(`.I(B!3^B`@`[:&(``+("`#R08@`(H@(`1)!B``FB
+M`@!%D&(`"J("`$:08@`+H@(`1Y!B``RB`@!(DB(%3:("`$F2(@5.H@(`2I(B
+M!4^B`@!+DB(%4*("`$R2(@51H@(`39(B!5*B`@!.DB(%4Z("`$^2(@54H@(`
+M4)(B!56B`@!1DB(%5J("`%*2(@57H@(`4Y(B!5BB`@!4DB(%6:("`%62(@5:
+MH@(`5I(B!U,``C!```(0P`P"95P`1C`CDB('4]^C``C>9$8`W[<````"*$``
+M=K`M``(8P`!E&",`EK`M`N,8+0```4^NP`!@```!3Y(D)[P``!`MH&0``)(D
+M)[V@9``!W[\`8-^^`%C?MP!0W[8`2-^U`$#?M``XW[,`,-^R`"C?L0`@W[``
+M&`/@``AGO0!H`````#P"_X`T0@$I?`0`.P`"$CQ\A`G#?((Y!MQ0```2```%
+MWF)&`"0"__]\4/_&"`'_#?RP`"#\H``@`$,8+0```4^L8`!@```!3SP$$`T,
+M`!>69(0"L`@!_ZLD`@`!`````"0"+[AGO?_H<((H`_^Q``@\$10`/`8`P]XC
+M1@`TQK]@_[```/^_`!``IH`M`'`0+<!'`&`4X/_^)`<``>!'`&`0X/_[````
+M`&3&X;@D`@`!`*8H+0!E&"T,`?XXH&(`<=XB1@``4(`M```!3ZX``&````%/
+MW[\`$-^Q``C?L````^``"&>]`!@D`B^X9[W_T'""$`/_L@`0_[$`"#P2%`#>
+M0T8`/!$`P_^S`!@V,9>P_[0`(`"`F"W_L```9B0GL/^_`"@`48@M`'&(+0!$
+M$"T`H*`M`&(0+68P`&#`0P!@%&#__B0#``'@0P!@$&#_^P````#>!``($(``
+M!"0"+[@,`"2^`````"0"+[@\`P##<F*8`]Y"1@`T8[]@/`04`/X4``@"8Y@M
+M`%,0+0```4^L0`!@```!3]XB`&`00``*`````-^_`"@``!`MW[0`(-^S`!C?
+ML@`0W[$`"-^P```#X``(9[T`,-X"``@00/_UW()&``!3$"W`0P!@%&#__B0#
+M``'@0P!@$&#_^P````#>`@`(_B(`8/X```@```%/)`(``:X"`!0```%/W()&
+M``!3F"T```%/KF``8````4_?OP`H```0+=^T`"#?LP`8W[(`$-^Q``C?L```
+M`^``"&>]`#``````9[W_Z"0"+[C_L```<(*``_^Q``@\$10`WB)&`#P#`,/_
+MOP`0-&.A&&1E'D@"`Q@M`@6`+0!#&"T`4!`M9&,`8,!%`&`4H/_^)`4``>!%
+M`&`0H/_[`````"0"``&@8@`1#`'^.*!B``[>(D8``%"`+0```4^N``!@```!
+M3]^_`!#?L0`(W[````/@``AGO0`89[W_8`"@6"W_M`!P```0+?^P`%``@*`M
+M_[\`F/^^`)#_MP"(_[8`@/^U`'C_LP!H_[(`8/^Q`%C<HP``W&,`&'QC.`$0
+M8``%)!``#@!@$"TD`___?&+_QF10``XD`R^X/!(4`'*#&`/>1$8`/!<`PP*`
+MF"TV]YS`9N4BH`!WN"T`91@M`)>X+0"#&"UF\0!@9O<"C/^W``C`9`!@%(#_
+M_B0$``'@9`!@$(#_^P````"010`./!80#9!$``\``*@M``"X+0``2"UPH@(R
+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
+MI&8``)2$'G9\A`@#H&3__I"D``!DI0`&H&3__Q1)__!D8P`$`^``"```````
+M``````00`#"$`_]\`P`[!$``#'QC"<,\`O^`-$(!*0`"$CQ\8CD&?(+,!]Q"
+M```00``.)`/__P/@``A\8O_&`````#P"_X```!@M-$(!*0``("T``A(\?&(Y
+M!GR"S`?<0@``%$#_]"0#__\#X``(```0+20(+[@\`A0`<(@@`]Q"1@`\`P##
+M-&._:`"#0"T`2$`MD0,`8!1@`!=E`@!@)`,``3P'``*A`P!@/`8`F```&"UE
+M"`"H-.=)\#3&EH`D!0)`H$``$`$#("VL1P`49&,`2*!``##\1@`@_$``*/Q`
+M`$#\0``X9$(`2*R````49?_T``````/@``@``!`M`````"0*+[@\`A0`<(H@
+M`]Q"1@`\`P##-&._:`"#4"T`2E`MD4,`8!!@`$QE0@!@?`D`.R0#``A]*`G#
+MW$0`.`$`,"V@0``0$(``'```*"W<A``8?`<`.WSK"<-\A$@!$(``!@"`."TD
+M!/__`6`P+7R'_\9\Y4@!``<H"@```4\\!/^`?2<)PS2$`2D`!"(\?,0Y!OR%
+M``#<1``X?(5(`0`$*`H```%//`3_@#2$`2D`!"(\?.0Y!OR%``#<1`!````H
+M+7P&`#L0@``=?,8)P]R$`!A\!P`[?.L)PWR$2`$0@``&`(`X+20$__\!8#`M
+M?(?_QGSE2`$`!R@*```!3SP$_X`TA`$I``0B/'S$.0;\A0``W$0`0'P&`#M\
+MQ@G#?(5(`0`$*`H```%//`3_@#2$`2D`!"(\?,0Y!OR%```D8___,&/__Q1@
+M_[QD0@!(W4(`8'P"_`;]0@!@`^``"`````"0A``')`(ON'"B*`,\`A0`W$-&
+M`#P"`,,T0K]H`*(H+0!E&"T#X``(H&0`80````!GO?_H_[$`"/^P````@(`M
+M_[\`$'P1`#M^,0G#P((`0!1`__XD`@`!X((`0!!`__L`````/`+_X``1&3R,
+MA0``-$(`50`"%?@"("`M-$(`!0``,"T``A3X<*5*<C1"`#`D!P`$W@@`&`"B
+M$"V.!0`$`&(0)=Q"````"!BZ``A`>OX(`!A\0L@#`$-`*P!H$`L,`8-J_@(`
+M((X%``3>!@`@`B`@+0P!@Q@``#@M```!3ZX``$````%/W[\`$-^Q``C?L```
+M`^``"&>]`!@`````/`(``F2#`!`T0DGPK((`#````4\D`@`!<&(`&````4\#
+MX``(`````(R"`!`H0@`%%$``"SP"``%D@P`0-$(D^*R"``P```%/)`(``7!B
+M`!@```%/`^``"```````````/`(``F2#`!`T0DGPK((`#````4\D`@`!<&(`
+M&````4\#X``(`````#P"``%D@P`0-$(D^*R"``P```%/)`(``7!B`!@```%/
+M`^``"`````!GO?_(_[(`$`"`D"W_OP`P_[4`*/^T`"#_LP`8_[$`"/^P````
+M``%/#`&7QMR1`##?@H(P/`7_\-^#@C@TI0`C``4L.(Q&`"`TI0`+W',````%
+M+O@TI0#`W*0``"S&``]\`P`[%,``0'QD^`.,1@`<?&<)PV2E(T!P8RCR``<Y
+M/`!E&"U\T/@#`.,8)=QC``!PD"`#W%```"3&__]\8IT#9$(`#P!&,"0`AB`M
+M``0A>`P!E\8"!(`MWX.".(X"``S<=``(`!2@^A!``#QFE?__C@,`#``5J`".
+M`@`,W@0`$`*CJ",D0O__K@(`#(X"``@D0@`!K@(`"!(@`!<`````WB(`"'*U
+M^/)^,4@!`)4@+7Q#"`)\0DB"``,<O``"%3P`8A`E`%&()?R1``````%/W[\`
+M,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`X`````'*U^/(`E2`M
+M"`(&8?R````\!!`+#`)_>F2$8U@\!!`-/`40#62$#!@,`!>69*4-L-Y"`#!\
+M!``[?(0)PWQ#2`$``A@*```!3SP"_X`T0@$I``(2/'R".0;\0P``"`(&8OY`
+M`#`,`@42`!,@`!!``"$`````C@,`"!!@`!E\0T@!W@,`$``5J/A\1$@!`'48
+M+?QD``".`P`()&,``:X#``C^`@`09H/__@`#&`"N`P`,$B``%0````#>(P`(
+M?C%(`7QD"`)\8TB"``0DO``#'3P`@Q@E`'$8)0@"!F'\0P``_@,``"0#``&N
+M`P`("`(&E?X"`!`\!!`+#`)_>F2$8^`(`@9T/`00#0@"!F'\0```9[W_R"0"
+M``__LP`8`("8+?^Q``@D$0`'_[\`,/^U`"C_M``@_[(`$/^P``",@P`4*&,`
+M!0!#B`L```%/#`&7QMR2`##?@H(P/`7_\-^#@C@TI0`C``4L.)Q$`"`TI0`+
+MW'0````%+O@TI0#`W*8```"1("M\`P`[%(``/WQG^`.,1@`<?&0)PV2E(T!P
+M8RCR``0A/`!E&"U\T/@#`(,8)=QC``!P\#@#W%```"3&__]\8IT#`%&(+0(F
+M,"0`QS@M``<Y>`P!E\8"!X`MWX.".(X"``S<<0`(`!&(^A!``#MF-?__C@,`
+M#``5J`".`@`,W@0`$`*CJ",D0O__K@(`#(X"``@D0@`!K@(`"!)``!8`````
+MWD(`"'*U^/)^4D@!`)4@+7Q#"`)\0DB"``,<O``"%3P`8A`E`%*0)?R2````
+M``%/W[\`,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`X<K7X\@"5
+M("T(`@<`_(```#P$$`L,`G]Z9(1C6#P$$`T\!1`-9(0,0`P`%Y9DI0W0WF(`
+M,'P$`#M\A`G#?$-(`0`"&`H```%//`+_@#1"`2D``A(\?((Y!OQ#```(`@<!
+M_F``,`P"!1(`%"``$$``(0````".`P`($&``&7Q#2`'>`P`0`!6H^'Q$2`$`
+M=1@M_&0``(X#``@D8P`!K@,`"/X"`!!F(__^``,8`*X#``P20``5`````-Y#
+M``A^4D@!?&0(`GQC2((`!"2\``,=/`"#&"4`<A@E"`('`/Q#``#^`P``)`,`
+M`:X#``@(`@<S_@(`$#P$$`L,`G]Z9(1CX`@"!Q(\!!`-"`('`/Q```!GO?_(
+M_[(`$`"`D"W_OP`P_[4`*/^T`"#_LP`8_[$`"/^P``````%/#`&7QMR1`##?
+M@H(P/`7_\-^#@C@TI0`C``4L.(Q&`"`TI0`+W',````%+O@TI0#`W*0``"S&
+M``=\`P`[%,``0'QD^`.,1@`<?&<)PV2E(T!P8RCR``<Y/`!E&"U\T/@#`.,8
+M)=QC``!PD"`#W%```"3&__]\8IT#9$(`!P!&,"0`AB`M``0A>`P!E\8"!(`M
+MWX.".(X"``S<=``(`!2@^A!``#QFE?__C@,`#``5J`".`@`,W@0`$`*CJ",D
+M0O__K@(`#(X"``@D0@`!K@(`"!(@`!<`````WB(`"'*U^/)^,4@!`)4@+7Q#
+M"`)\0DB"``,<O``"%3P`8A`E`%&()?R1``````%/W[\`,-^U`"C?M``@W[,`
+M&-^R`!#?L0`(W[````/@``AGO0`X`````'*U^/(`E2`M"`('F?R````\!!`+
+M#`)_>F2$8U@\!!`-/`40#62$#'`,`!>69*4-\-Y"`#!\!``[?(0)PWQ#2`$`
+M`A@*```!3SP"_X`T0@$I``(2/'R".0;\0P``"`('FOY``#`,`@42`!,@`!!`
+M`"$`````C@,`"!!@`!E\0T@!W@,`$``5J/A\1$@!`'48+?QD``".`P`()&,`
+M`:X#``C^`@`09H/__@`#&`"N`P`,$B``%0````#>(P`(?C%(`7QD"`)\8TB"
+M``0DO``#'3P`@Q@E`'$8)0@"!YG\0P``_@,``"0#``&N`P`("`('S?X"`!`\
+M!!`+#`)_>F2$8^`(`@>L/`00#0@"!YG\0```9(4`%````4\D`P`!<*,`&```
+M`4^,@@`4*$,`!11@``@D`P`%%$,`!``````(`@:P```````````(`@=.````
+M``@"!A8`````9[W_N/^P``#_OP!`_[<`./^V`##_M0`H_[0`(/^S`!C_L@`0
+M_[$`")""``@40``D`("`+=R"`#@``(@M$$``7@``D"T```%//`(``C1"2?"N
+M`@`,```!3P```4^N```H```!3P```4^N```L```!3]X"`#`00``L/`+_@```
+M`4\D`@`!`@`@+0P"!;:B`@`(W[\`0-^W`#@"`"`MW[8`,-^U`"C?M``@W[,`
+M&-^R`!#?L0`(W[````@"!^AGO0!(```!3SP"``(T0DGPK((`#````4\```%/
+MK(``+````4\```%/K(``$````4\```%/K(``%````4_?OP!`W[<`.-^V`##?
+MM0`HW[0`(-^S`!C?L@`0W[$`"-^P```(`@6V9[T`2``````T0@$I?!<`.P`"
+M$CQ^]0G#?J(Y!MQ6```2P`!#/`+_@"0#__\T0@$I`L"8+0`"$CQ\<__&?J(Y
+M!MQ4```2@`!@)`8`,`*`B"T``"@M?''_Q@P"9F`"("`M)`,``0`#%SPD!``0
+M?(+5!OXB``C>8@`0?&+_QOYB`!#^,``PWF(`&'Z".`7^8@`8"`((&?X3`#`\
+M`O^`-$(!*7P2`#L``A(\?E()PWY".0;<5```$H``83P"_X`D`___-$(!*0*`
+MB"T``A(\?''_QGY".0;<4P``$F``9R0&`#`"8)`M```H+7QR_\8,`F9@`D`@
+M+20#``$``Q<\)`0`#WR"U0;^0@`(WB(`$'QB_\;^(@`0_E``,-XB`!A^8C@%
+M_B(`&`@""`O^$0`X`````'Y"2`$`$A`*`$"0+0```4\\`O^`?O<)PS1"`2D\
+M!!`-``(2/#P%$`U^XCD&9(0,H/Q2```,`!>69*4-F'XB2`$`$1`*?`,`.WQC
+M"<,`0(@M```!3SP"_X`T0@$I``(2/'QB.0;\40``_@``.-^_`$#?MP`XW[8`
+M,-^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0!(/`00#3P%$`UDA`TP
+M#``7EF2E#9A^UD@!```!3SP"_X!^0T@!`!(8"C1"`2D``A(\?J(Y!OQ6````
+M8)`M_@``,````4\\`O^`?B-(`0`1&`HT0@$I?O<)PP`"$CQ^XCD&_%(```!@
+MB"U\`P`["`((HGQC"</?OP!`/`00#=^W`#@\!1`-W[8`,&2$#-#?M0`H9*4-
+MF-^T`"#?LP`8W[(`$-^Q``C?L```"``7EF>]`$@\!!`-/`40#62$#0`,`!>6
+M9*4-F'Z42`$```%//`+_@#1"`2D``A(\?D(Y!OQ4```(`@BI_@``.&>]_^#_
+ML0`(`("(+?^_`!C_L@`0_[```-R#``!\8E@",$4(`!"@``,`0"`M,$(/\`!`
+M("T``X.^,A`P``($@"4R`O__,A#_[P!`("T,`6P8`$"0+3P#%`#<9$8`)`,*
+M`!(#`%<D`P@`$D,`:20#"0`60P!K/`,`Q`"#&"V499`&)`,ON'"C*`,\`P##
+M-&._:`"C*"T`A2@MD*,`8!!@`%!DJ@!@WB0`&'R$2`$0@``$```H+0"`*"TD
+M`___?&7_QI"C`!"0I``1?&1Z!"0#(N<PA/__%(,`0@``&"V0I``3D*<`$@``
+M,"TD"0`$?.1Z!``$8SI\C2F#,(L`/P`#.'@`!D0X`*<X+21C``&0Y@`5D.<`
+M%'SF>@04:?_X`,@P)0&L&"448``N``8P*P`+&"L`PS`D$,``*SP$$`V0I``A
+MD*,`()%&``%\9'H$`(8P!\C``",`````D*8`*9"E`"A\IGH$,,;__RS&`!@4
+MP``<``0P^``$*;@`Q3`M,$7__V3"``@`I!@A`4(0+:Q$````0"`MK$,`!`P"
+M!_JL2P!$W[\`&-^R`!`D`@`!W[$`"-^P```#X``(9[T`(``````\!0`P?E(9
+M`S2EY``"12@M``4HN'R%*`H(`@D.,*7__SP$$`T\!1`-9(0-8`P`%Y9DI0V`
+MW[\`&-^R`!`D`O__W[$`"-^P```#X``(9[T`(#P#`,0`@Q@M"`()#I1ED`((
+M`@D.-`7__V>]_^@D`@`!_[```/^_`!#_L0`(C(,`$!!B`#,`@(`MC(,`%!!B
+M`#``````W(,`&-R"`"``92@M_@4`&`"B$"T\`P"8``(0>C1CEH$`0R`K$(``
+M(V1C___^`@`@C@4`!```,"U\$0`[?C$)PR0'``0,`8-J`B`@+8X%``3>!@`@
+M`B`@+0P!@Q@``#@MW@,`(#P"`)@T0I:`%&(`#-^_`!"B```(```!3ZX``"P`
+M``%/```!3ZX``!````%/```!3ZX``!0```%/W[\`$-^Q``C?L````^``"&>]
+M`!@`````"`()C_X#`"#>`@`@W@,`&``",'@``B#X`,0@+0"#("L0@/_,````
+M```#*/H(`@F'_@4`&`````!GO?_P_[````"`@"W_OP`(P((`0!1`__XD`@`!
+MX((`0!!`__L`````C((`$(R#`!0H1``%`&(H*A"```\`91`+*&4`!3BE``$`
+M!2@C,*43B`P""7@"`"`M```!3ZX``$````%/W[\`"-^P```#X``(9[T`$```
+M```H8P`%%&#_]"0%$X@\!?_\-`/#4#2E+W`"`"`M`*``$W!B```,`@EX```H
+M$@```4^N``!````!3]^_``C?L````^``"&>]`!!GO?_P_[\`"/^P``#<@P`8
+M?&,X`1!@``0``!`M`&`0+20#__]\8O_&W%``,-Q"``B2`P`($&``!GQ"-0(D
+M`P`/$$,`!R0#`!`00P`=`````-^_``C?L````^``"&>]`!".`@`0*$,`!11@
+M`!\\`@`"/`(``68#`!`T0B3XK@(`#````4\D`@`!<&(`&````4\,`@F^`@`@
+M+0```4^N```L```!3P```4^N```H```!3]^_``C?L````^``"&>]`!`,`@F^
+M`@`@+9("``@00/_AW[\`"`(`("W?L```"`('Z&>]`!``````9@,`$`@""@TT
+M0DGP`````"0"+[@\`Q0`<*(H`]QC1@``!A#X``8QN`!&,"T\!P##-.>_<`#%
+M$"T`1Q`M`&(0+61#`&"090`($*``.@````",90`H%*``-P````"4A``(9$4`
+MC````4]PI``8```!3XQE``R,9``L`(4@*A2``"T````````!3R0%``'`1P"(
+M)`8``!3D``0`H#@MX$<`B!#@__HD!@`!`````````4\4P``#``````/@``@`
+M````W&,`.'P$`#M\A`G#W&(`"'"%"C*,9P`,`(!`+0!`("U\1@@"?`1[!GQ"
+M.()\Q`@&`*(H)0"`$"U\HEB&_&(`"````4\D`@`!/`3_P``"$[PTA`"S?,*<
+MA@`$(GQ\8D@%?00Y!GRB[09\Y!D%```!3_R"```#X``(``````````#<@@"@
+M/`,4`-QI1@"4B`"TD$<`#)!#``U\XWH$-`>!`!!G``6`B@!FI*,``"0"``X#
+MX``(I,(``"0#+[@\!P##<4-0`S3GOVB,@P"H<0C[>C1C`!`!1U`M`2I(+9$G
+M`&$!!T`'R0``!JR#`*B40@`4I*(``"0"`!8#X``(I,(``)1"`!"DH@``)`(`
+M$@/@``BDP@```````&>]_^@T`ZZ`_[$`"#P"%`#_L````("`+?^_`!"$A0!H
+MW$1&`-X"`#APHQ@#?%$10@"#&"T,`6P8E&0`,(($`&4D`P`"$(,`!@````#?
+MOP`0W[$`"-^P```#X``(9[T`&)8#`+008/_Y)`,``=X%`!@``QJ\9&/_^'RF
+M2`$`PQ@M?&-(`11@`%```#@M)`0``0``&"W<YP````0BO&2$__P`Q"`M?(1(
+M`7R%2`7^!0`8``4L/@`%*``DI0`$%(``/J8%`!B,9``0`%&((8QH``0R,?__
+MC&8`"#P)(NF,90`,`BF():QD``PD`@`!K&@````"$KRL9@`$9$+_^*QE``BL
+M<0`0W@,`&`!B$"U\0D@!%$``&P``("W\AP`````0+98$``C>`P`8)(0`!'QC
+M.`$48``+I@0`"(X#`*C(?O_#_@(`H&1"``C^`@"@W[\`$-^Q``C?L````^``
+M"&>]`!@`8!`M)`/__WQB_\:.`P"HZ'[_]/X"`*`(`@JRW[\`$`!`("TD`O__
+M?$3_Q@``$"W\AP``E@0`"-X#`!@DA``$?&,X`1!@_^2F!``("`(*]P!@$"T`
+M`````(`8+20$__\(`@K/?(/_QB0$``$`8#@M``0BO"0#__]DA/_\?&?_Q@#$
+M("T``!@MW.<``'R$2`%\A4@%_@4`&``%+#X`!2@`)*4`!!"`_Z^F!0`8"`(+
+M#0"`&"T`````9[W_Z#P"%`#_L```_[\`$/^Q``B`A0!FW$-&`"0"+[B4D0"T
+M<*(0`SP%`,,TI;]H`!&+0@!%$"T`8A`MD$(`80(B$`?H0``&`("`+=^_`!#?
+ML0`(W[````/@``AGO0`8#`(*G@````""!0!FW[\`$`(`("W?L````B`P+=^Q
+M``@(`@HL9[T`&-R"`*"40P`,)`(BZ1!B``0``````^``"```````````W(4`
+M&"0"``&,AP"H``(2O&1"__@D!@`%?*5(`20#``,`HA`M?.<'@'Q"2`$`QQ@+
+M%$``00``,"T4H``[W,<``&1B__\``A"X`,(0+0````",10``)&/__ZQ%``0<
+M8/_\9$+__-R#`!@D`@`!``(2O```*"UD0O_\?&9(`63(``0`PA`M?0-(!7Q"
+M2`'\@P`8``,</@`#&``D8__\%$``%*2#`!C\IP`````0+92%``C<@P`8)*7_
+M_'QC.`$48``(I(4`"(R#`*C(?O_*_((`H&1"``@#X``(_((`H```````8!`M
+M)`/__P@""W]\8O_&`$`H+20"__]\1?_&```0+?RG``"4A0`(W(,`&"2E__Q\
+M8S@!$&#_ZZ2%``@(`@N'`&`0+0``````H#`M)`+__P@""UY\1O_&`$`P+20"
+M__]\1O_&W,<``!"@_[T``#`M"`(+F@"@,"V,@@``<$)4<F1"`!PX0@`$C$,`
+M`#1C``*L0P```^``"```````````)`(``1#"`"B4@PB`$,``%'!B.C(D`@`"
+M$,(`,0`%$<`D`@`#$,(`'``%*?@\!!`-/`40#6>]__ADA`X09*4AF/^_```,
+M`!>6)`8!R]^_`````!`M`^``"&>]``@`````<&/Z.@!#&"4`!2G`W(0`&"1C
+M``$``QF`<&+Y^GQC`8/<A`$H`&(8(7"C$`)\0O@#`^``"`!$$"W<@@`8W$(!
+M0`/@``@`HA`M/`(4```%*<"40T4$W(0`&``#&0#<A`$P,&(`?P`"$"MP8_GZ
+M`$,8(7"C$`)\0O@#`^``"`!$$"W<@P`8``4@@`""$"'<8P$X`$40(W!"NC(#
+MX``(`$,0+6>]_^C_L````("`+?^_`!#_L0`(W(0`&!"``'D\`Q0I```H+0P"
+M9F`D!D%(W@0`&"0%`/\D!D``#`)F8&2$`4B.`P``/`+_@#1"`44``A(\<&-4
+M<C1"`"0`8A`M.$(`!(Q"```P0@__$$``;R11``&6!`B*W@(`&'P$&*`D8P`"
+MI$,!(CP"%"B.`P``9$).@``#&7@`8A`MW$(`"!!``'(``"@MW@,`&/QB`3C>
+M`P`8E&(!(MQD`3@``C"```(9P`##&"$`8C`C#`)F8'#&NC("`"`M```H+20&
+M``(,`@NN-`>#`!!``%9D10*`W@0`&"0&__\D`Q````8P//R``2C\0```W@0`
+M&/R"``BL0``@K$``0*1``$JD40!$`````````4_\I@`````!3R1C__\48/_[
+M9*4`"&1%`%`D`P!`_*```"1C__\48/_]9*4`""0#``$```````,80`!Q*"L4
+MH/_]`````"1C__^D0P!&```!3SP#``$`0Q`MK$""H````4^.!0``/`/_@-X"
+M`!@T8P%%``,:/'"E5'(T8P`H?`0`.WR$"<,`HQ@MW$(`"``$(3P`@Q@EW&,`
+M`/Q#``C>`@`89$0!'````4\D`P`!<(,`&````4\,`COR`@`@+11``!<``!@M
+MW[\`$`!@$"W?L0`(W[````/@``AGO0`8C@(``-QD#V@``BBX``(9^`"C&"T`
+M8A`O``(1^`""("T(`@OV_@0`&#P$$`T\!1`-9(0..&2E(:@,`!>6)`8![XX"
+M```D`___<$)4<F1"`!PX0@`$C$0``#2$``*L1```"`(,:=^_`!`\!!`-/`40
+M#62$#EADI2&H#``7EB0&`@,(`@QH)`/__V>]_\C_M``@)!0``?^R`!`\$O^`
+M_[```#92`47_OP`P`!*2//^U`"@V4@`D_[,`&`"`@"W_L0`(C((``'!"5'(`
+M4A`M.$(`!(Q1``!^,5P#)C$``1(T`&`\$Q0HE(0(C-X"`!AF<TZ`?`08H"1C
+M``*D0P$@C@(````"$7@`4Q`MW$(`&!!``&0`$:D`W@,`&```*"W\8@%`W@(`
+M&)1&`2#<1`%`#`)F8'#&>?("`"`M```H+20&``,,`@NN)`<`@!!``$MF4@`,
+MW@0`&'P#`#M\8PG#_((`D``#&3RL0``0I$``'JQ``!2D0``<K$``&*11`"2L
+M0``@C@0``-X"`!APA%1RW$(`D`"2D"T`<I`EWD,``/Q#``B.`@````(1>`!3
+MF"W>8@`0$$``0P(`("W>`P`8```H+20&``$"H#@M_&(!,-X"`!@,`@NNW%$`
+MD/XB``#>`@`8W$(`D-Q$```0@``C/`(4````*"V41D4$#`)F8``&,0#>`@`8
+M9$,!&````4]P=``8```!3]X"`!@"`"`MW$(`D&1#`#C\0P`X#`(\AOQ#`$`4
+M0``1```8+=^_`#``8!`MW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]
+M`#@\!!`-/`40#62$#I!DI2'(#``7EB0&`FR.`@``)`/__W!"5')D0@`<.$(`
+M!(Q$```TA``"K$0```@"#/W?OP`P/`00#3P%$`UDA`[89*4AR`P`%Y8D!@)_
+M"`(,_"0#__\\!!`-/`40#62$#Q!DI2'(#``7EB0&`J<(`@S\)`/__V>]_]@\
+M`_^`_[```#1C`47_OP`@``,://^S`!@T8P`<_[(`$`"`@"W_L0`(C((``'!"
+M5'(`0R@M.*4`!(RE``#HH``&9&,`"`!#*"TXI0`$C*4``!2@`%H````````!
+M3R0"``&N`D"````!3]X$`"```"@M#`)F8"0&`(`\`A0`D$)$[!1``&H"`"`M
+MC@(``#P#_X`T8P%%/!,4```#&CQP1%1R-&,`%`"#&"V.9$3T.&,`!(QQ```D
+M`P`!?C$9PR8Q``P"(X@$)`/__Q"#`%X\$A0`CD-$\!!Q``<\!!`-/`40#62$
+M#YADI2$H#``7EB0&`*&.`@``C@-`1!!@`"F6143RE@4`$)8#`!(\!O^`<$)4
+M<C3&`44`!C(\-,8`%`!&("UDQ@`(.(0`!`!&$"V,A@``.$(`!'S&'`,`Q3`'
+M_@9`('##,`.,A```?(0=`P"%(`=P@Q@#_@1`*/X&0##^`T`XC$,``#1C``&L
+M0P`````!3R0"``&N`D!@```!3P``$"W?OP`@W[,`&-^R`!#?L0`(W[````/@
+M``AGO0`HED5$\B0#``&N`T!$I@4`$``%&/H(`@UII@,`$@````!\!0`[9&,`
+M!'RE"<,`!2D\`$,8+0"C&"7<8P``%&``-``````\!/^`-(0!10`$(CQ\`P`[
+M-(0`,'QC"<,``QD\`$00+0!B$"7<0@``$$#_DP`````,`@R0`@`@+1!`_X\`
+M````"`(-AR0"__\`````)`4`_PP"0[(D!@`!"`(-2HX"````````,C(`?P`1
+M$?L`$I`K`D*0(0`2D<``$B/`#`"QJ@)`*"T00``9)`0`!SP%$`UDI0]0`$`P
+M+0)`."T,`,O0-`B``(X#0$0D`@`'KF)$]#P2%`"N443P$&#_P(X"```(`@UH
+ME@4`$``````,`@ON`````!1`_]H`````C@(``#!"!_\(`@V?``(4>#P$$`L\
+M!1`-9(0\:`P"?KQDI0]0/`00#3P%$`UDA`]@9*4A*`P`%Y8D!@":"`(-R8X#
+M0$0`````W(((@#P%_X"0B@B#-*4!192&"(``!2H\?$D#PGQ'"T(`!SQ\``E,
+M/`$G2"5\1Q\#C(@```$G2"4`"E8\?$<&PP$J2"4`!SDX?$H\PP$G2"4`"E%X
+M?$<;`P$J2"4`!SPX<,HZ,GQ"&@,`!C(Z`2=()7$(5'(``A4X?`<`.P%&,"5\
+MYPG#9*,`"`$B$"4`!C`\``<Y/`$%*"T`1A`E`.4H)61I``3\H@``9&@`"(R"
+M``!D90`49&<`#&1F`!AP0E1R`$,8+3P"``$X8P`$-$(!`*QB``",@@``<$)4
+M<@!)$"TX0@`$K$```(R"``!P0E1R`$@0+3A"``2L0```C((``'!"5'(`1Q`M
+M.$(`!*Q```",@@``<$)4<@!%$"TX0@`$C$,``'P#&(2L0P``C((``'!"5'(`
+M11`M.$(`!(Q#``!\`P`$K$,``(R"``!P0E1R`$80+3A"``0#X``(K$```-R"
+M"(`\`_^`D(H(@S1C`464A0B```,:/'Q)`\)\1PM"``<\?``)3#P!)T@E?$<?
+M`XR(```!)T@E``I6/'Q'!L,!*D@E``<Y.'Q*/,,!)T@E``I1>'Q'&P,!*D@E
+M``<\.'"J.C)\0AH#``4J.@$G2"4``A4X`44H)7P'`#MQ"%1R?.<)PV1F``@!
+M(A`E``4H/``'.3P!`Q@M`$40)0#C&"7\8@``/`,``8R"```T8P$`<$)4<@!&
+M$"TX0@`$`^``"*Q#````````W(,`"&2""0!DA!D`:$@``&A'``AH1@`0:$4`
+M&&1"`""P:```L&<`"+!F`!"P90`8%$3_]F1C`"`#X``(`````"0"``(0X@`8
+M)`(``R0"``,0X@`5)`(`!R0"``$0X@`$````````$"T#X``(`````(R#```\
+M`O^`-$(!10`"$CQP8U1R-$(`%`!B$"TD`__\.$(`!(Q"``!\0AG#)$(`"@!#
+M$!0``A`G`$4H)!"@_^X``!`ME,,``"0$`!,D`O__?(-81WP#>X<#X``(I,,`
+M`&>]_^@`@!@M_[$`"`$`B"W_L````."`+?^_`!",H@`LC*8`*"1%__,L1P`!
+M+*4`<P"G*"44H``4W(D`&"1%_X`LI0!`%*``$"0%``@010`Z+$4`"12@`!XD
+M!0`)$$4`*``````D!``+%$0`'`````"@9AD$E@(``#!",`$(`@[4I@(`````
+M```\!!`-/`40#62$#^!DI2*0#``7EB0&"?6N(```E@(``"0#``)\8EA'?`)[
+MAZ8"``#?OP`0```0+=^Q``C?L````^``"&>]`!@D!``'$$0`("3"``*N(```
+M)`,!#I8"``!\8EA')`,``GQB>X<(`@[4I@(```````"M````,,7__PP"0\)\
+MQ@0#E@,``'P"%"!\`UA'?`-[AQ!`_^6F`P``?`-`1S1C@`0(`@[4I@,``##%
+M`/\,`D.R?,8Z`ZX@``"6`@``,$(P`0@"#M2F`@``E@0``#!"__\D1?__,(0P
+M`:8$``"E(@$BE&((BG!'.C)P1/HZ`.0@)0"%("H4@``<?`(@H``&%`(D0@`"
+M,$+__Z4B`2`D1O__E&0(C'"'.C)PA?HZ`.4H)0"F*"H0H``%`````'P$$*`D
+M0@`",$+__Z4B`2"5)`$B)$+__@`"%``DA/_^`$00):XB``"5(@$B)$(`/P`"
+M$8,(`@[4I&)`'"2"``((`@\)I2(!(@````!GO?_8_[$`$`$`B"W_L``(`."`
+M+?^_`"#_L@`8C*(`+-R'`!@D0__S+$8``2QC`',`9A@E%&``"I"(&00D0_^`
+M+&,`0!1@``8L0P`-%&``&#P#$`T(`@]-)`+__P`````\!!`-/`40#62$$`AD
+MI2*H#``7EB0&"GVN(```)`0``I8#`````!`M?(-81WP#>X>F`P``W[\`(-^R
+M`!C?L0`0W[``"`/@``AGO0`H`````'!"^/)D8R"8?&(2"@!```@`````````
+M`*XH`````!`ME@,``#!C,`$(`@]-I@,``(RR`"@#H#`MHZ````P"0]8R1?__
+M?`(4(!!``#.3HP``KB```"0$``*6`P`````0+7R#6$=\@WN'"`(/3:8#``"N
+M(````Z`H+0P"0Z)GI@`!DZ,``9.D`````!`M``,:``"#&"6N(P``E@,``#!C
+M,`&F`P``W[\`(-^R`!C?L0`0W[``"`/@``AGO0`H`````)3D`2```!`ME.,!
+M(B2$__X`!"0`"`(/>"1C__X`````KB``````$"V6`P``,&,P`0@"#TVF`P``
+M)`,``0``$"VN(P``E@,``#!C,`$(`@]-I@,````````R4O__```0+7!C!#(`
+M<I`EKC(``)8#```P8S`!"`(/3:8#`````````*`0+0#`6"V0I0`=`.!`+=R&
+M`!B01P!'9*,``0`#&/A\PQH*E&8`2!3``"^490!*W$,`&#$&#_[?B8-@?&-8
+M`Q#``!\P8___``,P^``#&7@`PQ@M/`8`!@$C&"T`PQ@M:&8&@&3&``&P9@:`
+M?`;X.]Q*`!A]2E@#,4K__P`*&/@`"E%X`&I0+3P#``8!*D@M`&D8+;!F!GB,
+MAP``/`,``@`%2L``0#`M,*4`_P#C&"4!8#@M`&D8)0@"/RZL0P`,``,P^``#
+M&7@`PQ@M/`8`!@$C&"T`PQ@M:&8&:&3&``$(`@^_L&8&:-^*@V`\#``!`&Q@
+M+8V)@L1\#O@[?2GX`R3M__\`"7EX``DQ^`#/,"\MK0`"`48P+1&@_]^PS@!`
+M,0;__S#)#@`5(``],,8!_A#``"N-B8+$)`T`#A3-`$Y]*?@#``DQ>``)2?@!
+M)C`O`48P+6C)`$AE*0`!L,D`2(Q&`$`LR0!!$2#_RR3&__]\QO@#9,8`!P`&
+M,/A\AC(*$,#_Q0````"<S``,?`GX.]Q&`#@!)C`O&,#_OSP)``$`:1@MC&F"
+MQ"0#``(0XP!@?2GX`P`)&7@`"4GX`2-(+P`,8;@!3&`M/`,`!P%)4"T`;!@M
+ML48`*`@"#\JP9J<H?2GX`P`),7@`"4GX`28P+P%&,"UHR0`P92D``;#)`#",
+M1@!`),;__WS&^`-DQ@`'``8P^`@"$`9\AC(*`````)V)@L0`"3%X``E)^`$F
+M,"\!1C`M:,D`4&4I``&PR0!0C8F"Q'P,^#M]*?@#``DQ>``)2?@!)C`O`48P
+M+;#,`%B,1@!`+,D`014@_\$DQO__"`(/RXR'````"3%X``E)^`$F,"\!1C`M
+M:,D`4&4I``&PR0!0C8F"Q'P,^#M]*?@#``DQ>``)2?@!)C`O`48P+;#,`%B,
+M1@!`+,D`01$@_W8DQO__?,;X`V3&``<`!C#X?(8R"A#`_W`\"0`'G,8`#``&
+M,;@!1C`M`28P+6C,IS!EC``!L,RG,(Q&`$`DQO__?,;X`V3&``<`!C#X?(8R
+M"HS&``Q\#/@[<,;YL@%&,"T!)C`M"`(0)+#,IS@```````DY>``)2?@!)S@O
+M``P9N`%#&"T!1U`ML48`(#P'``<`XQ@M"`(/RK!FIR`````````!3R0#``%P
+MHP`8```!3YR"&>!HJ```:*<`"&BF`!!D0@#,:*4`&``"$7@`@A`ML$@``+!'
+M``BP1@`0L$4`&(R"&>`00``$)$+__P/@``BL@AG@`````*"#&>0D`@`"`^``
+M"*R"&>"<@BX`9*,"`&1"``T``A)X`((0+6BI``!HJ``(:*<`$&BF`!ADI0`@
+ML$D``+!(``BP1P`0L$8`&!2C__9D0@`@C((N`!!```0D0O__`^``"*R"+@``
+M````)`(`":R"+@`D`@`!`^``"*""&>0`````9[W_N/^S`!@`H)@M_[(`$`"`
+MD"W_OP!`_[<`./^V`##_M0`H_[0`(/^Q``@0H`"<_[````"@H"TD`O__?%3_
+MQMS/`!```,`MC-D`&'WO!X,1X``"C-``$(S8`#@K(@`"%$``50`````2``"/
+M`H`0+0)`0"T``!@M``!P+2<3``$(`A#P)`00``*%<"UE"``(W<L``&1"``A]
+M960"`6!0+0"G:"$`A6`C*:T0`0%E6"T!C3@*?6M(`0#E*"$"!X`C?*KD!@`0
+M:"O]R@````-0`-TE```E40`!`CE@*@)J4"%D8P`!?.7D!@&L."1]94@%$.``
+M&_TE```J!Q`!`(!(+0('2`L`>"@M_0`````%*/@!(#@M``-(^!7@_]L"24@M
+MW24````#4`#<2P```@>`(R51``$`$&@K?.7D!@(Y8"I]94@%`:PX)/TE```"
+M:E`A9&,``64(``@4X/_G9$(`"!'@``G?OP!`W<,``"0"$`!\8V0"$&(`/@(@
+M$"TE2O__K,H`.-^_`$`"(!`MW[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`
+M"-^P```#X``(9[T`2````````*`M&@#_\0``B"TD%Q__*@(@``+@&"T"5"`M
+M`@(8"SP6$`T\%1`-9M80,&:U(W@F,0`!`&`0+6:4``AP0V0S`@*`(WYC2`4"
+M8I@M$F``$?R#````````&@#_W=^_`$`J`B```N`8+0("&`L"5"`M)C$``6:4
+M``@`8!`M<$-D,P("@"-^8T@%`F*8+19@__+\@P```L`@+0*@*"T,`!>6)`83
+MC1X`_^\J`B``"`(1%-^_`$``````K,H`.-^_`$#?MP`XW[8`,-^U`"C?M``@
+MW[,`&-^R`!#?L0`(W[````/@``AGO0!("`(0P@``H"T#`%`M``!P+17@_ZT`
+M`(@M"`(1%-^_`$!GO?^@_[\`6/^^`%#_MP!(_[8`0/^U`#C_M``P_[,`*/^R
+M`"#_L0`8_[``$(S#`##<W@`HE)4`$)31`!(P8O___Z(`"#!C__\08``\_Z,`
+M``"@L"T``)`M``"X+=^B``@D`P`$`!=(^`+)F"W^8````%)0(RE"``4`8E`*
+M)N(``3!"__\90``Z`4"@+0@"$8T``(`M`````"80``$R$/__`A08*A!@`!\"
+MX!`M``(@^``0*'@"92@M)$(``0+$("T"L3`K$,```@(@&"T"H!@MI*,```(C
+MB"_?Q@``,%?__S(Q__]GW@`(?`88I'P#&6048/_I_(,``#P$$`T\!1`-)A``
+M`62$$'ADI2.8)`83P`P`%Y8R$/__`A08*A1@_^,"X!`MWZ,``"92``0R4O__
+M`D,0*Q1`_\K?H@`(W[\`6-^B``C?O@!0W[<`2-^V`$#?M0`XW[0`,-^S`"C?
+ML@`@W[$`&-^P`!`#X``(9[T`8-^C```F4@`$,E+__P!`N"T"0Q`K%$#_MM^B
+M``@(`A&SW[\`6`````!GO?^X_[(`(`"`D"W_L0`8`."(+?^P`!``H(`M_[\`
+M0/^U`#C_M``P_[,`*-S3``C<P@``_[,`"'YS2`$28`!:_Z(```)@$"TD`___
+M?&+_QI14`$0"("`M```H+0P"9F`D!@$`W@(`$#*4``?H7P`^`H"H+=X"``!\
+M14@!``(H"@(@("T,`A"R`@`P+0)`("T"`#`M,%(`#P`2*/@,`A%B`B4H+9(#
+M`!3?A(-@,$@`#R4&__]P8_GZ``8P@P#(,"$DQ@`!%&``+`#2,"%^H_@#``,1
+M.``#*;@`HB@O/`(`"`"%*"T`12@M:**H2&1"``&PHJA(?`+X.P`#*3@``QFX
+M`&48+P"#("T\`P`(`&08+;!BJ&````%/WZ(```*`("W?HP`(`Z`H+0(@."U]
+M`DF&?F-(!7Y"&`;_HP`(#`"\G/^B``#?OP!`W[4`.-^T`##?LP`HW[(`(-^Q
+M`!C?L``0`^``"&>]`$C>`@`(?$5(`0@"$>@``B@*?J/X`P`#*;@``Q$X`*(0
+M+SP%``@`@A`M`*(0+6A%J$!DI0`!"`(2!;!%J$``````"`(1W```$"UGO?_`
+M_[$`"`"@B"W_OP`X_[8`,/^U`"C_M``@_[,`&/^R`!#_L```?!+X.P`%@``P
+MH@/_`!"OP@`0@"<`%1`+`!"'PSP4$`T``!@M9I00R#P3$`T`0*@M?`(`.WQ"
+M"<,RM?__`@*`)#P"_X`T0@$I``(2/'X".09^HLP'W$(``!!```W?OP`X)`/_
+M_WQB_\;?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`$``````
+M$&``"P*`("U\%O@[)`0``PP`MU("TK`O`L(0*Q1`_^0D`P`!"`(26-^_`#@`
+M````9F4CN"0&%`H,`!>6`B`X+3P$$`UDA!#H9F4CN`P`%Y8D!A0+"`(29```
+M````````9[W_X/^Q``@`H(@M_[(`$"0%``+_L```_[\`&`P"$C0`@)`M$$``
+M+@!`@"T"0"`M#`(2-"0%``(00``B`$`@+=XC`"@"("@M9BP`@&AK``!H:@`(
+M:&D`$&AH`!AH9P`@:&8`*&AC`#"R"P``L@H`"+()`!"R"``8L@<`(+(&`"BR
+M`P`P:*@``&BG``AHI@`0:*,`&&2E`""PB```L(<`"+"&`!"P@P`8%*S_]F2$
+M`"#<0P``)`0"`/Q0`"A\@U@&_$,``-^_`!C?L@`0W[$`"-^P```#X``(9[T`
+M(``````(`A*K```0+3""`']PA/GZ``(0*P!$$"$#X``(``(1P!"``!0`````
+M,,,`?W#&^?H``Q@K``40``!F,"$PI0/_?`,`.WS&P`,$0``-?&,)PWR$2`$`
+M``%//`+_@#1"`2D``A(\?&(Y!GRBS`=\PEC'_$0```/@``@`````````````
+M&"T(`A+&```H+0````!GO?_8)`,`!?^Q`!``H(@M_[``"`"`@"W_OP`@_[(`
+M&)"B`$<00P!6IZ```"0#``800P!+)`,``1!#``T`````EZ<```(`("T"("@M
+M#`(/I```,"W?OP`@W[(`&```$"W?L0`0W[``"`/@``AGO0`HE*@`;MR#`!@\
+M!``!90@``0`($/A\8A(*`$00+9!"@L`00/_KE*4`;-X"0"`DI``!,(3__P""
+M`!\`0`'T```H$@``(!`0@`!^``40`"1"``$D1O__``@X^'S&^`,``!`M9,8`
+M`0@"$P\`!C#X`````-X#`!A\9QH*W&,`"`!B&"UD0@`(W&4``'P%(*1\!"%D
+M%$;_]_QD```\`P#_-&/_/T`">```0Q@D/`(`#31"EP`48O_'``A`^-X"`!B6
+M(P!J`@`@+=XG`%A\2!(*,&@``91&`$2010!)),;__PP"/C8PQO__"`(2YY>G
+M````````W*0`*!"`_[>7IP``E@8`$`P"$KHD!0`'"`(2YOX@`"B4J`!NW(,`
+M&&4(`!(`"!#X?&(:"I!B`&P00/^IE*0`;-X"0"@DA``!,(3__P""`!\`0`'T
+M```H$@``(!`0@``X``40`"1"``$D1O__``@X^'S&^`,``!`M9,8``0@"$U(`
+M!C#X`````-X#`!A\9QH*W&,`"`!B&"UD0@`(W&4``'P%(*1\!"%D%$;_]_QD
+M```\`P#_-&/_/T`">```0Q@D/`(`#31"EP`48O^&EZ<``-X"`!@`")#XEBH`
+M:@(`("W>)P!8`Z!8+7Q2$@J6*0!H,4@``7U*`$.41@`DD$4`'23&__\,`CTX
+M,,;__Q!`_W67IP``W@(`&&1$`1@```%/)`/__W"#`!@```%/W@(`&`!2D"T(
+M`A+F_D`````````40/_)``````@"$UL\`P#_%$#_@P`````(`A,9/`,`_V>]
+M_\#_M@`P`."P+?^T`"``P*`M_[````"`@"W_OP`X_[4`*/^S`!C_L@`0_[$`
+M"!"@`$_<DP`8EF(!(`"B$"H00`!M9+4`$@`5B/@"<8@MWB(``!!``'(`````
+M#`(]Q`````#>(@``D$,`;!!@``@`````W$0`"!"```4`````E@8`$`P"$KHD
+M!0`'WB(``)1#`"P48`!.9$0`.-Q#`#C<<0``9'#_^!!D`!9F,?_X`!60^`)R
+MD"W>!```)`4``@P"$KHD!@`0W@(`$-X#``@"`"`M)`4``B0&`!@"((`M_&(`
+M"`P"$KK\0P``WD(``-XE``AF)``(9$,`.!2#_^YDL?_X`!6H^`!`("T``"@M
+M)`8`@`P"9F`"=:@M_J```&9C`1@```%/)`+__W!B`!@```%/EH(``#!",`&F
+M@@``KL```-^_`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]
+M`$``````/`00#3P%$`UDA!$(9*4B2`P`%Y8D!@>*EH(``"0#`0%\8EA')`,`
+M`GQB>X>F@@``KL```-^_`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L```
+M`^``"&>]`$``````/`00#3P%$`UDA!%09*4B2`P`%Y8D!@>VEH(```@"$^HD
+M`P$,`````#P$$`T\!1`-9(01"&2E(D@,`!>6)`8'E):"```(`A/J)`,!`0``
+M```\!!`-/`40#62$$2ADI2)(#``7EB0&!Y^6@@``"`(3ZB0#`0$`````9[W_
+MJ"0#``;_M@`X`,"P+?^R`!@`@)`M_[``"`"@@"W_OP!0_[X`2/^W`$#_M0`P
+M_[0`*/^S`"#_L0`0E,(``-R5`!C_IP``?&)81WP">X>DP@``WZ,``!"@`).L
+M8```EJ(!(@"B$"H00`"@9+<``0`7$/@"HO`MW\0``!"``*$\!1`-```!3SP#
+M``$D!0`!`(,@+:R%@H````%/W\0```"#&"V,9(*@%(``6P)`("T,`CY^`@`H
+M+=Y"`!@`%Z#X/`0``30#@K!\5!(*`$0@+0!#&"W<@H*PW%$``&10__@00P`?
+M9C'_^```\"TT$X*PW@0``"0%``(,`A*Z)`8`@-X"`!#>`P`(`@`@+20%``(D
+M!@`8`B"`+?QB``@,`A*Z_$,``-Y"`!C>)``()\<``68C``@`X/`M?%02"@!3
+M$"T48O_K9)'_^#P$$`T\!1`-9(020&2E(C`,`!>6)`8'0P`7@/@\`@`!`K"`
+M+=X$````@A`MD$*"P!!```D`````W((`"!!```8`````ED8`$`!`("T,`A*Z
+M)`4`!]X$````%[CX```H+30&@P`,`F9@`K>X+?[@``!FHP$<```!3R0"__]P
+M8@`8```!3Y;#`````!`M,&,P`:;#``#?HP``K&```-^_`%#?O@!(W[<`0-^V
+M`#C?M0`PW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`6`````",9X*@/`(0
+M#3P$$`UD12(P9(01L`P`%Y8D!@<D?!/X.SP1``$`````W\,```!Q&"V,8X*@
+M$&``#SP"$`U\`_@[)`0``PP`MU(`<Z`O``(0N`*"&"L48/_T/`,0#3P$$`UD
+M92(P9(01Z`P`%Y8D!@<I/`(0#3P$$`UD12(P9(02,`P`%Y8D!@<M"`(41`)`
+M("T\!!`-/`40#62$$0ADI2(P)`8'``P`%Y8`````EL,``"0$`0$D`O__?(-8
+M1R0$``)\@WN'IL,``-^C```(`A21K&```#P$$`T\!1`-9(01"&2E(C`(`A3'
+M)`8'"CP$$`UDA!&(9*4B,`@"%,<D!@<59[W_V/^Q`!C_OP`@_[``$-R"`!@0
+M0``K`("(+91#`2(L8P`"%&``$B00``%F`P`!,@4`_P`#&/@"("`M?$,:"F>F
+M``@08``$`Z`X+0P"%!@`````WB(`&)1#`2(F$``!,A#__P(#&"L48/_Q9@,`
+M`91#`2`L8P`"%&``$B00``%F`P`2,@4`_P`#&/@"("`M?$,:"F>F``@08``$
+M`Z`X+0P"$X8`````WB(`&)1#`2`F$``!,A#__P(#&"L48/_Q9@,`$M^_`"#?
+ML0`8W[``$`/@``AGO0`H9[W_6/^^`)@`H/`M_[8`B`#@L"W_M`!X`("@+?^_
+M`*#_MP"0_[4`@/^S`'#_L@!H_[$`8/^P`%B4@P`0G+(`$/^F``@D!@`-_Z,`
+M(-RC`"B4A``2_Z,`*-^C`"#<H@`0_Z@`$`)#`!\`8`'T?$('@P#","_?H@`@
+M_Z8`,```&!(``"@01*,``-^C`"@`8@`?`$`!]``%$"M$)0```$40+0``&!`4
+M8`"@_Z,`0-^C`"!P@R@#WZ,`*``2,"L``Q`K`,(0)!!``,[?HP`PWZ(`(/^C
+M`$AP8H@#``,8^/^C`!@D`O___[$``/^@`#@`LB@K$*``"0)`F"W?HP`H9)/_
+M_P`$(/AD9?_XWZ,`('RD(@IR8Y@#_Z0`.-^C`"#?I0`P`F,`'P!@`?3?HP``
+MK\,`$-^C`$BOPP`P```8$@!E`!\`H`'T``"H$A*@`#,`````"`(5=0``@"W?
+MQ````)$@+?_$``#?Q``H9A```=^C`!@"<9@O`E&0+P"#("T2%0`F_\0`*-^E
+M``@,`A)Z`H`@+=^G`!`"@"`M`\`H+0!`N"T00`!M`L`P+=Q"`"C?HP``K$,`
+M""0#``+>R@`(WL(``'[J2`7^R@`(?&)K!@P"$<C^P@``!$``;@````#?Q``0
+MZ)[_X`````#(G__;WZ,`&-_$``AF$``!`G&8+P)1D"\`D2`M_\0`"-_$`"@`
+M@R`M%A7_W/_$`"@28``JWZ,`*-^C`"``$X``WZ4`"`*`("VOT``0`F,`'P!@
+M`?0``!`0```8$@`"$"L`0Q`M#`(2>J_"`#`00`!``$"X+=Q"`"@D`P`"WZ<`
+M$`*`("T#P"@M`L`P+:Q0``C>R@`(WL(``'[J2`7^R@`(?&)K!@P"$<C^P@``
+M!$``/@````#?Q``0Z)X`!@````#HGP!0`````-_$````DR`M_\0```)3D"_?
+MHP`HWZ0`(-^E`$#_H@!0`&0`'P"``?0`@#`M`&4@+R0%``<``#@0#`(2N@!G
+M(`K?HP`X`!(P*__#`"@``R@KEH0`$@#%,"3?HP`@WZ(`4!#``#QP@R@#WZ,`
+M.`@"%4[_HP`H`````-^C`"#?I0!``&4@+S"%``<`!"#Z``4H*P"D("T`@B@K
+M`$4@"@@"%4%P@R@#`````*_2`!`D`O__W[\`H-^^`)C?MP"0W[8`B-^U`(#?
+MM`!XW[,`<-^R`&C?L0!@W[``6`/@``AGO0"HWN0`*"0%``+_H@!0#`(2NB0&
+M`#@"X"`M)`4``@P"$KHD!@"`K](`$-^_`*#?H@!0W[X`F-^W`)#?M@"(W[4`
+M@-^T`'C?LP!PW[(`:-^Q`&#?L`!8`^``"&>]`*C?Q``(`E.0+P"3("T(`A7$
+M_\0`""0"___?HP`()`4``B0&`#C<9``H#`(2NO^B`%`(`A7^WZ0`"`````!G
+MO?Z0/`,`__^R`3`T8_\__[$!*`"`B"W_L`$@`,"0+?^_`6@`H(`M_[X!8/^W
+M`5C_M@%0_[4!2/^T`4#_LP$XE)0`$#P$``U``G@`_Z`!``!#&"3_H`$(-(27
+M`!!D`*"/@H)\`Z`@+3!3``<``"@M)$(``:^"@GP,`F9@)`8!`-^C`0".)```
+M)`(``7P#[P9\0X0&-(1``*>D`0A\`U@'$D``!GQ#_\??H@$()`0``GR#:P9^
+M0D@%_Z(!"-X(`!!]!P?#``<_^!#@`'\D!``!W@(`"'R#K0;_HP$`?$9(`0`"
+M,`I]!"X#,(0`_RR%``40H`!I)`+__SP"$`UPA"CR9$(A`'Q$(@H`@``(````
+M`!#``<D\!!`-W@(`(!!``8``````C@(`$!!``7T`P"@M`Z`@+0P"$+("`#`M
+MEB,`$-X&`""."``0,$(`#R1E__\D20`!`*8H)``)2/A]!/@#`H6@+]^G`0``
+ME"@K`(6@"P`"*/@#I2@M`$`8+7Q'&`8#J1`M_Z<!`#**___\H```<)0@*Z2J
+M``#\1@``WZ8!`-X'`"A\R1F")2(``0`'6"LP0@`/`(L@)'Q&2880@``,_Z8!
+M`"1D``(!"D`C``0@^"4B``*DJ``"`Z0@+?R'```P0@`/WZ0!`'Q$28;_I`$`
+MD@4`%"1&___?A(-@``8P@P#"$"$D1@`!<*7Y^@##,"%^8_@#%*`!]``#$3@`
+M`RFX`*(0+SP%``@`@A`M`*(0+6A%J$ADI0`!L$6H2'P%^#L``Q$X``,9N`!B
+M$"\`@B`M/`(`"`!$$"VP1:A@```!3P)@("UGI0$`#`"\G`.@."T00`!H/`00
+M#3P%$`W_H@$89(036&2E(V@,`!>6)`81A]^B`1@`````W[\!:-^^`6#?MP%8
+MW[8!4-^U`4C?M`%`W[,!.-^R`3#?L0$HW[`!(`/@``AGO0%PW@(``'P#K0;_
+MHP$`?$9(`0@"%E<``C`*E,0`#"0#``80@P`.``"8+20#555\1/@#``,<>#1C
+MJJMP@Q@#``,8O@`#($```YC``F28(V>#@(@`4Y@C?G/X`WQSF8HD0@`!`Z`@
+M+:^"@GP``"@M#`)F8"0&`0#?HP$`CB0``"0"``%\`^\&?$.$!C2$0`"GI`$(
+M?`-8!P@"%DA\0__'`````-X'`"`LQ``!+.(``0""$"440`&./`00#8X"`!`0
+M0`&+?`-K!MX%`$#_HP$`WZ(!"-^$@V!\HT@!``48"GQB2`5^8_@#_Z(!"``#
+M*;@``Q$X`*(0+SP%``@`@A`MZ1\!:@"B$"UH1:A(9*4``;!%J$A\!?@[``,1
+M.``#&;@`8A`O`((@+3P"``@`1!`ML$6H8````4^."``0`F`@+0P`O2!GI0$`
+M%$``Y#P$$`VN```0W[\!:-^^`6#?MP%8W[8!4-^U`4C?M`%`W[,!.-^R`3#?
+ML0$HW[`!(`/@``AGO0%P$.``RP````#>!P``+.0``2S"``$`@A`E%$`!2SP$
+M$`V.`@`0$$`!2'P#:P;?H@$(WX2#8/^C`0!^8_@#?`)(!0`#*;C_H@$(``,1
+M.`"B$"\\!0`(`((0+>D?`3<`HA`M:$6H2&2E``&P1:A(?`7X.P`#$3@``QFX
+M`&(0+P""("T\`@`(`$00+;!%J&````%/C@@`$`)@("T,`+T@9Z4!`!!`_\H\
+M!!`-/`40#?^B`1ADA!189*4C:`P`%Y8D!A()"`(6Q-^B`1@0X`";`````-X'
+M``#)%P`++-0``9)"`!T00`"E)`(``WQ#G(;?H@$(?`-K!O^C`0!\`D@%_Z(!
+M""S4``$L\@`!`E00)11``*(\$1`-C@(`$!1``-,\!!`-9(02<&8E(V@,`!>6
+M)`81*HX#`!`48/]&)`+__SP$$`UF)2-H_Z(!&&2$$N@D!A$S#``7E@``."T(
+M`A;$WZ(!&-X"`"`F@____Z8!&`(@("T"0"@M`&(0)`P"$GH"@J`OWZ8!&!!`
+M`0\`0*@MW$(`*``4L``"P/`MK%8`"-^C`0C?H@$`?J-(!?^C`0@D`P`"?&)K
+M!O^B`0````%/W@(`$,A>`)EGH@$`$,``!```N"T`P+@M)`+__WQ7_\;>Y@``
+M9Z(!`-X'`"`"8"`M_Z(!$`!`*"T"P$`M#`"]('S&2`&2`P`4<&/Y^A1@`+O?
+MA8-@?F/X`P`#,;@``R$X`,0@+SP&``@`I"`M`,0@+6B&J$ADQ@`!L(:H2'P$
+M^#L``S$X``,9N`!F&"\`HR@M/`,`"`!E&"T$0`#=L&2H8-X"`!#(7@`W*LD0
+M`-[B``!^@N0&%2``0_[B```D`@`!K@(`.(X"`!`"("`MWZ<!$`(`*"W^```@
+M`D`P+0!>\",#H$`M#`(5%*X>`!#?OP%HW[X!8-^W`5C?M@%0W[4!2-^T`4#?
+MLP$XW[(!,-^Q`2C?L`$@`^``"&>]`7`\$1`-/`00#62$%(!F)2-H#``7EB0&
+M$4?>`@`@$$``5#P$$`V.`P`0%&#^TR0"__\\!!`-9B4C:/^B`1ADA!+H)`81
+M40P`%Y8``#@M"`(6Q-^B`1@`````"`(7,]X'``@(`A=EW@<`",A?`!$`````
+MW@(`"`!4H"T(`A?0_A0`"#P%$`W_H@$89(03Z&2E(V@,`!>6)`81Y`@"%L3?
+MH@$8"`(7:WP#C$8(`A?0K@``.-X"````5*`M"`(7T/X4```\!!`-9(02<&8E
+M(V@,`!>6)`81*A*```8\!!`-9B4C:&2$$J@D!A$M#``7E@``."T20/]9/`00
+M#68E(VADA!+()`81,`P`%Y8``#@M"`(7?8X#`!``````/!$0#68E(VADA!2`
+M#``7EB0&$4<\!!`-9(02J&8E(V@D!A%*#``7E@``."T(`A?MW@(`(`````#>
+M!P`@_Z(!$`)@("T`0"@M#`"](`+`0"T(`A>P``"X+68E(VADA!,P)`813@P`
+M%Y8``#@M"`(7\(X#`!``````WX2#8'YC^`,``RFX``,1.`"B$"\\!0`(`((0
+M+>D?`$(`HA`M:$6H2&2E``&P1:A(?`7X.P`#$3@``QFX`&(0+P""("T\`@`(
+M`$00+;!%J&````%/C@@`$`)@("T,`+T@9Z4!`!!`_K\\!!`-/`40#?^B`1AD
+MA!,(9*4C:`P`%Y8D!A$^"`(6Q-^B`1@`````?F/X`P`#,;@``R$X`,0@+SP&
+M``@`I"`M`,0@+6B&J$!DQ@`!"`(7OK"&J$``````:$6H0&2E``$(`A<4L$6H
+M0&A%J$!DI0`!"`(72[!%J$`\!1`-)`+__V2$%!C_H@$89*4C:`P`%Y8D!A'T
+M"`(6Q-^B`1@\!1`-)`+__V2$$ZC_H@$89*4C:`P`%Y8D!A'0"`(6Q-^B`1AH
+M1:A`9*4``0@"&%:P1:A```,IN`"B$"\\!0`(`((0+0"B$"UH1:A`9*4``0@"
+M%JVP1:A`"`(6Q"0"__\\!!`-/`40#20"__]DA!.`_Z(!&&2E(V@,`!>6)`81
+MJ]ZD`"@D!0`"#`(2NB0&`#@"H"`M)`4``@P"$KHD!@"`"`(6Q-^B`1@`````
+M9[W_./^S`*``X)@M_[(`F`#`D"W_L0"0`("(+?^P`(@`H(`M_[\`P/^V`+C_
+MM0"P_[0`J)3"``#<HP!`W*P`2-RK`%`D!0`&?*)81P`#0#_>!P!8?`)[A]X&
+M`&!\""B@`"4L`MX*`&APK?_OW@@`>-X)`'"F0@``KF```(R."P3_H``(_Z``
+M$/^@`!A\#A"@`"(4`O^@`#``12@K_Z``.`&E*"3_H`!`_Z,`2/^L`%#_JP!8
+M_Z<`8/^F`&C_J@!P_ZD`>!2@`=+_J`"`CZ,`="04``$P8@#_$%0`7R0%``(0
+M10"C)`4``Q1%`=$D"0`*C(A`%)"*0!A\=5P#)K4``0$H2",E"``!``D00``)
+M*0``HB@C``@8>``($3@`!;%``$,0+P`5J(```AEX`+:P(0!#$"T"U1@K9$(N
+M"`!J&"048`$_`((0+9>C`!0D!0`"_Z(``"0"``&OM0`0_Z<`('Q#:@?_I@`H
+M#`(2-*>C`!000`(C`$"@+0!`*"T"`!@M9@(`@&AH``!H9P`(:&8`$&AD`!AD
+M8P`@L*@``+"G``BPI@`0L*0`&!1B__9DI0`@WH,``"0&`@#>@@`8`Z`H+0(@
+M("U\PU@&`H`P+?Z#``".(P``?&)8!_Z"`!@\`@`#D@,`'0`#&L``8A`EKH(`
+M#-Z"``A\`@@&#`(6'OZ"``@\!1`-)`/__V2E(S`00P%O)`8/;Y9#`````!`M
+M?`-81R0$``)\@WN'ID,``*Y@``#?OP#`W[8`N-^U`+#?M`"HW[,`H-^R`)C?
+ML0"0W[``B`/@``AGO0#(C((9X'QU7`.0A1GD)K4``0`5J(```K`C)$,``0`6
+ML4!\8_@#)M8`8&1C`,P"U1`K``,9>`!%$"040`!_`(,8+9>B`!0D!0`"_Z,`
+M`"0#``&OM0`0_Z<`('QB:@?_I@`H#`(2-*>B`!000`'/`$"@+0!`*"T"`!@M
+M9@(`@&AH``!H9P`(:&8`$&AD`!AD8P`@L*@``+"G``BPI@`0L*0`&!1B__9D
+MI0`@WH,``"0&`@#>@@`8`B`@+0.@*"U\PU@&`H`P+?Z#``".(P``?&)8!_Z"
+M`!@\`@`#D@,`'0`#&L``8A`EKH(`#-Z"``A\`@@&#`(6'OZ"``@D`___$$,!
+MK`````#>(P`@```0+:!@`'P(`AD]ED,``(R"+@!\=5P#D(49Y":U``$`%:B`
+M``*P(R1#``$`%K)`?&/X`R;6%`!D8P`-`M40*P`#&G@`11`D%$`!*0"#&"V7
+MH@`4)`4``O^C```D`P`!K[4`$/^G`"!\8FH'_Z8`*`P"$C2GH@`4$$`!B0!`
+MH"T`0"@M`@`8+68"`(!H:```:&<`"&AF`!!H9``89&,`(+"H``"PIP`(L*8`
+M$+"D`!@48O_V9*4`(-Z#```D!@(`WH(`&`.@*"T"("`M?,-8!@*`,"W^@P``
+MCB,``'QB6`?^@@`8/`(``Y(#`!T``QK``&(0):Z"``S>@@`(?`((!@P"%A[^
+M@@`(/`40#20#__]DI2,P$$,`U20&#P7>(P`@```0+:!@`'T(`AD]ED,``)>B
+M`!0D!0`"_Z,``"0#``.OM@`0_Z<`('QB:@?_I@`H#`(2-*>B`!000`%1_Z(`
+M0*!4```"("`M`Z`H+0P"%AX"`#`M)`/__Q!#`5_?I`!`)`(ZER0&__^0@P``
+M?`,<(!1@``8D!0`""`(:"0`````D0O__$$8`$20%``(```%/WZ0`0)"%``!\
+M!2P@%*#_^``````40``(`````#P$$`T\!1`-9(04\&2E(S`,`!>6)`8.6-^D
+M`$`D!0`"#`(2NB0&`(`"("`M#`(2-"0%``(00`$G`$"@+0!`*"T"`!@M9@(`
+M@&AH``!H9P`(:&8`$&AD`!AD8P`@L*@``+"G``BPI@`0L*0`&!1B__9DI0`@
+MWH,``"0$`@#>@@`89B<9@`.@*"T"@#`M?(-8!@*VJ"/^@P```B`@+8XC``!\
+M8E@'_H(`&#P"``.2`P`=``,:P`!B$"4D`P`!KH(`#-Z"``A\`@@&_H(`")>B
+M`!3_IP``K[4`$'P">\=\8FH'WZ,`8*>B`!3_HP`@WZ,`:`P"%A[_HP`H/`40
+M#20#__]DI2,P%$/_2B0&#G$(`AJJ/`00#9>C`!0D!0`"_Z(``"0"``.OM@`0
+M_Z<`('Q#:@?_I@`H#`(2-*>C`!000`#E_Z(`0*!4```"("`M`Z`H+0P"%AX"
+M`#`M)`/__Q!#`./?I`!`)`(ZER0%__^0@P``?`,<(!1@``8`````"`(:;B0%
+M``(D0O__$$4`"0````````%/WZ0`0)"#``!\`QP@%&#_^``````00`!&````
+M`"0%``(,`A*Z)`8`@`(@("T,`A(T)`4``A!``,(`0*`M`$`H+0(`&"UF`@"`
+M:&@``&AG``AH9@`0:&0`&&1C`""PJ```L*<`"+"F`!"PI``8%&+_]F2E`"#>
+M@P``)`0"`-Z"`!AF)RX(`Z`H+0*`,"U\@U@&`K:H(_Z#```"("`MCB,``'QB
+M6`?^@@`8/`(``Y(#`!T``QK``&(0)20#``&N@@`,WH(`"'P""`;^@@`(EZ(`
+M%/^G``"OM0`0?`)[QWQB:@??HP!@IZ(`%/^C`"#?HP!H#`(6'O^C`"@\!1`-
+M)`/__V2E(S`40_Z3)`8/3CP$$`T,`!>69(05,`*`("TD!0`"#`(2NB0&`(`(
+M`AE")`+__SP$$`T\!1`-9(05H&2E(S`,`!>6)`8/-@@"&FW?I`!`ED,``"0$
+M``(D`O__?(-81WP#>X>F0P``"`(90JY@``"60P``)`0!"20"__]\@UA')`0`
+M`GR#>X<(`AE"ID,``)>B`!0D!0`"_Z,``"0#``.OM@`0_Z<`('QB:@?_I@`H
+M#`(2-*>B`!000`!A_Z(`0*!4```"("`M`Z`H+0P"%AX"`#`M)`/__Q!#`&??
+MI`!`)`(ZER0&__^0@P``?`,<(!1@``8D!0`""`(:^0`````D0O__$$8`$20%
+M``(```%/WZ0`0)"%``!\!2P@%*#_^``````40``(`````#P$$`T\!1`-9(04
+M\&2E(S`,`!>6)`8.R-^D`$`D!0`"#`(2NB0&`(`"("`M#`(2-"0%``(00``W
+M`$"@+0!`*"T"`!@M9@(`@&AH``!H9P`(:&8`$&AD`!AD8P`@L*@``+"G``BP
+MI@`0L*0`&!1B__9DI0`@WH,``"0$`@#>@@`89B<:``.@*"T"@#`M?(-8!@*V
+MJ"/^@P```B`@+8XC``!\8E@'_H(`&#P"``.2`P`=``,:P`!B$"4D`P`!KH(`
+M#-Z"``A\`@@&_H(`")>B`!3_IP``K[4`$'P">\=\8FH'WZ,`8*>B`!3_HP`@
+MWZ,`:`P"%A[_HP`H/`40#20#__]DI2,P%$/^HB0&#N((`AJJ/`00#0@"&4(D
+M`O__/`40#20&#I4(`AJI9*4C,#P$$`T\!1`-9(05:&2E(S`,`!>6)`8/*@@"
+M&4(D`O__/`00#3P%$`UDA!5H9*4C,`P`%Y8D!@Z\"`(90B0"__\\!!`-/`40
+M#62$%+ADI2,P#``7EB0&#DX(`AE")`+__V>]_]C_L````("`+?^_`"#_LP`8
+M_[(`$/^Q``B0D0H#)C$``3(Q`/_`@@`H%$#__B0"``'@@@`H$$#_^P````#<
+M@@`@C$4`)(Q#`"`0HP`/`````(Q%`'",0P!L$*,`!`````"00P!\$&``<P``
+M``",1`!XC$,`=!"#``0`````D$(`?1!```P"`"`M```!3ZX``"@```%/```0
+M+=^_`"#?LP`8W[(`$-^Q``C?L````^``"&>]`"@,`A(T)`4``A!``+8`0)@M
+MW@,`(`(`("TD!0`"G&(`=&1"`!(``A"X`&(0+9!&``&00P`"C$(``*9@`!(`
+M!C(```,<`'Q"%T,`PQ@E,$(`_P!B$"6N8@`(W@(`&-Q"``B,0@`@IF(`$-X"
+M`""<0P`D``,8N'Q#%0JF8@`4W@(`&-Q"`)`,`A(T_F(``!!``)4`0)`MW$0`
+M`"0%`@#<0@`8```8+0``,"TD"A``?*18!OY$``".!```_E,`*'R"6`?^0@`8
+M/`(``HX$``"B0``=`((0):Y"``R6:``4ID@`1-X"`!C<20`("`(;P64I`H`D
+MQ@`!$,H`#`)`("U](SH*``<X/Q3H__ID8P`(KD8`!`(`("V.9@`(`D`H+0P"
+M#Z269P`6`D`@+20%``(D!@"`#`(2NB8Q``'>`@`@)`,``:!#`'W>`@`@C$,`
+M="1C``$`<0`;`B`!]```(!"L1`!TW@(`((Q#`"0D8P`!`'$`&P(@`?0``"`0
+M"`(;=ZQ$`"0,`A(T)`4``A!``%8`0)@MW@,`(`(`("TD!0`"G&(`;&1"``H`
+M`A"X`&(0+9!&``&00P`"C$(``*9@`!(`!C(```,<`'Q"%T,`PQ@E,$(`_P!B
+M$"6N8@`(W@(`&-Q"``B,0@`@IF(`$-X"`""<0P`D``,8N'Q#%0JF8@`4W@(`
+M&-Q"`)`,`A(T_F(``!!``#4`0)`MW$0``"0%`@#<0@`8```8+0``,"TD"A``
+M?*18!OY$``".!```_E,`*'R"6`?^0@`8/`(``HX$``"B0``=`((0):Y"``R6
+M:``4ID@`1-X"`!C<20`("`(<(64I`H`DQ@`!$,H`#`)`("U](SH*``<X/Q3H
+M__ID8P`(KD8`!`(`("V.9@`(`D`H+0P"#Z269P`6`D`@+20%``(D!@"`#`(2
+MNB8Q``'>`@`@)`,``:!#`'S>`@`@C$,`;"1C``$`<0`;`B`!]```(!`(`AO:
+MK$0`;(X"``!P0E1R9$(`'#A"``2,0P``-&,``JQ#``````%/K@``*````4\(
+M`AM[)`+__P````#<@@`(D(,*`Y!"`0,D8P`!$$``)S!C`/_`@@`H%$#__B0"
+M``'@@@`H$$#_^P````"4H@``,$+@`!!```D`````)`8@`!!&`"`D8P`!```!
+M3ZR``"@```%/"`(;5`````#<@@`@)&,``8BE``"<1@!P9,8`"@`&,+@`1A`M
+MK$4``-R"`"",10!P)*4``0"C`!L`8`'T```P$*Q&`'````%/K(``*````4\(
+M`AM4`````#P$$`T\!1`-9(05X&2E(Q@(`!>6)`8-$MR"`""(I0``G$8`>&3&
+M`!(`!C"X`$80+:Q%``#<@@`@C$4`>"2E``$`HP`;`&`!]```,!"L1@!X```!
+M3ZR``"@```%/"`(;5```````````9[W_Z/^Q``C_L````,"`+?^_`!#<B``@
+MD((*`XT&`""-"P`D)$(``3!"`/\D0@`!),D``0$B`!L`0`'T``!0$!%J`!D`
+MX(@ME*4`!'#&^+(!!D`MI04``-R#`"",90`@)*4``0"B`!L`0`'T```P$`P"
+M&U2L9@`@E@,``"0$``(``!`M?`-81WR#>X>F`P``KB```-^_`!#?L0`(W[``
+M``/@``AGO0`8/`00#3P%$`UDA!9(9*4C``P`%Y8D!@SHKB```)8#```D!`$%
+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
+M9*4B>`@"'B\D!@FI/`00#3P%$`UDA!$(9*4B>`@"(#4D!@E9/`00#62E(G@D
+M!@G`#``7EF2$%W`"`"`M)`4``@P"$KHD!@"`ED,``"0$``8D`O__?(-81R0$
+M``)\@WN'ID,``-^C`(@(`AXYK&````````!GO?\X_[0`J`#@H"W_LP"@`("8
+M+?^Q`)``P(@M_[``B`"@@"W_OP#`_[8`N/^U`+#_L@"8E,(``"0&``;<HP!H
+MW*4`0-X)`$A\PEA'W@@`4`!`4"W>$@!8?`I[A]X5`&```Q``W@<`<``%6#_>
+M!@!X_Z4`2*8J``#_HP!P)`,``?^I`%#_J`!8_[(`8/^U`&C_IP!X_Z8`@/^@
+M``#_H``(_Z``$/^@`!C_H``@_Z``*/^@`##_H``X_Z``0!!#`'RN@```%$``
+M8"0#``(18`"@`````(R#"P1\`Q"@`"(4`@!+$"L40`":`````"5B__]\0O@#
+M9$(`!P`"$/A\@A(*$$``DP``L"UD0@"`_Z(``"0"$`"OH@`0EZ(`%"0#``%\
+M`GO'?&)J!Q)``)>GH@`4EF(`$)^C`!`D1/__`)(@)`!$$"\`0Q`K$$``!```
+M```2H`"</`00#?^U`"C_L@`@`F`@+0P"$C0D!0`"$$``/@!`D"T`0"@M`@`8
+M+68"`(!H:```:&<`"&AF`!!H9``89&,`(+"H``"PIP`(L*8`$+"D`!@48O_V
+M9*4`(-Y#```D!@(`WD(`&`)@("T#H"@M?,-8!@)`,"W^0P``CF,``'QB6`?^
+M0@`8/`(``Y(#`!W^5@`H``,:P`!B$"6N0@`,WD(`"'P""`8,`A8>_D(`""0#
+M__\00P!T```0+98C```P8S`!IB,``*Z```#?OP#`W[8`N-^U`+#?M`"HW[,`
+MH-^R`)C?L0"0W[``B`/@``AGO0#(`````!!#`!\\!1`-/`00#62$%[!DI2)@
+M)`8(-@P`%Y8`0#@MEB,``"0$``8D`O__?(-81R0$``)\@WN'IB,``*Z```#?
+MOP#`W[8`N-^U`+#?M`"HW[,`H-^R`)C?L0"0W[``B`/@``AGO0#(9(()````
+ML"W_H@``)`(0``@"(*BOH@`0#`(2-"0%``<00/_E`$"P+69H`#@`0$@M```8
+M+0@"(2`D!@0``````!!F`!4`````W04``"1C``$P:_\```-F```+6@`0H``#
+M``!0+0%L6"4!8%`MK2H``&4I``3=!0``%*#_\64(``@``QB`_[8``/^@``@(
+M`B"HKZ,`$``````(`B$O)`,0!#P$$`T\!1`-9(06T&2E(F`,`!>6)`8(#Y8C
+M```D!``+)`+__WR#6$=\`WN'IB,```@"(02N@```/`00#3P%$`UDA!<@9*4B
+M8"0&"#T,`!>6`````)8C```D!``")`+__WR#6$=\@WN'IB,```@"(02N@```
+M/`40#62$%TADI2)@"`(A220&"$D\!1`-/`00#62E(F`D!@AA#``7EF2$%]@"
+M0"`M)`4``@P"$KHD!@"`"`(@_98C``!GO?]0/`/_@/^^`*`T8P%%_[4`B``#
+M&CS_L0!H`*"H+?^P`&`D!0`&_[\`J`"`\"W_MP"8`,"`+?^V`)``X(@M_[0`
+M@/^S`'C_L@!PC(@``)3"``#_H```_Z``"'$(5'+_H``0`0,8+?^@`!@X8P`$
+M_Z``('RB6$?_H``H?`)[A_^@`##_H``X_Z``0(QC``#<E``8EK8`;I:W`&A\
+M8_@#I,(``/^C`$BLX```EK,`;-^C`$@F<P`!,&/__S)S__]D8P`!+F(``@!S
+M&"LX0@`!.&,``0!B$"000`$5/`40#1+``0]DI2(8WJ4`6`P"#H(D!P`!%$`!
+M%SP$$`V6@@$B`L(0*A!``2-FRP`!``L0^'Z"$@H40`#X/`00#1+@`10\!!`-
+MEH0!(`+D("H0@`"#/`00#6;B`!(``A#X?H(2"A!``'T#P"`M_ZL`6`+`*"TD
+M!@`"_[8`4`P""ZXT!X,`WZ,`4-^K`%@00`$0`$"0+0)`("T``"@M_Z,`4#0&
+M@P`,`F9@_ZL`6#P"%``\!10`D$9%!F2E1/BF5@!(/`(``:97`$H"0A`MC\0`
+M```&,+C?HP!0`,4H+9"E``)PI#`"`,,8(:Q#@L2N0`!````!3ZY``"````%/
+MIE,`1"0)___?JP!89D@"@"0#$```"4@\```!3_T)``````%/)&/__Q1@__ME
+M"``(9D@`4"0#`$#]````)&/__Q1@__UE"``()`,``0````!P8W!R`'-`*Q4`
+M__T`````)&/__Z9#`$8```%//!8``0)6L"VNP(*@```!3P```4^NP(*````!
+M3S0"@K``"QCX`D(0+0*#&"W\<@``9H,!'/["@K#^PH*X```!3R07``%P=P`8
+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
+MWH,`((QI`"2,8@`@$2(`!0$U("L`51`K`((0)!1`_]=Q*?BR`L`@+20%``(,
+M`A*Z)`8`@-Z"`!C<0P`($&``!``````,`CP<`H`@+=Z"`!C<0@"0$$``(@*`
+M("T,`CS2`H`@+=Z"`!C<0P"0W&(`.&1C`#C<40``9%#_^!!#`!9F,?_X````
+M`-X$```D!0`"#`(2NB0&`!#>`@`0W@,`"`(`("TD!0`")`8`&`(@@"W\8@`(
+M#`(2NOQ#``#>@@`8WB0`"&8C``C<0@"09$(`.!1B_^UDD?_X_H``&`*`("T,
+M`D+F`D`H+0```4^N@$!@```!3]^_`$#?MP`XW[8`,-^U`"C?M``@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0!(9[W_Z/^P````@(`M_[\`$!"``!/_L0`(C(<`
+M`(R#``0\!/^`-(0!10`$(CPPX@?_-(0`%``"%'@`1!`M.$(`!(Q"``#H8``,
+M`$!`+3$"@``40`![,0)``!1``#D\$1`-W[\`$-^Q``C?L````^``"&>]`!@`
+M````Z$#_]3$"@``\$1`-/`00#68E(8`D!@%L#``7EF2$&O`,`A3>`@`@+0(`
+M("T,`B10)`4``8X#```\`A0I/`00#61"SQ!F)2&```,8^&2$&Q@`8A`M)`8!
+M</Q````,`!>6C@<``#P$%"G<@N\P9$4`B````4\D`___<*,`&0```4^.`P``
+MW(3O,``#$;H``A#X`((0+0```4\D!``!,&,`/P!D&!3010```*,@)0"#(";P
+M1```%(``.@`````(`B4Y```````````\!!`-9B4A@"0&`8D,`!>69(0;H`(`
+M("T,`B10)`4``HX#```\`O^`/`00#31"`45F)2&```(2/'!C5'(T0@`<9(0;
+MT`!B$"TD!@&/.$(`!(Q#``!\`QB$-&,`"*Q#```\`A0IC@,``&1"SQ```QCX
+M`&(0+?Q````,`!>6C@<``#P$%"G<@N\P9$4`B````4\D`___<*,`&0```4^.
+M`P``W(3O,``#$;H``A#X`((0+0```4\D!``!,&,`/P!D&!3010```*,@)0"#
+M(";P1```$(#_^P````````%/W[\`$`(`("W?L0`(```H+=^P```D!D$`"`)F
+M8&>]`!@`````/!$0#3P$$`UF)2&`)`8!>0P`%Y9DA!M`#`(4W@(`("T"`"`M
+M#`(D4"0%``*.`P``/`+_@#P$$`TT0@%%9B4A@``"$CQP8U1R-$(`'&2$&W``
+M8A`M)`8!@#A"``2,0P``?`,8A#1C``BL0P``/`(4*8X#``!D0L\0``,8^`!B
+M$"W\0```#``7EHX'```\!!0IW(+O,&1%`(@```%/)`/__W"C`!D```%/C@,`
+M`-R$[S```Q&Z``(0^`""$"T```%/)`0``3!C`#\`9!@4T$4```"C("4`@R`F
+M\$0``!"`__L````````!3]^_`!`"`"`MW[$`"```*"W?L```)`9!``@"9F!G
+MO0`89[W_T/^P````@(`M_[\`*/^T`"#_LP`8_[(`$/^Q``B,D0``/`3_@(X"
+M``0TA`%%``0B/#(C!_\TA``4``,<>`!D&"TX8P`$C'(``.A```/?OP`HZD``
+M"CP4$`T"`"`MW[0`(-^S`!C?L@`0W[$`"-^P```(`B3R9[T`,``````\!!`-
+M9H4A8`(@."TD!@$Z`D!`+0P`%Y9DA!P`#`(-)@(`("V.!P``%$``(V:%(6`\
+M!!`-)`8!062$'%`,`!>6`D!`+:X2``0\!!0IW(+O,&1%`(@```%/)`,``7"C
+M`!D```%/W(3O,``1$;H``A#X`((0+0```4\R,0`_`B.(%-!$````D1@E\$,`
+M`!!@__P````````!3]^_`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P
+MW[\`*#P$$`W?M``@9(0<*-^S`!@D!@$]W[(`$-^Q``C?L```"``7EF>]`#``
+M````$(``?0````#<B0`0$2``.R0#__^,@@`,`2`X+1!``"Q\9__&?`@`.P``
+M$"T(`B8^?0H)PP`````D!?__?*/_QGQE2`$``R@*`*`8+0```4\\!?^`)$(`
+M`32E`2D`!2XX-*4``0`%+#A\Q3D&_*,``(R#``P`0Q@K$&``%0````!P1?CR
+M?08)PWSE*@H4H/_J`*`8+0%`,"T``!@M```!3SP%_X`D0@`!-*4!*0`%+C@T
+MI0`!``4L.'S%.0;\HP``C(,`#`!#&"L48/_N<$7X\GP#`#M]*4@!```!3SP"
+M_X!\8PG#-$(!*0`"%C@T0@`!``(4.'QB.0;\20``W(D``!$@`#H!(#@MC((`
+M,"0#__\00``K?&?_QGP(`#L``!`M"`(F>GT*"<,D!?__?*/_QGQE2`$``R@*
+M`*`8+0```4\\!?^`)$(``32E`2D`!2XX-*4``0`%+#A\Q3D&_*,``(R#`#``
+M0Q@K$&``%0````!P1?CR?08)PWSE*@H4H/_J`*`8+0%`,"T``!@M```!3SP%
+M_X`D0@`!-*4!*0`%+C@TI0`!``4L.'S%.0;\HP``C(,`,`!#&"L48/_N<$7X
+M\GP#`#M]*4@!```!3SP"_X!\8PG#-$(!*0`"%C@T0@`!``(4.'QB.0;\20``
+M)`4``@@"$KHD!@`X`^``"`````!GO?^X_[(`&`"`D"W_L``(`*"`+?^_`$#_
+MM@`X_[4`,/^T`"C_LP`@_[$`$)"S`!W<@@`89G,``0`3F/A\4YH*$F``(MRQ
+M`"B<IP!`)!8``9RB``2.(P`(E*D`=F3U``8`%:CX9$(`4`"5J"T``A#XWJ8`
+M``)B$"V0J@!'<&/P<I#(`)HQ"``/90@`0``(0+@`R#`MD,8``@#6,`0```%/
+M_Z(``'!#'-\```%/CB@`"'#),`-Q"/!R`&@8+7QT\$,2A@`1`````-RQ`"@"
+M("`M)`4``@P"$KHD!@`XW[\`0-^V`#C?M0`PW[0`*-^S`"#?L@`8W[$`$-^P
+M``@#X``(9[T`2`````#H8``U)`,`!1%#`"$!0(`M9.<`(P`'.3A\AY(*`D#X
+M"0````#>H@``G$,`#"0"``(2`@!'/`(``186_^??OP!`WX2#8``#$;@\`P`!
+M`F.8+9YE@L0`@A`M``49>``%*?@`HR@O`(48+3P$``<`@A`M:&0`&`*$("VP
+M9``8:$.G&`*#H"T(`B;5L%2G&``````\`W__-&/__P`#&'@T8P```&`8)]!&
+M````P$`M`,,P)/!&```0P/_[`````&3G`",`!SDX?(>2"@)`^`D`````"`(F
+MUM^_`$"0IP`=/`00#92H`$0\!1`-9(0<@&2E(M@,`!>6)`8,6)X#``0D`@`!
+M9&,`4``#&/@"8Y@M-$(```!`$"?28P```&`@+0!B&"3R8P``$&#_^P``````
+M`#`M`D`@+0(`*"T,`@^D)`<`#`P")AX"("`M"`(FUM^_`$```QFXWX6#8`)B
+MF"V>9H+$`*,8+0`&$7@`!B'X`((@+SP"``<`I"`M`$,0+6B#`!`"@Q@ML(,`
+M$&A#IQ`"@Z`M"`(FU;!4IQ!GO?^P)`,`!?^P`$#_OP!(W*(`0/^B```P0@#_
+M$$,`!@"@@"W?OP!(W[``0`/@``AGO0!0`````).C``8D`@`!%&+_^=^_`$C<
+MI0`P$*#_]@``,"T,`@^D)`<`$MX$`#`D!0`"#`(2NB0&`(`(`B=/_@``,```
+M``!GO?^`_[\``/^E`$C_I@!0_Z<`6/^H`&#_J0!H_ZH`</^K`'CWK``(]ZT`
+M$/>N`!CWKP`@][``*/>Q`##WL@`X#``7EO>S`$#?OP```^``"&>]`(``````
+M9[W_P/^V`#`\%A`-_[(`$`"@D"W_OP`X_[4`*/^T`"#_LP`8_[$`"!"@`";_
+ML```/!80#3P5$`T\%!`-`("8+0``@"UFM1RX9M$CR`@")YEFE!S0`````'YP
+M.8HF$``!`B`H+20&%+X,`!>6,A``_P(2$"L00``4W[\`.#("``,40/_U`H`@
+M+7('^+H"H"`M`B`H+0P`%Y8D!A2]?G`YBB80``$"@"`M`B`H+20&%+X,`!>6
+M,A``_P(2$"L40/_P,@(``]^_`#AFQ2/(W[4`*#P$$`W?M@`P9(0<Z-^T`"`D
+M!A3`W[,`&-^R`!#?L0`(W[````@`%Y9GO0!``````#P"`/\T0O\_0`-X``!B
+M$"0\`P`--&.7`!!#``,``````^``"``````D`@`(`````-R%```D0O__,$(`
+M_WP%&*1\`QED_(,``!1`__EDA``(`^``"`````!GO?]P_[``2`#`@"W_OP"(
+M_[<`@/^V`'C_M0!P_[0`:/^S`&#_L@!8_[$`4/^@``#_H``(_Z``$/^@`!C_
+MH``@_Z``*/^@`##_H``X$,``/O^@`$!D]``2/!80#3P5$`T`@)`M`*"(+0$`
+MF"T`%*#X9M8<^`@")_-FM2/@``````+QB"$2```P,C'__]Y"0"@D`P`!WDD`
+M&``143B7IP`4`D`@+0(B`!\`0`'T``(0`'TT2@H#H"@M,.=`_P)@,"U\9SG'
+MW2,``-TK``@`:E`M``!`$```8!(`"!@```A!.`!#$",`#$CX?6E*"C!"____
+MJ@```@(8*Z>G`!0"`Q`+`0E`+?^H``@`0!@M,$+__S!W__\``AD`KZ,`$`P"
+M%AX"`H`C,$(`_Q!`_]4"P"`M`J`H+20&%7P,`!>6`O&((18`_](R,?__W[\`
+MB-^W`(#?M@!XW[4`<-^T`&C?LP!@W[(`6-^Q`%#?L`!(`^``"&>]`)``````
+MW(0`&&2C`!(``QCX```0+20(``%\@QH*E&<`'I1D`"0DY0`!``<Y.`"D`!L`
+M@`'T"`(H00``*!#<9````(<@+92$``P`AB`F`000"HQD`"`4A?_Y``````/@
+M``@`````9[W_Z&2C``'_OP`0``,8^-R"`!@`P#@M?$,R"I3*`$IE2@`2``HH
+M^'Q%*@IDH@`09*4`%````4__I0``<*`HGP```4\`````C$,`"!1E__XD`P`!
+M```H+0```4_`20``)`@``!4E``0`8$@MX$D``!$@__HD"``!`````````4\1
+M`/_U-`B`````$"T(`BAN9,8"@``````02``G``````#"&"UD0@`(W&4````%
+M*#\4Y?_Y`````"0"``'090```*`P+0"B*"7P90``$*#_^P`````D!0`!W(,`
+M&``*4/A\:AH*```!3R0$__]D9@`0<,0`&"0$``%D9@`8<,0`&````4\0H``*
+MW[\`$#P$$`T\!1`-_Z(`"&2$'2ADI20(#``7EB0&%;O?H@`(W[\`$`/@``AG
+MO0`8```0+0@"*'P``"@M`````&>]_WC_MP!X_[8`</^U`&@`@*@M_[(`4#P$
+M$`W_L0!(/!$0#?^P`$``X)`M_[\`@`#`@"W_M`!@9(0=6/^S`%@D!A7>W*(`
+M:-RI`$C<J@!PW*X`0#!7___<K0!0?%9\`]RL`%@"P#@MW*L`8-RC`'AF)20@
+MCJ@``/^I``@"X$@M_Z(`*/^J`##_K@``_ZT`$/^L`!C_JP`@#``7EO^C`#C>
+MH@`(D$H!`A%``#<D`@#_WJ0`&`+`H"V0@P%/$&(`>`+@F"TE2O__9(,!CS%*
+M`/\D`@`!)4H``20'`/\`````$$H`*0!`0"V0:0``9&,`0!4G__LD0@`!WZ(`
+M```(0;@`B$`M`N`H+0*@("T"P#`M_0(!2-^B``C]`@%0WZ(`$/T"`5C?H@`8
+M_0(!8-^B`"#]`@%HWZ(`*/T"`7#?H@`P_0(!>-^B`#@,`BA&_0(!@#!"`/\0
+M0``@W[\`@```$"W?MP!XW[8`<-^U`&C?M`!@W[,`6-^R`%#?L0!(W[``0`/@
+M``AGO0"(E@,``"0$`0,D`O__?(-81WP#>X>F`P``)`,``:Y#``#?OP"`W[<`
+M>-^V`'#?M0!HW[0`8-^S`%C?L@!0W[$`2-^P`$`#X``(9[T`B``````\!!`-
+M9B4D(&2$'9`D!A7T`H`X+0P`%Y8"8$`ME@(``#!",`&F`@``)`(``:Y"``#>
+MH@`(D$(!`A!``!<D1___WJ8`&##G`/\``!`M`N`H+23G``$(`BDH9,,!=@``
+M```01P`-9&,`0)1D````0$`M%(7_^R1"``&49/_^%);_^``(0;@D`___`,@P
+M+20"__\(`BD"H,,!3]^_`(`D`O__W[<`>-^V`'#?M0!HW[0`8-^S`%C?L@!0
+MW[$`2-^P`$`#X``(9[T`B`@"*-8``$`M<,(2<F>]__A\XD!'`0`P+?^_```,
+M`@^D``(X`-^_`````!`M`^``"&>]``@`````9[W_&/^^`-@`H/`M_[8`R/^Q
+M`*``@(@M_[\`X/^W`-#_M0#`_[0`N/^S`+#_L@"H_[``F)"C`!W<@@`8_Z``
+M"/^@`!!D8P`!_Z``&``#&/C_H``@_Z``*/^@`##_H``X_Z``0/^@``!\0QH*
+MW*L`*/^@`$B48P!*_Z``4/^C`(!D8P`2_Z,`>``#L/A\5K(*EL,`'H[3`"C_
+MHP!PEL,`)!5@`7?_HP!HWZ,`:```N"W_HP!8WZ,`<"1B``'?HP!8`$,`&@!@
+M`?2.PP`@```@$!"#`7@`````WZ,`>```H"W?J0!P_[8`8``#J/@"H+`MWZ0`
+M6"4U``'?HP!@`J0`&@"``?2,8@`@```8$!!#`-L`````$F`!N0````#>(P`8
+M``E).-XB``A\=B(*D$(!`MR0```00`!1`@F`+21)__]D8P%V,2D`_P``$"T(
+M`BFF)2D``0`````020!(9&,`0)8$``H`0)`ME&4``#"$__\4I/_Y)$(``98$
+M``R49?_^,(3__Q2D__0"("`M#`(2-"0%``(00`&P)`0"`-Q%``#<2P`8`!(9
+MN&1C`4AD20!`?(58!@``,"W\10```B`@+8XL````0"@M```X+20(``%]BU@'
+M_$L`&)8+``J@2P`=WBL`&`%C&"UH>```:'(`"&AO`!!H;``P:&L`.&AN`!AH
+M;0`@:&,`*+!8`$"Q,@`(L2\`$+$N`!BQ+0`@L2,`*+$L`#`,`BE"L2L`.)8$
+M``K>)0`8)`,``98"``PPA/__9(0``0`$(/@P0O__?*0B"F1"`%```A#X`((0
+M+31C````8!@GT$0```"`*"T`@R`D\$0``!"`__L`````E@,`#M_"`"B6!``.
+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
+M)`H0`"0.__]\0UH*96P`6-UE`%`4IP`Y`8`8+0@"+T$D`@!```````"`$"UD
+M8P`(9$0`0-QE__@4IP`)`2)`+Q2*__D`````$0``+P$'*!3<8P```*,H)1"N
+M`"8D`A````4H)P`%0"\!!2@D<*A`)`&H0",!`A`M``(H`"BC$``08``A``4A
+MNF2$``H`!"#X`60@+0```4\D"``!,$,`/P!H&!30B````0-X)?"/```1X/_\
+M`````````4\!`Q@D%&#_TP````````%/9*,`4``&,#P``QCX`6-8+?UF````
+M``%/W[\``#!"__\#X``(9[T`"`@"+U1E`A``"`(O3@``$"T`````/`00#3P%
+M$`UDA!]P9*4D4`P`%Y8D!A:MW[\``#0"__\#X``(9[T`"&>]__@`H#@M_[\`
+M``#`0"W<@@`89*0``0`$(/@HPQ``$&``'WQ$(@H`!AFZ9&,`"@`#&/@`@Q@M
+M```!3R0%``$PP@`_`$40%-!E````HC`E`,(P)O!F```0P/_[`````````4\`
+MHA`D$$``%3P%$`T```%/90@`4"0"__\`"$#X``(0/`"(("W\@@`````!3P``
+M$"W?OP```^``"&>]``@\!!`-/`40#62$'YADI21H#``7EB0&%KT(`B^G)`+_
+M_SP$$`UDA!_`9*4D:`P`%Y8D!A;""`(OIR0"__\`````9[W_R"0&%M3_M``@
+M/!00#?^Q``@`@(@M_[````"@@"W_OP`P_[4`*/^S`!C_L@`0D+(`'92S`$1F
+MA22`W)4`&#P$$`V.*```9D(``0`"$/ADA"`(?J*J"@)@."T,`!>6`D!(+9X"
+M``0D`P`!9$(`4``"$/@"HA`M-&,```!@&"?01````(`H+0"#("3P1```$(#_
+M^P```````$`M```P+0(@("T"`"@M#`(I0B0'``?>(@`(D$@!`A$``&,``!@M
+MWB4`&`)`."T"8"`M"`(O\V2B`78`````)&,``1!H`%ID0@!`E$8``!3'__L`
+M````E$;__A3$__@``X&X/`00#0"P$"TD!A;?E$<!3&:%)(".*```#``7EF2$
+M(#@"("`M#`(2-"0%``(00`!'`$"0+=Q$```D!@(`W$(`&&8%`4AF1P!````8
+M+7S$6`8``(`M_D0``"0)$`".)```?()8!_Y"`!BB0``=WB8`&`#%,"UHS0``
+M:,P`"&C+`!!HP@`X:,0`,&C(`"!HR@`8:,4`*+)-`$"P[``(L.L`$+#J`!BP
+MZ``@L.4`*+#D`#"PX@`XWB(`&)9(`$3<1P`("`(P+V3G`H``````)A```1()
+M``T`````?.,R"@`&,#\4R/_Z9&,`"*Y0``0"("`M`D`H+0``,"T``#@M#`(I
+M0@``0"W>(@`8`!"!N"0#__\`4!`M`D`@+:!#`4\D!0`"W[\`,"0&`(#?M0`H
+MW[0`(-^S`!C?L@`0W[$`"-^P```(`A*Z9[T`.`````#?OP`PW[4`*-^T`"#?
+MLP`8W[(`$-^Q``C?L````^``"&>]`#@`````/`00#3P%$`T\`A0`9(0@:*!`
+M1.QDI228"``7EB0&%P$#X``()`(``0/@``@`````WX6#8&>]_^C_L```/`(`
+M"/^_`!``@(`M_[$`"`"B$"W<A``8/`84*6A%J<!DQL\0C@,`#'R$6`,PA/__
+M9*4``0`$(/@``SP"?,2*"K!%J<!\!?@[L$6IR"SB``L40``0/`(0#3P$$`T\
+M!1`-9(0DZ&2E)D`,`!>6)`8`XM^_`!`"`"`MW[$`""0%``+?L```)`8`@`@"
+M$KIGO0`8```````'(/AD0B7H?$02"@!```@```````````P")/("("`MW[\`
+M$-^Q``@"`"`MW[```"0%``(D!@"`"`(2NF>]`!@"("`M#`(I3@(`*"W?OP`0
+MW[$`"`(`("W?L```)`4``B0&`(`(`A*Z9[T`&``````"("`M#`(2U@(`*"W?
+MOP`0W[$`"`(`("W?L```)`4``B0&`(`(`A*Z9[T`&``````"("`M#`(FG@(`
+M*"W?OP`0W[$`"`(`("W?L```)`4``B0&`(`(`A*Z9[T`&``````"("`M#`(<
+MR`(`*"W?OP`0W[$`"`(`("W?L```)`4``B0&`(`(`A*Z9[T`&`````!\`O@[
+MD@4`'68$`$#^`@`X#`(GN@`%*"N2!0`=`B`@+0P"+RZ6!@!$``(0`*X"``0L
+M0A``$$``+#P$$`V2`@`=WB,`&&1"``$``A#X?&(2"C0#@J``0Q`M```!3R0#
+M``%P0P`8```!3Y("`!T"("`M$$``&0(`*"T,`BPJ``````@",(+?OP`0_@``
+M.`(@("W?OP`0`@`H+=^Q``C?L```"`(NRF>]`!@"`"`M#`)'VGQE(L/?OP`0
+MW[$`"`(`("W?L```)`4``B0&`(`(`A*Z9[T`&``````,`BMV``````@",(+?
+MOP`0/`40#62$)+ADI29`#``7EB0&`+\(`C""W[\`$``````#X``(`````&>]
+M_\#_M``H/!3___^S`"`VE``#`!2D>"03__]FE)P!`!.?_/^R`!@`%*>X_[4`
+M,#:4$`!\$@`[,D0`_V:5`"``!!0`9G/___^Q`!``5!@M_[``"`!5$"W_OP`X
+M`("`+?QS```R40#__%,```P`B!@``````!$8*P`"$"L`8A@D$&``#@``$"T"
+M@$`M9F0``0*@."T``AP`)$(``0!H,"TP10#_`&<8+0"Q*"O\Q```_&0``!2@
+M__@``AP````!3SP"%"ED0L\`_Z(``'!`$)\```%//`,`!SP$%"DT8ZG@/`8`
+M!W!#$`/<A\\()&3_^"0#`$(``"@M-,:IV``1B;ID0B#H`.(0+:Q#``!D0P`(
+MK$0`!`!@("T,`F9@_X.#8-^$@V`\`@`(`!$8^`""$"VH4*G4/`(4*=Q1[S!F
+M,0"0`B.(+0```4\D`@`!,E(`/P)"D!32(P```'(0)?(B```00/_\````````
+M`4\```%/W[\`.-^U`##?M``HW[,`(-^R`!C?L0`0W[``"`/@``AGO0!`````
+M`&>]_^`\!!`-_[$`"#P1$`W_OP`89(0E$/^R`!!F)298_[````P`%Y8D!@$]
+M/`(4`)!"`1@00`!*/`(4*61"SQ!D0R`@`````/Q```!D0@`(%$/__0`````,
+M`(@8CX2!@!!```./@H&`$$``2SP$$`T,`D/J``````1``$$\$A`-/`0`>F9&
+M)7@TA+[P#`"T7B0%`(`\!@!Z)`7__S3&OO``0"`M#`)F8`!`@"T```%/$@``
+M2CP#%!@\`A0IW&16@"0%`$'\4,\()`8@W&8"``@\$A0I_)``$`!`("VN!0``
+M```H+:X&``0D!B#<W&-6@/Y"[S`,`F9@_&(`&-Y0[S`,`+=2)`0``SP#%`!D
+M8T3XL@(`F#P"%`"01$4&WD+O,``$(+@`@Q@MD&0``JA$`+248P``J$,`N-^_
+M`!AF)298W[(`$#P$$`W?L0`(9(0ER-^P```D!@&5"``7EF>]`"`\`A08W$)6
+M@-Q$`!#<0P`8/`(4*?Q$SP@\`A0I_$/O,-^_`!C?L@`0W[$`"-^P```#X``(
+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
+M9$(`4``"$/@"HJ@M-C$```(@B"?2H@```$`8+0!1$"3RH@``$$#_^P`````D
+M$0`!`D`@+0P")AXD%``,$B#_10(`*"T(`C/-`L`@+0`````D!``!?()J!]^D
+M`&@``A``IZ(`%`@",Z?_I``H`````"04@A8(`C/)``"0+0`````D`@`!$.(`
+M@ZY1`#`\`O^`-$(!*0`"%C@T0@`!?`,`.P`"%#A\8PG#?&(Y!MQ1```2(`"!
+M)`+__WQ1_\8DXO__<$+X\F8E``@`HB@M`3$@+P(@$"T`````_$```'R"&@I\
+M8T@!_$,``&1"``@41?_Z`````-^J`&#_H``0_A(`*/^@``#_H``(_Z``&/^@
+M`##_H``X_Z``0*^F`!#_J@`@KD8`"!)@`%V7H@`4_[,`*"0#``)\8FH'``(0
+M`*>B`!2.Q@``/`4`!)($`!W>`P`8`,4H)0`$(L``I"`EK@0`#-X$``A\!`@&
+M_@0`"([$``!\@U@'_@,`&"0#``$0XP`Z`````!#@``4`````-$)```(@2"VO
+MH``X``(0`#1"@``"P"`M?`(YQP.@*"W_H````@`P+?^I``BOIP`8#`(6'J>B
+M`!02(``-)`3__WP$`#M^,4@!?(0)PP```4\\`_^`-&,!*0`#'C@T8P`!``,<
+M.'R#.0;\<0``)`3__Q1$_K8``!@M/`00#3P%$`V?LP`09(0GP&2E*8`(`C0L
+M)`8!=SP$$`T\!1`-9(0G`&2E*8`D!@"V#`)^O"04`0`(`C/)`````#P$$`T\
+M!1`-9(0H0&2E*8`,`GZ\)`8!'0@",\D``````````-TC`````#@M$&#_R@``
+M2"T`8$@M)`/__P@"-.-\:?_&`2`H+0@"-!,``(@M"`(TN@``B"TD`P`!?&)J
+M!]^C`&@``A``IZ(`%`@"-,S_HP`H/`00#3P%$`UDA"B(9*4I@`P"?KPD!@$Y
+M"`(SR0````"N0``P"`(TN@``B"T\!!`-/`40#62$)MADI2F`#`)^O"0&`*H(
+M`C/)`````-X$`"@D!0`")`8`.```B"T,`A*Z``"0+0@"-(D"0"`M`````&>]
+M_]C_LP`8`*"8+?^R`!`D!0`"_[$`"`"`D"W_L```_[\`(`P"$C0`P(@M$$``
+M,P!`@"T`0"`M```H+0P"9F`D!@"``B`8+0(`."UF(@"`:&4``&AD``AH:``0
+M:&8`&&1C`""PY0``L.0`"+#H`!"PY@`8%&+_]F3G`"">$0!`#`(NQ`(`("V.
+M1@``W@(`&`)`("UF(P`?`F`H+0`#&3A\PE@'`D.0+?X"`!AP0_PZ<&(Z\CP#
+M``0`0Q`EK@(`#-X"``A\`E@&_@(`"-Y"`#@`0/@)`@`P+0`"$"MP0@`ZW[\`
+M(-^S`!C?L@`0W[$`"-^P```#X``(9[T`*`)`("T"("@M```P+0P"#Z0D!P`,
+M"`(U?B0"__]DA0`X)`,`0`"@$"T`````_$```"1C__\48/_]9$(`"#P"%``D
+M`P`!D$)%"!!#`"TD`P`"$$,`7CP"$A6,@P``9$)=$#P*%"D\#1`)/`P0"0`#
+M&C@\"Q`)`&(8+62&`C@D`@!```!(+65*[SAEK16(98P1,&5KS1B,9P``$.``
+M"R3H__]Q!_CR?4<Z"ORG``"0YP`0%.``$#P'$`G\RP``9.?(&/S'``@E*0`!
+M)$+__V1C``1DQ@`0%$#_[V2E``A\"1"@`"(4`JR""P0#X``(```0+0````#\
+MS0``"`(UMOS,``@\`A0I/`<4*9!*#Y@\#Q`)/`(4*3P.$`F,2P^(/`T0"3P,
+M$`DE2O__9.?O.&2&`C@``$`M```0+67O%8AESA$P9:W-&`@"->=EC,@8_,T`
+M`"4(``$I`P!`$&``%_S,``@!0D@K``L8*P$C&"048``2)$(``20#!`1DYP`(
+M9,8`$!!#``UDI0`(W.,``!!@__4!0D@K_*,``)!C`!`08/_K`````/S/```E
+M"``!*0,`0!1@_^S\S@`(?`@0H``B%`*L@@L$`^``"```$"V,@@``/`,4*61C
+M[S@``A#X?&(2"A!``!4`````_((`.)!"`!`40``)`````#P"$`D\`Q`)9$+-
+M&&1CR!C\@@(X/`(!``@"-;[\@P)`/`(0"3P#$`ED0A6(9&,1,/R"`C@\`@$`
+M"`(UOOR#`D`(`C6^```0+0````!GO?_P/`(2%?^P``!D0DT`_[\`")R#``P`
+M`QBX?$,0"A!``"D`@(`M/`,4*7!"^/)D8^\X?&(2"A!``",`````E(8`")1%
+M``C<A```W$,``'#$(`-PHQ@#`(,8*Q!@`!(`````#`"QJB0%`("6!P`(W@,`
+M`/X"`!@00``7<.,X`P!`("T``"@M#`)F8`#@,"T``!`MW[\`"-^P```#X``(
+M9[T`$`````#<0P`8```0+?X#`!C?OP`(W[````/@``AGO0`0`````)8$``C>
+M`@``"`(V+W""(`,\!!`-/`40#62$*,!DI2FP#`)^O"0&`M4(`C8[)`+__V>]
+M_\#_L@`0/!(4*?^_`#AF4N\X_[8`,&9#("#_M0`H`D`0+?^T`"#_LP`8_[$`
+M"/^P````````_$```&1"``@40__]`````#P"%"F,0@^(%$``-3P4$A(\%@!"
+M9I2_@```B"UFD``(``"8+3P5%"DVUD(``````)8"```00``?WJ,/8-X$`'A\
+M!!"D?`(19/X"__@`<1@M$&``-/Y#```F<P`!`I$0+:QS``QD1!"`WD,``&A(
+M``!H1P`(:$8`$&A%`!AD0@`@L&@``+!G``BP9@`0L&4`&!1$__9D8P`@#`(V
+M%MY$```$0``%9C$0@&80$(`6-O_@9E(`"```$"W?OP`XW[8`,-^U`"C?M``@
+MW[,`&-^R`!#?L0`(W[````/@``AGO0!`/`00#3P%$`UDA"D(9*4IP`P"?KPD
+M!@+YW[\`.-^V`#```!`MW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]
+M`$`\!!`-/`40#62$*5!DI2G`#`)^O"0&`P<(`C:4)`+__P````!\I?@#`(`P
+M+0`%$C@`!2LX`$4H+3P"$`UD0BN`9(,(@`"B$"UD1!$`W$D``-Q(``C<1P`0
+MW$4`&&1"`"#\:0``_&@`"/QG`!#\90`8%$3_]F1C`"`\`_^`9[W_^#1C`44`
+MP"`M_[\````#&CQ\`@`[?$()PS1C8`@``A$\`$,0)=Q#```\`A0`9$)$^'QC
+M"`,P8P#_``,8N`!B$"V010`")*7__WP%&*"DPPB*D$,``B1C__]\`Q"@#`(U
+MC*3""(S?OP``9[T`"`/@``@``A?#9[W_\/^P``#_OP`(#`(.0`"`@"V.!```
+M/`(4*=Q"#W@`!",X`$0@+1"```O^!``(```H+0P"9F`D!A``#`(.<@(`("T`
+M`!`MW[\`"-^P```#X``(9[T`$`@"-OXD`O__9[W_\#P"%"G_L```)`,`"?^_
+M``@`@(`MC(4``-Q&#W`D`@`"K((9X*R#+@``!1'XK(-`%`#"$"V@@!GDH(`N
+M!*"`0!@00``<_((`(#P"%"D`!2HXW$(/6`!%*"T0H``._(4`,*R``"@,`C:X
+M)`4``01```;?OP`(#`(V[`(`("TH0P`!``,0"M^_``C?L````^``"&>]`!`\
+M!!`-/`40#62$*@ADI4V`#`)^O"0&`0T(`C<F)`+__SP$$`T\!1`-9(0IT&2E
+M38`,`GZ\)`8!!P@"-R8D`O__9[W_Z``$$/C_L0`(/!$4*?^_`!!F,<\0_[``
+M``!1B"W>,```$@``"CP"%"D,`C6,`@`@+0``$"W?OP`0W[$`"-^P```#X``(
+M9[T`&```````!((XW$(/@``$&[@"`X`M`%"`+:X$```,`C<$`@`@+01`__+?
+MOP`0"`(W1?XP```\`A0`9[W_T)!#108\`A0`9$)$^"0%`(#_OP`H_[0`(``#
+M&+C_LP`8`&(0+?^R`!#_L0`(_[```)11``"04@`"`!$@@``1$4``@B`A/`(`
+M0@"1("$T0D(```0B@&92``$`@B`A#`"QJGR$^`,00`!_`!$CN``1.C@`Y#@M
+M`!%#.`!'."T`$1GX`.@P+0`1(+@`PR@M`(,@+0!H&"T\"!0I_0(/@#P"%"G\
+M1P]X`)$@+SP"%"D`!"'X_$8/<#P"%"G\10]H`*0@+3P"%"D`@Q@M_$0/8#P"
+M%"D2(``[_$,/6"8T__\\$!0H?I3X`V803H!FE``!9A``"``4H7@``(@M"`(W
+ML3P3%``,`A*T_@#_^"0%`(```A``<%(@`@P`L:I\A/@#$$``,OX"`!"69$4$
+M#`(2M``$(0`D!0"```(0`'!2(`(,`+&J?(3X`Q!``#C^`@`($C0`'&80`"`T
+M!(,`#`(2M&8Q`"`D!0"```(0`'!2(`(,`+&J?(3X`R0$`(`40/_A_@(``#P$
+M$`T\!1`-9(0J<&2E39`,`GZ\)`8!>B0"___?OP`HW[0`(-^S`!C?L@`0W[$`
+M"-^P```#X``(9[T`,`````#?OP`H```0+=^T`"#?LP`8W[(`$-^Q``C?L```
+M`^``"&>]`#``````/`00#3P%$`UDA"J89*5-D`P"?KPD!@&/W[\`*-^T`"`D
+M`O__W[,`&-^R`!#?L0`(W[````/@``AGO0`P`````#P$$`T\!1`-9(0JP&2E
+M39`,`GZ\)`8!F-^_`"C?M``@)`+__]^S`!C?L@`0W[$`"-^P```#X``(9[T`
+M,#P$$`T\!1`-9(0J2&2E39`,`GZ\)`8!8@@"-\,D`O__`````#P$$`T\!1`-
+M)`,``3P"%"FL0P^(9(0JZ&2E3:@(`GZ\)`8!JP````!GO?_H``0@^/^Q``@\
+M$10I_[\`$&8QSQ#_L```?B2""A(```3?OP`0C@)`@!1```8`````W[$`"-^P
+M```#X``(9[T`&``````,`A3>`@`@+0(`("T,`B10)`4``XX"```"`"`M```H
+M+20&00```A#X`%&(+?X@``#?OP`0W[$`"-^P```(`F9@9[T`&`````!GO?_X
+M_[\```P"7K8`````+$,``Q!@``S?OP``/`00#3P%$`T\`Q0`9(1.*&2E7D"@
+M8D4&)`8`40!`."T(`!>69[T`"``````\!!`-/`40#62$3@!DI5Y`)`8`3`!`
+M."T(`!>69[T`"&>]__C_OP``#`)>M@`````P0___+&00`12```O?OP``/`00
+M#3P%$`T\`A0I```X+62$3E"D0`^09*5>4"0&`%H(`!>69[T`"#P$%"FD@P^0
+M,$+__SP$$`T\!1`-`$`X+62$3E!DI5Y0)`8`6@@`%Y9GO0`(`````&>]__C_
+MOP``#`)>M@`````P1___)./__RQC$``48``.)./__R0#$``\`A0`I$-%!"0'
+M$`#?OP``/`00#3P%$`UDA$YX9*5>:"0&`&\(`!>69[T`"```````9Q@D$&``
+M%S!"__\D0O__/`00#3!"__\\!1`-``(8>F2$3G@`8A`E9*5>:``"&+HD!@!O
+MW[\```!B$"4``CDZ9[T`"`#B$"4``CH"`.(X)3P"%``DYP`!,.?__P@`%Y:D
+M1T4$/`,4``@".'&D8D4$/`7_@'"$5'(TI0%%```0+0`%*CPTI4!09*/_Z`"%
+M*"W\H```9&K_R&1I`!!D:-_89&??R&1FS\@`@Q@M`(8P+?Q@````BA@M_&``
+M``")&"W\8````(@8+?Q@````AR`M_(```#C#``2L8````^``"```````````
+M9[W_T/^R`!@\$A0`DD)%!O^Q`!`\$10`_[``"&8Q1/@``A"X`("`+7XB%0K_
+MOP`H`((0*A!``!+_LP`@#`(W.@`````$0``'/`04*0`0@/ADA,\0?)`B"@P"
+M)<3_H@``WZ(``-^_`"C?LP`@W[(`&-^Q`!#?L``(`^``"&>]`#`\$Q`-/`00
+M#62$3J!F95Z`)`8`E@P`%Y8"`#@MDD=%!CP$$`TD`O___Z(``&9E7H``!T"X
+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
+M)`0``PP`MU("$H`O``(0N`("@"L2```&`````-XB``#_H@``WZ(``.A`__0`
+M````WZ(``,A```G?OP!(/`00#3P%$`UDA%*89*5>Z"0&`/$,`!>6```X+=^_
+M`$@``!`MW[8`0-^U`#C?M``PW[,`*-^R`"#?L0`8W[``$`/@``AGO0!09[W_
+MX/^Q``@`@(@M_[\`&/^R`!#_L```W((`&-Q"`)#<0P``$&``/HR2```P8@!_
+M%$``+0``@"U\91'!/`,4`#P$_X"4:D4$-(0!10`$(CPR0@?_-(1`4``"%'AD
+M@__H9(G/M'RP$`4E2O__`$,8+62+_[``24@M9(@`&&2'_]!]4(#&`$0@+0!+
+M*"W\D```)`00`/Q@```Y(P`$K&````!(&"W\9````$<0+7P&`#M\Q@G#)`,`
+M!OQ#````!C$\`,40)20#``'\0P`````0+=^_`!C?L@`0W[$`"-^P```#X``(
+M9[T`(#P$$`T\!1`-9*5?`&2$4M`,`!>6)`8"O-XB`!C<0@"0W$,``!1@_\H`
+M`"@M"`(\ECP#%`````````"`+0@"/)4``"@M`````&>]_[#_OP!(_[4`0/^T
+M`#C_LP`P_[(`*/^Q`"#_L``8C)0``'P2^#L\$?^`,I,'_S8Q`44`$YQX`!&*
+M/#8Q0#AF,``@`G&(+0@"/.X"<(`M?!7X.R0$``,,`+=2`K*H+P`"$+@"HJ@K
+M$J``"P````#>(@``_Z(`$-X"``#_H@`(WZ(`$-^C``@`8A`F,$(__Q1`_^\`
+M````WZ(`$-^C``@`8A`F,$(__Q!```<\!!`-/`40#3*'__]DA%,09*5?(`P`
+M%Y8D!@+Q_Z```#P$_X#?H@``-(0!10`$(CPTA$``?`(`!P)DF"W_H@``WZ(`
+M`'P#`#M\8PG#``,9/`!SF"7^8@``?!'X.P@"/1X`````?!#X.R0$``,,`+=2
+M`A&`+P`"$+@"`H`K$@``!@````#>8@``_Z(``-^B``#H0/_T`````-^B``#(
+M0``)W[\`2#P$$`T\!1`-9(134&2E7T`D!@$7#``7E@``."W?OP!(```0+=^U
+M`$#?M``XW[,`,-^R`"C?L0`@W[``&`/@``AGO0!0`````&>]_]`M(@`1_[\`
+M*/^S`"#_L@`8_[$`$!!``'3_L``(C)```#P"_X``@(@M`*`8+3"D`!\T0@%%
+M,A`'_P`"$CP`$"NX-$(0!`"%*"T`$(*X``4H^`"0@"T`HB@M`!"!^#BE``1D
+M0C!DK*````("("TD!1``_(4``!4``$=D1/^H9$3_L&1%OZP"!"`M9$+_J/R`
+M```"`A`MCB0``&1S`!(`$YCX<(14<@"%("T\!?^`.(0`!#2E`46,A`````4J
+M/#2E0"!\A!G#)(0`#`"'.!9DI``8``<[.`($("W\1P``)`(`!'T"``=]0@A'
+M?2)!!WS"W`=DI@`X`@4H+?RB```"!A`M_(```/Q```#>(@`8?%,2"MQ"```0
+M0``Q,$0`?Q2``"$``)`M?$,1P3P"%`!\<A`%E$5%!#P"_X`T0@%%``(2/#1"
+M0%`DI?__9$/_L'RR@,9\!``[?(0)PP(#&"T`!"$\`@*`+0"#&"4D!``!_A(`
+M````$"W\9```W[\`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`,&1%OZP"!"`M
+M"`(]7&1"_[`\!!`-/`40#0!@."UDA%/`9*5?6`P`%Y8D!@-0WB(`&'Q3F@K>
+M8@``%$#_U0``&"T(`CV$/`(4````D"T(`CV#```8+3P$$`T\!1`-9(13B&2E
+M7UC_JP``)`8#$0P`%Y8!(#@MWZL``"0$`0@D`O__E6,``'R#6$<D!``"?(-[
+MAP@"/9>E8P``9[W_L/^S`"@`H)@M_[\`2/^V`$#_M0`X_[0`,/^R`"#_L0`8
+M$*``7?^P`!",E0``?!+X.SP1_X`RM`?_-C$!10`4HK@PH@`?`!&*/#8Q0#@`
+M5*`M`!2A^&8P`"`"D(`M"`(]Y@*1B"U\%O@[)`0``PP`MU("TK`O``(0N`+"
+ML"L2P``]/`00#=XB``#>`P```&(0)C!"/_\40/_S`````/^@```\!/^`WZ(`
+M`#2$`44`!"(\-(1``'P"``<"A*`M_Z(``-^B``!\`P`[?&,)PP`#&3P`=*`E
+M_H(``'P1^#L(`CX&`````'P0^#LD!``##`"W4@(1@"\``A"X`@*`*Q(```8`
+M````WH(``/^B``#?H@``Z$#_]`````#?HP``R&``"@``$"T\!!`-/`40#?^B
+M``ADA%-09*5?0"0&`1<,`!>6`F`X+=^B``C?OP!(W[8`0-^U`#C?M``PW[,`
+M*-^R`"#?L0`8W[``$`/@``AGO0!0`````#P%$`TRI___9(14(&2E7W`D!@-_
+M#``7E@)@0"T(`CWL`````#P$$`T\!1`-)`+__V2$5`#_H@`(9*5?<`P`%Y8D
+M!@-Q"`(^%]^B``@`````C(,``#P"%"F40@^0/`G_@#"E`!\U*0%%,&,'_P#`
+M4"T``UNX``E*/`"K6"TU*1```$)0"P`#&K@`"UCX92(0*`"C&"T!:4@M``,9
+M^#DI``2M(```9$S_Z'#&7#)D1?_@`&)H+3%*#__]H````&Q(+?TJ``!]!@`'
+M`&4H+?RF```5```C9$;_\&1&__AD1=_L`&8P+61"__#\P````&(0+8R$``!P
+MA%1R`(4@+3B$``2,A```?`4`.WRE"<-\A!G#``4I/"2$``P`AS@6/`3_@#2$
+M`44`!SLX_$<````$(CPTA$!(```0+62&W[@`9C`M`&08+?Q@````IB@E)`,`
+M`?RC```#X``(``````````!D1=_L`&8P+0@"/EQD0O_X9[W_B/^Q`#``H(@M
+M_[\`</^^`&C_MP!@_[8`6/^U`%#_M`!(_[,`0/^R`#C_L``H$*``F(R4```R
+MA`?_/`+_@#"C`!\`!)*X-$(!10!RD"T``A(\`!*1^#1"(`A^0KH*?!;X.P`$
+MJ[AD4P`@`'6H+61"[_@`%:CX?O=<`P*BJ"TF\``!.K4`!`)3F"T`````CJ(`
+M`*^B`!C>8@``_Z(`"(^C`!C?H@`(,&,/_S!"'_\`4``:`@`!]```(!`0@P`)
+M`````'P>^#LD!``##`"W4@/6\"\``A"X`\+P*Q?`_^P`````CZ,`&-^B``@P
+M8P__,$(?_P!0`!H"``'T```@$!"#``@\!!`-/`40#3*'__]DA%2`9*5?B"0&
+M`_H,`!>6`B!`+3P"%"F45@^0?!7X.SP0_X`"]K`*-A`!10`0@CPV$"`0`L"8
+M+0)0@"T`````W@(``/^B`!#?H@`0,$(/_Q!3``D`````?!?X.R0$``,,`+=2
+M`O6X+P`"$+@"XK@K%N#_\P````#?H@`0,$(/_Q!6``@\!!`-/`40#3*'__]D
+MA%309*5?B"0&!`4,`!>6`B!`+?^@```\!/^`WZ(``#2$`44`!"(\-(0@`'P"
+M``<"1)`M_Z(``-^B``!\`P`[?&,)PP`#&3P`<I`E_D(``'P3^#L(`C\&````
+M``````!\$/@[)`0``PP`MU("$X`O``(0N`("@"L2```&`````-Y"``#_H@``
+MWZ(``.A`__0`````WZ,``,A@``H``!`M/`00#3P%$`W_H@`@9(12F&2E7N@D
+M!@#Q#``7E@(@."W?H@`@W[\`<-^^`&C?MP!@W[8`6-^U`%#?M`!(W[,`0-^R
+M`#C?L0`PW[``*`/@``AGO0!X/`00#3P%$`TD`O__9(148/^B`"!DI5^(#``7
+MEB0&`^H(`C\7WZ(`(`````!GO?^`,0(.`/^^`'``@/`M_[8`8`#`L"W_OP!X
+M_[<`:/^U`%C_M`!0_[,`2/^R`$#_L0`X_[``,)##`!V4R0!$_Z``"/^C`"!]
+M`P.#WZ0`(``#&X#_H```?`,>(*>I``JGI``,?00#PZ^G``000`":,0@!_@`$
+M(\``:!@E`&08)7P#)B`D`P(`$$,`F``````TA`0`IZ0`"(_"```\$_^`WZ,`
+M(#"Q`!\V<P%%9*4`$G!"4K(`$YH\`B*(+39S0`#?R0`8`!&)^&9R`#AD8P`!
+M`C.8+0`#&/C_LP`89E0`('TCN@HD$/__WZ,`&``%F/C_I0`H`!"`/`(TH"W<
+M8@``R$``8SP$$`W?PP`8$&``8#P$$`U\<QH*$&``7CP%$`W<8@``$$``6F1B
+M`!!D8P`4```!3_^C`!!P8!B?`&`X+0```4\`````C$,`"!1G__XD`P`!```X
+M+0```4\D!``!P$H``"0(```51P`$`&!0+>!*```10/_Z)`@``0````````%/
+M$0#_]`````">P@`$9$(`4``"$/@"XA`MT$,```!@."T`<!@E\$,``!!@__L`
+M````GL(`!&1"`%```A#X?N(2"NA``$P",E`M/`P4`-U(``"5@T4$WHX``-_"
+M`!A]"V@#,6O__R5G``%]SF@#`.,`&@!@`?0QSO__``!X$!7N`%A\4Q(*```!
+M3R0#__]D1P`0<.,`&&1#`!AP9``8```!3WP5^#L,`+=2)`0``P`"&+@``B'X
+M`(,8+P!B&"T\`B&--$+O00`#&/@``A0X-$)KVP`"%'@T0C3;`&(`'0``&!``
+M`QRZ`'48+0````!\`O@[`$,0*Q1`__T`````WZ,`&-QB``#H0/^?/`00#3P%
+M$`UDA%4@9*5?H`P`%Y8D!@0GW[\`>-^^`'```!`MW[<`:-^V`&#?M0!8W[0`
+M4-^S`$C?L@!`W[$`.-^P`#`#X``(9[T`@`!H$"4`!"/``$00)0@"/U2GH@`(
+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
+M)!4`$'[R0@H\!!`-`F`H+62$7-`D!@3J#``7E@(`."UF2``(?NA""CP$$`T"
+M8"@M9(1<\"0&!.L,`!>6`@`X+=Y'`@`\!!`-`F`H+62$71`,`!>6)`8$[-Y'
+M`@@\!!`-`F`H+62$73@D!@3M9E($``P`%Y8\$Q`-`O*0+69S75C>20```B!`
+M+0)@("T"@"@M)`8$\0(`."T,`!>6)C$``18U__=F4@`0/!+_@#P$$`TV4@%%
+M9(1=@``2D7P"@"@M-E(A`20&!/0`$I#X`@`X+7[R0@H``(@M`H"H+0P`%Y8D
+M$P`0WD<"`#P$$`UF4@7X`H`H+62$7:@D!@3U#``7E@+RN"T\$A`-9E)=T```
+M``#>Z0```B!`+0)`("T"H"@M)`8$^0(`."T,`!>6)C$``18S__=F]P`0W[\`
+M4-^^`$C?MP!`W[8`.-^U`##?M``HW[,`(-^R`!C?L0`0W[``"`/@``AGO0!8
+M/`@4`#P'%`"1`D4&9[W_X&3G1/C_LP`8_[(`$``"$+C_L0`(`.(0+?^P``",
+MC@``D$(``A!``!@QS@?_/`;_@``.4K@TQ@%%```0+0`&,CPTQB``9,D@`#!#
+M`!\D0@`!`&H8+3!"`/\``QGX`&8@+0!I&"W\@```_&```)$#108``QBX`.,8
+M+9!C``(`0Q@K%&#_\C!#`!\D`@`!$*(`*``.?'@\`_^```Y\>#1C`44`8$@M
+M``,:/#1C`"0`"4]X9&+_\`'C&"T!XC`M9$0`%&1%`!PX8P`$K&```#4B`"$!
+MY1@M.,8`!*S````!Y"`M_(`````"$OC\8````>(0+20#`!``````_$#X`"1C
+M___\0/@(,&,`__Q````48/_Z9$(`$#P"_X`T0@%%``(7^#1"`($``A)X`>(0
+M+?Q````\"_^`-6L!10`+6CPU:T`@`>L0+?Q```"1`D4&``(0N`#B$"V00@`"
+M$$``1```("UE:P`8``["N``.<[AE;0`@96P`&&5PW]!E>=_@,((`'SP&_X``
+M3B@M-,8!10!8$"T`!C(\``(1^#3&$```!2CX`$N8+?Y@``!DPQ`09,D`!`!-
+MF"W^8````*8P+3C&``0`3)@M_F```&1R`!BLP````$,P+?S```!D<2`X`*DH
+M+0!2,"W\P```9&H@6`!1,"TXI0`$_,```"2)``&LH````$HH+?R@``!D:@`0
+M9&8@`&1E(`@0@``-9&,@$`!0B"T`62`M_B````!*4"W\@````$8P+?U`````
+M12@M_,````!#&"W\H```_&```)$"108Q)`#_``(0N`#B$"V00@`"`((0*Q1`
+M_\8P@@`?/`/_@"0&``$T8P%%``8P/`!@$"T``QH\``(7N#1C4#@T0@!!9&2O
+MY``"$K@!Y"`M9$4`"`'C&"T!XA`M9,;___QF```!Y7@M_$```#B"``3]X```
+MK$```-^S`!C?L@`0W[$`"-^P```#X``(9[T`(`````",@P``/`3_@#2$`44`
+M`!`M``0GN#2$`$%P8U1R``0BN'QD.@IDA``(<.?\.J"G``!\9"(*`^``"*#$
+M````````C((``#P#_X`T8P%%``4L.``#'[@T8P!!,$('_P`#&K@``A1X9&0`
+M"`!#&"W\90```$0@+?R&```#X``(```0+2RB`!$00``0C(,``#P"_X`P8P?_
+M-$(!10`#&W@``A=X`*,H+31"`"$`!2DX``(2^##&``$`HB@M```0+?RF```#
+MX``(``````/@``@D`O__+*(`$1!``!",@P``/`+_@#!C!_\T0@%%``,;>``"
+M%W@`HR@M-$(`(0`%*3@``A+X?*(J"@``$"U\I0`#`^``"*#%`````````^``
+M""0"__]GO?_@/`00#?^P```\$!`-_[\`&&2$7@#_L@`09@5?R/^Q``@,`!>6
+M)`8%B`P"-UH`````!$``)-^_`!@,`C94``````1``"#?OP`8#`(ZO``````$
+M0``;/!(4`#P1%`"21T4&9C%$^#P$$`UF!5_(9(1>&"0&!:8`!SBX?B<]"@P`
+M%Y8DY___DD)%!@`"$+A^(A4*$$``"@``@"T"`"`M#`(W.B80``&20D4&``(0
+MN'XB%0H"`A`J%$#_^0(`("T``!`MW[\`&-^R`!#?L0`(W[````/@``AGO0`@
+M``````/@``@``!`M9[W_^````4__I```<(44WP```4\#X``(9[T`"`````!G
+MO?_P_[```/^_``@,`B[$`("`+=X"``A\!0`[C@8`#'RE"<,`!2(X?`((!C2$
+M`#]\@EB&_@(`"````4\\`O_`)`,``31"`+,``QN\``(2?'X#2`5\HCD&?(/M
+M!GS"&04```%/_$,`````$"W?OP`(W[````/@``AGO0`0`````&>]_U#_LP"8
+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
+M_C4`*#1"$`"N(@`,#`)$+`(@("W?OP#(W[<`P```$"W?M@"XW[4`L-^T`*C?
+MLP"@W[(`F-^Q`)#?L`"(`^``"&>]`-``````+.(``A1``!L``(`M/`+_@#1"
+M`2D``A8X-$(``7P#`#L``A0X?&,)PWQB.0;<4```$@``Y"0"__\DX___?%#_
+MQG!C^/)F!0`(`@`0+0"C*"T!,"`O`````/Q```!\@AH*?&-(`?Q#``!D0@`(
+M%$7_^@````#?HP!@`!<0`/^@`!#^-0`HKZ(`$/^@``#_H``(_Z``&/^@`##_
+MH``X_Z``0/^C`""NH@`($F``OY>B`!3_LP`H)`,``GQB:@<``A``IZ(`%"0#
+M``$0XP"G`````!#@``4`````-$)```(`2"VOH``X``(0`#1"@``"0"`M?`(Y
+MQP.@*"W_H````B`P+?^I``BOIP`8#`(6'J>B`!02```,`$`@+7P"`#M^$$@!
+M?$()PP```4\\`_^`-&,!*0`#'C@T8P`!``,<.'Q#.0;\<```)`/__Q2#_WL`
+M`!`MG[,`$#P$$`T\!1`-9(1@:&2E8I`D!@%J`F`X+0P"?KPD$``!GB(`!&1"
+M`%```A#X`L(0+=!#````8"`M`'`8)?!#```08/_[`````)XD``0`$RAX9(0`
+M4``$(/@,`D0D`L0@+7Q"\$,`4Y@M`G>X*Q;@`*("`!`MGB,`!&1C`%```QCX
+M`L.P+31"````0!`GTL,```!@("T`8A@D\L,``!!@__L``````J`@+0P")AXD
+M%``,"`)%Y`)`("T`````/`+_@#1"`2D``A8X-$(``7P%`#L``A0X?*4)PWRB
+M.0;<1```$(``5'R"2`'^H@``)`+__Q#@`$!\1/_&/`+_@#1"`2D``A8X-$(`
+M`0`"%#A\HCD&W$(``!!``&=D@P`(``"`+0````!\0D@!_((``#P$_X`TA`$I
+M$$``"P`$)C@T@@`!)A```1('`"L``A0X?*(Y!@!@("W<0@``%$#_\F1C``C\
+M@```/`00#3P%$`UDA"9H9*5BD`P"?KPD!@&B"`)%X:ZP`#!^M4@!`B`@+?XU
+M`"@\`@7O-$((``P"1"RN(@`,W[\`R-^W`,```!`MW[8`N-^U`+#?M`"HW[,`
+MH-^R`)C?L0"0W[``B`/@``AGO0#0/`00#3P%$`UDA":89*5BD`P"?KPD!@$-
+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
+M?&(Y!MQ2```20`#M)`+__R4%__]\4O_&<*7X\@"R*"T"0!`M9*4`"`#R("\`
+M````_$```'R"&@I\8T@!_$,``&1"``@41?_Z`````/^G`(@"X"`M_Z@`D`P"
+M$C0D!0`"WZ<`B-^H`)`00`#K`$#P+0!`("T``"@M_Z<`B"0&`(`,`F9@_Z@`
+MD-^H`)`"`!`MWZ<`B`/`&"UF!`"`:$H``&A)``AH1@`0:$4`&&1"`""P:@``
+ML&D`"+!F`!"P90`8%$3_]F1C`"#_IP"(`\`@+0P"+L3_J`"0CN4``#P$``23
+MPP`=W\(`&`"D("4``QK``(,8):_#``S?PP`(?`,(!O_#``B.XP``?&)8!__"
+M`!@D`@`!WZ@`D!$"`&7?IP"(WZ,`8``6$`#_H``0_Z``&*^B`!#_H``P_Z``
+M./^@`$#_HP`@KB(`"!*@`&J7H@`4_[4`*"0#``)\8FH'``(0`!$```4`````
+M-$)```)`."VOH``X``(0`#!"?W\"X"`M_Z<```.@*"W_H``(`\`P+:^H`!@,
+M`A8>IZ(`%!)```TD`___?`0`.WY22`%\A`G#```!3SP#_X`T8P$I``,>.#1C
+M``$``QPX?(,Y!OQR```D`___%$/]YY^T`!`\!!`-/`40#62$8<!DI6,`)`8"
+M9P*`."T,`GZ\)!(``9X"``1D0@!0``(0^`)B$"W00P```&`@+0!R&"7P0P``
+M$&#_^P````">!``$`!0H>&2$`%``!"#X#`)$)`)D("U\0O!#`%2@+0*6L"L6
+MP`!K`D`0+9X#``1D8P!0``,8^`)CF"TT0@```$`0)])C````8"`M`&(8)/)C
+M```08/_[`````"03``$#P"`M)`4``B0&`(`,`A*Z)!0`#`@"27(`````"`)(
+M`P``J"T(`D@E``"H+=SB`````$`M$$#_F0``."T`0#@M)`+__P@"2=Q\1__&
+M"`))IP``D"W="```$0``"Y>B`!0D`___```X+0@"22I\:/_&)`,``7QB:@??
+MHP!H``(0``@"2>S_HP`H``!`+0@"22H``#@M)`,``7QB:@>GH@`4WZ(`:`@"
+M2.[_H@`H/`00#3P%$`UDA&%89*5C``P"?KPD!@(,EC0`-G*4.'(`%*``#`(F
+M'@(@("T"X"`M`@`H+0``,"T,`@^D`H`X+0@"27T"X"`M/`00#3P%$`UDA"<`
+M9*5C`"0&`?X,`GZ\)!0!``@"2FD`````/`00#3P%$`UDA"B(9*5C`"0&`J8,
+M`GZ\)!,``0@"27(`````/`00#203``$,`G]Z9(1B2`@"27(`````/`00#3P%
+M$`UDA&$H9*5C``P"?KPD!@(%"`)*:0````#>!``H)`4``B0&`#@``)@M#`(2
+MN@``B"T(`DHV`\`@+3P$$`T\!1`-9(1?V`P"?KQDI6,`$D#^TB03``%\`P`[
+M?E)(`7QC"<,```%//`+_@#1"`2D``A8X-$(``0`"%#A\8CD&"`))<OQ2```\
+M!!`-/`40#62$88ADI6,`)`8"'`P"?KPD$P`!"`))<@````#>!``H)`4``B0&
+M`#@``)@M#`(2N@``B"T(`DEO`\`@+8R"``!\13P#?$,^`P`#'C@`!2PX`*,H
+M)3!#_P``HR@E,$,`_P`%*```HR@E/`/0#31C_NT0HP`@9[W_Z'Q%/`-\0SX#
+M``4L.``#'C@`HQ@E,$7_``!E&"4P0@#_``,8``!B$"4\`R_R-&,!$A1#``\D
+M`O_WC((`)'Q$/`-\0SX#``0D.``#'C@`@Q@E,$3_``!D&"4P0@#_``,8``!B
+M$"4L0@`!``(0(WP"$$0#X``(9[T`&`````",@@`4?$4\`WQ#/@,`!2PX``,>
+M.`"C&"4P1?\``&48)3!"`/\``Q@``&(0)2Q"`!`40``3`````(R"`!AGO0`8
+M?$0\`WQ#/@,`!"0X``,>.`"#&"4P1/\``&08)3!"`/\``Q@``&(0)20#__8L
+M0@`2.$(``0`"$",#X``(`$,0)`@"2NDD`O_VC(,`%'QG/`-\8CX#``<\.``"
+M%C@`XA`E,&?_``!'$"4P8P#_``(0``!#&"4L8P`1%&``$V>]__``IC`A`,40
+M*A1``!T``!`MC((`)'Q'/`-\0SX#``<\.``#'C@`XQ@E,$?_``!G&"4P0@#_
+M``,8``!B$"4`1C`K%,``#P``$"V,@P`(?&8\`WQB/@,`!C0X``(6.`#"$"4P
+M9O\``$80)3!C`/\``A```$,0)7Q"^`,`12@M`(40+0/@``AGO0`09[W_P"0"
+M__C_M``H`*"@+?^S`"``@)@M_[(`&`#`D"W_L0`0)!$`"?^_`#C_M0`P_[``
+M"*S"```,`DL.)`8`!!!``!,FE0`$C$,``"0"__6N0@```J"`+7QQ/`-\8CX#
+M``(6.``1C#@"(H@E,&+_``(BB"4P8@#_`!&(``(BB"4N(@`*%$``#*^C``0D
+M$0`)W[\`.`(@$"W?M0`PW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`0#P"
+M$`UR(_CR9$)C('Q#$@H`0``(``````(`*"T"8"`M)`8``0P"2PXF$``!$$#_
+MZ0````"`0@``%$#_^`(`*"T"@"@M`F`@+0P"2PX"%#`C$$#_X"80``,"(!`M
+M?!`(!*Y0``#?OP`XW[4`,-^T`"C?LP`@W[(`&-^Q`!#?L``(`^``"&>]`$`"
+M8"`M`J`H+0P"2PXD!@`$$$#_S@````",0@``?%`\`WQ#/@,``QXX`!"$.*^B
+M```"`X`E,$/_``(#@"4P0P#_`!"```(#@"4F$``("`)+?`(5@"$`````9[W_
+M\``%*`#_OP`(!*``$*^E```PH@`#%$``#M^_``@,`DL^`Z`P+8^D``#?OP`(
+M)`/__``"$`!GO0`0.$(``0""&`H#X``(`&`0+0````#?OP`()`/__`!@$"T#
+MX``(9[T`$`````!GO?_P``4H`/^_``@$H``0KZ4``#"B``,40``.W[\`"`P"
+M2SX#H#`MCZ0``-^_``@D`__\``(0`&>]`!`X0@`#`((8"@/@``@`8!`M````
+M`-^_``@D`__\`&`0+0/@``AGO0`0`````&>]_\#_L@`8`("0+?^Q`!``P(@M
+M_[\`./^U`##_M``H_[,`(/^P``@$H`!1KZ````P"2Z0`````KZ(```1``"``
+M0(`M`@`H+0)`("T#H#`M#`)+/B03``(D%0`)``(0`!!3``\D%``!$%4`+P``
+M```05``=`````!!4`!+?OP`XC[````)`("T#H#`M#`)+/@(`*"T``A``%%/_
+M\P`````2(/_XC[```(XB```D0O__!$'_\ZXB``"/L````````-^_`#@"`!`M
+MW[4`,-^T`"C?LP`@W[(`&-^Q`!#?L``(`^``"&>]`$`2(/_VW[\`.(XB```D
+M0@`!KB(```(`$"W?OP`XW[4`,-^T`"C?LP`@W[(`&-^Q`!#?L``(`^``"&>]
+M`$``````CZ(```1!`!)P0_XN+C$``0(CB"0D$/__W[\`.`!1@`K?M0`PW[0`
+M*-^S`"`"`!`MW[(`&-^Q`!#?L``(`^``"&>]`$``````"`)+Z0``@"T(`DP(
+M)!#__V>]__#_OP`(`Z`P+0P"2]BOH```!$``!H^D```D`P`!%(,``]^_``@#
+MX``(9[T`$-^_``@D`O__`^``"&>]`!!GO?_@)`(``?^Q`!`D$0`!_[``"`"`
+M@"VOH@```*`0+?^_`!@"`"`M`$`H+0P"2]@#H#`M!$``"H^C```88``)W[\`
+M&!1Q__@"`"`MW[\`&-^Q`!#?L``(`^``"&>]`"#?OP`8)`+__]^Q`!#?L``(
+M`^``"&>]`"!GO?_(_[(`$`"`D"W_M0`H`,`@+?^T`"``H*@M_[,`&`#`H"W_
+MOP`P_[$`"`P"@AS_L`````(0`"13``$"LZ@O`E6H+0*R$"L40``9``"`+0@"
+M3'\"0!@M`J,0*Q1``!7?OP`P`&`@+0*`*"T"8#`M#`)E*`!@B"UF$``!%$#_
+M]@)0&"W?OP`P`B`0+=^U`"C?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`X
+M`````-^_`#```(@MW[4`*`(@$"W?M``@W[,`&-^R`!#?L0`(W[````/@``AG
+MO0`X`````&>]_]#_LP`@`*"8+?^R`!@`P)`M_[$`$/^P``C_OP`H#`)*O@"`
+MB"T40``>`$"`+8XC``1\9#P#?&(^`P`$)#@``A8X`((0)3!D_P``1!`E,&0`
+M_P`"$```1!`E`D*0*Q9``!FOHP`$?&8\`WQB/@,``A8X``8T.`#","4P8O\`
+M`,(P)0"`$"T`!C```F`@+0#","4"("@MKZ,```P"9@I\QO@#W[\`*`(`$"W?
+MLP`@W[(`&-^Q`!#?L``(`^``"&>]`#``````"`),QR00__UGO?_(_[0`*"04
+M``3_LP`@)!,`"?^R`!@`@)`M_[$`$"01``/_L``(`*"`+?^_`#`"`"@M`D`@
+M+0P"2SX#H#`M``(0`!!1``??OP`P$%,`#@`````05/_VC[```"00___?OP`P
+M`@`0+=^T`"C?LP`@W[(`&-^Q`!#?L``(`^``"&>]`#@`````CZ(``"00__7?
+MM``HW[,`("A#``#?L@`8`$.`"]^Q`!`"`!`MW[``"`/@``AGO0`XC(,`#&>]
+M__AGO0`(?&8\`WQB/@,`!C0X``(6.`#"$"4P9O\``$80)3!C`/\``A```$,8
+M)7QC^`,`91`M`^``"`""$"T`````9[W_P/^S`#``H)@M_[(`*`#`D"W_L0`@
+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
+M`*,H)!"@`!2/HP```D-`)@)@("T`0"@M`Z`P+18"__(`2(@*$H```B0"__^N
+M@P```'(8*@(C$`K?OP`PW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`."1$
+M``0D`__UW[\`,`!$&`O?M``H*$3__]^S`"`D`O_\W[(`&`!D$`O?L0`0W[``
+M"`/@``AGO0`X"`)0JB0"__P(`E"J)`+__V>]__```#`M_[\`"`P"4(`#H#@M
+M`$`8+1!@``2/H@``)`+_\RAD````9!`+W[\`"`/@``AGO0`09[W_Z/^Q``@`
+M@(@M_[```/^_`!`,`E#$`*"`+01```K?OP`0`B`@+=^Q``@"`"@MW[```"1&
+M__\``#@M"`)0@&>]`!@`````W[$`"-^P```#X``(9[T`&&>]_\#_M0`P`."H
+M+?^T`"@!`*`M_[,`(`"@F"W_L@`8`,"0+?^Q`!#_L``(_[\`.`P"2KX`@(@M
+M$$``"P!`@"W?OP`X`@`0+=^U`##?M``HW[,`(-^R`!C?L0`0W[``"`/@``AG
+MO0!``B`@+0)@*"T,`DO8```P+01`__$`0(`M"`)1$`*`F"T"`"@M`B`@+0P"
+M2]@``#`M!$#_Z0!`@"T"`"@M`B`@+0)`,"T,`D\L`Z`X+1!`__2/HP``%'/_
+M\P(`*"T`0"`M`J`H+0P"92@"@#`M%$#_[0(`*"T(`E#YW[\`.`````!GO?_@
+M)*+___^R`!`L0O_^_[\`&`"@D"W_L0`($$``)/^P```,`DJ^`("(+1!```@`
+M0(`MW[\`&`(`$"W?L@`0W[$`"-^P```#X``(9[T`(`(@("TD!?__"`)10@``
+M,"T`0"@M#`)/0`(@("T"("`M`@`H+0`"$``04O_N```P+0P"2]@`````!$'_
+M]0!`@"W?OP`8`@`0+=^R`!#?L0`(W[````/@``AGO0`@``````@"42\D$/_Z
+M9[W_T/^Q``@`@(@M_[,`&`#`("W_L@`0`,"8+?^P````H(`M_[\`*`P"@AS_
+MM``@``*0``(2$"H40``?)E0``0@"46T"("@M#`)DW``````00``9`%&(+P`1
+M&````Q@G`'"`(0(2&"H48``39%$``0(@*"T"8"`M#`)E*`*`,"T"("`M`@`P
+M+11`_^\``"@MW[\`*"0"``'?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`P
+M`````-^_`"@``!`MW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`,`````!G
+MO?_H_[``"`#`@"T\!A`,`Z`X+?^_`!`,`D\L9,;^\!!```6/I0```$`@+0P"
+M45`"`#`M+$4``=^_`!``H!`MW[``"`/@``AGO0`8`````&>]_^#_L@`0`,"0
+M+?^Q``@`@(@M_[```/^_`!@,`DJ^`*"`+1!```@"`"@MW[\`&-^R`!#?L0`(
+MW[````/@``AGO0`@``````(@("T,`DO8```P+01!``@`0(`M"`)1J-^_`!@`
+M````#`)+V``````$0``,`$"`+0(`*"T"("`M#`)1B`)`,"T"("`M`@`H+2A#
+M__\48/_E```P+11`__(`````W[\`&`(`$"W?L@`0W[$`"-^P```#X``(9[T`
+M(&>]_^@D!0`(_[$`"/^P``#_OP`0#`"QJ@"`B"T00``%`$"`+0!`("T``"@M
+M#`)F8`(@,"W?OP`0`@`0+=^Q``C?L````^``"&>]`!@`````9[W_\#"E`/\D
+M!@`!_[\`"`P!G)`#H#@M!$```R0"__^3H@`'``(0`-^_``@#X``(9[T`$```
+M````X$@M,*4`_S#&__\D!P`!"`&>`"0(``%GO?_P,*4`_P.@2"TPQ@#_)`<`
+M`?^_``@,`9N*)`@``8^C``0D!/__W[\`""A"``!GO0`0`&(@"@/@``@`@!`M
+M9[W_Z/^_`!`,`D\L9Z<`"`!`&"T08``')`+__X^D``APA00N<(0"+@"D("44
+M@``$W[\`$-^_`!`#X``(9[T`&)!D``"08@`!W&,````$)CP``A0\9[T`&`""
+M$"5\93H",&0`_P`%*CP`1!`E?&0X`@!%$"4`!"`\?&4^`P!$$"4`!2XX?&0\
+M`P!%$"4`!"0X`$00)3!C_P`#X``(`$,0)6>]_^C_L``(`."`+?^_`!`,`D\L
+M9Z<`!!!```^/HP`$+&,`!!1@``W?OP`0C$(``'Q0/`-\0SX#``,>.``0A#@"
+M`X`E,$/_``(#@"4P0@#_`!"```("@"7?OP`0`@`0+=^P``@#X``(9[T`&```
+M``!GO?_()`?___^U`"@`P*@M_[\`,#P&$`S_M``@9,;]P/^S`!C_L@`0`("0
+M+?^Q``@`H(@M#`)2+/^P```\!A`-`D`@+0(@*"TD!___9,9CF`P"4BP`0)@M
+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
+MW[\`*-^S`"#?L@`8?$()`M^Q`!```A!X`%`0)=^P``@#X``(9[T`,``````(
+M`E3Z``"`+3P3$`T\!!`-9(1F6`P"?KQF9780`D`@+0(@*"UF!OW`#`)2+"0'
+M__\\!!`-9(1F>&9E=A`,`GZ\`$`P+0@"5-LD`O__`````&>]_\#_M@`P`,"P
+M+?^U`"@\%1`-_[0`(&:U<=C_LP`8`("8+?^R`!`D%``V_[$`"```B"W_L```
+M_[\`.`P"42("H(`M"`)5-P!`D"T`````)C$``1(T`"#?OP`XW@8```)@("T"
+M0"@M#`)1B&80`!`40/_W`````!+```0`$8DX`K$0+8!"``RNP@```K&(+8XB
+M``@40``&W[\`.([#```08``#)`,`(*[#``#?OP`XW[8`,-^U`"C?M``@W[,`
+M&-^R`!#?L0`(W[````/@``AGO0!``````"0"``7?M@`PW[4`*-^T`"#?LP`8
+MW[(`$-^Q``C?L````^``"&>]`$!GO?_@_[````"`@"W_OP`8_[(`$!"``$S_
+ML0`(C((`%!1``$D`````D)$`&1"@`!LD$@`!`````-X0``@2```0```0+8X"
+M`!000/_[`B`@+9("`!N2!0`8$$``+R0&``&2!P`:D@(`&0#B."4,`9UR,.<`
+M_]X0``@6`/_R```0+=^_`!C?L@`0W[$`"-^P```#X``(9[T`(`!`@"W>`@`(
+M%$#__202``$(`E62C@(`%`P!G7*2!P`9WA```!(`__```!`MC@(`%!!`__L"
+M("`MD@(`&Y(%`!@40/_U)`8``0P"4>``````D@,`&9(%`!@"("`M)`8``0!R
+M&`0``Q@G`&(0)`P!G7(P1P#_"`)5C]X0````````#`)1X`````"2`P`9D@4`
+M&`(@("TD!@`!`'(8!`!B$"4,`9UR,$<`_P@"56_>$``("`)5@"0"__^,@@`4
+M%$``!``````#X``(D((`&0`````#X``()`+__Q"``!``````9[W_\/^_``C_
+ML````````-R0``@``"@M#`)F8"0&`"`6`/_[`@`@+=^_``@``!`MW[````/@
+M``AGO0`0`^``"```$"T`````9[W_J/^V`#@\%A`-_[<`0&;69Q#_M0`P/!<0
+M#?^Q`!``H*@M_[``"`"`B"W_OP!0``"`+?^^`$C_M``H_[,`(/^R`!@,`E',
+M)`0`(!(```(`0)@M_@(``!)@`*4"H"@M_G``"`(@("T,`E&(`L`P+1!``'4"
+M("`M`J`H+0P"48AFYF<H$$``<`(@("T,`E#2`J`H+01``)L`0)`M`B`@+0!`
+M*"T,`E&(`L`P+1!``'L"("`M`D`H+0P"48AFYF<H$$``=CP0$`T``/`M9A!U
+M4"04``@`````W@8```(@("T"0"@M#`)1B&80`!@00``>?\/X`R?>``$7U/_W
+M/`80#`(@("T"0"@M9,;^\```."T,`D\L``"8+3P$$`T\!1`-9(1G:&2E=3@,
+M`GZ\`$`P+=^_`%`"8!`MW[X`2-^W`$#?M@`XW[4`,-^T`"C?LP`@W[(`&-^Q
+M`!#?L``(`^``"&>]`%@`````/`@0#``#$/@``QEX`&*@+SP"$`UD0G50`J`H
+M+0!4H"UE!OW`CH(`"`(@("VN<@`0)`?__P)@@"VN8@`4#`)2+/^H``#?J```
+M`B`@+:)B`!D"0"@M)`?__PP"4BQE!OW``B`@+0)`*"T,`E#2HF(`&(Z#``P`
+M0*@MDH(`$"QC``&B8P`;!J'_E:)B`!H\$!`-/`00#68%=3@,`GZ\9(1GH`P"
+M5;P"8"`MW[\`4-^^`$@``)@MW[<`0`)@$"W?M@`XW[4`,-^T`"C?LP`@W[(`
+M&-^Q`!#?L``(`^``"&>]`%BN=0`0)`+__ZY@`!0"("`MHF(`&`P"5+X"H"@M
+MHF(`&0)@$"W?OP!0W[X`2-^W`$#?M@`XW[4`,-^T`"C?LP`@W[(`&-^Q`!#?
+ML``(`^``"&>]`%BN=0`0)`+__ZY@`!0"("`MHF(`&`P"5+X"0"@MHF(`&0)@
+M$"W?OP!0W[X`2-^W`$#?M@`XW[4`,-^T`"C?LP`@W[(`&-^Q`!#?L``(`^``
+M"&>]`%@\!!`-#`)_>F2$9P`(`E8=W[\`4#P0$`T\!!`-9(1G0`P"?KQF!74X
+M"`)63SP$$`UGO?_`_[\`./^U`#``H*@M_[0`*`#`H"W_LP`@`."8+?^R`!C_
+ML0`0_[``"`P"42(`@(`M`@`@+0!`*"T,`E#2`$"0+0!`B"T"0A`E!$``;#P&
+M$`T"`"`M`B`H+0P"48ADQF<H%$``-@(`("T28``)/`80#`)`*"T"`"`M9,;]
+MP`P"4BPD!___!$``(@!`D"VN8@``$H``'P``D"T\!A`,`@`@+0(@*"T,`E($
+M9,;]P`(`("T"("@M`Z`P+0P"5#S_H@``)`/__Q!#`%;_H@``)`0`(P!`&"T`
+M!"+\?$4)`GP#*08TA!$```4H`!!D``DD$O__9(0!`!!D`#-DA/X`$&0`(SP$
+M$`T`0"@M#`)^O&2$:$C?OP`X`D`0+=^U`##?M``HW[,`(-^R`!C?L0`0W[``
+M"`/@``AGO0!``````#P&$`T"("@M#`)1B&3&9Q`00/_&`@`@+3P&$`P"("@M
+M9,;^\```."T,`D\L)!+__SP$$`T\!1`-9(1GX&2E=C`,`GZ\`$`P+0@"5M[?
+MOP`X``4H0```D"VNA0```D`0+=^_`#C?M0`PW[0`*-^S`"#?L@`8W[$`$-^P
+M``@#X``(9[T`0```````!2A```"0+22E``$"0!`MKH4``-^_`#C?M0`PW[0`
+M*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`0#P$$`T\!1`-9(1GP&2E=C`"H#`M
+M#`)^O"02__\(`E;>W[\`.#P$$`TD$O__#`)_>F2$:"@(`E;>W[\`.`````!G
+MO?_8_[(`&#P2$`W_L0`09E)H>/^P``@`@(@M_[\`(`"@@"VOH``$`@`H+0(@
+M("T,`E&(`D`P+0(@("T00``,`@`H+0P"4-(`````!$'_]@!`@"W?OP`@`@`0
+M+=^R`!C?L0`0W[``"`/@``AGO0`H/`80#6>G``0,`D\L9,9F4!!`__2/L``$
+M$@#_\]^_`"`J$``8%@``$M^R`!B,0@`(?%`\`WQ#/@,``QXX`!"$.-^Q`!`"
+M`X`E,$/_`#!"`/\"`X`E`!"```("@"4`$($"`@`0+=^P``@#X``(9[T`*`@"
+M5STD$/_X9[W_Z/^P``C_OP`0#`)*O@"`@"T40``,W[\`$(X#``1\9#P#?&(^
+M`P`$)#@``A8X`((0)3!D_P``1!`E,&,`_P`"$```0Q`EW[``"`/@``AGO0`8
+M`````&>]_^#_L````,"`+?^_`!C_L@`0_[$`"-S&```0P``/`("(+0@"5XP`
+MH)`M``````)`*"T,`E&(9A``"!!```[?OP`8W@8``!#```8D`@`!@,(``!1`
+M__8"("`MW[\`&"0"``'?L@`0W[$`"-^P```#X``(9[T`(```$"W?L@`0W[$`
+M"-^P```#X``(9[T`(&>]_^#_L@`0`,"0+?^Q``@``#`M_[\`&`"`B"T(`E>N
+M_[``````````0"@M`B`@+0P"5W@"0#`M`B`@+0(`*"T00``&```P+0P"2]@`
+M````!$'_]0!`@"TD$/__W[\`&`(`$"W?L@`0W[$`"-^P```#X``(9[T`(&>]
+M_\#_LP`P9Z<`$/^R`"@`P)@M_[$`(`"`D"W_L``8_[\`.`P"3N``H(`M$$``
+MJP!`B"V/I@`0)`(`#!3"`&X\!!`-#`)1S"0$`#@00`"<`$"`+8XB``@"0"`M
+M?$4\`WQ#/@,``QXX``4L.*^B``P`HR@E,$/_``"C*"4P0P#_``4H``P"30``
+MHR@E`D`@+6>F`!#^`@``CB(`$'Q%/`-\0SX#``,>.``%+#BOH@`(`*,H)3!#
+M_P``HR@E,$,`_P`%$```0Q`EK@(`"(XB`!1\13P#?$,^`P`#'C@`!2PXKZ(`
+M!`"C*"4P0_\``*,H)3!#`/\`!1```$,0):X"`"2.(@`,?%$\`WQ#/@,``QXX
+M`!&,.*^B```"(X@E,$/_``(CB"4P0P#_`!&(``(CB"4,`E4@`B`H+8^H`!``
+M`A``K@(`#!1```ZN"``HC@8`"`#($"H00`!*/`00#=^_`#@"`!`MW[,`,-^R
+M`"C?L0`@W[``&`/@``AGO0!```````(@*"T,`E$B`D`@+01``"@`0(@M/`80
+M#`)`("T`0"@M9,;]P`P"4BPD!___!$``/*X"`"`"0"`M#`)0T@(@*"T"0"`M
+M#`)5T`!`*"T40/_C_@(`&-X&```\!!`-/`40#62$:=`,`GZ\9*5V4`@"6$T"
+M`"`M`````#P%$`UDA&C8#`)^O&2E=E#?OP`XW[,`,```@"W?L@`H`@`0+=^Q
+M`"#?L``8`^``"&>]`$``````W@8``#P$$`T\!1`-9(1I>`P"?KQDI790`@`@
+M+0``*"TD!@`X#`)F8```@"W?OP`XW[,`,`(`$"W?L@`HW[$`(-^P`!@#X``(
+M9[T`0`````#>!P``/`40#62$:4@,`GZ\9*5V4`@"6$T"`"`M`````-X&```\
+M!!`-/`40#62$::`,`GZ\9*5V4`@"6$T"`"`M/`00#3P%$`UDA&DH#`)^O&2E
+M=E`(`E@2W[\`.#P$$`T\!1`-`@`X+62$:(ADI790#`)^O`)@,"T(`E@1``"`
+M+6>]_]#_L0`(`*"(+?^P``#_OP`H_[0`(/^S`!C_L@`0C((`#!1``$0`@(`M
+MD(,`,A!@`!>,@@`(D(,`,Q1@`!4\!/^`)`,``0!#$`0\`_^`-&,!!WQ$^`,`
+M`QH\$B``+```$"TT8PB(_&0``-^_`"C?M``@W[,`&-^R`!#?L0`(W[````/@
+M``AGO0`P`````#P$_X`D`P`!-(0!!P!#$`0`!"(\``(8^#2$"0`D!@`!`&0@
+M+0"`&"U\A9("?`,I!MQD``!\Q``'_&0``"0#`1@4HP`&`````#P#__`T8P`C
+M``,:_#1C`/C<8P``)`,``7Q$^`.B`P`R/`/_@#1C`0<``!`MH@``,Q8@_]8`
+M`QH\-&,(D/QD``#?OP`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`,-R$
+M`!@,`E5@)`4``11``-`\!!`-W@(`&(Q#`!008``<)!+__XX"``PD`P`"$$,`
+M7BQ#``,08``8)`,``R0#``$00P`9`````-X&```\!!`-/`40#62$:A@,`GZ\
+M9*5V<-X$`!@,`E5@```H+=^_`"C?M``@```0+=^S`!C?L@`0W[$`"-^P```#
+MX``(9[T`,`@"6-&04@`9$$,`+R0#``040__I`````)("`#(00`"(`````)("
+M`#,40`"%`````(X&`"@"0"`MC@(`"(X%`"`DPP`'),8`#BAI```D1P`'*$@`
+M``#)&`L`Z!`+?&,XPP`"$,-P0Q`H`$`P+0P"4?0`0)@MC@,`"(X$`"0D!0`!
+M`!&(*S!C``<`91@$``0@)P!#."4`D8@D%B``!##G`/\``Q@G`&(0)#!'`/^.
+M!0`@`D`@+0P"4>X"8#`M"`)8X=X$`!@`````$B``4P````".`@`()`0``8X#
+M`"P`1!`$`$,0):X"`"R.`P`H*&,`"1!@`#^.!0`@`D`@+3"E`/\D!@`!#`&=
+M<C!'`/\(`ECAW@0`&`````"2`@`R$$``!`````"2`@`S$$``(`````".!@`H
+M`D`@+8X"``@D$P`!C@4`("3#``<DQ@`.*'0``"1'``<`U!@+`&"@+2A#````
+MXQ`+`!2@PP`4H(```A##<H*@*`P"4?0"@#`MC@,`"(X%`"`"0"`M`H`P+3!C
+M``<`<Q@$``,8)P!B$"0,`E'N,$<`_Z(3`#*B```SC@,`*`)`("V.`@`(C@4`
+M("1F``<D8P`.*,@``"1'``<`R!@**$8```#F$`L``QC#``,X@``",,,`9Q`A
+M"`)9!G!&$"A\1SH#<$(Z,@)`("TPI0#_)`8``@P!G7(`1S@E"`)8X=X$`!@`
+M````C@(`).A`_ZPD!``!C@(`"(X#`"P`1!`$``(0)P!#$"0(`EDFK@(`+(X#
+M`"@"0"`MC@(`""03``&.!0`@)&8`!R1C``XHR```)$<`!P#(&`HH5````/00
+M"P`#&,,``S!```*@PW!F&"AR@Z`H#`)1]`*`,"V.`P`(C@4`(`)`("T"@#`M
+M,&,`!P!S&`0``Q@G`&(0)`P"4>XP1P#_HA,`,@@"6/BB```SW@8``#P%$`UD
+MA&GP#`)^O&2E=G`(`EB5)`+__P`````0H``"_(4`P/RD`&@#X``(````````
+M``!GO?_0_[``"/^_`"C_LP`@_[(`&/^Q`!",@@`,%$``/`"`@"V0@@`R%$``
+M'XR#``B0@@`S$$``'3P%_X`D`@`!`&(0!(X$`"3(@``$`````)($`#`0@`#*
+M/`3_@)($`#$0@`"A/`3_@#P#_X`T8P$'``,:/#1C"(#<<0``?C'X`P!1B"0`
+M$8@KW[\`*`(@$"W?LP`@W[(`&-^Q`!#?L``(`^``"&>]`#`\!?^`)`(``32E
+M`0<`8A`$``4J/``"(/@TI0D``(4H+0"@("U\II("?`0I!MR%``!\!0`'_(4`
+M`"0$`1@4Q``%/`3_\#2$`",`!"+\-(0`^-R$``"B```R)`0``0@"6;NB!``S
+M`````-R$`!@,`E5@)`4``11``3`\!!`-W@(`&(Q#`!008`"`)!'__XX"``PD
+M`P`"$$,`P"Q#``,48`!\)`,``20#``,00P"C)`,`!!1#`'D`````D@(`,A1`
+M``0`````D@(`,Q1``!\`````C@,`*`(@("V.`@`()!(``8X%`"`D9@`')&,`
+M#BC(```D1P`'`,@8"BA3````\Q`+``,8PP`#,$```IC#<&88*')CF"@,`E'T
+M`F`P+8X#``B.!0`@`B`@+0)@,"TP8P`'`'(8!`!B$"4,`E'N,$<`_Z(``#*B
+M$@`SC@,`),A@``,``!`MD@(`,#A"``&2`P`Q.&,``1!B`!X"("`MC@8`*(X"
+M``B.!0`@),,`!R3&``XH:```)$<`!P#(&`LH1@```.80"P`#&,-P8S!R``(0
+MPW!#$"@`0#`M#`)1]`!`D"V.!``(C@,`)"0'``$PA``'R&``U0"'.`0`1S@E
+M,.<`_XX%`"`"("`M#`)1[@)`,"V.`@`(`B`@+8X%`"`D0P`'*$8```!F$`L,
+M`E'T?$8XPXX#``@P0@#_`&*(!S(Q``'>!``8#`)58```*"W?OP`HW[,`(`(@
+M$"W?L@`8W[$`$-^P``@#X``(9[T`,````````QCX-(0!!P`$(CPTA`D``&08
+M+0!@("U\8Y("?`0I!MR%``!\!0A'_(4``"0$`1@09``3/`/_\*(``#`D`P`!
+M"`)9Q*(#`#$(`EGWD%$`&1!#_XD`````W@8``#P$$`T\!1`-9(1J&&2E=H@,
+M`GZ\)!'__P@"6<W?OP`H`````#1C`",``QK\-&,`^-QC```(`EISH@``,``#
+M&/@TA`$')`8``0`$(CPTA`D``&08+0!@("U\8Y("?`0I!MR%``!\Q0A'_(4`
+M`"0$`1@49``%/`/_\#1C`",``QK\-&,`^-QC``"B```Q)`,``0@"6<2B`P`P
+M`````(X"``@"("`M*$(`"!1``&R.!0`@,*4`_R0&``(,`9R0`Z`X+01`_ZP`
+M0(@MEZ(`!HX$``B.`P`D``(J`G!".C(`11`E`((0!S!"``'(8/^B,%$`_P@"
+M6E@X40`!`````)("`#(40``$`````)("`#,40``?`````(X&`"@"("`MC@(`
+M""02``&.!0`@),,`!R3&``XH<P``)$<`!P#3&`L`8)@M*$,```#C$`L`$YC#
+M`!.8@``"$,-R8I@H#`)1]`)@,"V.`P`(C@4`(`(@("T"8#`M,&,`!P!R&`0`
+M8A`E#`)1[C!'`/^B```RHA(`,XX#`"3(8``#```0+9("`#`X0@`!D@,`,3AC
+M``$08@`=`B`@+8X&`"B.`@`(C@4`("3#``<DQ@`.)$<`!RAI```H2````,D8
+M"P#H$`M\8SC#``(0PW!#$"@`0#`M#`)1]`!`D"V.!``(C@,`)"0'``$PA``'
+MR&``(@"'.`0`1S@E,.<`_XX%`"`"("`M#`)1[@)`,"V.`@`(`B`@+8X%`"`D
+M0P`'*$8```!F$`L,`E'T?$8XPXX#``@P0@#_,&,`!P!BB`<(`EI8,C$``0``
+M```,`E'@`````(X#``@P0@#_`&*(!P@"6E@R,0`!```````'."<`XC@D"`):
+M2##G`/\`!S@G`.(X)`@"6O\PYP#_W@8``#P%$`UDA&GP9*5VB`P"?KPD$?__
+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
+M92D/V`@"7J4!(%`M`````&>]__@`P#@M_[\```P"7IH``#`M`````&>]__@`
+M`"@M_[\```P"A!8D!@`*W[\``&>]``@#X``(``(0``````!GO?_X```P+?^_
+M```,`H.8)`<`"M^_``!GO0`(`^``"``"$````````^``"-^"@*!GO?_P```H
+M+?^P``#_OP`(#`*@V@"`@"W?A("8W((`6!!```,``````$#X"0`````,`F=R
+M`@`@+6>]_]C_LP`8`("8+?^Q``@`H(@M_[\`(/^R`!`0@``$_[```(R"`%`0
+M0`!A`````(8C`!`08``R```0+3!D``@4@``W-&0(`(XE``A\!"8@&*``<:8D
+M`!#>(@!($$``9C!C$`".<```$&``5ZY@``".)@",,(0`!!"```<`````CB0`
+M"-XC`%@08``#`,0P+XXC`'``PS`OWB4`,`)@("T`0/@)```X+20#__\00P!@
+M`````(8C`!#>)``8KB``"`!@*"TP8Q``_B0``'P%6L048`!HIB4`$-XE`%@0
+MH`!&KG```&8B`'00H@`#``````P"82`"8"`M_B``6```$"W?OP`@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0`H`````-XR`!@20/_V,&,``]XP``#^,@`````0
+M+0(2@"\08``@`!"``!X```:N(@`,"`)?6=^_`"``````&@``)P)"D"W>(@!`
+M`@`X+=XE`#`"0#`M`$#X"0)@("T<0/_W`@*`(Y8C`!`D`O__W[\`(-^S`!C?
+ML@`0-&,`0*8C`!#?L```W[$`"`/@``AGO0`H``````P"7]@`````"`)>YX8C
+M`!`(`E\KCB(`(-XE`#```#`M`F`@+0!`^`DD!P`!`$`P+20"__\0P@`E````
+M`(8D`!`(`E[WWB(`2-^_`"```!`MW[,`&-^R`!#?L0`(W[````/@``AGO0`H
+MCB4`<!R@_X[?OP`@"`)?'-^S`!@`````CF,``'!E!:\``R`K`*0@)'!E!V\`
+MI"`D%(``%88F`!#>)``8?,4#`RQC``%\!EK$IB8`$`!E&"2N(``($&#_FOXD
+M```(`E\0KB(`C(YB```00/_:<$,%KG!"!VX`8A`E$$#_NP``$"T(`E\:KG``
+M`#3&`$`D`O__"`)?&J8F`!`0@``#`(`H+0@"7MK?A("@WX2`F#P%$`D(`F(0
+M9*5[:`/@``@``!`M`^``"```$"T\!1`+"`)AXF2EF[``````9[W_\/^P````
+M@(`M_[\`"*2%`!!DA`"<I@8`$@``*"W^````)`8`"*X```BN```,K@``I/X`
+M`!BN```@#`)F8*X``"@\`A`*W[\`"&1"`=C^`@`X/`(0"OX0`#!D0@(X_@(`
+M0#P"$`ID0@*X_@(`2#P"$`ID0@,8_@(`4-^P```#X``(9[T`$``%&7@`!1#X
+M9[W_X`!B$"__L@`0``*0^/^Q``@"0I`O_[````"@B"W_OP`8#`)BF&9%`!@0
+M0``)`$"`+61"`!@``"@M_@````!`("VN$0`(`D`P+0P"9F#^`@`0W[\`&`(`
+M$"W?L@`0W[$`"-^P```#X``(9[T`(`@"7Y+?A("8C((`4&>]__#_L````("`
+M+1!```7_OP`(W[\`"-^P```#X``(9[T`$#P"$`DD`P`#W(0`"&1"?DC^`@!8
+M)`(``:X"`%!F`@4XK@,%*"0%``3^`@4P```P+0P"7Y;^``4@W@0`$"0%``D,
+M`E^6)`8``=X$`!C?OP`()`4`$M^P```D!@`""`)?EF>]`!``````9[W_V/^R
+M`!#?DH"8_[,`&`"`F"W_OP`@CD(`4/^Q``@00``O_[```&92!2`D$?__CD(`
+M""1"__\$00`%WE``$`@"8"_>0@``$%$`'V80`*B&`P`0%&#__"1"__\D`O__
+M9@0`G*8"`!(D`@`!I@(`$```*"VN``"D)`8`"/X```"N```,K@``"/X``!BN
+M```@#`)F8*X``"C^``!8K@``8/X``'BN``"`W[\`(`(`$"W?LP`8W[(`$-^Q
+M``C?L````^``"&>]`"C>0@``$$``"`)@("T(`F`(`$"0+0`````,`E_8`D`@
+M+0@"8`=F4@4@#`)?N"0%``040/_V_D(``"0"``P``(`M"`)@)JYB```#X``(
+M``````/@``@``````^``"``````#X``(`````-^$@*`\!1`)"`)AXF2E?CC?
+MA("@/`40"0@"8>)DI7Y`9[W_</^G`&AGH@"0_Z(```.@."W_H@`(9Z(`:/^B
+M`!`D`@`HHZ(`&"0"`$#_OP`@_Z@`</^I`'C_J@"`_ZL`B*.B`!GWK``H]ZT`
+M,/>N`#CWKP!`][``2/>Q`%#WL@!8#`*/<O>S`&#?OP`@`^``"&>]`)``````
+M9[W_:`"@$"W_I@!H`$`P+6>B`)@`@!@M_Z(``&>B`&C_H@`09Z(`F-^$@*``
+M8"@M_Z(`""0"`##_IP!P`Z`X+:.B`!@D`@!`_[\`(/^H`'C_J0"`_ZH`B/^K
+M`)"CH@`9]ZP`*/>M`##WK@`X]Z\`0/>P`$CWL0!0][(`6`P"CW+WLP!@W[\`
+M(`/@``AGO0"89[W_</^G`&AGH@"0_Z(```.@."W_H@`(9Z(`:/^B`!`D`@`H
+MHZ(`&"0"`$#_OP`@_Z@`</^I`'C_J@"`_ZL`B*.B`!GWK``H]ZT`,/>N`#CW
+MKP!`][``2/>Q`%#WL@!8#`*4\/>S`&#?OP`@`^``"&>]`)``````9[W_:`"@
+M$"W_I@!H`$`P+6>B`)@`@!@M_Z(``&>B`&C_H@`09Z(`F-^$@*``8"@M_Z(`
+M""0"`##_IP!P`Z`X+:.B`!@D`@!`_[\`(/^H`'C_J0"`_ZH`B/^K`)"CH@`9
+M]ZP`*/>M`##WK@`X]Z\`0/>P`$CWL0!0][(`6`P"E/#WLP!@W[\`(`/@``AG
+MO0"89[W_V/^Q``@\$1(2_[,`&&8Q"+#_L@`0`*"8+?^P``#_OP`@#`)FS`"`
+M@"W>(@`0W%(`"'P2"`=F0@_?`%.8+WP36`=F<_``*F(0`!1```<"`"`M#`)_
+M?@``*"W>(P`0`'(8+1!#``P"`"`M#`)FS@(`("W?OP`@W[,`&```$"W?L@`0
+MW[$`"-^P```#X``(9[T`*``````,`G]^`!,H+R0#__\00P`4/`(2&=XD`!",
+M0V$8`E.0+S92``$`$Y@`_)(`"`(`("T`<Y@C#`)FSJQ381C?OP`@)`(``=^S
+M`!C?L@`0W[$`"-^P```#X``(9[T`*``````"`"`M#`)_?@``*"W>(P`0`$,@
+M+RB%`"`4H/_6-(0``?QD``C?@X"H`$,0+SP#$AD(`F#OK&)A&&>]_^C_L```
+M`*"`+?^_`!`0H`!7_[$`"`P"9LP`@(@MW@C_^&8&__`\!Q(29.<(L-SD`!`!
+M`!`M?`(`!P#"&"W<90`($(,`9GP%"`?\90`(Z0``#0``2"W>!/_P/`@2$F4(
+M",``Q#`O`$00+=S$`!`0B``%)`D``=S(`!@``$@M_(@`&/T$`!``92`MW(0`
+M".B```XT1``!W&0`$#P($A)E"`C`+2H``0!%$"UPB"@J`*HH)!2@`'``````
+MW&,`&/R#`!C\9``0-$0``0#"&"W\Q``(%2``'_QB```L0P(`%&``*20$``$`
+M`AIZ+&0`!1"``$\L9``5<$3YNB2$`#@DB``!``A`0&4(__X`"$#X`.A`+=T#
+M`!`0:`!-*(4``-QE``A\!0@'`$4H*Q"@``0`````W&,`$!4#__D`````W&(`
+M&/S"`!C\PP`0_&8`&/Q&`!#?OP`0`B`@+=^P``#?L0`("`)FSF>]`!@`````
+MW[\`$-^Q``C?L````^``"&>]`!@`````<$+X^MSE``@D0P`!``,80``"$(-D
+M8__^`$00%``#&/@`11`EW[\`$`#C&"W<9``0_,,`&-^P``#\Q``0_(8`&`(@
+M("W?L0`(_.(`"/QF`!`(`F;.9[T`&.D```@`HA`MW@/_\`##,"\`0Q`MW,0`
+M$-S#`!C\@P`8_&0`$-^%@+`T0P`!_,,`"`!%$"L40/_/_.8`$-^%@I`,`F#4
+M`B`@+0@"87;?OP`0$(``&P```````Q@`)&0`6R2(``$`"$!`"`)A8V4(__XD
+M@@`#`$4@"R0(``'<Y0`(`&`0+0`$((,`B"`4`(4@)0@"87'\Y``(_.8`*#1$
+M``'\Y@`@`,(8+?S(`!C\R``0_,0`"`@"877\8@```````"QD`%40@``&<$3[
+M.B2$`&XDB``!``A`0`@"86-E"/_^+&0!51"```<L8P55<$3[^B2$`'<DB``!
+M``A`0`@"86-E"/_^)`@`_!!@_X@D!`!^<$3\NB2$`'PDB``!``A`0`@"86-E
+M"/_^9[W_R/^S`!ADDP4@_[4`*`"@J"W_M``@``"@+?^_`##_L@`0_[$`"`P"
+M8$#_L```$F``%"02__^.<0`()C'__P8@``W><``0A@,`$!!@``@F,?__A@,`
+M$A!R``4"`"`M`J#X"0``````5!`E`$"@+18R__5F$`"HWG,``!9@_^X`````
+M#`)@0@````#?OP`PW[4`*`*`$"W?LP`8W[0`(-^R`!#?L0`(W[````/@``AG
+MO0`X`````&>]_[C_LP`89),%(/^V`#```+`M_[4`*`"@J"W_M``@`("@+?^_
+M`$#_MP`X_[(`$/^Q``@,`F!`_[```!)@`!\D%___`````(YC``@88``8WG``
+M$"1C__\``(@M?&/X`V1C``$``Q#X``.1>`)"D"\`$A#X`%*0+X8#`!`08``*
+M9C$`J(8#`!("`"@M$'<`!@*`("T"H/@)``````!6$"4`0+`M`````!8R__-F
+M$`"HWG,``!9@_^0`````#`)@0@````#?OP!`W[<`.`+`$"W?M0`HW[8`,-^T
+M`"#?LP`8W[(`$-^Q``C?L````^``"&>]`$@`````9[W_L"0"``'_L0`X<.:(
+M`_^R`$``P)`M_[``,`"`@"W_OP!(_Z4``/^]`!"OH@`8_[$`"!"```2OL0`<
+MC((`4!!``!T`````A0(`$#!#(``48``&-$(@`(T#`*2E`@`0`&`0+7P":T2M
+M`@"D_Z<`*`(`("T!`"@M#`*G@F>F`!`00``&WZ<`*(^G`!P")S@O`/(`'P)`
+M`?0``#@2W[\`2`#@$"W?L@!`W[$`.-^P`#`#X``(9[T`4/^G`"@,`E_8_Z@`
+M(-^H`"`(`F)@WZ<`*`"`2"T`H!@MWX2`H`#`$"T`X$`M`2`H+0!@,"T(`F).
+M`$`X+0`````L@@`"%$``""0#``$``!`M``,80`!D*"L4H/_])$(``0/@``@`
+M`````^``"```$"UGO?^P9*,`%_^S`!@``!`M_[````"`F"W_OP!(+&0`+_^^
+M`$`D$``@_[<`./^V`##_M0`H_[0`(/^R`!`4@``'_[$`"`!@@"TD`@`!?!`8
+M!P`"%_@"`A`K+$(``0(%*"L`HA`E%$``4-^_`$@,`F;,`F`@+2X"`?@00``E
+M`!`2>G(&^/H\$A(2),(``692"+```A!`9$+__@`"$/@"0A`MW%$`&!(B`&IF
+M(@`0WB(`"`)@("W>(P`8WB4`$'P""`<"(A`MW$8`"/RC`!C\90`0-,,``0P"
+M9L[\0P`(9B(`$-^_`$C?O@!`W[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`
+M"-^P```#X``(9[T`4!!``#-R!_CZ+$,`!1!@`*8L0P`5<@?YNB3G`#@DY@`!
+M``8@0&2$__X\$A(2``0@^&92"+`"1"`MW((`&!""`$,`````W$,`"'P#"`<`
+M<"@O**@`(!$``-X`````!*$`(-Q1`!@`````$)$`.`````#>(P`(?`,(!P!P
+M$"\H10`@$*``TP`````$00`7WB4`&`@"8O8`H(@M)`,`#*YC`````!`MW[X`
+M0-^W`#C?M@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`%`DY@`!
+M``8@0`@"8N9DA/_^`B`H+0!`B"T"(Q@M`F`@+=QF``C>(@`0-,8``?Q%`!C\
+MH@`0#`)FSOQF``C?OP!(W[X`0&8B`!#?MP`XW[8`,-^U`"C?M``@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0!0WC$`*!11_Y4DQ@`"WE$`(#P($A)E"`C`$B@`
+MYP````#>(@`(?`((!P!0&"\H9``@$(``T0````#^2``H!&$`5/Y(`"`L0P(`
+M$&``DP`"&GIP0OCZ)`0``=Y%``@D0P`!``,80``"$(-D8__^`$00%``#&/@`
+M11`E_D(`"`!R&"W<9``0_B,`&/XD`!#\D0`8_'$`$"C%```DPP`#`,48"@`#
+M*(,D`P`!`*,H%`!%&"L48``_`$48)!!@`)L`````),D``0#`4"T`"4A`92G_
+M_@`)2/@"24@M`2`X+=SQ`!@4\0`(``````@"9!TE2@`!!$$`SP````#>,0`8
+M$/$`L`````#>(P`(?`,(!P!P$"\H1``@%(#_]@)@("W>)0`8`C`8+=XF`!`T
+M20`!`&(X+380``'^,``(_,4`&/RF`!#^0P`H_D,`(/SB``#\:``8_&@`$`P"
+M9L[\:0`("`)BT&8B`!``````%&``:2Q#`%408`#[+$,!57('^SHDYP!N).8`
+M`0`&($`(`F+F9(3__@(B$"T"8"`MW$,`"#1C``$,`F;._$,`"`@"8M!F(@`0
+MWE$`$-XU``A\%0@'`K`0+P*P("LH0P`@.(0``3AC``$`9!@D%&``)`(P&"W?
+MEH*0`F`@+=^#@*@"%K`M9L(0'P`#&"=\`E@'9M8`(`!#L`L,`G]^`L`H+0!`
+MH"TD`O__$H(`!@(U&"UR,O`K`H,0*P!>$"000`"-/!<2&=Y1`!#>(P`(?`,(
+M!P!P$"\`<!@K*$0`(#AC``$XA``!`(,8)!1@``4",!@M#`)FS@)@("T(`F+0
+M```0+31"``$V$``!`F`@+?XP``C\8@`(#`)FSOY#`!`(`F+09B(`$``````(
+M`F,O`.`P+2QD``40@``N+&0`%7!$^;HDA``X)(4``0`%*$!DI?_^``4H^`)%
+M*"W<HP`0$&4`N"0'``$`````W&0`"'P$"`<`1"`K$(``J`````#<8P`0%*/_
+M^0````#<HP`8WD(`"/XC`!C^)0`0_+$`&`@"8U'\<0`0```````"$``D1P!;
+M).8``0`&($`(`F+F9(3__@`%*'A\!@@$`$48)!1@_V(DQ@`$```````%*'@`
+M11@D$&#__23&``0(`F-=),D``1"``*(```````,8`"1D`%LDA0`!``4H0`@"
+M8]IDI?_^`C`0+31F``'^0@`H`$,H+?Y"`"`V$``!_C``"`)@("W\2``8_$@`
+M$/Q&``@,`F;._*,```@"8M!F(@`0``````@"8U'>0@`()4H``3%"``,40/]$
+M9.<`$##"``,00`"T92/_\-TI```1(__[),;__]Y"``@`!2AX`$4@*P`%&"LX
+MA``!`(,8)!!@_VL`11@D%&#_+0%`,"T`!2AX)4H`!`!%&"048/\H`4`P+0@"
+M9#$`!2AX``````(C&"W<9@`(WB(`&-XE`!`TQ@`!_&8`"/RB`!@,`F;._$4`
+M$`@"8M!F(@`0`!8@`([B81@`@B`AKN1A&!!T`&D`@!`MWX6`J"0"__\0H@!V
+M`H,0+P`"$```1"`AKN1A&#*"``\00``%)`,0``*"H"\D`Q`09I0`$`!B&"\"
+MEK`M`F`@+3+6#_\`=K`O#`)_?@+`*"TD`___$$,`8`!4$"\"PA@M-&,``8[B
+M81C^5``0_H,`"`!6$"$3P``/KN)A&"ZC`"`48``V)`4`"=XG``AFH__H?`,8
+M!P(C("TL9@`@,.<``0!G&"7^(P`(_(4`"!#``$3\A0`0WX."B`!B&"L08``#
+MWX."@/^"@HC?@X*``&(8*Q!@``+>40`0_X*"@-XC``@(`F.Z?`,(!P`````0
+M8``)+$(%57('^_HDYP!W).8``0`&($`(`F+F9(3__@@"8^@`8"@M$$``'@``
+M``!R!_RZ).<`?"3F``$`!B!`"`)BYF2$__XD@@`#*(4```!%(`O>0@`(`&`H
+M+0`$((,`AR`4`((0)0@"8^K^0@`()`(``0*`B"W^@@`("`)CN@``&"TL9`!5
+M$(``'7!$^SHDA`!N)(4``0`%*$`(`F/:9*7__B0$`/PD!@!_"`)BYB0'`'XP
+M90__%*#_E@````#>0P`0`M4@+32$``$(`F1V_&0`"`)@("T,`F$@9B4`$#P"
+M$AD(`F1VC$)A&"0#``$(`F1B``"P+0@"9%#_E("H+&0!51"```<L8P55<$3[
+M^B2$`'<DA0`!``4H0`@"8]IDI?_^)`4`_!!@_PLD!`!^<$3\NB2$`'PDA0`!
+M``4H0`@"8]IDI?_^WD(`"``%&"<`8A`D"`)D)_Y"``@`````,(,`!P"`$"T0
+M8`!',*@`_Q#``"!DP___D(0``!"(`!X`1C`M"`)D[0$`."T`````$&``&```
+M``"01```$(<`%F1C__\`PR`O,(0`!Q2`__AD0@`!+&0`"!"``!$`````$&``
+M#&1E__^00P``$&@`"@``&"T(`F3_`0`P+0````"01```$(8`!&1C``$4H__\
+M9$(``0``$"T#X``(`````#"E`/\\!_]_``4B`#P&_P$`A2`E-.=_?S3&`0$`
+M!"PX``<\.``&-#@`I"`E-.=_?S3&`0$`!$@\``<\>``&-?@!)$@E-.?^_S3&
+M@(``````W$0```$D("8`AR@M``0@)P"D("0`AB`D%(#_U0````!D8__X+&0`
+M"!"`__5D0@`("`)D]``````(`F3Q`,`8+2S"``@40``09[W_\`"%$"4P0@`'
+M%$``'@``````````W(,``-RB```48@`'`````&3&__ADA``(+,(`"!!`__AD
+MI0`(`````!#```YDQ___D(8``)"B```4P@`9```8+0@"94=DA``!D(8``)"B
+M```4P@`39&,``62$``$4X__Z9*4``0``$"T#X``(9[T`$&BB``!H@P``%&+_
+MZP````!DQO_X9(0`""S"``@00/_X9*4`"`@"93H```````````#"$",#X``(
+M9[T`$```````A1@E``8P`#!C``<`@!`MS*```!1@`$``P$`M+,8`(!3``!@`
+M@#`M`0!(+7P)(`<`J4@M$*D`$3$(`!\``!@M9*H`@`````!-0P`/9&,`(-RG
+M``#<I``(_,<``/S$``C<IP`0W*0`&&2E`"#\QP`0_,0`&!4E__1DQ@`@$0``
+MC``````M`P`(%&``$@$`("T`H#@M`,`8+63G``@E"/_XW.K_^&1C``@M"0`(
+M$2#_^OQJ__@DA/_X``1`PF4#``$`"$#```,8^`"(0",`HR@M`,,P+2D#``04
+M8``')`,``HRC```E"/_\9*4`!*S#``!DQ@`$)`,``A$#`%TD`P`#$0,`620#
+M``$1`P!3``````/@``@`````+,,`(!!@`"8P@P`'`(`P+2T$``@4@``0)0G_
+M^```0"T`"5#"940``0`$(/@!!A@M`04X+64(``AHYP``L&<``!4$__L!!A@M
+M``I0P`"H*"T`R#`M`2I`(RD#``008`!"`````"0#``(1`P!%)`,``Q4#_]\D
+M`P`!@*,``H"A``"0I0`!?"7Z!*#%``$`!0H"H,$```/@``B@PP`"`````"0&
+M``@`PS`O``8@`&BC````IB@M`00@(S"G``<`@$`M`$8P+0"@4"VP0P``$.#_
+MD0$`2"T`@$`M,(0`'WP((`<`R%@M$,L`$@"`0"T``"`M9*P`@`````!-A``/
+M`408+6BG``AHJ0``_,<`"&2$`"#\R0``:*<`&&BC`!#\PP`0_,<`&&3&`"`5
+M9O_S9*4`(!4`_[@M!``(`^``"`````"`HP```^``"*##````````@*,``J##
+M``*4HP```^``"*3#````````B*,``"4(__QDI0`$J,,```@"9;MDQ@`$@*$`
+M`)"E``%\)?H$H,4``0`%"@*@P0```^``"```````I!@K$&``$`"`$"T`IA@M
+M`(,@*Q"```P`````$,``!P!&*"T`9C`O9&/__V2E__^`9```%&;__*"D```#
+MX``(```````````LPP`@%&``.```````11@E,&,`!Q1@`"H`0!@M`*`X+0#`
+M0"T`````W.D``&4(_^`M!``@_&D``-SI``C\:0`(W.D`$&3G`"#\:0`09&,`
+M(-SI__@0@/_T_&G_^&3$_^`PRP`??`0@!RUG``ADA``@`$08+13@`"``I"@M
+M`*!(+0!@0"T!8#@M92D`"&4(``C=*O_X9.?_^"SD``@0@/_Z_0K_^&5D__@P
+MQ@`'?`00!V2$``@`9!@M$,#_S@"D*"T`IC`M`````&2E``%D8P`!@*?__Q2F
+M__R@9___`^``"```````````%,#_]0!`&"T#X``(``````%@,"T4P/_P````
+M``@"9E@```````````"`$"TLPP`@%&``6P"`."TP@P`'``,8`!!@``D`````
+M?`5$(`````!DYP`!)&,``:#H__\L9``(%(#_^V3&__\PHP#_$&``!P!@*"T`
+M`QHX`&48)0`#)#@`@Q@E``,@/`"#&"4LQ`$!%(``-0`&(3HPY`!_)`D`@`$D
+M2"\`"4DZ``E1.!$@``D`RC`O`.!`+?T#``!E*?___0,`"!4@__QE"``0`.HX
+M+3#D`'\`X$@M$(``"`#`0"UE"/_X92D`"`#(("\`Y"`M,(0`?Q2`__K](__X
+M`0`@+7P$,`<0@``5`(`X+0$@,"W\PP``9.?_@/S#``C\PP`0_,,`&/S#`"#\
+MPP`H_,,`,/S#`#C\PP!`_,,`2/S#`%#\PP!8_,,`8/S#`&C\PP!P_,,`>!3@
+M_^YDQ@"``20X+0$$,"\`!B$Z$(``"C#&``\`@$@M`.!`+?T#``!E*?___0,`
+M"!4@__QE"``0``0A.`#D."TLQ``($(``"P`````0P``&?`4L(`#F,"T`````
+M9.<``13F__Z@Y?__`^``"```````````_.,``&3&__@(`F:^9.<`"`/@``@`
+M`````^``"`````!GO?_8_[$`"(R1`4#_LP`8`("8+?^R`!#_OP`@,B(`$/^P
+M```40`"%W)(!B#(B``040`!E``````P">G```"`M?B0`PPP">G(\$!(;CF(`
+M`-YD`!`R)@`"WF,`&)YE`40D0O_]KX:"H"Q"``7_A(.0_@4?&!!``'O_@X.8
+M#`)P!B0$``..8P`\```H+0``("T08``7KX*#J#P%$AD`8$`M`&`@+1A@`!)D
+MI6%`/`(2&21C__]D0F%`<&3X\F1'``AF8P!``$`H+0#D."TD!O__C&0``'R$
+M\`-\Q/_&_$0``&1"``@41__Z9&,`!`$`("V.0P``)`(``?^$@V@08@`'_X6#
+M<#P$$`T,`GZ\9(1ZP#P$$`T,`GZ\9(1ZD`P"9]">1``\ED,`4(Y"``1P8P!N
+M+$(`!!!``$6O@X*<````#S(Q`$`6(``3`````'P%`#L`!1&"&$``(`!`,"W>
+M`Q\8%&``#3P$$`HD1/__/`(2&V1"'R!PA/CR`$0@+0`````01``59$(`"-Q#
+M__@08/_\`````#P$$`H,`J#49(3JJ-^_`"#?LP`8/`00"]^R`!!DA#D(W[$`
+M"-^P```(`J#49[T`*``````,`GIP)`0``0@"9N%^)`##``8P^&8"'QA\1A(*
+M,*,`/R1C``$``B`O`((0)"0$`$!P0A`D`((0+Q1B_^0D`@`!/`00"J^"@I@,
+M`J#49(3JJ-^_`"#?LP`8/`00"]^R`!!DA#D(W[$`"-^P```(`J#49[T`*`P"
+M>G`D!``""`)FX7XD`,-F!!\89D4`H`P"95PD!@"`"`)G'P`````\!!`-#`)^
+MO&2$>C@\!!`-#`)^O&2$>I`(`F;O```````````\`A`'9[W_\&1"UZ#_H@``
+MWZ(``!!```/_OP`(`$#X"0`````,`GB```````````TD`O__$,``%GQ$_\;<
+M@P`0`*!(+62$`!@`P#@M)`(`.`!#6!8D0O_X``)0)R3G__\`!T`K``I7P@%(
+M4"050``&H2L``!$```8`````W(,``"0"`#ADA``("`)GAF4I``$`IC`M`^``
+M"*#`````````/`(4*20#___<1Q^09[W_^/^_``!DX@`0?&+_QHQ%```HH@`$
+M$$``"@````!PI!`K``0@*P!$("04@``%```0+=^_```#X``(9[T`"`````!D
+MX@`4)`/__WQB_\8\!!`,C$8```P"?KQDA+*0"`)GJB0"__\`````)`+__WQ$
+M_\80P``29(<`$"0"`#@``!@M9*4``23&__\0P``+@*3__S"$`/\`1"`4)$+_
+M^`1!__@`9!@E_.,``"0"`#ADYP`("`)GO@``&"W\XP```^``"```````````
+M/`(4*=Q#'Y`48``"`````/Q$'Y`#X``(```0+0````!GO?_0_[(`$`"`D"W_
+MM``@```@+?^S`!@`H*`M_[$`"`#`F"W_L````0"(+?^_`"@,`F>:`."`+0`2
+M&"LL0@`!`$,8)!!@`.-F20`/+@(`$11``.E\"1@')`(`*P@"9_0D`P`@````
+M`!!```0``QAX`'`@*Q2`__PD0O__``-@+V:8__\N8@`!`P/`+0,,P"0`&"`K
+M`((0)!!``),#"5@M`7@0+P!)$"L40`#*,C$``A8@``H\$!0IW@(?D"0$__]\
+M@O_&P$0``!2`__XD!``!X$0``!"`__L`````W@(?D"0%__]D0@`(?*+_QMQ"
+M````2S`K``(@*P#$("00@`!K9$8`"`!`("U\IO_&?*3_QMS*``#<AP``+44`
+M$!2@`%T`XC`K``<H*P#%*"04H`!99&/__P``R"TD"/__``"0+0``>"T(`F@V
+M)`W__P````#<2@```,`0+=R'```M10`0%*``30#F<"L`!R@K`<4H)!2@`$D`
+M`````$,P+0%"*"T`S#`D`*PH)`%FF"L`N#@K`,EP+0"N<"L5P``+`F<X)13@
+M``D`N"@O`68P+P"I*"L4H``%`,DP*P!&>`H#)I`*`49`"@````#<A@```$#(
+M+0#+4"L`!B@K9,(`"`#`("T!12@D?:+_QA2@_]E]I/_&$>``+@$/&"T!8Y@K
+M`'-8"@%IF"\";)@D`?,0*Q1``#HD!/__`>"@+7R4_\8":2`M`(,8*Q1@`$QQ
+M\Q`K<0D8*P!B$"440`!9/`00#!)``%_>`A^0WH(``"0#__]\<O_&_D(``!8@
+M``;>`A^0)`/__WQB_\8```$/K$```````0\"8!`MW[\`*-^T`"#?LP`8W[(`
+M$-^Q``C?L````^``"&>]`#``0#`M/`00##P%$`UDA++8#`)^O&2E?)@6(/_Q
+M)`+__]X#'Y!\0__&```!#ZQ@``````$/W[\`*-^T`"#?LP`8W[(`$-^Q``C?
+ML````^``"&>]`#`#$Q`E)`O__P@":``"8E@+)`+__P'@&"U\0__&`?,H+]QG
+M``!EY``(`F"@+69F``@`J$`M?$3_QGQ4_\9\1O_&_H<````%*"_\R````>"0
+M+?QS```!$Q@M_(4```)I("T"8'@M`(,8*Q!@_[8``!`MWHH```'I&"TD!/__
+M`&`X+61F``AEY0`(`0E`+WR'_\;\Z@``?(;_QOS(``!\A?_&_H,```$@0"W\
+MJ0``"`)H9```&"T\!1`-9(2S$&2E?)@"8#`M#`)^O`'@."T60/^CW@(?D"0$
+M___>@P``9$(`"'R"_\8(`FAM_$,``-^_`"@D`O__W[0`(-^S`!C?L@`0W[$`
+M"-^P```#X``(9[T`,"0,__`(`F?X)`,`$```````H!`M9[W_^`#`*"T``$`M
+M`.`P+?^_```,`F?8`$`X+1A```4D`___?&+_QM^_```#X``(9[T`"`@":.4`
+M`!`M```P+0@":-H``#@M``````"`$"T`H"`M9$<``0#`*"T`!SH\``(R/`@"
+M:-IDY___`*`0+0#`*"T`1#@M"`)HV@!`,"T``````*`0+6>]__@`P"@M``!`
+M+0#@,"W_OP``#`)GV`!`."W?OP``9[T`"``"&"H``Q@O`^``"`!B$"1GO?_@
+M_[````"`@"W_L@`0```@+?^Q``@`P)`M_[\`&`P"9YH`H(@M`$`8+11@``8`
+M`!`M+@(``2XD``$`@B`E$(``!P!@$"W?OP`8W[(`$-^Q``C?L````^``"&>]
+M`"!F,0`/,E(``GP1&`<60``*/`(4*=Q#'Y`D!/__?(/_QL!D```4@/_^)`0`
+M`>!D```0@/_[`````-Q&'Y`D`O__9,,`"'Q#_\;<9````@0H*RR"``$`HA`E
+M%$``*P"0$"L40``$)`C__P@":70D!___`&`@+0"`$"TD!?__?0+_QMQ#````
+M`Q`K`'`X*P#B$"040/_W9(<`"'RG_\;<X@``%&``+P!$$"T2`@!.9@,`"`(`
+M$"U\HO_&?*3_QOR0``!\H__&_'$``/Q````D`@`!%D#_QM^_`!@```$/)`/_
+M_WQF_\:LP``````!#]^_`!C?L@`0W[$`"-^P```#X``(9[T`(``````0@``$
+M`C`H+0"%."L4X/_N```0+1"%`#8D!?__`@`X+68"``A\I__&_.0``'RB_\;\
+M40``)`(``0@":5;\<````(`8+0`'/_P``"`M-.<`"-SB````````$@(`#@(P
+M$"T08@`T`@`H+20"__]F!P`(?$?_QGQ%_\9\1/_&_/$``"0"``'\HP``_)``
+M``@":58`````W.4```(P@"TD`@`!`+&(+?SQ```4</_')`7__V1H``A\J/_&
+M?*/_QMT)``!\I/_&W.@```$H*"W\Y0``W&,```@":5;\@P``W.,``"0"``$`
+M<8@M"`)I5OSQ```D`O__`(`H+7Q%_\8"`#@MW*@``'Q'_\9DA``(9@4`"'Q$
+M_\9\1?_&_.@``"0"``'<A````)&(+?RQ```(`FE6_'```"0"__]D90`(?$7_
+MQF8'``C<J```?$?_QGQ#_\8"`"@M?$7_QGQ$_\8!$8@M)`(``?SQ``#<8P``
+M_*,``/R0```(`FE6``````````!GO?_8/`00#/^R`!`\$A0IWD4?D&2$LU#_
+ML0`()!'___^P``#_OP`@9*(`"/^S`!A^(O_&W%````P"?KP"`#`MWD(?D#P$
+M$`QDA+.89$,`$&1"`!1^(__&?B+_QHQE``",1@``#`)^O`````#>0A^09$(`
+M$'XB_\:,0@``+$(`!!!``!L\!!`-/!,0#"02__\2```=9G.T$&8"``@"`(@M
+M?D+_QGY1_\;<1@```@`H+=XG```,`GZ\`F`@+=XP```6`/_V9@(`"-^_`"`\
+M!!`-W[,`&&2$)I#?L@`0W[$`"-^P```(`GZ\9[T`*``````\$Q`,9(1Z^`P"
+M?KPD$O__%@#_Y69SM!`\!!`-#`)^O&2$>SC?OP`@W[,`&#P$$`W?L@`09(0F
+MD-^Q``C?L```"`)^O&>]`"@\`Q0I)`+__]QE'Y!\1?_&P*8``!3`__XD!@`!
+MX*8``!#`__L`````W&@?D&4#``A\0__&```0+=QC```08``-9&4`""0&__]\
+MP__&?,7_QMRG````Y#@K%.```P````#<I0```$40+=QC```48/_V9&4`"```
+M`0\D`___?&C_QJT```````$/`^``"``````(`FH2`````&>]_[`PI0`"_[X`
+M0`.@\"W_M``@`("@+?^S`!@`H)@M_[\`2/^W`#C_M@`P_[4`*/^R`!#_L0`(
+M%*``"_^P```\`A0I)`/__]Q"'Y!\8O_&P$,``!1@__XD`P`!X$,``!!@__L`
+M````)`0``PP"9YH``(`M%$``.3P#%"DD`O__W&,?D&1E`#!D9``H?$7_QGQ$
+M_\;<L```9&,`+(R$``!\0__&C'$``!B``"LD@O__)C(``7Q"^`-F%@"0``(9
+M.``"$?@`8A`M9E(`!P`4J"L"PK`M"`)J=7P2$`<`````%$``'@````!F$`"0
+M$A8`&@`````D`O__9@,`"'Q#_\8NA0`!W&(````"&"LL0@`!`'48)!!@__(`
+M11`D`Z"X+0.RZ"\"`"`M`Z`H+0P"9WX"(#`M`H`@+0.@*"T,`H)T`B`P+1!`
+M`!L`````9A``D!86_^@"X.@M``"`+19@``<\`A0I)`/__]Q"'Y!\8O_&```!
+M#ZQ```````$/`\#H+0(`$"W?OP!(W[X`0-^W`#C?M@`PW[4`*-^T`"#?LP`8
+MW[(`$-^Q``C?L````^``"&>]`%`(`FJ/`N#H+0````!GO?_H_[$`"`"`B"W_
+MOP`0#`)J./^P````0!@M$&``$P``$"TD!O__`&`X+7S'_\8\`A(9W.4``&1C
+M``A\P__&9%!C0#P$$ADD!@"`_$5C0&2$8U#<8@```B`H+0P"@L[^`@`(H@``
+MCP(`$"W?OP`0W[$`"-^P```#X``(9[T`&`@":J@``"@M9[W_X/^P````@(`M
+M_[$`""0$``/_OP`8`*"(+0P"9YK_L@`0$$``"```&"W?OP`8`&`0+=^R`!#?
+ML0`(W[````/@``AGO0`@,C$``A8@``H\`A0I)`/__]Q"'Y!\8O_&P$,``!1@
+M__XD`P`!X$,``!!@__L``````@`@+0P":C@D!0`"%$``$@!`@"T6(``'/`(4
+M*20#___<0A^0?&+_Q@```0^L0``````!#]^_`!@`$!@KW[(`$`!@$"W?L0`(
+MW[````/@``AGO0`@`````"0"__\"`!@M9A(`"'Q#_\9\4O_&)`8``MQD``#>
+M10``#`)I"@`````(`FKM_D````@":LH``"@M9[W_H/^S`"@`@)@M_[8`0"0$
+M``/_M0`X`."P+?^T`#``P*@M_[(`(`"@H"W_L0`8`0"0+?^_`%@!((@M_[X`
+M4/^W`$@,`F>:_[``$!1``%@R,``"%@``2SP#%"DD!O__W&(?D'S"_\;`1```
+M%(#__B0$``'@1```$(#_^P`````V,0`"`D`@+?^C```"("@M#`)J./^F``C?
+MHP```B#P+11``$7?I@`(_Z,`````("W_I@`(#`)J.`(@*"W?HP``WZ8`"!!`
+M`#P`0+@M9G$`#P*`*"U\$1@'`J`P+0(@("T"P#@M#`)GV`/`0"T$0``1/`04
+M*20#___<A1^0`N`P+6;D``A\9O_&_,(``'QD_\;\D0``9*4`+'QE_\8"X"`M
+MC*8```)`*"T,`F>X_Z(``-^B```6```'/`,4*20$___<8Q^0?(/_Q@```0^L
+M8``````!#]^_`%C?O@!0W[<`2-^V`$#?M0`XW[0`,-^S`"C?L@`@W[$`&-^P
+M`!`#X``(9[T`8#8Q``("0"`M`B`H+0P":C@"(/`M%$``!0``("T,`FHX`B`H
+M+11`_\@`0+@M"`)K820"___<8A^0?,+_Q@```0^L0``````!#P@":V$D`O__
+M`````&>]__C_OP``#`)K#``````$0``/`$`8+20$__\08``$?(+_QM^_```#
+MX``(9[T`"#P$$`T,`GYT9(1[4-^_`````!`M`^``"&>]``@`````"`)KBP``
+M$"T`H!`M`,!`+0#@2"T``"@M```P+0@":X(`0#@M``````@":X(``$@M`*`X
+M+0#`0"T``"@M"`)KH```,"T``````,!`+0``."T(`FN@`*0P+6>]_[C_L@`0
+M/!(4*=Y"'Y#_L0`()!'___^W`#@`P+@M_[8`,'XB_\;_M0`H`."P+?^T`"``
+MH*@M_[,`&`"`H"W_L````2"8+?^_`$`!`(`MP$,``!1@__XD`P`!X$,``!!@
+M__L`````)`4``@P":C@!`"`M%$``(@*`("T"H"@M`N`P+0+`."T"`$`M#`)K
+M#"0)``($0`!```````!`@"T00``Q?C#_QA)@`#4"`"`M`F#X"0````#>0A^0
+M)`/__WQB_\8```$/K$```````0_?OP!``@`0+=^W`#C?M@`PW[4`*-^T`"#?
+MLP`8W[(`$-^Q``C?L````^``"&>]`$C>0Q^0?B+_QMQ"``!^(__&```!#ZQ@
+M``````$/`$"`+11`_^M^,/_&/`00#0``@"T,`GYT9(1[4-^_`$#?MP`X`@`0
+M+=^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`2#P$$`T``(`M
+M#`)^=&2$>U`68/_-`@`@+0``*"T,`F9@`H`P+0@":]O>0A^0`````-Y"'Y!^
+M(O_&```!#ZQ```````$/"`)KX```@"T`````/`,4*20"___<8Q^09[W_J/^V
+M`#@D!``#_[``"&1F`#!D90`H9&,`+'Q&_\;<T```?$7_QHRV``!\0__&C&(`
+M`/^^`$@#H/`M_[\`4/^W`$#_M0`P_[0`*/^S`"#_L@`8_[$`$`P"9YK_P@``
+M$$``#CP$$`T#P.@MW]\`4-^^`$C?MP!`W[8`.-^U`##?M``HW[,`(-^R`!C?
+ML0`0W[``"`/@``AGO0!8#`)^O&2$>X`:P``IW]0`````F"T``(@M)I4``6:U
+M``=\%1`'"`)L4__5````````)C$``1(V`!QF$`"0)`/__V8"``A\8O_&W%(`
+M`!)`__@"`!`M`Z"X+7QB_\8"`"`MW\,```*`,"W<50``)G,``680`)`#H^@O
+M#`)G?@.@*"T\!!`,`Z`H+0(@0"UDA+2(`J`P+0)`."T,`GZ\)C$``18V_^8"
+MX.@M%F#_R``````#P.@M/`00#=^_`%!DA'NXW[X`2-^W`$#?M@`XW[4`,-^T
+M`"C?LP`@W[(`&-^Q`!#?L``("`)^O&>]`%@`````"`)L&@````!GO?_(_[\`
+M,/^S`"C_L@`@_[$`&!#``-__L``0/`(!#0"`@"TT0I$(0`-X``!B."9\YWH`
+M$.``WCP'__)\9+@`-.=P`"0(``$`AS@A+.<$`!3@``T`"$#\)$("^`!B$"9\
+M0GH`$$``"#P"``TD"``!-$*5```(0+P`@B`K)`(``0`"$?P`1$`*`1!`*Q$`
+M`!\\$10I/`3_\B00``%``G@`-(1P`'Q#N```9"`A+(0$`!2```X`$(#\?$)Z
+M`R00``$X0@V4$$``"0`0@/P\`@`-)!```31"E0``$("\`&(8*R0"``$``A'\
+M`$.`"O^E```\!!`-_Z8`"`P"?KQDA'P0WZ4``-^F``@\$10IWB,?D!!@``@D
+M`@`!W[\`,-^S`"C?L@`@W[$`&-^P`!`#X``(9[T`.'S"2`$D`___`$!8+61*
+M``1D20`(9$@`$&1'`!1D1``89$8`('QI_\9\:__&?&K_QJU@```\$A``K4``
+M`'QD_\;](```?&C_QB0)``-\9__&K0D``'QF_\:LX```-E(``?R```!\I/@#
+M_B(?D`(2$"O\P```$$``+SP3$````#`M#`)I"@($*"_>(A^0)!#__R0'`(`D
+M!"0````H+20(``%D1@`L9$,`*'X&_\9D0@`PK,<``'X#_\8D!@!`?@+_QJQF
+M`````#@M_$````P"9]@\!A``!$``0CP#%"ED1B0`W&,?D"0%__]D8P`P?@/_
+MQOQB````0"`M9$,`"'RD_\9\H__&_(```&1"`)#\8```%$;_^-^_`#`D`@`!
+MW[,`*-^R`"#?L0`8W[``$`/@``AGO0`X```P+0P":0H"9"@O/`3_\D`#>``T
+MA'``?&*X``(3*"\`1"`A`+*0*Q9``"LLA`0`%(``.'QC>@,X8PV4$&``!SP$
+M(``\`P`--&.5``!#$"LD`P!!``,?.`!B(`L\!1``#`)I"@``,"T\!#``0`)X
+M`'Q#>@,X8PV4$&``!CP#``U\0K@`-&.5``!#&"L\`B```$,@"SP%X````#`M
+M#`)I"@(%*"T(`FSRWB(?D#P$$`T,`GZ\9(1\6-^_`##?LP`H```0+=^R`"#?
+ML0`8W[``$`/@``AGO0`X%(``&7QC>@,X8PV4$&``!SP$(``\`P`--&.5``!#
+M$"LD`P!!``,?.`!B(`L,`FD*```P+0@";/+>(A^0/`0@`#P%$``,`FD*```P
+M+0@";4$\!#``/`00#0P"?KQDA'O8"`)LR```$"T(`FU=/`0@`"0"``$``A%\
+M-$(``0""&"L48/]2/!$4*0@";+UD4/__9[W_F/^_`&#_O@!8_[<`4/^V`$C_
+MM0!`_[0`./^S`##_L@`H_[$`(!#@`/__L``8``00(P#`@"T`1!`D`*"(+7!"
+M$"``@/`M)`H`'P`"$"<D0@`@"`)ME0!`,"T```````@@(P$$0"1Q"$`@`4A`
+M(R4(``$!`Q@A`&@0"P!`&"TD`O__)&@``2QE``04H/_T`1Y`!SP2%"G>0Q^0
+M$&``#B0"``'?OP!@W[X`6-^W`%#?M@!(W[4`0-^T`#C?LP`PW[(`*-^Q`"#?
+ML``8`^``"&>]`&@`````?.)(`20#__\`0&`M9$L`!&1*``AD2``09$<`%&1%
+M`!AD1``@?&K_QGQL_\9\:__&?&C_QGQG_\9\9?_&?&3_QOY"'Y`\`P`-0!5X
+M`#1CE0!^J;@`KZD```$C$"LD"0!!/`,@`*V`````"4\XK6````!B2`K]0```
+M)`H``ZT*``#_M0`(K.```/^I`!#\H```_(````@";>(`P+@M``````*E*"\,
+M`FD*```P+2;B``$D!O__`%X0!P`"(",`1!`D)`0`('!"$"``@A`C`%<8(0!B
+M,`L`P+@M+,(`!!!``%@`!CBX+,4``7XG/`I^!/@#``40(SP*$`!PI0`Z`%`0
+M)`"D*"0`!ZTX``:R/#54``$`0(`M`K00*Q1`_^$"Q2`E/!,0````,"T,`FD*
+M`F4H+P*S*"\`M%`K%4``*X^I```\!/_R0`)X`#2$<`!\1;@``*0@(2R$!``4
+M@``S/`D@`'Q">@,X0@V4$$``"3P$(``\`@`-)`,`031"E0```Q\X`*(@*SP%
+M(```I!@*`&`@+0"6("4\!1``#`)I"@``,"T\!#``0`)X`'Q%>@,XI0V4$*``
+M!CP#``U\0K@`-&.5`#P%(```0Q`K`*(@"SP%X```EB`E`J4H+0P":0H``#`M
+M"`)MV";B``$\`O_R-$)P``$B$"$L0@0`%$``0]^I``@\!"``WZ,`$'TB>@,X
+M0@V4`&(@"P"6("4,`FD*```P+0@";=@FX@`!/`40``+)("4,`FD*```P+0@"
+M;A\\!#``WD(?D"00__\D!P"`)`0D````*"TD"``!9$8`+&1#`"A^!O_&9$(`
+M,*S'``!^`__&)`8`0'X"_\:L9@`````X+?Q````,`F?8/`80``1``"`\`Q0I
+M9$8D`-QC'Y`D!?__9&,`,'X#_\;\8@````````!`("UD0P`(?*3_QGRC_\;\
+M@```9$(`D/Q@```41O_XW[\`8"0"``'?O@!8W[<`4-^V`$C?M0!`W[0`.-^S
+M`##?L@`HW[$`(-^P`!@#X``(9[T`:``````(`FXQ/`0@`#P$$`T,`GZ\9(1\
+M6-^_`&#?O@!8```0+=^W`%#?M@!(W[4`0-^T`#C?LP`PW[(`*-^Q`"#?L``8
+M`^``"&>]`&@\!!`-#`)^O&2$>]@(`FV?```0+0````!GO?\X_[$`B`"`B"W_
+MM0"H)`0``_^T`*``H*@M_[,`F`#@H"W_OP#``,"8+?^W`+C_M@"P_[(`D`P"
+M9YK_L`"``$`8+11@`#\``!`M/`(4*=Q$'Y``8!`M9(,`""0$__]\@__&W'``
+M`!(``#8\%Q`,)!+__V;WM:`"-:@MCX*"I`)SN`L\$Q`,"`)NR&9SM;@"$;`O
+M`'`@+0+#L"T")!@K$&``%``````D!0"``F`P+0+@."T"($`M`$!(+1+```T#
+MH"`M#`)_U@`````"P"`M`@`H+0``,"T``#@M`Z!`+0P":PP"@$@M$%(`(3P$
+M$`R/@H*D?E#_QB1"``'>$```$@``#Z^"@J1F`P`(`A$@*WY#_\8"%2@KW&,`
+M`!2`_]P`````$*#_\P*P("\`@[`K`'8@"@@";K``@+`M`````"0"``'?OP#`
+MW[<`N-^V`+#?M0"HW[0`H-^S`)C?L@"0W[$`B-^P`(`#X``(9[T`R#P%$`UD
+MA+709*5\N`+`,"T,`GZ\`@`X+0@";M<``!`M/`(4*20#___<0A^0?&+_QL!#
+M```48/_^)`,``>!#```08/_[``````/@``@`````/`(4*20#___<0A^0?&+_
+MQ@```0^L0``````!#P/@``@``````````"0"__]\1/_&`^``"`"`$"T\`A0I
+M)`3__]Q#'Y``8!`M$&```WR"_\8#X``(`````#P$$`UGO?_X_[\```P"?G1D
+MA'M0W[\`````$"T#X``(9[T`"`````",H@`,9[W_Z/^P````H(`M_[\`$"0%
+M____L0`($$4`!R0#___>$0````(0^`P"Q5P"(H@MC@,`#/XB``".!``()&(`
+M`=^_`!"N`@`,W[$`"'""$"K?L`````(0(S!"``4#X``(9[T`&&>]_^`D`___
+M_[$`""0"__^,L0`(_[````"@@"W_OP`8$B,`"?^R`!`,`L5<W+(``#P$$`T"
+M("@M9(1\V`)`^`D`0#`MC@(`"-^_`!@D0P`!K@,`"```$"W?L@`0W[$`"-^P
+M```#X``(9[T`(`````!GO?]@_Z4`:&>B`*#_H@```Z`H+?^B``AGH@!H_Z(`
+M$"0"`#BCH@`8)`(`0/^_`"#_I@!P_Z<`>/^H`(#_J0"(_ZH`D/^K`)BCH@`9
+M]ZP`*/>M`##WK@`X]Z\`0/>P`$CWL0!0][(`6`P"GW3WLP!@W[\`(`/@``AG
+MO0"@`````#P"$`IGO?_H9$*],#P$$`K_H@``9(2\P/^_`!`D`O__KZ(`"`P"
+MQXH#H"@MW[\`$`/@``AGO0`89[W_Z"0"____I```/`00"O^_`!!DA+S`KZ(`
+M"`P"QXH#H"@MW[\`$`/@``AGO0`89[W_Z"0"____I```/`00"J^E``ADA+Q8
+M_[\`$`.@*"T,`L>*KZ(`#(^B``S?OP`09[T`&`/@``@D0@`!`````-^"@JAG
+MO?_H_[\`$!!``"/_L``(+*(`!A1```D\`A`-/`00#`P"?KQDA+9`W[\`$-^P
+M``@``!`M`^``"&>]`!API?CR9$)\Z'Q%*@H`H``(``````````#?OP`0W[``
+M"&>]`!@#X``(WX*"L`````#?OP`0```0+=^P``@#X``(9[T`&`````#?OP`0
+MW[``"&>]`!@#X``(WX*"J/^E````@(`M/`0!#0P``%4TA`0(%$``'M^E```\
+M!`$-#```532$!P@40``9WZ4``/^E```\!!`-#```532$E0`00``?WZ4``#P#
+M__!R$`DS-&,`(SP"`OH``QRX-$+P@#1C``,``QYX-&,6``(#&"7<8P``?&0W
+M@WQC+@-P@B`#<&(0`_^$@J@(`F^;_X*"L#P"_X`T0@$?``(2/#1"A1#<0P``
+M/`("^C1"\(!\8R2#<&(0`_^"@J@(`F^;_X*"L/^E```\!`4-#```532$`P`4
+M0``&WZ4``#P$(`T,``!5-(0#`!!```;?I0``/`+_@#1"`1\``A(\"`)OY31"
+M`>@\`__P/`("^C1C`",T0O"```,:_#1C%@#<8P``"`)OVWQD+X-\`@`[?$()
+MPP"`*"T(`F^6`$`@+0`````D`@!0$,(`#@`````8P``)```0+0````#<IP``
+M)$(`"&2E``@`1A@J_(<``!1@__IDA``(`^``"```````````W*@``-RG``C<
+MI@`0W*,`&-RB`"#\B```_(<`"/R&`!#\@P`8_((`(-RH`"C<IP`PW*8`.-RC
+M`$#<H@!(_(@`*/R'`##\A@`X_(,`0`/@``C\@@!(`````&>]__`\`A`.9$*"
+MB'RY'0+_L0`(?+@<`O^P````!8\^?+`>`GRO&P)\KAH"?*T9`GRL&`)\JQ\#
+M?*H>`WRI'0-\J!P#?*<;`WRF&@-\HQD#,*4`#P(BB"V2,0```@*`+9(0```#
+M(L@MDSD```,"P"V3&````>)X+9'O```!PG`MD<X```&B:"V1K0```8)@+9&,
+M```!8E@MD6L```%"4"V12@```2)(+9$I```!`D`MD0@```#B."V0YP```,(P
+M+9#&````8A@MD&,```"B$"V00@``H)$``*"0``&@F0`"H)@``Z"/``2@C@`%
+MH(T`!J",``>@BP`(H(H`":")``J@B``+H(<`#*"&``V@@P`.W[$`"-^P``!G
+MO0`0H((`#P/@``B@@``0W(8``/R@``"`PP``%&``$```$"T(`G"=````````
+M```D8_^I`,!`+01@`!9DQ@`!W*<````'.3@`9Q@E_*,``/R&``"!`P`!$&``
+M#B1"``$D9_^?+.<`!A3@__$D:/_0+0<`"A#@``0D:?^_"`)PA0$`&"T`````
+M+2D`!A4@_^DD8__)`^``"```````````/`80#6>]__!DQHKX```0+?^^````
+MP!@M_[\`"`.@\"UD8P`!@&<``!3@__UD0@`!@(,``!!@`$X``D@``(`8+0``
+M."T`````9&,``8!H```5`/_]9.<``0`'$``!(A`A)`,`(21"``%D0@`.?`(0
+M!P.BZ"\#H#@M`Z`0+0````"@0P``9,8``8##```48/_\9$(``:!```"`@P``
+M$&``!P#I$"T`````H$,``&2$``&`@P``%&#__&1"``&@0```**(`"A!``!0D
+M`@`@)*4`,*#B``:@Y0`'WX."N-QD``@\`Q`.9&.">``$(/A\9!H*W&,`(!!@
+M``,``!`M`&#X"0#@("T#P.@MW[\`"-^^```#X``(9[T`$"BB`&000``0``4?
+MPSP"9F8T0F9G<*(0`P`"$+\`0Q`C``(@0``"&,``@Q@A)$(`,*#B``8`HR@C
+M)*4`,`@"<-:@Y0`'`````"0"`#^@X@`&"`)PUJ#B``<(`G"W```0+=R"`$AG
+MO?_H_[$`"`"@B"W_L````("`+1!```3_OP`0/`00#0P"<*!DA(L(WX*"N`(@
+M*"W<0P`(/`(0#F1"@G@``QCX?$,2"MQ"`#``0/@)C@0`--^_`!#^$0`PW[$`
+M"-^P```#X``(9[T`&`````!GO?_H_[X`"/^_`!#_L```@(,``!!@`"<#H/`M
+M`(`0+0``,"T`````9$(``8!'```4X/_]9,8``63"`!]\`A`'`Z+H+P.@@"T#
+MH!`M`````*!#``!DA``!@(,``!1@__QD0@`!H$````P"<#("!B`MWX."N-QD
+M``@\`Q`.9&.">``$(/A\9!H*W&,`(!!@``,``!`M`&#X"0(`("T#P.@MW[\`
+M$-^^``C?L````^``"&>]`!AGO?_H```P+0.@$"T(`G$S`Z"`+2B#`"`48``.
+M9((``22"_]HL0P`@%&``!B2$_^`L@@`H%$``"W"$^/(#X``(```0+61"`"T`
+M`A#X`^``"`"B$"T``A#X`^``"`"B$"T`````/`(0#61"?7A\1"(*`(``"```
+M`````````^``"&2B`Q@#X``(9*(#(`/@``ADH@+8`^``"&2B`K`#X``(9*("
+MJ`/@``ADH@)P`^``"&2B`F@#X``(9*("H-R"```P0@`,%$``"]^"@KC<0P`(
+M/`(0#F1"@G@``QCX?$,2"MQ9`"`3(``(/`00#0,@``ADA(L@W*4#L#P$$`UD
+MA(L8"`)Q&@`%*``#X``(``````````!GO?\P)`8`4/^P`*#?D(*X_[X`P`.@
+M\"W_L0"H_\0`F&81`"@#P"`M`B`H+?^_`,C_LP"X#`)P#/^R`+#?P@"89$,`
+M`?_#`)B00P``)&/__3!D`/\LA`!X%(``%SP$$`W>`P`(/`(0#F1"@G@``QCX
+M?$,2"MQ"`"`00``$)!```3P$$`T`0/@)9(2+X`/`Z"T"`!`MW[\`R-^^`,#?
+MLP"XW[(`L-^Q`*C?L`"@`^``"&>]`-``````<&,X\F2$?KA\@QH*`&``"```
+M``#?P@"0+$(`!!!`_^+?P@"89$,``?_#`)B`40``%C/_W6?$`)@,`G!\9\4`
+MB!!`_]G?P@"89$,``?_#`)B`0@``%%'_U&?$`)@,`G!\9\4`>!!`_]#?Q`!X
+M9(+__RQ"``,00/_,W\,`D'"%`&X`!2@O.(@``C"E(``D`A``9&<`?P"H$`O?
+MQ`"(``<H^-_'`(!D9@!W``8P^`)%*"T"1C`M_,<``"0&``C\H```-$4/]1"&
+M``4D`@`'<(8`KB0"``,XA``$`,00"V1D`(-D9@![``88^``$(/@"0Q@M`D20
+M+?QB``#^10```````"00``$#P.@M`@`0+=^_`,C?O@#`W[,`N-^R`+#?L0"H
+MW[``H`/@``AGO0#0`````(!#``$D`@`Q$&(""R0"``'_P``H`B`@+0/`*"T,
+M`G`,)`8`4-_%`"@\!!`-9(3LZ`P"<1HD$``!"`)QL`/`Z"W?P@!X`&(0)!1`
+M``3_P@`X`&`0+0````#_P@`XC\,`-`!B(!;H@``3WX2"N-X%``@\!!`.9(2"
+M>``%*/A\A2(*W(4`(!"@``8`````/`00#0"@^`EDA(NHW\(`.(_#`#0D!``!
+M`&08%`!B$"7_P@`XWX2"N`/`*"TD!@!0#`)P#&2$`"C?Q0`X/`00#62$B]`,
+M`G$:)!```0@"<;`#P.@M@$,``20"`#$08@'1)`(``?_```@"("`M`\`H+0P"
+M<`PD!@!0G\4`##P$$`UDA(N@#`)Q&B00``$(`G&P`\#H+=_"`$``HA`6Z$`!
+MQ3P"$`[>`P`(9$*">``#&/A\0Q(*W$(`(!!```7?Q0`P/`00#0!`^`EDA(M@
+MW\4`,#P$$`UDA(M8#`)Q&B00``$(`G&P`\#H+0````!GQ`"8#`)P?&?%`'@4
+M0/_FW\4`>-X#``@\`A`.9$*">``#&/A\0Q(*W$(`(!!`_^P`````/`00#0!`
+M^`EDA(LP"`)R7=_%`#`(`G&O)!```V1#``)GQ`"8_\,`F&?%`)"`40`!?`(`
+M.PP"<'P`0)`M$$#_(]_#`)AD8@`!_\(`F"0"`"R`<P``%F+_'6?$`)@,`G!\
+M9\4`@!!`_QDD`BPX?E+X`W)"D`,D`@!D9E(`@!(B_RX"$I`M)`(`:18B_Q#?
+MP@"0+$,`!!!@_PW?Q@"`9$4`9F1$`&ID0P!N9$(`<@`%*/@``A#X``0@^``#
+M&/@"12@M_*8```)$("W\@````D,8+?Q@```"0I`M)`(`!200``'^0@``"`)Q
+M_`/`Z"UGQ0"`#`)P?&?$`)@00/[TW\(`F&1#``'_PP"8@$,``"0"`"P48O[N
+M9\0`F`P"<'QGQ0!X$$#^ZM_"`)@`0!@M9$(``?_"`)B`9```)`,`.A2#_N/?
+MPP!X$&`!@=_$`(`D!@`!```8+0@"<N<D"0`!)*7_J7Q&%8HD1_^?+.<`!A#@
+M`64D1__0)$+_J0`%00!P1__N<*7_[@$"$"4`Y2@E%*`!;3!"`/__B8.`_X"#
+M>`````"@@````````-^%@WC_@(.`_X"#>!2@`6-D8P`!H((``-_"`'ADA``!
+M`&(0*Q!``5]DQ@`"W\(`F``#*'A\12V*)*?_GRSG``84X/_<)*?_T"SH``H1
+M``%()*C_OP@"<LD`X"@M9\4`@`P"<'QGQ`"8$$#^KM_"`)AD0P`!_\,`F(!#
+M```D`@`L%&+^J&?$`)@,`G!\9\4`>!!`_J3?P@!X+$,$`!!@_J'?R`"```(8
+M>&1C``]\`Q`'`Z/H+Q!``"T#H"`M)`(``?^"@X#_@(-X`````)$%````````
+MWX*#>#"E`/__@(.`_X"#>!1`_H\\!A`.`Z`0+0``&"UDQH*("`)S*"0)``'_
+MB8.``&@H+?^`@W@`````D*4```````#?AX-X,*4`__^`@X!D0@`"_X"#>!3@
+M_GT`````<*?Y.C"E``\`QS@M`,4H+9"E``!D8P`!D.<``*!```*@10`!H$<`
+M`-_%`'@`92@K%*#_Y@````#>`@`(/`,0#F1C@G@``A#X?&(2"MQ"`"`00/Z]
+M)!```0!`^`D`````"`)Q_`/`Z"UD0P`"9\0`F/_#`)AGQ0!X@%$``7P"`#L,
+M`G!\`$"0+1!`_EG?PP!X+&(`!!!`_E9^4O@#)`(L.')"$`,D!`!D9$(`@!(D
+M`-D"`A`M)`0`:18D_DUD9@!F9&4`:F1G`&YD9`!R``8P^``%*/@`!QCX``0@
+M^`!&,"T`12@M_,````!#&"W\H````$00+?Q@```D$``!_$````@"<?P#P.@M
+M"`)QKR00``+>`P`(/`(0#F1"@G@``QCX?$,2"MQ"`"`00/X\)!```3P$$`T`
+M0/@)9(2+(`@"<;`#P.@M`````-X#``@\`A`.9$*">``#&/A\0Q(*W$(`(!!`
+M_BXD$``!/`00#0!`^`EDA(LH"`)QL`/`Z"T`````9\0`F&?%`'A\`@`[#`)P
+M?`!`B"T00`!F?B7X`R0#+#APHR@#C\0`?&2E`(`,`G%,`@4H+1!``%\D!6]7
+MW$4``#P$$`UDA`_8#`)Q&B00``$(`G&P`\#H+6?$`)@,`G!\9\4`>!1`_G3?
+MPP``_\``>`@"<AS?P@``)`,L.&?$`)A\$@`[?E+X`V?%`'AR0Y`#_\``>&1#
+M``+_PP"8#`)P?(!1``%F4@"`*B(`,11`_D8"$I`M*B(`,Q1``$<\`D``*B(`
+M-1!`_D`F,?_-9\0`4&8B`&%F)0!?``(0^``%*/A^0HH*#`)P,GY%*@HD`@`L
+MH\(`8&?$`&$,`G`R?B5)0Z/``''>`@`(/`,0#F1C@G@``A#X?&(2"MQ"`"`0
+M0/XJ9\0`4`!`^`DD$``!"`)Q_`/`Z"T`````9\4`@&?$`)A\`@`[#`)P?`!`
+MB"T00/W(W\,`F&1B``'_P@"8)`(`+(!C```48OW"9\0`F`P"<'QGQ0!X$$#]
+MOGXE^`,D`BPX<*(H`X_$`(1DI0"`#`)Q3`(%*"T00/VVW\,`>"00``'\0P``
+M"`)QL`/`Z"T`````)`5O5SP$$`T`!2QX9(0/V&2EON\,`G$:)!```0@"<;`#
+MP.@M`````"8Q_\]F)`!?)`,``0!Q&",`!"#X-$(`#P)$("W\@```?&+_Q&8C
+M`&$D$``!``,8^`)#D"V7PP!^?&)Q1'Q"^`/^0@``"`)Q_`/`Z"T`````"`)R
+M0__"``@(`G(+_\(`*#P$$`TD$``!#`)Q&F2$BUC?@H*XC\0`-#P#$`YD8X)X
+MW$(`"``"$/A\8A(*W$(`,`!`^`F/Q0!\WX2"N-_"`'@#P"@M)`8`4&2$`"@,
+M`G`,_\(`,`@"<;`#P.@M9&8`=V1E`'MD9P!_"`)S6V1D`(,LZ``*$0``"```
+M```(`G+/`.`0+22G_\DM"``&)`7__P@"<LD`Z"@+)$?_ORSG``80X/UEWY""
+MN`@"<L\D0O_)"`)QI-^0@KC?@H*X/`,0#F1C@GC<0@`(``(0^'QB$@K<0@`@
+M$$#]KCP$$`T`0/@)9(2+V`@"<?LD$``!`````&>]__`D`O___[```'R02`'_
+MOP`($(``+'Q0_\8\!@`(`@`@+0``*"T,`F9@-,9+`#P$`/\TA/]`/`,`#4`"
+M>``T8P,``$0@)"0%``8`@R`K%(``%_X%``!\1+@`-`6-``"#,",`Q2@K%*``
+M"R0#`$`\!?_R-*5P``"%("$LA`0`%(``!20#`(!\0GH#)`0!`#A"#90`@A@+
+MW[\`"/X#`"#?L````^``"&>]`!``````W[\`""0#`"#^`P`@W[````/@``AG
+MO0`0/`00#200__]DA'T8#`)^=``0A_P(`G1:/`8`"`````#?@H-X9[WZX/^_
+M!1C_O@40_[<%"/^V!0#_M03X_[0$\/^S!.C_L@3@_[$$V!!```C_L`300"7`
+M`-^&@W@\!!`-#`)^O&2$C'@(`G2>`````'P#`#LD`BPX?&/X`W!B$`,\`Q(;
+M`*"`+61E(1C?@X*X`("(+20&`0!D0@"``&*P+6;#``C_HP2H`&`@+6;#`0@,
+M`G`,_Z,$H-^D!*`\`A(;9$4?F`P"<`PD!@!@_M$":/[0`G!`(@``_L(">$`B
+M$`#^P@*`0"(8`/["`HA`(E``_L("D$`B*`#^P@*80")@`/["`J!`(F@`_L("
+ML$`B@`#^P@*X0"*``?["`L!`(H`"_L("R$`B@`/^P@+00"*X`/["`NA`(K``
+M_L("\$`BR`'^P@+X0"+(`_["`P!`(L@`_L(#"$`BR`+^P@,00"+``/["`MA`
+M(O@`_L("X&;#`6@\`A(;/!,2&V1%(!@`8"`M)`8!`&9W(A@,`G`,_Z,$L-YB
+M(A@\!?\PWN8`"#2E$````"`M_L(#&&2B`0#^Q@,@)`8`!-RE``#^Q0,HW$D`
+M`'R%^`-DIP!F9*@`:@`'./@`"$#X`L<X+0+(0"W\Z0``9*<`;MQ)``@`!SCX
+M`L<X+62E`'(`!2CX)(0``?T)```"Q2@MW$@`$/SH``#<1P`89$(!`!2&_^G\
+MIP``/`+_,```("TT0B``)`8`!-Q%``!D0@$`_L4#L-Q)``!\A?@#9*<`=V2H
+M`'L`!SCX``A`^`+'."T"R$`M_.D``&2G`'_<20`(``<X^`+'."UDI0"#``4H
+M^"2$``']"0```L4H+=Q(`!#\Z```W$<`&&1"`0#\IP``%(;_Z-^%@K@``"`M
+MW*8`(!#``!8``!`M`````$"D``!"```!0"80```"./@``A%X`.(0+0+"$"W\
+M1@1(0"88`/Q&!%!`)E``_$8$.$`G*`#<I@`@)(0``?Q'!$!\@O@#`$8P*Q3`
+M_^T````````!#]^"@KC`1`!X%(#__B0$``'@1`!X$(#_^P````#?D(*X9Z0$
+M*"0&`%!F$0`H#`)P#`(@*"TD`@`!_Z($<`(@("UGI00H#`)P#"0&`%````$/
+MK@``>````0\D`@`$_L(``````0]\%``[?H/X`P*`B"W_HP2XWX*"N,!$`'@4
+M@/_^)`0``>!$`'@0@/_[`````-^"@KC<1``0$(``"0````#<1``0+(0``Q"`
+M`@<`````W$0`$/Q``!!DA/___$0`"````0^L0`!X```!#]^>@K@\`A`.9$*"
+M>&>D!"@D!@!0W\<`"&?2`"@"0"@M``<X^'Q'.@H,`G`,C/4`$-^E!&`D!@`!
+MWL0"Z`*&,!0`Q3`D``8P`!3``(S?I01`,(8`(Q3``(H`%3`K?`1"!_[$`NC>
+MP@.P?`)H!_["`[#>P@+P-$(``?["`O#^P``````!#]^E!*@\`A(;9$0A&`P"
+M<`PD!@$`WZ4$H#P#$ALD!@!@#`)P#&1D'YC>Q0.P/`3_,```$"TTA"``)`8`
+M!/R%``!DA`$`9$D`=V1(`'L`"4CX``A`^'[)2@ID1P!_``<X^&1%`(,`!2CX
+M)$(``?R)``!^R$(*_(@`"'['.@K\AP`0?L4J"OR%`!@41O_N9(0!`-[&`R@\
+M!?\P-*40````$"UDI`$`)`<`!/RF``!D20!F9$@`:@`)2/@`"$#X?LE*"F1&
+M`&X`!C#X9$4`<@`%*/@D0@`!_(D``'[(0@K\B``(?L8R"OR&`!!^Q2H*_(4`
+M&!1'_^YDA`$`WL(">$"B``#>P@*`0*(0`-["`HA`HA@`WL("D$"B4`#>P@*8
+M0*(H`-["`J!`HF``WL("L$"B:`#>P@*X0**``-["`L!`HH`!WL("R$"B@`+>
+MP@+00**``]["`NA`HK@`WL("\$"BL`#>P@+X0*+(`=["`P!`HL@#WL(#"$"B
+MR`#>P@,00*+(`M["`MA`HL``WL("X$"B^`#?I02P/`(2&V1$(!@D!@$`WM$"
+M:-[0`G`,`G`,`````-[$`QC>P@,@_F0B&/[B``@"(``3`@``$=^_!1C?O@40
+MW[<%"-^V!0#?M03XW[0$\-^S!.C?L@3@W[$$V-^P!-`#X``(9[T%(``5,"L"
+MA2@6,*4``0`%*```Q2@D%*#_<P````#>QP+H9Z0$*`)`*"TD!@!0_Z<$@##G
+M`!]PYP!N#`)P#/^G!,C?I`0P%(``!M^G!,C>Q0*@<*7X>@"G*"04H`$=````
+M`-^E!(`PI0`#%*``!-^P!+C?I018$+`!,`````#>Q0+8+(0``0"'."00X``B
+MWZ0$6!"0`"#?I`0X%(``'CP"!R<T0@X`_Z($>-^D!'@0@``9/`@`"3P'``<U
+M""?!-.>A(&>D!"@"0"@M_Z<$R"0&`%`,`G`,_Z@$P-^D!'C?J`3``(@@*Q2`
+M``7?IP3(WZ0$.!"```(`````_Z<$>-^D!'ADA/___Z0$>-^D!'@4@/_M9Z0$
+M*,/$`'@4@/_^)`0``>/$`'@0@/_[`````-^%@KAGI`0H)`8`4`(@D"T,`G`,
+M9*4`*"0$``&/H@1<`B0@%/^D!)``@!@MWZ0$:`!D("7_I`1H`$0@%NB```[?
+MI`2`,(0`'A"```;?I`0H9Z0$*`P"</X"("@MCZ($7-^D!"@`1!`6Z$```V>D
+M!"@,`G#^`D`H+=^2@K@D`@`!_Z($.&>E!"@D!@!0#`)P#&9$`"@```$/KD``
+M>````0_?O@18$]``NV>D!(#?A8*X9Z0$*"0&`%`D$@`!+K4``0P"<`QDI0`H
+MWZ0$6!"0`!X`````KZ`$C(^B!(PH0@#P$$``#-^B!%``````````````````
+M````CZ($C"1"``&OH@2,CZ($C"A"`/`40/_VWZ($4!1``'H`````WX6"N-RB
+M`!`40`#A9Z0$*&2E`"C?O@18#`)P#"0&`%#?I`18%)#_Y`````#>Q```<(0!
+M+@"5("00@``")`0``?[$``````$/WZ0$6'_%^`,0I``*WZ0$0`/$$!;(0``(
+MWX*"N-^B!%`40``$9Z0$@`P"<78"P"@M`````-^"@K@\`Q`.9&.">-Q"``@`
+M`A#X%J``;GQB$@K<0@`8`Z`@+20%!"(`0/@))!X``1!```0`````#`)QC`.@
+M("T``O``WX*"N,!$`'@4@/_^)`0``>!$`'@0@/_[`````-^"@KAGI`0H)`8`
+M4/^B!)AD0@`H_Z($P`P"<`P`0"@M)`,`!!/#`%C?H@3`$](`"0````#?I`10
+M$(``!G_%^`,`0"`M_Z4$2"0&`%`,`G`,9Z4$*````0_?H@28K$``>````0\3
+MTO^O<\<`KM^D!(#?@H*X?.1"!_^D!(#`1`!X%(#__B0$``'@1`!X$(#_^P``
+M``#?D8*X9Z0$*"0&`%!F,@`H#`)P#`)`*"W?H@1HWZ,$D`)`("UGI00H)`8`
+M4`!#$"8,`G`,_Z($:````0^N(`!X```!#]^"@KC<1`!0$(``!-^D!%C<1`!H
+M%(#_^M^D!%@2!``&`````-^B!(`(`G61_L("Z`@"=OF/O@1,P$0`>!2`__XD
+M!``!X$0`>!"`__L`````WY""N&>D!"@D!@!09A$`*`P"<`P"("@M)`(``?^B
+M!$@"("`M9Z4$*`P"<`PD!@!0```!#ZX``'@```$/WZ($@`@"=9'^P@+HW$(`
+M*`!`^`D"P"`M"`)VV0`"\```````WZ0$6!"0_ZD`````"`)V]20>``$,`G%V
+M`L`H+0@"=HW?O@18P\0`>!2`__XD!``!X\0`>!"`__L`````WY""N&>D!"@D
+M!@!09A(`*`P"<`P"0"@MWZ($.!!```3?H@18?B3X`Q""`"@`````WL("V(Q$
+M```\`D(`-$(`&!""`!S?H@18"`)W,P)`("VOH`2(CZ8$B"C&$L`0P/[-````
+M``````````````````````"/I@2(),8``:^F!(B/I@2(*,82P!3`__8`````
+M"`)V-@"@@"W<10`0/`00#62$C,`,`GZ\)`8``@@"=WP`````?C'X`Q8B_^,D
+M`@`!`D`@+0@"=S/_H@0X_Z`$.-["`MB,1```/`)"`#1"`!@4@O^I`D`@+0@"
+M=W[?H@18`Z`@+0``*"T,`F9@)`8`@-^B!&@#H"`M#`*N&O^B``#?H@2`_L("
+MZ`@"=6/?@H*X`````$`">``\`P`-?$)Z`P`"$@`T8P<`$$,`$B1D``$`1"`K
+M%(``'21D^P`\`P`--&.2`!!#``LD9``!`$0@*Q2``"0D9/X`)&0"`!!$``4D
+M9`0`$$0``R1C`0`40P`B/`/_@#P#_X`\`O_P-&,!!S1"`",``QH\)`4``31C
+M!R```A+\?`0`.P"%(!0T0@#X_&0```/@``C<0@``$$3_\21D^P$`1"`K%(``
+M'#P$``TD9/T`$$3_ZR1D_P`01/_I)&/\`!1#``<\`_^`"`)WM#P"__`01/_C
+M)&/_`!!#_^(\`_^`/`/_@#P"__`T8P$!-$(`(P`#&CPD!0`!-&,!@``"$OQ\
+M!``[`(4@%#1"`/C\9````^``"-Q"```01/_1)&/Z`!1#_^\\`_^`"`)WM#P"
+M__`\`@`-9[W_>$`#>``T0I3_?&.X``!#$"NO@H.,_[\`@/^U`'C_M`!P_[,`
+M:/^R`&#_L0!8_[``4$`B2`<``A;Z.$(``3!"``&O@H.(WX*"N!!``%@\!``(
+M/!02&PP"KAIFA!\8WY""N"0"``;>!@``$,(`!SP$$`TD!0`&9(2,,`P"?KP`
+M!C``"`)X"`````#>`@`(/!(0#F92@G@\`X``?!,`.P`"$/@\!!`+?D*2"G)B
+M^+(`8A@M9(3`V-Y"```00``#K&0.!`!`^`D`````P@(`>!1`__XD`@`!X@(`
+M>!!`__L`````WY6"N`.@("TD!@!0)!$``6:U`"@,`G`,`J`H+=^E``#?I@`8
+M`G$0%``"&"<"H"`M`*(0)0.@*"W_H@```,,8)/^C`!@,`G`,)`8`4````0^N
+M``!X```!#PP"KAIFA!\8CX*"F!1``#'?D(*XWX*"N-Q#`!@08/_^`````(^"
+M@J`40``F`````(^"@I@00``'W[\`@-Y"``@00``%W[4`>`!`^`D`````W[\`
+M@-^U`'C?M`!PW[,`:-^R`&#?L0!8W[``4`/@``AGO0"(/`@0#3P)$`HTA$L`
+M```H+3P&(``D!P`(90B+Z`P":ZQE*=%($$``!7Q"2`$D`___?&+_Q@@"=_S_
+M@H*X/`00#0P"?KQDA'U("`)X90`````,`G>:``````@">$./@H*8`Z`@+20&
+M`%!F$``H#`)P#`(`*"W?H@``_[,`,`(`("W_L0`0`Z`H+?^B`#@D!@!0_[$`
+M"`P"<`S_L0`@```!#]^"@KC\40`8```!#P@">#S?@H*X9[W_&```*"T#H"`M
+M)`8`@/^P`-#_OP#@#`)F8/^Q`-C?@H*X?!``.Q!``$S?@H"@#`)?AMQ$`!#?
+M@H"@#`)?AMQ$`!C?@H*XP$,`>!1@__XD`P`!X$,`>!!@__L`````WY&"N&>D
+M`(`D!@!09C$`*`P"<`P"("@MWZ8`F-^C`(`D`@`!`@(0%`(@("UGI0"``&(8
+M)@#"$"7_H@"8)`8`4`P"<`S_HP"`WZ(`R!1``#@\!!`-WZ0`F#P&$AL\`A(;
+M9,8?&&1"'U!GHP`X_Z0``&3&__@`````W$4``&1"__C<9```%*0`$F1C__@4
+M1O_Z`````-^B`,@00``.WZ(`L-^"@KC<0P`(/`(0#F1"@G@``QCX?$,2"MQ"
+M`"`00``$`````#P$$`T`0/@)9(2-`-^B`+!^$/@#$%``&]^C`(#?D(*X```!
+M#ZX``'@```$/WZ(`R!1```8`````W[\`X-^Q`-C?L`#0`^``"&>]`.@,`G>:
+M`````-^_`.#?L0#8W[``T`/@``AGO0#H``````(`*"T,`G"@9(2,\`@">*[?
+MI`"8`````!!@_^;?D(*X```H+0@">/,D!``P`````"2E``$0I/_?WY""N`"C
+M$!;(0/_[``````P"</YGI`"`WY""N&>E`(`D!@!0#`)P#&8$`"@(`GC1````
+M``````!GO?_X)`)__Z^B``````$/W(,``"0"``$48@`0`````(^B```$0``-
+M``````@">1$D`P`!`````(^B```$0``'`````(^B```D0O__KZ(``-R"```0
+M0__X`````````0_<@@`````!#P`"$``#X``(9[T`"``````#X``(`````(^#
+M@,@D`O__$&(``R0"``$#X``(``````/@``BO@H#(/`(0!V1"Z$@00``.````
+M`&>]__#_L````("`+8^$@,C_OP`(#`&Z(@````#?OP`(CX2`R`(`*"W?L```
+M"`&Z$F>]`!`#X``(```````````\`A`'9$+G4!!```2/A(#(/`40"@@!N=1D
+MI>48`^``"```````````CX2`R&>]_^#_L```/!#_\/^_`!@V$``C`!""_#"$
+M``$V$`@H``02@'Q0$@K_L@`0R$``'?^Q``AF$O_8"`)Y6R01``,`````?%`2
+M"LA``!??OP`8``02@'Q2&@H``Q@`%''_^0````#?@H"@#`)?AMQ$`!C?@H"@
+M#`)?AMQ$`!!`(K``-$(1$$"BL`"/A(#(,(0``0`$$H!\4!(*Z$#_[@`$$H``
+M````W[\`&-^R`!#?L0`(W[````/@``AGO0`@/`+_\"0*`"0T0@`C)`P`(P`"
+M$OPT20@H92W_V`&@6"V/AX#(,.<``0`'$H``23`M`$U`+20"?_\00``G````
+M`-S#``#(8/_\)$+__]T"``!P0C@Z%$K_^"0"?_\0H``:```P+0``0"T`!SJ`
+M`.D8+=QB``#(0/_^`````'SK&@IP8C@Z$$H`#``#&``03``4`(8X+63&``&@
+MX@```,40*Q!```EQ`T`HCX>`R`@">9`PYP`!````````,"T`Q1`K%$#_^0``
+M0"T`AC`M"`)Y?J#``````````^``"```$"T`AB`M/`+_\*"````T0@`CCX.`
+MR``"$OPT0@@H,&,``0`#&H``8A`MW$0``,B`__X\!/_P-(0`(P`$(OPTA`@`
+M`&08+=QE``!PI3@ZW$0``,B`__X`````W&0``"2B_Y\L0@`&)*/_J11```IP
+MA#@Z)*/_T"QB``H40``')(+_GR2B_[\D`___)*7_R2Q"``8`HA@+)(+_GRQ"
+M``840``/<&+_[B2"_]`L10`*$*``$B2%_[\`0"`M<&+_[G"%_^X`HB@E%*``
+M"@``$"T``Q$``$00)0/@``AP2!`J)(3_J7"%_^X`HB@E$*#_^```$"T#X``(
+M`````"RE``80H/_\```0+0@">=PDA/_)`````)""```00`!=9[W_X&2#``$`
+M`"@M9&,``7!%*"B08O__%$#__61C``%PIODZ,*4`#SP#$`T#IC`MW&>2,&1B
+MDC#<0P`(`Z4H+9!"`!`\"!0I_Z<``/^C``BCH@`0D,,``)"B``"CH``:HZ,`
+M&*.B`!G!`A^8%$#__B0"``'A`A^8$$#_^P````"/A8#(/`+_\#1"`",``A+\
+M,*4``31"""@`!2J``*(0+=Q#``#(9?_^/`?_\"0#`"0TYP`C``<Z_#3G"$``
+MIR@M_*,``("#``#<YOBX$&``##!F`/]DY_BXW$,``,AE__X`````_*8``&2$
+M``&`@P``W.8``!1@__@P9@#_`````-Q#``#(9?_^@Z,`&#P'__`D!``C-.<`
+M(_RD````!SK\-.<`^-SD```08``,,&8`_V>D`!@`````W$,``,AE__X`````
+M_*8``&2$``&`@P``W.8``!1@__@P9@#_```!#ZT`'Y@```$/```0+0/@``AG
+MO0`@```H+0@">?X``#`M``````````UGO?_P_[```/^_``@,`JFJ`````!!`
+M``8`0(`MW[\`"`(`$"W?L````^``"&>]`!`,`GV2`````(^$@L0\!1`.)`8`
+M&`P"?:QDI8*@#`)]I@````#?OP`(`@`0+=^P```#X``(9[T`$`/@``BOA(+`
+M+((``A1```0``````^``"````````````^``"*^$@L1GO?^(_Z4`0/^F`$C_
+MIP!0_Z@`6/^I`&#_J@!H_ZL`</>L``#WK0`(]ZX`$/>O`!CWL``@][$`*/>R
+M`##WLP`X````#R`9``8\#X``->\`#P`/?#@U[^_^``]\.`/@P"P!X/@)````
+M``,`^"P#X``(9[T`>``````````/`^``"```````````````#R`9``D\#X``
+M->\`#P`/?#@U[^_^``]\.`/@P"P!X/@)``````,`^"P`0"`M`^``"`"`$"V/
+M@H+(9[W_./^_`,#_O@"X_[<`L/^V`*C_M0"@_[0`F/^S`)#_L@"(_[$`@!1`
+M``W_L`!XW[\`P-^^`+C?MP"PW[8`J-^U`*#?M`"8W[,`D-^R`(C?L0"`W[``
+M>`/@``AGO0#(?!``.PP"?9+_L`!P/`40#@(`,"UDI8+`#`*`1F>D`$"/D(+$
+M#`*"'&>D`$!GI0!``@`@+0P"?:P`0#`MCX*"R!A``'(\$1`-``"H+?^@`&AF
+M,2BXWY."T#P%$`Z/A(+$9*6"X"0&``H,`GVL`G68+=YP``"/DH+$#`*"'`(`
+M("T"0"`M`@`H+0P"?:P`0#`MCX2"Q`(@*"T,`GVL)`8``=Y^``C><@`0CY""
+MQ!/``$G><P`8$EX`;R04`P```%@M``"X+0@">Q4``+`M?\0AB@""$"410`!K
+M``(2`'_%*8H`HA`E``)K`@`"88(#MR`M9N4``W!._+IF]P`$,:T`/S&,`#\P
+M0@`_<N8/+G+44"HES@`@H(X``"6M`""@C0`!)8P`(*",``(#I2@M)$(`(`%&
+M("44@``/H*(```+4$"L00``@`````'_6$8IFQ``!9L4``@"4,"L`M%`K9M8`
+M`Q3`_]H``A(```(2``@">OP`@+`M`LM8+R0&``$`"U@``@`@+25K`"!GI0!@
+M#`)]K*.K`&`"X#`M`@`@+0.@*"T,`GVL``"X+0(`("T"("@M#`)]K"0&``$"
+MU!`K%$#_X@+`6"W?W@,`%\#_N@````"/D(+$WZ,`:#P%$`X"`"`M9*6"\"0&
+M``9FM0`@)&,``0P"?:S_HP!HCX*"R-^C`&@`8A`J%$#_E-^3@M#?I@!P/`40
+M#F>D`$`,`H!&9*6"^(^0@L0,`H(<9Z0`0&>E`$`"`"`M#`)]K`!`,"T,`GVF
+M`````-^_`,#?O@"XW[<`L-^V`*C?M0"@W[0`F-^S`)#?L@"(W[$`@-^P`'@#
+MX``(9[T`R!)@_],`````"`)Z\@)@H"T(`GK\`*"P+8^"@L!GO?_8_[\`(/^S
+M`!C_L@`0_[$`"!1``!?_L```````#R`9``D\#X``->\`#P`/?#@U[^_^``]\
+M.`/@P"P!X/@)``````,`^"P`0"`M`("(+=^_`"`"(!`MW[,`&-^R`!#?L0`(
+MW[````/@``AGO0`H`````#"E``,0H`!```````P"@AP`@)`MCX."R-^$@M@`
+M0)@M$&0`(=^0@M!F<P`!``,1>"1E``$"8"`MKX6"R`("@"T,`GI6)'$``R0$
+M`P@,`GI6_@(``-X$``#^`@`(``(8*P`$$"L`8A`D$$``+`)`*"T,`F5<`F`P
+M+=X"``C?OP`@W[,`&/X"`!#?L@`0_$`#``(@$"W^```8W[$`"-^P```#X``(
+M9[T`*"0$`4`08``#)!$`"@`#B'@``R&X#`)Z5@`````00``5`$"`+=^&@M@4
+MP``%WX6"T(^#@LC_D(+0"`)[CO^1@M@`0"`M#`)E7``&,7@,`JFNWX2"T`@"
+M>[N/@X+(``````P"7LHD$?__)`,`#0@">WNL0P``#`)>RB01__\D`P`,"`)[
+M>ZQ#``!GO?_X)(+__RQ"``(40``4_[\``(^"@L`40``1``8P``````\@&0`(
+M/`^``#7O``\`#WPX->_O_@`/?#@#X,`L`>#X"0`````#`/@L`$`@+=^_````
+M@!`M`^``"&>]``@,`E[*`````-^_```D!/__)`,`%JQ#````@!`M`^``"&>]
+M``@`````9[W_R/^S`!@`@)@M_[\`,/^U`"C_M``@_[(`$/^Q``@0@`"'_[``
+M`"2#__\`H)`MCX*"P"QC``(48``=`,"@+11``"4`%!@``F`@+0)`*"T`8#`M
+M````#R`9``<\#X``->\`#P`/?#@U[^_^``]\.`/@P"P!X/@)``````,`^"P`
+M0"`MW[\`,`!@$"W?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`.```
+M```D`P`"$$,`1B0#``$40__@``````P"?<:/A(+$"`)\$P`4&```````)G/_
+M_09@`%Z/@H+(`%,0*A1``%O?@H+0`!.9>`!3F"W>9``0$(``#@*`@"W>8@`8
+M)!$#`!!1`"X"0"@M`B*(+P(T&"L`@B`M`H.("@(@,"T,`F5<`I&`+Q*1`#X"
+M49`M"`)\3"05`P#>8P`0`B`P+?Q``P`"49`M_&(#``P"95S^8@`0$A$`*-^_
+M`#`"$8`O)`0#"`P">E8N$0,!`J`8+0(1&`L"0"@M`$`@+11`_^X`8(@M#`)>
+MR@````#?OP`PW[4`*"0#___?M``@)`0`'*Q$````8!`MW[,`&-^R`!#?L0`(
+MW[````/@``AGO0`X"`)\0`*`@"W?F8`8$R``)M^_`#``!C``W[4`*-^T`"#?
+MLP`8W[(`$-^Q``C?L````R``"&>]`#@`%!@`_G``&`!@$"W?M0`HW[0`(-^S
+M`!C?L@`0W[$`"-^P```#X``(9[T`.-YB`!@`%!@``%2@+0@"?!/^=``8#`)>
+MR@`````D!``6)`/__P@"?!.L1```#`)>R@`````D!``))`/__P@"?!.L1```
+M"`)\$R0#__\L@P`#%&``$0``$"V/@X+`%&``#@`````````/(!D`"CP/@``U
+M[P`/``]\.#7O[_X`#WPX`^#`+`'@^`D``````P#X+`!`("T`@!`M`^``"```
+M````````9[W_F`"@&"T````/(!D`"SP/@``U[P`/``]\.#7O[_X`#WPX`^#`
+M+`'@^`D``````P#X+`!`("T`@!`MWZ0`$/QD`!"7I``"I&0``H^D``2L9``$
+M`^``"&>]`&@``````(`0+0"@&"T````/*$(``Q1``!<``!`M9[W_F"`9``P\
+M#X``->\`#P`/?#@U[^_^``]\.`/@P"P`@"`L`>#X"0.@*"P#`/@L`$`X+=^D
+M`!``X!`M_&0`$)>D``*D9``"CZ0`!*QD``0#X``(9[T`:"0$(``#X``(K*0`
+M!``````#X``(+((``V>]__@L@@`#%$``%?^_``"/@H+`%$``$@`%*``````/
+M(!D`#3P/@``U[P`/``]\.#7O[_X`#WPX`^#`+`'@^`D``````P#X+`!`("W?
+MOP```(`0+0/@``AGO0`(``````P"7LH`````W[\``"0$__\D`P`6K$,```"`
+M$"T#X``(9[T`"``````````/WX.#D-^%@Y@`@R`M`*0H*Q2@``,D`O___X2#
+MD`!@$"T#X``(``````````!GO?_X_[\```P"7LH`````W[\``"0#``NL0P``
+M)`+__P/@``AGO0`(`^``""0"``%GO?_X_[\```P"7LH`````W[\``"0#``JL
+M0P``)`+__P/@``AGO0`()`(``1""``,``!`M`^``"`````!GO?_X_[\```P"
+M9W(`H"`M`````&>]__C_OP``#`)>R@````#?OP``)`,`'ZQ#```D`O__`^``
+M"&>]``AGO?_X_[\```P"7LH`````W[\``"0#``*L0P``)`+__P/@``AGO0`(
+M?`7X.]^"@N`0@``2`*(H+9^#@Z@``!`M`*,`'P!@`?0``#`2```H$$2F```\
+M!D,;-,;>@W!F&`/T@`````,<O@"C`!\`8`'T```P$@/@``C\A@`(`^``""0"
+M__\``````^``""0"__]\!?@[WX."X)^"@Z@`HQ@M`&(`'@!``?00@``"```0
+M$OR"```#X``(``````````!\!?@[$(``$9^#@Z@\"$,;-0C>@P``$"W<AP`(
+M<&A``]R&``!P9C`#``@DOG"'(`,`@P`?`&`!]```.!``YA@M`&4H+P/@``C_
+MA8+@`^``""0"__\`````/`/_\#"$``$T8P`C``0B@``#&OPT8P@H`(,8+0``
+M``#<8@``R$7__CP"__`T0@`C``(2_#1""$``@B`M_(4``-Q"^+@#X``(````
+M```````\`A0IP$,?H!1@__XD`P`!X$,?H!!@__L``````^``"```````````
+M/`,4*<!B'Z`40``$)`(``>!B'Z`00/_[)`(```/@``@``A`K`````````0\\
+M`A0IK$`?H````0\#X``(`````&>]_]C_LP`8`,"8+?^_`"#_L@`0_[$`"!#`
+M``O_L````("0+0"@@"T`P(@M9A```68Q__^2!?__#`)]?@)`("T6(/_[9A``
+M`=^_`"``$Q``W[(`$-^S`!C?L0`(W[````/@``AGO0`H9[W_R/^T`"`\%!0I
+M_[(`$`"`D"W_L0`(`,"(+?^P````H(`M_[\`,/^U`"C_LP`8PH(?H!1`__XD
+M`@`!XH(?H!!`__L`````#`)]?B0%`%`"0"`M?!4`.R0%`%`,`GU^?K/X`RYB
+M``H40`"-+F(`9!1``'D\`@*/`!.HNC1"7"D"0"`M``(4>&1"ZX4``A3X-$+U
+MPP*B`!T``*@0`!6HN@`5*``DI0`P#`)]?C"E`/\\!/,S`!48N#2$,S,`%1$X
+M``2L.`!B$"TVM3,S``(HN``5K+@`12@M-K7,S0)E*"\"0"`M`+4`'0``*!!P
+MI?CZ)*4`,`P"?7XPI0#_`D`@+0)U`!T``*@0`!6H^@`5*'@`%:CX`+4H+0)E
+M*"\`!2@`)*4`,`P"?7XPI0#_)`4`.@P"?7X"0"`M`D`@+0P"?7XD!0!^`D`@
+M+0P"?7XD!0!#`D`@+0P"?7XD!0!/`D`@+0P"?7XD!0!.`D`@+0P"?7XD!0!3
+M`D`@+0P"?7XD!0!/`D`@+0P"?7XD!0!,`D`@+0P"?7XD!0!%`D`@+0P"?7XD
+M!0`M`D`@+0P"?7XD!0`^`D`@+0P"?7XD!0`@$B``&"03``H(`GY!@@4`````
+M```"0"`M,*4`_PP"?7YF$``!$B``#P````""!0``%+/_^&8Q__\"0"`M#`)]
+M?B0%``V"!0```D`@+680``$,`GU^,*4`_Q8@__0``````````````0^N@!^@
+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
+M`````-^_``@"`!`MW[````/@``AGO0`0"`*`Z@(`("T`````,*4`_P"`$"T0
+MH`!3,(,`!Q!@`!0`H#`MD(,``!!@`$P`````$*,`@0``&"T(`H$/9(8``0``
+M``"01```$(``1``````0I`!Y``````##("UD0@`!,(0`!Q2`__=D8P`!`*`P
+M+20$``,D`P`(`&8X%"2$__\`QS`E%(#__``#&'@\!_]_/`K_`=Q#```TYW]_
+M``<\.#5*`0$TYW]_``I4.``'/'@`PR`F-.?^_P`$2"<``T`G`(<@+0!G&"TU
+M2@$!`20@)`$#&"0`"E7X`(,8)35*@(``:A@D%&``#P````!D0@`(W$,```##
+M("8``T`G``1()P!G&"T`AR`M`0,8)`$D("0`@Q@E`&H8)!!@__5D0@`(9$+_
+M^)!#```08``,`````!2C``=D0@`!`^``"&1"__\`````$*,`/`````!D0@`!
+MD$,``!1@__L``````^``"```$"T08``0/`;_?Y"#```08``Q```8+0@"@5UD
+MA@`!`````)!$```0@``K``````##("UD0@`!,(0`!Q2`__ED8P`!/`;_?SP%
+M_P$TQG]_-*4!`=Q#````!C0X-,9_?P`%+#@`!C1X-*4!`33&_O\``R`G``4M
+M^`!F&"T`@Q@D-*6`@`!E&"048``*`````&1"``C<0P```&8@+0`#&"<`@Q@D
+M`&48)!!@__ID0@`(9$+_^)!#```08``'`````&1"``&00P``%&#__F1"``$#
+MX``(9$+__P/@``@```````````"%$"4P0P`'%&``+S!#``/<@@``W*,``!1#
+M`"0\"/]_/`G_`34(?W\U*0$!``A$.``)3#@U"']_-2D!`0`(1'@``A@G-0C^
+M_P`)3?@`2!`M-2F`@`!B$"0`21`D%$``"V2$``ADI0`(W((``-RC````2#@M
+M``(P)Q1#``P`YC`D`,DP)!#`__=DA``(`^``"```$"T`````@*,``!1B``8`
+M````9(0``62E``&`@@``%$#_^0````"0@P``D*(```/@``@`8A`C%&``&P``
+M``",@@``C*,``!1B__0\"/[^``(8)S4(_O\\"8"``$@0(34I@(``0Q`D`$D0
+M)!1`_^-DA``$9*4`!(R"``",HP```$@X(0`","<48O_D`.8P)`#),"00P/_W
+M9(0`!`/@``@``!`M`````.A`_]P`````E((``)2C```48O_8)$/^_P`"$"<`
+M8A`D,$*`@!1`_\MDA``"9*4``I2"``"4I@``)$?^_P`"&"<4PO_,`.,8)#!C
+M@(`08/_W9(0``@@"@:UDA/_^``````"`$"T`A2`E,(0`!Q2``"``0!@M/`K_
+M?SP)_P$U2G]_-2D!`=RF````"E0X-4I_?P`)3#@`"E1X-2D!`35*_O\`!B`G
+M`,H8+0`)3?@`@Q@D-2F`@`!I&"048``-`$`8+61C``ADI0`(_&;_^-RF````
+M!D`G`,HX+0$'."0`Z3@D$.#_^&1C``AD8__X`````&2E``%D8P`!@*;__Q3`
+M__R@9O__`^``"```````````,(,`!P`#&``08``?`(!`+8"%```0H``*```0
+M+8"%``$0H``')`(``8"%``(0H``$)`(``H"%``,4H``#)`(``P/@``@`````
+M@(4`!!"@__PD`@`$@(4`!1"@__DD`@`%@(4`!A"@__8D`@`&@(4`!Q"@__,D
+M`@`')`(`"`!#&",`@R`M`````#P'_W\\!O\!-.=_?S3&`0$`!SPX``8T.#3G
+M?W\TQ@$!``<\>``&-?@TY_[_-,:`@-R#````9R@M``,8)P"C&"0`9A@D$&#_
+M^F2$``B`@__X9(+_^`!($"\08/_7``(0`("#__D08``&`````("#__H48``%
+M``````/@``@D0@`"`^``""1"``&`@__[$&``!@````"`@__\%&``!0`````#
+MX``()$(`!`/@``@D0@`#@(/__11@``,``````^``""1"``6`@__^)$(`!@`#
+M&"L#X``(`&(0(1#``%<``!`M`(48)2S'``@P8P`'..<``2QC``$`XQ@D$&``
+M+P````#<AP``W*,``!3C`"MDP__X$&``23P)_W\\"O\!-2E_?S5*`0$`"4PX
+M``I4.#4I?W\U2@$!``E,>``',"<U*?[_``I5^`#I."TU2H"``.8P)`#*,"00
+MP``/9(0`"`/@``ADA/_X`````-R"``#<I@```$E`+0`"."<41@`M`0<X)&1C
+M__@08``H`.HX)!3@`"9DA``(+&(`"!!`__-DI0`(%&``!F1B__^0@P``D*(`
+M``/@``@`8A`C9,+__X"'``"`HP``%&?_^``'."L``A@K`.,X)!#@`!0D"?__
+M"`*"P&1"__\`````@(,``&1"__^`IP````-`*Q3C_^L`R#`D$,``"0``````
+M`C`K9(0``11)__5DI0`!D(,``)"B```#X``(`&(0(P/@``@``!`M"`*"K61B
+M__\#X``(``````"`$"T`H#@M`(`8+0``0"T`J$@M,2D``Q$@`$%E"``!9.<`
+M`1#```MD8P`!D.G__V3&__\5(/_VH&G__P!F,"T09@!^`````&1C``$49O_^
+MH&#__P/@``@``````,`X+2SD`"`4@``1`.`8+0"@&"T`X#`M`````&1C`"!D
+MQO_@_&#_X"S$`"#\8/_H_&#_\!"`__G\8/_X9.3_X##C`!]\!"`'9(0`(`"D
+M*"TL9``0%(``!0!@."W\H```9&?_\/R@``ADI0`0+.,`"!1@``4LXP`$_*``
+M`&3G__ADI0`(+.,`!!1@``4LXP`"K*```&3G__QDI0`$+.,``A1@``0`````
+MI*```&3G__YDI0`"$.``2@`````#X``(H*```"S$``04@``4`,`H+3#&``,`
+MIB@OD.@``&2L__R0Z0`!D.H``I#K``-DYP`$$0``'Z!H``"@:0`!$2``'@&`
+M*"T10``>H&H``A%@`!Z@:P`#%8#_\&1C``0`9C`M$&;_M61E``&0Y```9.<`
+M`1"```B@9````````!"F_ZYDI0`!D.,``&3G``$48/_[H*/__Q#%`"(`````
+M9*4``12F__Z@H/__`^``"`````!DK/_]9&/__V6,``%D8___98P``61C__\!
+MAC`M$,#_FF1E``0PI``'$(#_F0#`0"T(`H-2)`D`!0`````0@/^5``````$H
+M("]E!___`(8@+62E``$`9"`M`.!`+:"@__\4X/_V,(0`!P/@``@``````^``
+M"```````````WX:`H"0'``$(`H-D9,8`F!"``"H`@!`M9$D``0"@&"V!*O__
+M`````&1C``&`:/__$0``!P`````52/_[`````!#@`!L`````"`*#9@$@$"T5
+M0``'92@``0@"@Y3\P```%.``!V1C``$!`$@M92@``0"@&"V!"___`6!0+61C
+M``&`9___%.K_]@`````18``$`````*$@```#X``(_,@`````0"T#X``(_,@`
+M``````#\R0```^``"*!```#<P@``%$#_UF1)``$#X``(``````/@``@``!`M
+M"`*#9"0'``%GO?_@`*`0+=^.@)#_LP`8_[(`$/^Q``@(`H.A_[````!@$"UD
+M0P`!D&C__P'(2"V1*0`!Z2/_^B0)`"T1"0!6)`D`*Q$)`%@``(@M`.`0+7P"
+M(0040``)`."`+20"`#`1`@!4+.D``20"``HD$``*`.D0"@#I@`H`0#@M)`S_
+M_P`1D"L`#&?\``!8+66,__\``%`M`BQ@+209`#<!D``?`@`!]"08`%<``'@0
+M``!@$@`/>````````<A(+24"_]"!*0`!,2T`!#$I``,5H``%.3,``0,`$"T1
+M(``5`S,0"@$"$"-Q3$`J`8J8*P`+;\(!XD@J`2A()`!'0"H1```,`FUH)16@
+M``8D"___%2``!`````!Q4%`#)`L``0!*4"UD8P`!"`*#QI!H__\`````)`+_
+M_Q%B``X```````H0+Q#```0!41`*%6``$0````#\Q0``W[,`&-^R`!#?L0`(
+MW[````/@``AGO0`@`````"0"__]^4O@#``(7_"0%`"*LA0``9$+__Q#`__("
+M0A`M"`*#[&1E__^02``!9$,``@@"@ZLD$0`!D$@``0@"@ZMD0P`"D&H``"0"
+M`%@Q2@#?$4(`!R0"``@D$``(`.D0"@#I@`H(`H.W`$`X+0````"0:``!)!``
+M$&1C``((`H.W)`<`$```````@!@M`*`0+=^$@*``P#@M`&`H+0@"@Y@`0#`M
+M``````"`&"T`H!`MWX2`H`#`."T`8"@M"`*$)@!`,"T`````9[W_Z`"@$"W?
+MCX"0_[(`$/^Q``@(`H0O_[``````````8!`M9$,``9!H__\!Z$@MD2D``>DC
+M__HD"0`M$0D`6B0)`"L1"0!<``"0+0#@$"U\`B$$%$``%R0,__\D`@`P$0(`
+M#"SI``$1(``1/`P#,R08``4UC#,S)!$`"@`,9+@D!P`*-8S,S0`,9'@(`H19
+M98R9F9!J```D`@!8,4H`WQ%"`$@D#``!%2``3B08``<D#/__`."(+0&'`!\`
+MX`'T``#`$```8!(`&,````!8+0``4"TD$``W)!D`5P`````!Z$@M)0+_T($I
+M``$Q+0`$,2D``Q6@``4Y+@`!`R`0+1$@`!4"#A`*`0(0(W%,0"H!BG`K``MO
+MP@,"2"H!*$@D`$=`*A$```P!S6@E%:``!B0+__\5(``$`````'%14`,D"P`!
+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
+M)`+__P.@*"VGH@`2#`*$I&>G`*@H0___%&``"R0#`(L2```$W[\`V-^C``"@
+M8```W[\`V-^Q`-#?L`#(`^``"&>]`.``````$@#_^:XC```(`I_!WZ,``"0#
+M`(LD`O__"`*?PJXC``!GO?_8`.`0+?^_`"``H%`MW.@```"`*"W<Z0`(`,`X
+M+=Q#`!`!0#`MW$(`&-^$@*#_J````Z!`+?^I``C_HP`0#`*?F/^B`!C?OP`@
+M`^``"&>]`"@`````9[W_X/^R`!``@)`M_[$`"`"@B"W_L````,"`+1"```3_
+MOP`8C((`4!!``%D`````A@,`$(X$`"@P8@`($$``3*X$``S>!``8$(``20``
+M```P8B``$$``'C(Q`/_>`@``C@,`(`!$("\`!"```(,8*A!@`",DA``!C@,`
+M#&1%``'^!0``)&/__ZX#``R@40``C@(`(!!$`"D"0"`ME@(`$'(C`JX`8A`D
+M%$``)`)`("W?OP`8`B`0+=^R`!#?L0`(W[````/@``AGO0`@`````(X"`*0T
+M8R``I@,`$(X#`"!\`FM$K@(`I-X"````1"`O``0@``"#&"H48/_?)(0``0)`
+M("T,`E[:`@`H+11``"HD!``!W@(``(X#``QD10`!_@4``"1C__^N`P`,H%$`
+M`(X"`"`41/_9`D`@+0P"7MH"`"@M)`/__]^_`!C?L@`0`B(8"M^P````8(@M
+M`B`0+=^Q``@#X``(9[T`(``````"0"`M#`*@<@(`*"T40``(A@,`$`@"G_K>
+M!``8``````P"7]@`````"`*?\X8#`!`T8P!`)`(`":8#`!`D$?__"`*@$JY"
+M```(`J`2)!'__P"`$"T`H#`MWX2`H`@"G^8`0"@M`````*^`@ZQGO?_P_[``
+M``"`@"W_OP`(`*`@+0#`*"T,`GOR`.`P+20#__\00P`%CX.#K-^_``C?L```
+M`^``"&>]`!`08/_[W[\`"*X#``#?L````^``"&>]`!#?@H"@9[W_Z/^Q``@`
+M@(@M_[````"@@"T00``$_[\`$(Q#`%`08``P`````(8"`!`P0P`($&``$C!#
+M`!#>`P`8$&``/S!%`H#(0``9`````(X"`""N```,``(0(ZX"`"@08``:```0
+M+=^_`!#?L0`(W[````/@``AGO0`8`````!!@`#DP0P`$%&``&P````#>`P`8
+M-$(`"'P"%B`48/_JI@(`$`@"H,(P10*``````#!"``(40``"```@+8X$`""N
+M!``,%&#_Z```$"V6`@`0W[\`$-^Q``C?L```<$(!^@/@``AGO0`8#`)?V`!`
+M("T(`J!^A@(`$-X%`%@0H``(`````&8#`'00HP`$``````P"82`"("`MA@(`
+M$/X``%C>`P`8)`3_VZX```@`1!`D?`(6(`@"H)?^`P```````"0$`@`0I/_`
+M`B`@+0P"J4("`"@MA@(`$,A`_]7>`P`8"`*@AXX"`"`(`J",)`+__V>]__C_
+MOP``#`*U("0$``8,`F=R)`0``0"`*"T``#`M```@+0@"NU(``#@M`````&>]
+M_ZC_LP`@WY.`F/^W`$`D%____[8`."06``'_M``H9G0!^/^R`!@`H)`M_[\`
+M4/^^`$C_M0`P_[$`$/^P``C_I````````-YQ`?@"@*@M$B``$]^_`%".,``(
+M)A#__P8```P\`A`+$D``&0````!F`@`@``(0^`(B$"W<0@$0$%(`$P`````F
+M$/__%A?_]CP"$`MD0J:X%$``-]^_`%#?O@!(W[<`0-^V`#C?M0`PW[0`*-^S
+M`"#?L@`8W[$`$-^P``@#X``(9[T`6`````".)0`(9@0``@`$(/@")"`M)*7_
+M_Q"P`![<@@``_(```!!`_^4"%C`$CB0#$`"&("00@``3CCX`"(XH`Q0`$"#X
+M`B0@+0$&,"04P``3W(4!$`!`^`G?I```CB(`"!1>_\8`````WJ(``!!1_]0F
+M$/__WG$!^`@"H.X"@*@M``````!`^`D`````"`*A)8XB``@(`J$6KB4`"`!`
+M^`D`H"`M"`*A)8XB``C>(@``CB0`"``"*"LLA``!`*0@)!"```8`````_J(`
+M``P"J:X"("`M"`*@[MZQ```"(*@M"`*@[@!`B"T`````KX"#K&>]__#_L```
+M`("`+?^_``@,`GR0`*`@+20#__\00P`%CX.#K-^_``C?L````^``"&>]`!`0
+M8/_[W[\`"*X#``#?L````^``"&>]`!",K``49[W_R(R#`!0``!`M_[4`*`"`
+MJ"W_OP`P_[0`(`!L&"K_LP`8_[(`$/^Q``@48`!Z_[```"6,__]DL``899,`
+M!@&`B"T`$YBX?).0"@"SF"V.8@``)$(``0)"`!L`0`'T``"0$A)``#ADE``8
+M`@`P+0*`&"T``%`M```0+63&``0!0``3C,C__`)F("N,:0``9&,`!#$'__\`
+M"&P"</(``#$K__\``%`2``E,`@`*1`(Q2O__`0``$P!*$"-QL@```$LX(0``
+M0!(`!U0#,.?__S$+__\!*Q`C`$H0(0`(5`(``D0```(4.P$'."40@/_CK&?_
+M_&6,``8`#&"X`JQ@+8V"```40``098+__`*"&"L08``,`````(V#__P08``&
+M9$+__`@"H:^NL0`4C$,``!1@``1D0O_\`H(8*Q1@__LF,?__KK$`%`P"K#("
+MH"`M!$``,```*"TF4@`!`H`8+0````",:```9A``!(X'__QD8P`$`G`0*S$$
+M__\`"$0",.;__P`'/`(`IC`C`0<X(P#$,"$`!B0#,,;__P#D*"$`!20```4L
+M.P"&,"400/_MK&;__&8B``8``A"X`J(0+8Q#```48``3`````&1#__P"@R`K
+M$(``#@````",0O_\$$``"&1C__QD8P`$"`*AXJZQ`!2,8@``%$``!0````!D
+M8__\`H,0*Q1`__HF,?__KK$`%`)`$"W?OP`PW[4`*-^T`"#?LP`8W[(`$-^Q
+M``C?L````^``"&>]`#C<@@!@9[W_,/^^`+@`P/`M_[8`J`"@L"W_M0"@`."H
+M+?^T`)@!`*`M_[(`B`$@D"W_L0"`1#%@`/^P`'@`@(`M_[\`P/^W`+#_LP"0
+M$$``"?>T`,B,@P!H)`8``0!`*"VL0P`(`&88!`P"J=RL0P`,_@``8``1F#\&
+M8``[)`(``:Z```!^8U4`)`('_Q!B`!I$L:``1*```$8@H#)%```V)`(``:ZB
+M```\`A`,$D``!&1"?&`\`Q`,9&-\8?Y#``#?OP#`W[X`N-^W`+#?M@"HW[4`
+MH-^T`)C?LP"0W[(`B-^Q`(#?L`!XU[0`R`/@``AGO0#0`````"0#)P\\`A`.
+MKJ,``#P#$`Y^,9@!9$*,8&1CC%`20/_J`'$0"H!%``-D0P`(W[\`P&1$``/?
+MO@"XW[<`L`"%&`K?M@"HW[4`H/Y#``#?M`"8W[,`D-^R`(C?L0"`W[``>->T
+M`,@#X``(9[T`T`````!^<_``KH(```@"H@U^<?@&1+%@``(`("T#H"@M#`*M
+M-F>F``0`0*`M?F)5`Q1``-X`$3`_CZ0`!(^B````1!`A*$/[[Q1@`?XD`_ON
+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
+M9@(`=!"B``,`````#`)A(`(@("W^``!8W@4`>!"@``0`````#`)A(`(@("W^
+M``!X#`)@0J8``!#?OP`8`D`0+=^Q``C?L@`0W[````/@``AGO0`@``````P"
+M8$(``)`MW[\`&-^Q``C?L````D`0+=^R`!`#X``(9[T`(``````,`E_8`B`@
+M+88"`!`40/_*`B`@+0@"IM0``````````-X%`!@,`F$@`B`@+0@"IKW>!0!8
+M``````"`*"T(`J::WX2`H`````"$P@`09[W_N/^T`"@`@*`M_[,`(`"@F"W_
+ML``(,$,@`/^_`$``P(`M_[8`./^U`##_L@`8%&``!O^Q`!",PP"D-$(@`*3"
+M`!`T8B``K,(`I`P"J18`````)`,``1!#`%@F8O__`H`@+0.@*"T"8#`M#`*Z
+MUF8'`)P`0*@M)`+__Q*B`#'?OP!`$J``)``````#H(@M``"0+0@"IR(D%@`*
+MW@,``)(D``"@9```W@,``&1C``'^`P``9E(``0)5&"L08``59C$``8X#``PD
+M8___!&'_\ZX#``R.`@`H`&(8*A1@`"4"@"`MW@(``)(C``"@0P``W@(``)!#
+M```0=@`V9$(``692``%F,0`!`E48*Q1@_^W^`@``W[\`0`)@$"W?M@`XW[4`
+M,-^T`"C?LP`@W[(`&-^Q`!#?L``(`^``"&>]`$@`````E@,`$-^V`#C?M0`P
+M-&,`0*8#`!#?M``HW[,`(-^R`!C?L0`0W[``"`/@``AGO0!(DB4```P"G^8"
+M`#`M<$+_[A!`_\QF4@`!W[\`0"0"___?M@`XW[4`,-^T`"C?LP`@W[(`&-^Q
+M`!#?L``(`^``"&>]`$@`````+$(`_Q!`_Z@"@"`MH[,```@"IQ0D%0`!)`4`
+M"@P"G^8"`#`M"`*G4G!"_^X`````WX*`H&>]_^@`H#`M_[``"`"`@"T00``)
+M_[\`$(Q#`%`48``'W[\`$/^E```,`E_8`$`@+=^"@*#?I@``W[\`$`(`*"W?
+ML``(`$`@+0@"IO!GO0`8`````(S#``QGO?^H```0+?^U`#``P*@M_[\`4/^^
+M`$C_MP!`_[8`./^T`"C_LP`@_[(`&/^Q`!`08``G_[``"(2C`!``@*`M,&(`
+M"!!``"\`H)@MW*(`&!!``"T"@"`M,&(``A!``#7>L`````"0+0``B"TD%@0`
+M`````!8@``8N)P0!WA$`"-X2```2(/_]9A``$"XG!`$"P!`M`B<0"P*`("W>
+M90`P`D`P+0!`."W>8@!``$#X"0`'.``80`$/`D*0+8ZC``P"(H@O`&(0(Q1`
+M_^JNH@`,W[\`4-^^`$C?MP!`W[8`.-^U`##?M``HW[,`(-^R`!C?L0`0W[``
+M"`/@``AGO0!8``````*`("T,`J!R`F`H+1!`_]&&8P`0-&,`0"0"__^F8P`0
+M)`,`"0@"I[>N@P```````.A@`"<``+@M``"0+0``B"T6(``&,&("`-X1``C>
+M$@``$B#__680`!`P8@(`$$``7HYV``S>9````C80*Q!``(`"P+@M`!$8``!@
+M\"T`8+`M`&"X+?^C```"0"@M#`)F"@+@,"W?HP``CF0`#-YB````@Q@CKF,`
+M#`!7."W^9P``CJ(`#`)>D"T"/H@O`%:P(Q+``#>NM@`,"`*GU(9C`!```!@M
+M``"0+0``B"T`````%B``TP````#>$0`(WA(``!(@__UF$``0`D`@+20%``H,
+M`F3<`B`P+1!``-MD0@`!`%*X+P`7N``"-S`K`B`0+8YG`"`"YA`*CGX`#-YD
+M````0#`MWF(`&``&,``#Q_`A`\8H*@!$$"L`HA`D%$``7`#`L"T`QQ`J%$``
+M,P)`*"W>8@!``H`@+=YE`#``0/@)`D`P+1A``)X`0+`M`O:X(Q+@`#,D`P`!
+MCJ(`#`)6D"T"-H@O`%:P(Q;`_]&NM@`,W[\`4```$"W?O@!(W[<`0-^V`#C?
+MM0`PW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`6`````#>9```WF(`&`!$
+M$"L00``#`M$0*Q1``)0"P/`MCF<`(`(G$"L40``D`D`H+=YB`$`"@"`MWF4`
+M,`!`^`D"0#`M&$``=0!`L"T(`J?P`$#P+0P"9@H"]K@CCF,`#-YB````=A@C
+MKF,`#`!6$"W^8@``%N#_SR0#``$"@"`M#`)>V@)@*"T40`!D```8+0@"J">.
+MH@`,`````#!B!(`40``A```````1\``"P!@M"`*GY0/`L"T``````!&P``+`
+M,"T,`F8*`L#P+8YC``S>8@```'88(ZYC``P`5A`M"`*G\/YB`````````D`H
+M+0/`,"T,`F8*_[X``-YB```"@"`MWZ,```)@*"T`0Q@M#`)>VOYC```40`!`
+M`\"P+0@"J"0"]K@CCF(`(-YE`!@``C!``,(0(0"%("\`!"````(WP@#"$"%D
+MAP`!``(00P#Q."T`0$`M`$`P+0!'$"L00``%`(#P+22$``$`$1```((P(0#`
+M0"TP8P0`$&``'0*`("W_J```#`)BF`#`*"W?J```$$``'P!`L"W>90`8`$`@
+M+?^H```,`F5<`\`P+99B`!#?J```)`/[?P!#$"0T0@"`IF(`$``1&``"WB`M
+M`1X0(P!@N"W^=@`8`&#P+?YD````8+`MKF@`(`@"I^6N8@`,#`*R$O^H``#?
+MJ```%$#_\0!`L"W>90`8#`)A(`*`("TD`@`,KH(``)9C`!`D`O__W[\`4-^^
+M`$C?MP!`-&,`0*9C`!#?M@`XW[4`,-^T`"C?LP`@W[(`&-^Q`!#?L``(`^``
+M"&>]`%@48/\Z`C<P*P@"J`,"0"`M`D`H+0P"9@H"P#`MWF(```*`("T"8"@M
+M`%80+0P"7MK^8@``$$#_$@`````(`JC!EF,`$```````$;@`"`*H"B;W``$`
+M````9[W_Z/^P````P(`M_[\`$!#``!__L0`(/`40#@#`("UDI8QH#`*!BCP1
+M$`T40``(9C%Z,-^_`!`"(!`MW[```-^Q``@#X``(9[T`&``````"`"`M#`*!
+MB@(@*"T00/_VW[\`$#P%$`T"`"`M#`*!BF2E#]C?OP`0W[`````"B`L"(!`M
+MW[$`"`/@``AGO0`8W[\`$#P1$`W?L```9C%Z,`(@$"W?L0`(`^``"&>]`!@\
+M`A(2`^``"&1"$3```````^``"(^"@4@\`A(2`^``"&1"$5```````^``"```
+M$"T\`A(2`^``"&1"$7```````(`0+0"@,"W?A("@"`*HY@!`*"T`````/`(2
+M$@/@``AD0A%P`````*^`@ZQGO?_P_[````"`@"W_OP`(`*`@+0#`*"T,`GS@
+M`.`P+20#__\00P`%CX.#K-^_``C?L````^``"&>]`!`08/_[W[\`"*X#``#?
+ML````^``"&>]`!"$H@`09[W_</^P`&@`H(`M_[\`B/^S`(`P0P`"_[(`>!1@
+M`#'_L0!PA*4`$@2@`!$`@)`M#`*[T`.@,"T$0``,CZ(`!#0#@``P0O``.%,@
+M`!!#`#$N<P`!E@(`$"01!``T0@@`"`*I9J8"`!``````A@(`$#!#`(`T0@@`
+MI@(`$"01!``D`@!```"8+0!#B`L"0"`M#`)BF`(@*"T00``T/`00"98#`!!D
+MA'Y(_D0`6/X"```T8P"`I@,`$/X"`!@68``AKA$`(-^_`(C?LP"`W[(`>-^Q
+M`'#?L`!H`^``"&>]`)``````W[\`B&2B`'?\H@``_*(`&"0"``'?LP"`W[(`
+M>-^Q`'#?L`!HK*(`(`/@``AGO0"0W@,`2#P"$`ID0@*X%&+_S"0#!`"6`@`0
+MK@,`B"01!``T0@0`"`*I9J8"`!``````A@4`$@P"N^8"0"`M$$#_W=^_`(B6
+M`@`0-$(``0@"J72F`@`0`````(8"`!`P0P(`%&#_U-^_`(@T0@`"9@,`=Z8"
+M`!`D`@`!_@,``/X#`!@(`JETK@(`(`"`*"T(`F*8WX2`H```````@"@M"`)A
+M(-^$@*``````W((`>&>]_^C_L0`(`*"(+?^P````@(`M$$``#_^_`!``$1CX
+M`$,8+=QB```00``2`@`@+=Q$``#\9```K$``%*Q``!#?OP`0W[$`"-^P```#
+MX``(9[T`&"0%``@,`KN@)`8`011`_^[^`@!X"`*IPP``$"T`````)!```0(P
+M@`0D!0`!)@;__V3&``@,`KN@``8PN!!`_^S?OP`0K%$`"`@"J<&L4``,$*``
+M"`````",H@`(W(,`>``"$/@`8A`MW$,``/RC``#\10```^``"```````````
+M9[W_T`#@`!/_L```9*,`&(RP`!0``$`M_[(`$`"`D"W_L0`(`*"(+?^_`"C_
+MM``@_[,`&`````",:0``)0@``61C``0!$%`J,2?__P`)3`)PY@`````X$@`'
+M7`(PY___`6``$W$F`````$@2``E<```)I`(!9S@A`H``$Q5`_^ZL9__\$H``
+M#-^_`"B.(@`,`@(0*A!``!`"0"`M9@(`!B80``&N,``4``(0N`(B$"VL5```
+MW[\`*`(@$"W?M``@W[,`&-^R`!#?L0`(W[````/@``AGO0`PCB4`"`P"J;(D
+MI0`!CB8`%&8E`!!D1``0`$"8+63&``(,`F5<``8PN(XB``C>0P!X``(0^`!B
+M$"W<0P``_B,``/Q1```(`JH/`F"(+0`````\`SCC).(`"#1CCCEGO?_`<$,8
+M`_^Q``@``A?#`("(+?^T`"`!`*`M_[,`&`#@F"W_L@`0`,"0+?^P````H(`M
+M_[\`.``#('__M@`P`((@(RB"``(40``__[4`*"0"``$``"@M```````"$$``
+M1$@J%2#__22E``$,`JFR`B`@+20$``$J0P`*K%0`&!1@`"ZL1``4)E7_]F86
+M``E^M?@#`L"@+6:C``H"`X`M`````&:4``$"("`M@H?__P!`*"TD!@`*#`*I
+MZ"3G_]`6D/_X``````+5@"UF$``"`E,8*A!@``XF<___`G*0(WY2^`-F4@`!
+M`A*0+680``$"("`M@@?__P!`*"TD!@`*#`*IZ"3G_]`6$O_Y9A```=^_`#C?
+MM@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`$``````9A``"@@"
+MJFDD$@`)"`*J4```*"T``````(`0+0`$'`!\`G@'`((8"RQ"``$``A`C`&`@
+M+7P$N`04@``#,$(`$"1"``@``QH``&`@+7P$V`04@``$`&`@+0`#&0`D0@`$
+M`&`@+7P$Z`04@``#```````#&(`D0@`"!&``!"1$``%\8P>`)`(`(`"#$`L#
+MX``(``````````",A0``,*(`!Q!```L`!1P"Z*``(@``$"TPH@`"%$``)@``
+M````!2B")`(``@/@``BLA0```````#"B__\`HA@++$(``0`"$",P90#_%*``
+M`S!"`!`D0@`(``,:`C!E``\4H``$,&4``R1"``0``QD",&4``Q2@``,`````
+M)$(``@`#&(+H8``)```````#&$(48``%`````"0"`"`#X``(```````````D
+M0@`!`^``"*R#``````````4H0B0"``$#X``(K(4``&>]__#_L````*"`+?^_
+M``@,`JFR)`4``=^_``@D!``!K%``&*Q$`!3?L````^``"&>]`!``````C,,`
+M%&>]_\B,H@`4_[(`$/^Q``@`P(@M`$.0*@!`."W_M``@`+*("@!BH"H`LC`+
+M_[,`&`!#F"H`=!`+`',X"XXE``P`P)`M_[4`*`!`H"T`X)@MCB(`"`#TJ"'_
+ML````+4H*O^_`#`"H(`M#`*IL@"B*"%FK@`&``YPN&1-`!@`3G`M`:X8*Q!@
+M``@"H,@M`:`8+0````"L8```9&,`!`!N("L4@/_\`````&:/``9F:P`&``]X
+MN``+6+AF3``8`D]X+68X`!@!CQ@K$&``1P(K6"T`````C8@``#$*__\10``?
+M``A$`@&@("T#`!@M"`*K*0``*"T!("`MC&@``&2)``2,AP``9&,`!`!KB"LQ
+M$O__``A$`G)*F`(PYO__<0J0`@`'/`("9C`A`,4P(0)'*"$`!I0",,;__P"R
+M*"$`!3P```4L`@#F,"46(/_JK2;__*R%``2-B`````A$`A$``!X!H"@MC:0`
+M``,`&"T``$@M"`*K2P"`,"T``````.`H+91J``(`!C0",(3__V2G``1D8P`$
+M<4B(`@!K4"L")C`A`,DP(0`&C```!DP"`B0@):SD__R4<?_\C*8`!'(HD`(P
+MQ/__`D0@(0")("$50/_K``1,`JRD``1EC``$`8\8*Q1@_[QEK0`$&@``#F<C
+M``8``QBX`$,8+8QC__P08``&9<[__`@"JW7?OP`PC<,``!1@``7?OP`P)A#_
+M_Q8`__MESO_\W[\`,*Q0`!3?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(
+M9[T`.&>]_]@PP@`#_[,`&`"`F"W_L@`0`*"0+?^P````P(`M_[\`(!1``#3_
+ML0`(`!"`NQ(``"#?OP`@WG$`<!(@`#<`````Z@``"@```````````!"`>Q(`
+M`!??OP`@WB,``!!@`!L"(#`MR@#_^0!@B"T"0"@M`B`P+0P"JNH"8"`M$D``
+M&P````".0P`(`!"`>]YD`'@``QCX`(,8+=QD``#^1```_'(``!8`_^P`0)`M
+MW[\`(`)`$"W?LP`8W[(`$-^Q``C?L````^``"&>]`"@"("@M#`*JZ@)@("W^
+M(@```$"(+0@"JX_\0`````````@"JY(`0)`M)$+__SP&$`X``A"X9,:-B'S"
+M,`H,`JGH```X+0@"JXD`0)`M`F`@+0P"JMPD!0)Q_F(`<`!`B"T(`JN/_$``
+M`(RB``QGO?_(_[,`&(RS`!3_M``@``:A>_^P``#_M0`H`G28(?^R`!`F<``!
+M_[$`"`"`D"W_OP`P`*"(+8RE``@`4"`J$(``!@#`J"T```````(00`!0."H4
+MX/_])*4``0P"J;("0"`M`$`@+1J```UD0P`8)I3__V1'`!Q^E/@#`!00N`#B
+M."VL8```9&,`!!1G__T`````9H,`!P`#&+@`@Q@MCB@`%#*U`!]F)@`890@`
+M!@`(0+@2H``I`BA`+20"`"```#@M```H+0`58```51`C`````(S+````9T@M
+M9,8`!&3G``0`R%`K`8M8!`%E*"6M)0``C,7__!5`__8`12@&K24`!"9S``("
+M98`+CB,`""80___>10!X`(`0+:R0`!3?OP`P``,8^-^U`"@`HQ@MW&0``-^T
+M`"#?LP`8_B0``-^R`!#\<0``W[```-^Q``@#X``(9[T`.`````!DQ@`$9&,`
+M!(S'__P`R"@K$*#_YZQG__QDQ@`$9&,`!(S'__P`R"@K%*#_]:QG__P(`JP1
+MCB,`"(R"`!2,HP`4`$,0(Q1```UD8P`&9(@`&``#&+@`@R`M`*,H+62$__QD
+MI?_\C(,``(RF```49@`&`00X*Q3@__IDA/_\`^``"````````````&88*R0$
+M__\D`@`!`^``"`"#$`L`````9[W_V/^Q``@`H(@M_[````#`*"W_LP`8`("`
+M+?^R`!`"("`M_[\`(`P"K#(`P)@M$$``4P!`D"TH3@```@`@+0)@@"T`$I?"
+M`BZ`"@)NB`H,`JFRC@4`"(X)`!2.+@`49@,`&*Q2`!!F*``892P`!F1'`!AE
+MS@`&``Q@N``.<+@"#&`M`BYP+0``*"T`````C&H``&3G``2-!@``90@`!&1C
+M``0!#E@K,43__P`*5`(PS?__`(4H(0"M(",`!C0"`48H(P`$;`,`K2@A,(3_
+M_P`%-```!2P[`,0@)15@_^RLY/_\`.!0+0!L,"L0P``6`&!8+0````",9@``
+M9.<`!&1C``0`;$`K,,3__P`&-`(`A2`A``0L`S"$__\`IB@A``4T```%+#L`
+MQ"`E%0#_\JSD__P`"S@G`.PX+7P'"`=DYP`$`4<X+12```5DY__\9.?__(SC
+M```08/_])2G__]^_`"#?LP`8W[(`$-^Q``C?L```K$D`%`/@``AGO0`H`@`@
+M+0P"J;(``"@MW[\`(-^S`!@D`P`!W[(`$-^Q``C?L```K$``&*Q#`!0#X``(
+M9[T`*`````!$(F``/`/\P``"$#]\0E4```(5``!#$"$80``#``(@/`/@``A$
+MI`````(8(W!C73HH8@`4%$``#```("TH90`S$*``!20"``$D`@`S`$,8(R0"
+M``$`8A`$?$3X!P/@``A$I````````#P$``@`9!@'``,@/`/@``A$I```````
+M`&>]_]#_L```C)``%/^Q``C_LP`89),`&/^T`"!F$``&`!"`N`"@H"W_L@`0
+M`)"`+8X1__QF$O_\_[\`*`P"JHH"("`M)`0`(`""(",H0P`+$&``&:Z$```D
+M!0`+/`,_\`"B*","<I`K`+$P!@``("T`PQ@E$D```P`#&#R.!/_X`*0@!M^_
+M`"@D0@`5W[0`(`!1B`3?LP`8`B0@)=^R`!!\@_@'W[$`"$2C``#?L````^``
+M"&>]`#`"<A@K$&```P``("V.!/_X9A+_^"1#__408``;W[\`*``#*``D`P`K
+M`&(0(P"QB`0\`S_P`$0P!@(C&"4"<I@K`&88)0``,"T28``$``,8/(Y&__P`
+M1C`&W[\`*`"D(`3?M``@`(8P)=^S`!A\P_@'W[(`$$2C``#?L0`(W[````/@
+M``AGO0`P/`(_\`(BB"4`@!@MW[0`('XC^`;?LP`81*,``-^R`!#?L0`(W[``
+M``/@``AGO0`P9[W_R/^T`"@`H*`M_[,`("0%``'_L@`8`,"8+?^Q`!#_L``(
+M_[\`,`P"J;)$,F```$"`+0`2$#]\4?```!&-`A(@``-\0I@`/`,`$`!#$"4`
+M$I``$D``(*^B``"OL@`$#`*JJF>D``040``SC[(``(^C``2N`P`8KA(`'``2
+MD"LF4@`!%B``':X2`!0D0OO.9D0`!:Z"````!""X?@0@"@P"JHH`$I%`W[\`
+M,-^T`"C?L0`0`D(0(ZYB```"`!`MW[,`(-^R`!C?L``(`^``"&>]`#@`````
+M`Z`@+0P"JJHD$@`!)`,``:X#`!2/HP``)$(`(!(@_^6N`P`8W[\`,"8Q^\TD
+M`P`U`B*((:Z1````8A`CKF(```(`$"W?M``HW[,`(-^R`!C?L0`0W[``"`/@
+M``AGO0`XCZ0`!``"&",`<A@$`%*0!J^R````9!@E"`*M5*X#`!AGO?_8_[$`
+M$`"@B"W_OP`@9Z4`!/^R`!@`@)`M#`*LVO^P``@#H"@M`B`@+0P"K-I$,```
+MCB,`%(Y%`!2/I@`$`*,H(X^C````!2E``,,8(P!E&"$88``.1"(````0*#\`
+M`QT`W[\`(`!E&"%\</@&1*(0`$2P"`#?L@`8W[$`$-^P``A&(@@#`^``"&>]
+M`"@``A`_``,=``!#&"-$(@``W[\`($2P"`#?L@`8?&+X!D2B$`#?L0`0W[``
+M"&>]`"@#X``(1B((`RB"`!@40``(UX&!6->`@5`DA/__%(#__D8A``(#X``(
+M```````````\`A`.``0@^&1"C,`#X``(3((``0````",R``4)*7__P`%24-D
+MP@`892D``64(``8`"4BX``A`N`#(0"T`2!@K$&``$@")2"T`@!@M`````&1"
+M``1D8P`$C$?__`!(*"L4H/_[K&?__`$&$"]D0O_G?`((!V1"``0`@B`M`(D0
+M*Q!```5DA``$K(#__`")$"L40/_]9(0`!`/@``@`````C((`%``%,4,`1D`J
+M$0``%&2#`!@`0#`M9,8`!@`&,+@`AB`M`&00*Q!``!P`````C(7__"0"``$4
+MH``'9(3__`!D$"L00``$9(3__(R"```00/_[)`(``0/@``@``````,(0*A!`
+M_^P`````,*4`'Q"@_^EDQP`&``4H```'.+A\AS@*`*=`!@"H*`00I__B)`(`
+M`0/@``@``````^``"```$"T`````9[W_L/^V`#``@+`M_[\`2/^^`$#_MP`X
+M_[4`*/^T`"#_LP`8_[(`$/^Q``@0@`!V_[```#""``,40`!S/!(4*<)"'Z@4
+M0/_^)`(``>)"'Z@00/_[`````#P0%"D``/`M``"(+694'ZAF$!^P)!?_P"03
+M`!0"'A`M)`,`"`!`J"W<1@``%,``!R1C__\48/_\9$(`"`*@("T"P"@M#`)E
+M7"0&`(```!`M`J(P+0+"&"W<Q@`XW&,`.!3#`$5D0O_X%%?_^@*B,"U\`@`[
+M*$0``"1#`#\`1!@*`!%`^``1.CAF,0`!`0<H+0`1(CADI0"(``,9@P*%*"T`
+M`QCX`*,8+0`1@/@"!(`M)`D``=QD````24@4?I"`"@``$"TD!O_``20@)?QD
+M```F$``!``````"B("T"PA@MW(0`.-QC`#@4@P`-9$+_^!1&__D!!R`M```H
+M+0*$("TD!@"`#`)F8&2$`(@`$1CX`!$2.`!B$"T"@A`MK%```````0^N0!^H
+M```!#P`1$/@`$8HX`%$0+0(`&"T"@J`MCH(``!1#__[?OP!(W[X`0-^W`#C?
+MM@`PW[4`*-^T`"#?LP`8W[(`$-^Q``C?L````^``"&>]`%`F,0`!%C/_IV?>
+M`0@```$/KD`?J````0\\!!`./`80#CP'$`QDA(V8)`4`DF3&CB@,`EZ:9.=\
+M8#P$$`X\!A`./`<0#&2$C9@D!0!L9,:.*`P"7IIDY[D(9[W_N"0#`"W_LP`8
+M`("8+?^P``#_OP!`_[<`./^V`##_M0`H_[0`(/^R`!#_L0`(@*(``!!#`((`
+MH(`M)`,`,!!#`&=DH@`"#`*"'`(`("T00`"=)`(`,(($```4@@`&)`,`,&80
+M``&"`@``$$/__F80``%F$/__```H+20&`(`,`F9@`F`@+0P"@AP"`"`M```8
+M+0`"$``00`!%`$"(+1A``(<`````WX>`D(((````Z!@MD&,``3!C`$008`!.
+M```8+0@"KMYF!0`!`````("D````Y"`MD(8``3#&`$00P`!%9*4``21C``$`
+M<3`J%,#_]P`````F)/__*0,`.!!@`&D`!""`*0,`-!1@`&@D@P`")(,``RAC
+M!`$08`!Q/`00#!H@`%(D5O__`A&0+7P6&`0D%0`6`C:P(P@"KOLFUO_P````
+M`/YW``!F<P`(HE0``!(V`$9F4O_P)C'_\```$"TJ)``````H+0(D$`HD!@`0
+M@E0``*)`````0"`M#`*$'@($("T,`E[*`$"X+8Q#```4=?_L/`00##P%$`YD
+MA+F0#`)^O&2ECD@D`__^W[\`0`!@$"W?MP`XW[8`,-^U`"C?M``@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0!(D*,``7P#*41\`QP@.&,`6`@"KK8`0X`*/`00
+M##P%$`YDA+E(#`)^O&2ECDC?OP!`W[<`."0#__[?M@`P`&`0+=^U`"C?M``@
+MW[,`&-^R`!#?L0`(W[````/@``AGO0!(@*,``20"`#$48O]_`````("B``(4
+M0/]\)`(`""0#___^8P``)$+__Q1`__UF<P`(W[\`0```&"W?MP`X`&`0+=^V
+M`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`2``````(`J[J)(,`
+M!"D(`#(DA``!"`*NZ@"(&`L(`J[B@@@``#P$$`P\!1`.9(2Y*`P"?KQDI8Y(
+M"`*O$"0#__X\!1`.9(2Y<&2ECD@,`GZ\`@`P+0@"KQ`D`___9[W_P`"`$"W_
+MM``@)`/___^S`!@`@*`M_[(`$`"@F"W_OP`X)!(`#_^V`##_M0`H_[$`"/^P
+M``#<1@!X%,``$F1"__@F4O__%D/_^SP%$`P"8"`M#`*`1F2E?&#?OP`X```0
+M+=^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`0#P%$`P"8"`M
+M9*48J`P"@$8\%A`,)E#__V;6N;`D%?__$D#_[`!`B"T`$##X`G$@+7Z&,@H"
+MP"@M#`*`1B80__\6%?_Y`%&((=^_`#@``!`MW[8`,-^U`"C?M``@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0!``````#P%`@T\`P#_-*650#1C_T!``G@``$4H
+M)F>]_[``HQ@D_[<`.`"`N"W_OP!(_[X`0/^V`##_M0`H_[0`(/^S`!C_L@`0
+M_[$`"!!@``7_L```?$)Z`SA"#9400``K/!80#=[E``@4H``4`````-[E```4
+MH`!S/!40#3P$$`P,`GZ\9(2YP-^_`$C?O@!`9J0HN-^W`#C?M@`PW[4`*-^T
+M`"#?LP`8W[(`$-^Q``C?L```"`)^O&>]`%`\$!`,#`)^O&8$N;C>Y0``9@2Y
+MN`P"?KP\%1`-W[\`2-^^`$!FI"BXW[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0
+MW[$`"-^P```(`GZ\9[T`4#P3$`YFU@_8/!$0##P5$`T``/`M``"0+0+`*"UF
+M<XWX9C&YN"04``$"8"`M#`)^O'_&"<,GT`!````0+0`````J!0``)@,`/P(%
+M&`HL1@`!)A#_P``#*8,`!2CX?N4J"BRC``$`PQ@D$&``#@``$"T"'A@J$&#_
+M\@`````"@I`+)]X`@"0"`@`3P@`+/`(0#0`>*"ID0BBX`L40"@@"K_``0"@M
+M#`)^O`(@("T(`K`")`(``0`````\%!`.`N"(+200``AFE(X("`*P'203`!`F
+M$``!$A,`"@````#>)@!`$,#_^V8Q``@"`"@M`H`@+0P"?KPF$``!%A/_^```
+M```20/^;W[\`2&:D*+C?O@!`W[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`
+M"-^P```(`GZ\9[T`4`@"K]8\$!`,0+KX`$`:>`$S6@#_`!K1`"=:8``G6F``
+M)UI@`"=:8``G6F``)UI@`"=:8``G6F```#K7PB-:``$`.M!"_T$``/];``A`
+M.[``RW``&@````!`.[@`,WL`/Q=@`!8`````0#NX`'][(H,38``2`````$`[
+MN`#K?___`````#P;$A)G>Q4X_WL``#P;$A)G>Q5`WWL``!-@``<`````WT$`
+M`-];``A`.L``9UH`!`-```A`.O@`/!L2&V=[(1C?00``_V```"=[``C_80``
+M)WL`"/]B```G>P`(_V,``"=[``C_9```)WL`"/]E```G>P`(_V8``"=[``C_
+M9P``)WL`"/]H```G>P`(_VD``"=[``C_:@``)WL`"/]K```G>P`(_VP``"=[
+M``C_;0``)WL`"/]N```G>P`(_V\``"=[``C_<```)WL`"/]Q```G>P`(_W(`
+M`"=[``C_<P``)WL`"/]T```G>P`(_W4``"=[``C_=@``)WL`"/]W```G>P`(
+M_W@``"=[``C_>0``)WL`"`-@R"W?6P`(`R#0+4`Y^`#_60``)UH`"/];```G
+M6@`(_UP``"=:``C_70``)UH`"/]>```G6@`(_U\``"=:``@\&Q(29WL52(][
+M```;8``R`````#P;$A)G>Q5,CWL``!M@`!X`````/!L2&V=['YAP`!@1<``@
+M$7``*!'_8P``<``8$?]D``AP`"`1_V4`$#0&``%P`"@1_V,`&'#`,!'_9``@
+M<``8$?]E`"AP`"`1_V8`,'``*!'_8P`X<``8$?]D`$!P`"`1_V4`2/]C`%#_
+M9`!8$```$``````\&Q(;9WL?F'``$!%P`!@1_V(``'``$!'_8P`(-`,``7!@
+M&!'_8@`0<``0$?]C`!AP`!@1_V(`(/]C`"A`.H`!RT``3@````!`.F``/!LD
+M``-ZV"5`NV``/!L2&V=[(!CW8```)WL`"/=A```G>P`(]V(``"=[``CW8P``
+M)WL`"/=D```G>P`(]V4``"=[``CW9@``)WL`"/=G```G>P`(]V@``"=[``CW
+M:0``)WL`"/=J```G>P`(]VL``"=[``CW;```)WL`"/=M```G>P`(]VX``"=[
+M``CW;P``)WL`"/=P```G>P`(]W$``"=[``CW<@``)WL`"/=S```G>P`(]W0`
+M`"=[``CW=0``)WL`"/=V```G>P`(]W<``"=[``CW>```)WL`"/=Y```G>P`(
+M]WH``"=[``CW>P``)WL`"/=\```G>P`(]WT``"=[``CW?@``)WL`"/=_```G
+M>P`(/!L2&V=[(AA$1```_V0``$1$^`#_9``(0+I@`#P=$A)GO1*`W[T`````
+M(!(``"@0#`)TC`````!`.H`!RT``3@````!`.V``/!HD``-;T"5`NF``/!H2
+M&V=:(!C70```)UH`"-=!```G6@`(UT(``"=:``C70P``)UH`"-=$```G6@`(
+MUT4``"=:``C71@``)UH`"-='```G6@`(UT@``"=:``C720``)UH`"-=*```G
+M6@`(UTL``"=:``C73```)UH`"-=-```G6@`(UTX``"=:``C73P``)UH`"-=0
+M```G6@`(UU$``"=:``C74@``)UH`"-=3```G6@`(UU0``"=:``C750``)UH`
+M"-=6```G6@`(UU<``"=:``C76```)UH`"-=9```G6@`(UUH``"=:``C76P``
+M)UH`"-=<```G6@`(UUT``"=:``C77@``)UH`"-=?```G6@`(/!H2&V=:(AC?
+M1```1,0``-]$``A$Q/@`0+M@`#P;$A)G>Q5(CWL``!M@`"H`````/!L2$F=[
+M%4R/>P``&V``%P`````\&A(;9UH?F-]%`##?1@!(WT,`.-]$`%!PI@`(WT4`
+M0'!D``S?1@!8WT,``-]$`!API@`-WT4`"'!D``G?1@`@WT,`$-]$`"API@`*
+M<&0`"Q````\`````/!H2&V=:'YC?0@`HWT,`('!```W?0@`8<&``#-]#`!!P
+M0``(WT(`"'!@``O?0P``<$``"G!@``D\&A(;9UHA&-]````G6@`(WT$``"=:
+M``C?0@``)UH`"-]#```G6@`(WT0``"=:``C?10``)UH`"-]&```G6@`(WT<`
+M`"=:``C?2```)UH`"-])```G6@`(WTH``"=:``C?2P``)UH`"-],```G6@`(
+MWTT``"=:``C?3@``)UH`"-]/```G6@`(WU```"=:``C?40``)UH`"-]2```G
+M6@`(WU,``"=:``C?5```)UH`"-]5```G6@`(WU8``"=:``C?5P``)UH`"-]8
+M```G6@`(WUD``"=:``C?6P``)UH`"$"[^`#?6P``)UH`"-]<```G6@`(WUT`
+M`"=:``C?7@``)UH`"-]?```G6@`(0#KX``0?``!"```?`````*^`@ZQGO?_P
+M_[````"`@"W_OP`(`*`@+0#`*"T,`GO0`.`P+20#__\00P`%CX.#K-^_``C?
+ML````^``"&>]`!`08/_[W[\`"*X#``#?L````^``"&>]`!!GO?^H_[0`*`#`
+MH"W_L``(`*"`+?^_`%#_O@!(_[<`0/^V`#C_M0`P_[,`(/^R`!@0H`#7_[$`
+M$`P"9LP`@*@MW@/_^&:$`!=F$__P+(4`+P``$"TD$0`@`&"0+1"@`#A\$@@'
+M`C0@*P""$"440`#6`E$0*A!``!D"41`O/!<2$@)R$"UF]PBPWN0`$!""`-)F
+M)@`@W$4`"`"@,"U\!@`'`$8P+=S&``CHP``[?`4(!P"R,"T`T3@J%.``.0``
+M``#<1``8`,"0+=Q"`!#\1``8_((`$``````"41`O+$0`(!"``!\P8P`!`G(0
+M+0!RD"7^<@`(W$,`"#1C``'\0P`(#`)FS@*@("W?OP!0`@`0+=^^`$C?MP!`
+MW[8`.-^U`##?M``HW[,`(-^R`!C?L0`0W[``"`/@``AGO0!8``````"`B"TD
+M`@`!?!$8!P`"%_@"(A`K"`*R*RQ"``$``````G$H+31$``$`<8@E`*(0+?YQ
+M``C\I``(`J`@+=Q#``ADI0`0-&,``0P"82#\0P`("`*R4@```````"@M```0
+M+>A@`"T`````WA;_\`)VL"_>W@`(?!X(!Q!``%L#TO`M$$0`J0"^."T`\1@J
+M%&``5F9&__C<1``8W$(`$&;#`!`LQ0!)_$0`&/R"`!#>Q``0WL(`&/R"`!@0
+MH`#5_$0`$"S$`"@4@``)`&`0+=X$```LP@`X_L0`$-X$``@00`#6_L0`&&;"
+M`"!F$``0W@0```#@D"W\1````L"8+=X$``C\1``(W@0`$`!@@"W\1``0"`*R
+M2-[#``@"@"@M#`)BF`*@("T00`$!`$"@+=X#__AD1/_P`&`0+7P"``<"8A`M
+M$((`KV9&__@LP@!)$$``<`*`$"TLQ``H%(``"0(`&"W>`P``+,(`./Z#``#>
+M`P`($$``F?Z#``AF@@`09@,`$-QD``#\1```W&0`"/Q$``C<8P`0_$,`$`(`
+M*"T,`F$@`J`@+0P"9LX"H"`MW[\`4-^^`$@"@(`MW[<`0`(`$"W?M@`XW[4`
+M,-^T`"C?LP`@W[(`&-^Q`!#?L``(`^``"&>]`%@``````]$0*A1`_\L"@"@M
+MWL(`&&9&__C>Q``09L,`$"S%`$G\@@`8$*``*OQ$`!`LQ``H%(``"0!@$"W>
+M!```+,(`./[$`!#>!``($$``DO[$`!AFP@`@9A``$-X$```(`K*?`\"0+0``
+M``#?OP!0`,`H+=^^`$C?MP!`W[8`.-^U`##?M``HW[,`(-^R`!C?L0`0W[``
+M"`@"8IAGO0!8`````"0"``P``(`M"`*R5*ZB``#<A0`(?`4(!P"R$"T`1C`J
+M$,``"P`````(`K)Z`(`0+0(`*"T`8"`M`&"`+0P"9@H#P)`MWL,`"`@"LD@"
+MP)@M`%$0+P)QF"TT0@`!`J`@+?YB``C>`O_X_O,`$#!"``$"(H@E#`)FSOX1
+M__@(`K)5W[\`4``````"@"`M#`)F"@(`*"T(`K+)`@`H+0````!F(@`@`.(0
+M*A1`_ZX#T1`JWL(`&&9&__C>PP`09M(`$"S$`$G\8@`8$(``9OQ#`!`LPP`H
+M%&``"0)`$"W>`P``+,(`./[#`!#>`P`($$``8_[#`!AFP@`@9A``$-X#``#\
+M0P``W@,`"/Q#``C>`P`0_$,`$`#Q&"\"T1`M-&,``0*@("W\0P`(`D"`+=[#
+M``C^X@`0,&(``0(BB"4,`F;._M$`"`@"LE7?OP!0`````-X"`!#^@@`0W@(`
+M&/Z"`!@D`@!($,(`'`````!F@@`@"`*RPF8#`"#>@O_X?`((!P@"LD@"0I`M
+M`@`H+0!@("W_IP``#`)F"@!@@"W?IP``WL,`"`+`F"T(`K)(`."0+=X"`!#^
+MP@`@W@(`&/["`"@D`@!($,(`%P````!FP@`P"`*RG680`"#>!``@9H(`,&8#
+M`##^A``@W@0`*`@"LL+^A``HW@(`$/["`"#>`@`8_L(`*"0"`$@0P@`-````
+M`&80`"!FP@`PW@0```@"LI\#P)`MW@0`(&;"`$#^Q``PW@0`*&80`#`(`K*=
+M_L0`.-X$`"!FP@!``\"0+?[$`##>!``H9A``,/[$`#@(`K*?W@0``/^G```"
+M0"`M#`)F"@(`*"T(`K-)WZ<``-X"`!#^P@`@W@(`&/["`"@D`@!($,(`"0``
+M``!FP@`P"`*S0V80`"`"H"`M#`)FS@``@"T(`K)5W[\`4-X#`"!FP@!`_L,`
+M,-X#`"AF$``P"`*S0_[#`#@`````9[W_Z/^P````H(`MW*4``/^Q``@`@(@M
+M$*```_^_`!`,`K.Z`````-^_`!`"("`MW[$`"`(`*"W?L```"`)A(&>]`!@`
+M````WX*`H&>]_]C_L0`(`("(+?^_`"#_LP`8_[(`$!""`"W_L```W((`>!!`
+M`!(```````"0+203`@!\4BH*$*``"```````````W+````P"82`"("`M%@#_
+M_`(`*"W>(@!X9E(`"!93__0"("`M#`)A(`!`*"W>)0!@$*```P`````,`F$@
+M`B`@+=XE`?@0H``)`````&8R`@`0L@`&`````-RP```,`F$@`B`@+190__P"
+M`"@MWB4`B!"@``,`````#`)A(`(@("V.(@!0%$``"`````#?OP`@W[,`&-^R
+M`!#?L0`(W[````/@``AGO0`HWB(`6`!`^`D"("`MWB4%(!"@__3?OP`@`B`@
+M+=^S`!C?L@`0W[$`"-^P```(`K.Z9[T`*`````!GO?_8_[,`&-^3@*#_L0`(
+M_[\`(/^R`!``A)@+_[```-YQ`?@2(``/)!+__P````".,``()A#__P8```=F
+M`@`"``(0^'XB$@H`0/@))A#__Q82__MF`@`"WC$``!8@__0`````WGD`6!,@
+M``C?OP`@`F`@+=^R`!#?LP`8W[$`"-^P```#(``(9[T`*-^S`!C?L@`0W[$`
+M"-^P```#X``(9[T`*`````!$(V````,@/P`#&```9"@E%*```R0"``(#X``(
+M`````#P%@``L8P`!<(4H*@"C*"04H/_Y?(3P`#P%__``A2@A/`9_X`"F*"L4
+MH/_S)`(`!#P%`!``A2@K%*#_[R0"``,\`H`0`((0(2Q"``$#X``(`&(0)```
+M``!$(F``/`A_\*R``````C@_``(8`'SF\```R$`J$0``$`#`*"T`PQ@E$&``
+M#3P#`!``PQ@J%&``#"0#_\H``!@M``4M`WP']00DI?P"`*,H(3P#/^"LA0``
+M`.,X)7SB^`8#X``(1*(``->`@6!&(&!"1"((```".#\(`K1N?.7P`-R#!1AG
+MO?_P```0+?^P````@(`M$&``!O^_``C?OP`(W[````/@``AGO0`0``````P"
+M8I@D!0$`$$``#_X"!1@``!@M"`*TDR0$`0``````W@(%&`!#$"UD8P`(%&3_
+M_/Q```#?OP`(```0+=^P```#X``(9[T`$`@"M(4D`O__9[W_X"RB`"#_L``0
+M`("`+1!```W_OP`8W((%&!!``!(```````4H^`!%$"W<0P``_$8``-^_`!@`
+M8!`MW[``$`/@``AGO0`@W[\`&"0"`!;?L``0)`/__ZR"````8!`M`^``"&>]
+M`"#_I0``#`*T?O^F``C?I0``)`/__Q1`_^W?I@`("`*TI]X"!1@`````9[W_
+MZ"RB`"#_L0`(`("(+?^P````H(`M$$``*_^_`!#<@@48$$``'@`%&/@`0Q@M
+MW&(``!!``!H`````)`0``1!$`!4`````)`3__Q!$``K?OP`0_&````!`^`D`
+MH"`M```0+=^_`!#?L0`(W[````/@``AGO0`8)`,`%JXC```D`@`!W[$`"-^P
+M```#X``(9[T`&``````(`K3;```0+0P"M48"("`MW[\`$`(@("T"`#`MW[$`
+M"`!`*"W?L```"`*U,&>]`!@D`P`6)`+__P@"M-NL@P``+*(`(!!``"(`````
+MW((%&&>]_^C_L``(`("`+1!``!;_OP`0``4@^`!$("W<@P``$&``#R0&__\0
+M9@`()`(``B0&``$09@`%)`(``_R`````8/@)`*`@+0``$"W?OP`0W[``"`/@
+M``AGO0`8``````@"M0\D`@`!#`*T?O^E```40``%WZ4```@"M0'>`@48`^``
+M""0"__\(`K4/)`+__P"`*"T(`K3"WX2`H```````@!`M`*`P+=^$@*`(`K2>
+M`$`H+0`````(`K1^WX2`H`"`*"T(`K3XWX2`H`````"O@(.L9[W_\/^P````
+M@(`M_[\`"`"@("T,`GTD`,`H+20#__\00P`&CX.#K-^_``C?L````^``"&>]
+M`!``````$&#_^M^_``BN`P``W[````/@``AGO0`0"`)]&`````",P@`,9[W_
+MJ/^^`$@`P/`M_[``"/^_`%#_MP!`_[8`./^U`##_M``H_[,`(/^R`!C_L0`0
+M_Z0``!!``''<T```W*0```"@F"T``)`M``"(+18@``4`````WA$`"-X2```2
+M(/_]9A``$(YT``P"-!`K$$``(0`1L```$:```H"X+0*`L"T"0"@M#`)F"@*`
+M,"V/P@`,CF4`#`)7D"W>9````C>(+P!6$",`M"@CKF4`#`"4("W^9```%$#_
+MY:_"``S?OP!0K\``"-^W`$#?O@!(W[8`.-^U`##?M``HW[,`(-^R`!C?L0`0
+MW[``"`/@``AGO0!8`````(9B`!`P0P2`$&#_X`+`N"V.8P`@WF4`&``#,$``
+MPQ@A`(4@+P`$(````S?"`,,8(62(``$``QA#`1%`+0!@J"T`8#`M`&@8*Q!@
+M``4`@+@M)(0``0`1&```@S`A`,"H+3!"!``00``8WZ0```P"8I@`P"@M$$``
+M&P!`L"W>90`8`$`@+0P"95P"X#`MEF(`$"0#^W\`0Q`D-$(`@*9B`!`"UR`M
+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
+M``````P"J1(``````@`@+0.@*"T``#`M`$`X+0)`^`D"($`M"`*ZZ20#__]G
+MO?_`_[,`*/^R`"#_L0`8`,"(+?^P`!``@(`M_[\`./^T`##?DH%H$(``&=^3
+M@*`,`JD2`*"@+0)@("T"`"@M`H`P+0!`."T"0/@)`B!`+20#__\40P`'W[\`
+M.-^#@*`D!`"*KB```"0"__^L9```W[\`.-^T`##?LP`HW[(`(-^Q`!C?L``0
+M`^``"&>]`$`,`JD2``````)@("T#H"@M```P+0!`."T"0/@)`B!`+0@"NQ4D
+M`___$*``!P`````LP@$`$$``!B0#`(J@I@```^``""0"``$#X``(```0+20"
+M__\#X``(K(,```````!GO?_0_[``&-^0@6C_L0`@`."(+?^_`"C_I```_Z4`
+M"`P"J1+_I@`0WZ0```(@0"W?I0`(`@#(+=^F`!``0#@MW[\`*-^Q`"#?L``8
+M`R``"&>]`#``````9[W_R/^P`!C?D("8_[(`*`"`D"W_OP`PW@,!^!!@`$+_
+ML0`@C&(`""A"`"`40``<`````#P"$`MD0J:H%$``""01___?OP`P`B`0+=^R
+M`"C?L0`@W[``&`/@``AGO0`X_Z4``"0$`QC_I@`(#`*IJO^G`!#?I0``WZ8`
+M"`!`&"T00/_PWZ<`$-X"`?BL8``(_&(``/X#`?BL8`,0K&`#%!)```^,8@`(
+MC&D#$"0$``%D2``@``)0^`!$(`0`"$#X`&I0+0$D2"7]1@$0`&A`+:QI`Q`D
+M!@`"$D8`#_T'`1#?OP`P9$0``@`$(/@D0@`!K&(`"```B"W?L@`H`&08+=^P
+M`!@"(!`M_&4``-^Q`"`#X``(9[T`.(QF`Q0`Q"`E"`*[BJQD`Q1F`P(`"`*[
+M6_X#`?@`````9[W_\/^P``#_OP`(#`)BF'"F*`,00``,`$"`+=Q&__A\!@@'
+M9,;_^"S"`$D00``6+,,`*!!@``H"`!`M_$```/Q```C\0``0W[\`"`(`$"W?
+ML````^``"&>]`!``````_@```"S"`#@40``/_@``"/X``!`D`@!($,(`#?X`
+M`!@(`KNO9@(`(`(`("T,`F9@```H+=^_``@"`!`MW[````/@``AGO0`0"`*[
+MKV8"`!#^```@9@(`,`@"NZ_^```HKX"#K&>]__#_L````("`+?^_``@`H"`M
+M#`)\O@#`*"TD`___$$,`!H^#@ZS?OP`(W[````/@``AGO0`0`````!!@__K?
+MOP`(K@,``-^P```#X``(9[T`$*^`@ZQGO?_P_[````"`@"W_OP`(#`)\W@"@
+M("TD`___$$,`!8^#@ZS?OP`(W[````/@``AGO0`0$&#_^]^_``BN`P``W[``
+M``/@``AGO0`0`(`0+0``,"T``!@M`````&1"``&01/__,(@`?WP$/"``:$`4
+M)&,`!P3@__D`R#`E+&<`0!#@``4PA`!`$(```R0$__\`9!@4`&8P)0/@``C\
+MI@```````&>]_]`D`@!0_[``&`"`@"W_OP`H$((`2O^Q`"`P@@`/+$,`#11@
+M``0\`Q`.#`*@S@``````````<$(8\F1CD6!\8A(*`$``"`"@B"T`````:,,`
+M`&3"``@08``',@0`<'P0A"`XA``0`B0P"P8!``(`9A@MW&,``-^_`"C?L0`@
+MW[``&/SC```#X``(9[T`,)##``%DP@`"D,0``'R#>@0(`KPF<&-X.@#`("T#
+MH"@M_Z8`"`P"N_K_IP`0WZ,``-^F``@(`KPFWZ<`$`````"(PP``"`*\)F3"
+M``0`````B,,``&3"``0(`KPF?&/X`Y##``%DP@`"D,0```@"O"9\@WH$````
+M``#`$"T``!@M```@+0````!D0@`!D$C__S$%`']\"$0@`(4H%"2$``<%`/_Y
+M`&48)0@"O"8`````W[\`*&3"``??L0`@?`(0!]Q#``!D0@`(W[``&/SC```#
+MX``(9[T`,&>]__@D`@#_$((`$_^_```PA`!P)`(`(!""`!\`````+((`(11`
+M``HD`@!`$((`%@`````D`@!0$((`!R0"`#`0@@`-W[\```P"H,X`````%(``
+M!20"`!#?OP`````0+0/@``AGO0`($(+__-^_```,`J#.`````&>]``@#X``(
+MW*(".`````#?OP``9[T`"`/@``C<H@)`W[\``&>]``@#X``(W*(",&>]_Y@`
+M@!`M_[X`6`"%&"O_M0!``Z#P+?^S`#``H*@M_[\`8`#@F"W_MP!0_[8`2/^T
+M`#C_L@`H_[$`(/^P`!@08``R_.`$,-S#`DC<Q`(@W.<$6``#'_X`@Q@M`.,8
+M*Q!@`"H`P*`M/`D0#F9C!$#_PP`(``"(+206`$`D%P"`93*1R`````"01```
+M,(,`P!!V``UD4``!$'<`*20%`,`090`[+(,`,!1@``,`!"#X#`*@S@````!^
+M1"(*`(``"```````````WF,$<#"$`#\"`!`M<(,@`P#D."W^9P18`%48*Q!@
+M``D`````WH,"2-Z$`B#>9P18``,?_@"#&"T`XQ@K%&#_X``````#P.@MW]\`
+M8-^^`%C?MP!0W[8`2-^U`$#?M``XW[,`,-^R`"C?L0`@W[``&`/@``AGO0!H
+M,(4`/P(`$"T``$`M```8+61"``&01/__,(<`?WP$)"``9S@4)&,`!P2`__D!
+M!T`EWF,$:``%(3@"9"`M)`4``:R%``AQ`T`#"`*\S/R(``!PA"DR`@`0+0)D
+M("T(`KS,K(``"`)@&"T``!`M)`4``20$`(``````_&(!`&1"``BL90$(%$3_
+M_&1C`!`(`KS,`@`0+0``("T``!`M`````&80``&2`___,&4`?WP#'"``12@4
+M)$(`!P1@__D`A2`E``09.`(`$"T"8Q@M"`*\S*Q@``@``#`M```0+0````!F
+M$``!D@/__S!D`']\`QP@`$0@%"1"``<$8/_Y`,0P)0(`$"T``"@M```8+0``
+M``!D0@`!D$3__S"'`']\!"0@`&<X%"1C``<$@/_Y`*<H)0`&&3@D!``"`F,8
+M+:QD``@(`KS,_&4``!(@`:\``````B`@+=XQ!#`"8!`M`(`8+=Q(``#<1P`(
+MW$8`$-Q%`!AD0@`@_&@``-_(``C\9P`(_&8`$/QE`!@42/_U9&,`(-T'```"
+M`!`MW08`"-T%`!#\9P``_&8`"/QE`!`(`KS,_F0$,-YE!#`"8"`M`*`8+62B
+M!$#<:@``W&@`"-QG`!#<9@`89&,`(/R*``#\B``(_(<`$/R&`!@48O_V9(0`
+M(-QG```"`!`MW&8`"-QC`!#\AP``_(8`"/R#`!#\L00P"`*\S`"@B"T``"`M
+M```0+680``&2`___,&4`?WP#'"``12@4)$(`!P1@__D`A2`E_F0$0`(`$"T`
+M`"@M```8+61"``&01/__,(8`?WP$)"``9C`4)&,`!P2`__D`IB@E_F4$."0#
+M``$(`KS,KF,$4```("T``!`M9A```9(#__\P90!_?`,<(`!%*!0D0@`'!&#_
+M^0"%("4D`P`!`@`0+?YD!$`(`KS,KF,$4```("T``!`M`````&80``&2`___
+M,&4`?WP#'"``12@4)$(`!P1@__D`A2`E_F0$.`@"O,P"`!`M)`0``@``$"W^
+M<`1(```8+:YD!%!F$``!D@3__S"%`']\!"0@`&4H%"1C``<$@/_Y`$40)0@"
+MO,P"`A`MB$0``61"``7>8P1P?(3X`W"#&`,`XS@M"`*\S/YG!%@``#`M```0
+M+680``&2`___,&0`?WP#'"``1"`4)$(`!P1@__D`Q#`E`@`0+0``*"T``!@M
+M`````&1"``&01/__,(<`?WP$)"``9S@4)&,`!P2`__D`IR@EWF0$:``&&3@"
+M8Q@M)`8``:QF``API"@#"`*\S/QE`````"`M```0+680``&2`___,&4`?WP#
+M'"``12@4)$(`!P1@__D`A2`E``09.`(`$"T"8Q@M"`*\S*Q@``@``"`M```0
+M+0````!F$``!D@/__S!E`']\`QP@`$4H%"1"``<$8/_Y`(4@)0`$&3@D!``&
+M`F,8+0(`$"T(`KS,K&0`")!$``%D0@`"WF,$<'"#&`,`XS@M"`*\S/YG!%B0
+M0P`"D$4``61"``/>9`1P?*-Z!'!D&`,`XS@M"`*\S/YG!%@``"`M```0+680
+M``&2`___,&4`?WP#'"``12@4)$(`!P1@__D`A2`E_H0"6`@"O,P"`!`M```P
+M+0``$"T`````9A```9(#__\P9`!_?`,<(`!$(!0D0@`'!&#_^0#$,"4"`!`M
+M```H+0``&"T`````9$(``9!$__\PAP!_?`0D(`!G.!0D8P`'!(#_^0"G*"7>
+M9`1H``89.`)C&"TD!@`!K&8`"'"D(`,`!"`O"`*\S/QD`````"`M```0+0``
+M``!F$``!D@/__S!E`']\`QP@`$4H%"1"``<$8/_Y`(4@)0`$(3@D`P`#`F0@
+M+0``$"VL@P`(```8+?R0````````9A```9($__\PA0!_?`0D(`!E*!0D8P`'
+M!(#_^0!%$"4(`KS,`@(0+0``,"T``!`M9A```9(#__\P9`!_?`,<(`!$(!0D
+M0@`'!&#_^0#$,"4"`"`M`\`H+0P"N_K_Q@`0W\8`$"0$``'>901H``89.`)C
+M&"VL9``(W\0``'"D(`,(`KS,_&0`````("T``!`M9A```9(#__\P90!_?`,<
+M(`!%*!0D0@`'!&#_^0"%("7^9`1``\`H+0P"N_H"`"`M)`0``=YC!&BN9`10
+MW\0``'"#&`,(`KS,_F,$.`(`("T,`KOZ`\`H+=YC!&C?Q```<(,8`P@"O,S^
+M8P0X```P+0``$"T`````9A```9(#__\P9`!_?`,<(`!$(!0D0@`'!&#_^0#$
+M,"4"`!`M```H+0``&"T`````9$(``9!$__\PAP!_?`0D(`!G.!0D8P`'!(#_
+M^0"G*"7>9`1H``89.`)C&"TD!@`$K&8`"'"D*`,(`KS,_&4`````,"T``!`M
+M9A```9(#__\P9`!_?`,<(`!$(!0D0@`'!&#_^0#$,"4"`"`M`\`H+0P"N_K_
+MQ@`0W\8`$"0$``3>901H``89.`)C&"VL9``(W\0``'"D(`,(`KS,_&0`````
+M("T``!`M9A```9(#__\P90!_?`,<(`!%*!0D0@`'!&#_^0"%("4`!"$X)`,`
+M!0)D("T``!`MK(,`"```&"W\D````````&80``&2!/__,(4`?WP$)"``92@4
+M)&,`!P2`__D`11`E"`*\S`("$"V28P2``H`H+?_#`!`,`KQJ`&`@+=_#`!`"
+M`#`M`\`X+0!`*"T,`KP0`&`@+=_#```(`KS,_F,$6&>]^Z`(`KTZ`Z`@+0``
+M``!GO?VH`(`0+?^T`C``A1@K_[\"4`"@H"W_MP)(_[8"0/^U`CC_LP(H_[("
+M(/^Q`AC_L`(0$&``*?^G```\%1`./!(0#CP1$AH`P+`M)!```6:UDTAF4IK`
+M9C&#T`````"00P``9$0``21G__TPZ`#_+0@`[Q4```0`8)@M#`*@S@``````
+M````<.<X\GZG.@H`X``(`````&A#``$"`#@M9$(`"0`````LY`!`$(#_\P`'
+M(/@D\``!`Z0@+?R#````5!@K%&#_Y@`````2`/_K)@?__P`'./A_ISH*W[\"
+M4`#@$"W?MP)(W[8"0-^U`CC?M`(PW[,"*-^R`B#?L0(8W[`"$`/@``AGO0)8
+M````````F"T``!`M9(0``9"#__\P90!_?`,<(`!%*!0D0@`'!&#_^0)EF"5G
+MI0((#`*[^@`3F``J8P!#$&#_S`````#>Q`)(`!,8^'XS*8K8G@`%?L,:"@+3
+MF"V"9`)@%(`!`@!@("TD!``(%*3_P``````(`L!(W&0`````*"T``!`M9(0`
+M`9"#__\P9@!_?`,<(`!&,!0D0@`'!&#_^0"F*"4`!2@`**(`0Q!`_[``!1CX
+MWL("2'XE,8K87@`%?L,:"@+%*"V`H@)@%$``!@(`."TD`@`(%,+_I0````#<
+M8P```@`X+0@"OQ0`@!`M`````&>E`@@,`KOZ)G/_D"IC`$,48/_/``````P"
+MH,X`````)'/_L"IB`$,00/^4`!,8^-["`DA^,RF*V%X`!7[#&@H"TY@M@F("
+M8!1`_^H"`#@M)`(`"!"B_^4`````#`*@S@``````````)&/_T`(`."U\8_@#
+M"`*_%`"`$"T`````D$,``F1$``.00@`!?$-Z!'!B>#H(`K\:`((0+0`````2
+M`/]V`````)!#``(F$/__D$4``0`0(/A_I"(*9$(``WRC>@1P8W@Z`$,8+0@"
+MOQH`9!`+`````"H"``(40/]G)@?__B1B_^8F$/__``<8^``0@/@P10#_?Z,:
+M"BRE`!40H/]>?["""G!"./)^0A(*`$``"``````J`@`#%$#_5R8&__\F!?_^
+M)@/__0`&,/@`!2CX``,8^`.F,"T#I2@MW,<```.C&"W<J````(`0+=QD``#\
+MR```_*0```@"OQK\9P```````"H"``(40/]#)@7__R8#__X`!2CX``,8^`.E
+M*"T#HQ@MW*8```"`$"W<9```_*0```@"OQK\9@``"`*_&@"`$"T,`KOZ9Z4"
+M`-^C`@`(`K\4`@`X+0``````@!`M```8+0``("T`````9$(``9!%__\PI@!_
+M?`4L(`"&,!0DA``'!*#_^0!F&"4(`K\4`@`X+9!#``$F!/__9$(``@!D*"H0
+MH/\<_Z,""`"#&"\"`#@M``,8^`@"OQ1_HQH*`````"H"``(40/\3)@/__@(`
+M."T``QCX`(`0+0@"OQ1_HQH*$@#_#`"`$"T(`K\:)A#__Q(`_P@F`___`@`X
+M+0`#&/@`@!`M"`*_%'^C&@H`````B$,``0(`."T(`K\49$(`!8A#``$"`#@M
+M9$(`!0@"OQ1\8_@#`````)!#``("`#@MD$0``61"``-\@WH$"`*_%'!C>#H`
+M````D$,``@(`."V01``!9$(``P@"OQ1\@WH$@$,``0(`."T(`K\49$(``I!#
+M``$"`#@M"`*_%&1"``(2`/[@)@?__R0%`!\`!S#X$&4`*7^F,@HL90`@%*``
+M'"0%`",090`X)`4`E!!E`"@`````)`(`(!1B_M(`!A@G"`*_%`"`$"V04P`!
+M`L`H+617``(,`KQJ`F`@+6>G`@`"8"`M`N`P+0P"O!``0"@MWZ,"``@"OQ0"
+M`#@M`````-^C`@@"`#@M"`*_%`"#&"TD`@`&$&(`"P`````D`@`9%&+^N"C"
+M````!A@O`,(8"@@"OQ0`@!`M``88+P@"OQ0`@!`M:,,```@"OQ0`@!`MD$,`
+M`20$``(09`!59$(``BQD``,4@``5)`0``20$``009`!3)`0`"!1D_J(`````
+M"`*_%&C#`````!@M```0+62$``&0A?__,*@`?WP%+"``2$`4)$(`!P2@__D`
+M:!@E`,,8+0@"OQ0`@!`M%&3^D0`````(`K\4D,,```(#&!0(`K\4`(`0+0(#
+M&!8(`K\4`(`0+0(#&!<(`K\4`(`0+0(#&"8(`K\4`(`0+7!P&"H(`K\4`(`0
+M+0!P&"H`@!`M"`*_%"QC``$"`Q@J"`*_%`"`$"T"`Q@J`(`0+0@"OQ0L8P`!
+M`'``'P(``?0`@!`M"`*_%```&!!R`Q@#"`*_%`"`$"T"`Q@E"`*_%`"`$"T"
+M`Q@M"`*_%`"`$"T`<``>`@`!]`"`$"T(`K\4```8$@!P&"\(`K\4`(`0+0(#
+M&"0(`K\4`(`0+0!P&"H(`K\4`(`0+7!P&"L(`K\4`(`0+9##``&0Q```"`*_
+M%'R#>@2(PP``"`*_%'QC^`,`````9[W_>"0&!)#_L0!``*"(+?^T`%@``"@M
+M_[\`@`"`H"W_O@!X`B`@+?^W`'#_M@!H_[4`8/^S`%#_L@!(#`)F8/^P`#C>
+M@@(@_H`"6!!``'+^@`(HWH0"2&:%`C``!"?^9(3__PP"S:@`1"`M$$``C@!`
+MD"V,0P`$9%8`!-Z"`D`"P[`O_B($6&;3``D,`H(<`F`@+9+$``DD!0!E9$(`
+M"0+"$"T0A0"J9$,``9+$``@``!`M+(0`!!"``0$``#@M9&,``9!H__\Q!`!_
+M?`A$(`#D(!0DYP`'!0#_^0!$$"7^(@1P`&`@+0P"N_IGI0`(WZ0`"```,"W^
+M)`1H)`0``9+%``@0I`"L```8+0````!D0@`!D$3__S"%`']\!"0@`&4H%"1C
+M``<$@/_Y`,4P)?XF!'@D`___)`0`>J(C!(&28P``$&0`C```4"T``(`M)!4`
+M3"07`%(D'@!0)`@`4Q!@``XD"0`!$'4`(P`````0=P`E`````!!^`#5D1@`!
+M%&@`90````"B*02#`G`8+9!C``$48/_T9A```1%``%T`````GL4```%`("T"
+M@#`M`B`X+62E``0,`KR4`L4H+9(B!(`D`P#_$$,`AF9$``@P0@`')`,``A!#
+M`+<L0P`#$&``>0`````40`!\)!``$`@"P;8`````D$,``&1"``$(`L$?HB,$
+M@9!#``!D0@`!"`+!'Z(C!(`D`@`%W[\`@-^^`'C?MP!PW[8`:-^U`&#?M`!8
+MW[,`4-^R`$C?L0!`W[``.`/@``AGO0"(`````)!#``#_J``H`H`H+?^I`##_
+MJ@`@`&`@+?^C`!`,`KQJ_Z8`&-^C`!`#H#@MWZ8`&`!`*"T,`KP0`&`@+=^C
+M``#?J``HWZD`,/XC!&`(`L$?WZH`(`````#>@P(@C&3_^#P#`T`T8_@)%(/_
+MV"0"``5F(P`(```0+20&``$D!0$`_&+_^&1"``BL9@``)`0``11%__MD8P`0
+M)`,`'0``$"W^(P1`)`,!&/XC!"`D`P!"KB0$4/X@!#BN)`0H"`+!0_XC!'@`
+M0%`M%4#_HB0"``/?OP"`W[X`>-^W`'#?M@!HW[4`8-^T`%C?LP!0W[(`2-^Q
+M`$#?L``X`^``"&>]`(B2Q0`*)`0`:!2D_U0`````:&0``&;3``MD0P`)"`+`
+MY_XD!(@````````H+0``&"UD0@`!D$3__S"&`']\!"0@`&8P%"1C``<$@/_Y
+M`*8H)20#``$`15`MHB,$@I)C``$(`L$/9G,``9!#``!D0@`!"`+!"?XC!'@D
+M`P`#$$,`."0#``000P`$)!``$`P"H,X```````"`+9(B!((`D(`M$$``#```
+MF"T``"`M```0+680``&2`___,&4`?WP#'"``12@4)$(`!P1@__D`A2`E`@28
+M+9(U!($D`@#_$J(`"P*@("T,`KQJ`H`H+0(`,"T"H"`M`Z`X+0P"O!``0"@M
+M`$"`+=^B``#^@@(HGD4```(`("T"<R`+`H`P+0(@."UDI0`$#`*\E`)%*"W?
+MOP"`W[X`>```$"W?MP!PW[8`:-^U`&#?M`!8W[,`4-^R`$C?L0!`W[``.`/@
+M``AGO0"("`+!MB00``@(`L&V)!``!)!E```D!``(%*0`!`````"09``!$(#^
+M^F1C``((`L%#)`(``P````#<H@)(9[W_F/^V`$@`@+`M_[4`0`"@J"W_OP!@
+M_[X`6/^W`%#_M``X_[,`,/^R`"C_L0`@V%X`!/^P`!B`HP)]%&``4#P7$AK>
+MHP#H/!<2&F;W@]`08`!J_[<`$-^P`!`"P)@M`J"0+6;1`F!FM`)@)!<`"&8>
+M`$*"(@``WF0``!1```K>10``@H,````$$"L``Q@K`&(8)!!@`#%PA3`KD@(`
+M`!!7``0`````#`*@S@``````````_Z4``+"%``!F$``!9G,`"&92``AF,0`!
+M%A[_Z6:4``'>P@)(V%X`$`````""P@)]$$``#=^_`&```!`MW[X`6-^W`%#?
+MM@!(W[4`0-^T`#C?LP`PW[(`*-^Q`"#?L``8`^``"&>]`&C>PP#H$&``&@``
+M$"W?OP!@W[X`6-^W`%#?M@!(W[4`0-^T`#C?LP`PW[(`*-^Q`"#?L``8`^``
+M"&>]`&@```````48*P##&"0`8A`D$$#_U``````,`F5<D@8```@"PB=F$``!
+M9O>#T`@"P@W_MP`0WZ(`$-ZD`DB00P`=V)X`!-ZB`.B"I`)]%(``!0`````D
+M!``(%&3_O0````#<0@``WL0"&-ZC`EC?OP!@W[X`6`!$$"_?MP!0`$,0+=^V
+M`$C?M0!`W[0`.-^S`##?L@`HW[$`(-^P`!@#X``(9[T`:)+E`!TD!``(%*3_
+MJ-ZC`AC87@`"_Z,`"**@`GUGH@`("`+"#?ZB`.AGO?SP`(`0+?^T`N`#H!@M
+M_[\#"`"`H"W_O@,`9(0"H/^W`OC_M@+P_[4"Z/^S`MC_L@+0_[$"R/^P`L#_
+MI0*PW$@``-Q'``C<1@`0W$4`&&1"`"#\:```_&<`"/QF`!#\90`8%$3_]F1C
+M`"#<0@``_&(``-^D`DCXG@"Q@Z("?=^B`.@00`#=/`,2&MZ"`DC87@`#WZ,"
+ML**``GW?HP*PC&($4"0#``$00P"M_H``Z"0#``(00P`#WZ,"L`P"H,X`````
+M```H+0``$"W<9`1(9(0``9"#__\P9@!_?`,<(`!&,!0D0@`'!&#_^0"F*"4#
+MH#`M`(4H+0``."T,`K[J/!42&F:U@]#_M0*X`$"8+=^P`K`\$1`.W[X"N&:6
+M`F#^DP(8`H"X+6:5`J-F,9MH)!(`"`````".`@`(+$(`!A!``!4`````G@(`
+M"``"$/A^(A(*`$``"```````````$&#_UM^D`K@``ACX?((1BG^C(@K?HP)(
+MV'X`=0"`&"V3P@``%%+_S20&``&BQ@``_N,```````!FU@`!9A``$&;W``@6
+MU?_D9]X``=^C`K"08@2#%$``@MZ#`DC?OP,(?&/P`?Z#`DC?O@,`W[<"^-^V
+M`O#?M0+HW[0"X-^S`MC?L@+0W[$"R-^P`L`#X``(9[T#$`````#>`P``D\(`
+M`!12_ZX"8Q@M)`(``680`!"BP@``9M8``?[C``!GW@`!%M7_Q6;W``@(`L+L
+MWZ,"L-X$`````"@M```8+0````!DA``!D(;__S#"`']\!C0@`&(0%"1C``<$
+MP/_Y`*(H)0.@,"T`A2@M#`*^Z@)@."W>@P)(V'X``@````"BP```_N(``&;6
+M``%F$``09O<`"!;5_ZEGW@`!"`+"[-^C`K".`@`$`Z(8+8!C`F`48/^L*$,`
+M0]Z#`D@``A#XV'[_\'^B$@H(`L,@HL````````#>`@``WH,"2-A^_^D"8A`M
+M"`+#(*+```#>!``````H+0``&"T`````9(0``9"&__\PP@!_?`8T(`!B$!0D
+M8P`'!,#_^0"B*"4#H#`M`(4H+0P"ONH"8#@MD\,``!1R_V,D`P`!HL,```@"
+MPR'^X@``%$#_4M^B`.@(`L*A`````!12_UH`````"`+"X-R#``#?HP*PC&($
+M1"A#`$,08/]3/!42&@`"&/A_HRH*9K6#T/^U`KC8G@`)?J(9B@.B$"V`0@)@
+M$$``!B0"``C?HP*PW&($.`@"PL0`HI@M)`(`"!1B_T(`````"`+#9]RE``#?
+MOP,()`+__]^^`P!\0__&_H,"2-^W`OC?M@+PW[4"Z-^T`N#?LP+8W[("T-^Q
+M`LC?L`+``^``"&>]`Q"098/M)`,`"!2C_RW>@@(8V)X``O^B`JBCH`)]9Z("
+MJ`@"PJ/_H@#H`````&>]_^C_L0`(`*"(+?^P``#_OP`0#`+"@`"`@"W>(@1X
+M``(9.`(CB"TD`P`&CB0`"!"#`!,``A``*$,`0Q!@``T\!!(:W@,"2``"*/AD
+MA(/0?((ABMA^`!A^!2H*`@(0+8!"`F`40``,)`,`"!"#`!8`````#`*@S@``
+M````````W[\`$/X``B#?L0`(W[````/@``AGO0`8`*`0+7P"``?^`@(@W[\`
+M$-^Q``C?L````^``"&>]`!@D`@`(%(+_[0``````````W*(``'P"``<(`L.S
+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
+M9@8``0+@("W>)0````8P^`+`^`E^9C(*!$'_XP+@("T"0(`M`!*(^``4D/@"
+M<8@M`G*0+=Y%```"`*`MWB8````0@$`"P/@))A```01`_^$``````````-^_
+M`$C?O@!`W[<`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(9[T`
+M4&>]_\#_M@`PW-8`"/^P``#_M0`H`*"H+?^T`"``%H!Z9A#__P"`H"W_LP`8
+M`!"``/^R`!!DTP`0_[\`.`#`D"T&```+_[$`"``6B``"`#@M`H`@+280__\"
+MH"@M`F`P+0P"Q_@"($`M!@'_^0(`."UFT/__`!"``!H``!!F$0`"`!&(^`)1
+MB"W>(P```@!`+=Y"`!`"@"`M`J`H+0)@,"W^0P`0```X+?XB```,`L?X)A#_
+M_Q8`__1F,?_XW[\`.-^V`##?M0`HW[0`(-^S`!C?L@`0W[$`"-^P```#X``(
+M9[T`0`````!GO?_X)`(`_Q""`!O_OP``,(0`!R0"``(0@@`3+((``Q1```<D
+M`@`#$((`"R0"``00@@`%W[\```P"H,X`````%(#__=^_```D`@`(`^``"&>]
+M``@`````W[\``"0"``0#X``(9[T`"-^_```D`@`"`^``"&>]``C?OP`````0
+M+0/@``AGO0`(9[W_^"0"`/\0@@`1_[\``#"$`'`D`@`@$((`$0`````L@@`A
+M%$``""0"`#`0@@`0W[\``"0"`%`0@@`'```0+0P"H,X`````%(``#20"`!#?
+MOP`````0+0/@``AGO0`(W[\``&>]``@#X``(W*(`"&>]``@#X``(W*(`$```
+M```0@O_TW[\```P"H,X`````9[W_T"0"`%#_L``8`("`+?^_`"@0@@!*_[$`
+M(#""``\L0P`-%&``!#P#$`X,`J#.``````````!P0ACR9&.;F'QB$@H`0``(
+M`*"(+0````!HPP``9,(`"!!@``<R!`!P?!"$(#B$`!`")#`+!@$``@!F&"W<
+M8P``W[\`*-^Q`"#?L``8_.,```/@``AGO0`PD,,``63"``*0Q```?(-Z!`@"
+MR-QP8W@Z`,`@+0.@*"W_I@`(#`+'V/^G`!#?HP``WZ8`"`@"R-S?IP`0````
+M`(C#```(`LC<9,(`!`````"(PP``9,(`!`@"R-Q\8_@#D,,``63"``*0Q```
+M"`+(W'R#>@0``````,`0+0``&"T``"`M`````&1"``&02/__,04`?WP(1"``
+MA2@4)(0`!P4`__D`91@E"`+(W`````#?OP`H9,(`!]^Q`"!\`A`'W$,``&1"
+M``C?L``8_.,```/@``AGO0`P9[W_R/^Q`!@`@(@M_[\`,&2$``G_LP`H_[(`
+M(`P"@AS_L``0DB4`"&1$``ED0@`!`B0@+2RE``00H`!)9(,``9(E``DD!`!Z
+M$*0`"0``$"W?OP`PW[,`*-^R`"#?L0`8W[``$`/@``AGO0`X`````&1C``&`
+M8O__!$#__0!@("T,`L?8`Z`H+9(D``@D`P`!$(,`,0````!D0@`!@$/__P1@
+M__T`````9C``"@````!D0@`!@$/__P1@__TD!`!2DB,`"B01`%`D$P!,$&0`
+M"B02`%(`````$'$`#V1&``$4<P`59$(``680``&2`P``%'+_^0````#?OP`P
+MD$(``-^S`"C?L@`@W[$`&-^P`!`#X``(9[T`.)!$`````"@M9Z<`"`P"R,8P
+MA`!_"`+)6V80``$`````W[\`,```$"W?LP`HW[(`(-^Q`!C?L``0`^``"&>]
+M`#@(`LE*9$(``0(B&"TD!0`(D&8`"13%_[@D`@#_D&,`"A1@_[;?OP`P"`+)
+M,&2#``.,H@``9[W_J/^^`$@`H/`M_[\`4/^W`$#_M@`X_[4`,/^T`"C_LP`@
+M_[(`&/^Q`!`00`!A_[``""06`/\`@(@M``"8+0``D"T``*`M```@+205`/\`
+M%K5\C\(`!!!``#!GT``$`@*`+Q"0`!0R5P#_#`+)(`(`("T050!!`$"0+3!7
+M`/\"("@M#`+(H@+@("T`0)@MWB(`('Q"/4(``B5\$)8`,S!"`/\04@`$)`,`
+M`8XB`"!\8N]$KB(`(`)@*"UGQ@`(`Z`X+0P"R,8"X"`M#`+(@`+@("U\0O@#
+M+$0`"!"```4D!?__``(HP"0"``$`HB@49*7__]^B````HB@D$*``!P(`("W>
+M)````$0@*Q"```)FE``!_B(```(`("V?P@``9$(`!`/"\"V/P@``%$#_R0``
+M``#?OP!0`H`0+=^^`$C?MP!`W[8`.-^U`##?M``HW[,`(-^R`!C?L0`0W[``
+M"`/@``AGO0!8`````(XB`"!^XN5$"`+)L:XB`"#?OP!0)!3__]^^`$@"@!`M
+MW[<`0-^V`#C?M0`PW[0`*-^S`"#?L@`8W[$`$-^P``@#X``(9[T`6`@"R=``
+M`*`M9[W_L/^W`$#_M0`P`("H+?^R`!@`H)`M_[``"`"`*"W_OP!(`,"`+?^V
+M`#C_M``H_[,`(/^Q`!#<E``@?I0]0@P"R*("@"`M`$"X+8X"```00``H``"(
+M+203``$`````C@,`!!!@`!T`````WJ8`(-C=``MF!``$`(,8+Q(C``@`8"`M
+M#`+)(`!@B"T"H"@M,$0`_PP"R*(`0*`M`$"X+1:``!\RE@#_W@,`"!!@``L`
+M````WD,``!!@``@`````W&0`"&2"``)DA``!_&0`"``"(/@`9!@M_'```)X#
+M``!D8P`$`@.`+8X#```48/_<`````-^_`$C?MP!`W[8`.-^U`##?M``HW[,`
+M(-^R`!C?L0`0W[``"`/@``AGO0!0`N`H+68&``@#H#@M#`+(Q@+`("T,`LB`
+M`L`@+7Q"^`,L1``($(``!"0#__\``AC``',8%&1C___?H@```&(8)!!@_]X`
+M````"`+*(-Y#``!GO?_`_[\`./^T`#``H*`M_[,`*`"`*"W_L0`8`,"8+?^P
+M`!``@(`M_[(`(-R2`"!^4CU"#`+(H@)`("T"0"`M9H8`"&>G``@`0"@M#`+(
+MQ@!`B"W>!``@`B`H+69F``@#H#@M#`+(QGR$/4+?I``(WZ,```!D*"L4H``#
+M)`(``0"#$"MP0@`ZW[\`.-^T`##?LP`HW[(`(-^Q`!C?L``0`^``"&>]`$!G
+MO?^H_[<`2/^U`#@`@*@M_[(`(`#`D"W_L``0`*"`+?^_`%``@"@M_[8`0/^T
+M`##_LP`H_[$`&-R4`"!^E#U"#`+(H@*`("T`0+@MC@(``!!``"0``(@M)!,`
+M`0````".`P`$$&``&0````#>I@`@V-T`"V8$``0`@Q@O$B,`"`!@("T,`LD@
+M`&"(+0*@*"TP1`#_#`+(H@!`H"T`0+@M%H``'3*6`/_>`P`(W@8`$/^C``@0
+M8``%_Z8```)#&"\`9C`K%,``"=^_`%">`P``9&,`!`(#@"V.`P``%&#_X```
+M`````(`MW[\`4`(`$"W?MP!(W[8`0-^U`#C?M``PW[,`*-^R`"#?L0`8W[``
+M$`/@``AGO0!8`N`H+0+`("UF!@`(#`+(QF>G``@``"@M`Z`X+3*$``\,`LC&
+M`$`P+0P"R(`"P"`M?$+X`RQ#``@08``$)`3__P`"(,``DR`49(3__]^C``@`
+M@R`D$(#_U]^F```(`LJH`D,8+P````!GO?]8_[$`8`"@B"W_L`!8_[\`H/^^
+M`)C_MP"0_[8`B/^U`(#_M`!X_[,`</^R`&C<@@`@!$$`+@"`@"WX70#P?$(]
+M0A1``1[>$P`8WF,`"!!@`!D``)`M"`+*^```("T`IR@M`B4H*Q2@`!3?OP"@
+M9$0``0"#$"L00``0``"0+0"#$"T``A!Z9%(``@`2D/A^<I(*WD4`"`(E,"L0
+MP/_PWD<`$`!`&"T`@Q`K%$#_]0"#$"T``)`MW[\`H`)`$"W?O@"8W[<`D-^V
+M`(C?M0"`W[0`>-^S`'#?L@!HW[$`8-^P`%@#X``(9[T`J`````!\5Z`"%N``
+M36;R``+87@`\`````-R2`!C>10``$*`!C@`````(`LLC)!/__P````#>10``
+M$*``.`+BN"T,`LF"`@`@+113__IF4@`(9E+_^/X``"`\`A_@K@(`(#P"$AID
+M0H0H_@(`&-X"```"(A`K%$#_U`````#>`@`@!$#_LP````#87@"0`````-X3
+M`!C>90``%*``"``````(`LL&``"0+0````!F<P`(WF4``!"@_\;?OP"@`@`@
+M+0P"RG@"(#`M$$#_^`!`D"W?OP"@`D`0+=^^`)C?MP"0W[8`B-^U`(#?M`!X
+MW[,`<-^R`&C?L0!@W[``6`/@``AGO0"H#`+)@MR%`!@`0+@M)`+__Q+B_\\`
+M`````!<0`'Q#H`,2XP$]`````(X"`"!\`J`$$N#_S:X"`"!F\@`"`!*0^`P"
+MJ:H"0"`M_Z(`.!!`_\;_H@``_$``"`P"J:H"0"`M$$```O^B``C\0``(W@(`
+M(-A>`2(`````WA(`&-Y&```0P``-WZ@`.`(`("T#H"@M#`+)\F92``C>1@``
+M%,#_^P(`("W?HP``_Z,`.-^C`#@08``$WZ@`.-T"``@6X@$L`````-X"`"`\
+M$A`+^%T`!V92,L@\$A`+/`,0"WQ"/4)F4BDX9&,?N`!BD`K?M0`($J`!#P(`
+M("W?HP`XW&,`"!!@`1#_HP!`WZ@`.#P4$AIFE(0P)`,``?^U`"@"@/`M_[4`
+M,&46`!#_HP`@90@`"/^H`$@"P)@MWZ,`,-^H`"#?H@`X_'X`$``(&/C?J`!(
+M`0/P+=^C`"#?J`!`$&@`A@``."T6DP`*``````@"S*X"@/`M`````'P"$`=D
+M0@`0`J(0+=Q>```3U``'_$```-YE``@"`"`M`D#X"=_&```$0/_U`]80+]^C
+M`#!F<P`(WZ@`(&1C``C_HP`P90@``0@"RZ+_J``@W@4`&`(`("T,`LIX`B`P
+M+=^_`*#?O@"8W[<`D`!`D"W?M@"(`D`0+=^U`(#?M`!XW[,`<-^R`&C?L0!@
+MW[``6`/@``AGO0"HW@@`&-T6``@2P/\J_Z@`(```0"UGMP`8"`++Z&>^`!#?
+MHP`0`$,0+0(B$"L40/\B9J@``0$6$"L00/\?``"0+=^C`"`"R*@M`!6H>F:R
+M``(`$I#X?'*2"HY"``1F1``$_Z@`4`P"R2``@B`O`@`H+3!4`/\`0)@M#`+(
+MH@*`("T"@"`M9D8`"`+@."T,`LC&`$`H+3)D``\``"@M`\`X+0P"R,8`0#`M
+MWZ(`&`(B&"L08/_;WZ@`4`@"R^4"H+`M,%4`_P(`*"T,`LBB`J`@+=YT``@2
+M@/[W_Z(`(#*H``\``+`M_Z@`*&>W`!@(`LP=9[X`$```````0Q`M`B(0*Q1`
+M_NUF%@`!`M00*Q!`_NH``)`M`M2`+0+@."T`$(!Z`J`@+=^E`"!F$@`"`!*0
+M^'YRD@H,`LC&9D8`"-^D`"@``"@M`\`X+0P"R,8`0#`MWZ(`&`(B&"L08/_G
+MWZ,`$`@"S!H"`*`M```@+0@"S$,``!@M`````-^H`#ADA0`"``4H^&2$``$!
+M!2@M_*8``-^H`"AD8P`!90@`"/^H`"C?J`!`$&@`"V1"``C?J``HW04`$!2@
+M__#<1@`09.4``F3G``$`!2CX`J4H+0@"S#S\I@``WZ(``-^F``C?HP`X_&0`
+M"/ZG``C<PP`(W$(`"`!B$"T6X@!:`@`@+0P"R$8"0"@MWZ@`"-^C``#=%@`(
+M_Z@`*!+``"K_HP`@W'X`"``6H/@`````WZ@`*&;6__\!%!`M$\``$MQ5``C?
+MJ``@9\,``0`#&/@(`LQQ`0.X+=[D```"8/`M9O?_^!)@``C\1```WN4```(`
+M("T"H#`M`D#X"6?3__\<0/_U`O00+=^C`"`"WA`M9$(``F:4__@``A#X`&(0
+M+1;`_^/\50``WZ@`*-QC``C=`@`(WZ@`"`!B$"W?HP`@_Z@`*/QB``@,`JFN
+MWZ0`*-^C``#>`@`8_&(``(X"`"#^`P`8)`,``7QB_\0(`LLNK@(`(-X&`!@"
+M`"`M#`+)\@.@*"W?J```"`++?_^H`#B.`P`@?$.@!!+@_I&N`P`@"`++8V;R
+M``+?I@`X#`+(1@)`*"T(`LR+WZ,``-^B`#@"H#`M```X+0@"S$\``"`MC((`
+M('P"H`0(`LLNK((`(`@"R[_?HP`P#`*@S@````",H@`$9[W_R/^R`"``@)`M
+M_[\`,&2D``3_LP`H`((@+_^Q`!@`H(@M_[``$`P"R2``P(`M`D`H+3!3`/\,
+M`LBB`F`@+68F``AGIP`(`F`@+0P"R,8`0"@MC@(`!&8$``0,`LD@`((@+P)`
+M*"TP40#_#`+(H@(@("T"("`M9@8`"`.@."T,`LC&`$`H+=^D``C?HP```&0H
+M*Q2@``,D`@`!`(,0*W!"`#K?OP`PW[,`*-^R`"#?L0`8W[``$`/@``AGO0`X
+M`````!"```\`````C((``!!```PD`___/`(2&OR@`"!P:#URK*@`(-Q(A!C\
+MI@`(_*,``/RG`!#\I``8_*@`*/Q%A!@#X``(`````!"```\`````C((``!!`
+M``PD`___/`(2&OR@`"!P9CURK*8`(-Q&A!C\H``(_*,``/R@`!#\I``8_*8`
+M*/Q%A!@#X``(`````(R"``!GO?_P_[````"`@"T00``/_[\`"`P"J:HD!``P
+M/`,2&MQEA!@D!/___$``('"&/7*L1@`@_$0``/Q```C\0``0_%``&/Q%`"C\
+M8H08W[\`"-^P```#X``(9[T`$"0"__\\`T``?$/E1#P($AK\H``@K*,`(-T#
+MA!C\I@`(_*(``/RG`!#\I``8_*,`*`/@``C]!808)`+__SP#0`!\0^5$/`82
+M&OR@`""LHP`@W,.$&/R@``C\H@``_*``$/RD`!C\HP`H`^``"/S%A!AGO?_P
+M_[````"`@"W_OP`(#`*IJB0$`#`D!O__/`5``#P#$AK\0``@?,7E1-QDA!C\
+M4``8K$4`(-^_``C?L```_$8``/Q```C\0``0_$0`*&>]`!`#X``(_&*$&```
+M``!GO?_P$(``-/^_``B,@@``$$``,3P%$AK<HX08$&``#0````#<8@`8%$0`
+M!P!@$"T(`LV"9*.$&-Q%`!@0I``>9&,`*`!`&"W<8@`H%$#_^@`````\!1(:
+MW**$(!!``!QDI80@"`+->=Q#`"``````W$,`&-QC```09``;`````&1%`"C<
+M0@`H$$``$0````#<0P`@!&#_]@````#<0P`8%&3_]]^_``C<0P`H_*,```/@
+M``AGO0`0W$0`*-^_``C\9````^``"&>]`!``````#`*@S@````#?OP`(```0
+M+0/@``AGO0`0W$,`*/RC``#<1``8#`*IKO^B``#?OP`(WZ(```/@``AGO0`0
+M``````@"S50`````C((``!1```0``````^``"```````````9[W_^/^_```,
+M`LU4`````-^_``!GO0`("`*IK@!`("UGO?^X_[$`$#P1$AK_L``(WC"$(/^T
+M`"@`@*`M_[(`&`"@D"W_OP!`_[8`./^U`#`2```._[,`(-X"````@A`K%$``
+M!P(`("T(`LX"`````-X"```"@A`K$$``0P(`("W>$``H%@#_^@`````\%A(:
+M/!,2&@````#>T(08$@``40(`("W>`@`H`H`H+0P"RMC^PH08WB.$(!!@`$0`
+M0*@MW@<``-QB````1Q`K$$``"61H`"@(`LX4_@,`*`````#<9@```,<P*Q3`
+M``4`````9&@`*-QC`"@48/_Y`````/X#`"@2H/_D_1```-X"`!#>`P`(_D(`
+M"/Y#``#>`@`@^%T`)'Q1/4("(!`M,%$`_P(`*"T,`LBB`B`@+0(@("UFI@`(
+M`Z`X+0P"R,8`0"@MWZ(``-^_`$#?M@`X_D(`$`*@$"W?M``HW[4`,-^S`"#?
+ML@`8W[$`$-^P``@#X``(9[T`2``````,`LK8`H`H+1!`_[X`0*@MW@(`$-X#
+M``C^0@`(_D,``-X"`"#87?_>?%$]0HZB``1FI``$#`+)(`""("\(`LWL,%$`
+M__X#`"AF:(0@$J#_L/T0```(`LWDW@(`$-^_`$```*@MW[8`.`*@$"W?M``H
+MW[4`,-^S`"#?L@`8W[$`$-^P``@#X``(9[T`2`````!GO?_H)`/___^P```\
+M$!(/_[\`$&80VJ#>`O_X$$,`"?^Q``AF$/_X)!'__P``````0/@)9A#_^-X"
+M```44?_\`````-^_`!#?L0`(W[````/@``AGO0`89[W_^/^_``#?OP```^``
+M"&>]``@`````9[W_T/^_`"@,``+@`````-^_`"@#X``(9[T`,```````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````1E!!(%!O
+M;VQS.B```````&%U<F$@)3)D('!O;VP@)3)L=2!A=7)A7V-N="`E,FQU('!O
+M;VQ?8VYT("4X;'4*`&EF:61X("4R9#H@``````!2>#H@)3EL;'4@<'!S("@E
+M.6QL=2D@```H)6QL=2!#5$PI(```````*"5L;'4@4$M/($5R<BD@`"@E;&QU
+M($QI;FL@17)R*2```````````"@E;&QU($1R;W!S*2`````H)6QL=2!/5D52
+M4E5.4RD@```````````H)6QL=2!$34%#($1R;W!S*2`````````H)6QL=2!&
+M0U,O0U)#($5R<BD@```````H)6QL=2!*86)B97(@17)R*2`````````H)6QL
+M=2!&<F%M92!%<G(I(``````````H)6QL=2!,,B!%<G(I(```*"5L;'4@9G=?
+M;')O7W!K=',I(```````*"5L;'4@9G=?;')O7V]C=',I(```````*"5L;'4@
+M9G=?=&]T86Q?;')O*2``````*"5L;'4@9G=?;')O7V%B;W)T<RD@````*"5L
+M;'4@9G=?;')O7V%B;W)T<U]P;W)T*2`````````H)6QL=2!F=U]L<F]?86)O
+M<G1S7W-E<2D@`````````"@E;&QU(&9W7VQR;U]A8F]R='-?='-V86PI(```
+M````*"5L;'4@9G=?;')O7V%B;W)T<U]T:6UE<BD@```````*("!4>#H@)3EL
+M;'4@<'!S("@E.6QL=2D@`````````"@E;&QU(%-(3U)4*2`````H)6QL=2!0
+M2TD@17)R*2``*"5L;'4@54Y$15)254Y3*2``````````*"5L;'4@0T],*2``
+M`````$%P<&QI8V%T:6]N(&-O;7!I;&5D('=I=&@Z(```````6R!$5519($-9
+M0TQ%(%T@`$-052!I9&QE.B`````````E9#HE,W4N)3`R=24E(```1E!!('!O
+M;VQS.B!02U0Z("5D(```````3W5T(&]F(&UE;6]R>2!I;FET:6%L:7II;F<@
+M)7,N"@!086-K970@0G5F9F5R<P``4VUA;&P@0G5F9F5R<P```%1I;65R('!O
+M;VP@8G5F9F5R<P```````$=A=&AE<B!,:7-T($5N=')I97,``````$Q23R!"
+M=69F97)S```````E<R!";V%R9"!);FET(&9A:6QE9`H````E<R!W87)N:6YG
+M+"!-86-!9&1R26YF;R!I;FET(&9A:6QE9`H`````1F%U(&%L;&]C871I;VX@
+M9F%I;&5D"@``<'1R6R5D73H@,'@E,#$V;&QX("!S:7IE.B`E9"!P;V]L("5D
+M"@```%1O=&%L($)Y=&5S.B`E9`H``````````"]V87(O=&UP+S$P-38V+VQI
+M<75I9&EO+6QI;G5X+61R:79E<BUF=W-R8RTV,V-D9C0W-C<V-S8V,#$S869B
+M-6(X-&$X93!C-#@R8SAA,F$P869B+V]C=&5O;B]S92]A<'!S+VYI8R]C=FUC
+M<RUN:6,M;6%I;BYC`&-V;7A?=W%E7V=E=%]L96XH=W%E*2`A/2`P````````
+M6R!$4E8@72!F86EL960@=&\@86QL;V-A=&4@<G-P('=Q92X*`````$524D]2
+M.B!C=FUC<U]A;&QO8U]O<E]F:6YD7W)S<U]S=&%T95]A<G)A>2!F86EL960*
+M````````15)23U(Z($9I<FUW87)E(&1U;7`@:6YI=&EA;&EZ871I;VX@9F%I
+M;&5D"@``````15)23U(Z(&UB8V%S=%]L:7-T(&EN:71I86QI>F%T:6]N(&9A
+M:6QE9`H`````````7U]P97)?8V]R95]S=&%T<P``````````=F5R<VEO;CH@
+M)7,@)7,@(&)U:6QD('1I;64Z("5S"@`Q+C8N,0```#$T,"T`````,C`Q-RTP
+M-BTR,B`Q,CHU-#HQ.0``````8V]N<V]L90!V97)B;W-E`&YQ;5]V9E]M;V1E
+M/0````!S871A7V]N;'E?;6%P````;G%M7W-Q7V-R961I=',]`&EN=')?8V]A
+M;&5S8V5?;V9F`````````&YQ;5]C<&QQ7W-I>F4]``!31$L@)7,@*"5S*0H`
+M````,RXQ+C(M<#DN,2P@8G5I;&0@-3DV````1&5V96QO<&UE;G0@0G5I;&0@
+M)7,`````2G5N(#(R(#(P,3<``````$524D]2.B!F86EL960@=&\@86QL;V,@
+M<&5R7V-O<F5?<W1A=',@87)R87D*`````$=L;V)A;"!I;FET:6%L:7IA=&EO
+M;B!O9B!C;VUP;VYE;G1S(&ES(&9A:6QE9`H````````0`#XL`````!``/BP`
+M````$`!`"``````0`#_X`````!``/^@`````$``_V``````0`#_(`````!``
+M/[@`````$``_J``````0`#^8`````!``/BP`````$``_B``````0`#]X````
+M`!``/BP`````$``_>``````0`#]X`````!``/W@`````$``^+``````0`#XL
+M`````!``/BP`````$``^+``````0`#XL`````!``/BP`````$``^+``````0
+M`#XL`````!``/BP`````$``^+``````0`#XL`````!``/BP`````$``^+```
+M```0`#XL`````!``/BP`````$``^+``````0`#XL`````!``/BP`````$``^
+M+``````0`#XL`````!``/BP`````$``^+``````0`#XL`````!``/BP`````
+M$``^+``````0`#XL`````!``/BP`````$``^+``````0`#XL`````!``/BP`
+M````$``^+``````0`#XL`````!``/BP`````$``^+``````0`#XL`````!``
+M/BP`````$``^+``````0`#XL`````!``/BP`````$``^+``````0`#XL````
+M`!``/BP`````$``^+``````0`#XL`````!``/BP`````$``^+``````0`#XL
+M`````!``/BP`````$``^+``````0`#XL`````!``/BP`````$``^+``````0
+M`#XL`````!``/BP`````$``^+``````0`#XL`````!``/BP`````$``^+```
+M```0`#XL`````!``/BP`````$``^+``````0`#XL`````!``/BP`````$``^
+M+``````0`#XL`````!``/BP`````$``^+``````0`#XL`````!``/BP`````
+M$``^+``````0`#XL`````!``/BP`````$``^+``````0`#XL`````!``/BP`
+M````$``^+``````0`#XL`````!``/BP`````$``^+``````0`#XL`````!``
+M/BP`````$``^+``````0`#XL`````!``/BP`````$``^+``````0`#XL````
+M`!``/BP`````$``^+``````0`#XL`````!``/BP`````$``^+``````0`#XL
+M`````!``/BP`````$``^+``````0`#XL`````!``/BP`````$``^+``````0
+M`#XL`````!``/BP`````$``^+``````0`#XL`````!``/BP`````$``^+```
+M```0`#XL`````!``/BP`````$``^+``````0`#\X`````!``/R@`````$``^
+MP``````0`#Z``````!``/EAC=FUC<U]N:6-?:6YI=%]G;&]B86P```!C=FUC
+M<U]N:6-?<V5N9%]T;U]P:V\```!C86YN;W0@861D+"!P;W)T(&5X:7-T<PH`
+M`````````$=-6"5D.B!!9&1I;F<@5DY)0R`E9"!T;R!)4$0@)60@34%#("4P
+M,3)L>"!G;7A?;V9F<V5T("5D"@````````!'35@E9#H@:69I9'@])60@1F%I
+M;&5D('1O(&%D9"!-04,@)3`Q,FQX(0H```````!M8V%S=%]H87-H7R5D````
+M)7,@06QL;V-A=&EO;B!F86EL960@9F]R(&AA<VA?=&%B;&4*`````"5S.B!%
+M<G)O<B!A;&QO8V%T:6YG('9N:6-?;6-A<W1?;'5T"@````!M8V%S=%]F<F5E
+M;&ES=%\E9``````````E<SH@17)R;W(@86QL;V-A=&EN9R!V;FEC7VUC87-T
+M7V9R964*````8V%N;F]T(&1E;"P@<&]R="!D;V5S(&YO="!E>&ES=`H`````
+M`````%]?;6%C7VUE;6EN9F\```!?7V]C=&YI8P``````````)7,@06QL;V-A
+M=&EO;B!F86EL960@9F]R(&]C=&YI8PH``````````%-W;W)D9FES:"`M(#0@
+M<&]R=````````%-W;W)D9FES:"`M(#(@<&]R=````````%5N:VYO=VX@*&)O
+M87)D7W1Y<&4Z("5D*0``````````8F]A<F1T>7!E.B`E<R`*`$)O87)D('1Y
+M<&4Z("5S"@`E<SH@17)R;W(@86QL;V-A=&EN9R!P:W1?<W1E97)I;F=?=&%B
+M;&4*``````````!4>"!H87)D=V%R92!T:6UE<W1A;7!I;F<@:7,@;F]T('-U
+M<'!O<G1E9"!O;B!T:&ES($]C=&5O;B!M;V1E;"X*``````````!'35@E9"!-
+M04,@)3`Q,FQ8"@````````!%4E)/4CH@)7,@<7!G(&5N=')Y(&%L;&]C(&9A
+M:6QE9`H`````````15)23U(Z("5S($)0($E$(&%L;&]C871I;VX@9F%I;&5D
+M"@```````'!O<G0E9%]C:&%N)61?875R80```````$524D]2.B`E<R!!55)!
+M("5D(&%L;&]C(&9A:6QE9`H`<V5T=&EN9R!B<&ED+25D(&]N('AP;W)T+G!O
+M<G0M)60@8VAA;BTE9"!A=7)A+25D"@`````````C(&-V;6-S.B!&86EL960@
+M=&\@:6YI=&EA;&EZ92!I;G!U="!P;W)T<PH`````````````$`!1(``````0
+M`%#\`````!``3@P`````$`!.#``````0`$X,`````!``3@P`````$`!1.```
+M```0`$X,`````!``3@P`````$`!.#``````0`$X,`````!``3@P`````$`!.
+M#``````0`$X,`````!``3@P`````$`!.#``````0`$X,`````!``4.``````
+M$`!.#``````0`$X,`````!``3@P`````$`!.#``````0`$X,`````!``3@P`
+M````$`!.#``````0`$X,`````!``3@P`````$`!.#``````0`%",`````!``
+M3@P`````$`!.#``````0`$X,`````!``3@P`````$`!/V``````0`$X,````
+M`!``3@P`````$`!.;``````0`$X,`````!``3@P`````$`!.#``````0`$X,
+M`````!``3]AA9&1?<&]R=%]T;U]N:6,`:&%S:%]T86)L95]A;&QO8P``````
+M````8W9M8W-?;FEC7VEN:71?8F]A<F1?:6YF;P````````!C=FUC<U]N:6-?
+M:6YI=%]B;V%R9%]I;F9O`````````&-V;6-S7VYI8U]I;FET7V=M>%]P86-K
+M971?:6\`````)2XJ<P````!I9FED>"`E9"!0;W)T("5D.B`E9"!-8G!S("5S
+M(&1U<&QE>"`E<PH`1G5L;`````!(86QF`````%50````````1$]73@````!7
+M05).24Y'.B!T:&5R92!A<F4@<W1I;&P@)6QU(&)U9F9E<G,@;&5F="!I;B!!
+M55)!+25D(&]F(&EF:61X+25D+"!T>'!C:7$M)60@870@=&AE('1I;64@;V8@
+M<75E=64@8VQE86YU<`H`````````"@I;($125B!=($9A:6QE9"!T;R!S96YD
+M($]00T]$15].24-?5D9?1%)67TY/5$E#12$A(0H```!3<&5E9#H@,3!B87-E
+M7W1X7VAA;&8@``!3<&5E9#H@,3!B87-E7W1X7V9U;&P@``!3<&5E9#H@,3`P
+M8F%S95]T>%]H86QF(`!3<&5E9#H@,3`P8F%S95]T>%]F=6QL(`!3<&5E9#H@
+M,3`P,&)A<V5?='A?:&%L9B```````````%-P965D.B`Q,#`P8F%S95]T>%]F
+M=6QL(```````````)7,Z(%!(62!A9&1R97-S(&EN=F%L:60@9F]R('!O<G0@
+M)60*`````&EF:61X.B5D($YO="!S96YD:6YG($Y)0U])3D9/(&)E8V%U<V4@
+M:6YT97)F86-E(&ES(&YO="!U<`H```````!I9FED>#HE9"!396YD:6YG($Y)
+M0U])3D9/("A/43H@)60@;&EN:SH@)7,@<W0Z("5L>"D*`````$9A:6QE9"!T
+M;R!S96YD($Y)0U])3D9/"@``````````:69I9'@Z)60@1F%I;&5D('1O(&%L
+M;&]C(&QI;FM?:6YF;R$A(0H``%L@1%)6(%TZ(&-V;5]F<F5E7VAO<W1?:6YS
+M='(Z($Y53$P@5U%%``!C;&5A<B!A="!L:6YK=7`@;&%T8VAE9%]B97(])60@
########## TRUNCATED ###########