This patch will upgrade Sudo version 1.6.9 patchlevel 16 to Sudo
version 1.6.9 patchlevel 17.  To apply:

    $ cd sudo-1.6.9p16
    $ patch -p1 < sudo-1.6.9p17.patch

diff -ura sudo-1.6.9p16/CHANGES sudo-1.6.9p17/CHANGES
--- sudo-1.6.9p16/CHANGES	Thu May  8 15:44:30 2008
+++ sudo-1.6.9p17/CHANGES	Wed Jun 25 14:51:44 2008
@@ -2094,3 +2094,19 @@
      in sudoers, a syntax error in sudoers was incorrectly reported.
 
 Sudo 1.6.9p16 released.
+
+660) The -i flag should imply resetting the environment, as it did in
+     sudo version prior to 1.6.9.  Also, the -i and -E flags are
+     mutually exclusive.
+
+661) Fixed the configure test for dirfd() under Linux.
+
+662) Fixed test for whether -lintl is required to link.
+
+663) Changed how sudo handles the child process when sending mail.
+     This fixes a problem on Linux with the mail_always option.
+
+664) Fixed a problem with line continuation characters inside of
+     quoted strings.
+
+Sudo 1.6.9p17 released.
diff -ura sudo-1.6.9p16/Makefile.in sudo-1.6.9p17/Makefile.in
--- sudo-1.6.9p16/Makefile.in	Thu May  8 15:48:23 2008
+++ sudo-1.6.9p17/Makefile.in	Sun Jun 22 16:29:03 2008
@@ -20,7 +20,7 @@
 #
 # @configure_input@
 #
-# $Sudo: Makefile.in,v 1.246.2.31 2008/05/08 19:48:23 millert Exp $
+# $Sudo: Makefile.in,v 1.246.2.32 2008/06/22 20:29:03 millert Exp $
 #
 
 #### Start of system configuration section. ####
@@ -133,7 +133,7 @@
 
 LIBOBJS = @LIBOBJS@ @ALLOCA@
 
-VERSION = 1.6.9p16
+VERSION = 1.6.9p17
 
 DISTFILES = $(SRCS) $(HDRS) BUGS CHANGES HISTORY INSTALL INSTALL.configure \
             LICENSE Makefile.in PORTING README README.LDAP \
diff -ura sudo-1.6.9p16/config.h.in sudo-1.6.9p17/config.h.in
--- sudo-1.6.9p16/config.h.in	Sat Feb  9 09:44:42 2008
+++ sudo-1.6.9p17/config.h.in	Sun Jun 22 16:19:54 2008
@@ -323,6 +323,9 @@
 /* Define to 1 if you have the `setrlimit' function. */
 #undef HAVE_SETRLIMIT
 
+/* Define to 1 if you have the `setsid' function. */
+#undef HAVE_SETSID
+
 /* Define to 1 if you have the `set_auth_parameters' function. */
 #undef HAVE_SET_AUTH_PARAMETERS
 
diff -ura sudo-1.6.9p16/configure sudo-1.6.9p17/configure
--- sudo-1.6.9p16/configure	Thu Apr 10 12:50:07 2008
+++ sudo-1.6.9p17/configure	Sun Jun 22 16:19:54 2008
@@ -15531,9 +15531,10 @@
 
 
 
+
 for ac_func in strchr strrchr memchr memcpy memset sysconf tzset \
 	       strftime setrlimit initgroups getgroups fstat gettimeofday \
-	       setlocale getaddrinfo
+	       setlocale getaddrinfo setsid
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -18310,7 +18311,7 @@
 int
 main ()
 {
-DIR d; (void)dirfd(&d);
+DIR *d; (void)dirfd(d);
   ;
   return 0;
 }
@@ -20116,56 +20117,20 @@
 
 	case $host in
 	    *-*-linux*|*-*-solaris*)
-
-for ac_func in dgettext
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
+		    # dgettext() may be defined to dgettext_libintl in the
+		    # header file, so first check that it links w/ additional
+		    # libs, then try with -lintl
+		    cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
+#include <libintl.h>
 int
 main ()
 {
-return $ac_func ();
+(void)dgettext((char *)0, (char *)0);
   ;
   return 0;
 }
@@ -20188,27 +20153,15 @@
 	 test ! -s conftest.err
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
+  cat >>confdefs.h <<\_ACEOF
+#define HAVE_DGETTEXT 1
+_ACEOF
+
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	eval "$as_ac_var=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  { echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5
+	{ echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5
 echo $ECHO_N "checking for dgettext in -lintl... $ECHO_C" >&6; }
 if test "${ac_cv_lib_intl_dgettext+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -20278,8 +20231,9 @@
 fi
 
 fi
-done
 
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
 		    ;;
 	esac
     fi
diff -ura sudo-1.6.9p16/configure.in sudo-1.6.9p17/configure.in
--- sudo-1.6.9p16/configure.in	Thu Apr 10 12:52:36 2008
+++ sudo-1.6.9p17/configure.in	Sun Jun 22 16:23:56 2008
@@ -1,6 +1,6 @@
 dnl
 dnl Process this file with GNU autoconf to produce a configure script.
-dnl $Sudo: configure.in,v 1.413.2.50 2008/04/10 16:52:36 millert Exp $
+dnl $Sudo: configure.in,v 1.413.2.53 2008/06/22 20:23:56 millert Exp $
 dnl
 dnl Copyright (c) 1994-1996,1998-2007 Todd C. Miller <Todd.Miller@courtesan.com>
 dnl
@@ -1709,7 +1709,7 @@
 AC_FUNC_GETGROUPS
 AC_CHECK_FUNCS(strchr strrchr memchr memcpy memset sysconf tzset \
 	       strftime setrlimit initgroups getgroups fstat gettimeofday \
-	       setlocale getaddrinfo)
+	       setlocale getaddrinfo setsid)
 if test -z "$SKIP_SETRESUID"; then
     AC_CHECK_FUNCS(setresuid, [SKIP_SETREUID=yes])
 fi
@@ -1764,7 +1764,7 @@
 dnl Check for the dirfd function/macro.  If not found, look for dd_fd in DIR.
 dnl
 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <$ac_header_dirent>]], [[DIR d; (void)dirfd(&d);]])], [AC_DEFINE(HAVE_DIRFD)], [AC_TRY_LINK([#include <sys/types.h>
+#include <$ac_header_dirent>]], [[DIR *d; (void)dirfd(d);]])], [AC_DEFINE(HAVE_DIRFD)], [AC_TRY_LINK([#include <sys/types.h>
 #include <$ac_header_dirent>], [DIR d; memset(&d, 0, sizeof(d)); return(d.dd_fd);], [AC_DEFINE(HAVE_DD_FD)])])
 dnl
 dnl If NEED_SNPRINTF is set, add snprintf.c to LIBOBJS
@@ -1867,8 +1867,13 @@
 	    esac], AC_MSG_RESULT(yes))
 	case $host in
 	    *-*-linux*|*-*-solaris*)
-		    AC_CHECK_FUNCS(dgettext, [],
-			[AC_CHECK_LIB(intl, dgettext, [LIBS="${LIBS} -lintl"]
+		    # dgettext() may be defined to dgettext_libintl in the
+		    # header file, so first check that it links w/ additional
+		    # libs, then try with -lintl
+		    AC_LINK_IFELSE([AC_LANG_PROGRAM(
+		    [[#include <libintl.h>]], [(void)dgettext((char *)0, (char *)0);])],
+		    [AC_DEFINE(HAVE_DGETTEXT)],
+		    [AC_CHECK_LIB(intl, dgettext, [LIBS="${LIBS} -lintl"]
 			[AC_DEFINE(HAVE_DGETTEXT)])])
 		    ;;
 	esac
diff -ura sudo-1.6.9p16/env.c sudo-1.6.9p17/env.c
--- sudo-1.6.9p16/env.c	Thu Mar 13 07:34:57 2008
+++ sudo-1.6.9p17/env.c	Sat Jun 21 15:04:07 2008
@@ -52,7 +52,7 @@
 #include "sudo.h"
 
 #ifndef lint
-__unused static const char rcsid[] = "$Sudo: env.c,v 1.39.2.18 2008/03/13 11:34:57 millert Exp $";
+__unused static const char rcsid[] = "$Sudo: env.c,v 1.39.2.19 2008/06/21 19:04:07 millert Exp $";
 #endif /* lint */
 
 /*
@@ -406,7 +406,7 @@
     ps1 = NULL;
     didvar = 0;
     memset(&env, 0, sizeof(env));
-    if (def_env_reset) {
+    if (def_env_reset || ISSET(sudo_mode, MODE_LOGIN_SHELL)) {
 	/* Pull in vars we want to keep from the old environment. */
 	for (ep = envp; *ep; ep++) {
 	    int keepit;
@@ -537,6 +537,7 @@
 #endif
 
     /* Set $USER, $LOGNAME and $USERNAME to target if "set_logname" is true. */
+    /* XXX - not needed for MODE_LOGIN_SHELL */
     if (def_set_logname && runas_pw->pw_name) {
 	if (!ISSET(didvar, KEPT_LOGNAME))
 	    insert_env(format_env("LOGNAME", runas_pw->pw_name, VNULL), &env, 1);
@@ -547,6 +548,7 @@
     }
 
     /* Set $HOME for `sudo -H'.  Only valid at PERM_FULL_RUNAS. */
+    /* XXX - not needed for MODE_LOGIN_SHELL */
     if (runas_pw->pw_dir) {
 	if (ISSET(sudo_mode, MODE_RESET_HOME) ||
 	    (ISSET(sudo_mode, MODE_RUN) && (def_always_set_home ||
diff -ura sudo-1.6.9p16/lex.yy.c sudo-1.6.9p17/lex.yy.c
--- sudo-1.6.9p16/lex.yy.c	Fri Apr 11 10:05:42 2008
+++ sudo-1.6.9p17/lex.yy.c	Thu Jun 26 07:54:11 2008
@@ -3,7 +3,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /home/cvs/courtesan/sudo/Attic/lex.yy.c,v 1.46.2.9 2008/02/09 14:44:47 millert Exp $
+ * $Header: /home/cvs/courtesan/sudo/Attic/lex.yy.c,v 1.46.2.11 2008/06/26 11:53:49 millert Exp $
  */
 
 #define FLEX_SCANNER
@@ -285,77 +285,77 @@
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 47
-#define YY_END_OF_BUFFER 48
+#define YY_NUM_RULES 48
+#define YY_END_OF_BUFFER 49
 static yyconst short int yy_accept[610] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   48,   37,   43,   42,   41,   46,
-       37,   30,   46,   37,   38,   37,   37,   37,   37,   40,
-       39,   31,   31,   31,   31,   31,   31,   46,   37,   37,
-       31,   31,   31,   31,   31,   32,   46,   32,   34,   32,
-       32,   32,   32,   32,   31,   31,   31,   31,   31,   31,
-       46,   32,   32,    1,   15,   14,   15,   14,   14,   46,
-       46,    2,    8,    7,    8,    3,    8,    4,   46,   11,
-       11,   11,   10,   11,   37,    0,   43,   41,    0,   45,
-       25,    0,   24,    0,   36,   36,    0,   37,   37,    0,
+        0,    0,    0,    0,   49,   38,   44,   43,   42,   47,
+       38,   31,   47,   38,   39,   38,   38,   38,   38,   41,
+       40,   32,   32,   32,   32,   32,   32,   47,   38,   38,
+       32,   32,   32,   32,   32,   33,   47,   33,   35,   33,
+       33,   33,   33,   33,   32,   32,   32,   32,   32,   32,
+       47,   33,   33,    1,   16,   15,   16,   15,   15,   47,
+       47,    2,    8,    7,    8,    3,    8,    4,   47,   12,
+       12,   12,   10,   11,   38,    0,   44,   42,    0,   46,
+       26,    0,   25,    0,   37,   37,    0,   38,   38,    0,
 
-       37,   37,   37,   37,    0,   28,   31,   31,   31,   31,
-       31,   31,   37,   44,   37,   37,   37,   37,   37,   37,
-       32,    0,    0,   32,   25,    0,   24,    0,   32,    0,
-       32,   32,   32,   32,   32,   32,   31,   31,   31,   31,
-       31,   31,   32,   32,    1,   15,   15,   13,   12,   13,
-        0,    2,    8,    0,    5,    6,    8,    8,   11,   11,
-       11,   11,   11,    9,    0,   37,   37,   37,   37,   37,
-        0,    0,   28,   28,   31,   31,   31,   31,   31,   31,
-       31,   37,   37,   37,   37,   37,   37,    0,   33,   32,
-       32,   32,   32,   32,   31,   31,   31,   31,   31,   31,
+       38,   38,   38,   38,    0,   29,   32,   32,   32,   32,
+       32,   32,   38,   45,   38,   38,   38,   38,   38,   38,
+       33,    0,    0,   33,   26,    0,   25,    0,   33,    0,
+       33,   33,   33,   33,   33,   33,   32,   32,   32,   32,
+       32,   32,   33,   33,    1,   16,   16,   14,   13,   14,
+        0,    2,    8,    0,    5,    6,    8,    8,   12,    0,
+       12,   12,    0,    9,    0,   38,   38,   38,   38,   38,
+        0,    0,   29,   29,   32,   32,   32,   32,   32,   32,
+       32,   38,   38,   38,   38,   38,   38,    0,   34,   33,
+       33,   33,   33,   33,   32,   32,   32,   32,   32,   32,
 
-       31,   32,    9,   37,   37,   37,   37,   37,   37,    0,
-       29,   29,   29,    0,    0,   28,   28,   28,   28,   28,
-       28,   28,   31,   31,   31,   31,   31,   31,   31,   37,
-       37,   37,   37,   32,   32,   32,   32,   32,   32,   31,
-       31,   31,   31,   31,   31,   31,   32,   37,   37,   37,
-        0,    0,   29,   29,   29,    0,   28,   28,    0,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-        0,   21,   31,   31,   31,   31,   31,   37,   37,   37,
-       32,   32,   32,   31,   31,   31,   31,   31,   32,   37,
-       37,   37,   37,   37,    0,   29,    0,   28,   28,   28,
+       32,   33,    9,   38,   38,   38,   38,   38,   38,    0,
+       30,   30,   30,    0,    0,   29,   29,   29,   29,   29,
+       29,   29,   32,   32,   32,   32,   32,   32,   32,   38,
+       38,   38,   38,   33,   33,   33,   33,   33,   33,   32,
+       32,   32,   32,   32,   32,   32,   33,   38,   38,   38,
+        0,    0,   30,   30,   30,    0,   29,   29,    0,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
+        0,   22,   32,   32,   32,   32,   32,   38,   38,   38,
+       33,   33,   33,   32,   32,   32,   32,   32,   33,   38,
+       38,   38,   38,   38,    0,   30,    0,   29,   29,   29,
 
-        0,    0,    0,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   31,   31,   31,   31,
-       31,   37,   37,   37,   32,   32,   32,   32,   32,   31,
-       31,   31,   31,   31,   32,   26,   26,   26,    0,    0,
-       28,   28,   28,   28,   28,   28,   28,    0,    0,    0,
-        0,    0,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,    0,   20,   31,   31,
-        0,   19,    0,   22,   37,   37,   37,   26,   26,   26,
-       31,   31,   32,   37,   26,   26,   26,   26,    0,   28,
-        0,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+        0,    0,    0,   29,   29,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   32,   32,   32,   32,
+       32,   38,   38,   38,   33,   33,   33,   33,   33,   32,
+       32,   32,   32,   32,   33,   27,   27,   27,    0,    0,
+       29,   29,   29,   29,   29,   29,   29,    0,    0,    0,
+        0,    0,   29,   29,   29,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,    0,   21,   32,   32,
+        0,   20,    0,   23,   38,   38,   38,   27,   27,   27,
+       32,   32,   33,   38,   27,   27,   27,   27,    0,   29,
+        0,   29,   29,   29,   29,   29,   29,   29,   29,   29,
 
-       28,   28,    0,    0,    0,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   31,   31,
-       35,   37,   16,   32,   26,   26,   26,   26,   31,   31,
-       32,   37,   27,   27,   27,   28,    0,    0,    0,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,    0,    0,    0,    0,    0,   28,   28,   28,
-       28,   28,   28,   28,   28,    0,   18,    0,   23,   37,
-       16,   32,   27,   27,   27,   37,   37,   27,   27,   27,
-       27,   27,    0,    0,    0,    0,    0,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       29,   29,    0,    0,    0,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   32,   32,
+       36,   38,   17,   33,   27,   27,   27,   27,   32,   32,
+       33,   38,   28,   28,   28,   29,    0,    0,    0,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
+       29,   29,    0,    0,    0,    0,    0,   29,   29,   29,
+       29,   29,   29,   29,   29,    0,   19,    0,   24,   38,
+       17,   33,   28,   28,   28,   38,   38,   28,   28,   28,
+       28,   28,    0,    0,    0,    0,    0,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
 
-       28,   28,   28,   28,   28,   28,   28,   17,   32,   32,
-       27,   27,   27,   27,   27,   37,   37,   37,   27,   27,
-        0,    0,    0,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   32,   32,   32,   27,   27,   37,   37,   37,   37,
-       37,    0,    0,    0,    0,    0,   28,   28,   28,   28,
-       28,   28,   28,   28,   32,   32,   32,   32,   32,   37,
-       37,   37,   28,   28,   28,   28,   28,   28,   32,   32,
-       32,   37,   37,   37,   37,   37,   28,   28,   28,   28,
-       28,   32,   32,   32,   32,   32,   26,   26,   26,   26,
+       29,   29,   29,   29,   29,   29,   29,   18,   33,   33,
+       28,   28,   28,   28,   28,   38,   38,   38,   28,   28,
+        0,    0,    0,   29,   29,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
+       29,   33,   33,   33,   28,   28,   38,   38,   38,   38,
+       38,    0,    0,    0,    0,    0,   29,   29,   29,   29,
+       29,   29,   29,   29,   33,   33,   33,   33,   33,   38,
+       38,   38,   29,   29,   29,   29,   29,   29,   33,   33,
+       33,   38,   38,   38,   38,   38,   29,   29,   29,   29,
+       29,   33,   33,   33,   33,   33,   27,   27,   27,   27,
 
-       26,   26,   26,   26,   26,   26,   26,   26,    0
+       27,   27,   27,   27,   27,   27,   27,   27,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -403,79 +403,79 @@
 static yyconst short int yy_base[681] =
     {   0,
         0,   32,   72,    0,   62,  131,  132,  139,  182,  241,
-      300,  343,  145,  150, 3100, 3055, 3096, 3790, 3093, 3093,
-     3051, 3790, 3790, 3028, 3790,  161,  374,  179,  161, 3038,
-     3790,  424, 3009,  469, 3005, 3012, 3007,  518,  190,  102,
-     2983, 2987, 2957, 2943, 2935, 2939,  201, 2929, 3790, 2919,
-      306,  531,  232,  240,  581, 2910,  626, 2882, 2881, 2867,
-      675,  248,  114, 2888,    0, 3790, 2875,    0, 3790,  314,
-       64,    0, 2825, 3790,  115, 3790,  146, 3790,  158, 2805,
-      171,  275, 3790,  278, 2804,  355, 2845, 2842, 2842, 3790,
-     2794,  684, 2778,  709,  325, 2767,  718,  355,  729, 2777,
+      300,  343,  145,  150, 3097, 3052, 3093, 3790, 3068, 3059,
+     3008, 3790, 3790, 2996, 3790,  161,  374,  179,  161, 3015,
+     3790,  424, 2995,  469, 3002, 3009, 2982,  518,  190,  102,
+     2949, 2944, 2927, 2913, 2905, 2909,  201, 2873, 3790, 2864,
+      306,  531,  232,  240,  581, 2855,  626, 2855, 2852, 2838,
+      675,  248,  114, 2847,    0, 3790, 2844,    0, 3790,  314,
+       64,    0, 2803, 3790,  115, 3790,  146, 3790,  158, 2802,
+      171,  275, 3790,  270, 2801,  355, 2836, 2818, 2808, 3790,
+     2757,  684, 2739,  709,  325, 2729,  718,  355,  729, 2739,
 
-     2769,  390,  485,  256, 2749,  151,  764,    0, 2732,  292,
-     2715, 2660,  338, 3790,  124,  148,  232,  263,  287,  316,
-     2652,  794, 2692,    0, 2644,  819, 2633,  828,  530,  853,
-      549,  864, 2645,  642,  745,  493,  899,    0, 2618,  497,
-     2599, 2597,  382,  318, 2633,    0, 2630,  306, 3790, 3790,
-      333,    0, 2566,  700, 3790, 3790, 2524,  492, 2508,  384,
-      529,  339,  692, 2549,  844,  936,  880,  650,  967, 2535,
-     2509, 1002,  201, 1038, 1073, 2503, 2488, 2471, 2453, 2445,
-     2445,  371,  388, 2419,  219,  147,  373, 2459, 3790, 1110,
-      915,  753, 1141, 2433, 1176, 2405, 2372, 2387, 2327, 2291,
+     2739,  390,  485,  493, 2675,  151,  764,    0, 2665,  245,
+     2657, 2649,  338, 3790,  124,  148,  232,  219,  287,  278,
+     2633,  794, 2656,    0, 2605,  819, 2593,  828,  530,  853,
+      549,  864, 2622,  642,  745,  650,  899,    0, 2604,  292,
+     2596, 2571,  382,  230, 2566,    0, 2548,  305, 3790, 3790,
+      333,    0, 2507,  700, 3790, 3790, 2505,  492, 2489, 2527,
+      384,  339,  350, 2529,  844,  936,  880,  720,  967, 2484,
+     2460, 1002,  201, 1038, 1073, 2454, 2433, 2438, 2431, 2409,
+     2403,  265,  236, 2369,  356,  147,  370, 2411, 3790, 1110,
+      915,  753, 1141, 2399, 1176, 2354, 2315, 2302, 2283, 2275,
 
-     2283,  481, 2311,  947,  356,    0,    0,  330,  539, 2288,
-     2271,  955,  687, 2270, 2236,  508,  983, 1213, 1018,  854,
-     1249, 1056, 2222,  582, 2214, 2200, 2188, 2182, 2158,  370,
-      405,  695,  532, 1090,  372,    0,    0,  518,  563, 2167,
-      683, 2128, 2119, 2102, 2097, 2089,  679, 1121, 1159, 1194,
-     2098, 2097, 1129, 2096, 2080, 2079, 2033,  665, 1229,  717,
+     2281,  479, 2293,  947,  375,    0,    0,  343,  392, 2270,
+     2236,  955,  515, 2222, 2221,  513,  983, 1213, 1018,  854,
+     1249, 1056, 2214,  539, 2196, 2186, 2153, 2149, 2125,  540,
+      388,  764,  529, 1090,  532,    0,    0,  427,  661, 2133,
+      583, 2110, 2101, 2084, 2080, 2087,  645, 1121, 1159, 1194,
+     2095, 2080, 1129, 2080, 2033, 2032, 2021,  667, 1229,  683,
      1265,  775, 1286,    0, 1304, 1323, 1339,  888, 1359, 1377,
-      714, 3790, 2027, 2007, 2007, 2007, 1962,  541,  502,  638,
-     1396, 1406, 1416, 1973, 1951, 1957, 1927, 1915,  753, 1424,
-      791, 1434, 1444, 1455, 1931, 1930, 1929, 1927, 1484,  792,
+      729, 3790, 2009, 1999, 1972, 1972, 1948,  481,  513,  651,
+     1396, 1406, 1416, 1959, 1919, 1925, 1925, 1913,  675, 1424,
+      791, 1434, 1444, 1455, 1926, 1873, 1856, 1819, 1484,  792,
 
-     1936, 1884, 1463,  793,  824,  827, 1471,  852, 1521,    0,
-     1502, 1558, 1537,  923, 1594, 1576,  802, 1855, 1862,  958,
-     1040,   19,  771,  670, 1610,  819, 1639, 1649, 1631, 1081,
-     1839, 1846, 1112, 1251, 1019, 1661, 1669,  991, 1855, 1819,
-     1801, 1677, 1692, 1708, 1273, 1727, 1745, 1762, 1810, 1773,
-     1757, 1772,  834, 1101, 1387, 1622, 1778, 1788, 1799,    0,
-     1817, 1836, 1788, 1347, 1872, 1854, 1324, 3790, 1723, 1711,
-     1325, 3790, 1522, 3790,  984, 1122,  696, 1908, 1888, 1545,
-     1688, 1660, 1038, 1916,  845,    0,    0,  629, 1615, 1614,
-     1924,  313, 1945,  937, 1955,    0, 1966, 1977, 1993, 1716,
+     1811, 1810, 1463,  802,  824,  827, 1471,  852, 1521,    0,
+     1502, 1558, 1537,  923, 1594, 1576,  730, 1745, 1737,  958,
+     1040,   19,  805,  670, 1610,  819, 1639, 1649, 1631, 1081,
+     1711, 1718, 1112, 1251,  318, 1661, 1669,  991, 1694, 1677,
+     1615, 1677, 1692, 1708, 1273, 1727, 1745, 1762, 1624, 1621,
+     1620, 1772, 1056, 1101, 1387, 1622, 1778, 1788, 1799,    0,
+     1817, 1836, 1788, 1347, 1872, 1854, 1324, 3790, 1590, 1578,
+     1325, 3790, 1522, 3790,  984,  757,  771, 1908, 1888, 1545,
+     1572, 1543, 1038, 1916,  636,    0,    0,  866, 1559, 1505,
+     1924,  937, 1945, 1142, 1955,    0, 1966, 1977, 1993, 1716,
 
-     2012, 2030, 1621, 1620, 2049, 1141, 1185, 1934, 2040, 2057,
+     2012, 2030, 1496, 1482, 2049, 1150, 1185, 1934, 2040, 2057,
      2067, 2078,    0, 2096, 2115, 2067, 1896, 2133, 1523, 1837,
-     1576,  844, 1194, 2150, 1377,    0,    0,  675, 1838, 1957,
-     1575, 2181, 2158, 2166,  907, 1579, 1570, 1569, 2191, 1505,
+     1434,  879, 1194, 2150, 1377,    0,    0,  970, 1838, 1957,
+     1426, 2181, 2158, 2166, 1028, 1407, 1390, 1389, 2191, 1306,
      1435, 1577, 2199, 1650, 2212,    0, 2223, 2234, 2250, 2001,
-     2269, 2287, 2304, 1496, 1482, 1464, 2314, 1745, 1854, 2322,
-      978, 1030, 2333,    0, 2324, 1968, 3790, 2116, 3790, 1451,
-     3790, 2343, 2351, 2359, 1167, 2372, 1483, 2380, 2388, 2401,
-     2409, 2419, 2422, 1456, 1417, 1390, 2432, 1379, 1361, 1693,
+     2269, 2287, 2304, 1260, 1244, 1225, 2314, 1745, 1854, 2322,
+     1084, 1103, 2333,    0, 2324, 1968, 3790, 2116, 3790, 1451,
+     3790, 2343, 2351, 2359, 1167, 2372,  846, 2380, 2388, 2401,
+     2409, 2419, 2422, 1172, 1153, 1101, 2432, 1057, 1039, 1693,
      2134, 2438, 2182, 2450,    0, 2461, 2472, 2488, 2258, 2507,
 
-     2525, 1369, 1315, 2543, 2287, 1259, 1032, 1214, 2553, 1484,
+     2525, 1032, 1012, 2543, 2287,  947, 1187,  880, 2553, 1483,
      2561, 2569, 2577, 2585, 2595, 2600, 2610, 2624, 2634, 2368,
-     1225, 1172, 2644, 1143, 1093, 2235, 2473, 2652, 2526, 2662,
-        0, 2673, 2684, 2700, 2496, 2721, 1012,  947,  849, 2730,
-      832, 2738, 2748, 2758, 2768, 2692, 2776, 1659, 2786, 2796,
-     2807, 2813,  815,  808,  795, 2823,  764,  729, 2601,  723,
-      550, 2836,    0, 1058, 2844, 2146, 2854, 2864, 2875, 2883,
-     2893, 2904, 2912, 2920, 2928,  533,    0,  419, 2938, 2948,
-     2958, 2968, 2179, 2978, 2988, 2998, 3790, 3004, 3012, 2708,
-     3790, 3027, 2369, 3037, 3047, 3057, 3063, 3071, 3100, 3108,
+      850,  833, 2644,  798,  780, 2235, 2473, 2652, 2526, 2662,
+        0, 2673, 2684, 2700, 2496, 2721,  782,  740,  713, 2730,
+      701, 2738, 2748, 2758, 2768, 2692, 2776, 1484, 2786, 2796,
+     2807, 2813,  689,  638,  592, 2823,  566,  559, 2601,  550,
+      416, 2836,    0, 1232, 2844, 1659, 2854, 2864, 2875, 2883,
+     2893, 2904, 2912, 2920, 2928,  393,    0,  346, 2938, 2948,
+     2958, 2968, 2146, 2978, 2988, 2998, 3790, 3004, 3012, 2708,
+     3790, 3027, 2179, 3037, 3047, 3057, 3063, 3071, 3100, 3108,
 
-     3116, 3145,  240, 3153, 3137,  123, 3182, 3166, 3790, 3226,
+     3116, 3145,  293, 3153, 3137,  123, 3182, 3166, 3790, 3226,
      3241, 3256, 3271, 3286, 3301, 3316, 3331, 3346, 3352, 3367,
-     3382, 3397, 3412, 3427, 3442, 1084, 3457, 3472, 3487, 3502,
-     3508, 3515, 3530, 1108, 3536, 3543, 3549, 3555, 3561, 3568,
-     3574, 3580, 3586, 3593, 3601, 3607, 3613, 3619, 1211, 1246,
-     3626, 3634, 3640, 3646, 3653, 3661, 3667, 3675, 1247, 1321,
-     3682, 3690, 1592, 1694, 3696, 3704, 3711, 3719, 3725, 3733,
-     1192, 1302, 3740, 1762, 1834, 3746, 3754, 3760, 3768, 3774
+     3382, 3397, 3412, 3427, 3442, 1242, 3457, 3472, 3487, 3502,
+     3508, 3515, 3530, 1593, 3536, 3543, 3549, 3555, 3561, 3568,
+     3574, 3580, 3586, 3593, 3601, 3607, 3613, 3619, 1211, 1321,
+     3626, 3634, 3640, 3646, 3653, 3661, 3667, 3675, 1694, 1762,
+     3682, 3690, 1834, 1871, 3696, 3704, 3711, 3719, 3725, 3733,
+     1302, 1375, 3740, 1888, 1943, 3746, 3754, 3760, 3768, 3774
     } ;
 
 static yyconst short int yy_def[681] =
@@ -488,7 +488,7 @@
       624,  620,   52,   52,  609,   55,   55,   57,   57,   57,
       620,   52,  620,  609,  625,  609,  625,  625,  609,  609,
       609,  626,  627,  609,  627,  609,  627,  609,  628,  629,
-      629,  629,  609,  629,  614,  614,  609,  609,  615,  609,
+      629,  629,  609,  609,  614,  614,  609,  609,  615,  609,
       616,  616,  617,  617,  618,  630,  614,  614,   27,  619,
 
        99,   99,   99,   99,  631,  632,   32,   34,   34,   34,
@@ -496,8 +496,8 @@
       620,  620,  633,  634,  622,  622,  623,  623,  624,  620,
       620,   52,  132,  132,  132,  132,   55,   57,   57,   57,
        57,   57,  620,  620,  609,  625,  625,  609,  609,  609,
-      609,  626,  627,  627,  609,  609,  627,  627,  629,  629,
-      629,  629,  629,  609,  609,  614,  166,  166,   99,  169,
+      609,  626,  627,  627,  609,  609,  627,  627,  629,  609,
+      629,  629,  609,  609,  609,  614,  166,  166,   99,  169,
       635,  609,  636,  609,   32,   34,   34,   34,   34,   34,
        34,  614,  614,  169,  614,  614,  614,  633,  609,  620,
       190,  190,  132,  193,   55,   57,   57,   57,   57,   57,
@@ -587,317 +587,317 @@
        72,   72,   17,   18,   19,   85,   20,  134,  134,  134,
       134,  134,  134,  134,  134,  135,  135,  135,  135,  135,
       136,  121,   86,  133,  133,  133,  133,  133,  133,  133,
-      133,  170,  170,  170,  170,  170,  170,  231,  162,  163,
-      164,  184,  159,   86,   71,   72,   72,   72,   72,   72,
+      133,  163,  164,  122,  159,  177,  185,  202,  162,   86,
+      178,  184,  179,  231,   71,   72,   72,   72,   72,   72,
        72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
 
-       72,   17,   18,   19,   74,   20,   86,  151,  114,   96,
+       72,   17,   18,   19,   74,   20,  151,  114,   86,   96,
        75,   76,   77,   96,   96,  148,  114,  149,  160,  150,
-      185,  160,  177,  149,   78,  150,  391,  178,   96,  179,
-       86,   96,   96,   96,  151,  114,  393,  150,  150,  151,
+      230,   86,  197,  149,   78,  150,  187,  198,   96,  199,
+       86,   96,   96,   96,  151,  114,   86,  150,  150,  151,
       114,  186,  162,   79,   17,   18,   19,   74,   20,  130,
-       96,   85,   85,   75,   76,   77,   85,  150,   85,   86,
-       85,  122,   85,   85,  187,  202,   85,   78,   97,  204,
+       96,  163,  164,   75,   76,   77,   85,  150,   85,  391,
+       85,  122,   85,   85,   85,   85,   85,   78,   97,  383,
       166,  167,  168,  166,  166,  166,  166,  166,   85,   85,
-       85,   86,  160,  151,  114,  234,   79,   98,  159,   99,
+       85,   86,  160,  151,  114,  161,   79,   98,  204,   99,
        99,   99,   99,   99,   99,   99,   99,  100,   86,   86,
 
       101,  101,  101,  101,  101,  170,  170,  170,  170,  170,
-      170,  170,  170,   86,   86,  122,   86,   86,  278,  101,
-      101,  101,  101,  101,   85,  122,  230,  160,   85,  231,
-       85,   86,  391,   85,   85,  231,   85,   85,   85,  107,
-      107,  107,  107,  107,  107,  107,  107,  100,   86,  279,
+      170,  170,  170,   86,  231,  100,  528,   86,   86,  101,
+      101,  101,  101,  101,   85,  122,  231,  160,   85,  609,
+       85,   86,  279,   85,   85,   86,   85,   85,   85,  107,
+      107,  107,  107,  107,  107,  107,  107,  100,  121,  121,
       107,  107,  107,  107,  107,  108,  108,  108,  108,  108,
       108,  108,  108,  108,  108,  108,  108,   86,  108,  101,
       101,  101,  101,  101,   85,   85,   85,   85,   85,   85,
        85,   85,   85,   85,  108,  108,  108,  108,  108,  108,
       108,  108,  609,  151,  114,  108,  108,  108,  108,  108,
 
-      170,  170,  170,  170,  170,  170,  170,  170,  194,  194,
-      194,  194,  194,  194,   85,   85,   85,   85,   85,  113,
-      114,   85,  172,   85,  122,   85,   85,  197,  323,   85,
-      161,  217,  198,   96,  199,  154,  247,   96,   96,  121,
-      121,   85,   85,   85,  131,   86,  132,  132,  132,  132,
-      132,  132,  132,  132,  100,   96,  528,  133,  133,  133,
-      133,  133,  100,  609,  190,  191,  192,  190,  190,  190,
-      190,  190,  160,  130,  122,   86,  133,  133,  133,  133,
-      133,  121,   86,  271,   86,  121,  100,  121,  322,  231,
+      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
+      170,  170,  170,  170,   85,   85,   85,   85,   85,  113,
+      114,   85,  122,   85,   86,   85,   85,  172,  322,   85,
+      255,  255,  255,   96,  247,  154,  217,   96,   96,  323,
+      271,   85,   85,   85,  131,  234,  132,  132,  132,  132,
+      132,  132,  132,  132,  100,   96,   86,  133,  133,  133,
+      133,  133,  272,  391,  190,  191,  192,  190,  190,  190,
+      190,  190,   86,  130,  122,  122,  133,  133,  133,  133,
+      133,  121,  528,   86,  271,  121,  231,  121,  278,  492,
       121,  121,  122,  121,  121,  121,  137,  137,  137,  137,
 
-      137,  137,  137,  137,  100,  272,  122,  137,  137,  137,
+      137,  137,  137,  137,  100,  552,  272,  137,  137,  137,
       137,  137,  138,  138,  138,  138,  138,  138,  138,  138,
       138,  138,  138,  138,  122,  138,  133,  133,  133,  133,
       133,  121,  121,  121,  121,  121,  121,  121,  121,  121,
       121,  138,  138,  138,  138,  138,  138,  138,  138,  609,
-       85,   85,  138,  138,  138,  138,  138,  194,  194,  194,
-      194,  194,  194,  194,  194,  207,  207,  207,  207,  207,
-      208,  121,  121,  121,  121,  121,  143,  114,  121,  172,
-      121,   86,  121,  121,  271,   91,  121,   91,  217,   91,
-      324,   91,   91,  163,  114,   91,  121,  121,  121,  121,
+      384,  552,  138,  138,  138,  138,  138,  194,  194,  194,
+      194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
+      194,  121,  121,  121,  121,  121,  143,  114,  121,   86,
+      121,  172,  121,  121,  100,   91,  121,   91,  122,   91,
+      217,   91,   91,  289,   86,   91,  259,  172,  121,  121,
 
-      121,  153,  255,  255,  255,  153,  272,   91,   91,   91,
-       93,  153,   93,   86,   93,  271,   93,   93,  100,   95,
-       93,   85,  122,   95,  153,   85,   85,  289,  377,   95,
-      259,  172,   93,   93,   93,  160,  391,  272,   86,   86,
-      261,   95,   95,   85,  169,  169,  169,  169,  169,  169,
-      169,  169,  528,  423,  280,  169,  169,  169,  169,  169,
+      121,  153,  552,  324,  122,  153,  261,   91,   91,   91,
+       93,  153,   93,   86,   93,  172,   93,   93,  122,   95,
+       93,   85,  335,   95,  153,   85,   85,  172,  377,   95,
+      271,  367,   93,   93,   93,  207,  207,  207,  207,  207,
+      208,   95,   95,   85,  169,  169,  169,  169,  169,  169,
+      169,  169,  272,  368,  172,  169,  169,  169,  169,  169,
       194,  194,  194,  194,  194,  194,  194,  194,  237,  237,
       237,  237,  237,  238,  169,  169,  169,  169,  169,  175,
-      175,  175,  175,  175,  175,  175,  175,  492,  609,  172,
-      175,  175,  175,  175,  175,  121,  122,  121,  261,  121,
+      175,  175,  175,  175,  175,  175,  175,  100,  609,  172,
+      175,  175,  175,  175,  175,  121,  172,  121,  261,  121,
 
-      335,  121,  121,  367,  290,  121,  172,  172,  552,  169,
-      169,  169,  169,  169,   86,  217,  261,  121,  121,  121,
-      125,  552,  125,  376,  125,  368,  125,  125,  552,  127,
+       86,  121,  121,  492,  290,  121,  172,   86,  422,  169,
+      169,  169,  169,  169,   86,  217,  172,  121,  121,  121,
+      125,  443,  125,  280,  125,  261,  125,  125,  423,  127,
       125,  127,  325,  127,   86,  127,  127,  259,  172,  127,
-      259,  172,  125,  125,  125,   96,  172,  261,  172,   96,
-      307,  127,  127,  127,  129,   96,  121,  261,  129,  384,
-      121,  121,  122,  172,  129,  609,  172,   96,   96,  264,
+      259,  172,  125,  125,  125,   96,  552,  261,   86,   96,
+      307,  127,  127,  127,  129,   96,  121,  376,  129,  476,
+      121,  121,  122,  552,  129,  609,  172,   96,   96,  264,
       264,  264,  264,  264,  265,  307,  129,  129,  121,  193,
-      193,  193,  193,  193,  193,  193,  193,   86,   86,  470,
+      193,  193,  193,  193,  193,  193,  193,   85,   85,   86,
       193,  193,  193,  193,  193,  206,  206,  206,  206,  206,
 
       206,  206,  206,  310,  310,  310,  310,  310,  311,  193,
       193,  193,  193,  193,  195,  195,  195,  195,  195,  195,
-      195,  195,  482,  482,  482,  195,  195,  195,  195,  195,
+      195,  195,   86,   86,  470,  195,  195,  195,  195,  195,
       236,  236,  236,  236,  236,  236,  236,  236,  360,  360,
       360,  360,  360,  361,  193,  193,  193,  193,  193,  204,
-      609,  205,  205,  205,  205,  205,  205,  205,  205,  371,
+      391,  205,  205,  205,  205,  205,  205,  205,  205,  371,
       393,  172,  248,  249,  250,  248,  248,  248,  248,  248,
       253,  253,  254,  255,  255,  255,  255,  255,  214,   86,
        85,  372,  209,  209,  209,  209,  209,  209,  209,  209,
-       86,  259,  172,  209,  209,  209,  209,  209,  222,  222,
+       86,  121,  121,  209,  209,  209,  209,  209,  222,  222,
 
       222,  222,  222,  222,  222,  222,  387,  387,  387,  387,
       387,  388,  209,  209,  209,  209,  209,  211,  212,  213,
       213,  213,  213,  213,  213,  214,  172,   86,  215,  215,
       215,  215,  215,  263,  263,  263,  263,  263,  263,  263,
-      263,  373,  421,  609,  172,  259,  172,  215,  215,  215,
+      263,  373,  421,  482,  482,  482,  172,  215,  215,  215,
       215,  215,  172,  218,  219,  220,  218,  218,  218,  218,
-      218,  221,  122,  374,  222,  222,  222,  222,  222,  609,
-      383,  262,  262,  262,  262,  262,  262,  262,  262,  577,
-      577,  122,  367,  222,  222,  222,  222,  222,  223,  223,
-      223,  223,  223,  223,  223,  223,  431,  152,  152,  223,
+      218,  221,  443,  374,  222,  222,  222,  222,  222,  609,
+      172,  262,  262,  262,  262,  262,  262,  262,  262,  261,
+      393,  122,  367,  222,  222,  222,  222,  222,  223,  223,
+      223,  223,  223,  223,  223,  223,  431,  259,  172,  223,
 
       223,  223,  223,  223,  368,  281,  282,  283,  281,  281,
-      281,  281,  281,  371,  124,  172,  492,  124,  209,  209,
+      281,  281,  281,  371,  483,  172,  609,  172,  209,  209,
       209,  209,  209,  234,  307,  235,  235,  235,  235,  235,
       235,  235,  235,  122,  290,  372,  291,  291,  291,  291,
       291,  291,  291,  291,  296,  296,  296,  296,  296,  296,
-      296,  296,  214,  122,  121,  172,  239,  239,  239,  239,
-      239,  239,  239,  239,  307,   86,  443,  239,  239,  239,
-      239,  239,  290,  422,  292,  292,  292,  292,  292,  292,
-      292,  292,  515,  515,  515,  552,  239,  239,  239,  239,
+      296,  296,  214,  122,  121,  609,  239,  239,  239,  239,
+      239,  239,  239,  239,  172,  393,  483,  239,  239,  239,
+      239,  239,  290,  307,  292,  292,  292,  292,  292,  292,
+      292,  292,  515,  515,  515,  483,  239,  239,  239,  239,
       239,  240,  240,  240,  240,  240,  240,  240,  240,  172,
 
-      537,  537,  240,  240,  240,  240,  240,  290,  357,  293,
+      259,  172,  240,  240,  240,  240,  240,  290,  357,  293,
       293,  293,  293,  293,  294,  291,  291,  471,  349,  471,
       349,  239,  239,  239,  239,  239,  259,  172,  260,  260,
-      260,  260,  260,  260,  260,  260,  261,   86,  552,  262,
+      260,  260,  260,  260,  260,  260,  261,   86,  453,  262,
       262,  262,  262,  262,  301,  302,  303,  301,  301,  301,
-      301,  301,  373,  350,  454,  350,  454,   86,  262,  262,
+      301,  301,  373,  577,  577,  152,  152,  453,  262,  262,
       262,  262,  262,  172,  266,  267,  268,  266,  266,  266,
-      266,  266,  269,  172,  374,  270,  270,  270,  270,  270,
+      266,  266,  269,  453,  374,  270,  270,  270,  270,  270,
       270,  270,  270,  270,  270,  270,  270,  270,  396,  396,
       396,  396,  396,  397,  270,  270,  270,  270,  270,  259,
 
       172,  305,  305,  305,  305,  305,  305,  305,  305,  261,
-      538,  538,  304,  304,  304,  304,  304,  259,  172,  305,
-      305,  305,  305,  305,  305,  367,  371,  261,  455,  172,
-      455,  304,  304,  304,  304,  304,  259,  172,  306,  306,
+      537,  537,  304,  304,  304,  304,  304,  259,  172,  305,
+      305,  305,  305,  305,  305,  367,  371,  261,  350,  393,
+      350,  304,  304,  304,  304,  304,  259,  172,  306,  306,
       306,  306,  306,  306,  306,  306,  307,  368,  372,  308,
       308,  308,  308,  308,  309,  309,  309,  309,  309,  309,
       309,  309,  413,  413,  413,  413,  413,  414,  308,  308,
       308,  308,  308,  172,  312,  313,  314,  312,  312,  312,
-      312,  312,  315,  172,  443,  316,  316,  316,  316,  316,
+      312,  312,  315,  538,  538,  316,  316,  316,  316,  316,
       609,  424,  308,  308,  308,  308,  308,  308,  308,  308,
 
-      259,  172,  393,  483,  316,  316,  316,  316,  316,  325,
+      259,  172,  483,  483,  316,  316,  316,  316,  316,  325,
       307,  326,  326,  326,  326,  326,  326,  326,  326,  325,
       122,  327,  327,  327,  327,  327,  327,  327,  327,  325,
-      483,  328,  328,  328,  328,  328,  329,  326,  326,  336,
+      342,  328,  328,  328,  328,  328,  329,  326,  326,  336,
       337,  338,  336,  336,  336,  336,  336,  290,  391,  291,
       291,  291,  291,  291,  291,  291,  291,  290,  393,  291,
-      291,  291,  291,  291,  291,  291,  291,   86,  290,  483,
-      291,  291,  291,  291,  291,  291,  348,  453,  351,  351,
+      291,  291,  291,  291,  291,  291,  291,   86,  290,  122,
+      291,  291,  291,  291,  291,  291,  348,   86,  351,  351,
       351,  351,  351,  352,  349,  349,  316,  316,  316,  316,
-      316,  316,  316,  316,   86,  453,  476,  509,   86,  343,
+      316,  316,  316,  316,   86,  453,  509,  547,   86,  343,
 
       344,  345,  343,  343,  343,  343,  343,  346,  508,  453,
       347,  347,  347,  347,  347,  259,  172,  355,  355,  355,
-      355,  355,  355,  373,  466,  307,   86,  122,  393,  347,
+      355,  355,  355,  373,  466,  307,  122,   86,  342,  347,
       347,  347,  347,  347,  259,  172,  355,  355,  355,  355,
       355,  355,  355,  355,  307,  374,  467,  354,  354,  354,
       354,  354,  359,  359,  359,  359,  359,  359,  359,  359,
       427,  427,  427,  427,  427,  428,  354,  354,  354,  354,
       354,  259,  172,  356,  356,  356,  356,  356,  356,  356,
-      356,  357,  483,  483,  358,  358,  358,  358,  358,  609,
-      391,  358,  358,  358,  358,  358,  358,  358,  358,  484,
+      356,  357,  257,  430,  358,  358,  358,  358,  358,  609,
+      391,  358,  358,  358,  358,  358,  358,  358,  358,  124,
 
-      443,  484,  342,  358,  358,  358,  358,  358,  172,  362,
-      363,  364,  362,  362,  362,  362,  362,  365,  122,   86,
+      443,  429,  124,  358,  358,  358,  358,  358,  172,  362,
+      363,  364,  362,  362,  362,  362,  362,  365,  420,  419,
       366,  366,  366,  366,  366,  378,  379,  380,  378,  378,
-      378,  378,  378,  453,  453,  259,  172,  342,  257,  366,
+      378,  378,  378,  348,  348,  259,  172,  348,  342,  366,
       366,  366,  366,  366,  325,  357,  326,  326,  326,  326,
       326,  326,  325,  122,  326,  326,  326,  326,  326,  326,
       326,  326,  325,  609,  326,  326,  326,  326,  326,  326,
-      326,  326,  547,  443,  122,  384,  385,  385,  385,  385,
+      326,  326,  565,  443,  122,  384,  385,  385,  385,  385,
       385,  385,  385,  385,  386,  386,  386,  386,  386,  386,
       386,  386,  347,  347,  347,  347,  347,  347,  347,  347,
 
-      430,  485,   86,  485,   86,  391,  391,  392,  392,  392,
-      392,  392,  392,  392,  392,  393,  443,  429,  394,  394,
+      257,  454,  122,  454,   86,  391,  391,  392,  392,  392,
+      392,  392,  392,  392,  392,  393,  443,  214,  394,  394,
       394,  394,  394,  395,  395,  395,  395,  395,  395,  395,
       395,  446,  446,  446,  446,  446,  447,  394,  394,  394,
       394,  394,  398,  399,  400,  398,  398,  398,  398,  398,
-      401,  420,  419,  402,  402,  402,  402,  402,  609,  172,
-      394,  394,  394,  394,  394,  394,  394,  394,  357,  553,
-      348,  553,  402,  402,  402,  402,  402,  403,  404,  405,
-      403,  403,  403,  403,  403,  348,  348,  349,  349,  349,
+      401,  382,  381,  402,  402,  402,  402,  402,  609,  172,
+      394,  394,  394,  394,  394,  394,  394,  394,  357,  455,
+      370,  455,  402,  402,  402,  402,  402,  403,  404,  405,
+      403,  403,  403,  403,  403,  348,  369,  349,  349,  349,
       349,  349,  349,  366,  366,  366,  366,  366,  366,  366,
 
       366,  609,  172,  412,  412,  412,  412,  412,  412,  412,
       412,  357,  259,  172,  408,  408,  408,  408,  408,  408,
-      408,  408,  357,  348,  342,  407,  407,  407,  407,  407,
+      408,  408,  357,  348,  348,  407,  407,  407,  407,  407,
       259,  172,  408,  408,  408,  408,  408,  408,  468,  466,
-      357,  554,  257,  554,  407,  407,  407,  407,  407,  259,
+      357,  484,  342,  484,  407,  407,  407,  407,  407,  259,
       172,  409,  409,  409,  409,  409,  409,  409,  409,  410,
       469,  467,  411,  411,  411,  411,  411,  609,  172,  411,
-      411,  411,  411,  411,  411,  411,  411,  410,  214,  382,
-      381,  411,  411,  411,  411,  411,  172,  415,  416,  417,
-      415,  415,  415,  415,  415,  370,  369,  348,  418,  418,
+      411,  411,  411,  411,  411,  411,  411,  410,  485,  257,
+      485,  411,  411,  411,  411,  411,  172,  415,  416,  417,
+      415,  415,  415,  415,  415,  553,  214,  553,  418,  418,
 
       418,  418,  418,  426,  426,  426,  426,  426,  426,  426,
       426,  464,  464,  464,  464,  464,  465,  418,  418,  418,
       418,  418,  424,  425,  425,  425,  425,  425,  425,  425,
       425,  432,  433,  434,  435,  432,  432,  432,  432,  437,
-      438,  439,  437,  437,  437,  437,  437,  259,  172,  348,
-      342,  122,  257,  214,  214,  334,  333,  357,  468,   86,
+      438,  439,  437,  437,  437,  437,  437,  259,  172,  214,
+      554,  122,  554,  334,  333,  332,  331,  357,  468,   86,
       402,  402,  402,  402,  402,  402,  402,  402,  391,  466,
       441,  441,  441,  441,  441,  441,  441,  441,  393,  391,
-      469,  441,  441,  441,  441,  441,  441,  332,  331,  393,
+      469,  441,  441,  441,  441,  441,  441,  330,  321,  393,
       391,  467,  442,  442,  442,  442,  442,  442,  442,  442,
 
-      443,  330,  321,  444,  444,  444,  444,  444,  445,  445,
+      443,  320,  319,  444,  444,  444,  444,  444,  445,  445,
       445,  445,  445,  445,  445,  445,  495,  495,  495,  495,
       495,  496,  444,  444,  444,  444,  444,  448,  449,  450,
-      448,  448,  448,  448,  448,  451,  320,  319,  452,  452,
-      452,  452,  452,  609,  318,  444,  444,  444,  444,  444,
-      444,  444,  444,  259,  172,  317,  299,  452,  452,  452,
+      448,  448,  448,  448,  448,  451,  318,  317,  452,  452,
+      452,  452,  452,  609,  299,  444,  444,  444,  444,  444,
+      444,  444,  444,  259,  172,  257,  214,  452,  452,  452,
       452,  452,  453,  410,  456,  456,  456,  456,  456,  457,
       454,  454,  418,  418,  418,  418,  418,  418,  418,  418,
       609,  172,  463,  463,  463,  463,  463,  463,  463,  463,
       410,  259,  172,  460,  460,  460,  460,  460,  460,  460,
 
-      460,  410,  257,  214,  459,  459,  459,  459,  459,  259,
-      172,  460,  460,  460,  460,  460,  460,  468,  295,  410,
-      214,  106,  288,  459,  459,  459,  459,  459,  259,  172,
-      461,  461,  461,  461,  461,  461,  461,  461,  287,  469,
-      286,  462,  462,  462,  462,  462,  609,  391,  462,  462,
-      462,  462,  462,  462,  462,  462,  285,  492,  284,  565,
+      460,  410,  295,  214,  459,  459,  459,  459,  459,  259,
+      172,  460,  460,  460,  460,  460,  460,  468,  106,  410,
+      288,  287,  286,  459,  459,  459,  459,  459,  259,  172,
+      461,  461,  461,  461,  461,  461,  461,  461,  285,  469,
+      284,  462,  462,  462,  462,  462,  609,  391,  462,  462,
+      462,  462,  462,  462,  462,  462,  100,  492,  277,  582,
       462,  462,  462,  462,  462,  472,  473,  474,  475,  472,
       472,  472,  472,  478,  478,  478,  478,  478,  478,  478,
-      478,  479,  479,  479,  479,  479,  480,  481,  481,  122,
-      100,  277,  582,  122,  476,  609,  477,  477,  477,  477,
+      478,  479,  479,  479,  479,  479,  480,  481,  481,   86,
+      276,  275,  592,  122,  476,  609,  477,  477,  477,  477,
 
       477,  477,  477,  477,  483,  492,  486,  486,  486,  486,
       486,  487,  484,  484,  452,  452,  452,  452,  452,  452,
-      452,  452,   86,  276,   86,  391,  275,  490,  490,  490,
-      490,  490,  490,  490,  490,  443,  391,  274,  490,  490,
-      490,  490,  490,  490,  273,  100,  443,  391,  391,  491,
+      452,  452,  122,  274,   86,  391,  273,  490,  490,  490,
+      490,  490,  490,  490,  490,  443,  391,  100,  490,  490,
+      490,  490,  490,  490,  214,  257,  443,  391,  391,  491,
       491,  491,  491,  491,  491,  491,  491,  492,  492,  214,
       493,  493,  493,  493,  493,  494,  494,  494,  494,  494,
       494,  494,  494,  531,  531,  531,  531,  531,  532,  493,
       493,  493,  493,  493,  497,  498,  499,  497,  497,  497,
-      497,  497,  500,  257,  214,  501,  501,  501,  501,  501,
+      497,  497,  500,  106,  203,  501,  501,  501,  501,  501,
 
       609,  172,  493,  493,  493,  493,  493,  493,  493,  493,
-      410,  106,  203,  246,  501,  501,  501,  501,  501,  502,
-      503,  504,  502,  502,  502,  502,  502,  453,  245,  454,
+      410,  246,  245,  244,  501,  501,  501,  501,  501,  502,
+      503,  504,  502,  502,  502,  502,  502,  453,  243,  454,
       454,  454,  454,  454,  454,  259,  172,  259,  172,  507,
       507,  507,  507,  507,  507,  410,  259,  172,  507,  507,
-      507,  507,  507,  507,  507,  507,  509,  244,  510,  510,
+      507,  507,  507,  507,  507,  507,  509,  242,  510,  510,
       510,  510,  510,  510,  510,  510,  511,  511,  511,  511,
       511,  511,  511,  511,  512,  512,  512,  512,  512,  513,
-      514,  514,  592,  520,  520,  520,  122,  516,  517,  518,
+      514,  514,  241,  520,  520,  520,  122,  516,  517,  518,
       516,  516,  516,  516,  516,  481,  481,  481,  481,  481,
 
       481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
-      481,   86,  122,  243,  242,   86,  481,  481,  481,  481,
+      481,   86,  131,  189,  232,   86,  481,  481,  481,  481,
       481,  481,  519,  519,  519,  519,  519,  519,  519,  519,
-      519,  519,  476,  241,  520,  520,  520,  521,  522,  523,
-      521,  521,  521,  521,  521,  483,  131,  484,  484,  484,
+      519,  519,  476,  229,  520,  520,  520,  521,  522,  523,
+      521,  521,  521,  521,  521,  483,  228,  484,  484,  484,
       484,  484,  484,  501,  501,  501,  501,  501,  501,  501,
-      501,  189,   86,  391,  232,  526,  526,  526,  526,  526,
-      526,  526,  526,  492,  391,  229,  526,  526,  526,  526,
-      526,  526,  228,  227,  492,  391,  391,  527,  527,  527,
-      527,  527,  527,  527,  527,  528,  528,  226,  529,  529,
+      501,  227,   86,  391,  226,  526,  526,  526,  526,  526,
+      526,  526,  526,  492,  391,  225,  526,  526,  526,  526,
+      526,  526,  224,  106,  492,  391,  391,  527,  527,  527,
+      527,  527,  527,  527,  527,  528,  528,   98,  529,  529,
 
       529,  529,  529,  530,  530,  530,  530,  530,  530,  530,
       530,  563,  563,  563,  563,  563,  564,  529,  529,  529,
       529,  529,  533,  534,  535,  533,  533,  533,  533,  533,
-      225,  224,  106,  536,  536,  536,  536,  536,  609,  609,
-      529,  529,  529,  529,  529,  529,  529,  529,   98,  528,
-      203,  160,  536,  536,  536,  536,  536,  172,  539,  539,
-      539,  539,  539,  540,  537,  537,  121,  154,  542,  543,
+      203,  159,  160,  536,  536,  536,  536,  536,  609,  609,
+      529,  529,  529,  529,  529,  529,  529,  529,  154,  528,
+      154,  147,  536,  536,  536,  536,  536,  172,  539,  539,
+      539,  539,  539,  540,  537,  537,  121,  145,  542,  543,
       544,  542,  542,  542,  542,  542,  514,  514,  514,  514,
       514,  514,  514,  514,  514,  514,  514,  514,  514,  514,
       514,  514,  514,  514,  514,  514,  514,  514,  545,  545,
 
-      545,  545,  545,  545,  545,  545,  545,  545,  509,  154,
+      545,  545,  545,  545,  545,  545,  545,  545,  509,  201,
       546,  546,  546,  547,  391,  548,  548,  548,  548,  548,
       548,  548,  548,  547,  528,  549,  549,  549,  549,  549,
-      549,  549,  549,  147,  145,  201,  200,  547,  122,  550,
-      550,  550,  550,  550,  551,  548,  548,   85,  196,  519,
-      519,  519,  519,  519,  519,  519,  519,  552,  121,  555,
+      549,  549,  549,  200,  196,  121,  128,  547,  122,  550,
+      550,  550,  550,  550,  551,  548,  548,   85,  126,  519,
+      519,  519,  519,  519,  519,  519,  519,  552,  189,  555,
       555,  555,  555,  555,  556,  553,  553,  536,  536,  536,
-      536,  536,  536,  536,  536,  391,  128,  559,  559,  559,
-      559,  559,  559,  559,  559,  528,  391,  126,  559,  559,
-      559,  559,  559,  559,  189,  122,  528,  391,  181,  560,
+      536,  536,  536,  536,  536,  391,  122,  559,  559,  559,
+      559,  559,  559,  559,  559,  528,  391,  181,  559,  559,
+      559,  559,  559,  559,  180,  176,  528,  391,  106,  560,
 
       560,  560,  560,  560,  560,  560,  560,  546,  546,  546,
       561,  561,  561,  561,  561,  562,  562,  562,  562,  562,
       562,  562,  562,  587,  587,  587,  587,  587,  587,  561,
       561,  561,  561,  561,  609,  122,  561,  561,  561,  561,
       561,  561,  561,  561,  172,  537,  537,  537,  537,  537,
-      537,  565,  180,  566,  566,  566,  566,  566,  566,  566,
-      566,  565,  176,  567,  567,  567,  567,  567,  567,  567,
-      567,  565,  106,  568,  568,  568,  568,  568,  569,  566,
-      566,  121,   85,  545,  545,  545,  545,  545,  545,  545,
+      537,  565,   85,  566,  566,  566,  566,  566,  566,  566,
+      566,  565,  106,  567,  567,  567,  567,  567,  567,  567,
+      567,  565,  165,  568,  568,  568,  568,  568,  569,  566,
+      566,  121,   94,  545,  545,  545,  545,  545,  545,  545,
       545,  570,  571,  572,  570,  570,  570,  570,  570,  547,
 
-      106,  548,  548,  548,  548,  548,  548,  548,  548,  547,
-      165,  548,  548,  548,  548,  548,  548,  548,  548,   86,
-      547,   94,  548,  548,  548,  548,  548,  548,  573,  574,
-      575,  573,  573,  573,  573,  573,  552,   92,  553,  553,
-      553,  553,  553,  553,   90,   88,   87,   86,  160,  391,
+       92,  548,  548,  548,  548,  548,  548,  548,  548,  547,
+       90,  548,  548,  548,  548,  548,  548,  548,  548,   86,
+      547,   88,  548,  548,  548,  548,  548,  548,  573,  574,
+      575,  573,  573,  573,  573,  573,  552,   87,  553,  553,
+      553,  553,  553,  553,   86,  160,  154,  147,  145,  391,
        86,  578,  578,  578,  578,  578,  578,  578,  578,  579,
-      580,  581,  579,  579,  579,  579,  579,  565,  154,  566,
-      566,  566,  566,  566,  566,  566,  566,  565,  147,  566,
-      566,  566,  566,  566,  566,  566,  566,  122,  565,  145,
-      566,  566,  566,  566,  566,  566,  582,  142,  583,  583,
+      580,  581,  579,  579,  579,  579,  579,  565,  142,  566,
+      566,  566,  566,  566,  566,  566,  566,  565,  141,  566,
+      566,  566,  566,  566,  566,  566,  566,  122,  565,  140,
+      566,  566,  566,  566,  566,  566,  582,  139,  583,  583,
 
-      583,  583,  583,  583,  583,  583,  582,  141,  584,  584,
-      584,  584,  584,  584,  584,  584,  140,  582,  122,  585,
+      583,  583,  583,  583,  583,  583,  582,  128,  584,  584,
+      584,  584,  584,  584,  584,  584,  126,  582,  122,  585,
       585,  585,  585,  585,  586,  583,  583,  587,  587,  587,
       587,  587,  587,  587,  587,  588,  588,  588,  588,  588,
       588,  588,  588,  589,  589,  589,  589,  589,  590,  587,
-      587,  592,  139,  593,  593,  593,  593,  593,  593,  593,
-      593,  592,  128,  594,  594,  594,  594,  594,  594,  594,
-      594,  592,  126,  595,  595,  595,  595,  595,  596,  593,
-      593,   85,  122,  597,  598,  599,  597,  597,  597,  597,
-      597,  582,  120,  583,  583,  583,  583,  583,  583,  583,
+      587,  592,  122,  593,  593,  593,  593,  593,  593,  593,
+      593,  592,  120,  594,  594,  594,  594,  594,  594,  594,
+      594,  592,  119,  595,  595,  595,  595,  595,  596,  593,
+      593,   85,  118,  597,  598,  599,  597,  597,  597,  597,
+      597,  582,  117,  583,  583,  583,  583,  583,  583,  583,
 
-      583,  582,  119,  583,  583,  583,  583,  583,  583,  583,
-      583,  582,  118,  583,  583,  583,  583,  583,  583,  587,
+      583,  582,  116,  583,  583,  583,  583,  583,  583,  583,
+      583,  582,  112,  583,  583,  583,  583,  583,  583,  587,
       587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
-      587,  587,  587,  587,  587,  117,  116,  112,  111,  110,
+      587,  587,  587,  587,  587,  111,  110,  109,  106,   94,
       121,   86,  600,  601,  602,  600,  600,  600,  600,  600,
-      592,  109,  593,  593,  593,  593,  593,  593,  593,  593,
-      592,  106,  593,  593,  593,  593,  593,  593,  593,  593,
-      592,   94,  593,  593,  593,  593,  593,  593,  603,  603,
+      592,   92,  593,  593,  593,  593,  593,  593,  593,  593,
+      592,   90,  593,  593,  593,  593,  593,  593,  593,  593,
+      592,   88,  593,  593,  593,  593,  593,  593,  603,  603,
       603,  603,  603,  603,  603,  603,  597,  597,  597,  597,
-      597,  597,  597,  597,   92,   90,   88,   87,   86,  609,
+      597,  597,  597,  597,   87,   86,  609,  609,  609,  609,
 
       122,  609,  609,  609,  609,  609,   86,  609,  609,  609,
       609,  609,  609,  609,   86,  604,  604,  604,  604,  604,
@@ -1013,318 +1013,318 @@
         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
         9,    9,   10,   10,   10,  117,   10,   53,   53,   53,
        53,   53,   53,   53,   53,   54,   54,   54,   54,   54,
-       54,   62,  185,   62,   62,   62,   62,   62,   62,   62,
-       62,  104,  104,  104,  104,  104,  104,  185,   82,   84,
-       84,  117,   84,  603,   10,   10,   10,   10,   10,   10,
+       54,   62,  118,   62,   62,   62,   62,   62,   62,   62,
+       62,   84,   84,  144,   84,  110,  118,  144,   82,  183,
+      110,  117,  110,  183,   10,   10,   10,   10,   10,   10,
        10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
 
-       10,   11,   11,   11,   11,   11,  118,  148,  148,   51,
+       10,   11,   11,   11,   11,   11,  148,  148,  182,   51,
        11,   11,   11,   51,   51,   70,   70,   70,   82,   70,
-      118,   84,  110,   70,   11,   70,  392,  110,   95,  110,
-      119,   51,   95,   95,  151,  151,  392,   70,   70,  113,
+      182,  120,  140,   70,   11,   70,  120,  140,   95,  140,
+      119,   51,   95,   95,  151,  151,  603,   70,   70,  113,
       113,  119,  162,   11,   12,   12,   12,   12,   12,   51,
-       95,  208,  208,   12,   12,   12,   86,   70,   86,  120,
-       86,  144,   86,   86,  120,  144,   86,   12,   95,  205,
+       95,  163,  163,   12,   12,   12,   86,   70,   86,  578,
+       86,  335,   86,   86,  208,  208,   86,   12,   95,  335,
        98,   98,   98,   98,   98,   98,   98,   98,   86,   86,
-       86,  113,  162,  143,  143,  235,   12,   27,  160,   27,
-       27,   27,   27,   27,   27,   27,   27,   27,   98,  205,
+       86,  113,  162,  143,  143,  161,   12,   27,  205,   27,
+       27,   27,   27,   27,   27,   27,   27,   27,   98,  185,
 
        27,   27,   27,   27,   27,  102,  102,  102,  102,  102,
-      102,  102,  102,  230,  182,  235,  187,   27,  230,   27,
-       27,   27,   27,   27,   32,  143,  182,  160,   32,  187,
-       32,  183,  578,   32,   32,  183,   32,   32,   32,   32,
-       32,   32,   32,   32,   32,   32,   32,   32,  231,  231,
+      102,  102,  102,  187,  185,  209,  576,   27,  205,   27,
+       27,   27,   27,   27,   32,  143,  187,  161,   32,  561,
+       32,  231,  231,   32,   32,  209,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,  238,  238,
        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
        32,   32,   32,   32,   34,   34,   34,   34,   34,   34,
        34,   34,   34,  158,  158,   34,   34,   34,   34,   34,
 
-      103,  103,  103,  103,  103,  103,  103,  103,  136,  136,
-      136,  136,  136,  136,   34,   34,   34,   34,   34,   38,
-       38,   38,  216,   38,  202,   38,   38,  140,  279,   38,
-      161,  216,  140,  129,  140,  158,  202,  129,  129,  238,
-      238,   38,   38,   38,   52,  279,   52,   52,   52,   52,
-       52,   52,   52,   52,   52,  129,  576,   52,   52,   52,
-       52,   52,  209,  561,  131,  131,  131,  131,  131,  131,
-      131,  131,  161,  129,   52,  233,   52,   52,   52,   52,
-       52,   55,  209,  224,  278,   55,  239,   55,  278,  233,
+      103,  103,  103,  103,  103,  103,  103,  103,  104,  104,
+      104,  104,  104,  104,   34,   34,   34,   34,   34,   38,
+       38,   38,  202,   38,  278,   38,   38,  216,  278,   38,
+      213,  213,  213,  129,  202,  158,  216,  129,  129,  279,
+      224,   38,   38,   38,   52,  235,   52,   52,   52,   52,
+       52,   52,   52,   52,   52,  129,  279,   52,   52,   52,
+       52,   52,  224,  560,  131,  131,  131,  131,  131,  131,
+      131,  131,  233,  129,   52,  235,   52,   52,   52,   52,
+       52,   55,  558,  230,  241,   55,  233,   55,  230,  557,
        55,   55,  131,   55,   55,   55,   55,   55,   55,   55,
 
-       55,   55,   55,   55,   55,  224,  239,   55,   55,   55,
+       55,   55,   55,   55,   55,  555,  241,   55,   55,   55,
        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
        55,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-      388,  388,   57,   57,   57,   57,   57,  134,  134,  134,
-      134,  134,  134,  134,  134,  168,  168,  168,  168,  168,
-      168,   57,   57,   57,   57,   57,   61,   61,   61,  258,
-       61,  280,   61,   61,  241,   92,   61,   92,  258,   92,
-      280,   92,   92,  163,  163,   92,  428,  428,   61,   61,
+      385,  554,   57,   57,   57,   57,   57,  134,  134,  134,
+      134,  134,  134,  134,  134,  136,  136,  136,  136,  136,
+      136,   57,   57,   57,   57,   57,   61,   61,   61,  385,
+       61,  258,   61,   61,  239,   92,   61,   92,  247,   92,
+      258,   92,   92,  247,  280,   92,  260,  260,   61,   61,
 
-       61,  154,  213,  213,  213,  154,  241,   92,   92,   92,
-       94,  154,   94,  324,   94,  271,   94,   94,  232,   97,
-       94,   97,  247,   97,  154,   97,   97,  247,  324,   97,
-      260,  260,   94,   94,   94,  163,  560,  271,  232,  377,
-      260,   97,   97,   97,   99,   99,   99,   99,   99,   99,
-       99,   99,  558,  377,  232,   99,   99,   99,   99,   99,
+       61,  154,  553,  280,  239,  154,  260,   92,   92,   92,
+       94,  154,   94,  324,   94,  541,   94,   94,  289,   97,
+       94,   97,  289,   97,  154,   97,   97,  539,  324,   97,
+      271,  317,   94,   94,   94,  168,  168,  168,  168,  168,
+      168,   97,   97,   97,   99,   99,   99,   99,   99,   99,
+       99,   99,  271,  317,  538,   99,   99,   99,   99,   99,
       135,  135,  135,  135,  135,  135,  135,  135,  192,  192,
       192,  192,  192,  192,   99,   99,   99,   99,   99,  107,
-      107,  107,  107,  107,  107,  107,  107,  557,  262,  262,
-      107,  107,  107,  107,  107,  122,  289,  122,  262,  122,
+      107,  107,  107,  107,  107,  107,  107,  232,  262,  262,
+      107,  107,  107,  107,  107,  122,  537,  122,  262,  122,
 
-      289,  122,  122,  317,  291,  122,  300,  304,  555,  107,
-      107,  107,  107,  107,  323,  300,  304,  122,  122,  122,
-      126,  554,  126,  323,  126,  317,  126,  126,  553,  128,
+      376,  122,  122,  525,  291,  122,  300,  232,  376,  107,
+      107,  107,  107,  107,  377,  300,  304,  122,  122,  122,
+      126,  524,  126,  232,  126,  304,  126,  126,  377,  128,
       126,  128,  326,  128,  291,  128,  128,  305,  305,  128,
-      306,  306,  126,  126,  126,  165,  541,  305,  353,  165,
-      306,  128,  128,  128,  130,  165,  130,  353,  130,  385,
-      130,  130,  326,  539,  130,  308,  308,  165,  165,  220,
+      306,  306,  126,  126,  126,  165,  522,  305,  323,  165,
+      306,  128,  128,  128,  130,  165,  130,  323,  130,  477,
+      130,  130,  326,  521,  130,  308,  308,  165,  165,  220,
       220,  220,  220,  220,  220,  308,  130,  130,  130,  132,
-      132,  132,  132,  132,  132,  132,  132,  422,  385,  422,
+      132,  132,  132,  132,  132,  132,  132,  388,  388,  477,
       132,  132,  132,  132,  132,  167,  167,  167,  167,  167,
 
       167,  167,  167,  268,  268,  268,  268,  268,  268,  132,
       132,  132,  132,  132,  137,  137,  137,  137,  137,  137,
-      137,  137,  435,  435,  435,  137,  137,  137,  137,  137,
+      137,  137,  422,  508,  422,  137,  137,  137,  137,  137,
       191,  191,  191,  191,  191,  191,  191,  191,  314,  314,
       314,  314,  314,  314,  137,  137,  137,  137,  137,  166,
-      394,  166,  166,  166,  166,  166,  166,  166,  166,  320,
-      394,  538,  204,  204,  204,  204,  204,  204,  204,  204,
+      392,  166,  166,  166,  166,  166,  166,  166,  166,  320,
+      392,  506,  204,  204,  204,  204,  204,  204,  204,  204,
       212,  212,  212,  212,  212,  212,  212,  212,  212,  166,
       169,  320,  169,  169,  169,  169,  169,  169,  169,  169,
-      204,  461,  461,  169,  169,  169,  169,  169,  217,  217,
+      204,  428,  428,  169,  169,  169,  169,  169,  217,  217,
 
       217,  217,  217,  217,  217,  217,  338,  338,  338,  338,
       338,  338,  169,  169,  169,  169,  169,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  537,  375,  172,  172,
+      172,  172,  172,  172,  172,  172,  503,  375,  172,  172,
       172,  172,  172,  219,  219,  219,  219,  219,  219,  219,
-      219,  321,  375,  462,  462,  507,  507,  172,  172,  172,
+      219,  321,  375,  435,  435,  435,  502,  172,  172,  172,
       172,  172,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  335,  321,  174,  174,  174,  174,  174,  222,
-      335,  222,  222,  222,  222,  222,  222,  222,  222,  564,
-      564,  383,  330,  174,  174,  174,  174,  174,  175,  175,
-      175,  175,  175,  175,  175,  175,  383,  626,  626,  175,
+      174,  174,  489,  321,  174,  174,  174,  174,  174,  222,
+      353,  222,  222,  222,  222,  222,  222,  222,  222,  353,
+      488,  383,  330,  174,  174,  174,  174,  174,  175,  175,
+      175,  175,  175,  175,  175,  175,  383,  461,  461,  175,
 
       175,  175,  175,  175,  330,  234,  234,  234,  234,  234,
-      234,  234,  234,  333,  634,  354,  525,  634,  175,  175,
+      234,  234,  234,  333,  486,  354,  462,  462,  175,  175,
       175,  175,  175,  190,  354,  190,  190,  190,  190,  190,
       190,  190,  190,  234,  248,  333,  248,  248,  248,  248,
       248,  248,  248,  248,  253,  253,  253,  253,  253,  253,
-      253,  253,  253,  190,  193,  406,  193,  193,  193,  193,
-      193,  193,  193,  193,  406,  376,  524,  193,  193,  193,
-      193,  193,  249,  376,  249,  249,  249,  249,  249,  249,
-      249,  249,  475,  475,  475,  522,  193,  193,  193,  193,
+      253,  253,  253,  190,  193,  394,  193,  193,  193,  193,
+      193,  193,  193,  193,  406,  394,  485,  193,  193,  193,
+      193,  193,  249,  406,  249,  249,  249,  249,  249,  249,
+      249,  249,  475,  475,  475,  484,  193,  193,  193,  193,
       193,  195,  195,  195,  195,  195,  195,  195,  195,  407,
 
-      671,  671,  195,  195,  195,  195,  195,  250,  407,  250,
+      507,  507,  195,  195,  195,  195,  195,  250,  407,  250,
       250,  250,  250,  250,  250,  250,  250,  423,  649,  423,
       649,  195,  195,  195,  195,  195,  218,  218,  218,  218,
-      218,  218,  218,  218,  218,  218,  218,  423,  521,  218,
+      218,  218,  218,  218,  218,  218,  218,  423,  456,  218,
       218,  218,  218,  218,  259,  259,  259,  259,  259,  259,
-      259,  259,  334,  650,  659,  650,  659,  508,  218,  218,
+      259,  259,  334,  564,  564,  626,  626,  455,  218,  218,
       218,  218,  218,  221,  221,  221,  221,  221,  221,  221,
-      221,  221,  221,  506,  334,  221,  221,  221,  221,  221,
+      221,  221,  221,  454,  334,  221,  221,  221,  221,  221,
       261,  261,  261,  261,  261,  261,  261,  261,  345,  345,
       345,  345,  345,  345,  221,  221,  221,  221,  221,  263,
 
       263,  263,  263,  263,  263,  263,  263,  263,  263,  263,
-      672,  672,  263,  263,  263,  263,  263,  265,  265,  265,
-      265,  265,  265,  265,  265,  367,  371,  265,  660,  503,
-      660,  263,  263,  263,  263,  263,  266,  266,  266,  266,
+      671,  671,  263,  263,  263,  263,  263,  265,  265,  265,
+      265,  265,  265,  265,  265,  367,  371,  265,  650,  440,
+      650,  263,  263,  263,  263,  263,  266,  266,  266,  266,
       266,  266,  266,  266,  266,  266,  266,  367,  371,  266,
       266,  266,  266,  266,  267,  267,  267,  267,  267,  267,
       267,  267,  364,  364,  364,  364,  364,  364,  266,  266,
       266,  266,  266,  269,  269,  269,  269,  269,  269,  269,
-      269,  269,  269,  502,  489,  269,  269,  269,  269,  269,
+      269,  269,  269,  672,  672,  269,  269,  269,  269,  269,
       270,  425,  270,  270,  270,  270,  270,  270,  270,  270,
 
-      355,  355,  488,  486,  269,  269,  269,  269,  269,  281,
+      355,  355,  438,  437,  269,  269,  269,  269,  269,  281,
       355,  281,  281,  281,  281,  281,  281,  281,  281,  282,
       425,  282,  282,  282,  282,  282,  282,  282,  282,  283,
-      485,  283,  283,  283,  283,  283,  283,  283,  283,  290,
+      436,  283,  283,  283,  283,  283,  283,  283,  283,  290,
       290,  290,  290,  290,  290,  290,  290,  292,  441,  292,
       292,  292,  292,  292,  292,  292,  292,  293,  441,  293,
-      293,  293,  293,  293,  293,  293,  293,  290,  294,  484,
-      294,  294,  294,  294,  294,  294,  303,  456,  303,  303,
+      293,  293,  293,  293,  293,  293,  293,  290,  294,  431,
+      294,  294,  294,  294,  294,  294,  303,  421,  303,  303,
       303,  303,  303,  303,  303,  303,  307,  307,  307,  307,
-      307,  307,  307,  307,  470,  455,  477,  510,  294,  299,
+      307,  307,  307,  307,  470,  404,  510,  548,  294,  299,
 
-      299,  299,  299,  299,  299,  299,  299,  299,  470,  454,
+      299,  299,  299,  299,  299,  299,  299,  299,  470,  403,
       299,  299,  299,  299,  299,  311,  311,  311,  311,  311,
-      311,  311,  311,  373,  419,  311,  477,  510,  440,  299,
+      311,  311,  311,  373,  419,  311,  510,  548,  390,  299,
       299,  299,  299,  299,  309,  309,  309,  309,  309,  309,
       309,  309,  309,  309,  309,  373,  419,  309,  309,  309,
       309,  309,  313,  313,  313,  313,  313,  313,  313,  313,
       380,  380,  380,  380,  380,  380,  309,  309,  309,  309,
       309,  312,  312,  312,  312,  312,  312,  312,  312,  312,
-      312,  312,  438,  437,  312,  312,  312,  312,  312,  316,
-      442,  316,  316,  316,  316,  316,  316,  316,  316,  663,
+      312,  312,  389,  382,  312,  312,  312,  312,  312,  316,
+      442,  316,  316,  316,  316,  316,  316,  316,  316,  634,
 
-      442,  663,  436,  312,  312,  312,  312,  312,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  431,  421,
+      442,  381,  634,  312,  312,  312,  312,  312,  315,  315,
+      315,  315,  315,  315,  315,  315,  315,  315,  370,  369,
       315,  315,  315,  315,  315,  325,  325,  325,  325,  325,
-      325,  325,  325,  404,  403,  356,  356,  390,  389,  315,
+      325,  325,  325,  351,  350,  356,  356,  349,  341,  315,
       315,  315,  315,  315,  329,  356,  329,  329,  329,  329,
       329,  329,  327,  325,  327,  327,  327,  327,  327,  327,
       327,  327,  328,  444,  328,  328,  328,  328,  328,  328,
-      328,  328,  548,  444,  329,  336,  336,  336,  336,  336,
+      328,  328,  566,  444,  329,  336,  336,  336,  336,  336,
       336,  336,  336,  336,  337,  337,  337,  337,  337,  337,
       337,  337,  342,  342,  342,  342,  342,  342,  342,  342,
 
-      382,  664,  548,  664,  336,  343,  490,  343,  343,  343,
-      343,  343,  343,  343,  343,  343,  490,  381,  343,  343,
+      340,  659,  566,  659,  336,  343,  490,  343,  343,  343,
+      343,  343,  343,  343,  343,  343,  490,  339,  343,  343,
       343,  343,  343,  344,  344,  344,  344,  344,  344,  344,
       344,  400,  400,  400,  400,  400,  400,  343,  343,  343,
       343,  343,  346,  346,  346,  346,  346,  346,  346,  346,
-      346,  370,  369,  346,  346,  346,  346,  346,  347,  458,
-      347,  347,  347,  347,  347,  347,  347,  347,  458,  674,
-      351,  674,  346,  346,  346,  346,  346,  348,  348,  348,
-      348,  348,  348,  348,  348,  352,  350,  352,  352,  352,
+      346,  332,  331,  346,  346,  346,  346,  346,  347,  458,
+      347,  347,  347,  347,  347,  347,  347,  347,  458,  660,
+      319,  660,  346,  346,  346,  346,  346,  348,  348,  348,
+      348,  348,  348,  348,  348,  352,  318,  352,  352,  352,
       352,  352,  352,  357,  357,  357,  357,  357,  357,  357,
 
       357,  358,  358,  363,  363,  363,  363,  363,  363,  363,
       363,  358,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  349,  341,  359,  359,  359,  359,  359,
+      359,  359,  359,  302,  301,  359,  359,  359,  359,  359,
       361,  361,  361,  361,  361,  361,  361,  361,  420,  429,
-      361,  675,  340,  675,  359,  359,  359,  359,  359,  362,
+      361,  663,  298,  663,  359,  359,  359,  359,  359,  362,
       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
       420,  429,  362,  362,  362,  362,  362,  366,  459,  366,
-      366,  366,  366,  366,  366,  366,  366,  459,  339,  332,
-      331,  362,  362,  362,  362,  362,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  319,  318,  302,  365,  365,
+      366,  366,  366,  366,  366,  366,  366,  459,  664,  297,
+      664,  362,  362,  362,  362,  362,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  674,  296,  674,  365,  365,
 
       365,  365,  365,  379,  379,  379,  379,  379,  379,  379,
       379,  417,  417,  417,  417,  417,  417,  365,  365,  365,
       365,  365,  378,  378,  378,  378,  378,  378,  378,  378,
       378,  384,  384,  384,  384,  384,  384,  384,  384,  391,
-      391,  391,  391,  391,  391,  391,  391,  408,  408,  301,
-      298,  378,  297,  296,  295,  288,  287,  408,  430,  384,
+      391,  391,  391,  391,  391,  391,  391,  408,  408,  295,
+      675,  378,  675,  288,  287,  286,  285,  408,  430,  384,
       393,  393,  393,  393,  393,  393,  393,  393,  395,  466,
       395,  395,  395,  395,  395,  395,  395,  395,  395,  397,
-      430,  397,  397,  397,  397,  397,  397,  286,  285,  397,
+      430,  397,  397,  397,  397,  397,  397,  284,  277,  397,
       398,  466,  398,  398,  398,  398,  398,  398,  398,  398,
 
-      398,  284,  277,  398,  398,  398,  398,  398,  399,  399,
+      398,  276,  275,  398,  398,  398,  398,  398,  399,  399,
       399,  399,  399,  399,  399,  399,  450,  450,  450,  450,
       450,  450,  398,  398,  398,  398,  398,  401,  401,  401,
-      401,  401,  401,  401,  401,  401,  276,  275,  401,  401,
-      401,  401,  401,  402,  274,  402,  402,  402,  402,  402,
-      402,  402,  402,  409,  409,  273,  257,  401,  401,  401,
+      401,  401,  401,  401,  401,  401,  274,  273,  401,  401,
+      401,  401,  401,  402,  257,  402,  402,  402,  402,  402,
+      402,  402,  402,  409,  409,  256,  255,  401,  401,  401,
       401,  401,  405,  409,  405,  405,  405,  405,  405,  405,
       405,  405,  410,  410,  410,  410,  410,  410,  410,  410,
       411,  411,  416,  416,  416,  416,  416,  416,  416,  416,
       411,  412,  412,  412,  412,  412,  412,  412,  412,  412,
 
-      412,  412,  256,  255,  412,  412,  412,  412,  412,  414,
-      414,  414,  414,  414,  414,  414,  414,  468,  254,  414,
-      252,  251,  246,  412,  412,  412,  412,  412,  415,  415,
-      415,  415,  415,  415,  415,  415,  415,  415,  245,  468,
-      244,  415,  415,  415,  415,  415,  418,  491,  418,  418,
-      418,  418,  418,  418,  418,  418,  243,  491,  242,  566,
+      412,  412,  254,  252,  412,  412,  412,  412,  412,  414,
+      414,  414,  414,  414,  414,  414,  414,  468,  251,  414,
+      246,  245,  244,  412,  412,  412,  412,  412,  415,  415,
+      415,  415,  415,  415,  415,  415,  415,  415,  243,  468,
+      242,  415,  415,  415,  415,  415,  418,  491,  418,  418,
+      418,  418,  418,  418,  418,  418,  240,  491,  229,  583,
       415,  415,  415,  415,  415,  424,  424,  424,  424,  424,
       424,  424,  424,  433,  433,  433,  433,  433,  433,  433,
-      433,  434,  434,  434,  434,  434,  434,  434,  434,  566,
-      240,  229,  583,  424,  432,  493,  432,  432,  432,  432,
+      433,  434,  434,  434,  434,  434,  434,  434,  434,  583,
+      228,  227,  593,  424,  432,  493,  432,  432,  432,  432,
 
       432,  432,  432,  432,  439,  493,  439,  439,  439,  439,
       439,  439,  439,  439,  443,  443,  443,  443,  443,  443,
-      443,  443,  583,  228,  432,  445,  227,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  447,  226,  447,  447,
-      447,  447,  447,  447,  225,  223,  447,  448,  526,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  526,  215,
+      443,  443,  593,  226,  432,  445,  225,  445,  445,  445,
+      445,  445,  445,  445,  445,  445,  447,  223,  447,  447,
+      447,  447,  447,  447,  215,  214,  447,  448,  526,  448,
+      448,  448,  448,  448,  448,  448,  448,  448,  526,  211,
       448,  448,  448,  448,  448,  449,  449,  449,  449,  449,
       449,  449,  449,  499,  499,  499,  499,  499,  499,  448,
       448,  448,  448,  448,  451,  451,  451,  451,  451,  451,
-      451,  451,  451,  214,  211,  451,  451,  451,  451,  451,
+      451,  451,  451,  210,  203,  451,  451,  451,  451,  451,
 
       452,  505,  452,  452,  452,  452,  452,  452,  452,  452,
-      505,  210,  203,  201,  451,  451,  451,  451,  451,  453,
-      453,  453,  453,  453,  453,  453,  453,  457,  200,  457,
+      505,  201,  200,  199,  451,  451,  451,  451,  451,  453,
+      453,  453,  453,  453,  453,  453,  453,  457,  198,  457,
       457,  457,  457,  457,  457,  460,  460,  465,  465,  465,
       465,  465,  465,  465,  465,  460,  463,  463,  463,  463,
-      463,  463,  463,  463,  463,  463,  472,  199,  472,  472,
+      463,  463,  463,  463,  463,  463,  472,  197,  472,  472,
       472,  472,  472,  472,  472,  472,  473,  473,  473,  473,
       473,  473,  473,  473,  474,  474,  474,  474,  474,  474,
-      474,  474,  593,  520,  520,  520,  472,  476,  476,  476,
+      474,  474,  196,  520,  520,  520,  472,  476,  476,  476,
       476,  476,  476,  476,  476,  478,  478,  478,  478,  478,
 
       478,  478,  478,  479,  479,  479,  479,  479,  479,  479,
-      479,  520,  593,  198,  197,  476,  480,  480,  480,  480,
+      479,  520,  194,  188,  184,  476,  480,  480,  480,  480,
       480,  480,  480,  480,  481,  481,  481,  481,  481,  481,
-      481,  481,  482,  196,  482,  482,  482,  483,  483,  483,
-      483,  483,  483,  483,  483,  487,  194,  487,  487,  487,
+      481,  481,  482,  181,  482,  482,  482,  483,  483,  483,
+      483,  483,  483,  483,  483,  487,  180,  487,  487,  487,
       487,  487,  487,  492,  492,  492,  492,  492,  492,  492,
-      492,  188,  482,  494,  184,  494,  494,  494,  494,  494,
-      494,  494,  494,  494,  496,  181,  496,  496,  496,  496,
-      496,  496,  180,  179,  496,  497,  527,  497,  497,  497,
-      497,  497,  497,  497,  497,  497,  527,  178,  497,  497,
+      492,  179,  482,  494,  178,  494,  494,  494,  494,  494,
+      494,  494,  494,  494,  496,  177,  496,  496,  496,  496,
+      496,  496,  176,  171,  496,  497,  527,  497,  497,  497,
+      497,  497,  497,  497,  497,  497,  527,  170,  497,  497,
 
       497,  497,  497,  498,  498,  498,  498,  498,  498,  498,
       498,  535,  535,  535,  535,  535,  535,  497,  497,  497,
       497,  497,  500,  500,  500,  500,  500,  500,  500,  500,
-      177,  176,  171,  500,  500,  500,  500,  500,  501,  529,
-      501,  501,  501,  501,  501,  501,  501,  501,  170,  529,
-      164,  159,  500,  500,  500,  500,  500,  504,  504,  504,
-      504,  504,  504,  504,  504,  504,  509,  157,  509,  509,
+      164,  160,  159,  500,  500,  500,  500,  500,  501,  529,
+      501,  501,  501,  501,  501,  501,  501,  501,  157,  529,
+      153,  147,  500,  500,  500,  500,  500,  504,  504,  504,
+      504,  504,  504,  504,  504,  504,  509,  145,  509,  509,
       509,  509,  509,  509,  509,  509,  511,  511,  511,  511,
       511,  511,  511,  511,  512,  512,  512,  512,  512,  512,
       512,  512,  513,  513,  513,  513,  513,  513,  513,  513,
 
-      514,  514,  514,  514,  514,  514,  514,  514,  515,  153,
+      514,  514,  514,  514,  514,  514,  514,  514,  515,  142,
       515,  515,  515,  516,  559,  516,  516,  516,  516,  516,
       516,  516,  516,  517,  559,  517,  517,  517,  517,  517,
-      517,  517,  517,  147,  145,  142,  141,  518,  515,  518,
-      518,  518,  518,  518,  518,  518,  518,  519,  139,  519,
-      519,  519,  519,  519,  519,  519,  519,  523,  133,  523,
+      517,  517,  517,  141,  139,  133,  127,  518,  515,  518,
+      518,  518,  518,  518,  518,  518,  518,  519,  125,  519,
+      519,  519,  519,  519,  519,  519,  519,  523,  123,  523,
       523,  523,  523,  523,  523,  523,  523,  528,  528,  528,
-      528,  528,  528,  528,  528,  530,  127,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  532,  125,  532,  532,
-      532,  532,  532,  532,  123,  121,  532,  533,  112,  533,
+      528,  528,  528,  528,  528,  530,  121,  530,  530,  530,
+      530,  530,  530,  530,  530,  530,  532,  112,  532,  532,
+      532,  532,  532,  532,  111,  109,  532,  533,  105,  533,
 
       533,  533,  533,  533,  533,  533,  533,  546,  546,  546,
       533,  533,  533,  533,  533,  534,  534,  534,  534,  534,
       534,  534,  534,  590,  590,  590,  590,  590,  590,  533,
       533,  533,  533,  533,  536,  546,  536,  536,  536,  536,
       536,  536,  536,  536,  540,  540,  540,  540,  540,  540,
-      540,  542,  111,  542,  542,  542,  542,  542,  542,  542,
-      542,  543,  109,  543,  543,  543,  543,  543,  543,  543,
-      543,  544,  105,  544,  544,  544,  544,  544,  544,  544,
-      544,  545,  101,  545,  545,  545,  545,  545,  545,  545,
+      540,  542,  101,  542,  542,  542,  542,  542,  542,  542,
+      542,  543,  100,  543,  543,  543,  543,  543,  543,  543,
+      543,  544,   96,  544,  544,  544,  544,  544,  544,  544,
+      544,  545,   93,  545,  545,  545,  545,  545,  545,  545,
       545,  547,  547,  547,  547,  547,  547,  547,  547,  549,
 
-      100,  549,  549,  549,  549,  549,  549,  549,  549,  550,
-       96,  550,  550,  550,  550,  550,  550,  550,  550,  547,
-      551,   93,  551,  551,  551,  551,  551,  551,  552,  552,
-      552,  552,  552,  552,  552,  552,  556,   91,  556,  556,
-      556,  556,  556,  556,   89,   88,   87,   85,   80,  562,
+       91,  549,  549,  549,  549,  549,  549,  549,  549,  550,
+       89,  550,  550,  550,  550,  550,  550,  550,  550,  547,
+      551,   88,  551,  551,  551,  551,  551,  551,  552,  552,
+      552,  552,  552,  552,  552,  552,  556,   87,  556,  556,
+      556,  556,  556,  556,   85,   80,   73,   67,   64,  562,
       551,  562,  562,  562,  562,  562,  562,  562,  562,  565,
-      565,  565,  565,  565,  565,  565,  565,  567,   73,  567,
-      567,  567,  567,  567,  567,  567,  567,  568,   67,  568,
-      568,  568,  568,  568,  568,  568,  568,  565,  569,   64,
-      569,  569,  569,  569,  569,  569,  570,   60,  570,  570,
+      565,  565,  565,  565,  565,  565,  565,  567,   60,  567,
+      567,  567,  567,  567,  567,  567,  567,  568,   59,  568,
+      568,  568,  568,  568,  568,  568,  568,  565,  569,   58,
+      569,  569,  569,  569,  569,  569,  570,   56,  570,  570,
 
-      570,  570,  570,  570,  570,  570,  571,   59,  571,  571,
-      571,  571,  571,  571,  571,  571,   58,  572,  569,  572,
+      570,  570,  570,  570,  570,  570,  571,   50,  571,  571,
+      571,  571,  571,  571,  571,  571,   48,  572,  569,  572,
       572,  572,  572,  572,  572,  572,  572,  573,  573,  573,
       573,  573,  573,  573,  573,  574,  574,  574,  574,  574,
       574,  574,  574,  575,  575,  575,  575,  575,  575,  575,
-      575,  579,   56,  579,  579,  579,  579,  579,  579,  579,
-      579,  580,   50,  580,  580,  580,  580,  580,  580,  580,
-      580,  581,   48,  581,  581,  581,  581,  581,  581,  581,
-      581,  582,   46,  582,  582,  582,  582,  582,  582,  582,
-      582,  584,   45,  584,  584,  584,  584,  584,  584,  584,
+      575,  579,   46,  579,  579,  579,  579,  579,  579,  579,
+      579,  580,   45,  580,  580,  580,  580,  580,  580,  580,
+      580,  581,   44,  581,  581,  581,  581,  581,  581,  581,
+      581,  582,   43,  582,  582,  582,  582,  582,  582,  582,
+      582,  584,   42,  584,  584,  584,  584,  584,  584,  584,
 
-      584,  585,   44,  585,  585,  585,  585,  585,  585,  585,
-      585,  586,   43,  586,  586,  586,  586,  586,  586,  588,
+      584,  585,   41,  585,  585,  585,  585,  585,  585,  585,
+      585,  586,   37,  586,  586,  586,  586,  586,  586,  588,
       588,  588,  588,  588,  588,  588,  588,  589,  589,  589,
-      589,  589,  589,  589,  589,   42,   41,   37,   36,   35,
+      589,  589,  589,  589,  589,   36,   35,   33,   30,   24,
       592,  586,  592,  592,  592,  592,  592,  592,  592,  592,
-      594,   33,  594,  594,  594,  594,  594,  594,  594,  594,
-      595,   30,  595,  595,  595,  595,  595,  595,  595,  595,
-      596,   24,  596,  596,  596,  596,  596,  596,  597,  597,
+      594,   21,  594,  594,  594,  594,  594,  594,  594,  594,
+      595,   20,  595,  595,  595,  595,  595,  595,  595,  595,
+      596,   19,  596,  596,  596,  596,  596,  596,  597,  597,
       597,  597,  597,  597,  597,  597,  598,  598,  598,  598,
-      598,  598,  598,  598,   21,   20,   19,   17,   16,   15,
+      598,  598,  598,  598,   17,   16,   15,    0,    0,    0,
 
       596,    0,    0,    0,    0,    0,  597,    0,    0,    0,
         0,    0,    0,    0,  598,  599,  599,  599,  599,  599,
@@ -1480,7 +1480,7 @@
 #include <sudo.tab.h>
 
 #ifndef lint
-__unused static const char rcsid[] = "$Sudo: lex.yy.c,v 1.46.2.9 2008/02/09 14:44:47 millert Exp $";
+__unused static const char rcsid[] = "$Sudo: lex.yy.c,v 1.46.2.11 2008/06/26 11:53:49 millert Exp $";
 #endif /* lint */
 
 #undef yywrap		/* guard against a yywrap macro */
@@ -1854,19 +1854,23 @@
 YY_RULE_SETUP
 #line 166 "parse.lex"
 {
+			    LEXTRACE("BACKSLASH ");
+			    append(yytext, yyleng);
+			}
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 171 "parse.lex"
+{
 			    LEXTRACE("STRBODY ");
-			    /* Push back line continuation char if present */
-			    if (yyleng > 2 && yytext[yyleng - 1] == '\\' &&
-				isspace((unsigned char)yytext[yyleng - 2]))
-				yyless(yyleng - 1);
 			    append(yytext, yyleng);
 			}
 	YY_BREAK
 
 
-case 12:
+case 13:
 YY_RULE_SETUP
-#line 177 "parse.lex"
+#line 178 "parse.lex"
 {
 			    /* quoted fnmatch glob char, pass verbatim */
 			    LEXTRACE("QUOTEDCHAR ");
@@ -1874,9 +1878,9 @@
 			    sawspace = FALSE;
 			}
 	YY_BREAK
-case 13:
+case 14:
 YY_RULE_SETUP
-#line 184 "parse.lex"
+#line 185 "parse.lex"
 {
 			    /* quoted sudoers special char, strip backslash */
 			    LEXTRACE("QUOTEDCHAR ");
@@ -1884,18 +1888,18 @@
 			    sawspace = FALSE;
 			}
 	YY_BREAK
-case 14:
+case 15:
 YY_RULE_SETUP
-#line 191 "parse.lex"
+#line 192 "parse.lex"
 {
 			    BEGIN INITIAL;
 			    unput(*yytext);
 			    return(COMMAND);
 			}			/* end of command line args */
 	YY_BREAK
-case 15:
+case 16:
 YY_RULE_SETUP
-#line 197 "parse.lex"
+#line 198 "parse.lex"
 {
 			    LEXTRACE("ARG ");
 			    fill_args(yytext, yyleng, sawspace);
@@ -1903,9 +1907,9 @@
 			}			/* a command line arg */
 	YY_BREAK
 
-case 16:
+case 17:
 YY_RULE_SETUP
-#line 204 "parse.lex"
+#line 205 "parse.lex"
 {
 			    BEGIN GOTDEFS;
 			    switch (yytext[8]) {
@@ -1924,9 +1928,9 @@
 			    }
 			}
 	YY_BREAK
-case 17:
+case 18:
 YY_RULE_SETUP
-#line 222 "parse.lex"
+#line 223 "parse.lex"
 {
 			    fill(yytext, yyleng);
 			    switch (*yytext) {
@@ -1946,59 +1950,59 @@
 			    }
 			}
 	YY_BREAK
-case 18:
+case 19:
 YY_RULE_SETUP
-#line 241 "parse.lex"
+#line 242 "parse.lex"
 {
 				/* cmnd does not require passwd for this user */
 			    	LEXTRACE("NOPASSWD ");
 			    	return(NOPASSWD);
 			}
 	YY_BREAK
-case 19:
+case 20:
 YY_RULE_SETUP
-#line 247 "parse.lex"
+#line 248 "parse.lex"
 {
 				/* cmnd requires passwd for this user */
 			    	LEXTRACE("PASSWD ");
 			    	return(PASSWD);
 			}
 	YY_BREAK
-case 20:
+case 21:
 YY_RULE_SETUP
-#line 253 "parse.lex"
+#line 254 "parse.lex"
 {
 			    	LEXTRACE("NOEXEC ");
 			    	return(NOEXEC);
 			}
 	YY_BREAK
-case 21:
+case 22:
 YY_RULE_SETUP
-#line 258 "parse.lex"
+#line 259 "parse.lex"
 {
 			    	LEXTRACE("EXEC ");
 			    	return(EXEC);
 			}
 	YY_BREAK
-case 22:
+case 23:
 YY_RULE_SETUP
-#line 263 "parse.lex"
+#line 264 "parse.lex"
 {
 			    	LEXTRACE("SETENV ");
 			    	return(SETENV);
 			}
 	YY_BREAK
-case 23:
+case 24:
 YY_RULE_SETUP
-#line 268 "parse.lex"
+#line 269 "parse.lex"
 {
 			    	LEXTRACE("NOSETENV ");
 			    	return(NOSETENV);
 			}
 	YY_BREAK
-case 24:
+case 25:
 YY_RULE_SETUP
-#line 273 "parse.lex"
+#line 274 "parse.lex"
 {
 			    /* netgroup */
 			    fill(yytext, yyleng);
@@ -2006,9 +2010,9 @@
 			    return(NETGROUP);
 			}
 	YY_BREAK
-case 25:
+case 26:
 YY_RULE_SETUP
-#line 280 "parse.lex"
+#line 281 "parse.lex"
 {
 			    /* UN*X group */
 			    fill(yytext, yyleng);
@@ -2016,27 +2020,27 @@
 			    return(USERGROUP);
 			}
 	YY_BREAK
-case 26:
+case 27:
 YY_RULE_SETUP
-#line 287 "parse.lex"
+#line 288 "parse.lex"
 {
 			    fill(yytext, yyleng);
 			    LEXTRACE("NTWKADDR ");
 			    return(NTWKADDR);
 			}
 	YY_BREAK
-case 27:
+case 28:
 YY_RULE_SETUP
-#line 293 "parse.lex"
+#line 294 "parse.lex"
 {
 			    fill(yytext, yyleng);
 			    LEXTRACE("NTWKADDR ");
 			    return(NTWKADDR);
 			}
 	YY_BREAK
-case 28:
+case 29:
 YY_RULE_SETUP
-#line 299 "parse.lex"
+#line 300 "parse.lex"
 {
 			    if (!ipv6_valid(yytext)) {
 				LEXTRACE("ERROR ");
@@ -2047,9 +2051,9 @@
 			    return(NTWKADDR);
 			}
 	YY_BREAK
-case 29:
+case 30:
 YY_RULE_SETUP
-#line 309 "parse.lex"
+#line 310 "parse.lex"
 {
 			    if (!ipv6_valid(yytext)) {
 				LEXTRACE("ERROR ");
@@ -2060,18 +2064,18 @@
  			    return(NTWKADDR);
  			}
 	YY_BREAK
-case 30:
+case 31:
 YY_RULE_SETUP
-#line 319 "parse.lex"
+#line 320 "parse.lex"
 {
 				BEGIN GOTRUNAS;
 				LEXTRACE("RUNAS ");
 				return (RUNAS);
 			}
 	YY_BREAK
-case 31:
+case 32:
 YY_RULE_SETUP
-#line 325 "parse.lex"
+#line 326 "parse.lex"
 {
 			    if (strcmp(yytext, "ALL") == 0) {
 				LEXTRACE("ALL ");
@@ -2093,9 +2097,9 @@
 			    return(ALIAS);
 			}
 	YY_BREAK
-case 32:
+case 33:
 YY_RULE_SETUP
-#line 346 "parse.lex"
+#line 347 "parse.lex"
 {
 			    /* username/uid that user can run command as */
 			    fill(yytext, yyleng);
@@ -2103,9 +2107,9 @@
 			    return(WORD);
 			}
 	YY_BREAK
-case 33:
+case 34:
 YY_RULE_SETUP
-#line 353 "parse.lex"
+#line 354 "parse.lex"
 {
 			    BEGIN INITIAL;
 			    ++sudolineno;
@@ -2113,25 +2117,25 @@
 			    return(COMMENT);
 			}
 	YY_BREAK
-case 34:
+case 35:
 YY_RULE_SETUP
-#line 360 "parse.lex"
+#line 361 "parse.lex"
 {
 			    BEGIN INITIAL;
 			}
 	YY_BREAK
-case 35:
+case 36:
 YY_RULE_SETUP
-#line 364 "parse.lex"
+#line 365 "parse.lex"
 {
 			    BEGIN GOTCMND;
 			    LEXTRACE("COMMAND ");
 			    fill_cmnd(yytext, yyleng);
 			}			/* sudo -e */
 	YY_BREAK
-case 36:
+case 37:
 YY_RULE_SETUP
-#line 370 "parse.lex"
+#line 371 "parse.lex"
 {
 			    /* directories can't have args... */
 			    if (yytext[yyleng - 1] == '/') {
@@ -2145,9 +2149,9 @@
 			    }
 			}			/* a pathname */
 	YY_BREAK
-case 37:
+case 38:
 YY_RULE_SETUP
-#line 383 "parse.lex"
+#line 384 "parse.lex"
 {
 			    /* a word */
 			    fill(yytext, yyleng);
@@ -2155,41 +2159,41 @@
 			    return(WORD);
 			}
 	YY_BREAK
-case 38:
+case 39:
 YY_RULE_SETUP
-#line 390 "parse.lex"
+#line 391 "parse.lex"
 {
 			    LEXTRACE(", ");
 			    return(',');
 			}			/* return ',' */
 	YY_BREAK
-case 39:
+case 40:
 YY_RULE_SETUP
-#line 395 "parse.lex"
+#line 396 "parse.lex"
 {
 			    LEXTRACE("= ");
 			    return('=');
 			}			/* return '=' */
 	YY_BREAK
-case 40:
+case 41:
 YY_RULE_SETUP
-#line 400 "parse.lex"
+#line 401 "parse.lex"
 {
 			    LEXTRACE(": ");
 			    return(':');
 			}			/* return ':' */
 	YY_BREAK
-case 41:
+case 42:
 YY_RULE_SETUP
-#line 405 "parse.lex"
+#line 406 "parse.lex"
 {
 			    if (yyleng % 2 == 1)
 				return('!');	/* return '!' */
 			}
 	YY_BREAK
-case 42:
+case 43:
 YY_RULE_SETUP
-#line 410 "parse.lex"
+#line 411 "parse.lex"
 {
 			    BEGIN INITIAL;
 			    ++sudolineno;
@@ -2197,25 +2201,25 @@
 			    return(COMMENT);
 			}			/* return newline */
 	YY_BREAK
-case 43:
+case 44:
 YY_RULE_SETUP
-#line 417 "parse.lex"
+#line 418 "parse.lex"
 {			/* throw away space/tabs */
 			    sawspace = TRUE;	/* but remember for fill_args */
 			}
 	YY_BREAK
-case 44:
+case 45:
 YY_RULE_SETUP
-#line 421 "parse.lex"
+#line 422 "parse.lex"
 {
 			    sawspace = TRUE;	/* remember for fill_args */
 			    ++sudolineno;
 			    LEXTRACE("\n\t");
 			}			/* throw away EOL after \ */
 	YY_BREAK
-case 45:
+case 46:
 YY_RULE_SETUP
-#line 427 "parse.lex"
+#line 428 "parse.lex"
 {
 			    BEGIN INITIAL;
 			    ++sudolineno;
@@ -2223,9 +2227,9 @@
 			    return(COMMENT);
 			}			/* return comments */
 	YY_BREAK
-case 46:
+case 47:
 YY_RULE_SETUP
-#line 434 "parse.lex"
+#line 435 "parse.lex"
 {
 			    LEXTRACE("ERROR ");
 			    return(ERROR);
@@ -2238,7 +2242,7 @@
 case YY_STATE_EOF(STARTDEFS):
 case YY_STATE_EOF(INDEFS):
 case YY_STATE_EOF(INSTR):
-#line 439 "parse.lex"
+#line 440 "parse.lex"
 {
 			    if (YY_START != INITIAL) {
 			    	BEGIN INITIAL;
@@ -2248,12 +2252,12 @@
 			    yyterminate();
 			}
 	YY_BREAK
-case 47:
+case 48:
 YY_RULE_SETUP
-#line 448 "parse.lex"
+#line 449 "parse.lex"
 ECHO;
 	YY_BREAK
-#line 2257 "lex.yy.c"
+#line 2261 "lex.yy.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3142,7 +3146,7 @@
 	return 0;
 	}
 #endif
-#line 448 "parse.lex"
+#line 449 "parse.lex"
 
 static void
 _fill(src, len, olen)
diff -ura sudo-1.6.9p16/logging.c sudo-1.6.9p17/logging.c
--- sudo-1.6.9p16/logging.c	Sun Mar 23 10:21:27 2008
+++ sudo-1.6.9p17/logging.c	Sun Jun 22 16:23:57 2008
@@ -27,6 +27,7 @@
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/stat.h>
+#include <sys/ioctl.h>
 #include <sys/wait.h>
 #include <stdio.h>
 #ifdef STDC_HEADERS
@@ -56,11 +57,12 @@
 #include <signal.h>
 #include <time.h>
 #include <errno.h>
+#include <fcntl.h>
 
 #include "sudo.h"
 
 #ifndef lint
-__unused static const char rcsid[] = "$Sudo: logging.c,v 1.168.2.14 2008/03/17 15:09:54 millert Exp $";
+__unused static const char rcsid[] = "$Sudo: logging.c,v 1.168.2.16 2008/06/22 20:23:57 millert Exp $";
 #endif /* lint */
 
 static void do_syslog		__P((int, char *));
@@ -458,9 +460,9 @@
 {
     FILE *mail;
     char *p;
-    int pfd[2];
-    pid_t pid;
-    sigset_t set, oset;
+    int fd, pfd[2], status;
+    pid_t pid, rv;
+    sigaction_t sa;
 #ifndef NO_ROOT_MAILER
     static char *root_envp[] = {
 	"HOME=/",
@@ -476,18 +478,79 @@
     if (!def_mailerpath || !def_mailto)
 	return;
 
-    (void) sigemptyset(&set);
-    (void) sigaddset(&set, SIGCHLD);
-    (void) sigaddset(&set, SIGPIPE);
-    (void) sigprocmask(SIG_BLOCK, &set, &oset);
+    /* Fork and return, child will daemonize. */
+    switch (pid = fork()) {
+	case -1:
+	    /* Error */
+	    err(1, "cannot fork");
+	    break;
+	case 0:
+	    /* Child */
+	    switch (pid = fork()) {
+		case -1:
+		    /* Error. */
+		    mysyslog(LOG_ERR, "cannot fork: %m");
+		    _exit(1);
+		case 0:
+		    /* Grandchild continues below. */
+		    break;
+		default:
+		    /* Parent will wait for us. */
+		    _exit(0);
+	    }
+	    break;
+	default:
+	    /* Parent */
+	    do {
+#ifdef HAVE_WAITPID
+		rv = waitpid(pid, &status, 0);
+#else
+		rv = wait(&status);
+#endif
+	    } while (rv == -1 && errno == EINTR);
+	    return;
+    }
 
-    if (pipe(pfd) == -1)
-	err(1, "cannot open pipe");
+    /* Daemonize - disassociate from session/tty. */
+#ifdef HAVE_SETSID
+    if (setsid() == -1)
+      warn("setsid");
+#else
+    setpgrp(0, 0);
+# ifdef TIOCNOTTY
+    if ((fd = open(_PATH_TTY, O_RDWR, 0644)) != -1) {
+	ioctl(fd, TIOCNOTTY, NULL);
+	close(fd);
+    }
+# endif
+#endif
+    chdir("/");
+    if ((fd = open(_PATH_DEVNULL, O_RDWR, 0644)) != -1) {
+	(void) dup2(fd, STDIN_FILENO);
+	(void) dup2(fd, STDOUT_FILENO);
+	(void) dup2(fd, STDERR_FILENO);
+    }
 
+    /* Close password and other fds so we don't leak. */
+    endpwent();
+    closefrom(STDERR_FILENO + 1);
+
+    /* Ignore SIGPIPE in case mailer exits prematurely (or is missing). */
+    sigemptyset(&sa.sa_mask);
+    sa.sa_flags = 0;
+    sa.sa_handler = SIG_IGN;
+    (void) sigaction(SIGPIPE, &sa, NULL);
+
+    if (pipe(pfd) == -1) {
+	mysyslog(LOG_ERR, "cannot open pipe: %m");
+	_exit(1);
+    }
+
     switch (pid = fork()) {
 	case -1:
 	    /* Error. */
-	    err(1, "cannot fork");
+	    mysyslog(LOG_ERR, "cannot fork: %m");
+	    _exit(1);
 	    break;
 	case 0:
 	    {
@@ -518,9 +581,6 @@
 		}
 		argv[i] = NULL;
 
-		/* Close password file so we don't leak the fd. */
-		endpwent();
-
 		/*
 		 * Depending on the config, either run the mailer as root
 		 * (so user cannot kill it) or as the user (for the paranoid).
@@ -532,6 +592,7 @@
 		set_perms(PERM_FULL_USER);
 		execv(mpath, argv);
 #endif /* NO_ROOT_MAILER */
+		mysyslog(LOG_ERR, "cannot execute %s: %m", mpath);
 		_exit(127);
 	    }
 	    break;
@@ -563,10 +624,14 @@
     (void) fprintf(mail, "\n\n%s : %s : %s : %s\n\n", user_host,
 	get_timestr(), user_name, line);
     fclose(mail);
-
-    (void) sigprocmask(SIG_SETMASK, &oset, NULL);
-    /* If mailer is done, wait for it now.  If not, we'll get it later.  */
-    reapchild(SIGCHLD);
+    do {
+#ifdef HAVE_WAITPID
+	rv = waitpid(pid, &status, 0);
+#else
+	rv = wait(&status);
+#endif
+    } while (rv == -1 && errno == EINTR);
+    _exit(0);
 }
 
 /*
@@ -595,26 +660,6 @@
 
     if ((status & mail_mask) != 0)
 	send_mail(line);
-}
-
-/*
- * SIGCHLD sig handler--wait for children as they die.
- */
-RETSIGTYPE
-reapchild(sig)
-    int sig;
-{
-    int status, serrno = errno;
-#ifdef sudo_waitpid
-    pid_t pid;
-
-    do {
-	pid = sudo_waitpid(-1, &status, WNOHANG);
-    } while (pid != 0 && (pid != -1 || errno == EINTR));
-#else
-    (void) wait(&status);
-#endif
-    errno = serrno;
 }
 
 /*
diff -ura sudo-1.6.9p16/parse.lex sudo-1.6.9p17/parse.lex
--- sudo-1.6.9p16/parse.lex	Sat Feb  9 09:44:48 2008
+++ sudo-1.6.9p17/parse.lex	Thu Jun 26 07:54:11 2008
@@ -55,7 +55,7 @@
 #include <sudo.tab.h>
 
 #ifndef lint
-__unused static const char rcsid[] = "$Sudo: parse.lex,v 1.132.2.8 2008/02/09 14:44:48 millert Exp $";
+__unused static const char rcsid[] = "$Sudo: parse.lex,v 1.132.2.10 2008/06/26 11:53:50 millert Exp $";
 #endif /* lint */
 
 #undef yywrap		/* guard against a yywrap macro */
@@ -151,7 +151,7 @@
 }
 
 <INSTR>{
-    \\\n[[:blank:]]*	{
+    \\[[:blank:]]*\n[[:blank:]]*	{
 			    /* Line continuation char followed by newline. */
 			    ++sudolineno;
 			    LEXTRACE("\n");
@@ -163,12 +163,13 @@
 			    return(WORD);
 			}
 
-    ([^\"\n]|\\\")+	{
+    \\			{
+			    LEXTRACE("BACKSLASH ");
+			    append(yytext, yyleng);
+			}
+
+    ([^\"\n\\]|\\\")+	{
 			    LEXTRACE("STRBODY ");
-			    /* Push back line continuation char if present */
-			    if (yyleng > 2 && yytext[yyleng - 1] == '\\' &&
-				isspace((unsigned char)yytext[yyleng - 2]))
-				yyless(yyleng - 1);
 			    append(yytext, yyleng);
 			}
 }
diff -ura sudo-1.6.9p16/sudo.c sudo-1.6.9p17/sudo.c
--- sudo-1.6.9p16/sudo.c	Thu May  8 15:39:34 2008
+++ sudo-1.6.9p17/sudo.c	Sat Jun 21 15:04:07 2008
@@ -105,7 +105,7 @@
 #include "version.h"
 
 #ifndef lint
-__unused __unused static const char rcsid[] = "$Sudo: sudo.c,v 1.369.2.39 2008/04/10 17:56:05 millert Exp $";
+__unused __unused static const char rcsid[] = "$Sudo: sudo.c,v 1.369.2.41 2008/06/21 19:04:07 millert Exp $";
 #endif /* lint */
 
 /*
@@ -155,7 +155,7 @@
 #ifdef HAVE_BSD_AUTH_H
 char *login_style;
 #endif /* HAVE_BSD_AUTH_H */
-sigaction_t saved_sa_int, saved_sa_quit, saved_sa_tstp, saved_sa_chld;
+sigaction_t saved_sa_int, saved_sa_quit, saved_sa_tstp;
 
 
 int
@@ -204,8 +204,6 @@
     (void) sigaction(SIGINT, &sa, &saved_sa_int);
     (void) sigaction(SIGQUIT, &sa, &saved_sa_quit);
     (void) sigaction(SIGTSTP, &sa, &saved_sa_tstp);
-    sa.sa_handler = reapchild;
-    (void) sigaction(SIGCHLD, &sa, &saved_sa_chld);
 
     /*
      * Turn off core dumps and close open files.
@@ -437,7 +435,6 @@
 	(void) sigaction(SIGINT, &saved_sa_int, NULL);
 	(void) sigaction(SIGQUIT, &saved_sa_quit, NULL);
 	(void) sigaction(SIGTSTP, &saved_sa_tstp, NULL);
-	(void) sigaction(SIGCHLD, &saved_sa_chld, NULL);
 
 #ifndef PROFILING
 	if (ISSET(sudo_mode, MODE_BACKGROUND) && fork() > 0)
@@ -921,7 +918,10 @@
 	    warnx("you may not specify environment variables in edit mode");
 	usage(1);
     }
-
+    if (ISSET(rval, MODE_PRESERVE_ENV) && ISSET(rval, MODE_LOGIN_SHELL)) {
+	warnx("you may not specify both the `-i' and `-E' options");
+	usage(1);
+    }
     if (user_runas != NULL && !ISSET(rval, (MODE_EDIT|MODE_RUN))) {
 	if (excl != '\0')
 	    warnx("the `-u' and '-%c' options may not be used together", excl);
diff -ura sudo-1.6.9p16/sudo.cat sudo-1.6.9p17/sudo.cat
--- sudo-1.6.9p16/sudo.cat	Thu May  8 15:46:44 2008
+++ sudo-1.6.9p17/sudo.cat	Sat Jun 21 15:25:29 2008
@@ -61,7 +61,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         1
+1.6.9p17                   Jun 21, 2008                         1
 
 
 
@@ -127,7 +127,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         2
+1.6.9p17                   Jun 21, 2008                         2
 
 
 
@@ -193,7 +193,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         3
+1.6.9p17                   Jun 21, 2008                         3
 
 
 
@@ -259,7 +259,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         4
+1.6.9p17                   Jun 21, 2008                         4
 
 
 
@@ -325,7 +325,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         5
+1.6.9p17                   Jun 21, 2008                         5
 
 
 
@@ -391,7 +391,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         6
+1.6.9p17                   Jun 21, 2008                         6
 
 
 
@@ -457,7 +457,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         7
+1.6.9p17                   Jun 21, 2008                         7
 
 
 
@@ -523,7 +523,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         8
+1.6.9p17                   Jun 21, 2008                         8
 
 
 
@@ -589,6 +589,6 @@
 
 
 
-1.6.9p16                   May  8, 2008                         9
+1.6.9p17                   Jun 21, 2008                         9
 
 
diff -ura sudo-1.6.9p16/sudo.man.in sudo-1.6.9p17/sudo.man.in
--- sudo-1.6.9p16/sudo.man.in	Thu May  8 15:48:23 2008
+++ sudo-1.6.9p17/sudo.man.in	Sun Jun 22 16:29:03 2008
@@ -18,7 +18,7 @@
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
 .\" 
-.\" $Sudo: sudo.man.in,v 1.29.2.26 2008/05/08 19:48:23 millert Exp $
+.\" $Sudo: sudo.man.in,v 1.29.2.27 2008/06/22 20:29:03 millert Exp $
 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
 .\"
 .\" Standard preamble:
@@ -150,7 +150,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SUDO @mansectsu@"
-.TH SUDO @mansectsu@ "May  8, 2008" "1.6.9p16" "MAINTENANCE COMMANDS"
+.TH SUDO @mansectsu@ "Jun 21, 2008" "1.6.9p17" "MAINTENANCE COMMANDS"
 .SH "NAME"
 sudo, sudoedit \- execute a command as another user
 .SH "SYNOPSIS"
diff -ura sudo-1.6.9p16/sudo_edit.c sudo-1.6.9p17/sudo_edit.c
--- sudo-1.6.9p16/sudo_edit.c	Mon Sep  3 16:28:31 2007
+++ sudo-1.6.9p17/sudo_edit.c	Fri Jun 20 20:47:52 2008
@@ -62,10 +62,10 @@
 #include "sudo.h"
 
 #ifndef lint
-__unused static const char rcsid[] = "$Sudo: sudo_edit.c,v 1.6.2.8 2007/09/03 20:28:31 millert Exp $";
+__unused static const char rcsid[] = "$Sudo: sudo_edit.c,v 1.6.2.9 2008/06/21 00:47:52 millert Exp $";
 #endif /* lint */
 
-extern sigaction_t saved_sa_int, saved_sa_quit, saved_sa_tstp, saved_sa_chld;
+extern sigaction_t saved_sa_int, saved_sa_quit, saved_sa_tstp;
 extern char **environ;
 
 /*
@@ -231,11 +231,10 @@
 	nargv[ac++] = tf[i++].tfile;
     nargv[ac] = NULL;
 
-    /* We wait for our own children and can be suspended. */
+    /* Allow the editor to be suspended. */
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = SA_RESTART;
     sa.sa_handler = SIG_DFL;
-    (void) sigaction(SIGCHLD, &sa, NULL);
     (void) sigaction(SIGTSTP, &saved_sa_tstp, NULL);
 
     /*
@@ -251,7 +250,6 @@
 	/* child */
 	(void) sigaction(SIGINT, &saved_sa_int, NULL);
 	(void) sigaction(SIGQUIT, &saved_sa_quit, NULL);
-	(void) sigaction(SIGCHLD, &saved_sa_chld, NULL);
 	set_perms(PERM_FULL_USER);
 	endpwent();
 	endgrent();
diff -ura sudo-1.6.9p16/sudoers.cat sudo-1.6.9p17/sudoers.cat
--- sudo-1.6.9p16/sudoers.cat	Thu May  8 15:46:45 2008
+++ sudo-1.6.9p17/sudoers.cat	Sat Jun 21 15:25:32 2008
@@ -61,7 +61,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         1
+1.6.9p17                   Jun 21, 2008                         1
 
 
 
@@ -127,7 +127,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         2
+1.6.9p17                   Jun 21, 2008                         2
 
 
 
@@ -193,7 +193,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         3
+1.6.9p17                   Jun 21, 2008                         3
 
 
 
@@ -259,7 +259,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         4
+1.6.9p17                   Jun 21, 2008                         4
 
 
 
@@ -325,7 +325,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         5
+1.6.9p17                   Jun 21, 2008                         5
 
 
 
@@ -391,7 +391,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         6
+1.6.9p17                   Jun 21, 2008                         6
 
 
 
@@ -457,7 +457,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         7
+1.6.9p17                   Jun 21, 2008                         7
 
 
 
@@ -523,7 +523,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         8
+1.6.9p17                   Jun 21, 2008                         8
 
 
 
@@ -589,7 +589,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         9
+1.6.9p17                   Jun 21, 2008                         9
 
 
 
@@ -655,7 +655,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        10
+1.6.9p17                   Jun 21, 2008                        10
 
 
 
@@ -721,7 +721,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        11
+1.6.9p17                   Jun 21, 2008                        11
 
 
 
@@ -787,7 +787,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        12
+1.6.9p17                   Jun 21, 2008                        12
 
 
 
@@ -853,7 +853,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        13
+1.6.9p17                   Jun 21, 2008                        13
 
 
 
@@ -919,7 +919,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        14
+1.6.9p17                   Jun 21, 2008                        14
 
 
 
@@ -985,7 +985,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        15
+1.6.9p17                   Jun 21, 2008                        15
 
 
 
@@ -1051,7 +1051,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        16
+1.6.9p17                   Jun 21, 2008                        16
 
 
 
@@ -1117,7 +1117,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        17
+1.6.9p17                   Jun 21, 2008                        17
 
 
 
@@ -1183,7 +1183,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        18
+1.6.9p17                   Jun 21, 2008                        18
 
 
 
@@ -1249,7 +1249,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        19
+1.6.9p17                   Jun 21, 2008                        19
 
 
 
@@ -1315,7 +1315,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        20
+1.6.9p17                   Jun 21, 2008                        20
 
 
 
@@ -1381,7 +1381,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        21
+1.6.9p17                   Jun 21, 2008                        21
 
 
 
@@ -1447,7 +1447,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        22
+1.6.9p17                   Jun 21, 2008                        22
 
 
 
@@ -1513,7 +1513,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                        23
+1.6.9p17                   Jun 21, 2008                        23
 
 
 
@@ -1579,6 +1579,6 @@
 
 
 
-1.6.9p16                   May  8, 2008                        24
+1.6.9p17                   Jun 21, 2008                        24
 
 
diff -ura sudo-1.6.9p16/sudoers.man.in sudo-1.6.9p17/sudoers.man.in
--- sudo-1.6.9p16/sudoers.man.in	Thu May  8 15:48:23 2008
+++ sudo-1.6.9p17/sudoers.man.in	Sun Jun 22 16:29:03 2008
@@ -18,7 +18,7 @@
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
 .\" 
-.\" $Sudo: sudoers.man.in,v 1.45.2.28 2008/05/08 19:48:23 millert Exp $
+.\" $Sudo: sudoers.man.in,v 1.45.2.29 2008/06/22 20:29:03 millert Exp $
 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
 .\"
 .\" Standard preamble:
@@ -150,7 +150,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SUDOERS @mansectform@"
-.TH SUDOERS @mansectform@ "May  8, 2008" "1.6.9p16" "MAINTENANCE COMMANDS"
+.TH SUDOERS @mansectform@ "Jun 21, 2008" "1.6.9p17" "MAINTENANCE COMMANDS"
 .SH "NAME"
 sudoers \- list of which users may execute what
 .SH "DESCRIPTION"
diff -ura sudo-1.6.9p16/tgetpass.c sudo-1.6.9p17/tgetpass.c
--- sudo-1.6.9p16/tgetpass.c	Wed Jan 16 13:03:24 2008
+++ sudo-1.6.9p17/tgetpass.c	Fri Jun 20 20:27:01 2008
@@ -70,7 +70,7 @@
 #include "sudo.h"
 
 #ifndef lint
-__unused static const char rcsid[] = "$Sudo: tgetpass.c,v 1.111.2.6 2008/01/16 18:03:24 millert Exp $";
+__unused static const char rcsid[] = "$Sudo: tgetpass.c,v 1.111.2.7 2008/06/21 00:27:01 millert Exp $";
 #endif /* lint */
 
 #ifndef TCSASOFT
@@ -86,14 +86,6 @@
 # else
 #  define _POSIX_VDISABLE	0
 # endif
-#endif
-
-/*
- * QNX 6 (at least) has issues with TCSAFLUSH.
- */
-#ifdef __QNX__
-#undef TCSAFLUSH
-#define	TCSAFLUSH	TCSADRAIN
 #endif
 
 /*
diff -ura sudo-1.6.9p16/version.h sudo-1.6.9p17/version.h
--- sudo-1.6.9p16/version.h	Thu May  8 15:48:24 2008
+++ sudo-1.6.9p17/version.h	Sun Jun 22 16:29:03 2008
@@ -17,12 +17,12 @@
  * Agency (DARPA) and Air Force Research Laboratory, Air Force
  * Materiel Command, USAF, under agreement number F39502-99-1-0512.
  *
- * $Sudo: version.h,v 1.66.2.19 2008/05/08 19:48:24 millert Exp $
+ * $Sudo: version.h,v 1.66.2.20 2008/06/22 20:29:03 millert Exp $
  */
 
 #ifndef _SUDO_VERSION_H
 #define _SUDO_VERSION_H
 
-static const char version[] = "1.6.9p16";
+static const char version[] = "1.6.9p17";
 
 #endif /* _SUDO_VERSION_H */
diff -ura sudo-1.6.9p16/visudo.c sudo-1.6.9p17/visudo.c
--- sudo-1.6.9p16/visudo.c	Sat Sep  1 09:39:13 2007
+++ sudo-1.6.9p17/visudo.c	Fri Jun 20 20:47:52 2008
@@ -78,7 +78,7 @@
 #include "version.h"
 
 #ifndef lint
-__unused static const char rcsid[] = "$Sudo: visudo.c,v 1.166.2.10 2007/09/01 13:39:13 millert Exp $";
+__unused static const char rcsid[] = "$Sudo: visudo.c,v 1.166.2.11 2008/06/21 00:47:52 millert Exp $";
 #endif /* lint */
 
 struct sudoersfile {
@@ -590,20 +590,14 @@
     char **argv;
 {
     int status;
-    pid_t pid;
-    sigset_t set, oset;
+    pid_t pid, rv;
 
-    (void) sigemptyset(&set);
-    (void) sigaddset(&set, SIGCHLD);
-    (void) sigprocmask(SIG_BLOCK, &set, &oset);
-
     switch (pid = fork()) {
 	case -1:
 	    warn("unable to run %s", path);
 	    Exit(-1);
 	    break;	/* NOTREACHED */
 	case 0:
-	    (void) sigprocmask(SIG_SETMASK, &oset, NULL);
 	    endpwent();
 	    closefrom(STDERR_FILENO + 1);
 	    execv(path, argv);
@@ -612,15 +606,15 @@
 	    break;	/* NOTREACHED */
     }
 
+    do {
 #ifdef sudo_waitpid
-    pid = sudo_waitpid(pid, &status, 0);
+	rv = sudo_waitpid(pid, &status, 0);
 #else
-    pid = wait(&status);
+	rv = wait(&status);
 #endif
+    } while (rv == -1 && errno == EINTR);
 
-    (void) sigprocmask(SIG_SETMASK, &oset, NULL);
-
-    if (pid == -1 || !WIFEXITED(status))
+    if (rv == -1 || !WIFEXITED(status))
 	return(-1);
     return(WEXITSTATUS(status));
 }
diff -ura sudo-1.6.9p16/visudo.cat sudo-1.6.9p17/visudo.cat
--- sudo-1.6.9p16/visudo.cat	Thu May  8 15:46:45 2008
+++ sudo-1.6.9p17/visudo.cat	Sat Jun 21 15:25:35 2008
@@ -61,7 +61,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         1
+1.6.9p17                   Jun 21, 2008                         1
 
 
 
@@ -127,7 +127,7 @@
 
 
 
-1.6.9p16                   May  8, 2008                         2
+1.6.9p17                   Jun 21, 2008                         2
 
 
 
@@ -193,6 +193,6 @@
 
 
 
-1.6.9p16                   May  8, 2008                         3
+1.6.9p17                   Jun 21, 2008                         3
 
 
diff -ura sudo-1.6.9p16/visudo.man.in sudo-1.6.9p17/visudo.man.in
--- sudo-1.6.9p16/visudo.man.in	Thu May  8 15:48:24 2008
+++ sudo-1.6.9p17/visudo.man.in	Sun Jun 22 16:29:03 2008
@@ -17,7 +17,7 @@
 .\" Agency (DARPA) and Air Force Research Laboratory, Air Force
 .\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
 .\" 
-.\" $Sudo: visudo.man.in,v 1.20.2.21 2008/05/08 19:48:24 millert Exp $
+.\" $Sudo: visudo.man.in,v 1.20.2.22 2008/06/22 20:29:03 millert Exp $
 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
 .\"
 .\" Standard preamble:
@@ -149,7 +149,7 @@
 .\" ========================================================================
 .\"
 .IX Title "VISUDO @mansectsu@"
-.TH VISUDO @mansectsu@ "May  8, 2008" "1.6.9p16" "MAINTENANCE COMMANDS"
+.TH VISUDO @mansectsu@ "Jun 21, 2008" "1.6.9p17" "MAINTENANCE COMMANDS"
 .SH "NAME"
 visudo \- edit the sudoers file
 .SH "SYNOPSIS"
