# PaCkAgE DaTaStReAm expect 1 1442 # end of header 07070100057403000081a400000000000000000000000151a40071000001060000010000010031ffffffffffffffff0000000f00000000expect/pkginfoPKG=expect NAME=expect 5.45 SPARC 64bit Solaris 10 VERSION=5.45 PSTAMP=28th May 2013 VENDOR=Don Libes EMAIL=http://sourceforge.net/projects/expect DESC=Expect automation tool ARCH=sparc CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 07070100057402000081a400000000000000000000000151a4007100000d7c0000010000010031ffffffffffffffff0000000e00000000expect/pkgmap: 1 1442 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/autoexpect 0755 root root 7706 46564 1369702507 1 f none /usr/local/bin/autopasswd 0755 root root 375 31370 1369702507 1 f none /usr/local/bin/cryptdir 0755 root root 1365 46057 1369702507 1 f none /usr/local/bin/decryptdir 0755 root root 1365 46057 1369702507 1 f none /usr/local/bin/dislocate 0755 root root 7938 63357 1369702507 1 f none /usr/local/bin/expect 0755 root root 12976 45722 1369702506 1 f none /usr/local/bin/ftp-rfc 0755 root root 683 56172 1369702507 1 f none /usr/local/bin/kibitz 0755 root root 10886 56090 1369702507 1 f none /usr/local/bin/lpunlock 0755 root root 2619 21889 1369702507 1 f none /usr/local/bin/mkpasswd 0755 root root 5388 52030 1369702507 1 f none /usr/local/bin/multixterm 0755 root root 30487 61829 1369702507 1 f none /usr/local/bin/passmass 0755 root root 4551 39776 1369702507 1 f none /usr/local/bin/rftp 0755 root root 8888 18298 1369702507 1 f none /usr/local/bin/rlogin-cwd 0755 root root 501 41954 1369702507 1 f none /usr/local/bin/timed-read 0755 root root 303 25512 1369702507 1 f none /usr/local/bin/timed-run 0755 root root 277 22990 1369702507 1 f none /usr/local/bin/tknewsbiff 0755 root root 11381 45394 1369702507 1 f none /usr/local/bin/tkpasswd 0755 root root 16570 29159 1369702507 1 f none /usr/local/bin/unbuffer 0755 root root 640 50511 1369702507 1 f none /usr/local/bin/weather 0755 root root 2075 42897 1369702507 1 f none /usr/local/bin/xkibitz 0755 root root 4862 63093 1369702507 1 f none /usr/local/bin/xpstat 0755 root root 6606 19244 1369702507 1 d none /usr/local/include 0755 root root 1 f none /usr/local/include/expect.h 0644 root root 11468 8921 1369702507 1 f none /usr/local/include/expect_comm.h 0644 root root 2275 50634 1369702507 1 f none /usr/local/include/expect_tcl.h 0644 root root 1835 24329 1369702507 1 f none /usr/local/include/tcldbg.h 0644 root root 1733 10428 1369702507 1 d none /usr/local/lib 0755 root root 1 d none /usr/local/lib/expect5.45 0755 root root 1 f none /usr/local/lib/expect5.45/libexpect5.45.so 0755 root root 323424 44830 1369702506 1 f none /usr/local/lib/expect5.45/pkgIndex.tcl 0644 root root 143 12491 1369702506 1 d none /usr/local/man 0755 root root 1 d none /usr/local/man/man1 0755 root root 1 f none /usr/local/man/man1/autoexpect.1 0644 root root 6685 11723 1369702507 1 f none /usr/local/man/man1/cryptdir.1 0644 root root 1208 40754 1369702507 1 f none /usr/local/man/man1/decryptdir.1 0644 root root 1203 40278 1369702507 1 f none /usr/local/man/man1/dislocate.1 0644 root root 2691 36926 1369702507 1 f none /usr/local/man/man1/expect.1 0644 root root 79212 49642 1369702507 1 f none /usr/local/man/man1/kibitz.1 0644 root root 6735 2576 1369702507 1 f none /usr/local/man/man1/mkpasswd.1 0644 root root 2233 63038 1369702507 1 f none /usr/local/man/man1/multixterm.1 0644 root root 9503 47954 1369702507 1 f none /usr/local/man/man1/passmass.1 0644 root root 3325 31052 1369702507 1 f none /usr/local/man/man1/tknewsbiff.1 0644 root root 14717 16040 1369702507 1 f none /usr/local/man/man1/unbuffer.1 0644 root root 2272 3256 1369702507 1 f none /usr/local/man/man1/xkibitz.1 0644 root root 5094 55307 1369702507 1 d none /usr/local/man/man3 0755 root root 1 f none /usr/local/man/man3/libexpect.3 0644 root root 22907 16419 1369702507 1 i checkinstall 785 2565 1369702513 1 i pkginfo 262 20528 1369702513 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!07070100057403000081a400000000000000000000000151a40071000001060000010000010031ffffffffffffffff0000000800000000pkginfoPKG=expect NAME=expect 5.45 SPARC 64bit Solaris 10 VERSION=5.45 PSTAMP=28th May 2013 VENDOR=Don Libes EMAIL=http://sourceforge.net/projects/expect DESC=Expect automation tool ARCH=sparc CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 07070100057402000081a400000000000000000000000151a4007100000d7c0000010000010031ffffffffffffffff0000000700000000pkgmap: 1 1442 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/autoexpect 0755 root root 7706 46564 1369702507 1 f none /usr/local/bin/autopasswd 0755 root root 375 31370 1369702507 1 f none /usr/local/bin/cryptdir 0755 root root 1365 46057 1369702507 1 f none /usr/local/bin/decryptdir 0755 root root 1365 46057 1369702507 1 f none /usr/local/bin/dislocate 0755 root root 7938 63357 1369702507 1 f none /usr/local/bin/expect 0755 root root 12976 45722 1369702506 1 f none /usr/local/bin/ftp-rfc 0755 root root 683 56172 1369702507 1 f none /usr/local/bin/kibitz 0755 root root 10886 56090 1369702507 1 f none /usr/local/bin/lpunlock 0755 root root 2619 21889 1369702507 1 f none /usr/local/bin/mkpasswd 0755 root root 5388 52030 1369702507 1 f none /usr/local/bin/multixterm 0755 root root 30487 61829 1369702507 1 f none /usr/local/bin/passmass 0755 root root 4551 39776 1369702507 1 f none /usr/local/bin/rftp 0755 root root 8888 18298 1369702507 1 f none /usr/local/bin/rlogin-cwd 0755 root root 501 41954 1369702507 1 f none /usr/local/bin/timed-read 0755 root root 303 25512 1369702507 1 f none /usr/local/bin/timed-run 0755 root root 277 22990 1369702507 1 f none /usr/local/bin/tknewsbiff 0755 root root 11381 45394 1369702507 1 f none /usr/local/bin/tkpasswd 0755 root root 16570 29159 1369702507 1 f none /usr/local/bin/unbuffer 0755 root root 640 50511 1369702507 1 f none /usr/local/bin/weather 0755 root root 2075 42897 1369702507 1 f none /usr/local/bin/xkibitz 0755 root root 4862 63093 1369702507 1 f none /usr/local/bin/xpstat 0755 root root 6606 19244 1369702507 1 d none /usr/local/include 0755 root root 1 f none /usr/local/include/expect.h 0644 root root 11468 8921 1369702507 1 f none /usr/local/include/expect_comm.h 0644 root root 2275 50634 1369702507 1 f none /usr/local/include/expect_tcl.h 0644 root root 1835 24329 1369702507 1 f none /usr/local/include/tcldbg.h 0644 root root 1733 10428 1369702507 1 d none /usr/local/lib 0755 root root 1 d none /usr/local/lib/expect5.45 0755 root root 1 f none /usr/local/lib/expect5.45/libexpect5.45.so 0755 root root 323424 44830 1369702506 1 f none /usr/local/lib/expect5.45/pkgIndex.tcl 0644 root root 143 12491 1369702506 1 d none /usr/local/man 0755 root root 1 d none /usr/local/man/man1 0755 root root 1 f none /usr/local/man/man1/autoexpect.1 0644 root root 6685 11723 1369702507 1 f none /usr/local/man/man1/cryptdir.1 0644 root root 1208 40754 1369702507 1 f none /usr/local/man/man1/decryptdir.1 0644 root root 1203 40278 1369702507 1 f none /usr/local/man/man1/dislocate.1 0644 root root 2691 36926 1369702507 1 f none /usr/local/man/man1/expect.1 0644 root root 79212 49642 1369702507 1 f none /usr/local/man/man1/kibitz.1 0644 root root 6735 2576 1369702507 1 f none /usr/local/man/man1/mkpasswd.1 0644 root root 2233 63038 1369702507 1 f none /usr/local/man/man1/multixterm.1 0644 root root 9503 47954 1369702507 1 f none /usr/local/man/man1/passmass.1 0644 root root 3325 31052 1369702507 1 f none /usr/local/man/man1/tknewsbiff.1 0644 root root 14717 16040 1369702507 1 f none /usr/local/man/man1/unbuffer.1 0644 root root 2272 3256 1369702507 1 f none /usr/local/man/man1/xkibitz.1 0644 root root 5094 55307 1369702507 1 d none /usr/local/man/man3 0755 root root 1 f none /usr/local/man/man3/libexpect.3 0644 root root 22907 16419 1369702507 1 i checkinstall 785 2565 1369702513 1 i pkginfo 262 20528 1369702513 07070100057437000041ed00000000000000000000000251a40071000000000000010000010031ffffffffffffffff0000000800000000install07070100057438000081ed00000000000000000000000151a40071000003110000010000010031ffffffffffffffff0000001500000000install/checkinstall#!/bin/sh # expected_bits="64" expected_release="5.10" expected_platform="sparc" # release=`uname -r` platform=`uname -p` bits=`isainfo -b` # if [ ${platform} != ${expected_platform} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${release} != ${expected_release} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${bits} != ${expected_bits} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_bits} bit machine\n" echo "\tYour machine is running a ${bits} bit O.S. currently\n" echo "\tAborting installation.\n\n\n" exit 1 fi exit 0 07070100057404000041ed00000000000000000000000351a40071000000000000010000010031ffffffffffffffff0000000500000000root07070100057405000041ed00000000000000000000000351a40071000000000000010000010031ffffffffffffffff0000000900000000root/usr07070100057406000041ed00000000000000000000000651a40071000000000000010000010031ffffffffffffffff0000000f00000000root/usr/local0707010005741e000041ed00000000000000000000000251a40071000000000000010000010031ffffffffffffffff0000001700000000root/usr/local/include07070100057421000081a400000000000000000000000151a4006b0000072b0000010000010031ffffffffffffffff0000002400000000root/usr/local/include/expect_tcl.h/* expect_tcl.h - include file for using the expect library, libexpect.a with Tcl (and optionally Tk) Written by: Don Libes, libes@cme.nist.gov, NIST, 12/3/90 Design and implementation of this program was paid for by U.S. tax dollars. Therefore it is public domain. However, the author and NIST would appreciate credit if this program or parts of it are used. */ #ifndef _EXPECT_TCL_H #define _EXPECT_TCL_H #include #include "expect_comm.h" /* * This is a convenience macro used to initialize a thread local storage ptr. * Stolen from tclInt.h */ #ifndef TCL_TSD_INIT #define TCL_TSD_INIT(keyPtr) (ThreadSpecificData *)Tcl_GetThreadData((keyPtr), sizeof(ThreadSpecificData)) #endif EXTERN int exp_cmdlinecmds; EXTERN int exp_interactive; EXTERN FILE *exp_cmdfile; EXTERN char *exp_cmdfilename; EXTERN int exp_getpid; /* pid of Expect itself */ EXTERN int exp_buffer_command_input; EXTERN int exp_strict_write; EXTERN int exp_tcl_debugger_available; EXTERN Tcl_Interp *exp_interp; #define Exp_Init Expect_Init EXTERN int Expect_Init _ANSI_ARGS_((Tcl_Interp *)); /* for Tcl_AppInit apps */ EXTERN void exp_parse_argv _ANSI_ARGS_((Tcl_Interp *,int argc,char **argv)); EXTERN int exp_interpreter _ANSI_ARGS_((Tcl_Interp *,Tcl_Obj *)); EXTERN int exp_interpret_cmdfile _ANSI_ARGS_((Tcl_Interp *,FILE *)); EXTERN int exp_interpret_cmdfilename _ANSI_ARGS_((Tcl_Interp *,char *)); EXTERN void exp_interpret_rcfiles _ANSI_ARGS_((Tcl_Interp *,int my_rc,int sys_rc)); EXTERN char * exp_cook _ANSI_ARGS_((char *s,int *len)); EXTERN void expCloseOnExec _ANSI_ARGS_((int)); /* app-specific exit handler */ EXTERN void (*exp_app_exit)_ANSI_ARGS_((Tcl_Interp *)); EXTERN void exp_exit_handlers _ANSI_ARGS_((ClientData)); EXTERN void exp_error _ANSI_ARGS_(TCL_VARARGS(Tcl_Interp *,interp)); #endif /* _EXPECT_TCL_H */ 0707010005741f000081a400000000000000000000000151a4006b00002ccc0000010000010031ffffffffffffffff0000002000000000root/usr/local/include/expect.h/* expect.h - include file for using the expect library, libexpect.a from C or C++ (i.e., without Tcl) Written by: Don Libes, libes@cme.nist.gov, NIST, 12/3/90 Design and implementation of this program was paid for by U.S. tax dollars. Therefore it is public domain. However, the author and NIST would appreciate credit if this program or parts of it are used. */ #ifndef _EXPECT_H #define _EXPECT_H #include #include /* * tcl.h -- * * This header file describes the externally-visible facilities * of the Tcl interpreter. * * Copyright (c) 1987-1994 The Regents of the University of California. * Copyright (c) 1994-1997 Sun Microsystems, Inc. * Copyright (c) 1993-1996 Lucent Technologies. * Copyright (c) 1998-1999 Scriptics Corporation. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * RCS: @(#) $Id: expect.h,v 5.33 2010/08/31 22:20:27 andreas_kupries Exp $ */ #ifndef _TCL #define _TCL #ifndef __WIN32__ # if defined(_WIN32) || defined(WIN32) # define __WIN32__ # endif #endif #ifdef __WIN32__ # ifndef STRICT # define STRICT # endif # ifndef USE_PROTOTYPE # define USE_PROTOTYPE 1 # endif # ifndef HAS_STDARG # define HAS_STDARG 1 # endif # ifndef USE_PROTOTYPE # define USE_PROTOTYPE 1 # endif /* * Under Windows we need to call Tcl_Alloc in all cases to avoid competing * C run-time library issues. */ # ifndef USE_TCLALLOC # define USE_TCLALLOC 1 # endif #endif /* __WIN32__ */ /* * The following definitions set up the proper options for Macintosh * compilers. We use this method because there is no autoconf equivalent. */ #ifdef MAC_TCL # ifndef HAS_STDARG # define HAS_STDARG 1 # endif # ifndef USE_TCLALLOC # define USE_TCLALLOC 1 # endif # ifndef NO_STRERROR # define NO_STRERROR 1 # endif #endif /* * Utility macros: STRINGIFY takes an argument and wraps it in "" (double * quotation marks), JOIN joins two arguments. */ #define VERBATIM(x) x #ifdef _MSC_VER # define STRINGIFY(x) STRINGIFY1(x) # define STRINGIFY1(x) #x # define JOIN(a,b) JOIN1(a,b) # define JOIN1(a,b) a##b #else # ifdef RESOURCE_INCLUDED # define STRINGIFY(x) STRINGIFY1(x) # define STRINGIFY1(x) #x # define JOIN(a,b) JOIN1(a,b) # define JOIN1(a,b) a##b # else # ifdef __STDC__ # define STRINGIFY(x) #x # define JOIN(a,b) a##b # else # define STRINGIFY(x) "x" # define JOIN(a,b) VERBATIM(a)VERBATIM(b) # endif # endif #endif /* * A special definition used to allow this header file to be included * in resource files so that they can get obtain version information from * this file. Resource compilers don't like all the C stuff, like typedefs * and procedure declarations, that occur below. */ #ifndef RESOURCE_INCLUDED #ifndef BUFSIZ #include #endif /* * Definitions that allow Tcl functions with variable numbers of * arguments to be used with either varargs.h or stdarg.h. TCL_VARARGS * is used in procedure prototypes. TCL_VARARGS_DEF is used to declare * the arguments in a function definiton: it takes the type and name of * the first argument and supplies the appropriate argument declaration * string for use in the function definition. TCL_VARARGS_START * initializes the va_list data structure and returns the first argument. */ #if defined(__STDC__) || defined(HAS_STDARG) # include # define TCL_VARARGS(type, name) (type name, ...) # define TCL_VARARGS_DEF(type, name) (type name, ...) # define TCL_VARARGS_START(type, name, list) (va_start(list, name), name) #else # include # ifdef __cplusplus # define TCL_VARARGS(type, name) (type name, ...) # define TCL_VARARGS_DEF(type, name) (type va_alist, ...) # else # define TCL_VARARGS(type, name) () # define TCL_VARARGS_DEF(type, name) (va_alist) # endif # define TCL_VARARGS_START(type, name, list) \ (va_start(list), va_arg(list, type)) #endif /* * Macros used to declare a function to be exported by a DLL. * Used by Windows, maps to no-op declarations on non-Windows systems. * The default build on windows is for a DLL, which causes the DLLIMPORT * and DLLEXPORT macros to be nonempty. To build a static library, the * macro STATIC_BUILD should be defined. */ #ifdef STATIC_BUILD # define DLLIMPORT # define DLLEXPORT #else # if defined(__WIN32__) && (defined(_MSC_VER) || (defined(__GNUC__) && defined(__declspec))) # define DLLIMPORT __declspec(dllimport) # define DLLEXPORT __declspec(dllexport) # else # define DLLIMPORT # define DLLEXPORT # endif #endif /* * These macros are used to control whether functions are being declared for * import or export. If a function is being declared while it is being built * to be included in a shared library, then it should have the DLLEXPORT * storage class. If is being declared for use by a module that is going to * link against the shared library, then it should have the DLLIMPORT storage * class. If the symbol is beind declared for a static build or for use from a * stub library, then the storage class should be empty. * * The convention is that a macro called BUILD_xxxx, where xxxx is the * name of a library we are building, is set on the compile line for sources * that are to be placed in the library. When this macro is set, the * storage class will be set to DLLEXPORT. At the end of the header file, the * storage class will be reset to DLLIMPORt. */ #undef TCL_STORAGE_CLASS #ifdef BUILD_tcl # define TCL_STORAGE_CLASS DLLEXPORT #else # ifdef USE_TCL_STUBS # define TCL_STORAGE_CLASS # else # define TCL_STORAGE_CLASS DLLIMPORT # endif #endif /* * Definitions that allow this header file to be used either with or * without ANSI C features like function prototypes. */ #undef _ANSI_ARGS_ #undef CONST #if ((defined(__STDC__) || defined(SABER)) && !defined(NO_PROTOTYPE)) || defined(__cplusplus) || defined(USE_PROTOTYPE) # define _USING_PROTOTYPES_ 1 # define _ANSI_ARGS_(x) x # define CONST const #else # define _ANSI_ARGS_(x) () # define CONST #endif #ifdef __cplusplus # define EXTERN extern "C" TCL_STORAGE_CLASS #else # define EXTERN extern TCL_STORAGE_CLASS #endif /* * Macro to use instead of "void" for arguments that must have * type "void *" in ANSI C; maps them to type "char *" in * non-ANSI systems. */ #ifndef __WIN32__ #ifndef VOID # ifdef __STDC__ # define VOID void # else # define VOID char # endif #endif #else /* __WIN32__ */ /* * The following code is copied from winnt.h */ #ifndef VOID #define VOID void typedef char CHAR; typedef short SHORT; typedef long LONG; #endif #endif /* __WIN32__ */ /* * Miscellaneous declarations. */ #ifndef NULL #define NULL 0 #endif typedef struct Tcl_RegExp_ *Tcl_RegExp; /* * These function have been renamed. The old names are deprecated, but we * define these macros for backwards compatibilty. */ #define Tcl_Ckalloc Tcl_Alloc #define Tcl_Ckfree Tcl_Free #define Tcl_Ckrealloc Tcl_Realloc #define Tcl_Return Tcl_SetResult #define Tcl_TildeSubst Tcl_TranslateFileName #endif /* RESOURCE_INCLUDED */ #undef TCL_STORAGE_CLASS #define TCL_STORAGE_CLASS DLLIMPORT #endif /* _TCL */ /* * end of tcl.h definitions */ /* * regexp definitions - from tcl8.0/tclRegexp.h */ /* * Definitions etc. for regexp(3) routines. * * Caveat: this is V8 regexp(3) [actually, a reimplementation thereof], * not the System V one. * * RCS: @(#) $Id: expect.h,v 5.33 2010/08/31 22:20:27 andreas_kupries Exp $ */ #ifndef _REGEXP #define _REGEXP 1 #ifdef BUILD_tcl # undef TCL_STORAGE_CLASS # define TCL_STORAGE_CLASS DLLEXPORT #endif /* * NSUBEXP must be at least 10, and no greater than 117 or the parser * will not work properly. */ #define NSUBEXP 20 typedef struct regexp { char *startp[NSUBEXP]; char *endp[NSUBEXP]; char regstart; /* Internal use only. */ char reganch; /* Internal use only. */ char *regmust; /* Internal use only. */ int regmlen; /* Internal use only. */ char program[1]; /* Unwarranted chumminess with compiler. */ } regexp; EXTERN regexp *TclRegComp _ANSI_ARGS_((char *exp)); EXTERN int TclRegExec _ANSI_ARGS_((regexp *prog, char *string, char *start)); EXTERN void TclRegSub _ANSI_ARGS_((regexp *prog, char *source, char *dest)); EXTERN void exp_TclRegError _ANSI_ARGS_((char *msg)); EXTERN char *TclGetRegError _ANSI_ARGS_((void)); # undef TCL_STORAGE_CLASS # define TCL_STORAGE_CLASS DLLIMPORT #endif /* REGEXP */ /* * end of regexp definitions */ /* * finally - expect-specific definitions */ #include "expect_comm.h" enum exp_type { exp_end = 0, /* placeholder - no more cases */ exp_glob, /* glob-style */ exp_exact, /* exact string */ exp_regexp, /* regexp-style, uncompiled */ exp_compiled, /* regexp-style, compiled */ exp_null, /* matches binary 0 */ exp_bogus /* aid in reporting compatibility problems */ }; struct exp_case { /* case for expect command */ char *pattern; regexp *re; enum exp_type type; int value; /* value to be returned upon match */ }; EXTERN char *exp_buffer; /* buffer of matchable chars */ EXTERN char *exp_buffer_end; /* one beyond end of matchable chars */ EXTERN char *exp_match; /* start of matched string */ EXTERN char *exp_match_end; /* one beyond end of matched string */ EXTERN int exp_match_max; /* bytes */ EXTERN int exp_timeout; /* seconds */ EXTERN int exp_full_buffer; /* if true, return on full buffer */ EXTERN int exp_remove_nulls; /* if true, remove nulls */ EXTERN int exp_pty_timeout; /* see Cray hooks in source */ EXTERN int exp_pid; /* process-id of spawned process */ EXTERN int exp_autoallocpty; /* if TRUE, we do allocation */ EXTERN int exp_pty[2]; /* master is [0], slave is [1] */ EXTERN char *exp_pty_slave_name; /* name of pty slave device if we */ /* do allocation */ EXTERN char *exp_stty_init; /* initial stty args */ EXTERN int exp_ttycopy; /* copy tty parms from /dev/tty */ EXTERN int exp_ttyinit; /* set tty parms to sane state */ EXTERN int exp_console; /* redirect console */ #ifdef HAVE_SIGLONGJMP EXTERN sigjmp_buf exp_readenv; /* for interruptable read() */ #else EXTERN jmp_buf exp_readenv; /* for interruptable read() */ #endif /* HAVE_SIGLONGJMP */ EXTERN int exp_reading; /* whether we can longjmp or not */ #define EXP_ABORT 1 /* abort read */ #define EXP_RESTART 2 /* restart read */ EXTERN int exp_is_debugging; EXTERN int exp_loguser; EXTERN void (*exp_close_in_child)(); /* procedure to close files in child */ EXTERN void exp_slave_control _ANSI_ARGS_((int,int)); EXTERN int exp_logfile_all; EXTERN FILE *exp_debugfile; EXTERN FILE *exp_logfile; extern void exp_debuglog _ANSI_ARGS_(TCL_VARARGS(char *,fmt)); extern void exp_errorlog _ANSI_ARGS_(TCL_VARARGS(char *,fmt)); EXTERN int exp_disconnect _ANSI_ARGS_((void)); EXTERN FILE *exp_popen _ANSI_ARGS_((char *command)); EXTERN void (*exp_child_exec_prelude) _ANSI_ARGS_((void)); #ifndef EXP_DEFINE_FNS EXTERN int exp_spawnl _ANSI_ARGS_(TCL_VARARGS(char *,file)); EXTERN int exp_expectl _ANSI_ARGS_(TCL_VARARGS(int,fd)); EXTERN int exp_fexpectl _ANSI_ARGS_(TCL_VARARGS(FILE *,fp)); #endif EXTERN int exp_spawnv _ANSI_ARGS_((char *file, char *argv[])); EXTERN int exp_expectv _ANSI_ARGS_((int fd, struct exp_case *cases)); EXTERN int exp_fexpectv _ANSI_ARGS_((FILE *fp, struct exp_case *cases)); EXTERN int exp_spawnfd _ANSI_ARGS_((int fd)); #endif /* _EXPECT_H */ 07070100057420000081a400000000000000000000000151a4006b000008e30000010000010031ffffffffffffffff0000002500000000root/usr/local/include/expect_comm.h/* expectcomm.h - public symbols common to both expect.h and expect_tcl.h Written by: Don Libes, libes@cme.nist.gov, NIST, 12/3/90 Design and implementation of this program was paid for by U.S. tax dollars. Therefore it is public domain. However, the author and NIST would appreciate credit if this program or parts of it are used. */ #ifndef _EXPECT_COMM_H #define _EXPECT_COMM_H /* common return codes for Expect functions */ /* The library actually only uses TIMEOUT and EOF */ #define EXP_ABEOF -1 /* abnormal eof in Expect */ /* when in library, this define is not used. */ /* Instead "-1" is used literally in the */ /* usual sense to check errors in system */ /* calls */ #define EXP_TIMEOUT -2 #define EXP_TCLERROR -3 #define EXP_FULLBUFFER -5 #define EXP_MATCH -6 #define EXP_NOMATCH -7 #define EXP_CANTMATCH EXP_NOMATCH #define EXP_CANMATCH -8 #define EXP_DATA_NEW -9 /* if select says there is new data */ #define EXP_DATA_OLD -10 /* if we already read data in another cmd */ #define EXP_EOF -11 #define EXP_RECONFIGURE -12 /* changes to indirect spawn id lists */ /* require us to reconfigure things */ /* in the unlikely event that a signal handler forces us to return this */ /* through expect's read() routine, we temporarily convert it to this. */ #define EXP_TCLRET -20 #define EXP_TCLCNT -21 #define EXP_TCLCNTTIMER -22 #define EXP_TCLBRK -23 #define EXP_TCLCNTEXP -24 #define EXP_TCLRETTCL -25 /* yet more TCL return codes */ /* Tcl does not safely provide a way to define the values of these, so */ /* use ridiculously different numbers for safety */ #define EXP_CONTINUE -101 /* continue expect command */ /* and restart timer */ #define EXP_CONTINUE_TIMER -102 /* continue expect command */ /* and continue timer */ #define EXP_TCL_RETURN -103 /* converted by interact */ /* and interpeter from */ /* inter_return into */ /* TCL_RETURN*/ /* * Everything below here should eventually be moved into expect.h * and Expect-thread-safe variables. */ EXTERN char *exp_pty_error; /* place to pass a string generated */ /* deep in the innards of the pty */ /* code but needed by anyone */ EXTERN int exp_disconnected; /* proc. disc'd from controlling tty */ #endif /* _EXPECT_COMM_H */ 07070100057422000081a400000000000000000000000151a4006b000006c50000010000010031ffffffffffffffff0000002000000000root/usr/local/include/tcldbg.h/* Dbg.h - Tcl Debugger include file Written by: Don Libes, NIST, 3/23/93 Design and implementation of this program was paid for by U.S. tax dollars. Therefore it is public domain. However, the author and NIST would appreciate credit if this program or parts of it are used. */ /* _DEBUG or _DBG is just too likely, use something more unique */ #ifndef _NIST_DBG #define _NIST_DBG #include "tcl.h" typedef int (Dbg_InterProc) _ANSI_ARGS_((Tcl_Interp *interp, ClientData data)); typedef int (Dbg_IgnoreFuncsProc) _ANSI_ARGS_(( Tcl_Interp *interp, char *funcname)); typedef void (Dbg_OutputProc) _ANSI_ARGS_(( Tcl_Interp *interp, char *output, ClientData data)); typedef struct { Dbg_InterProc *func; ClientData data; } Dbg_InterStruct; typedef struct { Dbg_OutputProc *func; ClientData data; } Dbg_OutputStruct; EXTERN char *Dbg_VarName; EXTERN char *Dbg_DefaultCmdName; /* trivial interface, creates a "debug" command in your interp */ EXTERN int Tcldbg_Init _ANSI_ARGS_((Tcl_Interp *)); EXTERN void Dbg_On _ANSI_ARGS_((Tcl_Interp *interp, int immediate)); EXTERN void Dbg_Off _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN char **Dbg_ArgcArgv _ANSI_ARGS_((int argc,char *argv[], int copy)); EXTERN int Dbg_Active _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN Dbg_InterStruct Dbg_Interactor _ANSI_ARGS_(( Tcl_Interp *interp, Dbg_InterProc *interactor, ClientData data)); EXTERN Dbg_IgnoreFuncsProc *Dbg_IgnoreFuncs _ANSI_ARGS_(( Tcl_Interp *interp, Dbg_IgnoreFuncsProc *)); EXTERN Dbg_OutputStruct Dbg_Output _ANSI_ARGS_(( Tcl_Interp *interp, Dbg_OutputProc *, ClientData data)); EXTERN void Dbg_StdinMode _ANSI_ARGS_((int mode)); #endif /* _NIST_DBG */ 07070100057427000041ed00000000000000000000000451a40071000000000000010000010031ffffffffffffffff0000001300000000root/usr/local/man07070100057435000041ed00000000000000000000000251a40071000000000000010000010031ffffffffffffffff0000001800000000root/usr/local/man/man307070100057436000081a400000000000000000000000151a4006b0000597b0000010000010031ffffffffffffffff0000002400000000root/usr/local/man/man3/libexpect.3.TH LIBEXPECT 3 "12 December 1991" .SH NAME libexpect \- programmed dialogue library with interactive programs .SH DESCRIPTION This library contains functions that allow Expect to be used as a Tcl extension or to be used directly from C or C++ (without Tcl). Adding Expect as a Tcl extension is very short and simple, so that will be covered first. .SH SYNOPSIS .nf .B #include "expect_tcl.h" .B Expect_Init(interp); .B cc files... \-lexpect5.20 \-ltcl7.5 \-lm .fi Note: library versions may differ in the actual release. The Expect_Init function adds expect commands to the named interpreter. It avoids overwriting commands that already exist, however aliases beginning with "exp_" are always created for expect commands. So for example, "send" can be used as "exp_send". Generally, you should only call Expect commands via Tcl_Eval. Certain auxiliary functions may be called directly. They are summarized below. They may be useful in constructing your own main. Look at the file exp_main_exp.c in the Expect distribution as a prototype main. Another prototype is tclAppInit.c in the Tcl source distribution. A prototype for working with Tk is in exp_main_tk.c in the Expect distribution. .nf int exp_cmdlinecmds; int exp_interactive; FILE *exp_cmdfile; char *exp_cmdfilename; int exp_tcl_debugger_available; void exp_parse_argv(Tcl_Interp *,int argc,char **argv); int exp_interpreter(Tcl_Interp *); void exp_interpret_cmdfile(Tcl_Interp *,FILE *); void exp_interpret_cmdfilename(Tcl_Interp *,char *); void exp_interpret_rcfiles(Tcl_Interp *,int my_rc,int sys_rc); char * exp_cook(char *s,int *len); void (*exp_app_exit)EXP_PROTO((Tcl_Interp *); void exp_exit(Tcl_Interp *,int status); void exp_exit_handlers(Tcl_Interp *); void exp_error(Tcl_Interp,char *,...); .fi .B exp_cmdlinecmds is 1 if Expect has been invoked with commands on the program command-line (using "-c" for example). .B exp_interactive is 1 if Expect has been invoked with the -i flag or if no commands or script is being invoked. .B exp_cmdfile is a stream from which Expect will read commands. .B exp_cmdfilename is the name of a file which Expect will open and read commands from. .B exp_tcl_debugger_available is 1 if the debugger has been armed. .B exp_parse_argv reads the representation of the command line. Based on what is found, any of the other variables listed here are initialized appropriately. .B exp_interpreter interactively prompts the user for commands and evaluates them. .B exp_interpret_cmdfile reads the given stream and evaluates any commands found. .B exp_interpret_cmdfilename opens the named file and evaluates any commands found. .B exp_interpret_rcfiles reads and evalutes the .rc files. If my_rc is zero, then ~/.expectrc is skipped. If sys_rc is zero, then the system-wide expectrc file is skipped. .B exp_cook returns a static buffer containing the argument reproduced with newlines replaced by carriage-return linefeed sequences. The primary purpose of this is to allow messages to be produced without worrying about whether the terminal is in raw mode or cooked mode. If length is zero, it is computed via strlen. .B exp_error is a printf-like function that writes the result to interp->result. .SH SYNOPSIS .nf .B #include .B int .B "exp_spawnl(file, arg0 [, arg1, ..., argn] (char *)0);" .B char *file; .B char *arg0, *arg1, ... *argn; .B int .B exp_spawnv(file,argv); .B char *file, *argv[ ]; .B int .B exp_spawnfd(fd); .B int fd; .B FILE * .B exp_popen(command); .B char *command; .B extern int exp_pid; .B extern int exp_ttyinit; .B extern int exp_ttycopy; .B extern int exp_console; .B extern char *exp_stty_init; .B extern void (*exp_close_in_child)(); .B extern void (*exp_child_exec_prelude)(); .B extern void exp_close_tcl_files(); .B cc files... \-lexpect \-ltcl \-lm .fi .SH DESCRIPTION .B exp_spawnl and .B exp_spawnv fork a new process so that its stdin, stdout, and stderr can be written and read by the current process. .I file is the name of a file to be executed. The .I arg pointers are null-terminated strings. Following the style of execve(), .I arg0 (or .IR argv[0] ) is customarily a duplicate of the name of the file. .PP Four interfaces are available, .B exp_spawnl is useful when the number of arguments is known at compile time. .B exp_spawnv is useful when the number of arguments is not known at compile time. .B exp_spawnfd is useful when an open file descriptor is already available as a source. .B exp_popen is explained later on. .PP If the process is successfully created, a file descriptor is returned which corresponds to the process's stdin, stdout and stderr. A stream may be associated with the file descriptor by using fdopen(). (This should almost certainly be followed by setbuf() to unbuffer the I/O.) .PP Closing the file descriptor will typically be detected by the process as an EOF. Once such a process exits, it should be waited upon (via wait) in order to free up the kernel process slot. (Some systems allow you to avoid this if you ignore the SIGCHLD signal). .PP .B exp_popen is yet another interface, styled after popen(). It takes a Bourne shell command line, and returns a stream that corresponds to the process's stdin, stdout and stderr. The actual implementation of .B exp_popen below demonstrates .BR exp_spawnl . .nf FILE * exp_popen(program) char *program; { FILE *fp; int ec; if (0 > (ec = exp_spawnl("sh","sh","-c",program,(char *)0))) return(0); if (NULL == (fp = fdopen(ec,"r+")) return(0); setbuf(fp,(char *)0); return(fp); } .fi After a process is started, the variable .B exp_pid is set to the process-id of the new process. The variable .B exp_pty_slave_name is set to the name of the slave side of the pty. The spawn functions uses a pty to communicate with the process. By default, the pty is initialized the same way as the user's tty (if possible, i.e., if the environment has a controlling terminal.) This initialization can be skipped by setting exp_ttycopy to 0. The pty is further initialized to some system wide defaults if exp_ttyinit is non-zero. The default is generally comparable to "stty sane". The tty setting can be further modified by setting the variable .BR exp_stty_init . This variable is interpreted in the style of stty arguments. For example, exp_stty_init = "sane"; repeats the default initialization. On some systems, it is possible to redirect console output to ptys. If this is supported, you can force the next spawn to obtain the console output by setting the variable .B exp_console to 1. Between the time a process is started and the new program is given control, the spawn functions can clean up the environment by closing file descriptors. By default, the only file descriptors closed are ones internal to Expect and any marked "close-on-exec". If needed, you can close additional file descriptors by creating an appropriate function and assigning it to exp_close_in_child. The function will be called after the fork and before the exec. (This also modifies the behavior of the spawn command in Expect.) If you are also using Tcl, it may be convenient to use the function exp_close_tcl_files which closes all files between the default standard file descriptors and the highest descriptor known to Tcl. (Expect does this.) The function exp_child_exec_prelude is the last function called prior to the actual exec in the child. You can redefine this for effects such as manipulating the uid or the signals. .SH "IF YOU WANT TO ALLOCATE YOUR OWN PTY" .nf .B extern int exp_autoallocpty; .B extern int exp_pty[2]; .fi The spawn functions use a pty to communicate with the process. By default, a pty is automatically allocated each time a process is spawned. If you want to allocate ptys yourself, before calling one of the spawn functions, set .B exp_autoallocpty to 0, .B exp_pty[0] to the master pty file descriptor and .B exp_pty[1] to the slave pty file descriptor. The expect library will not do any pty initializations (e.g., exp_stty_init will not be used). The slave pty file descriptor will be automatically closed when the process is spawned. After the process is started, all further communication takes place with the master pty file descriptor. .PP .B exp_spawnl and .B exp_spawnv duplicate the shell's actions in searching for an executable file in a list of directories. The directory list is obtained from the environment. .SH EXPECT PROCESSING While it is possible to use read() to read information from a process spawned by .B exp_spawnl or .BR exp_spawnv , more convenient functions are provided. They are as follows: .nf .B int .B exp_expectl(fd,type1,pattern1,[re1,],value1,type2,...,exp_end); .B int fd; .B enum exp_type type; .B char *pattern1, *pattern2, ...; .B regexp *re1, *re2, ...; .B int value1, value2, ...; .B .B int .B exp_fexpectl(fp,type1,pattern1,[re1,]value1,type2,...,exp_end); .B FILE *fp; .B enum exp_type type; .B char *pattern1, *pattern2, ...; .B regexp *re1, *re2, ...; .B int value1, value2, ...; .B enum exp_type { .B exp_end, .B exp_glob, .B exp_exact, .B exp_regexp, .B exp_compiled, .B exp_null, .B }; .B struct exp_case { .B char *pattern; .B regexp *re; .B enum exp_type type; .B int value; .B }; .B int .B exp_expectv(fd,cases); .B int fd; .B struct exp_case *cases; .B int .B exp_fexpectv(fp,cases); .B FILE *fp; .B struct exp_case *cases; .B extern int exp_timeout; .B extern char *exp_match; .B extern char *exp_match_end; .B extern char *exp_buffer; .B extern char *exp_buffer_end; .B extern int exp_match_max; .B extern int exp_full_buffer; .B extern int exp_remove_nulls; .fi The functions wait until the output from a process matches one of the patterns, a specified time period has passed, or an EOF is seen. .PP The first argument to each function is either a file descriptor or a stream. Successive sets of arguments describe patterns and associated integer values to return when the pattern matches. .PP The type argument is one of four values. exp_end indicates that no more patterns appear. exp_glob indicates that the pattern is a glob-style string pattern. exp_exact indicates that the pattern is an exact string. exp_regexp indicates that the pattern is a regexp-style string pattern. exp_compiled indicates that the pattern is a regexp-style string pattern, and that its compiled form is also provided. exp_null indicates that the pattern is a null (for debugging purposes, a string pattern must also follow). .PP If the compiled form is not provided with the functions .B exp_expectl and .BR exp_fexpectl , any pattern compilation done internally is thrown away after the function returns. The functions .B exp_expectv and .B exp_fexpectv will automatically compile patterns and will not throw them away. Instead, they must be discarded by the user, by calling free on each pattern. It is only necessary to discard them, the last time the cases are used. .PP Regexp subpatterns matched are stored in the compiled regexp. Assuming "re" contains a compiled regexp, the matched string can be found in re->startp[0]. The match substrings (according to the parentheses) in the original pattern can be found in re->startp[1], re->startp[2], and so on, up to re->startp[9]. The corresponding strings ends are re->endp[x] where x is that same index as for the string start. The type exp_null matches if a null appears in the input. The variable exp_remove_nulls must be set to 0 to prevent nulls from being automatically stripped. By default, exp_remove_nulls is set to 1 and nulls are automatically stripped. .B exp_expectv and .B exp_fexpectv are useful when the number of patterns is not known in advance. In this case, the sets are provided in an array. The end of the array is denoted by a struct exp_case with type exp_end. For the rest of this discussion, these functions will be referred to generically as .IR expect. .PP If a pattern matches, then the corresponding integer value is returned. Values need not be unique, however they should be positive to avoid being mistaken for EXP_EOF, EXP_TIMEOUT, or EXP_FULLBUFFER. Upon EOF or timeout, the value .B EXP_EOF or .B EXP_TIMEOUT is returned. The default timeout period is 10 seconds but may be changed by setting the variable .BR exp_timeout . A value of -1 disables a timeout from occurring. A value of 0 causes the expect function to return immediately (i.e., poll) after one read(). However it must be preceded by a function such as select, poll, or an event manager callback to guarantee that there is data to be read. If the variable exp_full_buffer is 1, then EXP_FULLBUFFER is returned if exp_buffer fills with no pattern having matched. When the expect function returns, .B exp_buffer points to the buffer of characters that was being considered for matching. .B exp_buffer_end points to one past the last character in exp_buffer. If a match occurred, .B exp_match points into .B exp_buffer where the match began. .B exp_match_end points to one character past where the match ended. .PP Each time new input arrives, it is compared to each pattern in the order they are listed. Thus, you may test for absence of a match by making the last pattern something guaranteed to appear, such as a prompt. In situations where there is no prompt, you must check for .B EXP_TIMEOUT (just like you would if you were interacting manually). More philosophy and strategies on specifying .B expect patterns can be found in the documentation on the .B expect program itself. See SEE ALSO below. .PP Patterns are the usual C-shell-style regular expressions. For example, the following fragment looks for a successful login, such as from a telnet dialogue. .nf switch (exp_expectl( exp_glob,"connected",CONN, exp_glob,"busy",BUSY, exp_glob,"failed",ABORT, exp_glob,"invalid password",ABORT, exp_end)) { case CONN: /* logged in successfully */ break; case BUSY: /* couldn't log in at the moment */ break; case EXP_TIMEOUT: case ABORT: /* can't log in at any moment! */ break; default: /* problem with expect */ } .fi Asterisks (as in the example above) are a useful shorthand for omitting line-termination characters and other detail. Patterns must match the entire output of the current process (since the previous read on the descriptor or stream). More than 2000 bytes of output can force earlier bytes to be "forgotten". This may be changed by setting the variable .BR exp_match_max . Note that excessively large values can slow down the pattern matcher. .SH RUNNING IN THE BACKGROUND .nf .B extern int exp_disconnected; .B int exp_disconnect(); .fi It is possible to move a process into the background after it has begun running. A typical use for this is to read passwords and then go into the background to sleep before using the passwords to do real work. .PP To move a process into the background, fork, call exp_disconnect() in the child process and exit() in the parent process. This disassociates your process from the controlling terminal. If you wish to move a process into the background in a different way, you must set the variable exp_disconnected to 1. This allows processes spawned after this point to be started correctly. .SH MULTIPLEXING By default, the expect functions block inside of a read on a single file descriptor. If you want to wait on patterns from multiple file descriptors, use select, poll, or an event manager. They will tell you what file descriptor is ready to read. When a file descriptor is ready to read, you can use the expect functions to do one and only read by setting timeout to 0. .SH SLAVE CONTROL .nf .B void .B exp_slave_control(fd,enable) .B int fd; .B int enable; .fi Pty trapping is normally done automatically by the expect functions. However, if you want to issue an ioctl, for example, directly on the slave device, you should temporary disable trapping. Pty trapping can be controlled with exp_slave_control. The first argument is the file descriptor corresponding to the spawned process. The second argument is a 0 if trapping is to be disabled and 1 if it is to be enabled. .SH ERRORS All functions indicate errors by returning \-1 and setting errno. .PP Errors that occur after the spawn functions fork (e.g., attempting to spawn a non-existent program) are written to the process's stderr, and will be read by the first .BR expect . .SH SIGNALS .nf .B extern int exp_reading; .B extern jmp_buf exp_readenv; .fi .B expect uses alarm() to timeout, thus if you generate alarms during .BR expect , it will timeout prematurely. .PP Internally, .B expect calls read() which can be interrupted by signals. If you define signal handlers, you can choose to restart or abort .BR expect 's internal read. The variable, .BR exp_reading , is true if (and only if) .BR expect 's read has been interrupted. longjmp(exp_readenv,EXP_ABORT) will abort the read. longjmp(exp_readenv,EXP_RESTART) will restart the read. .SH LOGGING .nf .B extern int exp_loguser; .B extern int exp_logfile_all .B extern FILE *exp_logfile; .fi If .B exp_loguser is nonzero, .B expect sends any output from the spawned process to stdout. Since interactive programs typically echo their input, this usually suffices to show both sides of the conversation. If .B exp_logfile is also nonzero, this same output is written to the stream defined by .BR exp_logfile . If .B exp_logfile_all is non-zero, .B exp_logfile is written regardless of the value of .BR exp_loguser . .SH DEBUGGING While I consider the library to be easy to use, I think that the standalone expect program is much, much, easier to use than working with the C compiler and its usual edit, compile, debug cycle. Unlike typical C programs, most of the debugging isn't getting the C compiler to accept your programs - rather, it is getting the dialogue correct. Also, translating scripts from expect to C is usually not necessary. For example, the speed of interactive dialogues is virtually never an issue. So please try the standalone 'expect' program first. I suspect it is a more appropriate solution for most people than the library. .PP Nonetheless, if you feel compelled to debug in C, here are some tools to help you. .nf .B extern int exp_is_debugging; .B extern FILE *exp_debugfile; .fi While expect dialogues seem very intuitive, trying to codify them in a program can reveal many surprises in a program's interface. Therefore a variety of debugging aids are available. They are controlled by the above variables, all 0 by default. Debugging information internal to .B expect is sent to stderr when .B exp_is_debugging is non-zero. The debugging information includes every character received, and every attempt made to match the current input against the patterns. In addition, non-printable characters are translated to a printable form. For example, a control-C appears as a caret followed by a C. If .B exp_logfile is non-zero, this information is also written to that stream. .PP If .B exp_debugfile is non-zero, all normal and debugging information is written to that stream, regardless of the value of .BR exp_is_debugging . .SH CAVEATS The stream versions of the .B expect functions are much slower than the file descriptor versions because there is no way to portably read an unknown number of bytes without the potential of timing out. Thus, characters are read one at a time. You are therefore strongly encouraged to use the file descriptor versions of .B expect (although, automated versions of interactive programs don't usually demand high speed anyway). .PP You can actually get the best of both worlds, writing with the usual stream functions and reading with the file descriptor versions of .B expect as long as you don't attempt to intermix other stream input functions (e.g., fgetc). To do this, pass fileno(stream) as the file descriptor each time. Fortunately, there is little reason to use anything but the .B expect functions when reading from interactive programs. .PP There is no matching exp_pclose to exp_popen (unlike popen and pclose). It only takes two functions to close down a connection (fclose() followed by waiting on the pid), but it is not uncommon to separate these two actions by large time intervals, so the function seems of little value. .PP If you are running on a Cray running Unicos (all I know for sure from experience), you must run your compiled program as root or setuid. The problem is that the Cray only allows root processes to open ptys. You should observe as much precautions as possible: If you don't need permissions, setuid(0) only immediately before calling one of the spawn functions and immediately set it back afterwards. .PP Normally, .B spawn takes little time to execute. If you notice spawn taking a significant amount of time, it is probably encountering ptys that are wedged. A number of tests are run on ptys to avoid entanglements with errant processes. (These take 10 seconds per wedged pty.) Running expect with the \-d option will show if .B expect is encountering many ptys in odd states. If you cannot kill the processes to which these ptys are attached, your only recourse may be to reboot. .SH BUGS The .B exp_fexpect functions don't work at all under HP-UX - it appears to be a bug in getc. Follow the advice (above) about using the .B exp_expect functions (which doesn't need to call getc). If you fix the problem (before I do - please check the latest release) let me know. .SH SEE ALSO An alternative to this library is the .B expect program. .B expect interprets scripts written in a high-level language which direct the dialogue. In addition, the user can take control and interact directly when desired. If it is not absolutely necessary to write your own C program, it is much easier to use .B expect to perform the entire interaction. It is described further in the following references: .PP .I "expect: Curing Those Uncontrollable Fits of Interactivity" \fRby Don Libes, Proceedings of the Summer 1990 USENIX Conference, Anaheim, California, June 11-15, 1990. .PP .I "Using expect to Automate System Administration Tasks" \fRby Don Libes, Proceedings of the 1990 USENIX Large Installation Systems Administration Conference, Colorado Springs, Colorado, October 17-19, 1990. .PP expect(1), alarm(3), read(2), write(2), fdopen(3), execve(2), execvp(3), longjmp(3), pty(4). .PP There are several examples C programs in the test directory of .BR expect 's source distribution which use the expect library. .PP .SH AUTHOR Don Libes, libes@nist.gov, National Institute of Standards and Technology .SH ACKNOWLEDGEMENTS Thanks to John Ousterhout (UCBerkeley) for supplying the pattern matcher. .PP Design and implementation of the .B expect library was paid for by the U.S. government and is therefore in the public domain. However the author and NIST would like credit if this program and documentation or portions of them are used. 07070100057428000041ed00000000000000000000000251a40071000000000000010000010031ffffffffffffffff0000001800000000root/usr/local/man/man10707010005742b000081a400000000000000000000000151a4006b000004b30000010000010031ffffffffffffffff0000002500000000root/usr/local/man/man1/decryptdir.1.TH CRYPTDIR 1 "1 January 1993" .SH NAME cryptdir \- encrypt/decrypt all files in a directory .SH SYNOPSIS .B cryptdir [ .I dir ] .br .B decryptdir [ .I dir ] .SH INTRODUCTION .B cryptdir encrypts all files in the current directory (or the given directory if one is provided as an argument). When called as decryptdir (i.e., same program, different name), all files are decrypted. .SH NOTES When encrypting, you are prompted twice for the password as a precautionary measure. It would be a disaster to encrypt files a password that wasn't what you intended. In contrast, when decrypting, you are only prompted once. If it's the wrong password, no harm done. Encrypted files have the suffix .crypt appended. This prevents files from being encrypted twice. The suffix is removed upon decryption. Thus, you can easily add files to an encrypted directory and run cryptdir on it without worrying about the already encrypted files. .SH BUGS The man page is longer than the program. .SH SEE ALSO .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, O'Reilly and Associates, January 1995. .SH AUTHOR Don Libes, National Institute of Standards and Technology 07070100057429000081a400000000000000000000000151a4006b00001a1d0000010000010031ffffffffffffffff0000002500000000root/usr/local/man/man1/autoexpect.1.TH AUTOEXPECT 1 "30 June 1995" .SH NAME autoexpect \- generate an Expect script from watching a session .SH SYNOPSIS .B autoexpect [ .I args ] [ .I program args... ] .br .SH INTRODUCTION autoexpect watches you interacting with another program and creates an Expect script that reproduces your interactions. For straightline scripts, autoexpect saves substantial time over writing scripts by hand. Even if you are an Expect expert, you will find it convenient to use autoexpect to automate the more mindless parts of interactions. It is much easier to cut/paste hunks of autoexpect scripts together than to write them from scratch. And if you are a beginner, you may be able to get away with learning nothing more about Expect than how to call autoexpect. The simplest way to use autoexpect is to call it from the command line with no arguments. For example: % autoexpect By default, autoexpect spawns a shell for you. Given a program name and arguments, autoexpect spawns that program. For example: % autoexpect ftp ftp.cme.nist.gov Once your spawned program is running, interact normally. When you have exited the shell (or program that you specified), autoexpect will create a new script for you. By default, autoexpect writes the new script to "script.exp". You can override this with the \-f flag followed by a new script name. The following example runs "ftp ftp.cme.nist.gov" and stores the resulting Expect script in the file "nist". .nf % autoexpect \-f nist ftp ftp.cme.nist.gov .fi It is important to understand that autoexpect does not guarantee a working script because it necessarily has to guess about certain things \- and occasionally it guesses wrong. However, it is usually very easy to identify and fix these problems. The typical problems are: .RS .TP 4 \(bu Timing. A surprisingly large number of programs (rn, ksh, zsh, telnet, etc.) and devices (e.g., modems) ignore keystrokes that arrive "too quickly" after prompts. If you find your new script hanging up at one spot, try adding a short sleep just before the previous send. You can force this behavior throughout by overriding the variable "force_conservative" near the beginning of the generated script. This "conservative" mode makes autoexpect automatically pause briefly (one tenth of a second) before sending each character. This pacifies every program I know of. This conservative mode is useful if you just want to quickly reassure yourself that the problem is a timing one (or if you really don't care about how fast the script runs). This same mode can be forced before script generation by using the \-c flag. Fortunately, these timing spots are rare. For example, telnet ignores characters only after entering its escape sequence. Modems only ignore characters immediately after connecting to them for the first time. A few programs exhibit this behavior all the time but typically have a switch to disable it. For example, rn's \-T flag disables this behavior. The following example starts autoexpect in conservative mode. .nf autoexpect \-c .fi The \-C flag defines a key to toggle conservative mode. The following example starts autoexpect (in non-conservative mode) with ^L as the toggle. (Note that the ^L is entered literally - i.e., enter a real control-L). .nf autoexpect \-C ^L .fi The following example starts autoexpect in conservative mode with ^L as the toggle. .nf autoexpect \-c \-C ^L .fi .TP \(bu Echoing. Many program echo characters. For example, if you type "more" to a shell, what autoexpect actually sees is: .nf you typed 'm', computer typed 'm', you typed 'o', computer typed 'o', you typed 'r', computer typed 'r', ... .fi Without specific knowledge of the program, it is impossible to know if you are waiting to see each character echoed before typing the next. If autoexpect sees characters being echoed, it assumes that it can send them all as a group rather than interleaving them the way they originally appeared. This makes the script more pleasant to read. However, it could conceivably be incorrect if you really had to wait to see each character echoed. .TP \(bu Change. Autoexpect records every character from the interaction in the script. This is desirable because it gives you the ability to make judgements about what is important and what can be replaced with a pattern match. On the other hand, if you use commands whose output differs from run to run, the generated scripts are not going to be correct. For example, the "date" command always produces different output. So using the date command while running autoexpect is a sure way to produce a script that will require editing in order for it to work. The \-p flag puts autoexpect into "prompt mode". In this mode, autoexpect will only look for the the last line of program output \- which is usually the prompt. This handles the date problem (see above) and most others. The following example starts autoexpect in prompt mode. .nf autoexpect \-p .fi The \-P flag defines a key to toggle prompt mode. The following example starts autoexpect (in non-prompt mode) with ^P as the toggle. Note that the ^P is entered literally - i.e., enter a real control-P. .nf autoexpect \-P ^P .fi The following example starts autoexpect in prompt mode with ^P as the toggle. .nf autoexpect \-p \-P ^P .fi .SH OTHER FLAGS The .B \-quiet flag disables informational messages produced by autoexpect. The .B \-Q flag names a quote character which can be used to enter characters that autoexpect would otherwise consume because they are used as toggles. The following example shows a number of flags with quote used to provide a way of entering the toggles literally. .nf autoexpect \-P ^P \-C ^L \-Q ^Q .fi .SH STYLE I don't know if there is a "style" for Expect programs but autoexpect should definitely not be held up as any model of style. For example, autoexpect uses features of Expect that are intended specifically for computer-generated scripting. So don't try to faithfully write scripts that appear as if they were generated by autoexpect. This is not useful. On the other hand, autoexpect scripts do show some worthwhile things. For example, you can see how any string must be quoted in order to use it in a Tcl script simply by running the strings through autoexpect. .SH SEE ALSO .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, O'Reilly and Associates, January 1995. .SH AUTHOR Don Libes, National Institute of Standards and Technology .B expect and .B autoexpect are in the public domain. NIST and I would appreciate credit if these programs or parts of them are used. 07070100057433000081a400000000000000000000000151a4006b000008e00000010000010031ffffffffffffffff0000002300000000root/usr/local/man/man1/unbuffer.1.TH UNBUFFER 1 "1 June 1994" .SH NAME unbuffer \- unbuffer output .SH SYNOPSIS .B unbuffer .I program [ .I args ] .SH INTRODUCTION .B unbuffer disables the output buffering that occurs when program output is redirected from non-interactive programs. For example, suppose you are watching the output from a fifo by running it through od and then more. .nf od -c /tmp/fifo | more .fi You will not see anything until a full page of output has been produced. You can disable this automatic buffering as follows: .nf unbuffer od -c /tmp/fifo | more .fi Normally, unbuffer does not read from stdin. This simplifies use of unbuffer in some situations. To use unbuffer in a pipeline, use the -p flag. Example: .nf process1 | unbuffer -p process2 | process3 .fi .SH CAVEATS unbuffer -p may appear to work incorrectly if a process feeding input to unbuffer exits. Consider: .nf process1 | unbuffer -p process2 | process3 .fi If process1 exits, process2 may not yet have finished. It is impossible for unbuffer to know long to wait for process2 and process2 may not ever finish, for example, if it is a filter. For expediency, unbuffer simply exits when it encounters an EOF from either its input or process2. In order to have a version of unbuffer that worked in all situations, an oracle would be necessary. If you want an application-specific solution, workarounds or hand-coded Expect may be more suitable. For example, the following example shows how to allow grep to finish processing when the cat before it finishes first. Using cat to feed grep would never require unbuffer in real life. It is merely a placeholder for some imaginary process that may or may not finish. Similarly, the final cat at the end of the pipeline is also a placeholder for another process. .nf $ cat /tmp/abcdef.log | grep abc | cat abcdef xxxabc defxxx $ cat /tmp/abcdef.log | unbuffer grep abc | cat $ (cat /tmp/abcdef.log ; sleep 1) | unbuffer grep abc | cat abcdef xxxabc defxxx $ .fi .SH BUGS The man page is longer than the program. .SH SEE ALSO .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, O'Reilly and Associates, January 1995. .SH AUTHOR Don Libes, National Institute of Standards and Technology 0707010005742e000081a400000000000000000000000151a4006b00001a4f0000010000010031ffffffffffffffff0000002100000000root/usr/local/man/man1/kibitz.1.TH KIBITZ 1 "19 October 1994" .SH NAME kibitz \- allow two people to interact with one shell .SH SYNOPSIS .B kibitz [ .I kibitz-args ] .I user [ .I program program-args... ] .br .B kibitz [ .I kibitz-args ] .I user@host [ .I program program-args... ] .SH INTRODUCTION .B kibitz allows two (or more) people to interact with one shell (or any arbitrary program). Uses include: .RS .TP 4 \(bu A novice user can ask an expert user for help. Using .BR kibitz , the expert can see what the user is doing, and offer advice or show how to do it right. .TP \(bu By running .B kibitz and then starting a full-screen editor, people may carry out a conversation, retaining the ability to scroll backwards, save the entire conversation, or even edit it while in progress. .TP \(bu People can team up on games, document editing, or other cooperative tasks where each person has strengths and weaknesses that complement one another. .SH USAGE To start .BR kibitz , user1 runs kibitz with the argument of the user to kibitz. For example: kibitz user2 .B kibitz starts a new shell (or another program, if given on the command line), while prompting user2 to run .BR kibitz . If user2 runs .B kibitz as directed, the keystrokes of both users become the input of the shell. Similarly, both users receive the output from the shell. To terminate .B kibitz it suffices to terminate the shell itself. For example, if either user types ^D (and the shell accepts this to be EOF), the shell terminates followed by .BR kibitz . Normally, all characters are passed uninterpreted. However, if the escape character (described when .B kibitz starts) is issued, the user may talk directly to the .B kibitz interpreter. Any .BR Expect (1) or .BR Tcl (3) commands may be given. Also, job control may be used while in the interpreter, to, for example, suspend or restart .BR kibitz . Various processes can provide various effects. For example, you can emulate a two-way write(1) session with the command: kibitz user2 sleep 1000000 .SH ARGUMENTS .B kibitz takes arguments, these should also be separated by whitespace. The .B \-noproc flag runs .B kibitz with no process underneath. Characters are passed to the other .BR kibitz . This is particularly useful for connecting multiple interactive processes together. In this mode, characters are not echoed back to the typist. .B \-noescape disables the escape character. .BI \-escape " char" sets the escape character. The default escape character is ^]. .B \-silent turns off informational messages describing what kibitz is doing to initiate a connection. .BI \-tty " ttyname" defines the tty to which the invitation should be sent. If you start .B kibitz to user2 on a remote computer, .B kibitz performs a .B rlogin to the remote computer with your current username. The flag .BI \-proxy " username" causes .B rlogin to use .I username for the remote login (e.g. if your account on the remote computer has a different username). If the .B -proxy flag is not given, .B kibitz tries to determine your current username by (in that order) inspecting the environment variables USER and LOGNAME, then by using the commands .B whoami and .BR logname . The arguments .B -noescape and .B -escape can also be given by user2 when prompted to run .BR kibitz . .SH MORE THAN TWO USERS The current implementation of kibitz explicitly understands only two users, however, it is nonetheless possible to have a three (or more) -way kibitz, by kibitzing another .BR kibitz . For example, the following command runs .B kibitz with the current user, user2, and user3: % kibitz user2 kibitz user3 Additional users may be added by simply appending more "kibitz user" commands. The .B xkibitz script is similar to .B kibitz but supports the ability to add additional users (and drop them) dynamically. .SH CAVEATS .B kibitz assumes the 2nd user has the same terminal type and size as the 1st user. If this assumption is incorrect, graphical programs may display oddly. .B kibitz handles character graphics, but cannot handle bitmapped graphics. Thus, .nf % xterm -e kibitz will work % kibitz xterm will not work .fi However, you can get the effect of the latter command by using .B xkibitz (see SEE ALSO below). .B kibitz uses the same permissions as used by rlogin, rsh, etc. Thus, you can only .B kibitz to users at hosts for which you can rlogin. Similarly, .B kibitz will prompt for a password on the remote host if rlogin would. If you .B kibitz to users at remote hosts, .B kibitz needs to distinguish your prompt from other things that may precede it during login. (Ideally, the end of it is preferred but any part should suffice.) If you have an unusual prompt, set the environment variable EXPECT_PROMPT to an egrep(1)-style regular expression. Brackets should be preceded with one backslash in ranges, and three backslashes for literal brackets. The default prompt r.e. is "($|%|#)\ ". .B kibitz requires the .B kibitz program on both hosts. .B kibitz requires .BR expect (1). By comparison, the .B xkibitz script uses the X authorization mechanism for inter-host communication so it does not need to login, recognize your prompt, or require kibitz on the remote host. It does however need permission to access the other X servers. .SH BUGS An early version of Sun's tmpfs had a bug in it that causes .B kibitz to blow up. If .B kibitz reports "error flushing ...: Is a directory" ask Sun for patch #100174. If your Expect is not compiled with multiple-process support (i.e., you do not have a working select or poll), you will not be able to run kibitz. .SH ENVIRONMENT The environment variable SHELL is used to determine the shell to start, if no other program is given on the command line. If the environment variable EXPECT_PROMPT exists, it is taken as a regular expression which matches the end of your login prompt (but does not otherwise occur while logging in). See also CAVEATS above. If the environment variables USER or LOGNAME are defined, they are used to determine the current user name for a .B kibitz to a remote computer. See description of the .B -proxy option in ARGUMENTS above. .SH SEE ALSO .BR Tcl (3), .BR libexpect (3), .BR xkibitz (1) .br .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, O'Reilly and Associates, January 1995. .br .I "Kibitz \- Connecting Multiple Interactive Programs Together", \fRby Don Libes, Software \- Practice & Experience, John Wiley & Sons, West Sussex, England, Vol. 23, No. 5, May, 1993. .SH AUTHOR Don Libes, National Institute of Standards and Technology .B kibitz is in the public domain. NIST and I would appreciate credit if this program or parts of it are used. 07070100057431000081a400000000000000000000000151a4006b00000cfd0000010000010031ffffffffffffffff0000002300000000root/usr/local/man/man1/passmass.1.TH PASSMASS 1 "7 October 1993" .SH NAME passmass \- change password on multiple machines .SH SYNOPSIS .B passmass [ .I host1 host2 host3 ... ] .SH INTRODUCTION .B Passmass changes a password on multiple machines. If you have accounts on several machines that do not share password databases, Passmass can help you keep them all in sync. This, in turn, will make it easier to change them more frequently. When Passmass runs, it asks you for the old and new passwords. (If you are changing root passwords and have equivalencing, the old password is not used and may be omitted.) Passmass understands the "usual" conventions. Additional arguments may be used for tuning. They affect all hosts which follow until another argument overrides it. For example, if you are known as "libes" on host1 and host2, but "don" on host3, you would say: passmass host1 host2 -user don host3 Arguments are: .RS .TP 4 -user User whose password will be changed. By default, the current user is used. .TP 4 -rlogin Use rlogin to access host. (default) .TP 4 -slogin Use slogin to access host. .TP 4 -ssh Use ssh to access host. .TP 4 -telnet Use telnet to access host. .TP 4 -program Next argument is a program to run to set the password. Default is "passwd". Other common choices are "yppasswd" and "set passwd" (e.g., VMS hosts). A program name such as "password fred" can be used to create entries for new accounts (when run as root). .TP 4 -prompt Next argument is a prompt suffix pattern. This allows the script to know when the shell is prompting. The default is "# " for root and "% " for non-root accounts. .TP 4 -timeout Next argument is the number of seconds to wait for responses. Default is 30 but some systems can be much slower logging in. .TP 4 -su Next argument is 1 or 0. If 1, you are additionally prompted for a root password which is used to su after logging in. root's password is changed rather than the user's. This is useful for hosts which do not allow root to log in. .SH HOW TO USE The best way to run Passmass is to put the command in a one-line shell script or alias. Whenever you get a new account on a new machine, add the appropriate arguments to the command. Then run it whenever you want to change your passwords on all the hosts. .SH CAVEATS Using the same password on multiple hosts carries risks. In particular, if the password can be stolen, then all of your accounts are at risk. Thus, you should not use Passmass in situations where your password is visible, such as across a network which hackers are known to eavesdrop. On the other hand, if you have enough accounts with different passwords, you may end up writing them down somewhere - and .I that can be a security problem. Funny story: my college roommate had an 11"x13" piece of paper on which he had listed accounts and passwords all across the Internet. This was several years worth of careful work and he carried it with him everywhere he went. Well one day, he forgot to remove it from his jeans, and we found a perfectly blank sheet of paper when we took out the wash the following day! .SH SEE ALSO .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, O'Reilly and Associates, January 1995. .SH AUTHOR Don Libes, National Institute of Standards and Technology 0707010005742f000081a400000000000000000000000151a4006b000008b90000010000010031ffffffffffffffff0000002300000000root/usr/local/man/man1/mkpasswd.1.TH MKPASSWD 1 "22 August 1994" .SH NAME mkpasswd \- generate new password, optionally apply it to a user .SH SYNOPSIS .B mkpasswd .I [ .I args ] [ .I user ] .SH INTRODUCTION .B mkpasswd generates passwords and can apply them automatically to users. mkpasswd is based on the code from Chapter 23 of the O'Reilly book "Exploring Expect". .SH USAGE With no arguments, .B mkpasswd returns a new password. mkpasswd With a user name, .B mkpasswd assigns a new password to the user. mkpasswd don The passwords are randomly generated according to the flags below. .SH FLAGS The .B \-l flag defines the length of the password. The default is 9. The following example creates a 20 character password. mkpasswd -l 20 The .B \-d flag defines the minimum number of digits that must be in the password. The default is 2. The following example creates a password with at least 3 digits. mkpasswd -d 3 The .B \-c flag defines the minimum number of lowercase alphabetic characters that must be in the password. The default is 2. The .B \-C flag defines the minimum number of uppercase alphabetic characters that must be in the password. The default is 2. The .B \-s flag defines the minimum number of special characters that must be in the password. The default is 1. The .B \-p flag names a program to set the password. By default, /etc/yppasswd is used if present, otherwise /bin/passwd is used. The .B \-2 flag causes characters to be chosen so that they alternate between right and left hands (qwerty-style), making it harder for anyone watching passwords being entered. This can also make it easier for a password-guessing program. The .B \-v flag causes the password-setting interaction to be visible. By default, it is suppressed. .SH EXAMPLE The following example creates a 15-character password that contains at least 3 digits and 5 uppercase characters. mkpasswd -l 15 -d 3 -C 5 .SH SEE ALSO .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, O'Reilly and Associates, January 1995. .SH AUTHOR Don Libes, National Institute of Standards and Technology .B mkpasswd is in the public domain. NIST and I would appreciate credit if this program or parts of it are used. 0707010005742d000081a400000000000000000000000151a4006b0001356c0000010000010031ffffffffffffffff0000002100000000root/usr/local/man/man1/expect.1.TH EXPECT 1 "29 December 1994" .SH NAME expect \- programmed dialogue with interactive programs, Version 5 .SH SYNOPSIS .B expect [ .B \-dDinN ] [ .B \-c .I cmds ] [ [ .BR \- [ f | b ] ] .I cmdfile ] [ .I args ] .SH INTRODUCTION .B Expect is a program that "talks" to other interactive programs according to a script. Following the script, .B Expect knows what can be expected from a program and what the correct response should be. An interpreted language provides branching and high-level control structures to direct the dialogue. In addition, the user can take control and interact directly when desired, afterward returning control to the script. .PP .B Expectk is a mixture of .B Expect and .BR Tk . It behaves just like .B Expect and .BR Tk 's .BR wish . .B Expect can also be used directly in C or C++ (that is, without Tcl). See libexpect(3). .PP The name "Expect" comes from the idea of .I send/expect sequences popularized by uucp, kermit and other modem control programs. However unlike uucp, .B Expect is generalized so that it can be run as a user-level command with any program and task in mind. .B Expect can actually talk to several programs at the same time. .PP For example, here are some things .B Expect can do: .RS .TP 4 \(bu Cause your computer to dial you back, so that you can login without paying for the call. .TP \(bu Start a game (e.g., rogue) and if the optimal configuration doesn't appear, restart it (again and again) until it does, then hand over control to you. .TP \(bu Run fsck, and in response to its questions, answer "yes", "no" or give control back to you, based on predetermined criteria. .TP \(bu Connect to another network or BBS (e.g., MCI Mail, CompuServe) and automatically retrieve your mail so that it appears as if it was originally sent to your local system. .TP \(bu Carry environment variables, current directory, or any kind of information across rlogin, telnet, tip, su, chgrp, etc. .RE .PP There are a variety of reasons why the shell cannot perform these tasks. (Try, you'll see.) All are possible with .BR Expect . .PP In general, .B Expect is useful for running any program which requires interaction between the program and the user. All that is necessary is that the interaction can be characterized programmatically. .B Expect can also give the user back control (without halting the program being controlled) if desired. Similarly, the user can return control to the script at any time. .SH USAGE .B Expect reads .I cmdfile for a list of commands to execute. .B Expect may also be invoked implicitly on systems which support the #! notation by marking the script executable, and making the first line in your script: #!/usr/local/bin/expect \-f Of course, the path must accurately describe where .B Expect lives. /usr/local/bin is just an example. The .B \-c flag prefaces a command to be executed before any in the script. The command should be quoted to prevent being broken up by the shell. This option may be used multiple times. Multiple commands may be executed with a single .B \-c by separating them with semicolons. Commands are executed in the order they appear. (When using Expectk, this option is specified as .BR \-command .) .PP The .B \-d flag enables some diagnostic output, which primarily reports internal activity of commands such as .B expect and .BR interact . This flag has the same effect as "exp_internal 1" at the beginning of an Expect script, plus the version of .B Expect is printed. (The .B strace command is useful for tracing statements, and the .B trace command is useful for tracing variable assignments.) (When using Expectk, this option is specified as .BR \-diag .) .PP The .B \-D flag enables an interactive debugger. An integer value should follow. The debugger will take control before the next Tcl procedure if the value is non-zero or if a ^C is pressed (or a breakpoint is hit, or other appropriate debugger command appears in the script). See the README file or SEE ALSO (below) for more information on the debugger. (When using Expectk, this option is specified as .BR \-Debug .) .PP The .B \-f flag prefaces a file from which to read commands from. The flag itself is optional as it is only useful when using the #! notation (see above), so that other arguments may be supplied on the command line. (When using Expectk, this option is specified as .BR \-file .) .PP By default, the command file is read into memory and executed in its entirety. It is occasionally desirable to read files one line at a time. For example, stdin is read this way. In order to force arbitrary files to be handled this way, use the .B \-b flag. (When using Expectk, this option is specified as .BR \-buffer .) Note that stdio-buffering may still take place however this shouldn't cause problems when reading from a fifo or stdin. .PP If the string "\-" is supplied as a filename, standard input is read instead. (Use "./\-" to read from a file actually named "\-".) .PP The .B \-i flag causes .B Expect to interactively prompt for commands instead of reading them from a file. Prompting is terminated via the .B exit command or upon EOF. See .B interpreter (below) for more information. .B \-i is assumed if neither a command file nor .B \-c is used. (When using Expectk, this option is specified as .BR \-interactive .) .PP .B \-\- may be used to delimit the end of the options. This is useful if you want to pass an option-like argument to your script without it being interpreted by .BR Expect . This can usefully be placed in the #! line to prevent any flag-like interpretation by Expect. For example, the following will leave the original arguments (including the script name) in the variable .IR argv . #!/usr/local/bin/expect \-\- Note that the usual getopt(3) and execve(2) conventions must be observed when adding arguments to the #! line. .PP The file $exp_library/expect.rc is sourced automatically if present, unless the .B \-N flag is used. (When using Expectk, this option is specified as .BR \-NORC .) Immediately after this, the file ~/.expect.rc is sourced automatically, unless the .B \-n flag is used. If the environment variable DOTDIR is defined, it is treated as a directory and .expect.rc is read from there. (When using Expectk, this option is specified as .BR \-norc .) This sourcing occurs only after executing any .B \-c flags. .PP .B \-v causes Expect to print its version number and exit. (The corresponding flag in Expectk, which uses long flag names, is \-version.) .PP Optional .I args are constructed into a list and stored in the variable named .IR argv . .I argc is initialized to the length of argv. .PP .I argv0 is defined to be the name of the script (or binary if no script is used). For example, the following prints out the name of the script and the first three arguments: .nf send_user "$argv0 [lrange $argv 0 2]\\n" .fi .SH COMMANDS .B Expect uses .I Tcl (Tool Command Language). Tcl provides control flow (e.g., if, for, break), expression evaluation and several other features such as recursion, procedure definition, etc. Commands used here but not defined (e.g., .BR set , .BR if , .BR exec ) are Tcl commands (see tcl(3)). .B Expect supports additional commands, described below. Unless otherwise specified, commands return the empty string. .PP Commands are listed alphabetically so that they can be quickly located. However, new users may find it easier to start by reading the descriptions of .BR spawn , .BR send , .BR expect , and .BR interact , in that order. Note that the best introduction to the language (both Expect and Tcl) is provided in the book "Exploring Expect" (see SEE ALSO below). Examples are included in this man page but they are very limited since this man page is meant primarily as reference material. Note that in the text of this man page, "Expect" with an uppercase "E" refers to the .B Expect program while "expect" with a lower-case "e" refers to the .B expect command within the .B Expect program.) .I .TP 6 .BI close " [-slave] [\-onexec 0|1] [\-i spawn_id]" closes the connection to the current process. Most interactive programs will detect EOF on their stdin and exit; thus .B close usually suffices to kill the process as well. The .B \-i flag declares the process to close corresponding to the named spawn_id. Both .B expect and .B interact will detect when the current process exits and implicitly do a .BR close . But if you kill the process by, say, "exec kill $pid", you will need to explicitly call .BR close . The .BR \-onexec flag determines whether the spawn id will be closed in any new spawned processes or if the process is overlayed. To leave a spawn id open, use the value 0. A non-zero integer value will force the spawn closed (the default) in any new processes. The .B \-slave flag closes the slave associated with the spawn id. (See "spawn -pty".) When the connection is closed, the slave is automatically closed as well if still open. No matter whether the connection is closed implicitly or explicitly, you should call .B wait to clear up the corresponding kernel process slot. .B close does not call .B wait since there is no guarantee that closing a process connection will cause it to exit. See .B wait below for more info. .TP .BI debug " [[-now] 0|1]" controls a Tcl debugger allowing you to step through statements, set breakpoints, etc. With no arguments, a 1 is returned if the debugger is not running, otherwise a 0 is returned. With a 1 argument, the debugger is started. With a 0 argument, the debugger is stopped. If a 1 argument is preceded by the .B \-now flag, the debugger is started immediately (i.e., in the middle of the .B debug command itself). Otherwise, the debugger is started with the next Tcl statement. The .B debug command does not change any traps. Compare this to starting Expect with the .B -D flag (see above). See the README file or SEE ALSO (below) for more information on the debugger. .TP .B disconnect disconnects a forked process from the terminal. It continues running in the background. The process is given its own process group (if possible). Standard I/O is redirected to /dev/null. .IP The following fragment uses .B disconnect to continue running the script in the background. .nf if {[fork]!=0} exit disconnect . . . .fi The following script reads a password, and then runs a program every hour that demands a password each time it is run. The script supplies the password so that you only have to type it once. (See the .B stty command which demonstrates how to turn off password echoing.) .nf send_user "password?\\ " expect_user -re "(.*)\\n" for {} 1 {} { if {[fork]!=0} {sleep 3600;continue} disconnect spawn priv_prog expect Password: send "$expect_out(1,string)\\r" . . . exit } .fi An advantage to using .B disconnect over the shell asynchronous process feature (&) is that .B Expect can save the terminal parameters prior to disconnection, and then later apply them to new ptys. With &, .B Expect does not have a chance to read the terminal's parameters since the terminal is already disconnected by the time .B Expect receives control. .TP .BI exit " [\-opts] [status]" causes .B Expect to exit or otherwise prepare to do so. The .B \-onexit flag causes the next argument to be used as an exit handler. Without an argument, the current exit handler is returned. The .B \-noexit flag causes .B Expect to prepare to exit but stop short of actually returning control to the operating system. The user-defined exit handler is run as well as Expect's own internal handlers. No further Expect commands should be executed. This is useful if you are running Expect with other Tcl extensions. The current interpreter (and main window if in the Tk environment) remain so that other Tcl extensions can clean up. If Expect's .B exit is called again (however this might occur), the handlers are not rerun. Upon exiting, all connections to spawned processes are closed. Closure will be detected as an EOF by spawned processes. .B exit takes no other actions beyond what the normal _exit(2) procedure does. Thus, spawned processes that do not check for EOF may continue to run. (A variety of conditions are important to determining, for example, what signals a spawned process will be sent, but these are system-dependent, typically documented under exit(3).) Spawned processes that continue to run will be inherited by init. .I status (or 0 if not specified) is returned as the exit status of .BR Expect . .B exit is implicitly executed if the end of the script is reached. .TP \fBexp_continue\fR [-continue_timer] The command .B exp_continue allows .B expect itself to continue executing rather than returning as it normally would. By default .B exp_continue resets the timeout timer. The .I -continue_timer flag prevents timer from being restarted. (See .B expect for more information.) .TP .BI exp_internal " [\-f file] value" causes further commands to send diagnostic information internal to .B Expect to stderr if .I value is non-zero. This output is disabled if .I value is 0. The diagnostic information includes every character received, and every attempt made to match the current output against the patterns. .IP If the optional .I file is supplied, all normal and debugging output is written to that file (regardless of the value of .IR value ). Any previous diagnostic output file is closed. The .B \-info flag causes exp_internal to return a description of the most recent non-info arguments given. .TP .BI exp_open " [args] [\-i spawn_id]" returns a Tcl file identifier that corresponds to the original spawn id. The file identifier can then be used as if it were opened by Tcl's .B open command. (The spawn id should no longer be used. A .B wait should not be executed. The .B \-leaveopen flag leaves the spawn id open for access through Expect commands. A .B wait must be executed on the spawn id. .TP .BI exp_pid " [\-i spawn_id]" returns the process id corresponding to the currently spawned process. If the .B \-i flag is used, the pid returned corresponds to that of the given spawn id. .TP .B exp_send is an alias for .BR send . .TP .B exp_send_error is an alias for .BR send_error . .TP .B exp_send_log is an alias for .BR send_log . .TP .B exp_send_tty is an alias for .BR send_tty . .TP .B exp_send_user is an alias for .BR send_user . .TP .BI exp_version " [[\-exit] version]" is useful for assuring that the script is compatible with the current version of Expect. .IP With no arguments, the current version of .B Expect is returned. This version may then be encoded in your script. If you actually know that you are not using features of recent versions, you can specify an earlier version. .IP Versions consist of three numbers separated by dots. First is the major number. Scripts written for versions of .B Expect with a different major number will almost certainly not work. .B exp_version returns an error if the major numbers do not match. .IP Second is the minor number. Scripts written for a version with a greater minor number than the current version may depend upon some new feature and might not run. .B exp_version returns an error if the major numbers match, but the script minor number is greater than that of the running .BR Expect . .IP Third is a number that plays no part in the version comparison. However, it is incremented when the .B Expect software distribution is changed in any way, such as by additional documentation or optimization. It is reset to 0 upon each new minor version. .IP With the .B \-exit flag, .B Expect prints an error and exits if the version is out of date. .TP .BI expect " [[\-opts] pat1 body1] ... [\-opts] patn [bodyn]" waits until one of the patterns matches the output of a spawned process, a specified time period has passed, or an end-of-file is seen. If the final body is empty, it may be omitted. .IP Patterns from the most recent .B expect_before command are implicitly used before any other patterns. Patterns from the most recent .B expect_after command are implicitly used after any other patterns. .IP If the arguments to the entire .B expect statement require more than one line, all the arguments may be "braced" into one so as to avoid terminating each line with a backslash. In this one case, the usual Tcl substitutions will occur despite the braces. .IP If a pattern is the keyword .BR eof , the corresponding body is executed upon end-of-file. If a pattern is the keyword .BR timeout , the corresponding body is executed upon timeout. If no timeout keyword is used, an implicit null action is executed upon timeout. The default timeout period is 10 seconds but may be set, for example to 30, by the command "set timeout 30". An infinite timeout may be designated by the value \-1. If a pattern is the keyword .BR default , the corresponding body is executed upon either timeout or end-of-file. .IP If a pattern matches, then the corresponding body is executed. .B expect returns the result of the body (or the empty string if no pattern matched). In the event that multiple patterns match, the one appearing first is used to select a body. .IP Each time new output arrives, it is compared to each pattern in the order they are listed. Thus, you may test for absence of a match by making the last pattern something guaranteed to appear, such as a prompt. In situations where there is no prompt, you must use .B timeout (just like you would if you were interacting manually). .IP Patterns are specified in three ways. By default, patterns are specified as with Tcl's .B string match command. (Such patterns are also similar to C-shell regular expressions usually referred to as "glob" patterns). The .B \-gl flag may may be used to protect patterns that might otherwise match .B expect flags from doing so. Any pattern beginning with a "-" should be protected this way. (All strings starting with "-" are reserved for future options.) .IP For example, the following fragment looks for a successful login. (Note that .B abort is presumed to be a procedure defined elsewhere in the script.) .nf .ta \w' expect 'u +\w'invalid password 'u expect { busy {puts busy\\n ; exp_continue} failed abort "invalid password" abort timeout abort connected } .fi Quotes are necessary on the fourth pattern since it contains a space, which would otherwise separate the pattern from the action. Patterns with the same action (such as the 3rd and 4th) require listing the actions again. This can be avoid by using regexp-style patterns (see below). More information on forming glob-style patterns can be found in the Tcl manual. .IP Regexp-style patterns follow the syntax defined by Tcl's .B regexp (short for "regular expression") command. regexp patterns are introduced with the flag .BR \-re . The previous example can be rewritten using a regexp as: .nf .ta \w' expect 'u +\w'connected 'u expect { busy {puts busy\\n ; exp_continue} \-re "failed|invalid password" abort timeout abort connected } .fi Both types of patterns are "unanchored". This means that patterns do not have to match the entire string, but can begin and end the match anywhere in the string (as long as everything else matches). Use ^ to match the beginning of a string, and $ to match the end. Note that if you do not wait for the end of a string, your responses can easily end up in the middle of the string as they are echoed from the spawned process. While still producing correct results, the output can look unnatural. Thus, use of $ is encouraged if you can exactly describe the characters at the end of a string. Note that in many editors, the ^ and $ match the beginning and end of lines respectively. However, because expect is not line oriented, these characters match the beginning and end of the data (as opposed to lines) currently in the expect matching buffer. (Also, see the note below on "system indigestion.") The .B \-ex flag causes the pattern to be matched as an "exact" string. No interpretation of *, ^, etc is made (although the usual Tcl conventions must still be observed). Exact patterns are always unanchored. .IP The .B \-nocase flag causes uppercase characters of the output to compare as if they were lowercase characters. The pattern is not affected. .IP While reading output, more than 2000 bytes can force earlier bytes to be "forgotten". This may be changed with the function .BR match_max . (Note that excessively large values can slow down the pattern matcher.) If .I patlist is .BR full_buffer , the corresponding body is executed if .I match_max bytes have been received and no other patterns have matched. Whether or not the .B full_buffer keyword is used, the forgotten characters are written to expect_out(buffer). If .I patlist is the keyword .BR null , and nulls are allowed (via the .B remove_nulls command), the corresponding body is executed if a single ASCII 0 is matched. It is not possible to match 0 bytes via glob or regexp patterns. Upon matching a pattern (or eof or full_buffer), any matching and previously unmatched output is saved in the variable .IR expect_out(buffer) . Up to 9 regexp substring matches are saved in the variables .I expect_out(1,string) through .IR expect_out(9,string) . If the .B -indices flag is used before a pattern, the starting and ending indices (in a form suitable for .BR lrange ) of the 10 strings are stored in the variables .I expect_out(X,start) and .I expect_out(X,end) where X is a digit, corresponds to the substring position in the buffer. 0 refers to strings which matched the entire pattern and is generated for glob patterns as well as regexp patterns. For example, if a process has produced output of "abcdefgh\\n", the result of: .nf expect "cd" .fi is as if the following statements had executed: .nf set expect_out(0,string) cd set expect_out(buffer) abcd .fi and "efgh\\n" is left in the output buffer. If a process produced the output "abbbcabkkkka\\n", the result of: .nf expect \-indices \-re "b(b*).*(k+)" .fi is as if the following statements had executed: .nf set expect_out(0,start) 1 set expect_out(0,end) 10 set expect_out(0,string) bbbcabkkkk set expect_out(1,start) 2 set expect_out(1,end) 3 set expect_out(1,string) bb set expect_out(2,start) 10 set expect_out(2,end) 10 set expect_out(2,string) k set expect_out(buffer) abbbcabkkkk .fi and "a\\n" is left in the output buffer. The pattern "*" (and -re ".*") will flush the output buffer without reading any more output from the process. .IP Normally, the matched output is discarded from Expect's internal buffers. This may be prevented by prefixing a pattern with the .B \-notransfer flag. This flag is especially useful in experimenting (and can be abbreviated to "-not" for convenience while experimenting). The spawn id associated with the matching output (or eof or full_buffer) is stored in .IR expect_out(spawn_id) . The .B \-timeout flag causes the current expect command to use the following value as a timeout instead of using the value of the timeout variable. By default, patterns are matched against output from the current process, however the .B \-i flag declares the output from the named spawn_id list be matched against any following patterns (up to the next .BR \-i ). The spawn_id list should either be a whitespace separated list of spawn_ids or a variable referring to such a list of spawn_ids. For example, the following example waits for "connected" from the current process, or "busy", "failed" or "invalid password" from the spawn_id named by $proc2. .nf expect { \-i $proc2 busy {puts busy\\n ; exp_continue} \-re "failed|invalid password" abort timeout abort connected } .fi The value of the global variable .I any_spawn_id may be used to match patterns to any spawn_ids that are named with all other .B \-i flags in the current .B expect command. The spawn_id from a .B \-i flag with no associated pattern (i.e., followed immediately by another .BR \-i ) is made available to any other patterns in the same .B expect command associated with .I any_spawn_id. The .B \-i flag may also name a global variable in which case the variable is read for a list of spawn ids. The variable is reread whenever it changes. This provides a way of changing the I/O source while the command is in execution. Spawn ids provided this way are called "indirect" spawn ids. Actions such as .B break and .B continue cause control structures (i.e., .BR for , .BR proc ) to behave in the usual way. The command .B exp_continue allows .B expect itself to continue executing rather than returning as it normally would. .IP This is useful for avoiding explicit loops or repeated expect statements. The following example is part of a fragment to automate rlogin. The .B exp_continue avoids having to write a second .B expect statement (to look for the prompt again) if the rlogin prompts for a password. .nf expect { Password: { stty -echo send_user "password (for $user) on $host: " expect_user -re "(.*)\\n" send_user "\\n" send "$expect_out(1,string)\\r" stty echo exp_continue } incorrect { send_user "invalid password or account\\n" exit } timeout { send_user "connection to $host timed out\\n" exit } eof { send_user \\ "connection to host failed: $expect_out(buffer)" exit } -re $prompt } .fi For example, the following fragment might help a user guide an interaction that is already totally automated. In this case, the terminal is put into raw mode. If the user presses "+", a variable is incremented. If "p" is pressed, several returns are sent to the process, perhaps to poke it in some way, and "i" lets the user interact with the process, effectively stealing away control from the script. In each case, the .B exp_continue allows the current .B expect to continue pattern matching after executing the current action. .nf stty raw \-echo expect_after { \-i $user_spawn_id "p" {send "\\r\\r\\r"; exp_continue} "+" {incr foo; exp_continue} "i" {interact; exp_continue} "quit" exit } .fi .IP By default, .B exp_continue resets the timeout timer. The timer is not restarted, if .B exp_continue is called with the .B \-continue_timer flag. .TP .BI expect_after " [expect_args]" works identically to the .B expect_before except that if patterns from both .B expect and .B expect_after can match, the .B expect pattern is used. See the .B expect_before command for more information. .TP .BI expect_background " [expect_args]" takes the same arguments as .BR expect , however it returns immediately. Patterns are tested whenever new input arrives. The pattern .B timeout and .B default are meaningless to .BR expect_background and are silently discarded. Otherwise, the .B expect_background command uses .B expect_before and .B expect_after patterns just like .B expect does. When .B expect_background actions are being evaluated, background processing for the same spawn id is blocked. Background processing is unblocked when the action completes. While background processing is blocked, it is possible to do a (foreground) .B expect on the same spawn id. It is not possible to execute an .B expect while an .B expect_background is unblocked. .B expect_background for a particular spawn id is deleted by declaring a new expect_background with the same spawn id. Declaring .B expect_background with no pattern removes the given spawn id from the ability to match patterns in the background. .TP .BI expect_before " [expect_args]" takes the same arguments as .BR expect , however it returns immediately. Pattern-action pairs from the most recent .B expect_before with the same spawn id are implicitly added to any following .B expect commands. If a pattern matches, it is treated as if it had been specified in the .B expect command itself, and the associated body is executed in the context of the .B expect command. If patterns from both .B expect_before and .B expect can match, the .B expect_before pattern is used. If no pattern is specified, the spawn id is not checked for any patterns. Unless overridden by a .B \-i flag, .B expect_before patterns match against the spawn id defined at the time that the .B expect_before command was executed (not when its pattern is matched). The \-info flag causes .B expect_before to return the current specifications of what patterns it will match. By default, it reports on the current spawn id. An optional spawn id specification may be given for information on that spawn id. For example .nf expect_before -info -i $proc .fi At most one spawn id specification may be given. The flag \-indirect suppresses direct spawn ids that come only from indirect specifications. Instead of a spawn id specification, the flag "-all" will cause "-info" to report on all spawn ids. The output of the \-info flag can be reused as the argument to expect_before. .TP .BI expect_tty " [expect_args]" is like .B expect but it reads characters from /dev/tty (i.e. keystrokes from the user). By default, reading is performed in cooked mode. Thus, lines must end with a return in order for .B expect to see them. This may be changed via .B stty (see the .B stty command below). .TP .BI expect_user " [expect_args]" is like .B expect but it reads characters from stdin (i.e. keystrokes from the user). By default, reading is performed in cooked mode. Thus, lines must end with a return in order for .B expect to see them. This may be changed via .B stty (see the .B stty command below). .TP .B fork creates a new process. The new process is an exact copy of the current .B Expect process. On success, .B fork returns 0 to the new (child) process and returns the process ID of the child process to the parent process. On failure (invariably due to lack of resources, e.g., swap space, memory), .B fork returns \-1 to the parent process, and no child process is created. .IP Forked processes exit via the .B exit command, just like the original process. Forked processes are allowed to write to the log files. If you do not disable debugging or logging in most of the processes, the result can be confusing. .IP Some pty implementations may be confused by multiple readers and writers, even momentarily. Thus, it is safest to .B fork before spawning processes. .TP .BI interact " [string1 body1] ... [stringn [bodyn]]" gives control of the current process to the user, so that keystrokes are sent to the current process, and the stdout and stderr of the current process are returned. .IP String-body pairs may be specified as arguments, in which case the body is executed when the corresponding string is entered. (By default, the string is not sent to the current process.) The .B interpreter command is assumed, if the final body is missing. .IP If the arguments to the entire .B interact statement require more than one line, all the arguments may be "braced" into one so as to avoid terminating each line with a backslash. In this one case, the usual Tcl substitutions will occur despite the braces. .IP For example, the following command runs interact with the following string-body pairs defined: When ^Z is pressed, .B Expect is suspended. (The .B \-reset flag restores the terminal modes.) When ^A is pressed, the user sees "you typed a control-A" and the process is sent a ^A. When $ is pressed, the user sees the date. When ^C is pressed, .B Expect exits. If "foo" is entered, the user sees "bar". When ~~ is pressed, the .B Expect interpreter runs interactively. .nf .ta \w' interact 'u +\w'$CTRLZ 'u +\w'{'u set CTRLZ \\032 interact { -reset $CTRLZ {exec kill \-STOP [pid]} \\001 {send_user "you typed a control\-A\\n"; send "\\001" } $ {send_user "The date is [clock format [clock seconds]]."} \\003 exit foo {send_user "bar"} ~~ } .fi .IP In string-body pairs, strings are matched in the order they are listed as arguments. Strings that partially match are not sent to the current process in anticipation of the remainder coming. If characters are then entered such that there can no longer possibly be a match, only the part of the string will be sent to the process that cannot possibly begin another match. Thus, strings that are substrings of partial matches can match later, if the original strings that was attempting to be match ultimately fails. .IP By default, string matching is exact with no wild cards. (In contrast, the .B expect command uses glob-style patterns by default.) The .B \-ex flag may be used to protect patterns that might otherwise match .B interact flags from doing so. Any pattern beginning with a "-" should be protected this way. (All strings starting with "-" are reserved for future options.) The .B \-re flag forces the string to be interpreted as a regexp-style pattern. In this case, matching substrings are stored in the variable .I interact_out similarly to the way .B expect stores its output in the variable .BR expect_out . The .B \-indices flag is similarly supported. The pattern .B eof introduces an action that is executed upon end-of-file. A separate .B eof pattern may also follow the .B \-output flag in which case it is matched if an eof is detected while writing output. The default .B eof action is "return", so that .B interact simply returns upon any EOF. The pattern .B timeout introduces a timeout (in seconds) and action that is executed after no characters have been read for a given time. The .B timeout pattern applies to the most recently specified process. There is no default timeout. The special variable "timeout" (used by the .B expect command) has no affect on this timeout. For example, the following statement could be used to autologout users who have not typed anything for an hour but who still get frequent system messages: .nf interact -input $user_spawn_id timeout 3600 return -output \\ $spawn_id .fi If the pattern is the keyword .BR null , and nulls are allowed (via the .B remove_nulls command), the corresponding body is executed if a single ASCII 0 is matched. It is not possible to match 0 bytes via glob or regexp patterns. Prefacing a pattern with the flag .B \-iwrite causes the variable .I interact_out(spawn_id) to be set to the spawn_id which matched the pattern (or eof). Actions such as .B break and .B continue cause control structures (i.e., .BR for , .BR proc ) to behave in the usual way. However .B return causes interact to return to its caller, while .B inter_return causes .B interact to cause a return in its caller. For example, if "proc foo" called .B interact which then executed the action .BR inter_return , .B proc foo would return. (This means that if .B interact calls .B interpreter interactively typing .B return will cause the interact to continue, while .B inter_return will cause the interact to return to its caller.) .IP During .BR interact , raw mode is used so that all characters may be passed to the current process. If the current process does not catch job control signals, it will stop if sent a stop signal (by default ^Z). To restart it, send a continue signal (such as by "kill \-CONT "). If you really want to send a SIGSTOP to such a process (by ^Z), consider spawning csh first and then running your program. On the other hand, if you want to send a SIGSTOP to .B Expect itself, first call interpreter (perhaps by using an escape character), and then press ^Z. .IP String-body pairs can be used as a shorthand for avoiding having to enter the interpreter and execute commands interactively. The previous terminal mode is used while the body of a string-body pair is being executed. .IP For speed, actions execute in raw mode by default. The .B \-reset flag resets the terminal to the mode it had before .B interact was executed (invariably, cooked mode). Note that characters entered when the mode is being switched may be lost (an unfortunate feature of the terminal driver on some systems). The only reason to use .B \-reset is if your action depends on running in cooked mode. .IP The .B \-echo flag sends characters that match the following pattern back to the process that generated them as each character is read. This may be useful when the user needs to see feedback from partially typed patterns. .IP If a pattern is being echoed but eventually fails to match, the characters are sent to the spawned process. If the spawned process then echoes them, the user will see the characters twice. .B \-echo is probably only appropriate in situations where the user is unlikely to not complete the pattern. For example, the following excerpt is from rftp, the recursive-ftp script, where the user is prompted to enter ~g, ~p, or ~l, to get, put, or list the current directory recursively. These are so far away from the normal ftp commands, that the user is unlikely to type ~ followed by anything else, except mistakenly, in which case, they'll probably just ignore the result anyway. .nf interact { -echo ~g {getcurdirectory 1} -echo ~l {getcurdirectory 0} -echo ~p {putcurdirectory} } .fi The .B \-nobuffer flag sends characters that match the following pattern on to the output process as characters are read. This is useful when you wish to let a program echo back the pattern. For example, the following might be used to monitor where a person is dialing (a Hayes-style modem). Each time "atd" is seen the script logs the rest of the line. .nf proc lognumber {} { interact -nobuffer -re "(.*)\\r" return puts $log "[clock format [clock seconds]]: dialed $interact_out(1,string)" } interact -nobuffer "atd" lognumber .fi .IP During .BR interact , previous use of .B log_user is ignored. In particular, .B interact will force its output to be logged (sent to the standard output) since it is presumed the user doesn't wish to interact blindly. .IP The .B \-o flag causes any following key-body pairs to be applied to the output of the current process. This can be useful, for example, when dealing with hosts that send unwanted characters during a telnet session. .IP By default, .B interact expects the user to be writing stdin and reading stdout of the .B Expect process itself. The .B \-u flag (for "user") makes .B interact look for the user as the process named by its argument (which must be a spawned id). .IP This allows two unrelated processes to be joined together without using an explicit loop. To aid in debugging, Expect diagnostics always go to stderr (or stdout for certain logging and debugging information). For the same reason, the .B interpreter command will read interactively from stdin. .IP For example, the following fragment creates a login process. Then it dials the user (not shown), and finally connects the two together. Of course, any process may be substituted for login. A shell, for example, would allow the user to work without supplying an account and password. .nf spawn login set login $spawn_id spawn tip modem # dial back out to user # connect user to login interact \-u $login .fi To send output to multiple processes, list each spawn id list prefaced by a .B \-output flag. Input for a group of output spawn ids may be determined by a spawn id list prefaced by a .B \-input flag. (Both .B \-input and .B \-output may take lists in the same form as the .B \-i flag in the .B expect command, except that any_spawn_id is not meaningful in .BR interact .) All following flags and strings (or patterns) apply to this input until another -input flag appears. If no .B \-input appears, .B \-output implies "\-input $user_spawn_id \-output". (Similarly, with patterns that do not have .BR \-input .) If one .B \-input is specified, it overrides $user_spawn_id. If a second .B \-input is specified, it overrides $spawn_id. Additional .B \-input flags may be specified. The two implied input processes default to having their outputs specified as $spawn_id and $user_spawn_id (in reverse). If a .B \-input flag appears with no .B \-output flag, characters from that process are discarded. The .B \-i flag introduces a replacement for the current spawn_id when no other .B \-input or .B \-output flags are used. A \-i flag implies a \-o flag. It is possible to change the processes that are being interacted with by using indirect spawn ids. (Indirect spawn ids are described in the section on the expect command.) Indirect spawn ids may be specified with the -i, -u, -input, or -output flags. .TP .B interpreter " [args]" causes the user to be interactively prompted for .B Expect and Tcl commands. The result of each command is printed. .IP Actions such as .B break and .B continue cause control structures (i.e., .BR for , .BR proc ) to behave in the usual way. However .B return causes interpreter to return to its caller, while .B inter_return causes .B interpreter to cause a return in its caller. For example, if "proc foo" called .B interpreter which then executed the action .BR inter_return , .B proc foo would return. Any other command causes .B interpreter to continue prompting for new commands. .IP By default, the prompt contains two integers. The first integer describes the depth of the evaluation stack (i.e., how many times Tcl_Eval has been called). The second integer is the Tcl history identifier. The prompt can be set by defining a procedure called "prompt1" whose return value becomes the next prompt. If a statement has open quotes, parens, braces, or brackets, a secondary prompt (by default "+> ") is issued upon newline. The secondary prompt may be set by defining a procedure called "prompt2". .IP During .BR interpreter , cooked mode is used, even if the its caller was using raw mode. .IP If stdin is closed, .B interpreter will return unless the .B \-eof flag is used, in which case the subsequent argument is invoked. .TP .BI log_file " [args] [[\-a] file]" If a filename is provided, .B log_file will record a transcript of the session (beginning at that point) in the file. .B log_file will stop recording if no argument is given. Any previous log file is closed. Instead of a filename, a Tcl file identifier may be provided by using the .B \-open or .B \-leaveopen flags. This is similar to the .B spawn command. (See .B spawn for more info.) The .B \-a flag forces output to be logged that was suppressed by the .B log_user command. By default, the .B log_file command .I appends to old files rather than truncating them, for the convenience of being able to turn logging off and on multiple times in one session. To truncate files, use the .B \-noappend flag. The .B -info flag causes log_file to return a description of the most recent non-info arguments given. .TP .BI log_user " -info|0|1" By default, the send/expect dialogue is logged to stdout (and a logfile if open). The logging to stdout is disabled by the command "log_user 0" and reenabled by "log_user 1". Logging to the logfile is unchanged. The .B -info flag causes log_user to return a description of the most recent non-info arguments given. .TP .BI match_max " [\-d] [\-i spawn_id] [size]" defines the size of the buffer (in bytes) used internally by .BR expect . With no .I size argument, the current size is returned. .IP With the .B \-d flag, the default size is set. (The initial default is 2000.) With the .B \-i flag, the size is set for the named spawn id, otherwise it is set for the current process. .TP .BI overlay " [\-# spawn_id] [\-# spawn_id] [...] program [args]" executes .IR "program args" in place of the current .B Expect program, which terminates. A bare hyphen argument forces a hyphen in front of the command name as if it was a login shell. All spawn_ids are closed except for those named as arguments. These are mapped onto the named file identifiers. .IP Spawn_ids are mapped to file identifiers for the new program to inherit. For example, the following line runs chess and allows it to be controlled by the current process \- say, a chess master. .nf overlay \-0 $spawn_id \-1 $spawn_id \-2 $spawn_id chess .fi This is more efficient than "interact \-u", however, it sacrifices the ability to do programmed interaction since the .B Expect process is no longer in control. .IP Note that no controlling terminal is provided. Thus, if you disconnect or remap standard input, programs that do job control (shells, login, etc) will not function properly. .TP .BI parity " [\-d] [\-i spawn_id] [value]" defines whether parity should be retained or stripped from the output of spawned processes. If .I value is zero, parity is stripped, otherwise it is not stripped. With no .I value argument, the current value is returned. .IP With the .B \-d flag, the default parity value is set. (The initial default is 1, i.e., parity is not stripped.) With the .B \-i flag, the parity value is set for the named spawn id, otherwise it is set for the current process. .TP .BI remove_nulls " [\-d] [\-i spawn_id] [value]" defines whether nulls are retained or removed from the output of spawned processes before pattern matching or storing in the variable .I expect_out or .IR interact_out . If .I value is 1, nulls are removed. If .I value is 0, nulls are not removed. With no .I value argument, the current value is returned. .IP With the .B \-d flag, the default value is set. (The initial default is 1, i.e., nulls are removed.) With the .B \-i flag, the value is set for the named spawn id, otherwise it is set for the current process. Whether or not nulls are removed, .B Expect will record null bytes to the log and stdout. .TP .BI send " [\-flags] string" Sends .IR string to the current process. For example, the command .nf send "hello world\\r" .fi sends the characters, h e l l o w o r l d to the current process. (Tcl includes a printf-like command (called .BR format ) which can build arbitrarily complex strings.) .IP Characters are sent immediately although programs with line-buffered input will not read the characters until a return character is sent. A return character is denoted "\\r". The .B \-\- flag forces the next argument to be interpreted as a string rather than a flag. Any string can be preceded by "\-\-" whether or not it actually looks like a flag. This provides a reliable mechanism to specify variable strings without being tripped up by those that accidentally look like flags. (All strings starting with "-" are reserved for future options.) The .B \-i flag declares that the string be sent to the named spawn_id. If the spawn_id is .IR user_spawn_id , and the terminal is in raw mode, newlines in the string are translated to return-newline sequences so that they appear as if the terminal was in cooked mode. The .B \-raw flag disables this translation. The .BR \-null flag sends null characters (0 bytes). By default, one null is sent. An integer may follow the .BR \-null to indicate how many nulls to send. The .B \-break flag generates a break condition. This only makes sense if the spawn id refers to a tty device opened via "spawn -open". If you have spawned a process such as tip, you should use tip's convention for generating a break. The .B \-s flag forces output to be sent "slowly", thus avoid the common situation where a computer outtypes an input buffer that was designed for a human who would never outtype the same buffer. This output is controlled by the value of the variable "send_slow" which takes a two element list. The first element is an integer that describes the number of bytes to send atomically. The second element is a real number that describes the number of seconds by which the atomic sends must be separated. For example, "set send_slow {10 .001}" would force "send \-s" to send strings with 1 millisecond in between each 10 characters sent. The .B \-h flag forces output to be sent (somewhat) like a human actually typing. Human-like delays appear between the characters. (The algorithm is based upon a Weibull distribution, with modifications to suit this particular application.) This output is controlled by the value of the variable "send_human" which takes a five element list. The first two elements are average interarrival time of characters in seconds. The first is used by default. The second is used at word endings, to simulate the subtle pauses that occasionally occur at such transitions. The third parameter is a measure of variability where .1 is quite variable, 1 is reasonably variable, and 10 is quite invariable. The extremes are 0 to infinity. The last two parameters are, respectively, a minimum and maximum interarrival time. The minimum and maximum are used last and "clip" the final time. The ultimate average can be quite different from the given average if the minimum and maximum clip enough values. As an example, the following command emulates a fast and consistent typist: .nf set send_human {.1 .3 1 .05 2} send \-h "I'm hungry. Let's do lunch." .fi while the following might be more suitable after a hangover: .nf set send_human {.4 .4 .2 .5 100} send \-h "Goodd party lash night!" .fi Note that errors are not simulated, although you can set up error correction situations yourself by embedding mistakes and corrections in a send argument. The flags for sending null characters, for sending breaks, for forcing slow output and for human-style output are mutually exclusive. Only the one specified last will be used. Furthermore, no .I string argument can be specified with the flags for sending null characters or breaks. It is a good idea to precede the first .B send to a process by an .BR expect . .B expect will wait for the process to start, while .B send cannot. In particular, if the first .B send completes before the process starts running, you run the risk of having your data ignored. In situations where interactive programs offer no initial prompt, you can precede .B send by a delay as in: .nf # To avoid giving hackers hints on how to break in, # this system does not prompt for an external password. # Wait for 5 seconds for exec to complete spawn telnet very.secure.gov sleep 5 send password\\r .fi .B exp_send is an alias for .BI send . If you are using Expectk or some other variant of Expect in the Tk environment, .B send is defined by Tk for an entirely different purpose. .B exp_send is provided for compatibility between environments. Similar aliases are provided for other Expect's other send commands. .TP .BI send_error " [\-flags] string" is like .BR send , except that the output is sent to stderr rather than the current process. .TP .BI send_log " [\--] string" is like .BR send , except that the string is only sent to the log file (see .BR log_file .) The arguments are ignored if no log file is open. .TP .BI send_tty " [\-flags] string" is like .BR send , except that the output is sent to /dev/tty rather than the current process. .TP .BI send_user " [\-flags] string" is like .BR send , except that the output is sent to stdout rather than the current process. .TP .BI sleep " seconds" causes the script to sleep for the given number of seconds. Seconds may be a decimal number. Interrupts (and Tk events if you are using Expectk) are processed while Expect sleeps. .TP .BI spawn " [args] program [args]" creates a new process running .IR "program args" . Its stdin, stdout and stderr are connected to Expect, so that they may be read and written by other .B Expect commands. The connection is broken by .B close or if the process itself closes any of the file identifiers. .IP When a process is started by .BR spawn , the variable .I spawn_id is set to a descriptor referring to that process. The process described by .I spawn_id is considered the .IR "current process" . .I spawn_id may be read or written, in effect providing job control. .IP .I user_spawn_id is a global variable containing a descriptor which refers to the user. For example, when .I spawn_id is set to this value, .B expect behaves like .BR expect_user . .I .I error_spawn_id is a global variable containing a descriptor which refers to the standard error. For example, when .I spawn_id is set to this value, .B send behaves like .BR send_error . .IP .I tty_spawn_id is a global variable containing a descriptor which refers to /dev/tty. If /dev/tty does not exist (such as in a cron, at, or batch script), then .I tty_spawn_id is not defined. This may be tested as: .nf if {[info vars tty_spawn_id]} { # /dev/tty exists } else { # /dev/tty doesn't exist # probably in cron, batch, or at script } .fi .IP .B spawn returns the UNIX process id. If no process is spawned, 0 is returned. The variable .I spawn_out(slave,name) is set to the name of the pty slave device. .IP By default, .B spawn echoes the command name and arguments. The .B \-noecho flag stops .B spawn from doing this. .IP The .B \-console flag causes console output to be redirected to the spawned process. This is not supported on all systems. Internally, .B spawn uses a pty, initialized the same way as the user's tty. This is further initialized so that all settings are "sane" (according to stty(1)). If the variable .I stty_init is defined, it is interpreted in the style of stty arguments as further configuration. For example, "set stty_init raw" will cause further spawned processes's terminals to start in raw mode. .B \-nottycopy skips the initialization based on the user's tty. .B \-nottyinit skips the "sane" initialization. .IP Normally, .B spawn takes little time to execute. If you notice spawn taking a significant amount of time, it is probably encountering ptys that are wedged. A number of tests are run on ptys to avoid entanglements with errant processes. (These take 10 seconds per wedged pty.) Running Expect with the .B \-d option will show if .B Expect is encountering many ptys in odd states. If you cannot kill the processes to which these ptys are attached, your only recourse may be to reboot. If .I program cannot be spawned successfully because exec(2) fails (e.g. when .I program doesn't exist), an error message will be returned by the next .B interact or .B expect command as if .I program had run and produced the error message as output. This behavior is a natural consequence of the implementation of .BR spawn . Internally, spawn forks, after which the spawned process has no way to communicate with the original .B Expect process except by communication via the spawn_id. The .B \-open flag causes the next argument to be interpreted as a Tcl file identifier (i.e., returned by .BR open .) The spawn id can then be used as if it were a spawned process. (The file identifier should no longer be used.) This lets you treat raw devices, files, and pipelines as spawned processes without using a pty. 0 is returned to indicate there is no associated process. When the connection to the spawned process is closed, so is the Tcl file identifier. The .B \-leaveopen flag is similar to .B \-open except that .B \-leaveopen causes the file identifier to be left open even after the spawn id is closed. The .B \-pty flag causes a pty to be opened but no process spawned. 0 is returned to indicate there is no associated process. Spawn_id is set as usual. The variable .I spawn_out(slave,fd) is set to a file identifier corresponding to the pty slave. It can be closed using "close -slave". The .B \-ignore flag names a signal to be ignored in the spawned process. Otherwise, signals get the default behavior. Signals are named as in the .B trap command, except that each signal requires a separate flag. .TP .BI strace " level" causes following statements to be printed before being executed. (Tcl's trace command traces variables.) .I level indicates how far down in the call stack to trace. For example, the following command runs .B Expect while tracing the first 4 levels of calls, but none below that. .nf expect \-c "strace 4" script.exp .fi The .B -info flag causes strace to return a description of the most recent non-info arguments given. .TP .BI stty " args" changes terminal modes similarly to the external stty command. By default, the controlling terminal is accessed. Other terminals can be accessed by appending "< /dev/tty..." to the command. (Note that the arguments should not be grouped into a single argument.) Requests for status return it as the result of the command. If no status is requested and the controlling terminal is accessed, the previous status of the raw and echo attributes are returned in a form which can later be used by the command. For example, the arguments .B raw or .B \-cooked put the terminal into raw mode. The arguments .B \-raw or .B cooked put the terminal into cooked mode. The arguments .B echo and .B \-echo put the terminal into echo and noecho mode respectively. .IP The following example illustrates how to temporarily disable echoing. This could be used in otherwise-automatic scripts to avoid embedding passwords in them. (See more discussion on this under EXPECT HINTS below.) .nf stty \-echo send_user "Password: " expect_user -re "(.*)\\n" set password $expect_out(1,string) stty echo .fi .TP .BI system " args" gives .I args to sh(1) as input, just as if it had been typed as a command from a terminal. .B Expect waits until the shell terminates. The return status from sh is handled the same way that .B exec handles its return status. .IP In contrast to .B exec which redirects stdin and stdout to the script, .B system performs no redirection (other than that indicated by the string itself). Thus, it is possible to use programs which must talk directly to /dev/tty. For the same reason, the results of .B system are not recorded in the log. .TP .BI timestamp " [args]" returns a timestamp. With no arguments, the number of seconds since the epoch is returned. The .B \-format flag introduces a string which is returned but with substitutions made according to the POSIX rules for strftime. For example %a is replaced by an abbreviated weekday name (i.e., Sat). Others are: .nf %a abbreviated weekday name %A full weekday name %b abbreviated month name %B full month name %c date-time as in: Wed Oct 6 11:45:56 1993 %d day of the month (01-31) %H hour (00-23) %I hour (01-12) %j day (001-366) %m month (01-12) %M minute (00-59) %p am or pm %S second (00-61) %u day (1-7, Monday is first day of week) %U week (00-53, first Sunday is first day of week one) %V week (01-53, ISO 8601 style) %w day (0-6) %W week (00-53, first Monday is first day of week one) %x date-time as in: Wed Oct 6 1993 %X time as in: 23:59:59 %y year (00-99) %Y year as in: 1993 %Z timezone (or nothing if not determinable) %% a bare percent sign .fi Other % specifications are undefined. Other characters will be passed through untouched. Only the C locale is supported. The .B \-seconds flag introduces a number of seconds since the epoch to be used as a source from which to format. Otherwise, the current time is used. The .B \-gmt flag forces timestamp output to use the GMT timezone. With no flag, the local timezone is used. .TP .BI trap " [[command] signals]" causes the given .I command to be executed upon future receipt of any of the given signals. The command is executed in the global scope. If .I command is absent, the signal action is returned. If .I command is the string SIG_IGN, the signals are ignored. If .I command is the string SIG_DFL, the signals are result to the system default. .I signals is either a single signal or a list of signals. Signals may be specified numerically or symbolically as per signal(3). The "SIG" prefix may be omitted. With no arguments (or the argument \-number), .B trap returns the signal number of the trap command currently being executed. The .B \-code flag uses the return code of the command in place of whatever code Tcl was about to return when the command originally started running. The .B \-interp flag causes the command to be evaluated using the interpreter active at the time the command started running rather than when the trap was declared. The .B \-name flag causes the .B trap command to return the signal name of the trap command currently being executed. The .B \-max flag causes the .B trap command to return the largest signal number that can be set. For example, the command "trap {send_user "Ouch!"} SIGINT" will print "Ouch!" each time the user presses ^C. By default, SIGINT (which can usually be generated by pressing ^C) and SIGTERM cause Expect to exit. This is due to the following trap, created by default when Expect starts. .nf trap exit {SIGINT SIGTERM} .fi If you use the -D flag to start the debugger, SIGINT is redefined to start the interactive debugger. This is due to the following trap: .nf trap {exp_debug 1} SIGINT .fi The debugger trap can be changed by setting the environment variable EXPECT_DEBUG_INIT to a new trap command. You can, of course, override both of these just by adding trap commands to your script. In particular, if you have your own "trap exit SIGINT", this will override the debugger trap. This is useful if you want to prevent users from getting to the debugger at all. If you want to define your own trap on SIGINT but still trap to the debugger when it is running, use: .nf if {![exp_debug]} {trap mystuff SIGINT} .fi Alternatively, you can trap to the debugger using some other signal. .B trap will not let you override the action for SIGALRM as this is used internally to .BR Expect . The disconnect command sets SIGALRM to SIG_IGN (ignore). You can reenable this as long as you disable it during subsequent spawn commands. See signal(3) for more info. .TP .BI wait " [args]" delays until a spawned process (or the current process if none is named) terminates. .IP .B wait normally returns a list of four integers. The first integer is the pid of the process that was waited upon. The second integer is the corresponding spawn id. The third integer is -1 if an operating system error occurred, or 0 otherwise. If the third integer was 0, the fourth integer is the status returned by the spawned process. If the third integer was -1, the fourth integer is the value of errno set by the operating system. The global variable errorCode is also set. Additional elements may appear at the end of the return value from .BR wait . An optional fifth element identifies a class of information. Currently, the only possible value for this element is CHILDKILLED in which case the next two values are the C-style signal name and a short textual description. .IP The .B \-i flag declares the process to wait corresponding to the named spawn_id (NOT the process id). Inside a SIGCHLD handler, it is possible to wait for any spawned process by using the spawn id -1. The .B \-nowait flag causes the wait to return immediately with the indication of a successful wait. When the process exits (later), it will automatically disappear without the need for an explicit wait. The .B wait command may also be used wait for a forked process using the arguments "-i -1". Unlike its use with spawned processes, this command can be executed at any time. There is no control over which process is reaped. However, the return value can be checked for the process id. .SH LIBRARIES Expect automatically knows about two built-in libraries for Expect scripts. These are defined by the directories named in the variables exp_library and exp_exec_library. Both are meant to contain utility files that can be used by other scripts. exp_library contains architecture-independent files. exp_exec_library contains architecture-dependent files. Depending on your system, both directories may be totally empty. The existence of the file $exp_exec_library/cat-buffers describes whether your /bin/cat buffers by default. .SH PRETTY-PRINTING A vgrind definition is available for pretty-printing .B Expect scripts. Assuming the vgrind definition supplied with the .B Expect distribution is correctly installed, you can use it as: .nf vgrind \-lexpect file .fi .SH EXAMPLES It many not be apparent how to put everything together that the man page describes. I encourage you to read and try out the examples in the example directory of the .B Expect distribution. Some of them are real programs. Others are simply illustrative of certain techniques, and of course, a couple are just quick hacks. The INSTALL file has a quick overview of these programs. .PP The .B Expect papers (see SEE ALSO) are also useful. While some papers use syntax corresponding to earlier versions of Expect, the accompanying rationales are still valid and go into a lot more detail than this man page. .SH CAVEATS Extensions may collide with Expect's command names. For example, .B send is defined by Tk for an entirely different purpose. For this reason, most of the .B Expect commands are also available as "exp_XXXX". Commands and variables beginning with "exp", "inter", "spawn", and "timeout" do not have aliases. Use the extended command names if you need this compatibility between environments. .B Expect takes a rather liberal view of scoping. In particular, variables read by commands specific to the .B Expect program will be sought first from the local scope, and if not found, in the global scope. For example, this obviates the need to place "global timeout" in every procedure you write that uses .BR expect . On the other hand, variables written are always in the local scope (unless a "global" command has been issued). The most common problem this causes is when spawn is executed in a procedure. Outside the procedure, .I spawn_id no longer exists, so the spawned process is no longer accessible simply because of scoping. Add a "global spawn_id" to such a procedure. If you cannot enable the multispawning capability (i.e., your system supports neither select (BSD *.*), poll (SVR>2), nor something equivalent), .B Expect will only be able to control a single process at a time. In this case, do not attempt to set .IR spawn_id , nor should you execute processes via exec while a spawned process is running. Furthermore, you will not be able to .B expect from multiple processes (including the user as one) at the same time. Terminal parameters can have a big effect on scripts. For example, if a script is written to look for echoing, it will misbehave if echoing is turned off. For this reason, Expect forces sane terminal parameters by default. Unfortunately, this can make things unpleasant for other programs. As an example, the emacs shell wants to change the "usual" mappings: newlines get mapped to newlines instead of carriage-return newlines, and echoing is disabled. This allows one to use emacs to edit the input line. Unfortunately, Expect cannot possibly guess this. You can request that Expect not override its default setting of terminal parameters, but you must then be very careful when writing scripts for such environments. In the case of emacs, avoid depending upon things like echoing and end-of-line mappings. The commands that accepted arguments braced into a single list (the .B expect variants and .BR interact ) use a heuristic to decide if the list is actually one argument or many. The heuristic can fail only in the case when the list actually does represent a single argument which has multiple embedded \\n's with non-whitespace characters between them. This seems sufficiently improbable, however the argument "\-nobrace" can be used to force a single argument to be handled as a single argument. This could conceivably be used with machine-generated Expect code. Similarly, -brace forces a single argument to be handle as multiple patterns/actions. .SH BUGS It was really tempting to name the program "sex" (for either "Smart EXec" or "Send-EXpect"), but good sense (or perhaps just Puritanism) prevailed. On some systems, when a shell is spawned, it complains about not being able to access the tty but runs anyway. This means your system has a mechanism for gaining the controlling tty that .B Expect doesn't know about. Please find out what it is, and send this information back to me. Ultrix 4.1 (at least the latest versions around here) considers timeouts of above 1000000 to be equivalent to 0. Digital UNIX 4.0A (and probably other versions) refuses to allocate ptys if you define a SIGCHLD handler. See grantpt page for more info. IRIX 6.0 does not handle pty permissions correctly so that if Expect attempts to allocate a pty previously used by someone else, it fails. Upgrade to IRIX 6.1. Telnet (verified only under SunOS 4.1.2) hangs if TERM is not set. This is a problem under cron, at and in cgi scripts, which do not define TERM. Thus, you must set it explicitly - to what type is usually irrelevant. It just has to be set to something! The following probably suffices for most cases. .nf set env(TERM) vt100 .fi Tip (verified only under BSDI BSD/OS 3.1 i386) hangs if SHELL and HOME are not set. This is a problem under cron, at and in cgi scripts, which do not define these environment variables. Thus, you must set them explicitly - to what type is usually irrelevant. It just has to be set to something! The following probably suffices for most cases. .nf set env(SHELL) /bin/sh set env(HOME) /usr/local/bin .fi Some implementations of ptys are designed so that the kernel throws away any unread output after 10 to 15 seconds (actual number is implementation-dependent) after the process has closed the file descriptor. Thus .B Expect programs such as .nf spawn date sleep 20 expect .fi will fail. To avoid this, invoke non-interactive programs with .B exec rather than .BR spawn . While such situations are conceivable, in practice I have never encountered a situation in which the final output of a truly interactive program would be lost due to this behavior. On the other hand, Cray UNICOS ptys throw away any unread output immediately after the process has closed the file descriptor. I have reported this to Cray and they are working on a fix. Sometimes a delay is required between a prompt and a response, such as when a tty interface is changing UART settings or matching baud rates by looking for start/stop bits. Usually, all this is require is to sleep for a second or two. A more robust technique is to retry until the hardware is ready to receive input. The following example uses both strategies: .nf send "speed 9600\\r"; sleep 1 expect { timeout {send "\\r"; exp_continue} $prompt } .fi trap \-code will not work with any command that sits in Tcl's event loop, such as sleep. The problem is that in the event loop, Tcl discards the return codes from async event handlers. A workaround is to set a flag in the trap code. Then check the flag immediately after the command (i.e., sleep). The expect_background command ignores -timeout arguments and has no concept of timeouts in general. .SH "EXPECT HINTS" There are a couple of things about .B Expect that may be non-intuitive. This section attempts to address some of these things with a couple of suggestions. A common expect problem is how to recognize shell prompts. Since these are customized differently by differently people and different shells, portably automating rlogin can be difficult without knowing the prompt. A reasonable convention is to have users store a regular expression describing their prompt (in particular, the end of it) in the environment variable EXPECT_PROMPT. Code like the following can be used. If EXPECT_PROMPT doesn't exist, the code still has a good chance of functioning correctly. .nf set prompt "(%|#|\\\\$) $" ;# default prompt catch {set prompt $env(EXPECT_PROMPT)} expect -re $prompt .fi I encourage you to write .B expect patterns that include the end of whatever you expect to see. This avoids the possibility of answering a question before seeing the entire thing. In addition, while you may well be able to answer questions before seeing them entirely, if you answer early, your answer may appear echoed back in the middle of the question. In other words, the resulting dialogue will be correct but look scrambled. Most prompts include a space character at the end. For example, the prompt from ftp is 'f', 't', 'p', '>' and . To match this prompt, you must account for each of these characters. It is a common mistake not to include the blank. Put the blank in explicitly. If you use a pattern of the form X*, the * will match all the output received from the end of X to the last thing received. This sounds intuitive but can be somewhat confusing because the phrase "last thing received" can vary depending upon the speed of the computer and the processing of I/O both by the kernel and the device driver. .PP In particular, humans tend to see program output arriving in huge chunks (atomically) when in reality most programs produce output one line at a time. Assuming this is the case, the * in the pattern of the previous paragraph may only match the end of the current line even though there seems to be more, because at the time of the match that was all the output that had been received. .PP .B expect has no way of knowing that further output is coming unless your pattern specifically accounts for it. .PP Even depending on line-oriented buffering is unwise. Not only do programs rarely make promises about the type of buffering they do, but system indigestion can break output lines up so that lines break at seemingly random places. Thus, if you can express the last few characters of a prompt when writing patterns, it is wise to do so. If you are waiting for a pattern in the last output of a program and the program emits something else instead, you will not be able to detect that with the .B timeout keyword. The reason is that .B expect will not timeout \- instead it will get an .B eof indication. Use that instead. Even better, use both. That way if that line is ever moved around, you won't have to edit the line itself. Newlines are usually converted to carriage return, linefeed sequences when output by the terminal driver. Thus, if you want a pattern that explicitly matches the two lines, from, say, printf("foo\\nbar"), you should use the pattern "foo\\r\\nbar". .PP A similar translation occurs when reading from the user, via .BR expect_user . In this case, when you press return, it will be translated to a newline. If .B Expect then passes that to a program which sets its terminal to raw mode (like telnet), there is going to be a problem, as the program expects a true return. (Some programs are actually forgiving in that they will automatically translate newlines to returns, but most don't.) Unfortunately, there is no way to find out that a program put its terminal into raw mode. .PP Rather than manually replacing newlines with returns, the solution is to use the command "stty raw", which will stop the translation. Note, however, that this means that you will no longer get the cooked line-editing features. .PP .B interact implicitly sets your terminal to raw mode so this problem will not arise then. It is often useful to store passwords (or other private information) in .B Expect scripts. This is not recommended since anything that is stored on a computer is susceptible to being accessed by anyone. Thus, interactively prompting for passwords from a script is a smarter idea than embedding them literally. Nonetheless, sometimes such embedding is the only possibility. .PP Unfortunately, the UNIX file system has no direct way of creating scripts which are executable but unreadable. Systems which support setgid shell scripts may indirectly simulate this as follows: .PP Create the .B Expect script (that contains the secret data) as usual. Make its permissions be 750 (\-rwxr\-x\-\-\-) and owned by a trusted group, i.e., a group which is allowed to read it. If necessary, create a new group for this purpose. Next, create a /bin/sh script with permissions 2751 (\-rwxr\-s\-\-x) owned by the same group as before. .PP The result is a script which may be executed (and read) by anyone. When invoked, it runs the .B Expect script. .SH "SEE ALSO" .BR Tcl (3), .BR libexpect (3) .br .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, pp. 602, ISBN 1-56592-090-2, O'Reilly and Associates, 1995. .br .I "expect: Curing Those Uncontrollable Fits of Interactivity" \fRby Don Libes, Proceedings of the Summer 1990 USENIX Conference, Anaheim, California, June 11-15, 1990. .br .I "Using .B expect to Automate System Administration Tasks" \fRby Don Libes, Proceedings of the 1990 USENIX Large Installation Systems Administration Conference, Colorado Springs, Colorado, October 17-19, 1990. .br .I "Tcl: An Embeddable Command Language" \fRby John Ousterhout, Proceedings of the Winter 1990 USENIX Conference, Washington, D.C., January 22-26, 1990. .br .I "expect: Scripts for Controlling Interactive Programs" \fRby Don Libes, Computing Systems, Vol. 4, No. 2, University of California Press Journals, November 1991. .br .I "Regression Testing and Conformance Testing Interactive Programs", \fRby Don Libes, Proceedings of the Summer 1992 USENIX Conference, pp. 135-144, San Antonio, TX, June 12-15, 1992. .br .I "Kibitz \- Connecting Multiple Interactive Programs Together", \fRby Don Libes, Software \- Practice & Experience, John Wiley & Sons, West Sussex, England, Vol. 23, No. 5, May, 1993. .br .I "A Debugger for Tcl Applications", \fRby Don Libes, Proceedings of the 1993 Tcl/Tk Workshop, Berkeley, CA, June 10-11, 1993. .SH AUTHOR Don Libes, National Institute of Standards and Technology .SH ACKNOWLEDGMENTS Thanks to John Ousterhout for Tcl, and Scott Paisley for inspiration. Thanks to Rob Savoye for Expect's autoconfiguration code. .PP The HISTORY file documents much of the evolution of .BR expect . It makes interesting reading and might give you further insight to this software. Thanks to the people mentioned in it who sent me bug fixes and gave other assistance. .PP Design and implementation of .B Expect was paid for in part by the U.S. government and is therefore in the public domain. However the author and NIST would like credit if this program and documentation or portions of them are used. 0707010005742a000081a400000000000000000000000151a4006b000004b80000010000010031ffffffffffffffff0000002300000000root/usr/local/man/man1/cryptdir.1.TH CRYPTDIR 1 "1 January 1993" .SH NAME cryptdir \- encrypt/decrypt all files in a directory .SH SYNOPSIS .B cryptdir [ .I dir ] .br .B decryptdir [ .I dir ] .SH INTRODUCTION .B cryptdir encrypts all files in the current directory (or the given directory if one is provided as an argument). When called as decryptdir (i.e., same program, different name), all files are decrypted. .SH NOTES When encrypting, you are prompted twice for the password as a precautionary measure. It would be a disaster to encrypt files with a password that wasn't what you intended. In contrast, when decrypting, you are only prompted once. If it's the wrong password, no harm done. Encrypted files have the suffix .crypt appended. This prevents files from being encrypted twice. The suffix is removed upon decryption. Thus, you can easily add files to an encrypted directory and run cryptdir on it without worrying about the already encrypted files. .SH BUGS The man page is longer than the program. .SH SEE ALSO .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, O'Reilly and Associates, January 1995. .SH AUTHOR Don Libes, National Institute of Standards and Technology 07070100057434000081a400000000000000000000000151a4006b000013e60000010000010031ffffffffffffffff0000002200000000root/usr/local/man/man1/xkibitz.1.TH XKIBITZ 1 "06 October 1994" .SH NAME xkibitz \- allow multiple people to interact in an xterm .SH SYNOPSIS .B xkibitz [ .I xkibitz-args ] [ .I program program-args... ] .br .SH INTRODUCTION .B xkibitz allows users in separate xterms to share one shell (or any program that runs in an xterm). Uses include: .RS .TP 4 \(bu A novice user can ask an expert user for help. Using .BR xkibitz , the expert can see what the user is doing, and offer advice or show how to do it right. .TP \(bu By running .B xkibitz and then starting a full-screen editor, people may carry out a conversation, retaining the ability to scroll backwards, save the entire conversation, or even edit it while in progress. .TP \(bu People can team up on games, document editing, or other cooperative tasks where each person has strengths and weaknesses that complement one another. .TP \(bu If you want to have a large number of people do an on-line code walk-through, you can sit two in front of each workstation, and then connect them all together while you everyone looks at code together in the editor. .SH USAGE To start .BR xkibitz , one user (the master) runs xkibitz with no arguments. .B xkibitz starts a new shell (or another program, if given on the command line). The user can interact normally with the shell, or upon entering an escape (described when xkibitz starts) can add users to the interaction. To add users, enter "+ display" where display is the X display name. If there is no ":X.Y" in the display name, ":0.0" is assumed. The master user must have permission to access each display. Each display is assigned a tag \- a small integer which can be used to reference the display. To show the current tags and displays, enter "=". To drop a display, enter "- tag" where tag is the display's tag according to the "=" command. To return to the shared shell, enter "return". Then the keystrokes of all users become the input of the shell. Similarly, all users receive the output from the shell. To terminate .B xkibitz it suffices to terminate the shell itself. For example, if any user types ^D (and the shell accepts this to be EOF), the shell terminates followed by .BR xkibitz . Normally, all characters are passed uninterpreted. However, in the escape dialogue the user talks directly to the .B xkibitz interpreter. Any .BR Expect (1) or .BR Tcl (3) commands may also be given. Also, job control may be used while in the interpreter, to, for example, suspend or restart .BR xkibitz . Various processes can produce various effects. For example, you can emulate a multi-way write(1) session with the command: xkibitz sleep 1000000 .PP .SH ARGUMENTS .B xkibitz understands a few special arguments which should appear before the .I program name (if given). Each argument should be separated by whitespace. If the arguments themselves takes arguments, these should also be separated by whitespace. .B \-escape sets the escape character. The default escape character is ^]. .B \-display adds a display much like the "+" command. Multiple \-display flags can be given. For example, to start up xkibitz with three additional displays: xkibitz -display mercury -display fox -display dragon:1.0 .SH CAVEATS Due to limitations in both X and UNIX, resize propagation is weak. When the master user resizes the xterm, all the other xterms are logically resized. Unfortunately, xkibitz cannot force the physical xterm size to correspond with the logical xterm sizes. The other users are free to resize their xterm but their sizes are not propagated. The master can check the logical sizes with the "=" command. Deducing the window size is a non-portable operation. The code is known to work for recent versions of SunOS, AIX, Unicos, and HPUX. Send back mods if you add support for anything else. .SH ENVIRONMENT The environment variable SHELL is used to determine and start a shell, if no other program is given on the command line. If the environment variable DISPLAY is defined, its value is used for the display name of the .B xkibitz master (the display with tag number 0). Otherwise this name remains empty. Additional arguments may be passed to new xterms through the environment variable XKIBITZ_XTERM_ARGS. For example, to create xterms with a scrollbar and a green pointer cursor: .nf XKIBITZ_XTERM_ARGS="-sb -ms green" export XKIBITZ_XTERM_ARGS .fi (this is for the Bourne shell - use whatever syntax is appropriate for your favorite shell). Any option can be given that is valid for the .B xterm command, with the exception of .BR -display , .B -geometry and .BI -S as those are set by .BR xkibitz . .SH SEE ALSO .BR Tcl (3), .BR libexpect (3) .BR kibitz (1) .br .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, O'Reilly and Associates, January 1995. .br .I "kibitz \- Connecting Multiple Interactive Programs Together", \fRby Don Libes, Software \- Practice & Experience, John Wiley & Sons, West Sussex, England, Vol. 23, No. 5, May, 1993. .SH AUTHOR Don Libes, National Institute of Standards and Technology 07070100057430000081a400000000000000000000000151a4006b0000251f0000010000010031ffffffffffffffff0000002500000000root/usr/local/man/man1/multixterm.1.TH MULTIXTERM 1 "16 August 2002" .SH NAME multixterm \- drive multiple xterms separately or together .SH SYNOPSIS .B multixterm [ .I args ] .SH DESCRIPTION Multixterm creates multiple xterms that can be driven together or separately. In its simplest form, multixterm is run with no arguments and commands are interactively entered in the first entry field. Press return (or click the "new xterm" button) to create a new xterm running that command. Keystrokes in the "stdin window" are redirected to all xterms started by multixterm. xterms may be driven separately simply by focusing on them. The stdin window must have the focus for keystrokes to be sent to the xterms. When it has the focus, the color changes to aquamarine. As characters are entered, the color changes to green for a second. This provides feedback since characters are not echoed in the stdin window. Typing in the stdin window while holding down the alt or meta keys sends an escape character before the typed characters. This provides support for programs such as emacs. .SH ARGUMENTS .RS .TP 4 -xa The optional \-xa argument indicates arguments to pass to xterm. .TP -xc The optional \-xc argument indicates a command to be run in each named xterm (see \-xn). With no \-xc argument, the command is the current shell. .TP 4 -xd The optional \-xd argument indicates a directory to search for files that will appear in the Files menu. By default, the directory is: ~/lib/multixterm .TP 4 -xf The optional \-xf argument indicates a file to be read at startup. See FILES below for more info. .TP 4 -xn The optional \-xn argument indicates a name for each xterm. This name will also be substituted for any %n in the command argument (see \-xc). .TP 4 -xv The optional \-xv flag puts multixterm into a verbose mode where it will describe some of the things it is doing internally. The verbose output is not intended to be understandable to anyone but the author. .RE Less common options may be changed by the startup file (see FILES below). All the usual X and wish flags are supported (i.e., \-display, \-name). There are so many of them that to avoid colliding and make them easy to remember, all the multixterm flags begin with \-x. If any arguments do not match the flags above, the remainder of the command line is made available for user processing. By default, the remainder is used as a list of xterm names in the style of \-xn. The default behavior may be changed using the .multixtermrc file (see DOT FILE below). .SH "EXAMPLE COMMAND LINE ARGUMENTS" The following command line starts up two xterms using ssh to the hosts bud and dexter. multixterm \-xc "ssh %n" bud dexter .SH FILES Command files may be used to drive or initialize multixterm. The File menu may be used to invoke other files. If files exist in the command file directory (see \-xd above), they will appear in the File menu. Files may also be loaded by using File->Open. Any filename is acceptable but the File->Open browser defaults to files with a .mxt suffix. Files are written in Tcl and may change any variables or invoke any procedures. The primary variables of interest are 'xtermCmd' which identifies the command (see \-xc) and 'xtermNames' which is a list of names (see \-xn). The procedure xtermStartAll, starts xterms for each name in the list. Other variables and procedures may be discovered by examining multixterm itself. .SH "EXAMPLE FILE" The following file does the same thing as the earlier example command line: .nf # start two xterms connected to bud and dexter set xtermCmd "ssh %n" set xtermNames {bud dexter} xtermStartAll .fi .SH "DOT FILE" At startup, multixterm reads ~/.multixtermrc if present. This is similar to the command files (see FILES above) except that .multixtermrc may not call xtermStartAll. Instead it is called implicitly, similar to the way that it is implicit in the command line use of \-xn. The following example .multixtermrc file makes every xterm run ssh to the hosts named on the command line. set xtermCmd "ssh %n" Then multixterm could be called simply: multixterm bud dexter If any command-line argument does not match a multixterm flag, the remainder of the command line is made available to .multixtermrc in the argv variable. If argv is non-empty when .multixtermrc returns, it is assigned to xtermNames unless xtermNames is non-empty in which case, the content of argv is ignored. Commands from multixterm are evaluated early in the initialization of multixterm. Anything that must be done late in the initialization (such as adding additional bindings to the user interface) may be done by putting the commands inside a procedure called "initLate". .SH MENUS Except as otherwise noted, the menus are self-explanatory. Some of the menus have dashed lines as the first entry. Clicking on the dashed lines will "tear off" the menus. .SH "USAGE SUGGESTION \- ALIASES AND COMMAND FILES" Aliases may be used to store lengthy command-line invocations. Command files can be also be used to store such invocations as well as providing a convenient way to share configurations. Tcl is a general-purpose language. Thus multixterm command files can be extremely flexible, such as loading hostnames from other programs or files that may change from day-to-day. In addition, command files can be used for other purposes. For example, command files may be used to prepared common canned interaction sequences. For example, the command to send the same string to all xterms is: xtermSend "a particularly long string" The File menu (torn-off) makes canned sequences particularly convenient. Interactions could also be bound to a mouse button, keystroke, or added to a menu via the .multixtermrc file. The following .multixtermrc causes tiny xterms to tile across and down the screen. (You may have to adjust the parameters for your screen.) This can be very helpful when dealing with large numbers of xterms. .nf set yPos 0 set xPos 0 trace variable xtermArgs r traceArgs proc traceArgs {args} { global xPos yPos set ::xtermArgs "-geometry 80x12+$xPos+$yPos \-font 6x10" if {$xPos} { set xPos 0 incr yPos 145 if {$yPos > 800} {set yPos 0} } else { set xPos 500 } } .fi The xtermArgs variable in the code above is the variable corresponding to the \-xa argument. xterms can be also be created directly. The following command file creates three xterms overlapped horizontally: .nf set xPos 0 foreach name {bud dexter hotdog} { set ::xtermArgs "-geometry 80x12+$xPos+0 \-font 6x10" set ::xtermNames $name xtermStartAll incr xPos 300 } .fi .SH "USAGE SUGGESTION \- SELECTING HOSTS BY NICKNAME" The following .multixtermrc shows an example of changing the default handling of the arguments from hostnames to a filename containing hostnames: set xtermNames [exec cat $argv] The following is a variation, retrieving the host names from the yp database: set xtermNames [exec ypcat $argv] The following hardcodes two sets of hosts, so that you can call multixterm with either "cluster1" or "cluster2": .nf switch $argv { cluster1 { set xtermNames "bud dexter" } cluster2 { set xtermNames "frank hotdog weiner" } } .fi .SH COMPARE/CONTRAST It is worth comparing multixterm to xkibitz. Multixterm connects a separate process to each xterm. xkibitz connects the same process to each xterm. .SH LIMITATIONS Multixterm provides no way to remotely control scrollbars, resize, and most other window system related functions. Because xterm has no mechanism for propagating size information to external processes, particularly for character graphic applications (e.g., vi, emacs), you may have to manually ensure that the spawned process behind each xterm has the correct size. For example, if you create or set the xterm to a size, you may have to send an explicit stty command with the correct size to the spawned process(es). Alternatively, you can add the correct size argument when an xterm is created (i.e., "-geometry 80x20"). Multixterm can only control new xterms that multixterm itself has started. As a convenience, the File menu shows a limited number of files. To show all the files, use File->Open. .SH FILES $DOTDIR/.multixtermrc initial command file .br ~/.multixtermrc fallback command file .br ~/lib/multixterm/ default command file directory .SH BUGS If multixterm is killed using an uncatchable kill, the xterms are not killed. This appears to be a bug in xterm itself. Send/expect sequences can be done in multixterm command files. However, due to the richness of the possibilities, to document it properly would take more time than the author has at present. .SH REQUIREMENTS Requires Expect 5.36.0 or later. .br Requires Tk 8.3.3 or later. .SH VERSION This man page describes version 1.8 of multixterm. The latest version of multixterm is available from http://expect.nist.gov/example/multixterm . If your version of Expect and Tk are too old (see REQUIREMENTS above), download a new version of Expect from http://expect.nist.gov .SH DATE April 30, 2002 .SH AUTHOR Don Libes .SH LICENSE Multixterm is in the public domain; however the author would appreciate acknowledgement if multixterm or parts of it or ideas from it are used. 07070100057432000081a400000000000000000000000151a4006b0000397d0000010000010031ffffffffffffffff0000002500000000root/usr/local/man/man1/tknewsbiff.1.TH TKNEWSBIFF 1 "1 January 1994" .SH NAME tknewsbiff \- pop up a window when news appears .SH SYNOPSIS .B tknewsbiff [ .I server or config-file ] .br .SH INTRODUCTION .B tknewsbiff pops up a window when there is unread news in your favorite newsgroups and removes the window after you've read the news. tknewsbiff can optionally play a sound, start your newsreader, etc. .SH SELECTING NEWSGROUPS By default, the configuration file ~/.tknewsbiff describes how tknewsbiff behaves. The syntax observes the usual Tcl rules - however, even if you don't know Tcl, all but the most esoteric configurations will be obvious. Each newsgroup (or set of newsgroups) to be watched is described by using the "watch" command. For example: .nf watch dc.dining watch nist.* watch comp.unix.wizard -threshold 3 watch *.sources.* -threshold 20 .fi For each newsgroup pattern, any newsgroup that matches it and which you are subscribed to (according to your newsrc file) is eligible for reporting. By default, tknewsbiff reports on the newsgroup if there is at least one unread article. The "-threshold" flag changes the threshold to the following number. For example, "-threshold 3" means there must be at least three articles unread before tknewsbiff will report the newsgroup. If no watch commands are given (or no configuration file exists), all groups which are subscribed to are watched. To suppress newsgroups that would otherwise be reported, use the "ignore" command. For example, the following matches all comp.* and nist.* newgroups except for nist.posix or .d (discussion) groups: .nf watch comp.* watch nist.* ignore nist.posix.* ignore *.d .fi The flag "-new" describes a command to be executed when the newsgroup is first reported as having unread news. For example, the following lines invoke the UNIX command "play" to play a sound. .nf watch dc.dining -new "exec play /usr/local/sounds/yumyum.au" watch rec.auto* -new "exec play /usr/local/sounds/vroom.au" .fi You can cut down on the verbosity of actions by defining procedures. For example, if you have many -new flags that all play sound files, you could define a sound procedure. This would allow the -new specification to be much shorter. .nf proc play {sound} { exec play /usr/local/sounds/$sound.au } watch dc.dining -new "play yumyum" watch rec.auto* -new "play vroom" .fi As an aside, you can put an "&" at the end of an "exec" command to get commands to execute asynchronously. However, it's probably not a good idea to do this when playing sound files anyway. "newsgroup" is a read-only variable which contains the name of the newsgroup that is being reported. This is useful when the action is triggered by a pattern. For example, the following line could run the newsgroup name through a speech synthesizer: .nf watch * -new { exec play herald.au exec speak "New news has arrived in $newsgroup." } .fi The flag "\-display" describes a command to be executed every time the newsgroup is reported as having unread news. The special command "display" is the default command. It schedules $newsgroup to be written to tknewsbiff's display when it is rewritten. For example, by explicitly providing a -display flag that omits the display command, you can disable the display of newsgroups that are already reported via -new. .nf watch dc.dining -new {exec play yumyum.au} -display {} .fi If you want to execute an action repeatedly and .I still display the newsgroup in the default manner, explicitly invoke the display command via the -display flag. For example: .nf watch *security* -display { exec play red-alert.au display } .fi Actions associated with the -new and -display flags are executed only once for each matching newsgroup. The command executed is the one associated with the first pattern in the configuration file that matches and observes the given threshold. Any command that is simply listed in the configuration file is executed each time before the update loop in tknewsbiff. The reserved (but user-defined) procedure "user" is run immediately after the newsgroups are scheduled to be written to the display and before they are actually written. For example, suppose unread articles appear in several rec.auto groups and you play the same sound for each one. To prevent playing the sound several times in a row, make the -new command simply set a flag. In the user procedure, play the sound if the flag is set (and then reset the flag). The user procedure could also be used to start a newsreader. This would avoid the possibility of starting multiple newsreaders just because multiple newsgroups contained unread articles. (A check should, of course, be made to make sure that a newsreader is not already running.) .SH MORE VARIABLES The following example lines show variables that can affect the behavior of tknewsbiff .nf set delay 120 set server news.nist.gov set server_timeout 60 set newsrc ~/.newsrc set width 40 set height 20 set active_file /usr/news/lib/active .fi tknewsbiff alternates between checking for unread news and sleeping (kind of like many undergraduates). The "delay" variable describes how many seconds to sleep. The "server" variable names an NNTP news-server. The default is "news". The "server" variable is only used if the "active_file" variable is not set. The "server_timeout" variable describes how how many seconds to wait for a response from the server before giving up. -1 means wait forever or until the server itself times out. The default is 60 seconds. The "newsrc" variable describes the name of your .newsrc file. By default, tknewsbiff looks in your home directory for a newsrc file. A server-specific newsrc is used if found. For example, if you have set server to "cubit.nist.gov", then tknewsbiff looks for ~/.newsrc-cubit.nist.gov. (This is the Emacs gnus convention - which is very convenient when you read news from multiple servers.) If there is no server-specific newsrc, tknewsbiff uses ~/.newsrc. The "width" variable describes the width that tknewsbiff will use to display information. If any newsgroup names are long enough, they will be truncated so that the article counts can still be shown. You can manually resize the window to see what was truncated. However, if your configuration file sets the width variable, the window will be restored to that size the next time that tknewsbiff checks for unread news and updates its display. The "height" variable describes the maximum height that tknewsbiff will use to display information. If fewer newsgroups are reported, tknewsbiff will shrink the window appropriately. You can manually resize the window but if your configuration file sets the height variable, the window will be restored to that size the next time that tknewsbiff checks for unread news and updates its display. The "active_file" variable describes the name of the news active file. If set, the active file is read directly in preference to using NNTP (even if the "server" variable is set). This is particularly useful for testing out new configuration files since you can edit a fake active file and then click button 2 to immediately see how tknewsbiff responds (see BUTTONS below). If the environment variable DOTDIR is set, then its value is used as a directory in which to find all dotfiles instead of from the home directory. In particular, this affects the tknewsbiff configuration file and the .newsrc file (assuming the newsrc variable is not set explicitly). .SH WATCHING DIFFERENT NEWS SERVERS To watch multiple servers, run tknewsbiff multiple times. (Since you need different .newsrc files and the servers have different newsgroups and article numbers anyway, there is no point in trying to do this in a single process.) You can point tknewsbiff at a different server with an appropriate argument. The argument is tried both as a configuration file name and as a suffix to the string "~/.tknewsbiff-". So if you want to watch the server "kidney", store the tknewsbiff configuration information in ~/.tknewsbiff-kidney". The following two commands will both use that configuration file. .nf tknewsbiff kidney tknewsbiff ~/.tknewsbiff-kidney .fi In both cases, the actual server to contact is set by the value of the server variable in the configuration file. If no configuration file is found, the argument is used as the server to contact. This allows tknewsbiff to be run with no preparation whatsoever. If the argument is the special keyword "active" (or ends in "/active"), it is used as the name of an active file. This is in turn used to initialize the variable "active_file" so that tknewsbiff reads from the active file directly rather than using NNTP. Creating your own active file is a convenient way of testing your configuration file. For example, after running the following command, you can repeatedly edit your active file and trigger the update-now command (either by pressing button 2 or setting the delay variable very low) to see how tknewsbiff responds. The active file must follow the format of a real active file. The format is one newsgroup per line. After the newsgroup name is the number of the highest article, the lowest article. Lastly is the letter y or m. m means the newsgroup is moderated. y means posting is allowed. .SH WINDOW When unread news is found, a window is popped up. The window lists the names of the newsgroups and the number of unread articles in each (unless suppressed by the -display flag). When there is no longer any unread news, the window disappears (although the process continues to run). .SH BUTTONS Button or key bindings may be assigned by bind commands. Feel free to change them. The default bind commands are: .nf bind .list <1> help bind .list <2> update-now bind .list <3> unmapwindow .fi By default button 1 (left) is bound to "help". The help command causes tknewsbiff to pop up a help window. By default, button 2 (middle) is bound to "update-now". The update-now command causes tknewsbiff to immediately check for unread news. If your news server is slow or maintains a very large number of newsgroups, or you have a large number of patterns in your configuration file, tknewsbiff can take considerable time before actually updating the window. By default, button 3 (right) is bound to "unmapwindow". The unmapwindow command causes tknewsbiff to remove the window from the display until the next time it finds unread news. (The mapwindow command causes tknewsbiff to restore the window.) As an example, here is a binding to pop up an xterm and run rn when you hold down the shift key and press button 1 in the listing window. .nf bind .list { exec xterm -e rn & } .fi Here is a similar binding. However it tells rn to look only at the newsgroup that is under the mouse when you pressed it. (The "display_list" variable is described later in this man page.) .nf bind .list { exec xterm -e rn [lindex $display_list [.list nearest %y]] & } .fi .SH OTHER COMMANDS AND VARIABLES Built-in commands already mentioned are: watch, ignore, display, help, update-now, unmapwindow, and mapwindow. Any Tcl and Tk command can also be given. In particular, the list of newsgroups is stored in the list widget ".list", and the scroll bar is stored in the scrollbar widget ".scroll". So for example, if you want to change the foreground and background colors of the newsgroup list, you can say: .nf .list config -bg honeydew1 -fg orchid2 .fi These can also be controlled by the X resource database as well. However, the configuration file allows arbitrarily complex commands to be evaluated rather than simple assignments. Certain Tcl/Tk commands can disrupt proper function of tknewsbiff. These will probably be obvious to anyone who knows enough to give these commands in the first place. As a simple example, the program assumes the font in the list box is of fixed width. The newsgroups will likely not align if you use a variable-width font. The following variables are accessible and can be used for esoteric uses. All other variables are private. Private variables and commands begin with "_" so you don't need to worry about accidental collisions. The array "db" is a database which maintains information about read and unread news. db($newsgroup,hi) is the highest article that exists. db($newsgroup,seen) is the highest article that you have read. A number of lists maintain interesting information. "active_list" is a list of known newsgroups. "seen_list" is a list of newsgroups that have been seen so far as the -new and -display flags are being processed. "previous_seen_list" is "seen_list" from the previous cycle. "ignore_list" is the list of newsgroup patterns to ignore. "watch_list" is the list of newsgroup patterns to watch. "display_list" is the list of newsgroup will be displayed at the next opportunity. .SH UPDATING YOUR FILES tknewsbiff automatically rereads your configuration file each time it wakes up to check for unread news. To force tknewsbiff to reread the file immediately (such as if you are testing a new configuration or have just modified your newsrc file), press button 2 in the display (see BUTTONS above). .SH CAVEATS tknewsbiff defines the number of unread articles as the highest existing article minus the highest article that you've read. So if you've read the last article in the newsgroup but no others, tknewsbiff thinks there are no unread articles. (It's impossible to do any better by reading the active file and it would be very time consuming to do this more accurately via NNTP since servers provide no efficient way of reporting their own holes in the newsgroups.) Fortunately, this definition is considered a feature by most people. It allows you to read articles and then mark them "unread" but not have tknewsbiff continue telling you that they are unread. .SH UNWARRANTED CONCERNS Your news administrator may wonder if many people using tknewsbiff severely impact an NNTP server. In fact, the impact is negligible even when the delay is very low. To gather all the information it needs, tknewsbiff uses a single NNTP query - it just asks for the active file. The NNTP server does no computation, formatting, etc, it just sends the file. All the interesting processing happens locally in the tknewsbiff program itself. .SH BUGS The man page is longer than the program. .SH SEE ALSO .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, O'Reilly and Associates, January 1995. .SH AUTHOR Don Libes, National Institute of Standards and Technology 0707010005742c000081a400000000000000000000000151a4006b00000a830000010000010031ffffffffffffffff0000002400000000root/usr/local/man/man1/dislocate.1.TH DISLOCATE 1 "7 October 1993" .SH NAME Dislocate \- disconnect and reconnect processes .SH SYNOPSIS .B dislocate [ .I program args... ] .SH INTRODUCTION .B Dislocate allows processes to be disconnected and reconnected to the terminal. Possible uses: .RS .TP 4 \(bu You can disconnect a process from a terminal at work and reconnect from home, to continue working. .TP 4 \(bu After having your line be dropped due to noise, you can get back to your process without having to restart it from scratch. .TP 4 \(bu If you have a problem that you would like to show someone, you can set up the scenario at your own terminal, disconnect, walk down the hall, and reconnect on another terminal. .TP 4 \(bu If you are in the middle of a great game (or whatever) that does not allow you to save, and someone else kicks you off the terminal, you can disconnect, and reconnect later. .SH USAGE When run with no arguments, .B Dislocate tells you about your disconnected processes and lets you reconnect to one. Otherwise, .B Dislocate runs the named program along with any arguments. By default, ^] is an escape that lets you talk to .B Dislocate itself. At that point, you can disconnect (by pressing ^D) or suspend .B Dislocate (by pressing ^Z). Any Tcl or Expect command is also acceptable at this point. For example, to insert the contents of a the file /etc/motd as if you had typed it, say: .nf send -i $out [exec cat /etc/motd] .fi To send the numbers 1 to 100 in response to the prompt "next #", say: .nf for {set i 0} {$i<100} {incr i} { expect -i $in "next #" send -i $out "$i\\r" } .fi Scripts can also be prepared and sourced in so that you don't have to type them on the spot. .B Dislocate is actually just a simple .B Expect script. Feel free to make it do what you want it to do or just use .B Expect directly, without going through .BR Dislocate . .B Dislocate understands a few special arguments. These should appear before any program name. Each should be separated by whitespace. If the arguments themselves takes arguments, these should also be separated by whitespace. .PP The .B \-escape flag sets the escape to whatever follows. The default escape is ^]. .PP .SH CAVEATS This program was written by the author as an exercise to show that communicating with disconnected processes is easy. There are many features that could be added, but that is not the intent of this program. .SH SEE ALSO .BR Tcl (3), .BR libexpect (3) .br .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" \fRby Don Libes, O'Reilly and Associates, January 1995. .SH AUTHOR Don Libes, National Institute of Standards and Technology 07070100057407000041ed00000000000000000000000251a40071000000000000010000010031ffffffffffffffff0000001300000000root/usr/local/bin0707010005741d000081ed00000000000000000000000151a4006b000019ce0000010000010031ffffffffffffffff0000001a00000000root/usr/local/bin/xpstat#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # This script acts as a front-end for xpilot. Run it in the background, # and it will pop up a window for each server it finds running. After # you run it, press the "?" button for more info. # Store the filename of your xpilot client in the following variable. set xpilot /usr/local/bin/xpilot # Author: Don Libes, NIST, 12/29/92 # I never have figured out how to get the alias out of xrdb. For now, just # read it ourselves out of .Xdefaults - ugh. log_user 0 set timeout 60 proc probe {} { global max db hosts world set timeout -1 expect_before eof {wait;return 0} expect -re "Server on (.*). Enter command> " { exp_send "S\r" set host $expect_out(1,string) # replace dots in hostnames by underscores regsub -all . $host _ host # force lowercase to avoid Tk widget name problems set host [string tolower $host] lappend hosts $host } expect -re "WORLD\[^:]*: (\[^\r]*)\r" { set worldtmp $expect_out(1,string) } expect -re "AUTHOR\[^:]*: (\[^\r]*)\r" { set author $expect_out(1,string) } set world($host) "$worldtmp by $author" # skip over junk to get players expect { -re -+ {} -re "Enter command> " { set max($host) 0 display $host return 1 } } set i 0 expect { -re "\\.\\.\\. . (................) (...) *(\[^ ]*) *(\[^\r]*)\r" { # strip trailing blanks set alias [string trimright $expect_out(1,string)] set db($host,$i,alias) $alias # strip leading zeros scan $expect_out(2,string) %d db($host,$i,life) set db($host,$i,score) $expect_out(3,string) set db($host,name,$alias) $expect_out(4,string) incr i exp_continue } -re "Enter command>" } set max($host) $i display $host return 1 } proc resize {w a b} { # 27 is a guess at a fixed-width sufficiently comfortable for # the variable-width font. I don't know how to do better. $w configure -width 27 } proc play {host} { global xpilot alias exec xhost $host catch {exec $xpilot -name $alias($host) -join $host} status } proc show-help {x y msg} { catch {destroy .help} toplevel .help wm geometry .help +$x+$y message .help.text -text $msg button .help.ok -text "ok" -command {destroy .help} pack .help.text pack .help.ok -fill x } # pop up window with alias proc show-alias {host seln x y} { global db catch {destroy .alias} toplevel .alias wm geometry .alias +$x+$y wm transient .alias . regexp "(.*\[^ ]) +\[-0-9]+ +\[0-9]+$" $seln discard alias button .alias.b -text "$db($host,name,$alias)" -command { destroy .alias } .alias.b config -padx 1 -pady 1 -highlightthickness 0 pack .alias.b } proc help {x y} { show-help $x $y "xpstat - written by Don Libes, NIST, December 29, 1992 This script acts as a front-end for xpilot. Run it in the background, and it will pop up a window for each server it finds running. Press the \"?\" button for this info. This program polls each xpilot server once a minute. To make it poll immediately, press \"update\". Press \"play as\" to enter the current game with the alias to the right. Edit to taste. (Your alias is initialized from the value of xpilot.name in ~/.Xdefaults.) Double-click the left button on an alias to see the real user name. To remove the user name window, click on it with the left button. Pan the world/author text, player list, or your own alias by holding the middle mouse button down and moving the mouse." } # if user presses "update" try to update screen immediately proc prod {x y} { global cat_spawn_id updateflag if {$updateflag} { show-help $x $y "I heard you, gimme a break. I'm waiting for the xpilot server to respond..." } set updateflag 1 exp_send -i $cat_spawn_id "\r" } proc display {host} { global world db alias max env set w .$host if {![winfo exists $w]} { # window does not exist, create it toplevel $w -class xpstat wm minsize $w 1 1 wm title $w "xpilot@$host" wm iconname $w "$host xpilot stats" entry $w.world -state disabled -textvar world($host) listbox $w.players -yscroll "resize $w.players" -font 7x13bold $w.players config -highlightthickness 0 -border 0 $w.world config -highlightthickness 0 bind $w.players { scan %W ".%%\[^.]" host show-alias $host [selection get] %X %Y } message $w.msg -text "no players" -aspect 1000 -justify center button $w.help -text ? -command { help 10 20 } button $w.update -text "update" bind $w.update <1> { after 1 prod %X %Y } button $w.play -text "play as" bind $w.play <1> { scan %W ".%%\[^.]" host after 1 play $host } entry $w.alias -textvar alias($host) -width 10 set alias($host) $env(USER) bind $w.alias { scan %W ".%%\[^.]" host play $host } $w.play config -padx 1 -pady 1 -highlightthickness 0 $w.update config -padx 1 -pady 1 -highlightthickness 0 $w.help config -padx 1 -pady 1 -highlightthickness 0 $w.alias config -highlightthickness 0 pack $w.world -expand 1 -fill x pack $w.msg pack $w.help $w.update $w.play -side left pack $w.alias -side left -expand 1 -fill x set max($host,was) 0 } if {$max($host)==0} { # put up "no players" message? if {$max($host,was)>0} { pack $w.msg -after $w.world -fill x -side top pack forget $w.world } } else { # remove "no players" message? if {$max($host,was)==0} { pack $w.players -after $w.world -side top pack forget $w.msg } } $w.players delete 0 end for {set i 0} {$i<$max($host)} {incr i} { $w.players insert end [format "%-17s %4d %d" \ $db($host,$i,alias) \ $db($host,$i,score) \ $db($host,$i,life) \ ] } set max($host,was) $max($host) } wm withdraw . set oldhosts {} set updateflag 0 ;# 1 if user pressed "update" button # look for desired alias in the .Xdefaults file set status [catch {exec egrep "xpilot.name:" [glob ~/.Xdefaults]} output] if {$status==0} { regexp "xpilot.name:\[ \t]*(\[^\r]*)" $output dummy env(USER) } spawn cat -u; set cat_spawn_id $spawn_id while {1} { global xpilot hosts set hosts {} eval spawn $xpilot $argv while {[probe]} {exp_send "N\r"} catch {expect_before} ;# disable expect_before from inside probe # clean up hosts that no longer are running xpilots foreach host $oldhosts { # if host not in hosts if {-1==[lsearch $hosts $host]} { destroy .$host } } set oldhosts $hosts set updateflag 0 # sleep for a little while, subject to click from "update" button expect -i $cat_spawn_id -re "...." ;# two crlfs } 0707010005740a000081ed00000000000000000000000151a4006b000005550000010000010031ffffffffffffffff0000001c00000000root/usr/local/bin/cryptdir#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # Name: cryptdir # Author: Don Libes, NIST # # Synopsis: # cryptdir [dir] # decryptdir [dir] # # Encrypt or decrypts the current directory or named directory if given. if {[llength $argv] > 0} { cd $argv } # encrypt or decrypt? set decrypt [regexp "decrypt" $argv0] set timeout -1 stty -echo send "Password:" expect -re "(.*)\n" send "\n" set passwd $expect_out(1,string) # Wouldn't want to encrypt/decrypt files with mistyped password! send "Again:" expect -re "(.*)\n" send "\n" if {![string match $passwd $expect_out(1,string)]} { send_user "mistyped password?\n" stty echo exit } stty echo log_user 0 foreach f [glob *] { # strip shell metachars from filename to avoid problems if {[regsub -all {[]['`~<>:-]} $f "" newf]} { exec mv $f $newf set f $newf } set strcmp [string compare .crypt [file extension $f]] if {$decrypt} { # skip files that don't end with ".crypt" if {0!=$strcmp} continue spawn sh -c "exec crypt < $f > [file root $f]" } else { # skip files that already end with ".crypt" if {0==$strcmp} continue spawn sh -c "exec crypt < $f > $f.crypt" } expect "key:" send "$passwd\r" expect wait exec rm -f $f send_tty "." } send_tty "\n" 07070100057417000081ed00000000000000000000000151a4006b000001150000010000010031ffffffffffffffff0000001d00000000root/usr/local/bin/timed-run#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # run a program for a given amount of time # i.e. time 20 long_running_program set timeout [lindex $argv 0] eval spawn [lrange $argv 1 end] expect 07070100057419000081ed00000000000000000000000151a4006b000040ba0000010000010031ffffffffffffffff0000001c00000000root/usr/local/bin/tkpasswd#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect package require Tk # tkpasswd - Change passwords using Expectk # Author: Don Libes, NIST, October 1, 1993 # Version: 1.8 - Added support for Tk 4.1 # There is no man page. However, there is some on-line help when you run # the program. Technical details and insights are described in the # O'Reilly book "Exploring Expect". proc prog_exists {prog} { return [llength [auto_execok $prog]] } frame .type -relief raised -bd 1 radiobutton .passwd -text passwd -variable passwd_cmd \ -value {passwd {cat /etc/passwd}} \ -anchor w -command get_users -relief flat pack .passwd -in .type -fill x if {[prog_exists yppasswd]} { radiobutton .yppasswd -text yppasswd -variable passwd_cmd \ -value {yppasswd {ypcat passwd}} \ -anchor w -command get_users -relief flat pack .yppasswd -in .type -fill x } if {[prog_exists nispasswd]} { radiobutton .nispasswd -text nispasswd -variable passwd_cmd \ -value {nispasswd {niscat passwd}} \ -anchor w -command get_users -relief flat pack .nispasswd -in .type -fill x } pack .type -fill x frame .sort -relief raised -bd 1 radiobutton .unsorted -text unsorted -variable sort_cmd -value " " \ -anchor w -relief flat -command get_users radiobutton .name -text name -variable sort_cmd -value "| sort" \ -anchor w -relief flat -command get_users radiobutton .uid -text uid -variable sort_cmd -value "| sort -t: -n +2" \ -anchor w -relief flat -command get_users pack .unsorted .name .uid -in .sort -fill x pack .sort -fill x frame .users -relief raised -bd 1 # has to be wide enough for 8+1+5=14 text .names -yscrollcommand ".scroll set" -width 14 -height 1 \ -font {Courier 12 bold} -setgrid 1 .names tag configure nopassword -relief raised .names tag configure selection -relief raised set iscolor 0 if {[winfo depth .] > 1} { set iscolor 1 } if {$iscolor} { .names tag configure nopassword -background red .names tag configure selection -background green } else { .names tag configure nopassword -background black -foreground white .names tag configure selection -background white -foreground black } scrollbar .scroll -command ".names yview" -relief raised pack .scroll -in .users -side left -fill y pack .names -in .users -side left -fill y pack .users -expand 1 -fill y wm minsize . 14 1 wm maxsize . 14 999 wm geometry . 14x10 frame .password_frame -relief raised -bd 1 entry .password -textvar password -relief sunken -width 1 focus .password bind .password password_set label .prompt -text "Password:" -bd 0 button .password_set -text "set" -command password_set button .generate_button -text "generate" -command password_generate pack .prompt .password -in .password_frame -fill x -padx 2 -pady 2 pack .password_set .generate_button -in .password_frame -side left -expand 1 -fill x -padx 2 -pady 2 pack .password_frame -fill x set dict_loaded 0 checkbutton .dict -text "test dictionary" -variable dict_check \ -command {if {!$dict_loaded} load_dict} \ -anchor w pack .dict -fill x -padx 2 -pady 2 button .quit -text quit -command exit button .help_button -text help -command help pack .quit .help_button -side left -expand 1 -fill x -padx 2 -pady 2 proc help {} { if {[catch {toplevel .help}]} return message .help.text -text \ "tkpasswd - written by Don Libes, NIST, 10/1/93. Click on passwd (local users) or yppasswd (NIS users).\ Select user using mouse (or keys - see below).\ Enter password or press ^G to generate a random password.\ (Press ^A to adjust the generation parameters.)\ Press return to set the password.\ If the dictionary is enabled and the password is in it,\ the password is rejected. You must be root to set local passwords besides your own.\ If you are not root, you must also enter an old password\ when requested. You do not have to move mouse into password field(s) to enter password.\ ^U clears password field.\ ^N and ^P select next/previous user.\ M-n and M-p select next/previous user with no password.\ (Users with no passwords are highlighted.)" button .help.ok -text "ok" -command {destroy .help} pack .help.text pack .help.ok -fill x -padx 2 -pady 2 } # get list of local users proc get_users {} { global sort_cmd passwd_cmd global nopasswords ;# line numbers of entries with no passwords global last_line ;# last line of text box global selection_line .names delete 1.0 end set file [open "|[lindex $passwd_cmd 1] $sort_cmd"] set last_line 1 set nopasswords {} while {[gets $file buf] != -1} { set buf [split $buf :] if {[llength $buf]>2} { # normal password entry .names insert end "[format "%-8.8s %5d" [lindex $buf 0] [lindex $buf 2]]\n" if {0==[string compare [lindex $buf 1] ""]} { .names tag add nopassword \ {end - 2 line linestart} \ {end - 2 line lineend} lappend nopasswords $last_line } } else { # +name style entry .names insert end "$buf\n" } incr last_line } incr last_line -1 close $file set selection_line 0 } proc feedback {msg} { global password set password $msg .password select from 0 .password select to end update } proc load_dict {} { global dict dict_loaded feedback "loading dictionary..." if {0==[catch {open /usr/dict/words} file]} { foreach w [split [read $file] "\n"] {set dict($w) ""} close $file set dict_loaded 1 feedback "dictionary loaded" } else { feedback "dictionary missing" .dict deselect } } # put whatever security checks you like in here proc weak_password {password} { global dict dict_check if {$dict_check} { feedback "checking password" if {[info exists dict($password)]} { feedback "sorry - in dictionary" return 1 } } return 0 } proc password_set {} { global password passwd_cmd selection_line set new_password $password if {$selection_line==0} { feedback "select a user first" return } set user [lindex [.names get selection.first selection.last] 0] if {[weak_password $password]} return feedback "setting password . . ." set cmd [lindex $passwd_cmd 0] spawn -noecho $cmd $user log_user 0 set last_msg "error in $cmd" while {1} { expect { -nocase "old password:" { exp_send "[get_old_password]\r" } "assword*:" { exp_send "$new_password\r" } -re "(.*)\r\n" { set last_msg $expect_out(1,string) } eof break } } set status [wait] if {[lindex $status 3]==0} { feedback "set successfully" } else { feedback $last_msg } } # defaults for generating passwords set length 9 set minnum 2 set minlower 5 set minupper 2 set distribute 0 proc parameter_filename {} { set file .tkpasswd.rc if {[info exists env(DOTDIR)]} { set file "$env(DOTDIR)/$file" } return ~/$file } catch {source [parameter_filename]} # save parameters in a file proc save_parameters {} { global minnum minlower minupper length if {[catch {open [parameter_filename] w} f]} { # should never happen, so don't bother with window code puts "tkpasswd: could not write [parameter_filename]" return } puts $f "# This is the .tkpasswd.rc file. Do not edit it by hand as" puts $f "# it is automatically maintained by tkpasswd. Any manual" puts $f "# modifications will be lost." puts $f "" puts $f "set length $length" puts $f "set minnum $minnum" puts $f "set minupper $minupper" puts $f "set minlower $minlower" close $f } # insert char into password at a random position proc insert {pvar char} { upvar $pvar p set p [linsert $p [rand [expr 1+[llength $p]]] $char] } # given a size, distribute between left and right hands # taking into account where we left off proc psplit {max lvar rvar} { upvar $lvar left $rvar right global isleft if {$isleft} { set right [expr $max/2] set left [expr $max-$right] set isleft [expr !($max%2)] } else { set left [expr $max/2] set right [expr $max-$left] set isleft [expr $max%2] } } proc password_generate {} { global password length minnum minlower minupper global lpass rpass initially_left isleft global distribute if {$distribute} { set lkeys {q w e r t a s d f g z x c v b} set rkeys {y u i o p h j k l n m} set lnums {1 2 3 4 5 6} set rnums {7 8 9 0} } else { set lkeys {a b c d e f g h i j k l m n o p q r s t u v w x y z} set rkeys {a b c d e f g h i j k l m n o p q r s t u v w x y z} set lnums {0 1 2 3 4 5 6 7 8 9} set rnums {0 1 2 3 4 5 6 7 8 9} } set lkeys_length [llength $lkeys] set rkeys_length [llength $rkeys] set lnums_length [llength $lnums] set rnums_length [llength $rnums] # if there is any underspecification, use additional lowercase letters set minlower [expr $length - ($minnum + $minupper)] set lpass "" ;# password chars typed by left hand set rpass "" ;# password chars typed by right hand set password "" ;# merged password # choose left or right starting hand set initially_left [set isleft [rand 2]] psplit $minnum left right for {set i 0} {$i<$left} {incr i} { insert lpass [lindex $lnums [rand $lnums_length]] } for {set i 0} {$i<$right} {incr i} { insert rpass [lindex $rnums [rand $rnums_length]] } psplit $minlower left right for {set i 0} {$i<$left} {incr i} { insert lpass [lindex $lkeys [rand $lkeys_length]] } for {set i 0} {$i<$right} {incr i} { insert rpass [lindex $rkeys [rand $rkeys_length]] } psplit $minupper left right for {set i 0} {$i<$left} {incr i} { insert lpass [string toupper [lindex $lkeys [rand $lkeys_length]]] } for {set i 0} {$i<$right} {incr i} { insert rpass [string toupper [lindex $rkeys [rand $rkeys_length]]] } # merge results together if {$initially_left} { regexp "(\[^ ]*) *(.*)" "$lpass" x password lpass while {[llength $lpass]} { regexp "(\[^ ]*) *(.*)" "$password$rpass" x password rpass regexp "(\[^ ]*) *(.*)" "$password$lpass" x password lpass } if {[llength $rpass]} { append password $rpass } } else { regexp "(\[^ ]*) *(.*)" "$rpass" x password rpass while {[llength $rpass]} { regexp "(\[^ ]*) *(.*)" "$password$lpass" x password lpass regexp "(\[^ ]*) *(.*)" "$password$rpass" x password rpass } if {[llength $lpass]} { append password $lpass } } } proc rand {m} { expr {int($m*rand())} } proc gen_bad_args {msg} { if {![llength [info commands .parameters.errmsg]]} { message .parameters.errmsg -aspect 300 pack .parameters.errmsg } .parameters.errmsg configure -text "$msg\ Please adjust the password generation arguments." } # tell tab what window to move between set parm_tabList {} # The procedure below is invoked in response to tabs in the entry # windows. It moves the focus to the next window in the tab list. # Arguments: # # list - Ordered list of windows to receive focus proc Tab {list} { set i [lsearch $list [focus]] if {$i < 0} { set i 0 } else { incr i if {$i >= [llength $list]} { set i 0 } } focus [lindex $list $i] } # adjust args used in password generation proc adjust_parameters {} { global parm_tabList set parm_tabList {} toplevel [set w .parameters] message $w.text -aspect 300 -text \ "These parameters control generation of random passwords. It is not necessary to move the mouse into this window to operate it.\ Press to move to the next entry.\ Press or click the button when you are done." foreach desc { {length {total length}} {minnum {minimum number of digits}} {minupper {minimum number of uppercase letters}} {minlower {minimum number of lowercase letters}}} { set name [lindex $desc 0] set text [lindex $desc 1] frame $w.$name -bd 1 entry $w.$name.entry -relief sunken -width 2 -textvar $name bind $w.$name.entry "Tab \$parm_tabList" bind $w.$name.entry "destroy_parm_window" label $w.$name.text -text $text pack $w.$name.entry -side left pack $w.$name.text -side left lappend parm_tabList $w.$name.entry } frame $w.2 -bd 1 checkbutton $w.2.cb -text "alternate characters across hands" \ -relief flat -variable distribute pack $w.2.cb -side left button $w.ok -text "ok" -command "destroy_parm_window" pack $w.text -expand 1 -fill x pack $w.length $w.minnum $w.minupper $w.minlower $w.2 -expand 1 -fill x pack $w.ok -side left -fill x -expand 1 -padx 2 -pady 2 set oldfocus [focus] tkwait visibility $w.length.entry focus $w.length.entry tkwait window $w focus $oldfocus save_parameters } proc isnumber {n} { regexp "^\[0-9\]+$" $n } # destroy parm window IF all values are legal proc destroy_parm_window {} { global minnum minlower minupper length set mustbe "must be a number greater than or equal to zero." # check all variables if {![isnumber $length]} { gen_bad_args "The total length $mustbe" return } if {![isnumber $minlower]} { gen_bad_args "The minimum number of lowercase characters $mustbe" return } if {![isnumber $minupper]} { gen_bad_args "The minimum number of uppercase characters $mustbe" return } if {![isnumber $minnum]} { gen_bad_args "The minimum number of digits $mustbe" return } # check constraints if {$minnum + $minlower + $minupper > $length} { gen_bad_args \ "It is impossible to generate a $length-character password with\ $minnum number[pluralize $minnum],\ $minlower lowercase letter[pluralize $minlower], and\ $minupper uppercase letter[pluralize $minupper]." return } destroy .parameters } # return appropriate ending for a count of "n" nouns proc pluralize {n} { expr $n!=1?"s":"" } proc get_old_password {} { global old toplevel .old label .old.label -text "Old password:" catch {unset old} entry .old.entry -textvar old -relief sunken -width 1 pack .old.label pack .old.entry -fill x -padx 2 -pady 2 bind .old.entry {destroy .old} set oldfocus [focus] focus .old.entry tkwait visibility .old grab .old tkwait window .old focus $oldfocus return $old } .unsorted select .passwd invoke proc make_selection {} { global selection_line last_line .names tag remove selection 0.0 end # don't let selection go off top of screen if {$selection_line < 1} { set selection_line $last_line } elseif {$selection_line > $last_line} { set selection_line 1 } .names yview -pickplace [expr $selection_line-1] .names tag add selection $selection_line.0 [expr 1+$selection_line].0 } proc select_next_nopassword {direction} { global selection_line last_line nopasswords if {0==[llength $nopasswords]} { feedback "no null passwords" return } if {$direction==1} { # is there a better way to get last element of list? if {$selection_line>=[lindex $nopasswords [expr [llength $nopasswords]-1]]} { set selection_line 0 } foreach i $nopasswords { if {$selection_line<$i} break } } else { if {$selection_line<=[lindex $nopasswords 0]} { set selection_line $last_line } set j [expr [llength $nopasswords]-1] for {} {$j>=0} {incr j -1} { set i [lindex $nopasswords $j] if {$selection_line>$i} break } } set selection_line $i make_selection } proc select {w coords} { global selection_line $w mark set insert "@$coords linestart" $w mark set anchor insert set first [$w index "anchor linestart"] set last [$w index "insert lineend + 1c"] scan $first %d selection_line $w tag remove selection 0.0 end $w tag add selection $first $last } bind Text <1> {select %W %x,%y} bind Text {select %W %x,%y} bind Text {select %W %x,%y} bind Text <2> {select %W %x,%y} bind Text <3> {select %W %x,%y} bind Text {} bind Text {} bind Text {} bind Text {} bind .password {incr selection_line 1; make_selection} bind .password {incr selection_line -1;make_selection} bind .password {select_next_nopassword 1} bind .password {select_next_nopassword -1} bind .password {password_generate} bind .password {adjust_parameters} bind .password {set password ""} bind Entry {exit} 0707010005740d000081ed00000000000000000000000151a4006a000032b00000010000010031ffffffffffffffff0000001a00000000root/usr/local/bin/expectELF+ à@+ð@8@@@XX@@@@øhh /usr/lib/sparcv9/ld.so.1)(  !"%& #$'À@1 à78> H N!V@^àoލh±Á  àDÈàЀM×`æ ü @"+83 @œ8D=C€S@[0c p ðv@‚ GÀ–ÿñexp_interpret_cmdfilename_GLOBAL_OFFSET_TABLE__init_edataTcl_Init_exit_environfprintfTcl_CreateInterpexp_interactive__environ_lock_PROCEDURE_LINKAGE_TABLE__DYNAMICexp_cmdfilename_startsprintfatexitexp_parse_argvexp_interpret_cmdfileTcl_FindExecutable_etextexp_cmdfileTcl_Eval__xargvmain_end__iobexp_interpreter__xargc___Argv_lib_version_finiExpect_InitTcl_GetStringResult__fsr_init_valuelibc.so.1SUNW_0.7libexpect5.45.solibtcl8.6.solibdl.so.1libm.so.2/usr/local/lib:/usr/local/lib/expect5.45:/tcl/lib§ =(—±H XP`€ À&à  @$`€ Àà %@ ¼ à[¨š`›+p ’@ à"b@¢¨‡š`›+p ’@ ârb8š`›+p ’@ ârb0¥, ¤ ¤@š`›+p '¦À è\‥ €ätâ+ª`€€š`›+p )¨ ­-`Á-"(® £¬ `?¬€«- ì"(® ¯=à¯-à¬-€¬€ì%"(Á "(œ# 0€€@êš`›+p  @ã#ð@y’@ ”@ã@éã¿0@5´¡ü¶€@ã @èÐ^`@î»> €¢ H;@ HD“?`@ð”šàØ^À Ö €¢à@° @î’ €²§ß'¤àâ^ÀÒ\`Â@€¢`@ì°€²§ß-ª è^ÀÒ] Â@€¢`° €²§ß@æ°²§ß;§ß®ø’À@æ•> ’@ëÇà‘è 9-@í´ ”î^Àª¿Èá@î’À@„ ¿ÿ»@à ˆ` ”Æ^À‚¿àá@ß’À@u ¿ÿ²“?`ã¿PÇàèã¿PÇàèTcl_Init failed: %s Expect_Init failed: %s exit %dh€0oÿç 0oÿßÀ0oÿ×à0oÿÏ0oÿÇ 0oÿ¿@0oÿ·`0oÿ¯€0oÿ§ 0oÿŸÀ0oÿ—à0oÿ0oÿ‡ 0oÿ@0oÿwºËØã§ à ðííxˆ È oÿýøâéoÿÿþ ¨oÿÿÿh x È ppoÿÿû``+ÿñXxȈ ¨ È  x  à à ð  @h8UD[ÿñÿñ($ÿñ0 ?ÿñNÿñcÀ}@“ à™8  ª °!¸@ÀàÑáð h#  àD*à2€¯9`H ^q @x„8• @œšDŸ¥€µ@½0Å Ò ðØ@ä ©Àøÿñexpectcrti.scrt1.s__crt_scratchvalues-Xa.cDrodata.rodataexp_main_exp.ccrtn.s_END__START_exp_interpret_cmdfilename_GLOBAL_OFFSET_TABLE__init_edataTcl_Init_exit_environfprintfTcl_CreateInterpexp_interactive__environ_lock_PROCEDURE_LINKAGE_TABLE__DYNAMICexp_cmdfilename_startsprintfatexitexp_parse_argvexp_interpret_cmdfileTcl_FindExecutable_etextexp_cmdfileTcl_Eval__xargvmain_end__iobexp_interpreter__xargc___Argv_lib_version_finiExpect_InitTcl_GetStringResult__fsr_init_valueanotatex(´@œ€ÒH@DL@Danotate ÿÿÿÿ´exp_main_exp.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_main_exp.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3ÿÿÿÿ,"ÿ exp_main_exp.c …D‡D%cg: Sun Compiler Common 12.3 SunOS_sparc 2011/11/16@(#)stdio.h 1.85 11/01/07 SMI@(#)feature_tests.h 1.26 11/04/12 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.30 11/03/31 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)stdlib.h 1.52 12/08/01 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMIacomp: Sun C 5.12 SunOS_sparc 2011/11/16iropt: Sun Compiler Common 12.3 SunOS_sparc 2011/11/16ld: Software Generation Utilities - Solaris Link Editors: 5.10-1.1516.interp.hash.dynsym.dynstr.SUNW_version.SUNW_versym.SUNW_reloc.rela.plt.text.init.fini.rodata.rodata1.got.dynamic.data.bss.symtab.strtab.annotate.debug_info.debug_line.debug_abbrev.comment.shstrtabXX xxL ÈÈÀ"ˆˆoÿÿþ ¨ ¨ -oÿÿÿ È ÈP:  `FB x xhP à àü Vàà\ððbj8s@@(Kd xhh 0‡88 Œ8 %” X œoÿÿ÷h°¦ À²'Ø8¾(Ì(&ëÕ +ß0707010005740c000081ed00000000000000000000000151a4006b00001f020000010000010031ffffffffffffffff0000001d00000000root/usr/local/bin/dislocate#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # dislocate - allow disconnection and reconnection to a background program # Author: Don Libes, NIST exp_version -exit 5.1 # The following code attempts to intuit whether cat buffers by default. # The -u flag is required on HPUX (8 and 9) and IBM AIX (3.2) systems. if {[file exists $exp_exec_library/cat-buffers]} { set catflags "-u" } else { set catflags "" } # If this fails, you can also force it by commenting in one of the following. # Or, you can use the -catu flag to the script. #set catflags "" #set catflags "-u" set escape \035 ;# control-right-bracket set escape_printable "^\]" set pidfile "~/.dislocate" set prefix "disc" set timeout -1 set debug_flag 0 while {$argc} { set flag [lindex $argv 0] switch -- $flag \ "-catu" { set catflags "-u" set argv [lrange $argv 1 end] incr argc -1 } "-escape" { set escape [lindex $argv 1] set escape_printable $escape set argv [lrange $argv 2 end] incr argc -2 } "-debug" { log_file [lindex $argv 1] set debug_flag 1 set argv [lrange $argv 2 end] incr argc -2 } default { break } } # These are correct from parent's point of view. # In child, we will reset these so that they appear backwards # thus allowing following two routines to be used by both parent and child set infifosuffix ".i" set outfifosuffix ".o" proc infifoname {pid} { return "/tmp/$::prefix$pid$::infifosuffix" } proc outfifoname {pid} { return "/tmp/$::prefix$pid$::outfifosuffix" } proc pid_remove {pid} { say "removing $pid $::proc($pid)" unset ::date($pid) unset ::proc($pid) } # lines in data file look like this: # pid#date-started#argv # allow element lookups on empty arrays set date(dummy) dummy; unset date(dummy) set proc(dummy) dummy; unset proc(dummy) proc say {msg} { if {!$::debug_flag} return if {[catch {puts "parent: $msg"}]} { send_log "child: $msg\n" } } # load pidfile into memory proc pidfile_read {} { global date proc pidfile say "opening $pidfile" if {[catch {open $pidfile} fp]} return # # read info from file # say "reading pidfile" set line 0 while {[gets $fp buf]!=-1} { # while pid and date can't have # in it, proc can if {[regexp "(\[^#]*)#(\[^#]*)#(.*)" $buf junk pid xdate xproc]} { set date($pid) $xdate set proc($pid) $xproc } else { puts "warning: inconsistency in $pidfile line $line" } incr line } close $fp say "read $line entries" # # see if pids and fifos are still around # foreach pid [array names date] { if {$pid && [catch {exec /bin/kill -0 $pid}]} { say "$pid no longer exists, removing" pid_remove $pid continue } # pid still there, see if fifos are if {![file exists [infifoname $pid]] || ![file exists [outfifoname $pid]]} { say "$pid fifos no longer exists, removing" pid_remove $pid continue } } } proc pidfile_write {} { global pidfile date proc say "writing pidfile" set fp [open $pidfile w] foreach pid [array names date] { puts $fp "$pid#$date($pid)#$proc($pid)" say "wrote $pid#$date($pid)#$proc($pid)" } close $fp } proc fifo_pair_remove {pid} { global date proc prefix pidfile_read pid_remove $pid pidfile_write file delete -force [infifoname $pid] [outfifoname $pid] } proc fifo_pair_create {pid argdate argv} { global prefix date proc pidfile_read set date($pid) $argdate set proc($pid) $argv pidfile_write mkfifo [infifoname $pid] mkfifo [outfifoname $pid] } proc mkfifo {f} { if {[file exists $f]} { say "uh, fifo already exists?" return } if {0==[catch {exec mkfifo $f}]} return ;# POSIX if {0==[catch {exec mknod $f p}]} return # some systems put mknod in wierd places if {0==[catch {exec /usr/etc/mknod $f p}]} return ;# Sun if {0==[catch {exec /etc/mknod $f p}]} return ;# AIX, Cray puts "Couldn't figure out how to make a fifo - where is mknod?" exit } proc child {argdate argv} { global infifosuffix outfifosuffix disconnect # these are backwards from the child's point of view so that # we can make everything else look "right" set infifosuffix ".o" set outfifosuffix ".i" set pid 0 eval spawn $argv set proc_spawn_id $spawn_id while {1} { say "opening [infifoname $pid] for read" set catfid [open "|cat $::catflags < [infifoname $pid]" "r"] set ::catpid $catfid spawn -open $catfid set in $spawn_id say "opening [outfifoname $pid] for write" spawn -open [open [outfifoname $pid] w] set out $spawn_id fifo_pair_remove $pid say "interacting" interact { -u $proc_spawn_id eof exit -output $out -input $in } # parent has closed connection say "parent closed connection" catch {close -i $in} catch {wait -i $in} catch {close -i $out} catch {wait -i $out} # switch to using real pid set pid [pid] # put entry back fifo_pair_create $pid $argdate $argv } } proc escape {} { # export process handles so that user can get at them global in out puts "\nto disconnect, enter: exit (or ^D)" puts "to suspend, press appropriate job control sequence" puts "to return to process, enter: return" interpreter -eof exit puts "returning ..." } # interactively query user to choose process, return pid proc choose {} { while {1} { send_user "enter # or pid: " expect_user -re "(.*)\n" {set buf $expect_out(1,string)} if {[info exists ::index($buf)]} { set pid $::index($buf) } elseif {[info exists ::date($buf)]} { set pid $buf } else { puts "no such # or pid" continue } return $pid } } if {$argc} { # initial creation occurs before fork because if we do it after # then either the child or the parent may have to spin retrying # the fifo open. Unfortunately, we cannot know the pid ahead of # time so use "0". This will be set to the real pid when the # parent does its initial disconnect. There is no collision # problem because the fifos are deleted immediately anyway. set datearg [clock format [clock seconds]] fifo_pair_create 0 $datearg $argv # to debug by faking child, comment out fork and set pid to a # non-zero int, then you can read/write to pipes manually set pid [fork] say "after fork, pid = $pid" if {$pid==0} { child $datearg $argv } # parent thinks of child as pid==0 for reason given earlier set pid 0 } say "examining pid" if {![info exists pid]} { global fifos date proc say "pid does not exist" pidfile_read set count 0 foreach pid [array names date] { incr count } if {$count==0} { puts "no connectable processes" exit } elseif {$count==1} { puts "one connectable process: $proc($pid)" puts "pid $pid, started $date($pid)" send_user "connect? \[y] " expect_user -re "(.*)\n" {set buf $expect_out(1,string)} if {$buf!="y" && $buf!=""} exit } else { puts "connectable processes:" set count 1 puts " # pid date started process" foreach pid [array names date] { puts [format "%2d %6d %.19s %s" \ $count $pid $date($pid) $proc($pid)] set index($count) $pid incr count } set pid [choose] } } say "opening [outfifoname $pid] for write" spawn -noecho -open [open [outfifoname $pid] w] set out $spawn_id say "opening [infifoname $pid] for read" set catfid [open "|cat $catflags < [infifoname $pid]" "r"] set catpid [pid $catfid] spawn -noecho -open $catfid set in $spawn_id puts "Escape sequence is $escape_printable" proc prompt1 {} { return "$::argv0[history nextid]> " } rename exit exitReal proc exit {} { exec /bin/kill $::catpid exitReal } interact { -reset $escape escape -output $out -input $in } 0707010005740e000081ed00000000000000000000000151a4006b000002ab0000010000010031ffffffffffffffff0000001b00000000root/usr/local/bin/ftp-rfc#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # ftp-rfc # ftp-rfc -index # retrieves an rfc (or the index) from uunet exp_version -exit 5.0 if {$argc!=1} { send_user "usage: ftp-rfc \[#] \[-index]\n" exit } set file "rfc$argv.Z" set timeout 60 spawn ftp ftp.uu.net expect "Name*:" send "anonymous\r" expect "Password:" send "expect@nist.gov\r" expect "ftp>" send "binary\r" expect "ftp>" send "cd inet/rfc\r" expect "550*ftp>" exit "250*ftp>" send "get $file\r" expect "550*ftp>" exit "200*226*ftp>" close wait send_user "\nuncompressing file - wait...\n" exec uncompress $file 07070100057412000081ed00000000000000000000000151a4006b000077170000010000010031ffffffffffffffff0000001e00000000root/usr/local/bin/multixterm#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # # NAME # multixterm - drive multiple xterms separately or together # # SYNOPSIS # multixterm [-xa "xterm args"] # [-xc "command"] # [-xd "directory"] # [-xf "file"] # [-xn "xterm names"] # [-xv] (enable verbose mode) # [-xh] or [-x?] (help) # [xterm names or user-defined args...] # # DESCRIPTION # Multixterm creates multiple xterms that can be driven together # or separately. # # In its simplest form, multixterm is run with no arguments and # commands are interactively entered in the first entry field. # Press return (or click the "new xterm" button) to create a new # xterm running that command. # # Keystrokes in the "stdin window" are redirected to all xterms # started by multixterm. xterms may be driven separately simply # by focusing on them. # # The stdin window must have the focus for keystrokes to be sent # to the xterms. When it has the focus, the color changes to # aquamarine. As characters are entered, the color changes to # green for a second. This provides feedback since characters # are not echoed in the stdin window. # # Typing in the stdin window while holding down the alt or meta # keys sends an escape character before the typed characters. # This provides support for programs such as emacs. # # ARGUMENTS # The optional -xa argument indicates arguments to pass to # xterm. # # The optional -xc argument indicates a command to be run in # each named xterm (see -xn). With no -xc argument, the command # is the current shell. # # The optional -xd argument indicates a directory to search for # files that will appear in the Files menu. By default, the # directory is: ~/lib/multixterm # # The optional -xf argument indicates a file to be read at # startup. See FILES below for more info. # # The optional -xn argument indicates a name for each xterm. # This name will also be substituted for any %n in the command # argument (see -xc). # # The optional -xv flag puts multixterm into a verbose mode # where it will describe some of the things it is doing # internally. The verbose output is not intended to be # understandable to anyone but the author. # # Less common options may be changed by the startup file (see # FILES below). # # All the usual X and wish flags are supported (i.e., -display, # -name). There are so many of them that to avoid colliding and # make them easy to remember, all the multixterm flags begin # with -x. # # If any arguments do not match the flags above, the remainder # of the command line is made available for user processing. By # default, the remainder is used as a list of xterm names in the # style of -xn. The default behavior may be changed using the # .multixtermrc file (see DOT FILE below). # # EXAMPLE COMMAND LINE ARGUMENTS # The following command line starts up two xterms using ssh to # the hosts bud and dexter. # # multixterm -xc "ssh %n" bud dexter # # FILES # Command files may be used to drive or initialize multixterm. # The File menu may be used to invoke other files. If files # exist in the command file directory (see -xd above), they will # appear in the File menu. Files may also be loaded by using # File->Open. Any filename is acceptable but the File->Open # browser defaults to files with a .mxt suffix. # # Files are written in Tcl and may change any variables or # invoke any procedures. The primary variables of interest are # 'xtermCmd' which identifies the command (see -xc) and # 'xtermNames' which is a list of names (see -xn). The # procedure xtermStartAll, starts xterms for each name in the # list. Other variables and procedures may be discovered by # examining multixterm itself. # # EXAMPLE FILE # The following file does the same thing as the earlier example # command line: # # # start two xterms connected to bud and dexter # set xtermCmd "ssh %n" # set xtermNames {bud dexter} # xtermStartAll # # DOT FILE # At startup, multixterm reads ~/.multixtermrc if present. This # is similar to the command files (see FILES above) except that # .multixtermrc may not call xtermStartAll. Instead it is # called implicitly, similar to the way that it is implicit in # the command line use of -xn. # # The following example .multixtermrc file makes every xterm run # ssh to the hosts named on the command line. # # set xtermCmd "ssh %n" # # Then multixterm could be called simply: # # multixterm bud dexter # # If any command-line argument does not match a multixterm flag, # the remainder of the command line is made available to # .multixtermrc in the argv variable. If argv is non-empty when # .multixtermrc returns, it is assigned to xtermNames unless # xtermNames is non-empty in which case, the content of argv is # ignored. # # Commands from .multixtermrc are evaluated early in the # initialization of multixterm. Anything that must be done late # in the initialization (such as adding additional bindings to # the user interface) may be done by putting the commands inside # a procedure called "initLate". # # MENUS # Except as otherwise noted, the menus are self-explanatory. # Some of the menus have dashed lines as the first entry. # Clicking on the dashed lines will "tear off" the menus. # # USAGE SUGGESTION - ALIASES AND COMMAND FILES # Aliases may be used to store lengthy command-line invocations. # Command files can be also be used to store such invocations # as well as providing a convenient way to share configurations. # # Tcl is a general-purpose language. Thus multixterm command # files can be extremely flexible, such as loading hostnames # from other programs or files that may change from day-to-day. # In addition, command files can be used for other purposes. # For example, command files may be used to prepared common # canned interaction sequences. For example, the command to # send the same string to all xterms is: # # xtermSend "a particularly long string" # # The File menu (torn-off) makes canned sequences particularly # convenient. Interactions could also be bound to a mouse # button, keystroke, or added to a menu via the .multixtermrc # file. # # USAGE SUGGESTION - HANDLING MANY XTERMS BY TILING # The following .multixtermrc causes tiny xterms to tile across # and down the screen. (You may have to adjust the parameters # for your screen.) This can be very helpful when dealing with # large numbers of xterms. # # set yPos 0 # set xPos 0 # # trace variable xtermArgs r traceArgs # # proc traceArgs {args} { # global xPos yPos # set ::xtermArgs "-geometry 80x12+$xPos+$yPos -font 6x10" # if {$xPos} { # set xPos 0 # incr yPos 145 # if {$yPos > 800} {set yPos 0} # } else { # set xPos 500 # } # } # # The xtermArgs variable in the code above is the variable # corresponding to the -xa argument. # # xterms can be also be created directly. The following command # file creates three xterms overlapped horizontally: # # set xPos 0 # # foreach name {bud dexter hotdog} { # set ::xtermArgs "-geometry 80x12+$xPos+0 -font 6x10" # set ::xtermNames $name # xtermStartAll # incr xPos 300 # } # # USAGE SUGGESTION - SELECTING HOSTS BY NICKNAME # The following .multixtermrc shows an example of changing the # default handling of the arguments from hostnames to a filename # containing hostnames: # # set xtermNames [exec cat $argv] # # The following is a variation, retrieving the host names from # the yp database: # # set xtermNames [exec ypcat $argv] # # The following hardcodes two sets of hosts, so that you can # call multixterm with either "cluster1" or "cluster2": # # switch $argv { # cluster1 { # set xtermNames "bud dexter" # } # cluster2 { # set xtermNames "frank hotdog weiner" # } # } # # COMPARE/CONTRAST # It is worth comparing multixterm to xkibitz. Multixterm # connects a separate process to each xterm. xkibitz connects # the same process to each xterm. # # LIMITATIONS # Multixterm provides no way to remotely control scrollbars, # resize, and most other window system related functions. # # Multixterm can only control new xterms that multixterm itself # has started. # # As a convenience, the File menu shows a limited number of # files. To show all the files, use File->Open. # # FILES # $DOTDIR/.multixtermrc initial command file # ~/.multixtermrc fallback command file # ~/lib/multixterm/ default command file directory # # BUGS # If multixterm is killed using an uncatchable kill, the xterms # are not killed. This appears to be a bug in xterm itself. # # Send/expect sequences can be done in multixterm command files. # However, due to the richness of the possibilities, to document # it properly would take more time than the author has at present. # # REQUIREMENTS # Requires Expect 5.36.0 or later. # Requires Tk 8.3.3 or later. # # VERSION #! $::versionString # The latest version of multixterm is available from # http://expect.nist.gov/example/multixterm . If your version of Expect # and Tk are too old (see REQUIREMENTS above), download a new version of # Expect from http://expect.nist.gov # # DATE #! $::versionDate # # AUTHOR # Don Libes # # LICENSE # Multixterm is in the public domain; however the author would # appreciate acknowledgement if multixterm or parts of it or ideas from # it are used. ###################################################################### # user-settable things - override them in the ~/.multixtermrc file # or via command-line options ###################################################################### set palette #d8d8ff ;# lavender set colorTyping green set colorFocusIn aquamarine set xtermNames {} set xtermCmd $env(SHELL) set xtermArgs "" set cmdDir ~/lib/multixterm set inputLabel "stdin window" set fileMenuMax 30 ;# max number of files shown in File menu set tearoffMenuMin 2 ;# min number of files needed to enable the File ;# menu to be torn off proc initLate {} {} ;# anything that must be done late in initialization ;# such as adding/modifying bindings, may be done by ;# redefining this ###################################################################### # end of user-settable things ###################################################################### ###################################################################### # sanity checking ###################################################################### set versionString 1.8 set versionDate "2004/06/29" package require Tcl catch {package require Tk} ;# early versions of Tk had no package package require Expect proc exit1 {msg} { puts "multixterm: $msg" exit 1 } exp_version -exit 5.36 proc tkBad {} { exit1 "requires Tk 8.3.3 or later but you are using Tk $::tk_patchLevel." } if {$tk_version < 8.3} { tkBad } elseif {$tk_version == 8.3} { if {[lindex [split $tk_patchLevel .] 2] < 3} tkBad } ###################################################################### # process args - has to be done first to get things like -xv working ASAP ###################################################################### # set up verbose mechanism early set verbose 0 proc verbose {msg} { if {$::verbose} { if {[info level] > 1} { set proc [lindex [info level -1] 0] } else { set proc main } puts "$proc: $msg" } } # read a single argument from the command line proc arg_read1 {var args} { if {0 == [llength $args]} { set argname -$var } else { set argname $args } upvar argv argv upvar $var v verbose "$argname" if {[llength $argv] < 2} { exit1 "$argname requires an argument" } set v [lindex $argv 1] verbose "set $var $v" set argv [lrange $argv 2 end] } proc xtermUsage {{msg {}}} { if {![string equal $msg ""]} { puts "multixtermrc: $msg" } puts {usage: multixterm [flags] ... where flags are: [-xa "xterm args"] [-xc "command"] [-xd "directory"] [-xf "file"] [-xn "xterm names"] [-xv] (enable verbose mode) [-xh] or [-x?] (help) [xterm names or user-defined args...]} exit } while {[llength $argv]} { set flag [lindex $argv 0] switch -- $flag -x? - -xh { xtermUsage } -xc { arg_read1 xtermCmd -xc } -xn { arg_read1 xtermNames -xn } -xa { arg_read1 xtermArgs -xa } -xf { arg_read1 cmdFile -xf if {![file exists $cmdFile]} { exit1 "can't read $cmdFile" } } -xd { arg_read1 cmdDir -xd if {![file exists $cmdDir]} { exit1 "can't read $cmdDir" } } -xv { set argv [lrange $argv 1 end] set verbose 1 puts "main: verbose on" } default { verbose "remaining args: $argv" break ;# let user handle remaining args later } } ###################################################################### # determine and load rc file - has to be done now so that widgets # can be affected ###################################################################### # if user has no $DOTDIR, fall back to home directory if {![info exists env(DOTDIR)]} { set env(DOTDIR) ~ } # catch bogus DOTDIR, otherwise glob will lose the bogus directory # and it won't appear in the error msg if {[catch {glob $env(DOTDIR)} dotdir]} { exit1 "$env(DOTDIR)/.multixtermrc can't be found because $env(DOTDIR) doesn't exist or can't be read" } set rcFile $dotdir/.multixtermrc set fileTypes { {{Multixterm Files} *.mxt} {{All Files} *} } proc openFile {{fn {}}} { verbose "opening $fn" if {[string equal $fn ""]} { set fn [tk_getOpenFile \ -initialdir $::cmdDir \ -filetypes $::fileTypes \ -title "multixterm file"] if {[string match $fn ""]} return } uplevel #0 source [list $fn] verbose "xtermNames = \"$::xtermNames\"" verbose "xtermCmd = $::xtermCmd" } if {[file exists $rcFile]} { openFile $rcFile } else { verbose "$rcFile: not found" } if {![string equal "" $argv]} { if {[string equal $xtermNames ""]} { set xtermNames $argv } } ###################################################################### # Describe and initialize some important globals ###################################################################### # ::activeList and ::activeArray both track which xterms to send # (common) keystrokes to. Each element in activeArray is connected to # the active menu. The list version is just a convenience making the # send function easier/faster. set activeList {} # ::names is an array of xterm names indexed by process spawn ids. set names(x) "" unset names(x) # ::xtermSid is an array of xterm spawn ids indexed by process spawn ids. # ::xtermPid is an array of xterm pids indexed by process spawn id. ###################################################################### # create an xterm and establish connections ###################################################################### proc xtermStart {cmd name} { verbose "starting new xterm running $cmd with name $name" ###################################################################### # create pty for xterm ###################################################################### set pid [spawn -noecho -pty] verbose "spawn -pty: pid = $pid, spawn_id = $spawn_id" set sidXterm $spawn_id stty raw -echo < $spawn_out(slave,name) regexp ".*(.)(.)" $spawn_out(slave,name) dummy c1 c2 if {[string compare $c1 "/"] == 0} { set c1 0 } ###################################################################### # prepare to start xterm by making sure xterm name is unique # X doesn't care but active menu won't make sense unless names are unique ###################################################################### set unique 1 foreach oldName [array names ::names] { if {[string match "$name" $::names($oldName)]} { set unique 0 } } verbose "uniqueness of $name: $unique" set safe [safe $name] # if not unique, look at the numerical suffixes of all matching # names, find the biggest and increment it if {!$unique} { set suffix 2 foreach oldName [array names ::names] { verbose "regexp ^[set safe](\[0-9]+)$ $::names($oldName) X num" if {[regexp "^[set safe](\[0-9]+)$" $::names($oldName) X num]} { verbose "matched, checking suffix" if {$num >= $suffix} { set suffix [expr $num+1] verbose "new suffix: $suffix" } } } append name $suffix verbose "new name: $name" } ###################################################################### # start new xterm ###################################################################### set xtermpid [eval exec xterm -name [list $name] -S$c1$c2$spawn_out(slave,fd) $::xtermArgs &] verbose "xterm: pid = $xtermpid" close -slave # xterm first sends back window id, save in environment so it can be # passed on to the new process log_user 0 expect { eof {wait;return} -re (.*)\n { # convert hex to decimal # note quotes must be used here to avoid diagnostic from expr set ::env(WINDOWID) [expr "0x$expect_out(1,string)"] } } ###################################################################### # start new process ###################################################################### set pid [eval spawn -noecho $cmd] verbose "$cmd: pid = $pid, spawn_id = $spawn_id" set sidCmd $spawn_id lappend ::activeList $sidCmd set ::activeArray($sidCmd) 1 ###################################################################### # link everything back to spawn id of new process ###################################################################### set ::xtermSid($sidCmd) $sidXterm set ::names($sidCmd) $name set ::xtermPid($sidCmd) $xtermpid ###################################################################### # connect proc output to xterm output # connect xterm input to proc input ###################################################################### expect_background { -i $sidCmd -re ".+" [list sendTo $sidXterm] eof [list xtermKill $sidCmd] -i $sidXterm -re ".+" [list sendTo $sidCmd] eof [list xtermKill $sidCmd] } .m.e entryconfig Active -state normal .m.e.active add checkbutton -label $name -variable activeArray($sidCmd) \ -command [list xtermActiveUpdate $sidCmd] set ::activeArray($sidCmd) 1 } proc xtermActiveUpdate {sid} { if {$::activeArray($sid)} { verbose "activating $sid" } else { verbose "deactivating $sid" } activeListUpdate } proc activeListUpdate {} { set ::activeList {} foreach n [array names ::activeArray] { if {$::activeArray($n)} { lappend ::activeList $n } } } # make a string safe to go through regexp proc safe {s} { string map {{[} {\[} {*} {\*} {+} {\+} {^} {\^} {$} {\\$}} $s } # utility to map xterm name to spawn id # multixterm doesn't use this but a user might want to proc xtermGet {name} { foreach sid [array names ::names] { if {[string equal $name $::names($sid)]} { return $sid } } error "no such term with name: $name" } # utility to activate an xterm # multixterm doesn't use this but a user might want to proc xtermActivate {sid} { set ::activeArray($sid) 1 xtermActiveUpdate $sid } # utility to deactivate an xterm # multixterm doesn't use this but a user might want to proc xtermDeactivate {sid} { set ::activeArray($sid) 0 xtermActiveUpdate $sid } # utility to do an explicit Expect # multixterm doesn't use this but a user might want to proc xtermExpect {args} { # check if explicit spawn_id in args for {set i 0} {$i < [llength $args]} {incr i} { switch -- [lindex $args $i] "-i" { set sidCmd [lindex $args [incr i]] break } } if {![info exists sidCmd]} { # nothing explicit, so get it from the environment upvar spawn_id spawn_id # mimic expect's normal behavior in obtaining spawn_id if {[info exists spawn_id]} { set sidCmd $spawn_id } else { set sidCmd $::spawn_id } } # turn off bg expect, do fg expect, then re-enable bg expect expect_background -i $sidCmd ;# disable bg expect eval expect $args ;# fg expect ;# reenable bg expect expect_background { -i $sidCmd -re ".+" [list sendTo $::xtermSid($sidCmd)] eof [list xtermKill $sidCmd] } } ###################################################################### # connect main window keystrokes to all xterms ###################################################################### proc xtermSend {A} { if {[info exists ::afterId]} { after cancel $::afterId } .input config -bg $::colorTyping set ::afterId [after 1000 {.input config -bg $colorCurrent}] exp_send -raw -i $::activeList -- $A } proc sendTo {to} { exp_send -raw -i $to -- $::expect_out(buffer) } # catch the case where there's no selection proc xtermPaste {} {catch {xtermSend [selection get]}} ###################################################################### # clean up an individual process death or xterm death ###################################################################### proc xtermKill {s} { verbose "killing xterm $s" if {![info exists ::xtermPid($s)]} { verbose "too late, already dead" return } catch {exec /bin/kill -9 $::xtermPid($s)} unset ::xtermPid($s) # remove sid from activeList verbose "removing $s from active array" catch {unset ::activeArray($s)} activeListUpdate verbose "removing from background handler $s" catch {expect_background -i $s} verbose "removing from background handler $::xtermSid($s)" catch {expect_background -i $::xtermSid($s)} verbose "closing proc" catch {close -i $s} verbose "closing xterm" catch {close -i $::xtermSid($s)} verbose "waiting on proc" wait -i $s wait -i $::xtermSid($s) verbose "done waiting" unset ::xtermSid($s) # remove from active menu verbose "deleting active menu entry $::names($s)" # figure out which it is # avoid using name as an index since we haven't gone to any pains to # make it safely interpreted by index-pattern code. instead step # through, doing the comparison ourselves set last [.m.e.active index last] # skip over tearoff for {set i 1} {$i <= $last} {incr i} { if {![catch {.m.e.active entrycget $i -label} label]} { if {[string equal $label $::names($s)]} break } } .m.e.active delete $i unset ::names($s) # if none left, disable menu # this leaves tearoff clone but that seems reasonable if {0 == [llength [array names ::xtermSid]]} { .m.e entryconfig Active -state disable } } ###################################################################### # create windows ###################################################################### tk_setPalette $palette menu .m -tearoff 0 .m add cascade -menu .m.f -label "File" -underline 0 .m add cascade -menu .m.e -label "Edit" -underline 0 .m add cascade -menu .m.help -label "Help" -underline 0 set files [glob -nocomplain $cmdDir/*] set filesLength [llength $files] if {$filesLength >= $tearoffMenuMin} { set filesTearoff 1 } else { set filesTearoff 0 } menu .m.f -tearoff $filesTearoff -title "multixterm files" menu .m.e -tearoff 0 menu .m.help -tearoff 0 .m.f add command -label Open -command openFile -underline 0 if {$filesLength} { .m.f add separator set files [lsort $files] set files [lrange $files 0 $fileMenuMax] foreach f $files { .m.f add command -label $f -command [list openFile $f] } .m.f add separator } .m.f add command -label "Exit" -command exit -underline 0 .m.e add command -label "Paste" -command xtermPaste -underline 0 .m.e add cascade -label "Active" -menu .m.e.active -underline 0 .m.help add command -label "About" -command about -underline 0 .m.help add command -label "Man Page" -command help -underline 0 . config -m .m menu .m.e.active -tearoff 1 -title "multixterm active" .m.e entryconfig Active -state disabled # disable the Active menu simply because it looks goofy seeing an empty menu # for consistency, though, it should be enabled entry .input -textvar inputLabel -justify center -state disabled entry .cmd -textvar xtermCmd button .exec -text "new xterm" -command {xtermStart $xtermCmd $xtermCmd} grid .input -sticky ewns grid .cmd -sticky ew grid .exec -sticky ew -ipadx 3 -ipady 3 grid columnconfigure . 0 -weight 1 grid rowconfigure . 0 -weight 1 ;# let input window only expand bind .cmd {xtermStart $xtermCmd $xtermCmd} # send all keypresses to xterm bind .input {xtermSend %A ; break} bind .input {xtermSend \033%A; break} bind .input {xtermSend \033%A; break} bind .input <> {xtermPaste ; break} bind .input <> {xtermPaste ; break} # arrow keys - note that if they've been rebound through .Xdefaults # you'll have to change these definitions. bind .input {xtermSend \033OA; break} bind .input {xtermSend \033OB; break} bind .input {xtermSend \033OC; break} bind .input {xtermSend \033OD; break} # Strange: od -c reports these as \033[A et al but when keypad mode # is initialized, they send \033OA et al. Presuming most people # want keypad mode, I'll go with the O versions. Perhaps the other # version is just a Sun-ism anyway. set colorCurrent [.input cget -bg] set colorFocusOut $colorCurrent # change color to show focus bind .input colorFocusOut bind .input colorFocusIn proc colorFocusIn {} {.input config -bg [set ::colorCurrent $::colorFocusIn]} proc colorFocusOut {} {.input config -bg [set ::colorCurrent $::colorFocusOut]} # convert normal mouse events to focusIn bind .input <1> {focus .input; break} bind .input {focus .input; break} # ignore all other mouse events that might make selection visible bind .input break bind .input break bind .input break bind .input break set scriptName [info script] ;# must get while it's active proc about {} { set w .about if {[winfo exists $w]} { wm deiconify $w raise $w return } toplevel $w wm title $w "about multixterm" wm iconname $w "about multixterm" wm resizable $w 0 0 button $w.b -text Dismiss -command [list wm withdraw $w] label $w.title -text "multixterm" -font "Times 16" -borderwidth 10 -fg red label $w.version -text "Version $::versionString, Released $::versionDate" label $w.author -text "Written by Don Libes " label $w.using -text "Using Expect [exp_version],\ Tcl $::tcl_patchLevel,\ Tk $::tk_patchLevel" grid $w.title grid $w.version grid $w.author grid $w.using grid $w.b -sticky ew } proc help {} { if {[winfo exists .help]} { wm deiconify .help raise .help return } toplevel .help wm title .help "multixterm help" wm iconname .help "multixterm help" scrollbar .help.sb -command {.help.text yview} text .help.text -width 74 -height 30 -yscroll {.help.sb set} -wrap word button .help.ok -text Dismiss -command {destroy .help} -relief raised bind .help {destroy .help;break} grid .help.sb -row 0 -column 0 -sticky ns grid .help.text -row 0 -column 1 -sticky nsew grid .help.ok -row 1 -columnspan 2 -sticky ew -ipadx 3 -ipady 3 # let text box only expand grid rowconfigure .help 0 -weight 1 grid columnconfigure .help 1 -weight 1 set script [auto_execok $::scriptName] if {[llength $script] == 0} { set script /depot/tcl/bin/multixterm ;# fallback } if {[catch {open $script} fid]} { .help.text insert end "Could not open help file: $script" } else { # skip to the beginning of the actual help (starts with "NAME") while {-1 != [gets $fid buf]} { if {1 == [regexp "NAME" $buf]} { .help.text insert end "\n NAME\n" break } } while {-1 != [gets $fid buf]} { if {0 == [regexp "^#(.?)(.*)" $buf X key buf]} break if {$key == "!"} { set buf [subst -nocommands $buf] set key " " } .help.text insert end $key$buf\n } } # support scrolling beyond Tk's built-in Next/Previous foreach w {"" .sb .text .ok} { set W .help$w bind $W {scrollPage 1} ;#more bind $W {scrollPage -1} ;#more bind $W {scrollPage -1} ;#more bind $W {scrollPage 1} ;#emacs bind $W {scrollPage -1} ;#emacs bind $W {scrollPage 1} ;#vi bind $W {scrollPage -1} ;#vi bind $W {scrollPage 1} ;#sun bind $W {scrollPage -1} ;#sun bind $W {scrollLine 1} bind $W {scrollLine -1} } } proc scrollPage {dir} { tkScrollByPages .help.sb v $dir return -code break } proc scrollLine {dir} { tkScrollByUnits .help.sb v $dir return -code break } ###################################################################### # exit handling ###################################################################### # xtermKillAll is not intended to be user-callable. It just kills # the processes and that's it. A user-callable version would update # the data structures, close the channels, etc. proc xtermKillAll {} { foreach sid [array names ::xtermPid] { exec /bin/kill -9 $::xtermPid($sid) } } rename exit _exit proc exit {{x 0}} {xtermKillAll;_exit $x} wm protocol . WM_DELETE_WINDOW exit trap exit SIGINT ###################################################################### # start any xterms requested ###################################################################### proc xtermStartAll {} { verbose "xtermNames = \"$::xtermNames\"" foreach n $::xtermNames { regsub -all "%n" $::xtermCmd $n cmdOut xtermStart $cmdOut $n } set ::xtermNames {} } initLate # now that xtermStartAll and its accompanying support has been set up # run it to start anything defined by rc file or command-line args. xtermStartAll ;# If nothing has been requested, this is a no-op. # finally do any explicit command file if {[info exists cmdFile]} { openFile $cmdFile } 07070100057416000081ed00000000000000000000000151a4006b0000012f0000010000010031ffffffffffffffff0000001e00000000root/usr/local/bin/timed-read#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # read a complete line from stdin # aborting after the number of seconds (given as an argument) # - Don Libes set timeout $argv expect -re \n {send_user $expect_out(buffer)} 07070100057409000081ed00000000000000000000000151a4006b000001770000010000010031ffffffffffffffff0000001e00000000root/usr/local/bin/autopasswd#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # wrapper to make passwd(1) be non-interactive # username is passed as 1st arg, passwd as 2nd set password [lindex $argv 1] spawn passwd [lindex $argv 0] expect "assword:" send -- "$password\r" expect "assword:" send -- "$password\r" expect eof 0707010005740b000081ed00000000000000000000000151a4006b000005550000010000010031ffffffffffffffff0000001e00000000root/usr/local/bin/decryptdir#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # Name: cryptdir # Author: Don Libes, NIST # # Synopsis: # cryptdir [dir] # decryptdir [dir] # # Encrypt or decrypts the current directory or named directory if given. if {[llength $argv] > 0} { cd $argv } # encrypt or decrypt? set decrypt [regexp "decrypt" $argv0] set timeout -1 stty -echo send "Password:" expect -re "(.*)\n" send "\n" set passwd $expect_out(1,string) # Wouldn't want to encrypt/decrypt files with mistyped password! send "Again:" expect -re "(.*)\n" send "\n" if {![string match $passwd $expect_out(1,string)]} { send_user "mistyped password?\n" stty echo exit } stty echo log_user 0 foreach f [glob *] { # strip shell metachars from filename to avoid problems if {[regsub -all {[]['`~<>:-]} $f "" newf]} { exec mv $f $newf set f $newf } set strcmp [string compare .crypt [file extension $f]] if {$decrypt} { # skip files that don't end with ".crypt" if {0!=$strcmp} continue spawn sh -c "exec crypt < $f > [file root $f]" } else { # skip files that already end with ".crypt" if {0==$strcmp} continue spawn sh -c "exec crypt < $f > $f.crypt" } expect "key:" send "$passwd\r" expect wait exec rm -f $f send_tty "." } send_tty "\n" 0707010005741c000081ed00000000000000000000000151a4006b000012fe0000010000010031ffffffffffffffff0000001b00000000root/usr/local/bin/xkibitz#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # share an xterm with other users # See xkibitz(1) man page for complete info. # Compare with kibitz. # Author: Don Libes, NIST # Version: 1.2 proc help {} { puts "Commands Meaning" puts "-------- -------" puts "return return to program" puts "= list" puts "+ add" puts "- drop" puts "where is an X display name such as nist.gov or nist.gov:0.0" puts "and is a tag from the = command." puts "+ and - require whitespace before argument." puts {return command must be spelled out ("r", "e", "t", ...).} } proc prompt1 {} { return "xkibitz> " } proc h {} help proc ? {} help # disable history processing - there seems to be some incestuous relationship # between history and unknown in Tcl 8.0 proc history {args} {} proc unknown {args} { puts "$args: invalid command" help } set tag2pid(0) [pid] set pid2tty([pid]) "/dev/tty" if {[info exists env(DISPLAY)]} { set pid2display([pid]) $env(DISPLAY) } else { set pid2display([pid]) "" } # small int allowing user to more easily identify display # maxtag always points at highest in use set maxtag 0 proc + {display} { global ids pid2display pid2tag tag2pid maxtag pid2sid global pid2tty env if {![string match *:* $display]} { append display :0.0 } if {![info exists env(XKIBITZ_XTERM_ARGS)]} { set env(XKIBITZ_XTERM_ARGS) "" } set dummy1 [open /dev/null] set dummy2 [open /dev/null] spawn -pty -noecho close $dummy1 close $dummy2 stty raw -echo < $spawn_out(slave,name) # Linux needs additional stty, sounds like a bug in its stty to me. # raw should imply this stuff, no? stty -icrnl -icanon < $spawn_out(slave,name) regexp ".*(.)(.)" $spawn_out(slave,name) dummy c1 c2 if {[string compare $c1 "/"] == 0} { # On Pyramid and AIX, ttynames such as /dev/pts/1 # requre suffix to be padded with a 0 set c1 0 } set pid [eval exec xterm \ -display $display \ -geometry [stty columns]x[stty rows] \ -S$c1$c2$spawn_out(slave,fd) \ $env(XKIBITZ_XTERM_ARGS) &] close -slave # xterm first sends back window id, discard log_user 0 expect { eof {wait;return} \n } log_user 1 lappend ids $spawn_id set pid2display($pid) $display incr maxtag set tag2pid($maxtag) $pid set pid2tag($pid) $maxtag set pid2sid($pid) $spawn_id set pid2tty($pid) $spawn_out(slave,name) return } proc = {} { global pid2display tag2pid pid2tty puts "Tag Size Display" foreach tag [lsort -integer [array names tag2pid]] { set pid $tag2pid($tag) set tty $pid2tty($pid) puts [format "%3d [stty columns < $tty]x[stty rows < $tty] $pid2display($pid)" $tag] } } proc - {tag} { global tag2pid pid2tag pid2display maxtag ids pid2sid global pid2tty if {![info exists tag2pid($tag)]} { puts "no such tag" return } if {$tag == 0} { puts "cannot drop self" return } set pid $tag2pid($tag) # close and remove spawn_id from list set spawn_id $pid2sid($pid) set index [lsearch $ids $spawn_id] set ids [lreplace $ids $index $index] exec kill -9 $pid close wait unset tag2pid($tag) unset pid2tag($pid) unset pid2display($pid) unset pid2sid($pid) unset pid2tty($pid) # lower maxtag if possible while {![info exists tag2pid($maxtag)]} { incr maxtag -1 } } rename exit exitReal proc exit {} { global pid2display unset pid2display([pid]) ;# avoid killing self foreach pid [array names pid2display] { catch {exec kill -9 $pid} } exitReal } trap exit HUP trap { set r [stty rows] set c [stty columns] stty rows $r columns $c < $app_tty foreach pid [array names pid2tty] { if {$pid == [pid]} continue stty rows $r columns $c < $pid2tty($pid) } } WINCH set escape \035 ;# control-right-bracket set escape_printable "^\]" while {[llength $argv]>0} { set flag [lindex $argv 0] switch -- $flag \ "-escape" { set escape [lindex $argv 1] set escape_printable $escape set argv [lrange $argv 2 end] } "-display" { + [lindex $argv 1] set argv [lrange $argv 2 end] } default { break } } if {[llength $argv]>0} { eval spawn -noecho $argv } else { spawn -noecho $env(SHELL) } set prog $spawn_id set app_tty $spawn_out(slave,name) puts "Escape sequence is $escape_printable" interact { -input $user_spawn_id -reset $escape { puts "\nfor help enter: ? or h or help" interpreter -eof exit } -output $prog -input ids -output $prog -input $prog eof exit -output $user_spawn_id -output ids } 07070100057414000081ed00000000000000000000000151a4006b000022b80000010000010031ffffffffffffffff0000001800000000root/usr/local/bin/rftp#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # rftp - ftp a directory hierarchy (i.e. recursive ftp) # Version 2.10 # Don Libes, NIST exp_version -exit 5.0 # rftp is much like ftp except that the command ~g copies everything in # the remote current working directory to the local current working # directory. Similarly ~p copies in the reverse direction. ~l just # lists the remote directories. # rftp takes an argument of the host to ftp to. Username and password # are prompted for. Other ftp options can be set interactively at that # time. If your local ftp understands .netrc, that is also used. # ~/.rftprc is sourced after the user has logged in to the remote site # and other ftp commands may be sent at that time. .rftprc may also be # used to override the following rftp defaults. The lines should use # the same syntax as these: set file_timeout 3600 ;# timeout (seconds) for retrieving files set timeout 1000000 ;# timeout (seconds) for other ftp dialogue set default_type binary ;# default type, i.e., ascii, binary, tenex set binary {} ;# files matching are transferred as binary set ascii {} ;# as above, but as ascii set tenex {} ;# as above, but as tenex # The values of binary, ascii and tenex should be a list of (Tcl) regular # expressions. For example, the following definitions would force files # ending in *.Z and *.tar to be transferred as binaries and everything else # as text. # set default_type ascii # set binary {*.Z *.tar} # If you are on a UNIX machine, you can probably safely ignore all of this # and transfer everything as "binary". # The current implementation requires that the source host be able to # provide directory listings in UNIX format. Hence, you cannot copy # from a VMS host (although you can copy to it). In fact, there is no # standard for the output that ftp produces, and thus, ftps that differ # significantly from the ubiquitous UNIX implementation may not work # with rftp (at least, not without changing the scanning and parsing). ####################end of documentation############################### match_max -d 100000 ;# max size of a directory listing # return name of file from one line of directory listing proc getname {line} { # if it's a symbolic link, return local name set i [lsearch $line "->"] if {-1==$i} { # not a sym link, return last token of line as name return [lindex $line [expr [llength $line]-1]] } else { # sym link, return "a" of "a -> b" return [lindex $line [expr $i-1]] } } proc putfile {name} { global current_type default_type global binary ascii tenex global file_timeout switch -- $name $binary {set new_type binary} \ $ascii {set new_type ascii} \ $tenex {set new_type tenex} \ default {set new_type $default_type} if {$current_type != $new_type} { settype $new_type } set timeout $file_timeout send "put $name\r" expect timeout { send_user "ftp timed out in response to \"put $name\"\n" exit } "ftp>*" } proc getfile {name} { global current_type default_type global binary ascii tenex global file_timeout switch -- $name $binary {set new_type binary} \ $ascii {set new_type ascii} \ $tenex {set new_type tenex} \ default {set new_type $default_type} if {$current_type != $new_type} { settype $new_type } set timeout $file_timeout send "get $name\r" expect timeout { send_user "ftp timed out in response to \"get $name\"\n" exit } "ftp>*" } # returns 1 if successful, 0 otherwise proc putdirectory {name} { send "mkdir $name\r" expect "550*denied*ftp>*" { send_user "failed to make remote directory $name\n" return 0 } timeout { send_user "timed out on make remote directory $name\n" return 0 } -re "(257|550.*exists).*ftp>.*" # 550 is returned if directory already exists send "cd $name\r" expect "550*ftp>*" { send_user "failed to cd to remote directory $name\n" return 0 } timeout { send_user "timed out on cd to remote directory $name\n" return 0 } -re "2(5|0)0.*ftp>.*" # some ftp's return 200, some return 250 send "lcd $name\r" # hard to know what to look for, since my ftp doesn't return status # codes. It is evidentally very locale-dependent. # So, assume success. expect "ftp>*" putcurdirectory send "lcd ..\r" expect "ftp>*" send "cd ..\r" expect timeout { send_user "failed to cd to remote directory ..\n" return 0 } -re "2(5|0)0.*ftp>.*" return 1 } # returns 1 if successful, 0 otherwise proc getdirectory {name transfer} { send "cd $name\r" # this can fail normally if it's a symbolic link, and we are just # experimenting expect "550*$name*ftp>*" { send_user "failed to cd to remote directory $name\n" return 0 } timeout { send_user "timed out on cd to remote directory $name\n" return 0 } -re "2(5|0)0.*ftp>.*" # some ftp's return 200, some return 250 if {$transfer} { send "!mkdir $name\r" expect "denied*" return timeout return "ftp>" send "lcd $name\r" # hard to know what to look for, since my ftp doesn't return # status codes. It is evidentally very locale-dependent. # So, assume success. expect "ftp>*" } getcurdirectory $transfer if {$transfer} { send "lcd ..\r" expect "ftp>*" } send "cd ..\r" expect timeout { send_user "failed to cd to remote directory ..\n" return 0 } -re "2(5|0)0.*ftp>.*" return 1 } proc putentry {name type} { switch -- $type d { # directory if {$name=="." || $name==".."} return putdirectory $name } - { # file putfile $name } l { # symlink, could be either file or directory # first assume it's a directory if {[putdirectory $name]} return putfile $name } default { send_user "can't figure out what $name is, skipping\n" } } proc getentry {name type transfer} { switch -- $type d { # directory if {$name=="." || $name==".."} return getdirectory $name $transfer } - { # file if {!$transfer} return getfile $name } l { # symlink, could be either file or directory # first assume it's a directory if {[getdirectory $name $transfer]} return if {!$transfer} return getfile $name } default { send_user "can't figure out what $name is, skipping\n" } } proc putcurdirectory {} { send "!/bin/ls -alg\r" expect timeout { send_user "failed to get directory listing\n" return } "ftp>*" set buf $expect_out(buffer) while {1} { # if end of listing, succeeded! if 0==[regexp "(\[^\n]*)\n(.*)" $buf dummy line buf] return set token [lindex $line 0] switch -- $token !/bin/ls { # original command } total { # directory header } . { # unreadable } default { # either file or directory set name [getname $line] set type [string index $line 0] putentry $name $type } } } # look at result of "dir". If transfer==1, get all files and directories proc getcurdirectory {transfer} { send "dir\r" expect timeout { send_user "failed to get directory listing\n" return } "ftp>*" set buf $expect_out(buffer) while {1} { regexp "(\[^\n]*)\n(.*)" $buf dummy line buf set token [lindex $line 0] switch -- $token dir { # original command } 200 { # command successful } 150 { # opening data connection } total { # directory header } 226 { # transfer complete, succeeded! return } ftp>* { # next prompt, failed! return } . { # unreadable } default { # either file or directory set name [getname $line] set type [string index $line 0] getentry $name $type $transfer } } } proc settype {t} { global current_type send "type $t\r" set current_type $t expect "200*ftp>*" } proc final_msg {} { # write over the previous prompt with our message send_user "\rQuit ftp or cd to another directory and press ~g, ~p, or ~l\n" # and then reprompt send_user "ftp> " } if {[file readable ~/.rftprc]} {source ~/.rftprc} set first_time 1 if {$argc>1} { send_user "usage: rftp [host]" exit } send_user "Once logged in, cd to the directory to be transferred and press:\n" send_user "~p to put the current directory from the local to the remote host\n" send_user "~g to get the current directory from the remote host to the local host\n" send_user "~l to list the current directory from the remote host\n" if {$argc==0} {spawn ftp} else {spawn ftp $argv} interact -echo ~g { if {$first_time} { set first_time 0 settype $default_type } getcurdirectory 1 final_msg } -echo ~p { if {$first_time} { set first_time 0 settype $default_type } putcurdirectory final_msg } -echo ~l { getcurdirectory 0 final_msg } 0707010005740f000081ed00000000000000000000000151a4006b00002a860000010000010031ffffffffffffffff0000001a00000000root/usr/local/bin/kibitz#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # allow another user to share a shell (or other program) with you # See kibitz(1) man page for complete info. # Author: Don Libes, NIST # Date written: December 5, 1991 # Date last editted: October 19, 1994 # Version: 2.11 exp_version -exit 5.0 # if environment variable "EXPECT_PROMPT" exists, it is taken as a regular # expression which matches the end of your login prompt (but does not other- # wise occur while logging in). set prompt "(%|#|\\$) $" ;# default prompt set noproc 0 set tty "" ;# default if no -tty flag set allow_escape 1 ;# allow escapes if true set escape_char \035 ;# control-right-bracket set escape_printable "^\]" set verbose 1 ;# if true, describe what kibitz is doing set kibitz "kibitz" ;# where kibitz lives if some unusual place. ;# this must end in "kibitz", but can have ;# things in front (like directory names). #set proxy "kibitz" ;# uncomment and set if you want kibitz to use ;# some other account on remote systems # The following code attempts to intuit whether cat buffers by default. # The -u flag is required on HPUX (8 and 9) and IBM AIX (3.2) systems. if {[file exists $exp_exec_library/cat-buffers]} { set catflags "-u" } else { set catflags "" } # If this fails, you can also force it by commenting in one of the following. # Or, you can use the -catu flag to the script. #set catflags "" #set catflags "-u" # Some flags must be passed onto the remote kibitz process. They are stored # in "kibitz_flags". Currently, they include -tty and -silent. set kibitz_flags "" while {[llength $argv]>0} { set flag [lindex $argv 0] switch -- $flag \ "-noproc" { set noproc 1 set argv [lrange $argv 1 end] } "-catu" { set catflags "-u" set argv [lrange $argv 1 end] } "-tty" { set tty [lindex $argv 1] set argv [lrange $argv 2 end] set kibitz_flags "$kibitz_flags -tty $tty" } "-noescape" { set allow_escape 0 set argv [lrange $argv 1 end] } "-escape" { set escape_char [lindex $argv 1] set escape_printable $escape_char set argv [lrange $argv 2 end] } "-silent" { set verbose 0 set argv [lrange $argv 1 end] set kibitz_flags "$kibitz_flags -silent" } "-proxy" { set proxy [lindex $argv 1] set argv [lrange $argv 2 end] } default { break } } if {([llength $argv]<1) && ($noproc==0)} { send_user "usage: kibitz \[args] user \[program ...]\n" send_user " or: kibitz \[args] user@host \[program ...]\n" exit } log_user 0 set timeout -1 set user [lindex $argv 0] if {[string match -r $user]} { send_user "KRUN" ;# this tells user_number 1 that we're running ;# and to prepare for possible error messages set user_number 3 # need to check that it exists first! set user [lindex $argv 1] } else { set user_number [expr 1+(0==[string first - $user])] } # at this point, user_number and user are correctly determined # User who originated kibitz session has user_number == 1 on local machine. # User who is responding to kibitz has user_number == 2. # User who originated kibitz session has user_number == 3 on remote machine. # user 1 invokes kibitz as "kibitz user[@host]" # user 2 invokes kibitz as "kibitz -####" (some pid). # user 3 invokes kibitz as "kibitz -r user". # uncomment for debugging: leaves each user's session in a file: 1, 2 or 3 #exec rm -f $user_number #exp_internal -f $user_number 0 set user2_islocal 1 ;# assume local at first # later move inside following if $user_number == 1 # return true if x is a prefix of xjunk, given that prefixes are only # valid at . delimiters # if !do_if0, skip the whole thing - this is here just to make caller simpler proc is_prefix {do_if0 x xjunk} { if 0!=$do_if0 {return 0} set split [split $xjunk .] for {set i [expr [llength $split]-1]} {$i>=0} {incr i -1} { if {[string match $x [join [lrange $split 0 $i] .]]} {return 1} } return 0 } # get domainname. Unfortunately, on some systems, domainname(1) # returns NIS domainname which is not the internet domainname. proc domainname {} { # open pops stack upon failure set rc [catch {open /etc/resolv.conf r} file] if {$rc==0} { while {-1!=[gets $file buf]} { if 1==[scan $buf "domain %s" name] { close $file return $name } } close $file } # fall back to using domainname if {0==[catch {exec domainname} name]} {return $name} error "could not figure out domainname" } if $user_number==1 { if $noproc==0 { if {[llength $argv]>1} { set pid [eval spawn [lrange $argv 1 end]] } else { # if running as CGI, shell may not be set! set shell /bin/sh catch {set shell $env(SHELL)} set pid [spawn $shell] } set shell $spawn_id } # is user2 remote? regexp (\[^@\]*)@*(.*) $user ignore tmp host set user $tmp if ![string match $host ""] { set h_rc [catch {exec hostname} hostname] set d_rc [catch domainname domainname] if {![is_prefix $h_rc $host $hostname] && ![is_prefix $d_rc $host $hostname.$domainname]} { set user2_islocal 0 } } if !$user2_islocal { if $verbose {send_user "connecting to $host\n"} if ![info exists proxy] { proc whoami {} { global env if {[info exists env(USER)]} {return $env(USER)} if {[info exists env(LOGNAME)]} {return $env(LOGNAME)} if {![catch {exec whoami} user]} {return $user} if {![catch {exec logname} user]} {return $user} # error "can't figure out who you are!" } set proxy [whoami] } spawn rlogin $host -l $proxy -8 set userin $spawn_id set userout $spawn_id catch {set prompt $env(EXPECT_PROMPT)} set timeout 120 expect { assword: { stty -echo send_user "password (for $proxy) on $host: " set old_timeout $timeout; set timeout -1 expect_user -re "(.*)\n" send_user "\n" set timeout $old_timeout send "$expect_out(1,string)\r" # bother resetting echo? exp_continue } incorrect* { send_user "invalid password or account\n" exit } "TERM = *) " { send "\r" exp_continue } timeout { send_user "connection to $host timed out\n" exit } eof { send_user "connection to host failed: $expect_out(buffer)" exit } -re $prompt } if {$verbose} {send_user "starting kibitz on $host\n"} # the kill protects user1 from receiving user3's # prompt if user2 exits via expect's exit. send "$kibitz $kibitz_flags -r $user;kill -9 $$\r" expect { -re "kibitz $kibitz_flags -r $user.*KRUN" {} -re "kibitz $kibitz_flags -r $user.*(kibitz\[^\r\]*)\r" { send_user "unable to start kibitz on $host: \"$expect_out(1,string)\"\n" send_user "try rlogin by hand followed by \"kibitz $user\"\n" exit } timeout { send_user "unable to start kibitz on $host: " set expect_out(buffer) "timed out" set timeout 0; expect -re .+ send_user $expect_out(buffer) exit } } expect { -re ".*\n" { # pass back diagnostics # should really strip out extra cr send_user $expect_out(buffer) exp_continue } KABORT exit default exit KDATA } } } if {$user_number==2} { set pid [string trimleft $user -] } set local_io [expr ($user_number==3)||$user2_islocal] if {$local_io||($user_number==2)} { if {0==[info exists pid]} {set pid [pid]} set userinfile /tmp/exp0.$pid set useroutfile /tmp/exp1.$pid } proc prompt1 {} { return "kibitz[info level].[history nextid]> " } set esc_match {} if {$allow_escape} { set esc_match { $escape_char { send_user "\nto exit kibitz, enter: exit\n" send_user "to suspend kibitz, press appropriate job control sequence\n" send_user "to return to kibitzing, enter: return\n" interpreter send_user "returning to kibitz\n" } } } proc prompt1 {} { return "kibitz[info level].[history nextid]> " } set timeout -1 # kibitzer executes following code if {$user_number==2} { # for readability, swap variables set tmp $userinfile set userinfile $useroutfile set useroutfile $tmp if ![file readable $userinfile] { send_user "Eh? No one is asking you to kibitz.\n" exit -1 } spawn -open [open "|cat $catflags < $userinfile" "r"] set userin $spawn_id spawn -open [open $useroutfile w] set userout $spawn_id # open will hang until other user's cat starts stty -echo raw if {$allow_escape} {send_user "Escape sequence is $escape_printable\r\n"} # While user is reading message, try to delete other fifo catch {exec rm -f $userinfile} eval interact $esc_match \ -output $userout \ -input $userin exit } # only user_numbers 1 and 3 execute remaining code proc abort {} { # KABORT tells user_number 1 that user_number 3 has run into problems # and is exiting, and diagnostics have been returned already if {$::user_number==3} {send_user KABORT} exit } if {$local_io} { proc mkfifo {f} { if 0==[catch {exec mkfifo $f}] return ;# POSIX if 0==[catch {exec mknod $f p}] return # some systems put mknod in wierd places if 0==[catch {exec /usr/etc/mknod $f p}] return ;# Sun if 0==[catch {exec /etc/mknod $f p}] return ;# AIX, Cray puts "Couldn't figure out how to make a fifo - where is mknod?" abort } proc rmfifos {} { global userinfile useroutfile catch {exec rm -f $userinfile $useroutfile} } trap {rmfifos; exit} {SIGINT SIGQUIT SIGTERM} # create 2 fifos to communicate with other user mkfifo $userinfile mkfifo $useroutfile # make sure other user can access despite umask exec chmod 666 $userinfile $useroutfile if {$verbose} {send_user "asking $user to type: kibitz -$pid\n"} # can't use exec since write insists on being run from a tty! set rc [catch { system echo "Can we talk? Run: \"kibitz -$pid\"" | \ write $user $tty } ] if {$rc} {rmfifos;abort} spawn -open [open $useroutfile w] set userout $spawn_id # open will hang until other user's cat starts spawn -open [open "|cat $catflags < $userinfile" "r"] set userin $spawn_id catch {exec rm $userinfile} } stty -echo raw if {$user_number==3} { send_user "KDATA" ;# this tells user_number 1 to send data interact { -output $userout -input $userin eof { wait -i $userin return -tcl } -output $user_spawn_id } } else { if {$allow_escape} {send_user "Escape sequence is $escape_printable\r\n"} if {$noproc} { interact { -output $userout -input $userin eof {wait -i $userin; return} -output $user_spawn_id } } else { eval interact $esc_match { -output $shell \ -input $userin eof { wait -i $userin close -i $shell return } -output $shell \ -input $shell eof { close -i $userout wait -i $userout return } -output "$user_spawn_id $userout" } wait -i $shell } } if {$local_io} rmfifos 07070100057408000081ed00000000000000000000000151a4006b00001e1a0000010000010031ffffffffffffffff0000001e00000000root/usr/local/bin/autoexpect#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # Name: autoexpect - generate an Expect script from watching a session # # Description: # # Given a program name, autoexpect will run that program. Otherwise # autoexpect will start a shell. Interact as desired. When done, exit # the program or shell. Autoexpect will create a script that reproduces # your interactions. By default, the script is named script.exp. # See the man page for more info. # # Author: Don Libes, NIST # Date: June 30 1995 # Version: 1.4b set filename "script.exp" set verbose 1 set conservative 0 set promptmode 0 set option_keys "" proc check_for_following {type} { if {![llength [uplevel set argv]]} { puts "autoexpect: [uplevel set flag] requires following $type" exit 1 } } while {[llength $argv]>0} { set flag [lindex $argv 0] if {0==[regexp "^-" $flag]} break set argv [lrange $argv 1 end] switch -- $flag \ "-c" { set conservative 1 } "-C" { check_for_following character lappend option_keys [lindex $argv 0] ctoggle set argv [lrange $argv 1 end] } "-p" { set promptmode 1 } "-P" { check_for_following character lappend option_keys [lindex $argv 0] ptoggle set argv [lrange $argv 1 end] } "-Q" { check_for_following character lappend option_keys [lindex $argv 0] quote set argv [lrange $argv 1 end] } "-f" { check_for_following filename set filename [lindex $argv 0] set argv [lrange $argv 1 end] } "-quiet" { set verbose 0 } default { break } } ############################################################# # Variables Descriptions ############################################################# # userbuf buffered characters from user # procbuf buffered characters from process # lastkey last key pressed by user # if undefined, last key came from process # echoing if the process is echoing ############################################################# # Handle a character that came from user input (i.e., the keyboard) proc input {c} { global userbuf lastkey send -- $c append userbuf $lastkey set lastkey $c } # Handle a null character from the keyboard proc input_null {} { global lastkey userbuf procbuf echoing send -null if {$lastkey == ""} { if {$echoing} { sendcmd "$userbuf" } if {$procbuf != ""} { expcmd "$procbuf" } } else { sendcmd "$userbuf" if {$echoing} { expcmd "$procbuf" sendcmd "$lastkey" } } cmd "send -null" set userbuf "" set procbuf "" set lastkey "" set echoing 0 } # Handle a character that came from the process proc output {s} { global lastkey procbuf userbuf echoing send_user -raw -- $s if {$lastkey == ""} { if {!$echoing} { append procbuf $s } else { sendcmd "$userbuf" expcmd "$procbuf" set echoing 0 set userbuf "" set procbuf $s } return } regexp (.)(.*) $s dummy c tail if {$c == $lastkey} { if {$echoing} { append userbuf $lastkey set lastkey "" } else { if {$procbuf != ""} { expcmd "$procbuf" set procbuf "" } set echoing 1 } append procbuf $s if {[string length $tail]} { sendcmd "$userbuf$lastkey" set userbuf "" set lastkey "" set echoing 0 } } else { if {!$echoing} { expcmd "$procbuf" } sendcmd "$userbuf$lastkey" set procbuf $s set userbuf "" set lastkey "" set echoing 0 } } # rewrite raw strings so that can appear as source code but still reproduce # themselves. proc expand {s} { regsub -all "\\\\" $s "\\\\\\\\" s regsub -all "\r" $s "\\r" s regsub -all "\"" $s "\\\"" s regsub -all "\\\[" $s "\\\[" s regsub -all "\\\]" $s "\\\]" s regsub -all "\\\$" $s "\\\$" s return $s } # generate an expect command proc expcmd {s} { global promptmode if {$promptmode} { regexp ".*\[\r\n]+(.*)" $s dummy s } cmd "expect -exact \"[expand $s]\"" } # generate a send command proc sendcmd {s} { global send_style conservative if {$conservative} { cmd "sleep .1" } cmd "send$send_style -- \"[expand $s]\"" } # generate any command proc cmd {s} { global fd puts $fd "$s" } proc verbose_send_user {s} { global verbose if {$verbose} { send_user -- $s } } proc ctoggle {} { global conservative send_style if {$conservative} { cmd "# conservative mode off - adding no delays" verbose_send_user "conservative mode off\n" set conservative 0 set send_style "" } else { cmd "# prompt mode on - adding delays" verbose_send_user "conservative mode on\n" set conservative 1 set send_style " -s" } } proc ptoggle {} { global promptmode if {$promptmode} { cmd "# prompt mode off - now looking for complete output" verbose_send_user "prompt mode off\n" set promptmode 0 } else { cmd "# prompt mode on - now looking only for prompts" verbose_send_user "prompt mode on\n" set promptmode 1 } } # quote the next character from the user proc quote {} { expect_user -re . send -- $expect_out(buffer) } if {[catch {set fd [open $filename w]} msg]} { puts $msg exit } exec chmod +x $filename verbose_send_user "autoexpect started, file is $filename\n" # calculate a reasonable #! line set expectpath /usr/local/bin ;# prepare default foreach dir [split $env(PATH) :] { ;# now look for real location if {[file executable $dir/expect] && ![file isdirectory $dir/expect]} { set expectpath $dir break } } cmd "#![set expectpath]/expect -f # # This Expect script was generated by autoexpect on [timestamp -format %c] # Expect and autoexpect were both written by Don Libes, NIST." cmd {# # Note that autoexpect does not guarantee a working script. It # necessarily has to guess about certain things. Two reasons a script # might fail are: # # 1) timing - A surprising number of programs (rn, ksh, zsh, telnet, # etc.) and devices discard or ignore keystrokes that arrive "too # quickly" after prompts. If you find your new script hanging up at # one spot, try adding a short sleep just before the previous send. # Setting "force_conservative" to 1 (see below) makes Expect do this # automatically - pausing briefly before sending each character. This # pacifies every program I know of. The -c flag makes the script do # this in the first place. The -C flag allows you to define a # character to toggle this mode off and on. set force_conservative 0 ;# set to 1 to force conservative mode even if ;# script wasn't run conservatively originally if {$force_conservative} { set send_slow {1 .1} proc send {ignore arg} { sleep .1 exp_send -s -- $arg } } # # 2) differing output - Some programs produce different output each time # they run. The "date" command is an obvious example. Another is # ftp, if it produces throughput statistics at the end of a file # transfer. If this causes a problem, delete these patterns or replace # them with wildcards. An alternative is to use the -p flag (for # "prompt") which makes Expect only look for the last line of output # (i.e., the prompt). The -P flag allows you to define a character to # toggle this mode off and on. # # Read the man page for more info. # # -Don } cmd "set timeout -1" if {$conservative} { set send_style " -s" cmd "set send_slow {1 .1}" } else { set send_style "" } if {[llength $argv]>0} { eval spawn -noecho $argv cmd "spawn $argv" } else { spawn -noecho $env(SHELL) cmd "spawn \$env(SHELL)" } cmd "match_max 100000" set lastkey "" set procbuf "" set userbuf "" set echoing 0 remove_nulls 0 eval interact $option_keys { -re . { input $interact_out(0,string) } -o -re .+ { output $interact_out(0,string) } eof { cmd "expect eof" return } } close $fd verbose_send_user "autoexpect done, file is $filename\n" 0707010005741b000081ed00000000000000000000000151a4006b0000081b0000010000010031ffffffffffffffff0000001b00000000root/usr/local/bin/weather#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # weather - Expect script to get the weather (courtesy University of Michigan) # Don Libes # Version 1.10 # local weather is retrieved if no argument # argument is the National Weather Service designation for an area # I.e., WBC = Washington DC (oh yeah, that's obvious) # Notes from Larry Virden about the new host, # rainmaker.wunderground.com: "[the] new site requires the # machine doing the request be located in reverse dns lookup # or it refuses to provide data." This appears to be a blind error # condition on the part of rainmaker. exp_version -exit 5.0 if {$argc>0} {set code $argv} else {set code "WBC"} proc timedout {} { send_user "Weather server timed out. Try again later when weather server is not so busy.\n" exit 1 } set timeout 60 set env(TERM) vt100 ;# actual value doesn't matter, just has to be set spawn telnet rainmaker.wunderground.com 3000 while {1} { expect timeout { send_user "failed to contact weather server\n" exit } "Press Return to continue*" { # this prompt used sometimes, eg, upon opening connection send "\r" } "Press Return for menu*" { # this prompt used sometimes, eg, upon opening connection send "\r" } "M to display main menu*" { # sometimes ask this if there is a weather watch in effect send "M\r" } "Change scrolling to screen*Selection:" { break } eof { send_user "failed to telnet to weather server\n" exit } } send "C\r" expect timeout timedout "Selection:" send "4\r" expect timeout timedout "Selection:" send "1\r" expect timeout timedout "Selection:" send "1\r" expect timeout timedout "city code:" send "$code\r" expect $code ;# discard this while {1} { expect timeout { timedout } "Press Return to continue*:*" { send "\r" } "Press Return to display statement, M for menu:*" { send "\r" } -re "(.*)CITY FORECAST MENU.*Selection:" { break } } send "X\r" expect 07070100057418000081ed00000000000000000000000151a4006b00002c750000010000010031ffffffffffffffff0000001e00000000root/usr/local/bin/tknewsbiff#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect package require Tk # Name: tknewsbiff # Author: Don Libes # Version: 1.2b # Written: January 1, 1994 # Description: When unread news appears in your favorite groups, pop up # a little window describing which newsgroups and how many articles. # Go away when articles are no longer unread. # Optionally, run a UNIX program (to play a sound, read news, etc.) # Default config file in ~/.tknewsbiff[-host] # These two procedures are needed because Tk provides no command to undo # the "wm unmap" command. You must remember whether it was iconic or not. # PUBLIC proc unmapwindow {} { global _window_open switch [wm state .] \ iconic { set _window_open 0 } normal { set _window_open 1 } wm withdraw . } unmapwindow # window state starts out as "iconic" before it is mapped, Tk bug? # make sure that when we map it, it will be open (i.e., "normal") set _window_open 1 # PUBLIC proc mapwindow {} { global _window_open if {$_window_open} { wm deiconify . } else { wm iconify . } } proc _abort {msg} { global argv0 puts "$argv0: $msg" exit 1 } if {[info exists env(DOTDIR)]} { set home $env(DOTDIR) } else { set home [glob ~] } set delay 60 set width 27 set height 10 set _default_config_file $home/.tknewsbiff set _config_file $_default_config_file set _default_server news set server $_default_server set server_timeout 60 log_user 0 listbox .list -yscroll ".scrollbar set" -font "*-m-*" -setgrid 1 scrollbar .scrollbar -command ".list yview" -relief raised .list config -highlightthickness 0 -border 0 .scrollbar config -highlightthickness 0 pack .scrollbar -side left -fill y pack .list -side left -fill both -expand 1 while {[llength $argv]>0} { set arg [lindex $argv 0] if {[file readable $arg]} { if {0==[string compare active [file tail $arg]]} { set active_file $arg set argv [lrange $argv 1 end] } else { # must be a config file set _config_file $arg set argv [lrange $argv 1 end] } } elseif {[file readable $_config_file-$arg]} { # maybe it's a hostname suffix for a newsrc file? set _config_file $_default_config_file-$arg set argv [lrange $argv 1 end] } else { # maybe it's just a hostname for regular newsrc file? set server $arg set argv [lrange $argv 1 end] } } proc _read_config_file {} { global _config_file argv0 watch_list ignore_list # remove previous user-provided proc in case user simply # deleted it from config file proc user {} {} set watch_list {} set ignore_list {} if {[file exists $_config_file]} { # uplevel allows user to set global variables if {[catch {uplevel source $_config_file} msg]} { _abort "error reading $_config_file\n$msg" } } if {[llength $watch_list]==0} { watch * } } # PUBLIC proc watch {args} { global watch_list lappend watch_list $args } # PUBLIC proc ignore {ng} { global ignore_list lappend ignore_list $ng } # get time and server _read_config_file # if user didn't set newsrc, try ~/.newsrc-server convention. # if that fails, fall back to just plain ~/.newsrc if {![info exists newsrc]} { set newsrc $home/.newsrc-$server if {![file readable $newsrc]} { set newsrc $home/.newsrc if {![file readable $newsrc]} { _abort "cannot tell what newgroups you read found neither $home/.newsrc-$server nor $home/.newsrc" } } } # PRIVATE proc _read_newsrc {} { global db newsrc if {[catch {set file [open $newsrc]} msg]} { _abort $msg } while {-1 != [gets $file buf]} { if {[regexp "!" $buf]} continue if {[regexp "(\[^:]*):.*\[-, ](\[0-9]+)" $buf dummy ng seen]} { set db($ng,seen) $seen } # only way 2nd regexp can fail is on lines # that have a : but no number } close $file } proc _unknown_host {} { global server _default_server if {0==[string compare $_default_server $server]} { puts "tknewsbiff: default server <$server> is not known" } else { puts "tknewsbiff: server <$server> is not known" } puts "Give tknewsbiff an argument - either the name of your news server or active file. I.e., tknewsbiff news.nist.gov tknewsbiff /usr/news/lib/active If you have a correctly defined configuration file (.tknewsbiff), an argument is not required. See the man page for more info." exit 1 } # read active file # PRIVATE proc _read_active {} { global db server active_list active_file upvar #0 server_timeout timeout set active_list {} if {[info exists active_file]} { spawn -open [open $active_file] } else { spawn telnet $server nntp expect { "20*\n" { # should get 200 or 201 } "NNTP server*\n" { puts "tknewsbiff: unexpected response from server:" puts "$expect_out(buffer)" return 1 } "unknown host" { _unknown_host } timeout { close wait return 1 } eof { # loadav too high probably wait return 1 } } exp_send "list\r" expect "list\r\n" ;# ignore echo of "list" command expect -re "215\[^\n]*\n" ;# skip "Newsgroups in form" line } expect { -re "(\[^ ]*) 0*(\[^ ]+) \[^\n]*\n" { set ng $expect_out(1,string) set hi $expect_out(2,string) lappend active_list $ng set db($ng,hi) $hi exp_continue } ".\r\n" close ".\r\r\n" close timeout close eof } wait return 0 } # test in various ways for good newsgroups # return 1 if good, 0 if not good # PRIVATE proc _isgood {ng threshold} { global db seen_list ignore_list # skip if we don't subscribe to it if {![info exists db($ng,seen)]} {return 0} # skip if the threshold isn't exceeded if {$db($ng,hi) - $db($ng,seen) < $threshold} {return 0} # skip if it matches an ignore command foreach igpat $ignore_list { if {[string match $igpat $ng]} {return 0} } # skip if we've seen it before if {[lsearch -exact $seen_list $ng]!=-1} {return 0} # passed all tests, so remember that we've seen it lappend seen_list $ng return 1 } # return 1 if not seen on previous turn # PRIVATE proc _isnew {ng} { global previous_seen_list if {[lsearch -exact $previous_seen_list $ng]==-1} { return 1 } else { return 0 } } # schedule display of newsgroup in global variable "newsgroup" # PUBLIC proc display {} { global display_list newsgroup lappend display_list $newsgroup } # PRIVATE proc _update_ngs {} { global watch_list active_list newsgroup foreach watch $watch_list { set threshold 1 set display display set new {} set ngpat [lindex $watch 0] set watch [lrange $watch 1 end] while {[llength $watch] > 0} { switch -- [lindex $watch 0] \ -threshold { set threshold [lindex $watch 1] set watch [lrange $watch 2 end] } -display { set display [lindex $watch 1] set watch [lrange $watch 2 end] } -new { set new [lindex $watch 1] set watch [lrange $watch 2 end] } default { _abort "watch: expecting -threshold -display or -new but found: [lindex $watch 0]" } } foreach ng $active_list { if {[string match $ngpat $ng]} { if {[_isgood $ng $threshold]} { if {[llength $display]} { set newsgroup $ng uplevel $display } if {[_isnew $ng]} { if {[llength $new]} { set newsgroup $ng uplevel $new } } } } } } } # initialize display set min_reasonable_width 8 wm minsize . $min_reasonable_width 1 wm maxsize . 999 999 if {0 == [info exists active_file] && 0 != [string compare $server $_default_server]} { wm title . "news@$server" wm iconname . "news@$server" } # PRIVATE proc _update_window {} { global server display_list height width min_reasonable_width if {0 == [llength $display_list]} { unmapwindow return } # make height correspond to length of display_list or # user's requested max height, whichever is smaller if {[llength $display_list] < $height} { set current_height [llength $display_list] } else { set current_height $height } # force reasonable min width if {$width < $min_reasonable_width} { set width $min_reasonable_width } wm geometry . ${width}x$current_height wm maxsize . 999 [llength $display_list] _display_ngs $width if {[string compare [wm state .] withdrawn]==0} { mapwindow } } # actually write all newsgroups to the window # PRIVATE proc _display_ngs {width} { global db display_list set str_width [expr $width-7] .list delete 0 end foreach ng $display_list { .list insert end [format \ "%-$str_width.${str_width}s %5d" $ng \ [expr $db($ng,hi) - $db($ng,seen)]] } } # PUBLIC proc help {} { catch {destroy .help} toplevel .help message .help.text -aspect 400 -text \ {tknewsbiff - written by Don Libes, NIST, 1/1/94 tknewsbiff displays newsgroups with unread articles based on your .newsrc\ and your .tknewsbiff files.\ If no articles are unread, no window is displayed. Click mouse button 1 for this help,\ button 2 to force display to query news server immediately,\ and button 3 to remove window from screen until the next update. Example .tknewsbiff file:} message .help.sample -font "*-r-normal-*-m-*" \ -relief raised -aspect 10000 -text \ {set width 30 ;# max width, defaults to 27 set height 17 ;# max height, defaults to 10 set delay 120 ;# in seconds, defaults to 60 set server news.nist.gov ;# defaults to "news" set server_timeout 60 ;# in seconds, defaults to 60 set newsrc ~/.newsrc ;# defaults to ~/.newsrc ;# after trying ~/.newsrc-$server # Groups to watch. watch comp.lang.tcl watch dc.dining -new "play yumyum" watch nist.security -new "exec red-alert" watch nist.* watch dc.general -threshold 5 watch *.sources.* -threshold 20 watch alt.howard-stern -threshold 100 -new "play robin" # Groups to ignore (but which match patterns above). # Note: newsgroups that you don't read are ignored automatically. ignore *.d ignore nist.security ignore nist.sport # Change background color of newsgroup list .list config -bg honeydew1 # Play a sound file proc play {sound} { exec play /usr/local/lib/sounds/$sound.au }} message .help.end -aspect 10000 -text \ "Other customizations are possible. See man page for more information." button .help.ok -text "ok" -command {destroy .help} pack .help.text pack .help.sample pack .help.end -anchor w pack .help.ok -fill x -padx 2 -pady 2 } spawn cat -u; set _cat_spawn_id $spawn_id set _update_flag 0 # PUBLIC proc update-now {} { global _update_flag _cat_spawn_id if {$_update_flag} return ;# already set, do nothing set _update_flag 1 exp_send -i $_cat_spawn_id "\r" } bind .list <1> help bind .list <2> update-now bind .list <3> unmapwindow bind .list { scan [wm geometry .] "%%dx%%d" w h _display_ngs $w } # PRIVATE proc _sleep {timeout} { global _cat_spawn_id _update_flag set _update_flag 0 # restore to idle cursor .list config -cursor ""; update # sleep for a little while, subject to click from "update" button expect -i $_cat_spawn_id -re "...." ;# two crlfs # change to busy cursor .list config -cursor watch; update } set previous_seen_list {} set seen_list {} # PRIVATE proc _init_ngs {} { global display_list db global seen_list previous_seen_list set previous_seen_list $seen_list set display_list {} set seen_list {} catch {unset db} } for {} {1} {_sleep $delay} { _init_ngs _read_newsrc if {[_read_active]} continue _read_config_file _update_ngs user _update_window } 07070100057413000081ed00000000000000000000000151a4006b000011c70000010000010031ffffffffffffffff0000001c00000000root/usr/local/bin/passmass#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # passmass: change password on many machines # Synopsis: passmass host1 host2 host3 .... # Don Libes - March 11, 1991 # Description: Change passwords on the named machines. # # See passmass.man for further info. exp_version -exit 5.0 if {$argc==0} { send_user "usage: $argv0 host1 host2 host3 . . .\n" exit } expect_before -i $user_spawn_id \003 exit proc badhost {host emsg} { global badhosts send_user "\r\n\007password not changed on $host - $emsg\n\n" if {0==[llength $badhosts]} { set badhosts $host } else { set badhosts [concat $badhosts $host] } } # set defaults set login "rlogin" set program "passwd" set user [exec whoami] set su 0 set timeout -1 stty -echo if {!$su} { send_user "old password: " expect_user -re "(.*)\n" send_user "\n" set password(old) $expect_out(1,string) set password(login) $expect_out(1,string) send_user "new password: " expect_user -re "(.*)\n" send_user "\n" set password(new) $expect_out(1,string) send_user "retype new password: " expect_user -re "(.*)\n" set password(newcheck) $expect_out(1,string) send_user "\n" } else { send_user "login password: " expect_user -re "(.*)\n" send_user "\n" set password(login) $expect_out(1,string) send_user "root password: " expect_user -re "(.*)\n" send_user "\n" set password(old) $expect_out(1,string) send_user "new password: " expect_user -re "(.*)\n" send_user "\n" set password(new) $expect_out(1,string) send_user "retype new password: " expect_user -re "(.*)\n" set password(newcheck) $expect_out(1,string) send_user "\n" } stty echo trap exit SIGINT if ![string match $password(new) $password(newcheck)] { send_user "mismatch - password unchanged\n" exit } set timeout -1 set badhosts {} for {set i 0} {$i<$argc} {incr i} { set arg [lindex $argv $i] switch -- $arg "-user" { incr i set user [lindex $argv $i] continue } "-prompt" { incr i set prompt [lindex $argv $i] continue } "-rlogin" { set login "rlogin" continue } "-slogin" { set login "slogin" continue } "-ssh" { set login "ssh" continue } "-telnet" { set login "telnet" continue } "-program" { incr i set program [lindex $argv $i] continue } "-timeout" { incr i set timeout [lindex $argv $i] continue } "-su" { incr i set su [lindex $argv $i] continue } set host $arg if {[string match $login "rlogin"]} { set pid [spawn rlogin $host -l $user] } elseif {[string match $login "slogin"]} { set pid [spawn slogin $host -l $user] } elseif {[string match $login "ssh"]} { set pid [spawn ssh $host -l $user] } else { set pid [spawn telnet $host] expect -nocase -re "(login|username):.*" { send "$user\r" } } if ![info exists prompt] { if {[string match $user "root"]} { set prompt "# " } else { set prompt "(%|\\\$|#) " } } set logged_in 0 while {1} { expect -nocase "password*" { send "$password(login)\r" } eof { badhost $host "spawn failed" break } timeout { badhost $host "could not log in (or unrecognized prompt)" exec kill $pid expect eof break } -re "incorrect|invalid" { badhost $host "bad password or login" exec kill $pid expect eof break } -re $prompt { set logged_in 1 break } } if (!$logged_in) { wait continue } if ($su) { send "su -\r" expect -nocase "password:" send "$password(old)\r" expect "# " send "$program root\r" } else { send "$program\r" } expect -nocase -re "(old|existing login) password:.*" { send "$password(old)\r" expect -nocase "sorry*" { badhost $host "old password is bad?" continue } -nocase "password:" } -nocase -re "new password:" { # got prompt, fall through } timeout { badhost $host "could not recognize prompt for password" continue } send "$password(new)\r" expect -re "not changed|unchanged" { badhost $host "new password is bad?" continue } -nocase -re "(password|verification|verify|again):.*" send "$password(new)\r" expect -nocase -re "(not changed|incorrect|choose new).*" { badhost $host "password is bad?" continue } -re "$prompt" send_user "\n" close wait } if {[llength $badhosts]} { send_user "\nfailed to set password on $badhosts\n" } 07070100057410000081ed00000000000000000000000151a4006b00000a3b0000010000010031ffffffffffffffff0000001c00000000root/usr/local/bin/lpunlock#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # This script unhangs a printer which claims it is "waiting for lock". # Written by Don Libes. Based on English instructions from Scott Paisley. # lpunlock figures out if the printer is on a server, and if so which, # by looking in the local printcap file. (You can override this by # supplying a server name as an additional argument.) It then rlogins # to the server, recreates the device and resets the queue via lpc. # assumes user has root privs on remote host via /.rhosts # assumes printer is name of device on remote system proc usage {} { send_user "usage: lpunlock \[\]\n" send_user "example: lpunlock lw-isg durer\n" exit } if {$argc==0} usage set printer [lindex $argv 0] set client [exec hostname] if {$argc == 1} { # if no arg2, look in local printcap for info spawn ed /etc/printcap expect "\n" ;# discard character count send "/$printer/\r" for {} {1} {} { expect -re ".*:rm=(\[^:]*):.*\r\n" { set server $expect_out(1,string) break } "\r\n*\\\r\n" { ;# look at next line of entry send "\r" } "\r\n*\n" { ;# no more lines of entry - give up set server $client break } } } else { if {$argc == 2} { set server [lindex $argv 1] } else usage } set whoami [exec whoami] if {[string match $server $client] && [string match $whoami "root"]} { spawn csh expect "# " } else { # login to the print server as root. # Set timeout high because login is slow. set timeout 60 spawn rlogin $server -l root expect timeout exit \ eof exit \ "Password*" { send_user "\ncouldn't login to $server as root\n" exit } "1#*" set timeout 10 } # run lpc and 'stop printer' send lpc\r ; expect "lpc>*" send stop $printer\r ; expect "unknown*" exit \ "disabled*lpc>*" # exit lpc and cd /dev send quit\r ; expect "#*" send cd /dev\r ; expect "#*" # figure out major/minor device numbers send ls -l /dev/$printer\r ; expect timeout { send_user "\nbad device - couldn't get major/minor numbers\n"; exit } "crw*#*" scan $expect_out(buffer) "ls -l %*s %*s 1 root %d, %d" major minor # delete the lock and the printer device itself send rm /var/spool/$printer/lock /dev/$printer\r ; expect #* # recreate the printer device send mknod $printer c $major $minor\r ; expect #* # run lpc and 'start printer' send lpc\r ; expect lpc>* send start $printer\r ; expect started*lpc>* send quit\r ; expect #* # logout send exit\r ; expect eof send_user Printer unlocked and restarted.\n 07070100057411000081ed00000000000000000000000151a4006b0000150c0000010000010031ffffffffffffffff0000001c00000000root/usr/local/bin/mkpasswd#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # mkpasswd - make a password, if username given, set it. # Author: Don Libes, NIST # defaults set length 9 set minnum 2 set minlower 2 set minupper 2 set minspecial 1 set verbose 0 set distribute 0 if {[file executable /bin/nispasswd]} { set defaultprog /bin/nispasswd } elseif {[file executable /bin/yppasswd]} { set defaultprog /bin/yppasswd } elseif {[file executable /bin/passwd]} { set defaultprog /bin/passwd } else { set defaultprog passwd } set prog $defaultprog while {[llength $argv]>0} { set flag [lindex $argv 0] switch -- $flag \ "-l" { set length [lindex $argv 1] set argv [lrange $argv 2 end] } "-d" { set minnum [lindex $argv 1] set argv [lrange $argv 2 end] } "-c" { set minlower [lindex $argv 1] set argv [lrange $argv 2 end] } "-C" { set minupper [lindex $argv 1] set argv [lrange $argv 2 end] } "-s" { set minspecial [lindex $argv 1] set argv [lrange $argv 2 end] } "-v" { set verbose 1 set argv [lrange $argv 1 end] } "-p" { set prog [lindex $argv 1] set argv [lrange $argv 2 end] } "-2" { set distribute 1 set argv [lrange $argv 1 end] } default { set user [lindex $argv 0] set argv [lrange $argv 1 end] break } } if {[llength $argv]} { puts "usage: mkpasswd \[args] \[user]" puts " where arguments are:" puts " -l # (length of password, default = $length)" puts " -d # (min # of digits, default = $minnum)" puts " -c # (min # of lowercase chars, default = $minlower)" puts " -C # (min # of uppercase chars, default = $minupper)" puts " -s # (min # of special chars, default = $minspecial)" puts " -v (verbose, show passwd interaction)" puts " -p prog (program to set password, default = $defaultprog)" exit 1 } if {$minnum + $minlower + $minupper + $minspecial > $length} { puts "impossible to generate $length-character password\ with $minnum numbers, $minlower lowercase letters,\ $minupper uppercase letters and\ $minspecial special characters." exit 1 } # if there is any underspecification, use additional lowercase letters set minlower [expr {$length - ($minnum + $minupper + $minspecial)}] set lpass "" ;# password chars typed by left hand set rpass "" ;# password chars typed by right hand # insert char into password at a random position, thereby spreading # the different kinds of characters throughout the password proc insert {pvar char} { upvar $pvar p set p [linsert $p [rand [expr {(1+[llength $p])}]] $char] } proc rand {m} { expr {int($m*rand())} } # choose left or right starting hand set initially_left [set isleft [rand 2]] # given a size, distribute between left and right hands # taking into account where we left off proc psplit {max lvar rvar} { upvar $lvar left $rvar right global isleft if {$isleft} { set right [expr $max/2] set left [expr $max-$right] set isleft [expr !($max%2)] } else { set left [expr $max/2] set right [expr $max-$left] set isleft [expr $max%2] } } if {$distribute} { set lkeys {q w e r t a s d f g z x c v b} set rkeys {y u i o p h j k l n m} set lnums {1 2 3 4 5 6} set rnums {7 8 9 0} set lspec {! @ # \$ %} set rspec {^ & * ( ) - = _ + [ ] "{" "}" \\ | ; : ' \" < > , . ? /} } else { set lkeys {a b c d e f g h i j k l m n o p q r s t u v w x y z} set rkeys {a b c d e f g h i j k l m n o p q r s t u v w x y z} set lnums {0 1 2 3 4 5 6 7 8 9} set rnums {0 1 2 3 4 5 6 7 8 9} set lspec {! @ # \$ % ~ ^ & * ( ) - = _ + [ ] "{" "}" \\ | ; : ' \" < > , . ? /} set rspec {! @ # \$ % ~ ^ & * ( ) - = _ + [ ] "{" "}" \\ | ; : ' \" < > , . ? /} } set lkeys_length [llength $lkeys] set rkeys_length [llength $rkeys] set lnums_length [llength $lnums] set rnums_length [llength $rnums] set lspec_length [llength $lspec] set rspec_length [llength $rspec] psplit $minnum left right for {set i 0} {$i<$left} {incr i} { insert lpass [lindex $lnums [rand $lnums_length]] } for {set i 0} {$i<$right} {incr i} { insert rpass [lindex $rnums [rand $rnums_length]] } psplit $minlower left right for {set i 0} {$i<$left} {incr i} { insert lpass [lindex $lkeys [rand $lkeys_length]] } for {set i 0} {$i<$right} {incr i} { insert rpass [lindex $rkeys [rand $rkeys_length]] } psplit $minupper left right for {set i 0} {$i<$left} {incr i} { insert lpass [string toupper [lindex $lkeys [rand $lkeys_length]]] } for {set i 0} {$i<$right} {incr i} { insert rpass [string toupper [lindex $rkeys [rand $rkeys_length]]] } psplit $minspecial left right for {set i 0} {$i<$left} {incr i} { insert lpass [lindex $lspec [rand $lspec_length]] } for {set i 0} {$i<$right} {incr i} { insert rpass [lindex $rspec [rand $rspec_length]] } # merge results together foreach l $lpass r $rpass { if {$initially_left} { append password $l $r } else { append password $r $l } } if {[info exists user]} { if {!$verbose} { log_user 0 } spawn $prog $user expect { "assword*:" { # some systems say "Password (again):" send "$password\r" exp_continue } } # if user isn't watching, check status if {!$verbose} { if {[lindex [wait] 3]} { puts -nonewline "$expect_out(buffer)" exit 1 } } if {$verbose} { puts -nonewline "password for $user is " } } puts "$password" 0707010005741a000081ed00000000000000000000000151a4006b000002800000010000010031ffffffffffffffff0000001c00000000root/usr/local/bin/unbuffer#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # -*- tcl -*- # Description: unbuffer stdout of a program # Author: Don Libes, NIST if {[string compare [lindex $argv 0] "-p"] == 0} { # pipeline set stty_init "-echo" eval [list spawn -noecho] [lrange $argv 1 end] close_on_eof -i $user_spawn_id 0 interact { eof { # flush remaining output from child expect -timeout 1 -re .+ return } } } else { set stty_init "-opost" set timeout -1 eval [list spawn -noecho] $argv expect exit [lindex [wait] 3] } 07070100057415000081ed00000000000000000000000151a4006b000001f50000010000010031ffffffffffffffff0000001e00000000root/usr/local/bin/rlogin-cwd#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} package require Expect # rlogin-cwd - rlogin but with same directory # # You can extend this idea to save any arbitrary information across rlogin # Don Libes - Oct 17, 1991. set prompt "(%|#|\\$) $" ;# default prompt catch {set prompt $env(EXPECT_PROMPT)} eval spawn rlogin $argv set timeout 60 expect eof exit timeout {send_user "timed out\n"; exit} -re $prompt send "cd [pwd]\r" interact 07070100057423000041ed00000000000000000000000351a40071000000000000010000010031ffffffffffffffff0000001300000000root/usr/local/lib07070100057424000041ed00000000000000000000000251a40071000000000000010000010031ffffffffffffffff0000001e00000000root/usr/local/lib/expect5.4507070100057425000081ed00000000000000000000000151a4006a0004ef600000010000010031ffffffffffffffff0000002f00000000root/usr/local/lib/expect5.45/libexpect5.45.soELF+@èà@8@ãÔãÔãØãØ6lè考’p §Ø §èžžh2˜ ­@ oÿýøª¤oÿÿþIHoÿÿÿoÿÿù mðL`90 p'p7oÿÿû``+ç{y !#$%&(+-.012689:<>?ACDEGIJKNOPTUWXYZ[^_abdefijmnoprsuxyz{|~ƒ„†ˆ‰ŠŽ‘’”•˜™›œŸ¡¢¤¥§¨©ª¬­®°³µ¶·¹º»¼¿ÀÁÂÃÅÆÇÈÊËÌÎÐÑÔÕרÙÛÜÝâãåæçèéëíîïòô÷øùúûüÿ     !"#%&'(*,/026789:=@ABCEFGIKLNPSTVWZ[\^_`acehijlnoqrstvw  ")*,/345;=@BFHLMQRSV\]`cghklqtvw}€‚…‡‹Œ“–—šž £¦«¯±²´¸½¾ÄÉÍÏÒÓÖÚÞßàáäêìðñóõöýþ $)+-.1345;<>?DHJMOQRUXY]bdfgkmpux °°T  £00 Yø¬+ »èP9@H £x˜S œ°^ §øk E` $| •h̄Ȓ ‡¨8¥ ¥¸ · §Ø¿Ä -ˆÌÎøÚ Š èäë ê€Hÿè  ˜X„'- ST9$EàONˆ` ˜øŒq (Œ~ üè0‘ ² ´£© PL½  xpÍ ¯ ´Û ¹pPî »xTüNxè ¥,. æÐ; SlÜG ÂpR` H<r Œà0}ˆˆ’ ¯ðL¥ ‡øœ¸¿ ÁpÎ 28Xá 48,ð [Àtý Œ˜`  ðP È@! ¬è´Þ- f x> N ß dd àLyNà˜… …h0 ò8¸ž …°<© ¹T¼ ÿ@ìÉ Ÿ(í0è O $ áH„/ ‹X ;A ˆèXait ë°4 †h‘ £xô«´ X0Ç øLÙàˆñ  èP Œ0@ œÐD)0 ‰x=ÐLR ZHTdðpw ª<Àƒ £4 › ÒLª° ·ÀP½ ê DÎ ˆÝä ¸˜Pöà š *1 ±XdALQ\c Ððüox c@\… ¯`x£ ®HÀ­  4À Œ `Î Z¸ ãï ‡(x  ø ¹ØP%ð5; å HL ¯ðX[ ð m ~  <• $¸¡ §è§ ¸(T¹ÀÅ ‰°Ù ŸTíù ¿ø|° \H$4DKÀYam žL’ é0,£ c¸l± ³Ô ÁÉÏ Dè@Û Hhð ¦DÌý   «Ü " < 6 œ Cì O TŒ b i ¶èP( y  Ž éÈ ¢ Ò ˆ « ²Ox ¾ à  Ø Ý é îNp  YH˜ Ü  `h 0 D âè0 W WØÀ fØ v WhX ‡ ´° šOÐ$M « d@ð ¸ ³°P È ¸t Üø ó û b „  Îx !  5NŒ @ H i\ [ ´à| m rH „  š ¡ « ² ƘT Ä ¶xT Ôð å Àt ö û B ¤ N $  2 7 /ð, ? 4À  T Y a èHÌ n Càìp y } ãÔ „ X˜° ‘N€ Ÿ šÀ´ ¯ ;(¸ º Æ€ Ì Ü çèD ë `À ù äxÐ  žØ4 è 5 [à B ë(, Q X ðà< m å`| ƒ °`4 ™ …p £ È ¹ ïh Ë ²`p Ý \0 í i0P ü ‡P@ XL  Œˆ<+ DãØZ †¬f žpP‘ ã < f§Oȯ ®ˆT éx0ÐÌà †˜tî Œhý HÔ ‰X' êø0:A ŽXèX\ 5x\h ®øPz ¶d()‹ ¤ˆx—  Èà|­ØÀ ¨Dâ 78€ø ±Øp  :t XØX/6> ·PTKàÊR „ÀiÈy èpTOô‰Ðš @\£ª²ºNtÈ ¤€l× aøŒå \pù »P$5? ® PR UHØ_ ­œli «àðt º@¸… S8’˜ 䈰N˜H¾ ‹ÈLÍOÄÕÞ¸è W8„ò ÀhþO|$  êà0  &è„408XˆG¨R éÀDa aˆTt (h ³ Òx †ÐdŒ½“ ð¸¡ç» 3¨ Ð Õüß Á˜hë X þ ”`ì 9 ˆP èp> Q 3ð,a µ8,n à$€ «È f„´PÅÌÔç eHœô åø€ UÀŒ ¨<- ¨(;V –P,dØexp_free_iexp_init_tty_cmdsexp_printifyexpLogUserSetmemcpyptsnameexp_dsleepexp_unused_lib_versionExp_ExpectObjCmdDbg_Offexp_match_maxexp_tty_get_simpleTcl_InitStubsfork_initunlinkexpAdjustexp_cmdfileexp_closeoptindexpDiagLogPtrStrStrsigchld_countsrandisattyexp_init_ptyfcntlexp_expectvexp_loguserexp_argv0exp_stdin_is_ttyexp_getptymasterDbg_ArgcArgvexp_init_trap_cmdsexp_new_i_complexioctlexp_win_columns_setexp_console_setexp_new_stateexpLogLeaveOpenSetexpLogUserGetexp_pty_slave_nameexp_ttycopyexpLogInteractionUexp_pty_testexp_expectlexpLogInitexp_debugfileexp_win2_size_setDbg_Activeexp_i_pooltcgetattrexpDiagChannelOpenexp_tty_raw_noechofdopenexpPrintifyUniexp_buffer_shuffleTclGetRegErrorexp_init_ttyexpDevttyIsexpDevttyGetTclRegCompexpDiagLogUexpCreateChannelexp_logfile_allexp_interpret_rcfilesexp_win2_columns_setexp_readenvexp_israwExp_TrapObjCmdexp_isechoexpLogLeaveOpenGetexp_strftimeexp_block_background_channelhandlerexp_ioctled_devtty_DYNAMICexp_tty_currentexp_interpret_cmdfileexp_tty_setfgetsexp_state_prep_for_invalidationgrantptexpect_keyexp_retoglobexpStateCurrentexpWriteBytesAndLogIfTtyU___errnoexp_init_spawn_idsexp_win2_rows_setsetsidforked_proc_baseExp_StringCaseMatchDbg_IgnoreFuncsexp_event_disarm_bgfilenoexp_trap_offtclIntStubsPtrabortexpExpectVarsInitexp_consolesetbufexpErrorLogexp_get_next_event_infofork_clear_allfputsexpLogAllSetexpDiagLogPtrStrexpCloseOnExecstrcatexpLogToStdoutSetexp_stty_initwaitexp_app_exitexp_slave_controlvfprintfexpDiagWriteObjexp_forkedpipesiglongjmpsystemExpect_InitvsprintfexpStateFreelocaltimeexpDiagChannelCloseexp_new_iexp_get_next_eventexpStateAnyIsexp_init_expect_cmdsDbg_VarNameexpStateFromChannelNamestring_firstexpLogChannelGetexp_event_exitfwriteexp_pty_test_endexp_free_stateexp_exit_handlersexp_is_debuggingexp_win2_size_getforkexpect_info_finiexpLogToStdoutGettclStubsPtrexp_tty_cooked_echoexp_event_disarm_fgtcsendbreakexpPrintifyObjexp_buffer_endgmtimeexpCreateStateToInputexp_cmdfilenamesscanfexp_match_endstrcspnexp_readingexp_disarm_background_channelhandlerexpDiagLogPtrSetexp_close_allexp_i_add_statestrncpyfopenexp_spawnfdexp_win2_columns_getexpStdoutLogexp_interactiveexp_init_unit_randomexp_window_size_getexp_pty_exitexp_ttyinitExp_MatchMaxObjCmdmallocexpLogAppendSetexp_default_rm_nullsexp_create_commandsfork_addfflushexp_dev_ttyexp_interpret_cmdfilenamefeofexp_logfilegetcexp_stdout_is_ttyexp_errorlogexp_autoallocptyexp_win2_rows_getexp_state_list_poolexp_init_main_cmdsexp_disconnectexp_pty_timeoutExp_ParityObjCmdexpLogChannelCloseexp_tty_originalexpWaitOnAnyexpDiagFilenameexp_win_columns_getexp_child_exec_preludestrncmpexpWriteCharsUniExp_ExpVersionObjCmdexp_configure_countexp_getpidwaitpidExp_InteractObjCmdexpLogChannelOpenstatexp_onexit_actionexp_default_match_maxgetoptsigsetjmpstrchrExp_Prompt2ObjCmdexpLogAppendGetexp_nostack_dumpexp_win_rows_getreadexp_background_channelhandlerexp_interpexp_tty_breakdup2expReadexp_2tcl_returnvalueatoi__ctypeexp_pty_lockexp_spawnlpow_etextexp_debuglogexp_pty_errorexp_getptyslaveexp_spawnvExp_Prompt1ObjCmdexp_cmdlinecmdsexp_pty_unlockexpStdinoutIsExp_ExpContinueObjCmdexp_unblock_background_channelhandlerexp_init_sigexpErrnoMsgSetexecvpexp_string_to_signalExp_InterReturnObjCmdexp_free_state_singleexp_errorexp_eval_with_one_argexp_rearm_sigchldexpDiagWriteCharsexpStateToInputexpChannelInitexp_tty_set_simpleexp_win_rows_setDbg_Outputexp_default_close_on_eof_GLOBAL_OFFSET_TABLE_exp_tty_rawexp_disarm_background_channelhandler_forceExp_InterpreterObjCmdexp_ptyexpDiagToStderrGetexpDiagLogPtrexp_full_bufferexpStateCheckexp_init_stdiostring_first_charexp_timeoutexp_trap_onexp_init_most_cmdsgetenvexp_init_spawn_id_varsdupexp_get_varexpDiagChannelGetexp_new_i_simpleexpLogDiagU__iobexp_interpretertclIntPlatStubsPtrexp_arm_background_channelhandlerexp_cmdtype_printableexpDiagWriteBytesexpMatchProcessExp_CloseOnEofObjCmdstrcmpfreopenexpLogAllGet_edataexp_init_interact_cmdstclPlatStubsPtrexp_flageq_codeexp_remove_nullsexp_cookoptargvprintfsetpgrpsigchld_sleepexp_init_eventexpWriteCharsexpSetBlockModeProcexp_buffer_command_inputexpLogFilenameGetexp_strict_writetcsetattrexpDiagToStderrSetexp_fexpectlexpPrintfexpDiagLogexpLogChannelSetexp_fexpectvalarmfreeexp_pty_test_startpattern_styleDbg_Interactorexp_pidunlockptexp_matchexp_popenexpPrintifyexp_tty_cookedexpErrnoMsgExp_ExpectGlobalObjCmdmemmoveexpChannelTypeexp_bufferexpDiagLogPtrXexpChannelCountGetTclRegExecexp_tty_echostrstrexp_init_trap_PROCEDURE_LINKAGE_TABLE_exp_tcl2_returnvalueexp_parse_argvexpDiagInitexp_one_arg_bracedDbg_OnexpStdinoutGetexp_ecmd_remove_state_direct_and_indirectexp_default_parityexp_TclRegErrorexp_i_updatestring_case_firstexpErrorLogUexp_background_channelhandlers_run_allexp_disconnectedstrcpyreallocexp_close_in_childexpWaitOnOneExp_OpenObjCmdExp_RemoveNullsObjCmdexp_window_size_setexpStdoutLogUexp_tcl_debugger_availableDbg_StdinModeexp_versionlibm.so.2SUNW_1.1libsocket.so.1libnsl.so.1/usr/local/libp ='‘z(¨H0©H8©X@©`H©pP©xX©ˆ`©˜h© x®H˜±è¨®H°²¸²À² Ȳ(в0ز8à±èð³ ø³(©`³0©˜ ´00´P8³(P´¸`®Hh´èp´ð®H˜µ`¨¶Ø¸®HÀ©`ШàØÌ€ø·` Ę ·h (Æè H·x PÝ( p·ˆ xÉ  ˜· À·  ÈÛè è®P ð£ø ·¨ ¥¨ 8·° `·À h¾H ˆ·Ð Ã0 °·@ Ø·à àßP ·è (²ð 0¸ @ P·ø X¸ h  x¸ €¶¨  ¸ ¨¸ ¸ ȸ( и à ð¸8 ø¦8 ¸@ ‘  @¸H HÐ( hµh pÓ@ ¸P ˜Ë@ ¹° (¹¸ 0¹À 8¹È @¹Ø H¹à P¹è X¹ø `º hº p¹  xº  ˆ» » ˜»   »0 ¨»8 ȹà м ؼ  è¿ ð¿ ø¿¿P¹à ¼HH½(`$hp½ˆ$@˜À°$àÀÀ Ø%Àè½$¿°8¿Ø`¿øˆÀ°À0¸O Â` Âh(Âp0Âx8€@ˆHÂP˜X `¨h¸pÂÈxÂÐ€ÂØˆÂàÂè˜Âð Âø¨Ã¸ÃàÀÃèÈÃðØÂ(@ÇpP8hÉx™pàÉ8ÊpøÎÈ ÎØHÎàÒ PÒ(XÒ0`Ò8hÒ@pÒHxÒP€ÒXˆÒ`Òh˜Òp Òx¨Òˆ°Ò˜¸Ò ÀÒ°ÈÒ¸ÐÒÀØÒÈàÒÐèÒØðÒàøÒèÒðÒøÓÓ Ó(Ó0Ó(8Ó0@ÒÐHÓ8PÓ@XÓH`ÓPhÓ`pÓhxÓx€ÓˆˆÓXÙØ`\Ph_¨p]x^°˜`À a8àŽððŽÐÚ (Ú¨0(XÛ(hGxGdˆÜ0Ü@ Ü€¨܈°Ü¸ܘÈÝ`ÐÝ€ØÝ àÝØèÝèðÞøÞ0ÞPÞ€Þ˜Þ° ÞÐ(Þè0ß8ßH@ßxHß°PßÐXßø`à0hàH€G°ˆàh~˜ àp¨~˜¸àxÀ~˜Ðà€Øøèàˆðøà‚pà˜ „€0à 8`Hà¨P``à°hŠ@äˆwä`Uå(Ïä03åÀå8Õäh]  õ  @  ¸r  ü ä°“äð·å0Ðä*åhíä8@æ(vä ŒåØ<æmäpcå@Öægäè³å€(   È PQ xQ ðQ ¯ @s hÄ ' åàGå`æåPßàÒ ääPMå¼äXOåøNå  æ0xäåx÷䘈ãèäÀ›åpñäØªåÐ:Î (ð PÚ åXàåÆåHÜåÀ3ãðãøH åÈ6æU丘åðKäÈãà åå¸1å˜å¾ä€qä +äà®äxfå Ëæ päПä¨ä(0äøºä@CääHFåˆåèIæTä„å°.å¨"ç€|ç çÀ…çàþèè (è@Ìè`è€fè •èÀ,èàéAé né@Sé`é€Bé 5éÀûéàuêê ê@Wê`îê€tê éêÀAêàxëë \ë@hë`Yë€%ë  ëÀ‰ëàÞìnì úì@Ñì`ì€sì kìÀWìàdíí œí@8í`¡í€í PíÀêíàî‹î €î@iî`&î @îÀîàï"ï Mï@2ï`áï *ïÀoïàÛð;ð Jð@lð`Óð€Bð ÅðÀ(ðà)ññ cñ@ ñ`ñ€Éñ ñÀñà5ò>ò /ò@Œò`Yò€‚ò òÀÈòàjóµó âó@!ó`´ó€Vó 9óÀ^óà†ôjô ô@ô`ýô€ ô  ôÀ#ôàbõÿõ õ@lõ`:õ€iõ õÀ,õàSöåö $ö@—ö`Lö€ãö &öÀööà}÷e÷ >÷@ä÷`™÷€÷ ~÷ÀK÷àÍøóø šø@=ø`6ø€ø XøÀQøà=ù4ù  ù@Zù`ù€gù –ùÀbùà[ú¿ú Eú@¨ú`Gú€Iú úÀÝúà$ûÊû û@û`zû€û %ûÀûàRükü ±ü@­ü`£ü€”ü ©üÀvüàÙýý ý@<ý`ý€øý 7ýÀ]ýà«þZþ þ@aþ`/þ€¢þ ùþÀþàƒÿÁÿ !ÿ@ÿ`-ÿ€ÿ eÿÀ_ÿà × u@`¦€a DÀRàyD Ø@\`ç€m ÔÀàdô #@t`¬€Ž 1Àhàž° o@ì`½€ï EÀ»à¹? ;@¶`€[ XÀèà8) ²@w`9€Ç rÀßà¥4 @T`O€J Àòà`ã·pòw¨‡‚’ôw¨´ '3öw¨—”¨®`Øøw¨Ÿ@9—úw¨§¸"¶ž@˜k 'ì^À’” ê] è]gPŸÅÇàèã¿P@/—-®Ἢ¼x¤Àº€¹>`¡> ’@˜W£>à€¢ ² µ? )¦#Pž€ò[à·< ¹<`@˜Rèã¿P€¦ @©>àì`€€¥ @€¥ ”@;—9ºaª@°<ˆ’@@˜A–`² Çà‘耥 @@˜AÇà‘èã¿P@)—!¨ ¬¦ž Øè\À˜|¨®ªÀ €§ ¥> £>àò] @€¥À`  ö àô `¦À`€¦àÆÀ ’à@˜!’`€@ Ä^i˜†"ÀÀŸÀ€’!`ðZ ÇàèÈ^dÈ’ŸÁ” €¢ Çà‘è Ò] ®ÊZdðŸÁ@’`¸€¢ ` ” € €  ì ò `¥€`€¥ Å€  ’`@—ý”" €@’`”@—Þ–Çà‘è Ö] µ< ¸·<`ÔZäàŸÂ€²@—òèÀ* À* À* ÃàÀ* ã¿P@7–¶âì5¸À°¡P@—Þ’ê_î`¬àì%`è`¬€¥ @°@—ÜèÇàèÃàÃàÐJ ã¿P@9–5¸"<²¼ø¶À@—Â’ ê 4€¢@ ¬•=`‘= @—Â’ @—È‘= ê 4@—Í‘=`® î& ÌÇàèã¿P@7–5¶á´®½¸À¶’” ˜@—„– € ° ±> ÇàèÀ&`€”à˜`ØÒ^`ú_ Ö_`ÊZç–àŸÁ@Ô_`ÒZ¤ ŸÂ@Ð^`@—•ÐF`4È`H€¡?ÿ"@à`8@—‘9 à`8Þ`4€£À"@â^`@@—ˆ‘< â^`@Ä@/€¤`ê`¨ÿè$`æ^`@äà€¤ @'à_`˜bÀ Ö\)˜ŸÂÀ’!`Ò_`¶Ô^`@ÊZdðŸÁ@ÐZ È^áH®áŸÁ’Æ_`ÄXãpŸÀ€ìZ Ð_`ÂZ 0ŸÀ@ô`°€¦ @ %æ_`¢½(’”Þ\è0ŸÃÀ– @—e’è`„€¥ @ ê`Œ€¥`"@ ° ø_`Ò^`ì_'ðŸÅ€€° ÿÿj° ±> Çàèã¿P‚5@9•² Ø¸#¬+¶¨bÀî^ÀžÀì]àæ]©˜ŸÄÀ’!`äZ ž¢Ÿ|d±;àÇàèã¿P‚5@9•² Ø¸#4+¶¨bÀî^ÀžÀì]àæ]©˜ŸÄÀ’!`äZ ž¢Ÿ|d±;àÇàèã¿P‚5@9•² Ø¸"¼+¶¨bÀî^ÀžÀì]àæ]©˜ŸÄÀ’!`äZ ž¢€Ÿ|d±;àÇàèã¿P‚7@9•²àظ"D-´ª¢Àð^€ž€î^ è]队Œ!`ðZ Çàèã¿P‚7@9•²àظ!Ü-´ª¢Àð^€ž€î^ è]队Œ!`ðZ Çàèã¿P@9•5¸!|² Ø¶-ø^Àª¢À#À }0î_ è]队Œ!`ä_ º®ÀæZ Þ\§x’”àŸÃÀ– Ø_ ’àÚ_`Ê['x”`ŸÁ@– Ö_ ’à ”ÿxÈZçxŸÁ– ’¡Ð^À Æ € ÿÿ@ ²à0Â_ ¶ Ä_`ìXgx´ Å€èÇàèã¿P@9•5¸ |² Ø¶-ø^Àª¢À Àî_ è]队Œ!`º¨ @–p €@/¬áXê^Àè`—= ’ @–m” Ðw`˜ Ø" Ð@–` €¢ ”áXˆÒ^À Ê`’ ‰f@—9 @–\” Ðw`† ‚¡Æ" Ðô^Àò €¦ÿ@ %¢¡XÞ^À“>`•>`ÖCà@–KÐw`š Ú" ж7Höw`² ð_ æ^%¸°aÄÀè‚’ ‘: ” @–ž‚@–9žÃà˜HüŒ€t´¨ã½ @/”À#¨·®â´”àØ¸À° ð#¨¯»> ô_ ¦ ð#¨³¨ ¬ Ò^ ðZj°ŸÆÐ^àÀs¨ÇÐs¨¿Ð^ ÊZ#àŸÁ@§  ¦_Ц_À!` Š`€¢ /OÿüÀ!ü%€§`˜½Ð¤ @Š¢ Ð^à®à„ãX° ªÚ^ Ê[j°ŸÁ@ÔJ €¢ -@|–Ò^ š¦W”ÞZa0Ò]àŸÃÀ˜ €2@² @?ÿÿʦW’bÀƒ1`“:`€ `š@@K‡(`Ä@À À€ À#¨¯€F®àÀ#¨³€C®à¦ €@®à– Ö#¨·€<®à¨ €9®à¢`€¤@@ ®àÂ^ ÈXj°ŸÁÐ]àÐs¨Ç€.®à’ @•E² ±>`Çàè¢`€¤@@ ®àì^ Ä]ª°¬ ŸÀ€Ð]àÐs¨Ç€®à’ @•2² ±>`Çàè¢`€¤@@$®àÖ^ ÆZê°ŸÀÀÐ]à’@•›€¢?ÿ@ ‘: ™*0”¦[ð# ®à¢`€¤@&Oÿ—Ð]à€Ø[¨Çø^ ¯<`«-ðð_*°ŸÆÐ^À’ @”@• ² ±>`Çàè’ (@•² ±>`ÇàèØ[¨ÇÃဣ €¤@@ %ˆ¾8’@”ö² ±>`Çàè–>¶ ’@”ÝÄ^  à@â_Àt`ÂX¦ˆŸÀ@€¤à@Ð[¨¿@•`’ áÀ@•]’ Â^ ”¦SÈXdÈŸÁÒ[¨Ç €¢ ² ±>`ÇàèĦS€  @ # ¤|`’@”ɲ ±>`Çàèö¦S€Žà@¢Æ^ ”¦GàXäØŸÄ’ €¢ 2@Ô_¦G² ±>`ÇàèʦS€‰`@»: €Þ¦Sú¦S€`@°Ø^ ”¦?Ö[$ØŸÂÀ’ €¢ 2@Ú_¦?² ±>`Çàè§;`Þ¦S€‹à@°°@•‘> €¢?ÿ@¨È^ îY&pŸÅÀ ”ª|’@”ˆ² ±>`ÇàèĦS‚ € `@€¤À@“= @•‘<à€¢?ÿ@“= ä^ - ¶¼ô\¦pŸÆ€’”@”m² ±>`Çàè“= •: @”Ì– Ö^ ;¶”bÀÊZé˜ ŸÁ@’!`ÆZ!H¦! ŸÀÀÒ[¨Ç €¢ ØZ Øvà@Þ šàÚ# €ì&à°î^ ª Ò]à(ŸÂ@ Ðvà@°”¦;âr ê" è\!PŸÅÒ[¨Çðr ì&à° ¦ @â_à\`Ä€¤ „ @Â_ÒX`ÿþq˜ Ø&àˆ-ÿübà– Øð_ мx”à’ú^ Æ_gxŸÀÀ– €¿ø^ €¥ @ €¤@@’ ˆ@”² ±>`Çàè—<`’ À•*ðÞ^À Þs¨×@“ýÆ^ °`@Ðs¨ÏÊ_Àq`ÄX戟À€€¤à@ Ð[¨¿@”’ €§`@¦ ˆ~ šàت¬ÿ®àð_ @”q’ Ò^ ¦àÊZj°ŸÁ@Ð]à@”j’ ®à€¤ÀOÿõ Ø@”c’ @”q¬@0-¨¡ú_Ô_`€ €¢ ’ à@“Õ² ±>`Çàè@”g€¢ @’ è@“ʲ ±>`Çàè¡ @“û’ ´@”‘: €¦¿ÿ@’¡¨@“»² ±>`Çàè’¡ø@“´² ±>`Çàè@“þ‘= 1æ^ ’¢`ž @”¢pÚ_Ê\ç€Ö[`ŸÁ@˜ €¥ "HSÄ^ “= •= /@”– ’à@ªø_ Ò_ €¢`Â@  ÿýÑà%`ˆÿûÄ`è^ ’¾¨”`ö]'xŸÆÀ– ö¨¯ø¨³“>à‘? @”!Ô[¨Ï@Ð%`HÞ^ Ú[æpŸÃ@’¢Ð”@“v² ±>`Çàè‘= @”’ ÔE`H’¢è@”¦'ê^ –¦'’¢`è]g€”¢ðŸÅ˜ ø^ â_!°ŸÄ@ à^ ’î\'hŸÅÀô^ Ò^¥€ŸÂ@’² @” £±>`ÇàèÂXª°ŸÀ@Ð[¨×È^ ”§’æY'ØŸÄÀÂÖ€ ¦@”¦€¢?ÿ@Ô^ ÊZ¦pŸÁ@ ”¶üè’@“4€ÅØ^ @“𦀢?ÿ@@“sÐG¦@“qÐG¦#Ö^ % º¼èðZæpŸÆ’”@“€°Ø^ @“Û¦€¢?ÿ@@“^ÐG¦@“\ÐG¦#@“ZÐG¦@“XÐG¦Þ^ Ú[æpŸÃ@ ”¬<è’@“€—Ø^ @“Ê+ ¨} €¢?ÿª@ ®æ^ î\æpŸÅÀ”’@’õ€†Ø^ €¥à@Ô@“6ÐG¦@“4ÐG¦@“2ÐG¦@“8ÐG¦3”aÐ_ ä €¤¿ÿ@ -@“&‘< ¨¡–?ÿð_Ö& @“¨ ’ @“” ¬@“ @“ @“ Ú¨¯ä¨³“;`‘< @“gÔ[¨Ï®@ €¥à@“  ‘= ’ @’þ” šáØ_ Ò[ Â@€¢`@“Ž€€N@“’ †`ØÄ_ÂX ÈXdŸÁÐB ’@“€€€@@@ò¨·€¦`@¤ @“‡Ö ”   “2°?@“‰‘< ¤ €¤ 0$OÿùÖ ÐG¦#’}€@“‰” €¢?ÿH7ÐG¦#@’Óª ÐG¦’¦°¦@“†” ³: €¦`@€¦ÿ@“`Ö €¢à@ÐG¦’@“x”³: €¦`@@“Rè €¥ "OÿõÐG¦€¦ÿH'ÐG¦@’°¤`Þ^ ¯< «-àÚ[à(ŸÃ@‘5`€¤@@=°…<` ÿº ¤³(°†'@ª@ºÀ¨Ð]`ò^ Â^j°ŸÀ@ˆì €¥ ˆ *ý¿þì ˆ! Ú^ ž!¤ ˜àø[`(ŸÇ‘3 Ðu ò^ ö^j°ŸÆÀÐ]`ª`’@“BÐ] ¨ €¤€$OÿãÐ]`¹?`­/0¨Àv@“?’Ð] æ^ ¢`Ø\à0ŸÃ¨ €¤@$OÿúÐ] €øö^ Àv @“0’€òö^ @’dÐG¦#@’bÐG¦@’`ÐG¦“= •= —=à@’{¨‚ @È_ÒY Â@€¢`ÿüJ@’À`ÐG¦’¦¢¦@“” ¡: ¶ €¤ @€¤?ÿ@’ÜÆ € à@ÐG¦’@’ô”¡: €¤ @@’ÎÊ €¡`"OÿõÐG¦€¤?ÿHÈ‘= @’Œ’ @’š`PÐG¦’}€@’Ö” €¢?ÿHÎ`˜@’@’ÐG¦@’ÐG¦ÐG¦’¦@’Д €¢?ÿh€¢ €/@’§Ò €¢`"OÿòÐG¦@’¡Ø €Ø'¦À'¦@’ÐG¦æ^ ” ’{Xø\çxŸÇ– ú^ â_a°ŸÄ@‘=àà^ ’ö\'hŸÆÀÊ^ ÆYe€ŸÀÀ’² @’[°ô^ ±>`ê^£ÐŸÅ@§Çàè@‘âÐG¦’ ‘=à@’®” @’tĦÄ" Â^ ÈXfpŸÁ–’`À@‘‰”Þ^ Ú[ãПÃ@§€¥ "Ͳ @’Ÿ’ÐE P’ @’“” à Œ€¤ "H² ô^ Ò] â^§ðŸÄ@€² Ø^ ø[#в ŸÇ§±>`Çàè@’Ž?ÿ@‘¬ ‘= ’ @‘ ” `à@’5“=à@’ƒ?ÿ¿þ·ò¨·@‘Ÿ ‘= ’ @‘“” @’1Ô^ ÒZ¤ŸÂ@ÐB ’@’"a@’p?ÿ¿þ»ÐG¦#@‘Œ ‘= ’ @‘€” @’ ¤ Øî_Þ]àÚ[äŸÃ@ÐB ’ ˜>P@’  @’X?ÿ¿þÆÐG¦Â^à0ŸÀ@@’ ’ÐG¦@’” @’K?ÿ¿ÿ´Ø^ @’O`0@‘ý1” Øä_ ø\ ú_$ŸÇ@ÐB @’E@’C}ˆ@’9?ÿ¿ÿ+‘= @‘íì^ Ö]¤ŸÂÀÐB ’@‘Þ`x@’,?ÿ¿ÿ*`˜ã¿@@/-®ãÜ)¸Àª½Ð»> ¦ جô_€§`@6® Ð^àšã ª ¨à¦ Æ^ ÄXê°ŸÀ€ÂJ € `-@(–Ê^ š§óÒ] ”ÈYa0ŸÁ˜ €@Ö§ó€¢à2@ ¨ ª`€¥@@¨ Ô^ ÒZª°ŸÂ@Ð] ¨ ®ª`€¥@&OÿÝÐ] € €¥à’¤°@½˜ ±; Çà耥àÅÀ 𤍒” – @¨˜ €’ ” @‘■€¢ ˜ ±; Çàèú^ ä_a°ŸÄ€ÐB Pâ^ à\gh’ŸÄ˜ ±; Çàèã¿P‚5 @9°¾˜¸"$%¶ž@‘<À@‘Â/¬àØ¢ Øê^Àè]`æ]!°ŸÄÀ‘: à^À’Þ\ Ú[çhŸÃ@Çà‘è ã¿@@/€¦ ®áœ@ ˜À šþ¸’ @` ±: Çàè)Ò^à”§ï¦ Øà[ä\ â\¡(ŸÄ@€"@ŧïò\ ì^j°ŸÅ€Ð^àªô €¦ ª`*þ¿þô `º%`¸'@‘4±: Çàè@‘…±: Çàèã¿@@75 ¶à´®¾Ø¨À¦’@  €¢ ’à@"¤?ÿ±< Çàè–`’à0@‘j”€¢ @ ’à8•: ¤?ÿ@±< Çàèê`€¥`@ ’àp•=`¤?ÿ@±< ÇàèÅ`3¬(¸Á ¨ŠÀ @ ’à¨Å;¨¯¤?ÿ@øÔ[¨¯±< Çàè¤ ±< Çàèã¿P@-Ž+¬£”¨`Ø£>ঀî\À€¤`@*È —<`™9 ’"À •:p Š € †@€ à@  ÿÿ¤ Þ]àÚ[ê`ŸÃ@¤ €¤€$OÿüÞ]à„"»8 •8 @‘’€&@º?ÿ¢¤@@ ‘?`Å ´€@‘ºOÿݱ?`Çàèº ±?`Çàè?€ã¿0@7Ž5 ¶â”®¿°¦À¤À’@  €¢ ’ @š¢?ÿ±<`Çàè¨`–`ès¨¯˜`š` ’ 8@Þ”€¢ @ €¢?ÿ’ H‘d@¢?ÿ•: @…±<`Çàè-Žé`ª½Hí`¸Àå ƒ­ ² PAá …­Š° `>Ù Ý`‡«Š¬ p ’ Ð¢?ÿ“ .Ó;¨·Ô[¨·@l±<`ÇàèÍ Ñ ‰¡‰®Õ` ªŠ¨É&`@ ’¡½ *ý;¨·¢?ÿÔ[¨·@[±<`ÇàèÅ`Á ƒ¨Š P ’¡P¢?ÿ¹ "ù;¨·Ô[¨·@M±<`Çàè…¨Šª9`¢ ± "ñ;¨¿’¡µ *õ;¨·¢?ÿÖ[¨·Ô[¨¿@=±<`Çàè— 4×;¨¿’ €› 6Û;¨·¢?ÿÖ[¨·Ô[¨¿@0±<`Çàè@øipã¿@‚'a@9ޤâ—¸ t´ž@y7ù1³: °à÷®N@­5ð ž ©= Ž«: –?`¢%”€  \@š#ÀÚ#¨¯É Å¨¯ ‚  ‘¡‰Ä ÈÇàèã¿P@@±2 @eèã¾€@-Õà+ ÅଣĨ}€Éà© * €Íà ­ "é;¨×± $ñ;¨Çµ &õ;¨¿í;¨ÏÑ๠(ù;¨·Ô[¨ÏÒ[¨×Ø[¨¿Ö[¨Ç@‘Ú[¨·æN €¤à@d¤º šàØ¢§ýî\ Ø]àÖ[*’ŸÂÀ€§`@¬Þ]àÚ§ýà[ëÈŸÄ‘;`€2@åàê]àè§ýæ]jøŸÄÀ‘= €"@åàåà€Â]àåàÂ]àúXkÈø§ýå#¨¯ŸÇ@‘? €å¨¯@ º Ô]àå#¨¯ÊZªøÒ§ýŸÁ@‘:`‰2 娯† …0ð?º ÿÿ{å#¨¯@   Ýà… .@ À娯áà ½ 2›§‰@ ͇¨ °9pÙà 0€€¤€¨ ¬€¤€©€,` •= …  @̸H•= ±? Çàè@Ó’¸@™= ¤€ ÖL €¢à2Oÿ¦Ø]ภ±? Çàèã¿P@97¸!Œ²àX´ú^€ð_` Æ€¦ 1® Øì^€ê] è]`(ŸÅ"0Ðw`ˆ!ø¦ 8ær 0¤ p¢ ¨är h  àž!âr  š!P˜!ˆàr Ø–!ÀÞr!Úr!HØr!€Ör!¸Èr!ðÀr"(ð_`Ð^ 0Ðw`Àv Àv À& Àv (Àv 0Çàèã¿P@95¸ ´²¡8¶ô^ÀÄ^  À€€  /¬àØê^Àè]`æ] (ŸÄÀ  Ðv ¤ ¢ är   0ž @âr š P˜ `àr (– p” €Þr 8ˆ ’ Úr HØr XÖr hÔr xÈr`€Àq Ä^ ÆX Æv ðp Çà‘è‚@Œ˜#䈞€¢ „†ÄX €  *ø¿þ†”á8ÊY ÒY`ÒpàÐq`Ãà‚@Œ”á8˜#p’žÈZ@ ÊY Êr ÃàÐq ã¿P@9ŒÒ^`0¸#$ºÂ@€¢`@C”@IÐ^`(Ò`”àØö_@ €¢`@Ò^`” !Ø^à–Ê[(ŸÁ@˜Ð^`€¢ Þ`Ú`€£à@€£à@€£`"@â^à€€£`Ð^`€¢ *ÊÚ`ô`€¦ "@Ð^`€1€¢`@ €£`€£`@1â^àà\`0ŸÄ€1€£`@1æ^àä\à0ŸÄ€Ð^`€¢ ê^àè]`0ŸÅ1® Xì_@ú] úv`0òu Çàèã¿P@Œ¸˜!´¨@Žú²”ü°¦ «> €§` ” €€  ú ô à§@` €§`Ç@ ’ ’à@k”" €@’ÿø€§ `  ì î `¥€`€¥ Å€  @S’`€@º €ú&`º ú&`€§`¬`ê&`†`­d@‚ Ø€¥`î]@ˆÚ €£`ˆ *ûþÚ ª! æ]à¨%@  Þ\à(ŸÃÀ‘4 Ðu @Ž*’€Àv`(øu Àv`(@޳’€¢ @’² @Ž”” Çà‘èÒ`€¢`@ â]à” !–Ò^`Ê\gÈŸÁ@˜Çà‘èã¿P@Ž¢ö^ (ör Ðv (Çàèã¿@@7‹5Ò^`¶ãÄ® Ø¸À”§ûú_–§ïì_`ê]§ ŸÅ@ €2@&3 Ö§û€¢à@® ) Ø_§ï´ ¦=À¶Ò^€ š” – @ŒÌ˜ €¢ ’@ŽwÚ§û®à´ €¥À &OÿðØ_§ïð_`à^ 0ŸÄÐ_§ïž ±;àÇàè3 ¤}È@Žmø_`â_%€ŸÄ@@Žgž ±;àÇàèã¿Pà`€¤ 2@FÀv`(@#‹¢bŒ`ØÒ^`¶@ì^ÀÊ] ÈYeˆŸÁ” ´ €¢  ”ýà´À  @IÒ^`ú^`Ç@€§`€¦€`  ø ö`§`€§ Ç ’ @Œ’`€2@Ú] Çà‘è Ø[`0ŸÃžæ €¤àžà*üÿþæ àº#àì] ®'@ªàè] (ŸÅ‘5`Ðv`@p’@îÐ^`(Àv`(ÿÿoèÿÿmèã¿P@î´ ¶ô" ò" @Ž’Çà‘èã¿@@/‹-®á,)»> ¸Àª½Ð¦ Ø €§`î_@$´ Ð^à¬àšãÀ° Ò]àÈZj°ŸÁÐJ €¢ -@–Ô]àš§óÒ] ÊZ¡0”ŸÁ@˜ €@Ö§ó€¢à@´ ¬ €¦€&OÿçÐ] €˜ÿ˜ÿ€¦€ @ »> ³/pÐ^Àö]àä^ê°ŸÄ€@Ë¢ ±<`Çàè’(H¢ @Œ ±<`Çàè@| ÄÄ4@pã¾ð@ІãÔ‚ Ø¸À!æ_¢"À  ­> Þ\àú[队Ç@’!`Às¨·š?ÿº €¥ Ðs¨¿Ú'§û@r´ % Ð^ਾh–#Ф®à¨ ª Ø\àÞ[*°ŸÃÀÖJ €¢à-@a–·hÚ\à”Ò]àÂ[a0š§÷ŸÀ@˜ €2@U´ @?ÿÿا÷†âô•3 ‡8à€¢ šÀ@G™* ÖC ÂÀ ®à’ Ø´ È_ ÄY ÆXª°ŸÀÀÐ]àÐs¨·€9®à´ €>ˆ¿ÿ’§ãÿûþ€¢?ÿ"@3´   €-®à’§Ïÿûm€¢?ÿ"@*´   €$®à´ €¦€@®à Ð'§Ë€  Ò]à”§Ë àØâ_Ö\`ÊZá@ŸÁ@€2@´ §ˀ `&@´   ¢€®àº €®à  ¢®à´ €¦€&Oÿ›Ð]à€Œ H¦ˆ¿ÿ€¦€@ •> ; ´ °~’±> @‹cÇàè-® Øè_«*°Ð^ÀÒ] ÊZaXŸÁ@’§û¢€ 7Ê à€¡`¦à*ùþÊ à’$à"@7Ð'§û¤ã8š€¦ `Ús¨¯Þ[¨¿Ð[à€ ä[¨¯–¿ü€¦ 2hè[¨¯æ[¨¿Ð\à Â"€¢ €&˜ €¦ `ê[¨¿Ð]` €¢ ! ´ ¢>€’±> @‹*Çàèö[¨· ÆÀ€¦à’ ” @ŒX– €¢ ´ ±> Çàè@ŒØ’ ¶€î[¨¯Ò[¨·” @ŒØ– ¶ €¢ ´ ±> Çàèî[¨¯5 šàž¿€¦ ¤` @Œ¯¿à@ŒÍ@Œ«@Œ©¿ðº €î^à(@Œ¬î^à(ÅÀv€¥àì[¨¯æ]ਠ¬§û€¦`’à ‚¿@‹ž˜’” @‹– Â`€ €§`@’@Œ±¢€¤ @ €¤ @€¤ H–§ã€¤ "HÖG§û€5€¦ €¤ @€¤ "H,ÒDà8€.€¦ ÔG§û@Œ’´€'€¦ ˜§Ï’ÿúÑ”´€€¦ ’ÿû¾”´€€¦  Ƨˈ? ª€ à@’@‹ý” Ò§ËŠ‚ÿÊ'§ËOÿú’´€€¦ @Œ{´ €¦ @î]à€¥à*ýÿ¨æ]à€ú[¨¯€¦¿ÿ@1ª Ø´ ì_î] Ô]æpŸÂ€ÔDà8–’ @Š‚€ ´ € ú[¨¯¸`€¦`´ @Œ& (’@‹ò” ±> Çàèã¿@@)‰¤ ¨!Œ  º¹> šàØ´ ¢ è_@ €§ @“¦  Ð^à– ’½Ð¬@ ªà®@ Ä] ÂXª°ŸÀ@ÐJ €¢ -@ƒ–È] š§óÒ]`”ÆY!0ŸÀÀ˜ €2@² Ô§ó€¢ @ €¢ "@m  €¢ @€¢ "HU¦à€gª`€¢ "@c¢ €¢ "HX¦à€_ª`5 Š¢è¸@@Œ À/ €¢ "Âë² @Œ€@ ¬âè @®¿h@Œ ’@@Œ€@ žbè @˜p@Œ’@ @Œ €¢ @Œ ’@‹ù€ú] @Œ €@ „"è @°€@‹ì’@@‹Ú7¢àØæ_@ê\àÆ]dðŸÀÀ’@‹áú] à_gP’² ŸÄ” ±>`Çà耤À@¡ª`ä] È\ª°¤ ŸÁÐ]`´€ ª`€¤À@–ª`ô] Ê^ª°ŸÁ@Ð]`´ª`¦à€¤À&OÿyÐ]`–?ÿ€¤À @:­<àÚ] Ÿ-°Ð^ÀØ[j°ŸÃ°Æ€€¦  Æ}€¦ €2@‹œÂ€¢ Æ`€¦ @‹¶’€¦`  ø ö `§`€§ Ç  @‰°’`€H; @‹³‘< ² ±>`ÇàèÆE€¦ •<`@‹±’€¢ @K² ±>`Çà耧@N ΀4€¦ @‹l€¢ Ê'@‹gð] î^$ðŸÅÀ’€¦€`  ì î `¥€`€¥ Å€  @‰}’`€@ @‹€‘< ² ±>`Çàè‚¿’@@‰`² ±>`Çàè@‹‚’€¢ @² ±>`Çàè@‹:@‹€€¤ @  †?È’@@‰I² ±>`Çàè@‹[‘< @‹y‘< ² ±>`Çàè Š?ð’@@‰8² ±>`Çàèã¿@@+ˆª`¤°@@‹g)¯> ¦ Øê^€¥à@<º ‚¿P€¥à¸@4’ ðÈ]`ÆY*°ŸÀÀÐ^à°€¢`  ’ø ô `§`€§ Ç  @‰’`€@ ”§óÒ]`ÊZaÒ^àŸÁ@€@Ø]`Ö[*°ŸÂÀÐ^à”ì €¥ ” *ý¿þì  ¶" ®&À€¥à*ÍÀš À'§ó@‹3ÐG§ó€ä]`@ˆçä]`â\¡°ŸÄ@‘?`à]`’Þ\'hŸÃÀš ±;`Çàèã¿@@/‡»> ®ã<€§`@¸À/¦`جâP€§`ô_à_@€§`Æ^ ÄXá°ŸÀ€ÐD ô^ ä^§h’ŸÄ€² ±>`Çàè@,¢ 'Ð^à¤âP Þ_˜`Hª ”ýЦ äà¨à° Ò^ ÈZj°ŸÁÐJ €¢ -@–Ô^ š§óÒ] ÊZ¡0”ŸÁ@˜ €@G– اó¢`¨ €£ §d@ €¤@&OÿçÐ] €€¤@-¦ ª¢Pè_ä €¤@@ €¤à@3;@ŠÍ’  bP¢ ø_â' €Ê^ +”§ï¨`ØÞ_¯<`­-ðÚ[àÒ^Àö[aŸÆÀ€@ ð§ï€¦ @“<à@Š»À$ €Ê^ @Š®Ê^ ‚ Â$ ÈYa˜ŸÁ‘< Æ^ ’ÄXçhŸÀ€² ±>`Çàè |`’@ˆJ² ±>`Çàèã¿@@/‡-®à쪽иÀ»> ´  €§`@\® ) Ð^ঠXšàØ¢¬àê_ Ö]`ÔZ갟€ÈJ €¡ -@L–Ø]`š§óÒ] ”Ê[!0ŸÁ@˜ €@[Ô§ó€¢ @€¢ "H&®à€5¬ šâФ @ŠkÀ, Â€¢ @Šo”’*°@ˆ³@Šq€¢ †*¸’*À¦ “f@@‰ò’‚ Øð_ê^ ±<àè]gPŸÅ” Çà耥À@.¬ @ŠaÒ]`ÈZj°ŸÁÐ] ’@Šb€2@&¦ ´ ¬ ®à€¥À&Oÿ°Ð] €¥À@»=à¥/p”§ïÒ^À7¢àØØ_Ö[ ÊZáŸÁ@€@ €¦ @@Š=@ŠKÐG§ï¦ ±<àÇàè’*Ȧ @‡»±<àÇàèã¿@@/†-À'§ó®â´) ºÀª Ø¹> ¦<°ô_@¬‡?ÿ®@@g àÖ^ ÔZ갟€Ð^àÊJ €¡`-2@9Ð^ Ú^ Ø[j°ŸÃÐ\ ’à @Š"” €@-9ž!`€¥ ú_@"@Ò_`ö^ Ð\ â^áXŸÄ@’§ï²Ð_`€¢ æ^ ä\à0ŸÄ€ê^ ð§ïè]`(¬ ŸÅ‘5 Ðw`@ˆ|’† ±8àÇà耢`"Â@<† Ä^ ÂX¢@ŸÀ@” † ±8àÇàèÐ^ ÊZ*°ŸÁ@Ð\ ÈJ €¡ -2@â^ Ú^ Ø[j°ŸÃÐ\  ”ü¸ ’@ ’`@‰á” €"@â^ @‰ä† ±8àÇàèÞ\a@”§óÒ\ ŸÃÀ€@† ±8àÇàèú^ ’àö_dŸÆÀò^ ä^d8ŸÄ€ÐG§ó† ±8àÇàèã¿@@/†- ®à”)›> ª¼ð¸À¦ Ø¢€£`ä_@2­3`ª@¨-`€£@@-ºÿ Ò^à  šàx¶à´ Æ\ š§ó–`”ÄXá0ŸÀ€˜ €2@$® Ø§ó€£ @”§ïÊ\ Ò^àÈYaŸÁ€2@® Чï”âÒ_ Ð"`  ¶à€¤$OÿáÒ^à® ±=àÇàèÂ\ –’ ® ðXhPŸÆ”±=àÇàèã¿@@1…/°#T¬ýС> ¸¢ º ¨¤ €¤ @S¦  Ð^àšàˆ– ذ ªàî_ ô]àÈ^ª°ŸÁÆJ € à-@C–Ò]àš§ó”ÊZa0Ò]`ŸÁ@˜ €2@Ž Ø§ó€£ @€£ @€£ ´ »d@€*ª`¦à€¤À@ ª`ä]àÔ\ª°ŸÂ€Ð]`¤€ª`’$°@†˜ ±: Çàè¦à€¤À@ ª`â]à”§ïÒ]`Ö\aŸÂÀ€@¢ € ª`’+P@†‚ ±: Çàè¦à€¤À&Oÿ¹Ð]`€¤À@ † Øð_Ä^ ÂX¦ØŸÀ@î^ ’+hì]äÀŸÅ€” žÐZ ’Ú[à•< ŸÃ@–±: ÇàèÄ€ €¤ Š=š’” – @†N˜ €´’ ” @‡‡– ´ Æ€€¦  ±: Çà耧`@€¤`Ò H€¢ÿ"@ ’+€@†‡‘:`”?ÿÐF 4Ô& H@†â’  ±: Çàè@†4 ±: Çàè@ ÐF 4ÔG§ï@†j’  ±: Çàè@‡D’±: Çàèã¿P@3…/ ²`T¬ý`¸@¦»> @†æ“> €§`@ ¨ ªÿà@‡7¨ €¥Oÿýà@‡2@‡0õHÇà‘è Ãàã¿P@-„«> ¬£¬€¥`@eº€Š`Øî_@Ø]àð[*°ŸÆÐ^à ”ÿP°’@ €¢ `  ø ô `§`€§ Ç  @…à’`€@) à]ঠ¨¤@ú\!°ŸÇ@ÐD â]àÞ\gh’ŸÃÀ² ±>`Çà耥`@8 ’ Øˆ ¨ô_@ ¸@„â¸î^ Â °@€ `$@Ò^àÖ]ã˜Ò^ ŸÂÀî^ Ò^àØ]á@”ŸÃ€"@ö ² ±>`Çà耦à$@² +#…¨`Ø„æ_@ ¨šü0–@“>àä\à” ² š@ Ê\¯(ŸÁ@˜ Ðv ±>`Çàè- ª½p’@@…€² ±>`Çàè‚@„”à˜!À’žÐZ@ ÊZ Á@€¡`À!`ÊY`€¡`*ùþÀ!`ÃàÒ" – ÃàÖ" ã¿P@5„3´¡4®`š€à[@¹> ð\ Æ €¦ â €¤`@³? ð^ €¦ *þ?ûâ -ª Øö[@³? è^àæ] (ŸÄÀ ä\ °är Ðt @‡Ðèã¾@@/„-®à”ª Ø»> ¸À¢ ä_€§`@?  ) ®àÐ]ঠ¸šýж° ¨ Ø\ Ö[*°ŸÂÀÈJ €¡ -@.–Ú\ ”Ò]àÊ[a0š§óŸÁ@˜ €@ô§ó€¦ @€¦ ´ ¡d@€ ®à° €¦@®àê\ Þ]j°ŸÃÀÐ]à®à¢° €¦&OÿÙÐ]à€ €¤` º ’¾€’ ±?`@„âÇà耤` Ä@’ ” @†– € ¬- ’º½” š– @„ǘ ¬ Å€€¥ º ±?`Çàè@‡n€@D ˆ€ `@º €4â\ €¤ @ º ÒE PÐ\ Òw§ç’§çÄZ#ˆŸÀ€ ÿìç €&â\ ¦ Æ\ èXâhŸÅ€@ È\ ÔY"XŸÂ€’ º"HÐE P±?`ÇàèÐE P’@…±” Ê P€¢@ º€§ÿGÿæ@…pÖ €¢à"OÿáÆ\ â\ Ø\fˆŸÃ  @‡6’ @…‹§Ó€L€§ÿ@‡7¬Â€¢ º   €C€§ÿ!ž Ú_à[`Ä6€¤ ö €¦à@ª ÐD ’@…‚” @î €¢@º€§`@€§ÿ@@…?ú €§`"OÿðÐD - ØÄ_æX Â\戟À@º?þ€ à\ €¤ *ü?ßö €Ø\ 5°¼¨’@…O§Ó@†õè ¬¦ïè'§?Ò Ò'§€ €§ÿØ\ Ö[&ˆŸÂÀº?þ@†è€§ÿ@d ú\ æ_a¸ŸÄÀ’ Â\ ¨ôXa°ŸÆ€ÐE Pð\ î^!p”ŸÅÀ’ê\ §Óö]aПÆÀ’?ÿÞ\ ”Ú[ápŸÃ@’â\ Ø\a°ŸÃ?ÿÖ\ ”ÊZápŸÁ@’@„ïÈ\ ÔY!°ŸÂ€ÐB Ò\ ÆZap”ŸÀÀ’Ð\  º½˜æZ!ПÄÀ’ ø\ ”Â_!pŸÀ@’ô\ ð^¤ŸÆî\ ê]áПÅ@’?ÿö\ ”Þ^ápŸÃÀ’@„ÈÚ\ â[dŸÄ@ÐB Ø\ Ö[!ПÂÀ’?ÿÊ\ ”ÈYapŸÁ’Ô\ ÆZ§hŸÀÀ’€«º €§þ2@ æ\ % º ¬½ ’±?`@ƒÉÇàèÆ\ḠŸÀÀ’ ¦Ð\ ÄZ!°ŸÀ€ÐE PÂ\ ôXap”ŸÆ€’ð\ §Óî^!ПÅÀ’?ÿê\ ”ö]apŸÆÀ’è\ Þ]!°ŸÃÀ Ú\ ”â[apŸÄ@’Ø È\ —; ÔY!°Š àÿŸÂ€‘9`Ò\ ”ÆZapŸÀÀ’Р„Š ÿ@e?’£€Š @0  Ô\ ’}° ÈZ¡ÐŸÁ’ ”Ð\ ÆZ!pŸÀÀ’ô\ Ä ð^§ˆ‚ ŸÆ‘8`î\ ê]áПÅ@’?ÿö\ ”è^ápŸÅ’â\ Þ Ø\gš àŸÃ‘;`Ö\ øZáПǒ?ÿÊ\ ”ÈYapŸÁ’€4Þ\ €  @0 â\ –=À Ô\aП€’ ø\ ”Ê_!pŸÁ@’Ò Æ\ ‘:`ÄX爈 ÿŸÀ€‘9 Â\ ôXaПƀ’?ÿð\ ”î^!pŸÅÀ’Þ\ ê Ú[ç·=`¨àÿŸÃ@‘= â\ Ø\aПÒ?ÿÖ\ ”øZápŸÇ’Þ\ Ú[çhŸÃ@’Ä €¤ ¬ÿÀ$ «5 ¶ ©6ð?º ±?`Çàèî €° ð% „€¥àð% ˆ@ ÿô Œ€¦ @ÿÄ\ Ò] ÂX§ðŸÀ@ÿ‹2 ˆ ‡10?ºà±?`Çàèã¿P@71 ¶ãì®=иÀ€¦ ¶@’@‚ó‚ ±8`Çàè@ƒµ€¢?ÿ„àØú_@ Ê_`ÈYfpŸÁ’÷P”@‚ß‚ ±8`Çà耤 @˜ #ž`°Ú_@„Ø#`”áXÒ_ @…ŽÐ"`€ø_`@…’‘< ø_`ì_!°ŸÅ€‘< ê_`’è]ghŸÅæ_`ä\借Ā’@ƒrà‚ ±8`Çàèã¿P@7/¶⬬àØ¸À'ê_¤âÀ! è]`â])˜ŸÄ@’!`ž=ø€¦ ¶@’@‚™² ±>`Çàè ˆb@Æ_Äà€  @’à@‚Œ² ±>`Çàè– °Ô_ Ò €¢`@’à0@‚² ±>`Çàè%  ¢¢@°Þ_’ 5à#à@ƒa @‚Ï š Ø€ú_ @æ^ èàÔ€¥ @ @ƒƒ’êàŒ€¥`@óî_`Ò\àì]çðŸÅ€ó@‚’ ó@‚Œ’ @‚² €"@Ú_`ð^  Ԁ `@@ƒh’Ä Œ€  @ `ØÒ^ Ê_ÈY`ÆY'ðŸÀÀ”üø @‚p’ Ú_`Ø[gø’óhŸÃ” @ƒ² ±>`Çàèã¿@@!#   „9¤ž~ §> º Ø €¨ â\€€¤à@Rª °àÐ^àØ\`ú[*°ŸÇ@øJ €§ -@H´’?°€¦€ `  ú ø `§@`€§`Ç@  @‚’`€2@Þ\`¨ €)° Ú[á@”§óÒ^ ŸÃ@€@¸ª`§ó€¥@´ @"ô'§óÆ\`”§ïÒ^ ° ÄXá@ŸÀ€€@©?àÒG§ï@‚–ÔG§óî§ïȧó€¥À@‘=à@„§“9 €° ° @‚‰“=àª`€¥@&Oÿ»Ð^ €€¥@’?¸@ÈÇà‘è €¥@@’ 0@ÁÇà‘è È\`®à°`‹=àºÿÿÄY (‡)`ŸÀ€‘0àƒ=`¸€¦@¯(p´ €*«> Ÿ> ´'@™+ðš'ª´ ¬@ Ð]`Ö\`ÔZ갟€’ € `’`*øþ `”"`’"€Ð\`° Š`ÈZ (ŸÁ‘1`Ðu Æ\`ÄXê°ŸÀ€Ð]`ª`’@‚“Ð] ¬ €¦$OÿãÐ]`«> —-pÀw Ô\`ÒZª°ŸÂ@Ð^À®ŠÖ €¢àŠ`*úÿþÖ `¬!`Þ\`ª%€š`Ø[à(ŸÃ‘3`€¥ @ Ðw ¬ -ì* è_  @‚q’€ @‚m’ @‚R’  @‚O’ @‚l’€¤à@ª 'Ð_ ¨šàØì\€ ä] ª`Ø\ 0ŸÃ¨ €¥@$OÿúÐ] ð\`ú^ 0ŸÇ@ø\`æ_*°ŸÄÀÐ^àö\`¤â^æpŸÄ@–’ H@:”Çà‘è ã¿@@/€-®à´ª Ø»> ¸Àà_€§`@4´ ) Ò^ঠКýЪ¬ ®à¨ Ð\ š§ó–”ÈZ!0ŸÁ˜ €2@.º Ø§ó€£ 2@ ®à¬ €¥€@ ®àô]à®àÖ ”àÔ& ¬ €¥€&OÿæÒ]à€Ò\ –-8º ÊZhP’ ±?`ŸÁ@”Çàè@ƒÉ’ºÆ€ €¦ ä ¢„¿ÿ@â& ö\ ò^áŸÆ@±?`Çàèã¿P›> €£`@ž?›±;àÇàè@1% °#@¢¿ €£`º@/¬àØê\è]`æ]*°ŸÄÀÐ^฀¢`  ö ô`¦À`€¦àÆÀ ’ @€Å’`€@ž?š±;àÇàè’`@€¬ž ±;àÇàèã¿P‚/@9¬àظ"l' º¤ÿPê_@ž’@è]`â]$ÀŸÄ@”  ÐZ ’Þ\ •> ŸÃÀ–š?™€¢ ‘d@ ±: Çàèã¿0@/-®áÜ)¸Àª Ø»> ¤=Ðà_¦ ¤€§`@:¢  Ð^àšàà° ªà® Ò\ ÈZj°ŸÁÐJ €¢ -@,–Ô\ š§óÒ]`ÊZ¡0”ŸÁ@˜ €@Ø§ó€£ @€£ ¶ £d@€ ª`° €¦@ª`ô\ Ö^ª°ŸÂÀÐ]`ª`¦° €¦&OÿÙÐ]`€ €¤à’¤°@€8ž ±;àÇà耤à ÄÀ’ ” @e– € ¨ ’ºh” š– @€˜ ¨ Å€¥ ž ±;àÇàè@€¢ÐE 4€¢?ÿ@€¤`ì\ ö]¦pŸÆÀ’­¨”@€ž ±;àÇàè@ªî P€¥à@“=àÒw§ç’§çˆ ذ Æ_ÄXàÂX£ˆŸÀ@ À% Pð% „ð% ˆ@’ú\ ‘=`ø_eøŸÇ’ æ\ ´â\æ ŸÄ@’Ø\ Ö[$ðŸÂÀÔ\ ’ÊZ¢@ŸÁ@” ž ±;àÇàèÚJ ØJ`€£`@•: €£ @ €£ 2@‚ ÚJ ØJ` ’`”¿ÿ€£`Oÿö€£ —3 ’ ‹: ‘2p?ˆ!`„ ‡10?‚€Ãà‘8`ã¿@7~5¶â¼® ˜¸Àè_ì] ê]£øŸÅ@æ] ºä\ãðŸÄ€è^`Å^€¥ Ø` šàØ®¢   ` ì_ ¶§¯€‹ @È_`àŸÁ’è^` €¢ Ê]ààŸÁ@’è^` €¢ Ô^`€¢ € Ö^`’Þ] Ú[ãŸÃ@˜ è^`€ êM æ] ’Ô^`ä\âèŸÄ€˜ è^`êM €¥`e@ ôM €¦ x@ÂM € `p"@!²`(Ä` €ˆ @ –?€’ @€”’ ØÔ^`Ð_ €¢ ÆZ € Ö^`’ÈXãŸÁ˜ € ²`(ÊXâè’Ô^`ŸÁ@˜ ²`(è^`€¥ *ý?®Ø` Çàè‚ @~”àø˜ Ø’ž’@ ‚@‚žã¿P‚5@7~® Ø¶àŒ+¸À¨bÈä_ž´³>`ì\ æ]£àŸÄÀâ\ à\k Äèã¿@~ ò'§ó’`$† Øðw§÷¢@+ à\@‘.`¬a‹: Ä\ ƒ)`ôX (ŸÆ€‘0`ø\ ¨¤ö§óæ_ (».àŸÄÀ‘7`îG§ó¸@Ðs¨¯€¥à `+¦Æ\ ’Ð_§÷ìXëŸÅ€” €2@ÞG§óâ§óæ_§÷”üÔ'§ó’àÒw§÷•: @É´"©6°?˜€³;0€‡Ð\ €£à `’ ð\ Ð_§÷Ú^+ŸÃ@” €2@ ÖG§óö§óÒ_§÷®ÿüî'§ó`Ðw§÷ÖG§ó€¢à`º €sö§óÊ\ ’ Ð_§÷ÂYkŸÀ@” €@º €hö§óì_§÷ê§óº úw§÷„þÄ'§óÈ €¡ )@Ƨó€ à@ò_§÷Ú_§÷Ô§óž`²`Þw§÷´¿ÿô'§óØ`€£ )@ø§ó€§ 2OÿôÚ_§÷ò_§÷€§@ `¶&`È_§÷ħó€Èw§÷¶®?žÖ` ‹’ °À€¦ @5ƒ*@€ˆ@@2º`€§@(oÿøÖ`È_§÷ħóÈw§÷Š Ä'§ó€¡@ `º €ì_§÷˜! Æ`€ àq@°àx¹6 Š`𠀡@ Ÿ3p?”຀(oÿöÆ`ì_§÷ª¿ÿê'§ó® îw§÷€ö§óú_§÷¦¿ÿ•<àæ'§ó’`Òw§÷@E²"£6p?´@³>°€Ð\ ê'§óº ìw§÷ö§ó€¦à@Ò¸?ÿ ¶ ö#¨Ã°á(Ð_§÷´ ¶@ª \° {ô#¨¿²ÿü´ÿøòs¨·²ÿô®à ¬àÖ €§`@<€¢à "H Ê_§÷€¢à "HÊ_§÷€¢à @€¢à#Ê_§÷Ö§ó‚`Âw§÷’‚ÿÿ@ Ò'§óÈ_§÷Ö €¢à Gÿö€¢à Gÿô€¢à "OÿóÊ_§÷€€¢à#Þ_§÷Öà€q¸ @€¢à|Ä_§÷Ú_§÷Ô§óž`„ Þw§÷˜¿ÿØ'§óÆ € à @Ð§ó€¢ 2OÿôÚ_§÷Ò§ó€¢`@†–ÿÖ'§óÊ_§÷‚`Âw§÷€Þ§ó€¢à|"@°° €¢à(@s€¢à)اóÔ_§÷†?ÿ‰8à„ Äw§÷€¡  `fÆ'§óÚ\ ” Ð_§÷Þ[kŸÃÀ’€2@ ÊG§óètà¦àÒ§óÂ_§÷þÐ'§ó–`Öw§÷€_Þ§ó€¡` `P” Æ\ Ð_§÷ÈXëŸÁ’€"@<Ò_§÷ØG§ó€£ *`EètàÔ\ Ð_§÷ÄZ«” ŸÀ€Ò[¨·€"@/Ò_§÷ÖG§ó€¢à `7” Ê\ Ð_§÷ÂYkŸÀ@’€2@0ètàÆ_§÷Èà€¡ )@Ø§ó€£ @Ä_§÷Ò_§÷Ú§ó`„ Ðw§÷žÿÞ'§óÔ €¢ )@Ö§ó€¢à2OÿôÒ_§÷ʧóÆ_§÷‚ÿÂ'§óˆàÈw§÷€Þ§óÚ§ó`’§óÐw§÷§÷” (žþÞ'§ó@S– )€Þ§óètà¦à€ Þ§ó@€¢à$ЧóÖ_§÷¦$àš?ÿÚ'§ó’àÒw§÷Þ\à”%¹2°?„€™8°¹; €ùÞ§ó@ð€¢à^@à[@›€¢à\ø_§÷ħó” Ôw§÷˜€¿ÿ@ŽØ'§ó š ’¡, ¸@ Ò_§÷Þ`€¢ @ €£à^@  §óÈ_§÷–ÿÖ'§óŠ Êw§÷€oÞ§ó€£`@ €£à]2@ ÒG§óاóÚ_§÷†?ÿÆ'§ó„`Äw§÷€` @eÒG§ó€¢` `S” Â\ Ð_§÷ÖXkŸÂÀ’€@ÊG§ó€¡` `G” Æ\ Ð_§÷ÈXëŸÁ’€"@Ò_§÷ØG§ó€£  `;” Ú\ Ð_§÷Ä[kŸÀ€’€2@4Ú_§÷Ò_§÷Ê`–`‚ ]Þ§óÖw§÷”ÿþÊ7§ï‘: Ô'§ó€¢ Â7§ñ*h Ô_§÷’§ïÆ\ Ð_§÷ÈXëŸÁ” €@Ô_§÷Ú§ó Ðw§÷„ÿ™8 €£  gÿùÄ'§óÖ\ ’§ïÐ_§÷ÞZëŸÃÀ” €2OÿñÔ_§÷§óÈ_§÷’þÒ'§óŠ Êw§÷€  Ú_§÷اó„` Äw§÷†?ÿÆ'§óš Þ§ó€£à2Oÿ„Ò_§÷€ ¸ Ô§óø_§÷¿ÿÐ'§óž Þw§÷¸  ?Ð5 ¨ €ZÞ§ó@Û€¢à{Ô_§÷Ò§ó‚ Âw§÷–‚ÿÖ'§óØ @²€£ d@¤€£ D@¢€£ s@ €£ S@ž€£ w@œ€£ W@š€£ m@€£ M@Ž€£ y@Œ€£ Y@Š€£ A@ˆ€£ Z@†€£ B@ ¸ ê5 ê5 ¨ Ò§óÊ_§÷–ÿÖ'§ó‚`Âw§÷€*Þ§ó€£ 0@ ¸ À5 ¨ ƧóÄ_§÷ˆÿÿÈ'§ó˜ Øw§÷€Þ§ó€£ e@ ¸ – Ö5 ¨ Þ§óÔ_§÷šÿÿÚ'§ó Ðw§÷€Þ§ó€£ a@ ¸ † Æ5 ¨ §óÈ_§÷’ÿÒ'§óŠ Êw§÷€Þ§ó€£ b@ ¸  Ð5 ¨ ħóÞ_§÷˜¿ÿØ'§óšàÚw§÷€óÞ§ó€£ f@ ¸ Š Ê5 ¨ Ö§óÂ_§÷”ÿÿÔ'§ó’`Òw§÷€åÞ§ó€£ n@ ¸ š Ú5 ¨ ƧóÄ_§÷ˆÿÿÈ'§ó˜ Øw§÷€×Þ§ó€£ r@ ¸ Ú¨ÃÚ5 ¨ ЧóÖ_§÷ž?ÿÞ'§ó”àÔw§÷€ÉÞ§ó€£ t@ ¸ Þ¨¿Þ5 ¨ §óÈ_§÷’ÿÒ'§óŠ Êw§÷€»Þ§ó€£ v@ ¸ ž Þ5 ¨ اóÚ_§÷†?ÿÆ'§ó„`Äw§÷€­Þ§ó€£ c@€£ xÐ§ó€¢ H¸ Š ?Ê5 ¨ Ö§óÂ_§÷”ÿþÔ'§ó’`Òw§÷€›Þ§ó@w€£ uØ_§÷Æ§ó¸ øw§÷ˆ€ÿÿ@jÈ'§óÞ_§÷Äàš¿Ð€£`@’ €‘*@ ”ãÿ€Š @€  a@ €  b@ €  c@€  d@€  e@€  fHR¸ §óÒ_§÷€ `@#€Šcÿˆ?ÐÔ_§÷† Þ À€¢ @—(À€ŠÀ@€£àa@ €£àb@ €£àc@€£àd@€£àe@€£àf@ Ä_§÷اóš Úw§÷¸ƒ?ÿø'§ó2OÿåÔ_§÷Æ_§÷” À ˆÿü—2°?Š€ ™9p€£ “fž À ‘3ð?„À›8°™f •; @Ò x€¢ \@‚€¢ *¸@€§ ?@ €§ $@ €§ ^@€§ [@¸ Â5 ¨ €0Þ§óê5 ¸ Â5 ¨ €*Þ§ó¸ ‚ xÂ5 ¨ €$Þ§ó@)€£ UÊ_§÷ȧó` ’`Ðw§÷„" †?ûÆ'§óŸ0°?š€™;p•; @£ u€¢ \@’€¢ *¸@€§ ?@ €§ $@ €§ ^@€§ [@¸ Ò5 ¨ €Þ§óê5 ¸ Ò5 ¨ €ûÞ§ó@)ˆ?ÏÆ_§÷Чó„à’àÄw§÷˜ € ž?÷Þ'§ó›30?‚ —8p•:à@z U€¢ \@”€¢ *¸@€§ ?@ €§ $@ €§ ^@€§ [@¸ Ô5 ¨ €ØÞ§óê5 ¸ Ô5 ¨ €ÒÞ§ó€¡ H3€£ \Ô§óÂ_§÷’‚¿ÿÒ'§ó–`Öw§÷@Š?Ðø_§÷Æ „À€   @ Ð_§÷Ú§óž Þw§÷˜ƒÿØ'§ó2Oÿõø_§÷ˆ *È5 ¸ ¨ €³Þ§óÞ§óÔ_§÷šÿÿÚ'§ó Ðw§÷€«Þ§ó„ ?Ä5 ¸ È§ó¨ Ø_§÷Š?ÿÊ'§ó† Æw§÷€ŸÞ§ó€£ \@€£ *@€£ ?@ €£ $@ €£ ^@ €£ [@¸ Ø5 ¨ € Ú_§÷ê5 ¸ Ò_§÷Ê`Ê5 ¨ Ú_§÷Ö§ó˜`Øw§÷”ÿÿÔ'§ó€Þ§ó@?‚ÿÖÄ_§÷Чó‚ Âw§÷ž‚?ÿ@3Þ'§óÊ_§÷È`†?Ѐ à 8@.¸ Ò_§÷Þ_§÷اóšà’`Úw§÷–?ÿÖ'§óÔ`€¢ }@Ð§ó€¢ 2OÿôÞ_§÷È_§÷Ä§ó† Æw§÷‚€¿ÿ@ Â'§óÒ_§÷Ê`€¡`?2@ ¹? Ö§óÚ_§÷”ÿÿÔ'§ó˜`Øw§÷¹? ‘/0¸ ž%¨ *è3à¨à€EÞ§ó¸ ð5 ¨ €@Þ§ó€ `@€¢à?@€¢à.H ¸ ’ ?Ò5 ¨ ƧóÊ_§÷„ÿÿÄ'§óˆ`Èw§÷€.Þ§óÖ5 ¨ Ö§óÚ_§÷”ÿÿÔ'§ó˜`Øw§÷€$Þ§óÊ_§÷Ƨóˆ`Èw§÷„€ÿÿ@ Ä'§óÔ_§÷Ò €¢`?2@ ¹? اóÞ_§÷–?ÿÖ'§óšàÚw§÷¹? ƒ/0¸ %¨ *è2 ¨ € Þ§óʧóÆ_§÷‚ÿÂ'§óˆàÈw§÷Þ§ó€£à2OüBÐ_§÷@E’’@p’@´@¥’€¢ @° € â\ €¦€`° €â\ „&€‡0°?‚€³8p€¦`2`Ð\ È €¡ *@° €â\ €¡ ?2HÐ\ ° €â\ ÊZ+à“>`ŸÁ@°â\ è\`0ŸÅà\ ä\ 0ŸÄ€Ð[¨¯ÇàèÈ`ÆZ €¡ @‹* ƒ*à”Øà…1`Š ›0`€£@€£ Š`€ †à2@†àŠÿH†àˆ?ÿ€Ær ” ˆ?ÿ2OÿðØ Ær ÃàÈ"`‰: €¡ @† \Ú`€£`\@€£`*@€£`?@ €£`$@ €£`^@€£`[@Ú2  €’`Æ2 Ê`’`Ê2  ˆ?ÿ2OÿéÚ`Ãàã¿0@ x† \Æ/§ëµ> ˆ#¤º€¦ @bð/§ì°€¦ @”§ë¸§í§> ª'­,ð  €¥@`¨& ¤ €¥&h¤€”HŸ> Ø ¢"€šà–@Ø*à° –à´†¿ÿ2OÿüØ €B¯> ‚ ¶À ² @²À€¦ @1´¿ÿî ¶ Áná ´¿ðøà¶à î.`²`ìÿâø.ñêÿäì.òèÿæê.óæÿèè.ôäÿêæ.õâÿìä.öàÿîâ.÷Þÿðà.øÚÿòÞ.ùØÿôÚ.úÖÿöØ.ûÔÿøÖ.üÒÿúÔ.ýÐÿüÒ.þîÿþ€¦ OÿÜÐ.ÿî.`²`°€¦ @ Ä ´¿ÿÄ.`° ²`€¦ 6OÿûÄ °àاëö_@”§ç¬§çÄ^àÂXªHŸÀ@’ òO§ç®`ÿ€¥àÀ@‘.`µ: ‰. »1 € ±/p0Ò^àÊZjŸÁ@’§åú§å±/p0±600Çà舀¡ `Š ” €¢ @Ö ” Š €Ö2 €¢à\@€¢à*” Š € Ö2 @€¡`"@Š ˆ €€¡ Š Ö2 ˆ  €¡ oÿ瀢 Ãàˆ€¡ `#˜ † € à@Ú † ˜ €Ú2 €£`\@€£`?† ˜ €Ú2 @€£ "@ Ú2 ˆ € €¡ ”`*Ú2 ‹2 „ ƒ0°?˜`ˆ  €¡ oÿ〠àÃà€¢ `2”Š ˆ"`’€¡`@Æ Š €$Æ2 € à\@€ à*Š €Æ2 @˜"€ ›30?– …:ð€  ` €  Â¿þ€ `?@Ä¿ü€  \2H ”" € Æ2 ` Ö¿þ€¢à?@”" ¿ÿé˜"€ Æ2  €¢” oÿÖ€¡`Ãà €¢ `† ˆ Š"`€¡ "@Ô ˆ €  €¢ \@€¢ *ˆ € –à ‡d@ €¢oÿñ€¡ Ãà‘8àÒ" Ô" À" Àr ÃàÀr ã¿Pî^`§> -@7wèઠضâX¸À€¥ ú_@'€¤àÐ^` €¢ ì ª¿ÿ€¥`@ê" ö_`î^áŸÅÀÐ^` €¢  ´ÿ€¦ @ô" Æ_`ÄXáŸÀ€Ð^` €¢ Ê ˆÿ€¡ @È" Ö_`ÔZáŸÂ€€¤à@Ú^`à` ž?ÿÞ#` Ò^`Ø` €£ @%k¢¿ø”@yÜø_`°æ_ 0ÄÀèã¿PÐ^`Â!€¢ @9w¸!  Þ`€£à@º`¤ ¢ §> ÒZ•<à¢`ÿÿ è`¤ Ð^`€¤@&OÿøÒZ7°àØî\ì]àê] 0ŸÅ@Àv`À'`Çàèã¿P@5w3´ |¶€°`Øî^Àì]àê]ª°ŸÅ@ÚJ €£`@º )€£` ¦!ˆÞ^À@¥;`º € ¢Àà `€Œ @ ÚJ €£`Oÿô€£` €º ±?`Çàèã½@7v1¶ãÄ® ظÀ ä_' ì\ ê]¡¸ŸÅ@’è\ žýȰÚ]!ПÃ@’?ÿØ\ ”Ö[!pŸÂÀ’Ô\ Ð^ ÊZ¡XŸÁ@’§ó§󸮥¯Ä\ ìX«X•8`˜’ŸÅ€– €@Dê¥Ë€¥`$@1ÂG¥Çú_¥Ï’`È\ ÔG`ÆY+8ŸÀÀ€¢ Ø\ ¶’Ö[!pŸÂÀ”ÔàŠ‚¿ÿÊ&à@ªÿô\ Ú^¡ŸÃ@ÒG`€¥`ˆ`‘)0†"…(ðº@Oÿâ’`€ ÂG¥ÇÒ ‚ÿÐ& 4@° ò\ ä^aŸÄ€Çà‘è ö_¥¿ì§ó¨Àæ\ º%¸ª%€ê'§óÞ\ë@ŸÃÀ§ó€ `4Oÿ¶Ä\ ÇàèÀr – ” Àr Àr Ô" À" $Ö" (À" ,À" 0À" 4Ö" 8ÃàÀr ã¿P‚7@9v²àظ!¤´žð^€î^ ì]à(ŸÅ€ @ÿÿÞ°Çàèp°Ü(4DØèø”pã¾à@vøs¨¯’aŠ ØÀ&` @ú\¥>àÿÿ½§¿‰4 Þ_`†€…8àø[à(‚ ¯8`›-àŸÇ‘3`€¤ Ðv`@À&`+  ø[¨¯¬a°–>Pª¦ ¶` ös¨¿¢`æ#¨·¬˜Ð_ ¨ ¸ Þ_`ö[ê°ŸÆÀÚJ Ø_`€£`-@×Ò] Ä[!0š§»–”ŸÀ€˜ €2@†° @?ÿÿÖ§»"Ä—2à‘: €¢à ’@N›*àØC@ à ¦à¨ €¤À&HñÖ_§¿â_`’ – ° ä\hP±> ŸÄ€Ô[¨¯Çàè¦à€¤À@?Æ_`® î'§ßÒ] ¨ ÂXë0ŸÀ@” ÂI€¢ Ð_`ÖZ- Ð] ŸÂÀ’§·@yÅÒG§· È_`о ®Â€¢ ¶öw§×ÚY*°ŸÃ@Ð] ’@w‡ÿØØ_`Ò[*°ŸÂ@’@w€€ºÖ_§¿ÈY*°ŸÁÐ] ’@wxÿØÆ_`ÂXå@ŸÀ@Ä_`ÞXª°ŸÃÀ’@wmà @wkàH€¥Ö_§¿ì_`– ’ ° ú]¨P±> ŸÇ@Ô[¨¯Çàè¦à€¤À@¨ Š Ê'§ß€“Ö_§¿à_`– °’ ° ò\(P±> ŸÆ@Ô[¨¯ÇàèÀ'§ç€Û¨ ” Ô'§÷€×¨ ¦à€¤À@¨ Ø_`Ò[*°ŸÂ@Ð] ÔF`’k–?ø– @xFÐw§¿Âà€¢ Â`Ä_§¿Â  Þ^` Ú_§¿Þs`0ö_§¿öv` €»¨ è_`– À’ ê](PŸÅ@Ô[¨¯€Î® î'§ë€®¨ † Æ'§ï€ª¨ ˆ È'§ó€¦¨ ¦à€¤À@Ô_`Ò] ¨ ÊZ¡@ŸÁ@Ô[¨¿€@´Þ¨·Þ&`€–¨ ô_`– Ð’ æ^¨PŸÄÀÔ[¨¯€ªö[!0š§»–!”ŸÆÀ˜ €@ /‚àØÄ\ÞX Ú[æØŸÃ@€&Ö_§¿ö§»€¦à@ €¦à@€¦àHˆ €¦à"HŠ €Ö_§¿€¦à@€¦à"H’ €Ö_§¿† Æ'§ß€Ö_§¿È'§ß€ Ö_§¿Ê'§ß€Ö_§¿” Ô'§ß€Ö_§¿Ò'§ßÖ_§¿ ÂÀ€¢àÐ^` €¢ Æ€€¦ ÒF`@wÄÐv` €Ðw§¿’ ” @w4– Â_€¢ ´ÒF`@w¶Ðv` Ðw§¿Þ_§¿Âà „`Ä#à Ú] Ø`Úw§Ç€£ 2@¦àÆ_§ÇÊàˆ`È àî_§×€¥àÅÀ¦àÐà” Ô%à€¤À@¨ Ò] ö`Òw§Ï€¦à@ Ø`– € Ö"`€¤À@¨ ö] €öw§ÏÀw§Ïÿþ[ÔD`®§¿† È^`„ 8‹*°ÐqÂ]À„  OÿþÂpÀÿþ:§¿Þ`šàÚ$`¨ ¦à€¤À&Oþ”Ð] ä^` Ä€'€¤ Æ€€¦ ÒF`@wlÐv` € ° ’ ” @vÜ– €¢ @w`ÒF`Ðv` €° ’ÿýK” Ò^` €¢`"Â@ ° ;k¢ø”@w° ±> Çàè° ±> Çàèã¿@@9t¸!ôºÞ €£à@?ƒ>`¹(p-¤ª Øâ_@€¦`7¦€£à@) î ÄLà† ÿ€ àÀ@¨ Ä7§ý€ ì\`”àØÒ_@ ÊZ`’§ýÈYjŸÁ¨ì\`ê]ªŸÅ@‘=àÞ\`¶Ú§ýØ[êŸÃ‘;`€¦À@   ¯= ¦Àî €¥à@€¤*oÿÝÄLàòLà€¦`@ Þ ° €£à@€¦ oÿͦ° Çàèã¿@Ê €¡`"@9° @9t›>`¸ ¤™+p’¢ ”àØàZ@ €¦`+º§ý¤€¡`@¸æ ÞL ¨ àÿ€¥ À@ Þ7§ý€î§ýì\ ’ê]ªŸÅ@î§ý€¤À@ ¸ æ ³: €¤à@¤€€§*oÿêÞL öL €¦à@ Ê ° €¡`@€¦ oÿÚ¤° ÇàèšÐ •*`‹2 €¢@ €¢ "@ š Ð`š`€¢Oÿû€¢ Ãà Ãà ã¿@+sî_¨¯) ªc\à_ ¦?°¤@è d¢€€¦€æ^ Xîw§÷`ÀÄ`Â`8€ @"HÖ` À@u|Ò_§÷“= @w±@voÔF` Ø’bà\€ ‰*°ÔY@un’ ôw Æ`8Æ'`Ö` €¢à@†€¢à-@udø® Øì\€Ú] Ø[j°ŸÃÐ^`@vt@vR@uXÐ^`Â(€¢ È] ÆY- ŸÀÀ’§óº@uN`Ä] ÂXª°ŸÀ@Ð^`@v`@v>@uD`â`8“= š§ïÖG§ó`¹2 ª Ÿ5p?™;à@wx”€@  3 ´aæ@v)€€ ¤?ù@u-`   ðº @u(€â`8ø]  €¤`Ò^`ê_+0»d@•?`ŸÅ@Þ] ®“= Ú[ëàŸÃ@Ø ¨’– Ö" Ô] – ˜?ÿÊZ«Ð”ŸÁ@š ð  ’?ÿ€¢`@Ò% Æ] ÄXáŸÀ€€¤ @’§ÏòvàØ] Ö[+ØŸÂÀÔ_§× ˆaàÒ  ævàôvàÒ&à@u耤?ú±< Çà耤 2@Ĥ?ý) š!æ@uÝ€ €¾¤?ù@9/ 9@tÞøº Øî\€ê]àÞ]j°ŸÃÀÐ^`@uî@uÌ@tÒÄÀ"€¤àÄ]àÐ^`ÂX­ ŸÀ@’§Ëì`8”š`$ÖG§Ë“=   ±4 ¢ ‘4p?™: @vÿ€¢?ÿ"@3 òvàôvàævàÐ&à7 ¦áà@u¬€¤?ú±< Çàè3 ´aæ@u¤€€…¤?ù†áà€¢à®€@A– ØÐ^`Ô\€ ÒZ ÊZaXŸÁ@’§ÇÈ`8ª€¡ @“= @vÞ”€¨@vᔨ9@tøº Øä\€Þ\ Ú[ê°ŸÃ@Ð^`@u@u{@tÅ€¥ Â\  %ÒG§Ç¤?úìXiПŀ«40?Ð'§Ç°£>0â&`$òvà±< ôvàævàÐ&à@udÇàè@u`à€A¤?ù€¢à@€¢à@uY`H@v¶’ €¢ ˆ"òvà‹10?ôvà¤?ú†ævà…8ðÄ&à@uI±< Çàè@uDà€%¤?ù@"9° Øä\€Þ\ Ú[ê°ŸÃ@Ð^`@u8@u6`PÖ dÔ `™*à# “* €¢ @€¥ @ òvà¤?ûôvà±< ævàè&à@u$Çàè@u à¤?ù±< Çàèã¿Ô_¨·Ò_¨¿Ð_¨ÇÆ^àà_¨¯Ôs¨ßÐs¨ÏÒ#¨× ÀÀ®€ à€¤?ý@¬–î`€¥à@§¢`€¤?þ@€¥à$@£–?þÔ^`– ²?þôZ â  ¬@€¥ @ ” –à€¢À&OÿùôZ –?þ±:àÇàè–?þôvà±:àÇà耤?õ@/€¥à$@ˆ–?õ¸ ª æ^`è\ÀØ €£ @€£ 2@ª`ú] ä_`(Ä€€¤ ð\ @uÑ€@ €¦` ä\ €¤ *ü¿÷ð\ î`€ª`–?õèvà±:àÇàèª`¸ €§&OÿÞæ^`–?õ±:àÇàè$@[–?ùè¨×ê[¨ß ?ÿ¤ æ[¨ÏÂ^`À#¨»à#¨·ês¨Çè#¨¿¨?ÿêX@ب·Þ` šÀ €£`(@>¤ Ä]`ìX (Å€9€¥ à] @uœ€@€¥à@%  î[¨Çæs¨¯Ô]à’–˜ÿþ š€¢?ù@®à  €¤$Oÿôæs¨¯€ì] ±: –Çà耤` ’”æs¨¯–˜ÿýôš€¢?ù@ ì] €¥ *ý¿Óà] î`€¤ ±: –Çà褠ި»šàÚ#¨»€£@&Oÿ¹Â^`–?ù±:àÇàè–±:àÇàèã¿PÊ`€¡`@1@9q/Ô^`¸"„¬àغ¸`¢   î_@ÒZ€ÐZ`€¢`ÿù÷” Ö ˜`€£ @ ¤"Àæ^`ž¿ÿ›;àÀ’ @uŸ•+pÖ Š‚ÿÿ@ Ê' ê]àè]`0ŸÅÐ^`Àv`Ê €€¤@  ¢`€¤@&OÿÞÔ^`Çà肆 ÄZ`@q’ ˜!œˆžÀ€€  € € ` † 0ÄX 0€   ø¿û€ € ÃàÖZ`0k‚Š¿øÖpà”Àr`0@sОÃàã¿P’ÿÿ¡”²` ÿÿÚèã¿Pâ^` »>àÄ@4€¤`à\`0Ú`€‹@@+®`(Ð\`(€¢ ÞZ €¦€2`® æZ @uLæuàä`€¤ @@t΀@ ê À¨…ÿ@è& À@uEÀv ¸Ð]à€¢ *ú?èÞZ Ú`€£`2@ ¢ì\`( Å€€¥ ’ÿÿÁ”¢€¤ *ü?Ñà\`0Çàèã¿P‚5@7p® h¶ã䔸Àž¬’ÿÿ³– ’ (”ÿÿ®– ’ P”°ÿÿ¨– @uèã¿PÆ@€¦`ö^`@t€€2@ ò^`îàÀ€¥à@´à@uîàÀðvิàô&àÀò^`€¦`*þïö^`ÇàèÊZ (Á@ €¡`ÔY`€¢€ "`– ÊY`€¡`*ùûÔY`– Ãà‘:àã¿Pô`(@7p€¦ ¶â@ ¸À7´àØ+ î_’}ð’ ì]àè]¢8ŸÅÂ`,€ `@ – Ø  Ô_ †>’ÊZ ÄYb8ŸÀ€Ð`8€¢ @ '¤àØ â_šþ’ à\`ú\"8ŸÇ@è`  ª|’€¥ @ ¶`Øô_î^ ì]â8ŸÅ€€' €¥ † ØÄ_@ €¥ ’`ÔX ÊZ¢8ŸÁ@€ '@’`ØX Ö["8ŸÂÀ'¤àØú_â_`à\j°ŸÄÐ^`Þ_`’Ú[â8ŸÃ@Ð^` €¢ ê_`è]j°ŸÅ²€ø_`3 ¬| ²ø_`î_"8ÅÀèã¿Pè`€¥ @¬`¦ ª ö^`Ò^ÀîZ`€¥À`ª`ÿÿè ¦à€¤À&Oÿöö^`Çàèã¿0@7p/¶à\¬àظÀ) ú_¦> ê_`’ä]b8ŸÄ€â`€¤`2@ô^`(â_`ò^`Þ\b8ÃÀèä^ Ä€€¤ „àØ+ Â_¨|(’ôX`æ^¢@ŸÄÀ” ô^`(Æ€€¦  Ô^ šü0– ج ö_ ®§ã§ã@q—’Ê^à’ÈYb8ŸÁô^ €¦ *þ¿õÔ^ ô^`(Ð^ Â€¢ Ô_`²"0´ ÒZ¢@Â@èÇàèã¿@¡> ¢ €¤ @=´ @/oÒ^à- ®ã¨¡ðªÀ šþPº@¬@ – ئ ¤àê]@ Ø]`š§û–”ø[!0ŸÇ˜ €2@dš ħû€  @€  @€  ¸ ý£d@€¤ ¦à¤ €¤ÀH¤ Â]`– À’ ÞXhPŸÃÀ”š ±;`Çàè´ ¤ ¦à€¤À&Oÿ×Ò\ €¦ @"Æ`€ à$@=š ¬`´ Ê^`¨ ¶ ÈY@ÒY €¥ `ÿÿ^Ð^`ÈZèY ÿþÊ’Ò ´ ¶à€¦€ &OÿïÊ^`š ±;`Çàè’ ” @qœ– €¢ š ±;`Çàèø^` ®Ç€§ Ô €Š€@ ÿþ˜’€@’ÿÿ”ø_ 0€§ *ÿ?óÔ š ±;`Çàèã¿@+oô'§û)ª`ì¦ Øöw§ï @¸â\€¦ 2@ì§ûî_§ï@soÐ]à€@ Ô_§ï@sq’€¢ "†´ ¤€2Ð\`ì§û€¥ @¤ €3æ§ûÞ_§ïÚ\`Ð[àè[j°ŸÅ º´<`’€¢ `  î`ð `¥À`€¥àÅÀ `@p’`€@¤ €æ§ûÂ_§ïäX`äw§ßÔX`Ôw§ç”§ß@s@’€¢ ÊU´ ¤Ð\`ÄZ!x”§û–§ïŸÀ€’æ§û€¤à@7¦§·ê\`ö_§ïÆ]j°ŸÀÀÐ^àúJ €§`-@.¦§·ð\`Ö_§ïÊ^*°ŸÁ@ÐZàÈJ €¡ i@%¦§·è\`5 Ú_§ïØ]*°ŸÃÐ[`’¼h¬ ®’à @rZ” €@ÔG§ûÖ_§ï@s’´Ä €¤ Ô ž‚¿ÿ@Þ$ Ä\`±> ÂX¡ŸÀ@Çà覧·ÒG §·ÿ÷” ÖG§û’Ø_§ïÿø`” €¢ @€¤ "Ä´ ò  †ÿà$ 4@´ ø\`´ â_!±> ŸÄ@Çàèú_§×Ç@(€§`Æ`€ à@  ê_`(ˆ|p¶Å@€¥`ð]`@r1€@ ˜’” @o¡– €¢ Ê´ €¼Â_§×”’ÿý9– ê]`€¥`*ýêð]`ú_`0€§`*ÿÝÆ`è_§× Å€¥ ´ €PÔ_§×kÐ ¦ –?ø´ €¢ @6î\àÅÀ*€¥à¬Öà€¢à"@!¬à0ö]àÒ] €¦À `  ÚàÞ `£@`€£`Ã@ à@oZ’`€@’ÿüœ”Ò] ”ØZ`0Øu Àr`0@p½€î] ¬à0î] €¥à*ýÿÜÖàú €§`@’@O”  €¢ è] 0€¥ *ý?ÇÐ ´ € Ô_§×5’ž Ø” Ú\´ ì[`ê]§PŸÅ@Ô_§×¶§×€ €¢ ðZ 0  € `@’ÿü¥€¦ ”*þ?øðZ 0€¦ "@KÂ_§×Ä €  @î_§×ÅÀ €¥àÆà€ à2@î]à0Ò]à(ÿý î]à0€¥à*ýÿøÆàȧǀ¡ @!  Ê €¡`@ º@Ø\`§?`Ð_ —,àÔ[ 8ŸÂ€“2àÐw Ò € Ÿ:`ê\`ì§Çè]`(³- ŸÅ‘6`’ Ðw Ÿ:`öG§Ç›+ð •.ð@qîÒ_§Ïú$ ð_ ® Æ€¦ ® 0ð^ 0€¦ *þ?þ® 0ú_§×úuàÐ_§Ï€¢ È\`ÆY 0ŸÀÀ€Ê À@€ `ÄX`0Àp`0€  ‚*ø¿ýÄX`0’§·ÿög” Ê €¡`@@rÄ€ €¤ Ò ‚ÿ@ Ð$ â\`±> Ô\aŸÂ€Çàè±> Çàèã¿Pô p@9mÐ `³. ¸"H®&@¨¸à€§@&Æ d€ À@ ” ÀÐ^ X“: ‹*p’‰? @q˜•)0ø& d€-€¢@ º X#Ð^ X `ØÞ]¥? ™, Ú[àÖ[`8ŸÂÀ“3 Ðw`-ª ˆè]ö ¦àæ% ö& œø& `ÇàèÔB ‡:`ÄZ —(ðƒ*°Š€ š€€¡@ ` –„‚#`Ô`€¢ @„ Ô1`Š`€ €(oÿúÔ ˆ!@ ‹10?˜“;0†À Æ" Ãà‘8àã¿P@9mÂ`d¸ ôºø``¯(`ª%À­/ €¥@@  „üx–@•>à˜ÿø@qŽ’ø``Â`d7Ð^`–'šàØÒ^`hô_@ •:àØ^ Ê[)ØŸÁ@– @nÿ®È €¥à’¢È@ @È" £=àú^ Ð^`hð_m ŸÆ’ èF`d’ä^`X§-0€@q#•,pà`džÞ&`d±=àÇàèã¿P@-l¬£ä©? ª€ Æ@ €¦`Ò^à® @qZ²€ €¦÷•> ’›?`™= ® @qW–²€¦÷@•= à^à—=àÿÿž’²@€¦ÿ²?õ±>`Çà耦ö@€¦ôà^ಠ€Bú d"@Z²?ôà^à€¦ÿ@6„âȸ@ € `@²?õ±>`ÇàèÈ €¡ @²?õ±>`Çàè Ê |ˆ²@€¡` @’²?ý@m°±>`ÇàèšàØâ]@ Ø\`Ö[&pŸÂÀ’`(ÔD 4–@m¡Ô ˜€¢ "@)²?ý²?ý@n¹’±>`Çà耦`@±>`Çàèú d€§`@±>`æ t¤§@@¶ Xô\ X±<à«.0’€•< @púè |€¥ "@ú$ tÒD tÿÿºú$ t±>`Çàè±>`Çàèã¿P‚- @/lª¼Ð®á”’¢Àž¤@”)¦ Ø `@n–â\@”  ™> ’Þ\`Ú[瀟Ã@–æ`dUU–>«è^`X•<à’J€ ‘2p ’ŠÀ 0‰<à‡9`ª À…=`ƒ(°ì®À5@mõ”“<à@p*@nè@næ Hú\`“=`Þ_kàŸÃÀà\`–” P™> ´$Àø\)ø±> ŸÇ’•.0ì5à@p¢’ö`t™8 ô&`dš&À—;`”# ¥:° ’ € ¢ â&`tÇàè—: €¢à@€¢ÿ›@ €¢ÿ™"@ ”?瀢ÿš"@”?ꀔ<€¢ÿ›"@”?耢à"H”?ý€”<€¢à"@”?쀢à"H ”?逢à"H”?뀔<Ãà‘: Ãà‘: Ãà‘: Ãà‘: èÐôÜÄ                ¸‚@?ÿÿ‹: †ã„–!ç‡8à•2àÀž€¢ @›* ØC@ Ãà‘8`‚ Ãà‘8`‚ Ãà‘8`‚ Ãà‘8`‚?›Ãà‘8`‚?šÃà‘8`‚?™Ãà‘8`‚<Ãà‘8`ã¿P@7k5¶â\® Ø¸Àè_’ì] ê]¥ˆŸÅ@” € Çà‘èæ] ´ ä\åˆÄ€èã¿P@9k5¸!䲠ض+î^À¨bÐ% À¢¿8ì]àæ]©˜ŸÄÀ’ ’Àº@lY€ @oíÐ'`à`±< Çàèã¿PÆ%€¦ ºì^ (Å€€¥ Ð] @nø€@î^`Ð] ÅÀ €¥àð]à€¢` î]à€¥à*ýÿûð]à@mßô^`ôr Ðv`ì] €¥ *ý¿èÐ] ú_`0€§`*ÿáì_`(Çà‘è ‚ @k’½@–à˜‹: ˆÀ€¡`žš @€¡`@€¡`"@ š`€ š` €¡`"@ š耡`2@š` š0Ãà Ãà Ãà ã¿P‚5@7j¶ãü²¡P¸À”î_%ž¢ hðà ¬ ì%àèB «-0¦@Ÿ,ð’À@ @oC°Çàèã¿Pî`@9j€¥à¸#p@%º ì^ (”ýx®@ Å€€¥ ø] @ny€@˜Ò] ” @ké– Â€¢ Ø À€£ @€£ ˜?ÿØ' À€£ 2@ì] @näÀw ¸ì] €¥ *ý¿æø] @mL’ö^ (ÆÀ-€¦àÐ^à@nV€2@ ö^à@o9ÐF`Ò^à” ˜@kÖ Â€¢ ö^à€¦à*þÿïÐ^à€ú`3# ¬`Ø }€ê_@è]`æ]%€ŸÄÀ1”’@¤# @@l;Ö^ šã °@ Çàèú`€§`@Ò^ (ÿù£Çà‘è ã¾ @+jøs¨Ï ·>àªaÄö#¨¿¶@¤} à^`¸À»> ðs¨·ú#¨¯øs¨Ç Ä€¤ ʨ¯´ €¡õ@  Ð`ø^`Ð#¨×€tî^`°?ÿ¸ ð#¨×€oî^`ƨ¯ô\ € ÿþ@®?ÿ¸ î#¨×€fî^`È`ø^`€¡ @`È#¨×Ð €¢ @¥˜ ì 8;® ¦`ØÒ\ €¥ ì^Àä^`è] È]+0™d@•; ŸÁÐ[¨·Ö] ÆZëØŸÀÀ’§ßÔ] ÒG dÄZ«àŸÀ€Ò§ß€¢`@€¤ê¨¿# º š|x® Ÿ5`¨À ° ê_§ç§60?Š@ð`«> €¥ÿ"@l®àâ` Ú ,žÿ€£`@?£;à§Ë’!(@k¾•?`°§·§·’!8@k¹•=`–§Ë!@”@k¼Ò[¨Ï@lÒ@l°@l®   ”§Ë˜`Ø’È^À ™<àÖY ÆZ瀖ŸÀÀÐ[¨·’!X§Ë@kŸ•?`’!8@k›•<`–§Ë!@”@kžÒ[¨Ï@l´@l’@l  –’ Ø”§ËÐ^À ’™<àÄZ ÂX§€ŸÀ@Ð[¨·°§Ë§Ë’!`®à@k•?` – ØÔ^À ÒZ •<`ÆZl“=`ŸÀÀª!@”–@kxÒ[¨Ï@nV@ll@lj  ’„ ØÐ[¨·”Â^À™<àÞX`Ú[éøŸÃ@–ҧߺ`€§@ $OÿŽê_§çÊ ˜ÿ@¿Ø$ ð] Ú^!ŸÃ@€ºî^`€¢ @M€¢ @K€¢ @C€¢ ú ,€§`@®Ú¨×ú[¨Ç¢ÿ¦§·•<`’`@k>§·`˜”X–`È@kAÒ[¨Ï@lW@l5@l3øØ¨¿’X‚ Ø”`ÈÞ^À‘3 –† ð[à«0ð?™=`Ú^'€ŸÃ@Ð[¨·’`@k •<``˜”X–`Ð@k#Ò[¨Ï@l9@l@lø’XŠ Ø”`Ðä^À–™=`ì\ è]§€ŸÅÐ[¨·€rî^`@oâ[¨Ç@l`è€lî^`Ò¨¿Þ ,©2`® €£à@<¯5ð?è[¨Çª§·ÔD $'’ ¤àØ@jó§· ˜”?X– È@jöÒ[¨Ï@l @kê@kè?øì^À’?X” È–ú] ™=àÈ_g€ŸÁÐ[¨·Ô¨×Ö $”¿ÿ’€ •:`’ @j× ˜”?X– Ð@jÚÒ[¨Ï@kð@kÎ@kÌ?ø’?X† Ø” ÐÄ^À–™=àâX Â\g€ŸÀ@Ð[¨·ÖD $Ò_ Xì[¨Ç•*ð¢@  ˜”¿X– Ø@j¿Ò[¨Ïæ¨×“<à@ló@k±@k¯¿ø  ØÆ^À“<àÄXàÂX«àŸÀ@–°àØ’¿XÚ^À” Ø™=àê[`Ê]iøŸÁ@Ð[¨·Ø $–À Ö#¨×î^`ÅÀ_€¥àî[¨Çª -² Øà˜”ÿX–ÿÐ@j•Ò[¨Ï@k«@k‰@k‡ÿøè^À”ÿÐÞ¨¿’ÿXæ] ›3àÐ[¨·˜ Ê\瀥30?™< ŸÁ@–ú_ Xà˜”ÿXì d–@j{Ò[¨Ïð¨×“> @l¯@km@kkÿøÖ] “> ÔZëàŸÂ€Ò] –”™< ÈZiø’ÿXŸÁÐ[¨·Ä€¤ â (€¤`"H訯ä¨×€¥ Þ t°%€¤#À@ ä' tæ¨×ƒ> •(p‡<à…(ð’@@m訯ð' d€¥?õ@ Æ€€¦ Ê ˆ`È& Ð ˜€¢ @Ð[¨·@j©’ Æ€€¦ ª ±=`Çàèò¨¿’ Øö^À €¦`@ Ð[¨·’Ö^àèZé8ŸÅ” ª€ì¨¯ò^à€æ^i8ŸÄÀ’ª"@쨯à^àì\"pŸÅ€Ð[¨·ì¨¯€¥¿õ@ ±=`ø º‡?ÿ@ú& î^àØ]áŸÃ±=`Çàèã¾À@9h’ ðw§÷¸!4¶@jQ§ËÐ_§÷³>`@låøZ ¸Ô_§÷€¦`@ €5ò" ¨–§÷ô_§÷’ ” ˜?ÿÀ& ¤5@lÜš Ô_§÷® h- Àw§§ºÀª½(²§÷¢À `(´`PÀw§¯€¢?õÀ'§¿@Àw§Ÿ€¢ @p?ùòs¨·‘: ¤ Ðs¨¯¨a¦§§äs¨¿®§Ÿ¬§›ès¨Ç–§§˜§Ÿš§›ÿõ¨’Ô_§÷Ÿ: šaÚs¨Ç–˜Þs¨¯šòs¨·äs¨¿ÿõ›’™: –aØs¨¯Ös¨Ç–˜Ô_§÷šòs¨·äs¨¿ÿõŽ’€¢?ý@;°€¦?õ@  Ê_§÷„þ@Êw§¯Ò`dÒ'§¿ÈY`XÈw§·@j™À€’§§Ô_§§€'€¢ ’§§•> ˜%@l– ž Ø’§ËÚ^ÀØ[`Ö[$ÈŸÂÀ” € Ô_§÷æ È€¤à@è Ä€¥ @Рd€¢ 2OÿžÀw§§€a8@iy’§ËÇàèÔ_§÷€ °`Øî^Àì]àê]¢pŸÅ@Ô_§÷@lj Ð_§÷ö È€¦à@@lkÇàèã¾p@)gô'§û¨"töw§ï˜`ضÀw§ç€¦ ê^À 2@ø§ûà_§ï@kÑÐ\ €@ Ô_§ï@kÓ’Ðs¨Ï Â7€¢ ® ±=àÇàèø§û€§ "@Ê_§ïÀs¨Ï€4Â]`ì]`È]ª°ŸÁÐY` ´ü`„’À€¢ `  ì Â `¥€`€¥ Å€  @hx’`€"@Ô_§ïÀs¨Ï€Â]`ÖZ Öw§×ÒZ ”§×Òw§ß@k¢’Ðs¨Ï €¢ ® ±=àÇàèØ]`”§û–§ïè[!xŸÅÒ[¨ÏÂ]`úXo ŸÇ@§Çšá¦À €¦`„àà@l°€ ®§Ÿ€¦`®§Ÿ@l°®§Ÿ§Ÿ’ ÿ ÖG§û’Ø_§ïÀw§—ÿðᔀ¢ @Ê[¨Ï€¡`"ÁB ® â`¤„ÿä" 4@® 5² Ø® ö^À±=àø^àà_!ŸÄÐ[¨ÏÇàèÐ\ÿ€ÿû¹’§—€¢ @˺ +% ¬`ˆ¢ÿ`ì^À¸ÿˆ¦¾Ø´À°   ð#¨×+ìs¨ßð#¨çˆ`h†ÀÐXàHÿû£’§—€¢ @µÐ_§¿ÿû’§—€¢ @¯'¨áPì_§—¦ Ê^ÀÒ`Ò#¨ëÅ€€¥ Ò] ˜½˜” @h–  €¢ ì] ¦à€¥ *ý¿öÒ] €»<à® €—Ð_§—»<àšàØØ^À ±/`Ö[ ÔZà(ŸÂ€‘6 Ò_§—º€¢`"Ê@ Ô¨ç®ÂZ`Âuà®àÒZ`€¢`*úüÂZ`Ԩ瀢 @+À#¨ç€ ì§§ˆ`ØÐ^ÀÆZ ÄXï ŸÀ€§Çì§§€¥ @ê§«€Ø[¨ßÿû0ªØ[¨ßì €¥ÿÀw§oÀw§wŠ Àw§Ê# @|À'§‡Ú¨×€£`@ž %˜ ØÖ^À ðZàÔ^/ ŸÂ€§Çè_§Ç“=`¤ €®ÿ®ÿÞ#¨×Ÿ5ਧš ¯3p?ƒ5`€ˆ@@°?þ€ •<à–§ç™=`›= @k&’€¢?õ@°€¦?þH€¦?ô šþ@i$À € ±> @©€¦ @ï°?ùÀw§±> ðs¨¯™<àª¿ÐØs¨¿°§o–§oês¨Çª§kš§kÔ_§ç˜ús¨·ÿóò’ús¨·•<à’¿ØÔs¨¿—: ˜Ös¨¯–šÒs¨Ç’§ŸÔ_§çÿóä‹: Ô_§ç†¿à‰<à–Ês¨¯˜šÈs¨¿Æs¨Çús¨·ÿóÖ’€¢?ý@¾°€¦?õ@±€¦?þ@¾Ä_§o À€»€  Â_§çšàØØ^À à ` ð[ ê^/ ŸÅ@§ÇÖ_§Ç”$€ «: ¿ÿŸƒ5`’ÿ©2`Š ‡1p?‰5`€ˆÀ@?®§¿¸@h̰?þðs¨¯•<ିÐÔs¨¿ª§o¨§kÔ_§ç–§oš§kìs¨Ç˜ús¨·ÿó£’Ô_§ç“: ˆ¿ØÒs¨¯‹<à’§ŸÊs¨¿–˜šÈs¨Çús¨·ÿó•‡: Ô_§ç‚¿à…<à–Æs¨¯˜šÄs¨¿Âs¨Çús¨·ÿó‡’€¢?ý@o°€¦?õ@b€¦?þ@oÚ_§o Ã@l€£`Þ_§çà#à ¿ÿÆ¿¸•<à–§ç™=`›= @jƒ’€¢?õ@°€¦?þ@€¦?ô@hƒ¿¸€—> @€¦ @N°?ùÀw§€—> À#¨×€y—> Ös¨¯•<à’¿ÐÔs¨¿°§o¨§kÔ_§ç–§oš§kÒs¨Ç˜ús¨·ÿóL’Ô_§ç‹: †¿ØÊs¨¯‰<à–Ès¨¿’§Ÿ˜šÆs¨Çús¨·ÿó>…: Ô_§çž¿àƒ<à–Äs¨¯˜šÂs¨¿Þs¨Çús¨·ÿó0’€¢?ý@°€¦?õ@ €¦?þ@Ú_§o Ã@€£`Ø_§çà#  ¿ÿ¬•<àê_§çêw§wØ`dØ'§‡Ö]`XÖw§@h3¿è€˜½˜@jW‘> €¢ @:®˜½˜’§o•> @j&– €¢?š@®À#¨×€ €¥ÿ›@+ †!Pê¨ëÄ^À €¥@@@h¿þ£Ô¨çÐ_§—€¢ @gåÀw§—Ç@ €§`)® ØÒ^ÀÐZ`ÊZ 0ŸÁ@º @h  ”àh®À Ð]à ÿùò’§—€¢ OþI+€® ® Ð_§—€¢ @gÇÀw§—Ç@ €§`9  Øâ^Àô\`Ä^ 0ŸÀ€’§Ÿ!kÿíâ” ¢?øÒ_§¿”À@g«ò[¨ÏÆ@€¦`ì`º¸…¿ÿ@ ø'`3º`Øö^Àä^àæ\¡ŸÄÀÐ[¨Ï±=àÇàèã¾`@/e%®à4+ ¸Àž Ø»> ¨~Pä_¬?ÿ´ ¦® €§`ìw§ï@C¬  Ð^à˜b¨à¸ Ö\ ÔZ갟€ÒJ €¢`-@6–â\ š§ëÒ] ”à\a0ŸÄ˜ €2@d˜ Ƨ뀠à@ € à"@ ® € à"H¬ €¨ ¬ €¥€@Q¨ ö\ Ú^ê°ŸÃ@Ð] ´€¨ €¥€@G¨ Â\ ”§çÒ] ÞXa@ŸÃÀ€@>ÄG§çÄw§ï¨ ¬ €¥€&OÿÆÐ] €¥€@5’äøÈ_§ï€¡?ÿ`@i•§ïÆ€€¦ €¥à@§ï@i–°€Ö\ @i™°Ö\ ÔZãધŸÂ€§”@i—’Ò\ ÊZcè’ŸÁ@˜ ±; Çàèú\ æ_a°ŸÄÀÐG§óâ\ à\gh’ŸÄ˜ ±; Çàè’äø@e†˜ ±; Çàèã¿@@)dî_¨¯  ¨!ܤ ª îw§÷£>`šþP®@ €¤`@<¦  ¨ Ð] –"0’ Ø¬@ ô]@ Ú^ Ø[j°ŸÃÖJ €¢à-@,–ò^ š§óÒ] ”Þ^a0ŸÃÀ˜ €2@U‚ È§ó€¡ "@  €¡ "H¦à€ ¨ €¤À@¨ Æ^ ÄXê°ŸÀ€Ð] ¤¨ ¦à€¤À&OÿÙÐ] € €¤ ’å0@e6‚ ±8`Çà耤 "@ÿÄ€ €¤ ’åH@e*‚ ±8`ÇàèŠÿ€¤À&@’åp€!æ&à€¤ÀH €¤ ’åp@e‚ ±8`Çàè Ä€’ ” @fH– €Ú_§÷’” – @e˜ €¢ ‚ ±8`Çàèæ&àà' ‚ Ðw`±8`Çàèã¿ @9c- À'§ã¸#¼ª¿ØÀw§çº®?ÿî'§ó¨@“> –§ß˜§ãš§çès¨¯ÿÿf”§> €@I9ô§ß¨ Øê_@€¦€@›> ì§ã€¥ @‚¡hð_@î î'§ó€Ô]`Æ_§çÔ]`îàpî'§óÒZ¡°¤ ±< ŸÂ@‘=à’Ð]`ÈZ'hŸÁÇàèÖ]`™+p”§óÒ^À ÊZá@ŸÁ@€2@ ¤ Þ§ó€£à@ #  è¤ ’@±< @d¨Çàèä§ã€¤ @ 7²áh¤ æ_@±< Þ$àÇàèú_§ç¤ ±< Þ'`pÇàè¤ ±< Çàèã¿ @9c-À'§ã¸"ª¼Àw§çº®?ÿî'§ó¨@“> –§ß˜§ãš§çès¨¯ÿþü”§> €@I9ô§ß¨ Øê_@€¦€@›> ì§ã€¥ @‚¡ð_@î î'§ó€Ô]`Æ_§çÔ]`îà|î'§óÒZ¡°¤ ±< ŸÂ@‘=à’Ð]`ÈZ'hŸÁÇàèÖ]`™+p”§óÒ^À ÊZáŸÁ@€2@ ¤ Þ§ó€£à@ # |¤ ’@±< @d>Çàèä§ã€¤ @ 7²á¤ æ_@±< Þ$àÇàèú_§ç¤ ±< Þ'`|Çàè¤ ±< Çàèã¿ @9c/À'§ë¸ l¬ü Àw§ïº–§çª@“> ˜§ëš§ïês¨¯©> ÿþ“”€@>1ì§ç¸ Øî_@€¥€@£= Â§ë€ `@ˆ"8Æ_@ÄàÄ'§ã€Ø]àÒ_§ïØ]àÄ`”Ä'§ãÖ[!°ª ±=`ŸÂÀ‘8 Ô]à’ÊZ§hŸÁ@ÇàèÞ]à¡,p”§ãÒ^ÀÚ[á@ŸÃ@€2@ª ä§ëò§ã€¤ @ 7¨â8ª æ_@±=`ò$àÇàèú_§ïª ±=`ò'`”Çàèª ±=`Çàèã¿ @9b/À'§ë¸"ü¬ü(Àw§ïº–§çª@“> ˜§ëš§ïês¨¯©> ÿþ7”€@>1ì§ç¸ Øî_@€¥€@£= Â§ë€ `@ˆ!¨Æ_@ÄàÄ'§ã€Ø]àÒ_§ïØ]àÄ`˜Ä'§ãÖ[!°ª ±=`ŸÂÀ‘8 Ô]à’ÊZ§hŸÁ@ÇàèÞ]à¡,p”§ãÒ^ÀÚ[á@ŸÃ@€2@ª ä§ëò§ã€¤ @ 7¨ᨪ æ_@±=`ò$àÇàèú_§ïª ±=`ò'`˜Çàèª ±=`Çàèã¿P‚7@9b²àظ!„-´ª¢Ðð^€ž¦ €î^ è]队Œ æ" Çàèã¿P‚5 @9b²¢H¸!/¶ž’À¬àØ' @fê^À¤ÿ8¸À!è]`”%0’â]'xŸÄ@– ž h’ ºÀÿê„” `(’ ÿꀔ `P’ ÿê|” `x’ ÿêx” Àw`– Àw`@˜b” Æ^À ’%8%HÀw`hŠ%Xˆ%pÖpà„ (øpàÔpàÒpà Ðpà(Êpà0Èpà8Äpà@ÇàèÃàã¿Pö^ @ŸÆÀ’ €¢ Çà‘è ðZ Çàèã¿@ö^ H’ŸÆÀ”§ûôr Çàèã¿à dòs¨Çøs¨¯Æ@ù€¦`Ò^ X¹< •/0ös¨¿¨@ ö^ €¢@Òs¨·`Т æ |@ a„àØˆ#ª X¬ àZ¤§ý€¦à ÆÀ¯= Ö`ø[¨ÇÖ#¨Ó– Ú •2ð?Ô#¨Ï€£`@بӀ£ 2H•ø_ @à[¨·˜ Ú[¨¿‚$@â[¨¯­0p?ž@³;ðò$`Ø#`øv ´?ú±> ÇàèÄ €  2@OÒ\ Ê\ ÈYj°ŸÁÐ_ ÆJ € à@5²€¤à¶@€¦@`)’Ö\ î`ÔZêŸÂ€Ò§ý€¥À @€@h ‘: ²`¶ÀîNà€¥àOÿ@€è[¨·`’Â\ î`ÞXjŸÃÀÚ§ý€¥À @T²`™: ¶À ÖNà€¢àOÿñ€¦@€ è[¨·ö^  ÆÀI€¦àøv €Gø_ @è[¨·°$@æ[¨¯¡60?¤»<°ä[¨¿ú$à¦&@£4ð?ªÀ©=pè$ øv ´?ú±> ÇàèÊZk0 Ò_ ŸÁ@”&È\ ¶Ð]`ÆY+àŸÀÀÒF dÄ ®”—= ‚ Â"  Þ\ ’ò[ëÐިϛ;àŸÆ@˜?ÿÚಘƒÿ@Ø%àÖ\ ÔZáŸÂ€€¦`@€¦`@ È\ ÆY+ØŸÀÀ’Ä_` À€€  Ê^ €¡`"É@øv ø_ @€§ *ÿ?fÚ ¢`ö^ €¤@¬  oÿW€¦à€î[¨·ì[¨¯²$@øv ´?ú¯6p?‚@Ÿ8pÞ% ±> Ú\ Ø[kØŸÃ’ö_`ê[¨¿Ðà Ð%`ÇàèÆÀ€¦àò[¨·ª$`¬%ð[¨¯¤%@ô[¨¿£4°?¦€©5°?»<ð”€ú& “:°Ò& ´?ø±> Çàèú[¨·ö[¨¯ $@¹40?´±>°´?ùð&à±> ÇàèÐ[¨¯´?ù±> à" Çàèã¿@/`-Ð^`X®ã$ª Øðs¨¯ À»? ø\è_ æ]+àŸÄÀÒF`dØà€£ @}¢¨ î^à«?`šüè¦ ¤ÿ¬ º§ëšÀð`ž¯;à€¥ÿÿ"@i¦àò`  „@€ `@=³8 ’¿Ð@bQ•= °§×§×’¿à@bL•=à¿è’@bP”@cf@cD@cB Ð[¨¯’šàØ”Ø\ Ö[ ÊZ瀖ŸÁ@˜ ’ @b3•= ’¿à@b/•>`¿è’@b3”@cI@c'@c% –’ Ø”Ð\ ’ÈZ Ð[¨¯ÆY'€ŸÀÀ˜ °§ë§ë’  ¦à@b•= – ØÔ\ ÒZ •>`ÊZl“=àŸÁ@® 0’@b”@dì@c@c ’ˆ ØÐ[¨¯”Æ\–ÄXàÂX©øŸÀ@˜ Øà¨ €¥ $Oÿî^àä` „¿ÿ@à$`ö_ ô^áŸÆ€Çàèã¿Pì t·>`î x³> ž€€¦À@´@€æ^ X &€æ^ X€¤ ³f€·f€«>à©-p’À•>`@e ä t¢&€â& xÇàèã¿P@/`Ú`d¡>à®à<Ø``­;`¢Àè^`XŸ+`”þx“+ #À ¶@ «-°¦`X¥? €¢ @®€¦ @ –þp@b©þ¸@b§þø@b¥ÿ8@b£ÿ`@b¡ÿ˜–þp˜ÿØ’@dK” €¤ @!– ØÚ``Ò\@ Þ`dÐZ`˜#@Ò^`hðZ)Ø•; Ð^`ŸÆ– ´€¦ @1Š ØÐ^`hÈ\@­> ÆY ÄXí ŸÀ€’ ÂF`d’ø\à»(p@cá•-°ê`dÿè¨@è&`d@a{’`“> @c°@bn@blä&`œ±> Çàèã¿@@+_)î_¨·ªb´ !Pæ_¨¯¤@îs¨¯® Þ\€£?`ÚàÚ$àÇ[€§ ’¾P¨ª€ €¤`@Ò] Ø`€£ 2@ì] @b+ì] Å€ €¥ Ò] Ú`€£`2@ì] @b!ì] €¥ *ý¿øÒ] Þ] ú[à(Ç@€§`®àÒ_`˜” @`š– €¢ ú_`€§`*ÿö®à€æ] ¸ ±? Çàèæ] ÄÀ!€¤àÂ\ààX`(Ä€¤ Ð\ @dl€@ ˜Ò\ ” @`|– €¢ à\ €¤ *ü?òÐ\ €æ\ภ±? Çàèæ\à€¤à*üÿäÂ\àè] 0€¥ ý?®€¤`€¤`2@Ð^ ¸ ±? Çà謠Øâ\€ €¢ Ò\`ÊZ`(ŸÁ@ XÐv ‘=àÈ\`‡* úY (ŸÇ@‘0àÐvà€à\`Ú\`æ[cxŸÄÀ±=àØ\`—. Ð^àÔ[ 8ŸÂ€“2àÐvàà\`Þ\%¸® Ð^ ŸÃÀ’ €§ Ǻ €,î&`1Â_ ˜ 8ì\€ êX`(Å@ €¥`—=àÒ]`©*ðÐ^ @d”È]`Æ^àÈpÀÄ €  "@¨ Ð]`Ê 4€¡`"@º @d€"@¨ º ¨ ê]`®à€¥`*ýçÒ]`ø_ 0€§ *ÿ?ÝÂ_ î&`Ð[¨¯¸ ±? ú" Çàè‚@^”áP˜#p’žÊZ@ Ð`ˆ È!`Ãà ääü¸ xÀÌÜ äè äô l äã½@@^ô'§û˜"Ô”àØ ªú\ 7âØÒ_`ÊZi˜ŸÁ@’ â§ûÀw§ßÀw§Ï€¤`Àw§×Àw§çêw§ï@¦@bÞÐ]`ê_§ï€@’@bß”€¢ Ðw§Ï"Âï´ ð_`Ò_§Ï”§û–§ïì^!xŸÅ€ê_§ï€8êw§·Ø§û€£ "@Ú_`€2êw§·Ä[j°ŸÀ€Ð]`ê_§ï¸¾€’€§ `  ä ô `¤€`€¤ Ä€  @_~’`€"@Â]`€êw§·Âw§¿”§¿Þ]`Þw§Ç@bª’Ðw§Ïº€¢ ŠàØ”§ûÈ\–§ïÒY ÆZaxÒ_§ÏŸÀÀê_§ïêw§·ì§û°`ø_`¶¿ÿ¬?ÿðw§ïö'§ûì#¨Ãê_ (ŸÅ@ 8@c¸@a’ Ðw ¤§—Àw äw Àw Àw ì' (ô_`â^ (ŸÄ@ 8¶ @`õ’ Ðvਧ—ÀvàèvàÀvàÀvà ì&à(Àvà0öw 0æ\àî§ûæw§—Àw§Ÿ€¥àÀ'§§@° ð#¨ÇÀs¨ßÀs¨ï€Æ_ Ú_§ï ž Þ#¨Ç† àŠž|`¬?ÿ’–à ”àì#¨÷ ˆ`Às¨ß¢ ¦Òs¨ç¤ ª Às¨ï´ ¨ Ð#¨û° ¬ Ôs¨ÿ® Ös©À#©Ès©Ês©À#©'Ä_`ÔXª°ŸÂ€Ð[`Ø_`ÐJ €¢ -@xÂ_§ïš§“Æ[¨çÒX`Þ[!0–þàÔ[©ŸÃÀ˜ €@2@ ?ÿÿƧ“ˆ P›0à‰9 €£`@Eƒ+`Þ@@ÃÀÒ_§ïʧû†`Æw§ïˆÿÈ'§û€kÚ_`Ö§û€¢à@3Ä_§ïÚ§ûÔ_`ž ÿÐ'§ûÞw§ïÒX ØZ«0ŸÃ”$ €¢ Ò_`ÊZ`(ŸÁ@ HÐw§WÐt ä_§WÀt @È_§Wô! ¤ @Æ_§Wô©'ô àô_§Wè& è_§Wî% (î_§Wð%à0ð_§Wì& ,ì_§ïÂ_§WÐ] Ðp`Þ_§WÀ#à Ú_§WÀ#`Ä_§WÚ¨ûÚ  €Ïħûè_`Ô_§·î](Pè[¨ç–>èŸÅÀ’ €ßà_§Ïª`€¥`@€¥`¦öw 0€Àtà@ ¢'ˆàØÒ\ÆZ`ÂXà(ŸÀ@ 8¦Ðt`0Àtà§—Ðtàž§oȨ÷ÞtàÀtà È$à(Àtà0ħûÔ_§ï˜¿ÿÖ_`Š €£ Ø'§û@Êw§ï#^äZê°ŸÄ€ÐY`š|ˆ’– @`-” Ðt଀¢ ¤à ¢à€ÆÂ§ûâ[¨çôZèPÔ_§·–~øŸÆ€’ € à_§ÏÔ_`€¥`„ ØZ («d@ŸÃ Ö\àÐtàÖr ʧûÈ_§ï’ÿÆ_`‚ €¢`Ò'§û@Âw§ï¢ÚXê°ŸÃ@ÐX`’^ž<ˆ–@_ÿ” Ðt`Â~€¢ ‚§—Ât`¢`€—§ûð[¨çæXèPÔ_§·–?ŸÄÀ’ €qà_§ÏʧûÈ_§ï†ÿÆ'§û’ € à@ Òw§ï€¥`– Ø_§ïÊ[ Ês¨ï«d@ €~§ûê_`æ[¨çâ]hPÔ_§·–ÿ ŸÄ@’ €Wà_§ÏЩ€¢ @Ø©€¥`” Ò[¨ÿ– ä[©Ö#©¥dÀ«dÀ §dÀ£dÀ €d§ûö[¨ç’ÿ0@]ø€Aà_§ÏÞ_§ï€¥`„ ä§ûšàÚw§ï¿ÿÐ'§ûä[àÚ[¨ÿäs¨ßä[©¥dÀ«dÀ§dÀ£dÀ €L§û´ €I§û‚ Â#©'€E§û¨ €B§û® €?§û¬ €<§û° €9§ûÖ_§ï Ô§û’?°ŠàÊw§ï˜¿ÿØ'§û@_w @Á§×Ðt`Æ_§ïÂXàî" ® ì" ¬ ð" ° Âr €!§ûÐ@_eƧûÂ_§ïšÿÿÞ_`„`€£`Ú'§û@'Äw§ï”§kÒX È[á@ŸÁ€@îÔ§kȨçû€¢¿ÿÚ_§ï†À#¨Çžÿ„`Þ'§ûÄw§ï‡f@ Æ#¨Ã@‘§×ÐtàØ§kØ$à(Ö_§ïÊZàî" ® ì" ¬ ð" ° Êr €ï§ûê[¨çø[èPÔ_§·–˜ŸÇ’ €Éà_§ÏÖ_§ïš§gÊ[¨çÒZà–ÀÊ[!0Ô[©ŸÁ@˜ €"H)Ô§gš ØÄ\ ÔX ØZ¦ØŸÃÚ_`Ä[`(ŸÀ€ HÐw§WÐt ä_§WÀt @Ø_§Wô# ¤ @ô_§WÆ©'Æ& Ö_§Wè"àÔ_§Wî" (î_§Wð%à0ð_§Wì& ,Ò_§ïÊ_§WÐZ`Ðq`È_§WÀ! Æ_§WÀ à€|ħû€¢ @€¢ @€¢ "HTØ_`€ªÂ§ûÈ_§ïÒ§û† Æw§ïŠÿÊ'§û@6§×Ðt`Â_§ïÞX`î" ® ì" ¬ ð" ° Þr €–§ûħûÔ_§ï˜¿ÿØ'§û– €£ @,Öw§ï”§cÞ_`ÒZàÚ[á@ŸÃ@€@gȧcÒ_§ïԨÀ¡?ÿاûŠ`’ Êw§ï–?ÿÖ'§ûÀ#¨Ç“f@Ò#¨Ã@ §×ÐtàÆ§cÆ$à(§û€ `&@Àr Ä_§ïÔX Ôr î" ® ì" ¬ ð" ° €d§ûà_`ø[¨çö\(PÔ_§·–?ÈŸÆÀ’ €=à_§ÏÖ[ (ŸÂÀ HÐw§WÐt Ò_§WÀr`@Ê_§Wô!`¤`@È_§WØ©'Ø! Æ_§Wè àô_§Wî& (è_§Wð% 0î_§Wì%à,ð_§ïì_§WÐ^ Ðu Â_§WÀ ` Þ_§WÀ#àÚ_§WÖ¨ûÖ#` ħûÔ_§ï˜¿ÿ€£ Ø'§û– @Öw§ïÞZàÚ_§WÞs` €î[¨çÂ_§WÀp` î[¨ç@^pÿàì_`ð_§Wô]ª°ŸÆ€Ð^ @^i@^gÿðÆ_§WÐXà  €¢ è_`î]*°ŸÅÀ@^}€Ð[¨ç@^X´ì[¨ç@^T €¥`ˆ µd@«d@¨°ô#©'¬®Â§ûÚ_§ïž€ÿÞ'§û„`Äw§ï4Oý˜Ú_§ïÆ_  ÀÀ)€ àÈ_`ôY (ŸÆ€ è[¨ß®Å€¥ â_`%^Ò\j°ŸÂ@Ð[¨ßмˆ’–@^E” €¢ Ðuà*ÊÀuà€Âà_§Ï’ ” @]ª– º€¢ @^.’ ÐuàÀuà–§—Öuàîw ì^à Å€€¥ ” Øî\ æ]àØ\à(ŸÃ @`%°@^’ Ðv §—Ðv Àv ðvà^ä[¨ïšüˆ¬ Ä€&€¤ Ò_ ”@]Ìè^à”Ò] @]Çê_`Â]j°ŸÀ@Ð[¨ï–’@^” Ðw Â…€¢ ä_`Ê\ª°ŸÁ@Ð[¨ï–’@]ú” È^àÐq ô^àÆ^ ÀÂv€ àÒ^àâ`€¤`2@ÖZ`(@]½Ò^àÖZ`(ÂÀ8€¢àðZà Æ*€¦ â[¨ß Ä@€¤`’ ” @]N– Â^€¢ æ^àØ\à(Ðs €Ò_ ”@]Œ„`ØÐ\ÔZ îZª°ŸÅÀÐ[¨ß–’@]È” ÐvàÂG€¢ Ò_ Þ`€£à@€ÂZ`(Ò_ ì`€¥ @ ÂZ`(€ `*È@èX`€Àw§OÒ_ è`€¥ 2@Àw§O@]|Ò_ ÂZ`(À@€ `ê^àÖ]`(ÂÀ€¢àèX`ÆZà€¥` 9’ ö_aŸÆÀÐ_§ÏÇàèà_§Ï€¤ "Ä´ ê ¦…ÿæ$ 4@ ´ ò_`´ ±> ø^aŸÇÐ_§ÏÇàè´ ±> Çàèã¿P@9X/ê`¸"\¬üpº€¥` @@<`’ “< @Xv@\  @\?ÿ@\€¢?ÿ@%¢ Øø\Àà_ Þ\&pŸÃÀ’@X„à0–§ø˜|$ ”À Ò €¢ OÿþÒ*ÀÊ_ ’§÷ÈYdŸÁ7² ´àxð\À¦ ò& ±<àÇàèã¿@@;V/ºb$¬â@¦@ê\Àè`€¥ @% ¦ ±<àÇà蔡PŠÀ ø`Ò`€— @¦ ±<àÇàèšáØ\À Ö €¢ÿÿ@¦ ±<àÇàè„à€‚`â\Àº î@º§`Oÿþî @ì`à`ª ©5p?à& ´ ô&à7²ýx®À•> “< @X @[¡?ÿ@[§ @[­€¢?ÿ@%¢ Øø\Àà_ Þ\&pŸÃÀ’@Xà0–§ø˜|+ ”À Ò €¢ OÿþÒ*ÀÊ_ ’§÷ÈYdŸÁ7² ´àxð\À¦ ò& ±<àÇàèã¿@@-V¬ |º€@[}¹> €¢?ÿ¡>à@+¨`Øâ_@æ\`ä\æpŸÄ€’šýÀ@Wå@ ”§ø–<2ˆ ’@ Ê @ˆ¡ OÿþÊ*€Æ\`’§÷ÄXäŸÀ€1 ©4 ª!Pšà€¢@¦ Ø_@ ¥4ð?’ ø$`  – à$`Ô@ ’¢`OÿþÔ"À ‡4 „ ˆ}؃0°?@7´`®àx•> @W™“? ì_@ Ð% Çàèã¿P‚7@9U²à8¸#àæ\`¹>`Ú\áПÃ@’ Ø ¶’à– Ö" Ô\`ÊZ ˆŸÁ@” Ò\`ÈZ`ˆ’àŸÁ” €§ @ª ¬?ÿ² Ô^ Ð\`’à ª`²`ÆZ ˆŸÀÀ– €¥@$Oÿ÷Ô^`€§`@ 5º Ø Ö\’~(’ ÔZàÈZ ˆŸÁ” è\`æ]&ØŸÄÀä\`’à8”àHÞ\§xŸÃÀ– Ú\`Ø[i8ŸÃ’ðฆ?ÿ@ø&àÄ\`ÂX¡ŸÀ@Çà‘è ã¿0@#T;©> ¢cœô^à¦@„~h°à¤Àƀ€¦ ìN €¥ <@ ô^ ° €¦ *þ¿úìN €·ô^  Æ€€¦ ¶ @V¦¿è±>àÇà耦€`  ú ì  §@`€§`Ç@ ’ @UÍ’`€HÀv Àv €™¨?þ@Z,º@Uè’ 9€¢?ÿˆ Øê\À@®¶ è]`ð]&pŸÆ” @Vy’±>àÇàèô^ Àv ø^àÇr€§ ¬à¢ ’ X€§ `  æ Ê `¤À`€¤àÄÀ  @U™’`€@’ `Ò] Â@€¢`¢ @Z‘=à– €%¬à@Z‘=àÚ]`’” ¶ Ø[gPŸÃ€Ñ€§ `  È Ð `¡`€¡ Á  @Uu’`€@Ò] Â@€¢`¢ @Yì‘=à– ¬ øZà€§ ÿ?Â’ Xôv ¶ @Uš‘=à€¯@Yæ‘=àè]`’” ¶ ð]'PŸÆ€¤’¡(€§ `  Æ ä ` À`€ àÀÀ  @UG’`€@ôv @Uz‘=à€ “= @Uv‘=à€¤`@“= €ˆ¶ ôv @Un‘=à“= ”ÿþ×– €~¶@Y½@Yìø^઀§ Çã  ´àž`x¢ ° ® ú\À’ (€§ `  Ú Þ `£@`€£`Ã@  @U’`€@¾’ 0€§ `  Ö Ø `¢À `€¢àÂÀ  @U’`€@®’ 8€§ `  Ê Ô `¡@ `€¡`Á@  @Tñ’`€@–’ @€§ `  È Ð `¡`€¡ Á  @Tá’`€@†’ H€§ `  Ä Æ ` €`€  À€  @TÑ’`€@ @Y ° ¢ ð'`€}´ Šþ¸’À€§ `  Þ  `£À`€£àÃÀ  @T¸’`€@ @Xû?ÿ° ¢ ð'`€d´ ”>À’À €§ `  Ø Ú `£ `€£ à  @TŸ’`€@Ð^  €¢ ¢ @Y6´ š Ú'`€H´ @Y8!® Ø’â\À” ö\`Þ^çP¶ ±>àŸÃÀÇà肾ȒÀ€§ `  Ô Ö `¢€ `€¢ €  @Tu’`€2@'® Ð^  €¢ ¢ @Y´ † Æ'`€´ @Y-¤ Ø’ú\À” ¶ ±>àæ_`ê\çPŸÅ@Çàè@X˜?ÿ  ° à'`¢ €´ @X ° ¢ ð'`´ ø^ €§ ÿ?,’ (º?ÿ€5º?ÿ¢ ° ® 5ˆ €€¥àô\À@3€¤`@6€¦ @¶ €W@Xƒ€¢?ÿ@¶ €P!”"@Ö\À Êà€¡`@ ˜aÒ\À ø`€§?ÿ@@To‘? €H7@Tâ €@Tà ¨7‚àØ¶ Þ\Àè[àð]&pŸÆ”’ à@Sü€,¸ – xÊ\À ø!`”“= ÿý¦– ¶@X½€¢?ÿ@€¤ 7žàض è\Àð] Ú^&pŸÃ@”’>Ð’À @SÜ€¤ @ /ˆâ ‚ Æ\À¢àÄ€‚ `OÿþÄ$@ˆ Øæ\ÀÆ\àôXå@ŸÆ€â\àÄ\j°ŸÀ€’ ø®€¢ `  à àø `¤`€¤ Ä à@SÇ’`€@€¥ ”¡¸¡–¡•f@€¥` ¡ ®§ë’¡—f@@TY§ëÊ\à’” êYgPŸÅ@@Xy‘?`±>àÇàè ‚~Ð〻> €§`@° ±> Çàè@9RØ^à¸"@ˆ˜´¸€€£`  Ê Ô ¡@ `€¡`Á@  ’@SŽ’`€@퀧`@U) @X@XÐ#¨³€§`@Ð#¨¯® î#¨·€ã¬ /„ ªàx¬àÆ^€®ÿª ¦ ¨ Ä àð] ’>ø€¦ `  È Ð `¡`€¡ Á  @Se’`€@_’?€¦ `  Ä Æ ` €`€  À€  @SU’`€@O’?€¦ `  Þ  `£À`€£àÃÀ  @SE’`€@:’?€¦ `  Ø Ú `£ `€£ à  @S5’`€@*’?€¦ `  Ö ä `¢À`€¢àÂÀ  @S%’`€@’? @Wh €¬ €¦ `  Ê Ô `¡@ `€¡`Á@  @S’`€2@ ¨ @WT?ÿ€ ¬ @WH?ÿ¦ €¬ @WC ¬ ª`€¥@$Oÿð] €¥ @° ¤ ð#¨·€n¬ ‚á Þ^€’`˜`€ÐCà@WÔ^€ €¢?ÿ@)7„â@'ú^€¤ÿø®€Ô`€¢ @ ª!Æ^€ðà€¦?ÿ@@S)‘> €H@SœÿÐ@Sšÿˆ`ذ è^€±> ì] ø]¦pŸÇ’”@RµÇàè;!ø¨¯¦hú¨³ ?ë’€ ° €§`®–`°”`!¤`¸ ?ë•f@ €§ –` —f@@SL’ž`Ø” Ú^€±> Ê[`ØYgPŸÃÇàè@À#¨·¬ €§`H¦ ¨ ¤ €!!¨  ?÷ ª€+À-ÿ¦ ¨ ¤ ¬ ! ?÷®à 7 Ö]઄ È €¡ „ *ù?þÈ ’  °"@  ±> ¤€¤€@+•> ¬ @Uz’ •> ’>ˆ°@ ” @Ut®àª €¥€&OÿåÖ]àÀ-ÿ !@SB’  ?÷¶ +@W,º @S8’!@Sõ ° ?÷ @Sñ ¸@Rö“= †`Ø€§ÿö^€@ €¥ ° ø^à±> ô_&pŸÆ€’@R0Çàè@7-®!° €è^€î^€ÐE @Vl’€¢?ÿ@!-° Ø!ä^€ ?äê\ Æ]fpŸÀÀ’–¼`@Rì€  ‚¼9žš€˜ Ê @ ˜£ OÿþÊ+À Ò\ ! ?ãÈZd ’ŸÁ€¤à@ ˜b ¨ Ò^€ ˆ`ÐÀ¨¥ OÿþÐ!䨷€¤ @訳!樯† à ?×”?è –?è®!¤ è ?× ’?Ѐ¥ •f@€¤à—f@@R’‚ Ø” Þ^€æ[àÚ\çPŸÃ@®`ÿ@6±?`ªŽ ÿ@° ±> Çàè!’ ð ?ð  º! ?à!@Rq”  ?¯’ ð !@Rj•=`Ò^à ?¯” ÈZg0’ ø–ŸÁ˜ Ð^àèZ%€ŸÅìJ €¥ @r’!€Â^à±> ÞXb@ŸÃÀ” Çàè!’ ð ?Ã7 ¨àذ @RF” ì^€€¥àÔ] @N?–#€@ @$¤`ìZ§/!ªàØ ?ßŀ‘< ô^€¦±> Æ^ ÄX爟À€‘< Â^  –’!”ÞXg0˜ŸÃÀš Ú^ ’!–!(”Ê[b@ŸÁ@˜ Çà耥à@%™?`ÖZ§¤ ÿ! ?ßÂÀ‘< ¦Š Øö^€±> Ò^àÈZgˆŸÁ‘< –Ð^à ’!0”ôZ'0˜ŸÆ€š ú^à’!@–!(”è_b@ŸÅ˜ ÇàèÚZ¢@’!X±> ŸÃ@” Çàè’ ° •< @Q8±> Çàè‚ @P”áh˜  ’ž’@ ‚@Tžã¾p@7P-¶à\ª Ø¸À'à_¤â°»> è\ â])˜ŸÄ@’!ØÞ Ô€£à@¬•?`@U’¶Ä] èÀ€ €  Ð 8€¢ "@Ú\ @U€@±>àÚ\ Ø[cà®§'ŸÃ§'Ö\ “?`”ÊZë ŸÁ@Ô\ Ð] èÈZª Ò_§'ŸÁÔG§/Ò\ ÆZcПÀÀ±>àÇàèã¿P@7O5¶ãL²¸À° Øä_-ª¢°î\ è]队Œ!ئ@U¬’?ÿð\àèÆ€¦ â\ ´?ÿà\j ÄèÇàèã¾p@7O/¶⼬àØ¸Àºò_)¦"°ê^`¡> ä]i˜ŸÄ€’!ØÞ!Ѐ£à@ ®ôáÔ€¦ "@1³< Â]àèÀ@€ `Ú^`¶§'Ø[càŸÃ§'Ö^`“< ”ÊZë ŸÁ@Ô^`Ð]àèÈZª Ò_§'ŸÁÔG§/Ò^`ÆZcПÀÀÄáÔ€  @³< @T…€@³< @T€@ ³< @T;â Ô€¤`@•< @Tm’³< °@+èã¿Pòw¨‡-ôw¨ª¢°öw¨—7øw¨Ÿ²àØ@9Oúw¨§¸!p´ø^€§> ¶€î_ è]队Œ!Øä!Ô²€¤ @¬¨‡Ò_¨‡” @P2ø0ø0@U7’?ÿúaЀ§`@6ðaÔ€¦ @.€¤à2@â^`è€:€¤à€¤à"HîaÐÒ_¨‡” @Pø0ø0@U!’?ÿÞaЀ£à@ ØaÔ€£ 2@Â^`èâ^`è Ä@€¤`€#€¤à€¥à@+” Ò_¨‡@Pø0ø0@U ’?ÿàaЀ¤ @ ÚaÔ€£`@€¤àÂ^`耠`È@Ð_ ’ø0ÆZ* Ð^`èŸÀÀ”?ÿÄaÔ€€H€H ”áÈ Ò^€ ˆ}@`€’€@Tð”ø0Çàèã¿P@N–㬒 Ø†À ·>`òXÀ ˆb°´Ð^`ÄZ)˜ÀŸÀ€’!ØÂ!Ô€ `@3¸€¦à@®Ê!Ѐ¡`@XºÚ`€£`º`*ûþÚ`¢'` $@“< @TºÞ!Ð¥< €£à@?ì!Ô€¥ 2@8Ô_ è€1€¦àä à€¤ ®à*ü¿þä àª%à¨%@“= @T¥æ!Ð¥= €¤à@*ê!Ô€¥`2@#Ô_ è€ð_ èì €¥  *ý¿þì º" °'@“> @Tî!Ð¥> €¥à@Ò!Ô€¢`@ €¦à@€¦àð_ è Æ €¦ €¦à2Hè^`ÇàèÔ_ 耢 "Ê€è^`Ú^`’Ð_ èØ[j ŸÃ”?ÿÖ!Ô€’À2@è^`Çàèæ]%xŸÄÀ â^`•< à\j ŸÄ’ô^`ö^¥xŸÆÀ ø^`°Þ_$ ÃÀèã¿Pòw¨‡-'ôw¨5ª¢°öw¨—² Ø¤áÈøw¨Ÿ!@9Núw¨§¸!l¶ø^ÀºÀî_ è]队Œ!Ø´”¨‡x0@O6’x0@T3’?ÿâ^Àž=@’Àa@T=”x0Ð^ è€¢ Ú_ ’x0Ø[j ŸÃ”?ÿÇàèã¿P@)N'¨ ¼¤àضâ^Àšâ°ºÀ à\`Ø\)˜ŸÃ’!ظ–ê`€¥`–à*ýþê à3°aÈ´"àî^À¬&€’ •= –á@T@Sø’?ÿð_ èÆ €¦ ’ Ø²Ð^À ´?ÿÊZ ÈYj ÁèÇàèã¿Pòw¨‡+ôw¨5¨b°öw¨—² Øøw¨Ÿ@9Múw¨§¸#Ô¶î^ÀºÀì]àæ]©˜ŸÄÀ’!Øä à€¤ @¸Æ_ ÀÀ € à”¨‡x0@NÊ’x0@SÏ’?ÿÈ à€¡ @–!ÈÔ^À Š}@’À¡@SË”x0Ð_ è €¢ # `Ø’x0ö^ÀÞ^àÚ[ê ŸÃ@”?ÿÇàèã¿P@7M5¶â첸À° Øú_-ª¢°î_`è]队Œ!Øæ à€¤à@¶Ø^àÀ£ @S–’?ÿÚàà€£`@# aÈÞ_’á@S¥ð^àèÆ€¦ ø_`´?ÿä_* Ä€èÇàèã·pòw¨‡² ' 'ôw¨’öw¨—øw¨Ÿúw¨§@Np”¨‡µ: ’ @O{”€¢?ÿ@@O^ö €¦à Oÿö’Çàèã¿P‚5@9M² Ø¸!¬+¶¨b°î^ÀžÀì]àæ]©˜ŸÄÀ’!Øð" àÇàèã¿P‚7@9M²àظ!D-´ª¢°ð^€ž€î^ è]队Œ!Øæ à±<àÇàèã¿P‚7@9M²àظ Ô-´ª¢°ð^€ž€î^ è]队Œ!ØðZ Çàèã¿P@9M5¸ t² Ø¶-â^Àª¢°Àî\`è]队Œ!ØÒZ Â@ €¢`æ\`ºä\çðŸÄ€à\`Þ\#ПÃÀ`Àw`Çàèã¿P@7L5¶ã䮠ظÀ+ú_¨b°ì_`æ]©˜ŸÄÀ’!Øä_`¶®àâ\¦ØŸÄ@Þ_`’Ú[çØŸÃ@” €¢ ž ±;àÇàèä]àâL €¤`@ ¬‚ Ø’ê_è]`æ]#¸ŸÄÀ”?ÿÔ_`}H’´ÈZ¦@”ŸÁ–!ÿÐvàÆ_`  €¢ ÖXãПÂÀž ±;àÇàèàXæ ’ŸÄØ_`” – Ò^àÊ['ŸÁ@ž ±;àÇàèã¿P@7L5¶â|²¸À° Øæ_-ª¢°î\àè]队Œ!ØðZ Æ€¦ ä\àâ\ª¨Ä@èÇàèã¿P@7Lº1¶áü¸À® Øä_+¨b°ì\ £>`æ]©˜ŸÄÀ’!ØðZ Æ€¦ à\ µ<`²Þ\(HÃÀèÇàèã¿P@7Lº1¶át¸À® Øä_+¨b°ì\ £>`æ]©˜ŸÄÀ’!ØðZ Æ€¦ à\ µ<`²Þ\* ÃÀèÇàèã¾p@5L/´ ì¬àض€)ú^À¦"°À¹>`ê_`ä]i˜ŸÄ€’!ØâZ Ä@€¤`à_`´§'²Þ\#àŸÃÀ§'Ú_`“? ”Ø[k ŸÃÖ_`Ð^`ÊZê Ò_§'ŸÁ@ÔG§/Ô_`ÒZ£ÐŸÂ@Çàèã¿P‚7@9L²àظ -´ª¢°ð^€ž€î^ è]队Œ!ØðZ Çàèã¿P@9K5¸#¼² Ø¶-ú^Àª¢°Àî_`è]队Œ!ØÒZ èÂ@€¢`Ö ø¸€¢à"@ â!Ìà_`Þ\'ðŸÃÀÚ_`Ø[cПà ð€ Àw 耤`2@Àw èæ_`ä\çðŸÄ€Àw èÀ'!ÐÇàèã¿@@7K-¶âôª ØºÀ'î_@¤â°@¹> è]àâ])˜ŸÄ@’!ضšý`€§ ¬@ @§ý@M±’¿è€Þ]à@M­’ Þ]àÚ[æØªàðŸÃ@à]à’Ø\'؟Ô Â€¢ ¢ ±<`Çàèæ]`äLà€¤ @ ¨’† ØÄ_@ÂX ôXc¸ŸÆ€”?ÿÔ]à’ÊZ¦@”§ýŸÁ@–!ÿÐvàèÈ]à  €¢ ¢ ÖY#б<`ŸÂÀÇàèúY& ’¢ ŸÇ@à]à”¿ð–Ò^àèØ\'ŸÃ@Qv‘? ±<`Çàèã¿P‚7@9K²àظ!T-´ª¢°ð^€ž€î^ è]队Œ!Øæ!ȱ<àÇàèã¿P‚5@9K² Ø¸ ä+¶¨b°î^ÀžÀì]àæ]©˜ŸÄÀ’!Øð"!ÈÇàèã¿P‚7@9K²àظ |-´ª¢°ð^€ž€î^ è]队Œ!Øæ!б<àÇàèã¿P‚5@9K² Ø¸ +¶¨b°î^ÀžÀì]àæ]©˜ŸÄÀ’!Øð"!ÐÇàèã¿P‚7@9J²àظ#¤-´ª¢°ð^€ž€î^ è]队Œ!Øæ!Ô±<àÇàèã¿P‚5@9J² Ø¸#4+¶¨b°î^ÀžÀì]àæ]©˜ŸÄÀ’!Øð"!ÔÇàèã¿P‚7@9J²àظ"Ì-´ª¢°ð^€ž€î^ è]队Œ!Øæ!̱<àÇàèã¿P‚5@9J² Ø¸"\+¶¨b°î^ÀžÀì]àæ]©˜ŸÄÀ’!Øð"!ÌÇàèã¿P‚7@9J²àظ!ô-´ª¢°ð^€ž€î^ è]队Œ!ØðZ èÇàèã¿@@7J5¶á”® Ø¸À+ú_¨b°ì_`æ]©˜ŸÄÀ’!Øä_`¶”§ûâ\¤ÈŸÄ@’Ðvàè € ” ±: ÇàèÖ§û€Šà@ ” Àvàè” à_`šýp’ Ø\'PŸÃ” ±: Çàèã¿P‚7@9J²àظ ¼-´ª¢°ð^€ž€î^ è]队Œ!ØðZ ðÇàèã¿P‚7@9J²àظ T-´ª¢°ð^€ž€î^ è]队Œ!Øæ!Ô±<àÇàèã¿P‚5@9I² Ø¸#ä+¶¨b°î^ÀžÀì]àæ]©˜ŸÄÀ’!Øð"!ÔÇàèã¿@@Išc„–=ˆ¸@² Æ€¦ €h’à €¤ ’`*ü?þà `º"`®'@' ·-à¤áà¬&Àº«- â`¨`¯5 €¥À@Ð_`”àØö_ €¢ Ú^àØ[`0ŸÃà^àÞ\ (ŸÃÀ‘5àî'`Ðw`âN î_`€¤`@>’¡ˆŠ Øì_ è_ô] æ^ª’§ýŸÄÀô§ý¥: €¦  @°’`@K¨®à€&ÈN €¦  @’`@K ®à€ÈN €¦  @’`@K˜®à€ÈN €¦ €@ ·. «6à† `ÿ„€Â €ˆ`W@’` ê-à®à€ÈN ’` •> @K+®àÈN €¡ 2OÿÌô] ò_`À-àÇà‘èã¿P@9I7¸!œ®ýˆ¨´ Æ€¦ Çà‘è£>`€¤`@ ´ (Çà‘è„áø¶ƒ,`² @æÿø«.`î^à¬`€¥€@€¥àÅÀ %’ ØÐ] ÊZ ÈY`0ŸÁž ØÚ]Ø[`Ö[ (ŸÂÀ‘5 ì&ÿø®Ðvà€¤`@4º-ò ª¡ˆø]€¦` @’ @K8º`€$° €¦` @’ @K0º`€° €¦` @’ @K(º`€° €¦`€@ ¨`ÿ¦à à€Œ W@’  ò/`º`€° ’  •>`° @J¼º`¢ÿ€¤`6OÿÔò ´À/`Çà‘èã¿P@9H5¸#ܲ Ø¶-ú^Àª¢°Àî_`è]队Œ!Øæ à€¤à2@ä_`àZ Ä€¤ Çà‘è ä_`â\ª°ŸÄ@°ÿþùèã¿P@9H5¸#D² Ø¶+î^À¨b°Àì]àæ]©˜ŸÄÀ’!Øä à€¤ @âZ Ä@€¤`Çà‘è ÿþØèã¿P@5H/´¢Ä¬àض€'ê^À¤â°À¹>`è]`â])˜ŸÄ@’!Øà à€¤ @³? ÞZ ÃÀ€£àÇà‘è ³? ÿÿ0èã¿P‚7@9H²àظ"4/´¬â°è^€ž€ð] ê^)˜ŸÅ@’!Øæ] ¢ä\ãàŸÄ€ Àt`À$`àÇàèã¿P‚7@9H²àظ!´/´¬â°è^€ž¢ €ð] ê^)˜ŸÅ@’!Øæ]  ä\ãàŸÄ€ ðâ$!ÔÀ$!ÐÀt èÇàèã¿@‚5@7H²¼@¶á,®§øºÀž¬@¨ ê €¨¥ Oÿþê-À#' `ؤýÈ@J@Þ_@’§÷Ú[àØ[dŸÃÇàè‚@NCž‚@H”àØ˜ x Hˆ†XÒY žÐZ`ÄZ"øÀ€’ ã¿P@9H5 ¸ $²¢H¶´Àî €¥à@² /ò& ¬á`ê^ÀÒ]`Â@€¢`„àØø^ÀÂ_ úXe˜ŸÇ@€@ Ê_ ÈYbpŸÁ€~@J—À˜a Ö^À ÔZà€€¢ % ¢¢DžÀàà€¤ @ ® -î#ડ è^Àæ] ŸÄÀ€5²¾8@J}ÀŠ"@„à°È^ÀÂ^Àø ú`€—@–!Ô^À Ò €¢ÿ@@I‘:`€@# `xÞ^ÀÚà€£`@ -ª¡'è^À¤á@Ò^ÀÔE @Là– @MÆèã¿P@9G5¸"l² Ø¶ð^À-' ª¾x¤âLî^ ºÀè]å”`’ŸÅ– ¸À€¢ ’`@IÖ”â  `à' ±< Çàèã¿P‚1@9G- ¸!Ì®"¸¶žÿÿЪ¢h´À’À)!ÔF`˜¦ Ø@I—> ä^Àž"¸’Àâ\ Ú\gPŸÃ@” Çà‘è ã¿P‚/@9G¬àظ!45 ¶ê^À²¢`ž°Àè]`Ò^ æ]'PŸÄÀ” Çà‘è ÖJ`€¢àp@"ˆ ÔJ`€¢ r@ˆ ÖJ`€¢ào@ˆ ØJ`€£ m@ˆ ÚJ`€£`p@ˆ ÂJ`€ `t@ˆ ÆJ`„ÿÏ€  @ ˆ ÔJ`“2  ‹20?ˆ`Ãà‘9 Ãà‘9 ã¿P@-G+¬ ¨`ع>`²€ú^@%¢¾ æ_` @Þ\划ŸÃÀ”   €¢ Ö_`ÔZ借€®€%€§ @!®º €§@` ” €€  ô`ø ঀ` €¦ Æ€ ’`’à@Gó”" €@ 1š!pØ^@ ö €¦à@À# Çàè@I¤’ @Hú° @Høèã¿@7F/¶âô¬àˆ¸À%@K€º æ_¢ Øö_êàà^à¨`Ðw§÷è$ঠÞ\!ÈŸÃÀ¨  Ú –"P’¾Èª Š`¢® ¤` `Ê" €¡`@–ÿ@Ö$`Ú^àØ[aŸÃì^àÂ] øŸÀ@ô ¢ž Þ" @KUÐZ  €¢ Š`ØÈ_ÆY ÄXä ŸÀ€Ö_§÷Ôà€€¢ @ÿ’§Ó”§Ï–§Ë@L¢ºØ^à€¥ @Ú[$ŸÃ@’€@ ô^àÞ^¥€ŸÃÀ@Gé’ €Ô_§÷ÿþÇ—: ÔF ˜ @L’€Ô_§÷Â[$ŸÀ@’€@ Ä^àìX¥€ŸÅ€@GÒ’ €Ô_§÷ˆb`†ÐXà@GË’ Ô_§÷æ"  –§÷Ò_§÷” ÚB`œ’§÷@J±˜?ÿ€¢?õ@¿@KØ^àìZ Ö[%`ŸÂÀ’@´€¢ @ ‚ Øô_Þ^ Ú[äŸÃ@€@€¥ @§@L\@I  €¢ @I)Š ØÈ_ÆY ìXꨟŀ’Ò`€¢`@‚ÿ@Ð$`Ö^àÔZáŸÂ€ô^àÞ^ øŸÃÀÚ ¢˜`Ø" è^à’Ê] ŸÁ@”  † ˜ì_Ä] ÂX¢ŸÀ@€@¨ Ê`¿ÿV€¡`Þ^à’Ú[àŸÃ@” – ˜Ð_ ÔZ ÒZ¢ŸÂ@€@¨ Ê`¿ÿC€¡`€§`@’§ÓÔG§ÏÖG§Ë@Kì^à’Ä]¦˜ŸÀ€” Â`¬´€ÿ@ô$`È^àÆY!ŸÀÀÔ^àÒZ¡ÈŸÂ@è €¥ ¢Š Ê" @ €¥¿™"@J¬ €¥ "H(Ú^à€¥ @ ¨ €à€¥ "@?¬ ´% €¦ @;€¨ ÿþŸ’ Ê`¿ÿ €¡`à@G{“= Ä^àÂX¥@ŸÀ@ô^àÞ^ª°ŸÃÀ@GÉ@GÇÿøÊ`¿þ÷€¡`Ø[e€¨ ŸÃÖJ €¢à"OþîÊ`@Hb’ @G’ ÿø¨ @G’ Ê`¿þ䀡`Æ@ €¦`ø^à’à_)8ŸÄ” ¬€€§`¬ €§`@’§ÓÔG§ÏÖG§Ë@J¦È`†?ÿÆ$`@±= Ð^àÊZ!ŸÁ@Çàèã¿@@1E/°!\¬âX©> ¸â_€¥ @ † Ø’ø_² ±>`Ä_ ÂX§PŸÀ@” Çà耥 Š~à¬@’@F<² ±>`Çàè+€¥ ¦`Øž ä_  Ö\ ÔZê°Ÿd@›;à™+pŸÂ€Ð^À ´@I°º@I­€§@@@K`’ .  €¢ ’ (@F² ±>`Çàè@I ®@KQ’ .@I— €¢@€¥ ² ±>`Çà耥 @;„à0°bXÂ_’ `Ø_² ÔX`±>`@Eù–Çàè7'ªà0¤âXè_ #Ö_ |GÒ] @FÔšž§ð– Ø @ –¢àOÿþØ+À ’ ØÐ_ ’§ïÊZ ÈYdŸÁ² ±>`Çàè‚@D”àØ˜#0’žÊZ@ ÈY`ÆY 0ÀÀã¿P@9D5¸"䲿¨¶´À’@Jú” €¢ ¦ ±<àÇàè„`Øø^ÀÂ_ òX`(ŸÆ@ @ê_ ¬’ è]eŸÅ”€Ð_ 2@ ÔZ (¦ ôZ 0±<àŸÆ€ÇàèŸÂ€ @Ê_ ®’ ÈYeŸÁ”€Æ_ @ ’ ¦ öXà0ŸÆÀð_ ø^ 0±<àŸÇÇàè)DæXç!<ȺÀ”ŸÄÀ–ä_ ’ 0”â\§ŸÄ@–ž ˜’ Ú^À” HØ[`Ö[#ŸÂÀ€@¦ ±<àÇàèì_ ’ `” hê]¨˜ŸÅ@€@¦ ±<àÇàèÒ_ ÈZfXŸÁÆ_ ÐXæÐÄXâøŸÀ€’ ºc²Àî`€¥à@0@F-ª¡Xè^À@J‹Ð% ÿü@J@J•@J›@J¡@J§@J­@J³@J¹@J¿@JÅ'¤à`@JÊÐ^Àâ_ @JÏÐ\dà_ šàÈØ\"øÐ^À ŸÃ’ ”ãŠÀ À!`‚¡€ú^Àðw`@JÆ@JÌ@JÒ@JØ@JÞ@Jä@Jê@Jðò_ ’ pî^eˆŸÅÀ”   €¢ Ð_ ’ p” €ÆZ'xŸÀÀ– Ò_ ÈZeˆ’  ŸÁ”   €¢ Ô_ ’  ÊZ§x” €ŸÁ@– Ø_ ’ °Ö[%ˆŸÂÀ” €¢  - Þ_ ’ °” €Ú[çxŸÃ@– î_ ª¢v#G’À 0è]äŸÅæ_ ä\æØ¦ ŸÄ€’À@Jº±<àÇàèã¿ @)CÔ^ ¨"̘`0º'Ö_@ ¤ýð’¢@‘>`¦ Ôrà¡>`¤ @J¤” ”~`Ø’~€ö_@Ê^àÈYgxŸÁ– ’~˜„ãи@@EC” ‚Â^à’îXdŸÅÀ?°’~°@E:” ì^à’?°Þ]¤ŸÃÀ”~È‘< @J‰’€¢?ÿ@Æ+ ¨bX˜cè_@€¢ d®@ @>€¢ n@€¢ n@€¢ v¤ €±”~È@¬0@J{’ ’§ì”|U„ ˆ@ Æ „  OÿþÆ*@’§ëž`Øê_@Ú]`Ø[dŸÃ€š”~È€¢ d@ €¢ f@FÛ ~Ø@E’€”~È@ ²!è¸àèì_@Ð_@Ê] Êr €…”~È€¢ i@¸ 3¬aÖ_@ø"à€|”~È€¢ b@5€¢ b@Š!èˆ`èÔ_@žaøª Æ_@ÄZ Ú_@Äpàê#`€i”~È€¢ c@c’ Ú^àˆ¡˜‚¡èÆ_@Þ_@Ò àÒ[àØ[dŸÃ@VÐ'§û9ì^à> ª@Ê]¥ˆ’ŸÁ@” @Eâ’ @E8@E6` €F”~È€¢ -@I€¢ D@8ž ò^à„bPªaèÂ_@”§ûØ_@Þ `Ò[ Ö^a8ŸÂÀ€@ž`0+Ú_@¸ Ò[`@DÀ~ð˜|N²§ô–@ ì À¸§ Oÿþì.@’§óŠ ØÔ_@ÈZ ÆY$ŸÀÀ@IïÈ^à’ÆY$“zŸÀÀħû€  @@F’ € ”~È€¢ N@¦ €”~Èÿúq”~È‘< @IÅ’€¢?ÿOÿD€¢ d€¤ @¬ ¶?ÿ®H@Dj“= @E`Ð]à@E^X¬ ®à€¥€Oÿ÷H)@EV|в!ì_@¶àØè_@ø €§ @È/šàèî_@ Ø]à ÃU€£ ªàì_@Р€¢@3‰: ‡)0‚ Ä^€€ @Äuà@)Â%  øE ”}P²@ ·/0Ò^€€¦@ `  ø`ö `§`€§ Ç `@C‡’`€@+ò –`Ö% `èÚ_@Ø[` Ã)€£ ²¡˜Ö_@öà€¦à@Š-€ Ö]à ÂÀ€¢à²¡˜Ò_@Ð`€¢ HŒ @C· €@˜ +®aÚ_@Ø#`€zÖ] †!È‚ ø_@Þ_@øsà€j-î]àž}X¸@€¥À`  Þ àì £À`€£àÃÀ ’à@CC’`€@-9 ’ ¶!Ȇ èÔ_@Ê_@ Ä_@Ôq`Àp €I-˜aøò_@ Ö`€¢à@B-@CûÀ" „àèî_@Ð]à@I4’ ž`ê_@Ðu`€¢ @I4Àuà@CZ‘: €--@CæÈ €¡ @Š=h”@€ -@CÜ3–`Øö_@ ì^àÒ]¤-ŸÂ@ÐB ”’ èÐ_@ ÒZ @CÇ 0 †§äˆ|\ž „@€ž£àOÿþÂ(À+’§ã®`Ø-Ú_@Ø[`Ô[$ŸÂ€’¡Ð_@ Ê €¡`H Ö] öZçx’~€”¨ŸÆÀ–  ˆ`ª§×Æ_@’| /Äà‚$•8`@Cu§×ø] ’°”Þ_'xŸÃÀ– ¸@Cs’šàèò] Ø_@ Ô[ €¢ €’Èì^gxŸÅ€– ’ èÐ_@ ÒZ @CbЀ ò^gx– 0ö_@ Ô^àŸÆ@– Ò^à@CUÐ ˆ`ú_@Æ`…8à $ƒ(°’€ô] ø^¦ŸÇ‘< ®@D>è@D<@D:øÞ] ”’ê[çxŸÅ@– â] Ú\`0ŸÃ@“< •<à@H«Çàèã¿P@9A5¸!´² Ø¶ð^Àî^ ì]借ŀêJ €¥`@@C)¦>À°À@C‹èÇàèã¿@‚5@7A²¼c¶á,ºÀž®@°§øª ì Àª¥`Oÿþì.)¦ Øä_@â\ à\dŸÄ’§÷Çàèã½À@7A-¶à´ª¾P¸À€¦ »>`¶@!¬§7’ÿ¨”ýØ@BÒ§7@BW’ €¢?ÿ@ª’àØÊ_ ’ÈY`ÆY$ ŸÀÀ€¢ @ ˜~ @Bå’ÿÿ›ÿÿ¹@BO‘=`€§`@+@H” € @Hà”Â!€ ²¦o’à@B¦¦o@B+’ €¢?ÿ@®'’¤àØâ_à\`Þ\$ ŸÃÀ€¢ @ ;¨~p@B¹’ÿÿoÿÿ@B#‘=àÇàèã¿P@7@5¶ã4®¾¸À-ºª Ø@B}’à_è\ æ]&ØŸÄÀä\ â\¤ ŸÄ@’¶@ ’`0Þ\ Ú[â ŸÃ@ÿù§’ ±>àÇàèãºp@7@5¶⌮ Ø¸À¤§'ö_)º ¦>Èì^àê]£àŸÅ@§'@CF®£'£'’$@GÉ”Â'€¢ Ô^àÊZ£¸§'’ŸÁ@”?ÿÒ^àÈZb ŸÁ´€@ ’$@G·”€¢ *ú?ðÔ^ಠ€€¦`Þ^àÚ[äŸÃ@’Ø^àºÖ[#ПÂÀ§'€§`OÿÙ®£'€² €¦`@Ä^à’£'ÂX£¸ŸÀ@”?ÿî^àì]â ŸÅ€¨ê^àæ]dŸÄÀ’ø^àºÞ_#ПÃÀ€§`@ÿùD’ Ð^à±?`ÆZ#ПÀÀÇàè‚ @@”ã ˜ è’ž’@ ‚@Džã¿P@9@7@¸ ¤²ÿX´1 ’€® @B ¬€ê €¥`@)¦!² °€@GXèÇàèã¿0@@ô#¨»”?þ–à,òs¨¿šÀÚs¨¯ð#¨ÇÔ#¨·@GK‘6àÞ[¨¯aÀ@GM’ €¢ @/ ø[¨¯! † Š ÔC¨»ˆÐC¨ÇÆ! @AðÒ[¨¿¶ö#¨·ú[¨¯¬à)¦!˜ª@@AÇÀ%`¤@â â$ @G* ðC¨·Çàèã¿P@9?7@¸#L²ÿX´1’€® ø+@A» ¬€¨`è# Ðu @D¤€@B' ¤ãÖ’€º€•: @Al@G’%@@î”!ÿ€¢?ÿ@šà –!”€ ø^€ @AŒÔw ’ ÖB`ˆ  ’€„ãÖÐ_ @AR”€‚?ÿ±8`Çàè@@ä‘: ‚ ±8`Çàèã¿P‚7@9?²àø¸",/ ´ž°€¬ãÖÒ^ @As °€@FØèã¿@@;?’ºaÔ7 @®ÿ@‘.°8@FÏ‘:08´€@@FÑ’?ÿ±: Çàè@@š’(º@?ÿ±: Çàè@@‘’(@@@œ‘?`?ÿ±: Çàè@@–‘: ’§þ” ‘?`ÿÿ;– ¸@@Ž‘?`¢ €¤`@  (1 @F§’¦#À?ÿ¤±: À$ Çàè@@m’(¨@?ÿ±: Çàè@@d’(ª@@@o‘= ?ÿ±: Çàè@@i‘= ’§þ” ‘=`ÿÿ– ²@@a‘=`¬`€¥ @ H@F{’?ÿ±: Çàè h@Ft’@@A’(±: Çàèã¿P@9>7 ¸#ì²ãÀ´®€ðà€¦ @@FJàÀ%àÇàèã¾Ð@5>- ´£Œª£À». °€¹?`ºè`€¥ @`@F0``À'`”ÿÀ’ •? @@€–`@F=’§€@ %¢ èÞ_§¿ ˜îÚ\ €£ ``@F``@F5’`¸?ÿ·7 ² §6p?æ'`±<àÇàè‚@>”àà˜" ’žŠ@ ÃàÐq`‚@>”àà˜"X’žŠ@ ÈY`Áã¿P‚5@7>’¶â °¡ ¸Àž°@@,•>`î^+ÀÅÀèã¿P‚5@7>”¶ᬲ¡¸À’°ž@@î^'ØÅÀèã¿P‚–@9>5¸!L”º² ð’°@ž@?ûî^#ðÅÀè‚@>”àØ˜ 𒞊@ ÈY`Á‘: ‚@>”àØ˜ ¨’žŠ@ ÃàÐq`‚@>•: ˜ d–¿ÿŠž€¢à0@–?ØÃà@ ‰: a°“)0Š@†"@…(ðš€ÃàÐ[` ã¿P@9=/¸#ì¬ᨺ+¸@¨ð®@µ> ÒG @?©ì ¦¿ÿ€¤à0Hgà(ð ‡>  Š ‚ ‰(ð @€¦ „!·(°ð$ ¢À@ À$`%ž  ”ü8Ø_@@ Ú ’ÿÒ# @?‹“:`æ\` ÄÀ€¤àè €¥ @M±> Çàèö\`ÆÀ€¦à€ ÒD Æ@€¦`¶€ÒD 7ÒD °á€î_@ö]à—> @”´À$ ` Ê_@† ØÂ_@Ä`€  @ š ÖX`˜ Ø'#p±> ÔZâ`Ú' ŸÂ€Ð_?øÇàèä @¢?ÿž   @â' €¤ @   0žà€£à1&Oÿûä ±> ÇàèúX`±> Þ' ò_b`ŸÆ@Ð_?øÇàè±> Çàè@?]“= @E¿ÿ˜ð ÿÿcÐD ÔD -ª¼P’@?Q@@D÷¿ÿ®ö\`ã¿P@9=3¸!¤®a ·> ´º€€¦à@)=¦>X’€£>à@?M‘>àž`ð_`¥,p’ Øö'`ô^€  $€˜ ›,0Ð^ –@Ø"àÊZ"`Á@è9 ² ® ¬€ê ò% €¥`@«>à° „áðÂ^€ð `ö'`7¦`­-pžàØÚ^€¨%€¢ ¥-0 €Ø[`â$ Ö["`ŸÂÀÐ_`’  È^€ Ð Š Ê! Çàè?É™™™™™šã¿P@9=5 ¸ l² ¶ºÀî`€¥à@ )=  À'`šþXà'`’À @>ü ¦!ðÀ'`â^Àä`€¤ @ -=ª¿p¶ÀÅàÒ^à@?GÀ$`Çàèã¿P@9<3¸#İa°¶´ ºÀ/¤`0¬àØê^Àè]`æ]'ˆŸÄÀ‘> ´ Àt Ðt  €¦ 0À$ (¤ 0Oÿô/#– ØÔ^À  |xš žÀ=ÒZ Š<Þwc€Ú'bÈÚ'aØÚ'dxÈZbHÀŸÁ’ ÐwðÇàèã¿@@+<)ªbô¦<€¶@”§û À´’@?€¢ @ ² ò§û˜ÿ€£ 0@2’ ±>`Çàè#ò'§ûža°šÀ¬`Pä[`P€¦€`  ø ö  §`€§ Ç ’ @=¦’`€@’ €¦€ `  î ú `¥À`€¥àÅÀ  @=–’`€@¬ 0²`ò'§û€¦`0$OÿÜä] ’ ²?ÿ@=y”±>`Çàè±>`Çàèã¿0@9<#¸!œ‚`غ¨ ø_@¥>   ¬„¿ÿæ_ @Fª ®àšüÀÐ]ࢤ ¶@ Þ\ê°ŸÃÀ’ÿà°æ_ €¢ `  Þ ô `£À`€£àÃÀ  @=S’`€@’ÿ謿ÿ®à¤ €U€¥ €¦ `  Ø Ú `£ `€£ à  @=>’`€@’ÿð¬¿ÿ®à¢ €@€¥ €¦ `  Ô Ö `¢€ `€¢ €  @=)’`€@’ÿø¬¿ÿ®à¨ €+€¥ €¦ `  Ê Ð `¡@`€¡`Á@  @=’`€@€¦¬¿ÿ®à  €€¥ `  Æ Èà À`€ àÀÀ ’ @<ÿ’`€@ €¥ ¬¿ÿ®àª €¥ 2Oÿ’Ð]à€Î€¥ @ò€”@΀¥ @€¥ @(@=R’€¢?ÿ@‡: º ±?`Çàè­(ðža°š@„%€µ(°Ò^€ €¢`Â@ ú_ ö_gPº ±?`ŸÆÀ” Çàèð_ 9¢<àä^'P’@º ŸÄ€” ±?`ÇàèÒ]à”§ó–§çê\áxŸÅ@€"@è§óº ±?`Çà耥 @¬ º ±?`Çàè'î_§çª ¨á°¨@È_ ÒY*°ŸÂ@Ð]@ @= ’€¢?ÿ@w®§=à™,ð–#•*ð¦€Êà(€¡`@dà8“=à@=>”Ð\à€¢ Ú_ à[`0ŸÄ’à €¦ `  Â Ä ` @`€ `À@  @<’`€@ ‘=àÀtà@=[’ €¥à@95 ‚ ž@À#à€5ª`„È €¡ „ *ù?þÈ šàØ’  Ø_@ ´"@  Ö[ ÔZà(ŸÂ€‘4 •< Ðtà@?g’âtàŠ= ä$à’@€¦ `  Ä Æ ` €`€  À€  @`@=]@=[Ð^ @=Y` Æ ˆ`Øì_@·>à€ àæ] @Š’`(”`8ø\é ŸÇ– ¦Â€¢ Ä] ÂX øŸÀ@¦È] ’`@”`PÆY) ŸÀÀ– ¢Â€¢ Ê] ÔY`øŸÂ€¢Ø] Ö[%@ŸÂÀ€¢ ú] ò_`øŸÆ@Ä] Ò^ ÂX¥˜ŸÀ@¸@€§ @€§ "@ Ä] ÿüP‘=àØ^ –’`¨•? @;fÄ] ÂX¢pŸÀ@Æ] îXæØŸÅÀô] ÄÀ€¤à’§ûØ^¡XŸÃÖ] ’ÔG§ûÊZâ(ŸÁ@Ôàˆ¿ÿ€¡ @ È$àÚ] ò[aŸÆ@€Þ^§ø’`(ŸÃÀ” Ä@ €¤`ä]  `Øú\ª°ŸÇ@’€¤`  Ú Þ `£@`€£`Ã@  @;<’`€"@b±>àÐ] æZ'0±>àŸÄÀ’Çàèø] ’`@±>àè_'øŸÅ” Çàèö\å˜Ò^ ŸÆÀ¶ÿûõ‘=à”`X@;Å“>à@<»Ð^ @<¹`€Þ] Ú[借Ã@’`ˆ²€¢ `  î`ô `¥À`€¥àÅÀ `@;’`€@+’`(Ð] ”`àZ) ŸÄ– Â#€¢ 1¬ Øè_@ä] â\ª°ŸÄ@¸`˜’€§` ” € €  à â `¤`€¤ Ä  ’`@:ê”" )±2 ¦!p¬ ú_@«5°?¤`ä'`±>àÇàè‚ @9”à(˜"è’ž’@ ‚@=”ž‹:`€¢@—: †!@ ‰8ð „ ‚€ ƒdÀÃà‘8`Ô l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l lhàä\œ l l8 l l lÌ lœ l l´@Ìh $´Lø l l l l l l,¤èt l l¤ l€ l l 4 lô lœ lH D lŒØ¤ã¾ÀÖN €¢à@ö@9 À/§›˜ „’¡H ¤ Š?À¸§›º¨¿0¦¿ ¢¿h@?S’ %ÂÙ€¢ ª€¢` ¬àØ”%@î\•: ö]àÊ^㸟Á@’°ÚN ° @+?ÿÿªa\«=`›3`¬@€£`y@««+`ÞE@ÃÀ9’¢ Øà\ä\ æ\£¸ŸÄÀ” Çàè’‚ ØÞ\Ú[àØ[c¸ŸÃ” €¡° Æ`€ à@’`@:ဉ8à‘)0ÒZ@:Ú€‰Ò`€¢`@•:`’`@:Ñ€€‹*°ÒY@@:Ë€zö`€¦à @’`@:Àr­>à¯-°Ò]À@:¼€kê`€¥` @’`@:´€c™=`—+0ÒZÀ@:­€\ÒF` ÿþí” ªÒF` ÿþè” ¬ÒF`  ÿþã” ®ÒF` ÿþÞ” Ð#¨Ç ÒF`ÿþÙ” ;¶ÒF` ÿþÔ” =…=`Ô`Ÿ= ƒ(°Š§l“9`Òs¨¿›+ðÔX@’`‡: Ö[@‰>àÈs¨¯™=àî¨ÇÆs¨·@:"›=à€)ÒF`  ÿþº” •: ’`0@:€ÒF` ÿþ°” •: ’`0@:€ÒF` ÿþ¦” ª@€¥` ª €’`0®ô’`0«f€@9ü•=`€Ö`’`8¶à•>à@9ô€ûÒF` ÿþŒ” ˜ ’`0•; @9é€ðÒF` ÿþ” ;•: ’`0@9߀æÒF` ÿþw”  €¢ ža¨š6@Ò[`Ò[`@:(€×@:$€ÓÒF` ÿþd” =•: ’`0@9€É@’ •: ’`0@9¹€ÀÒF` ÿþQ” •: ’`@@9¯€¶@l’ •: ’`0@9¦€­ÒF` ÿþ>” ªÒF` ÿþ9” ¬ÒF`  ÿþ4” Æ`•=`“= ‹*°„çl‰*pÔY@’`HÖY›8 ™: @9‰€ÒF` ÿþ!” ¶ÒF` ÿþ” ;®ÒF` ÿþ” =™: ’`X•>à@9s—=à€zì` zá’a‰= †I …0ð ’`0·8 ƒ= ª&À¯-`ž%À‘+àš@™+`–%€ •:à@9^€eÖ`’`@”çl•: @9V€]”`h’ d@?'–€V˜ Ø/§›À/§œ€Qš Ú/§›À/§œ€L`p’@<‡”€O° ÒF`  ÿý×” •: ’`€@95€<`ˆ’@à¬%@•= @9€@h•: ’`0@9 €Ê`” ’`@€¡`‹d@ @9•9`€˜ %Ø/§›Ö Ö/§œÀ/§„àØ’Â\° öX`î^㸟ÅÀ”?ÿÈN €¡ 2Oþ(À/§›Çàè;¨`Øò\Ò^`ÈZc¸’ŸÁ”?ÿÇàè—: ‰: ” à’ Š*`€¡@zá”á“: ‹9 ‚I@ …0p ™8 ›9 ’# ‘*`–" •*àŠ@ ƒ)`€¡@– Ãà‘:à†á…9 ƒ8àšH€™3p —; ‘9 †"À•(à’"€‹*`‚À…(`ˆ!›1 ˜ ‘30?– Ãà‘:ଠ  ¬¬ã¿ /m¶@f’ Ö ¬ü“Ò «:à¨M@§50 ¤À£:à¡< š$Ÿ+`˜#À ”"À –¢@ ,H–à@/?ÿÿ®ã³2à¯=à€¦`¶À@#».`ôG@Æ€ €ô €¢ @¬§ß¨ ꨥ Oÿþê%€æ§ï¤ €¢à ÿÿ¸ žÿÿÞ'§ï¢ ä'§ëšçkâ'§ç¡d@à'§óÿÿ‘‘;`˜!lØ'§÷ÿÿçÛô €¦  2@ ±: ú €§`@ €§`Ä ‚¿ã€ `(H ±: Çàè@ €§`È †?†à(H  ±: Çàè2@±: Ê €¡`H±:  ±: ÇàèÄ €¢`@– ˆ €  „¿ÿ…d@Ô Š"Àm¶ˆ<“†@ …8à‚H€›0p ˜À —; “8àŠ"À •9`)@ Ãà‘: ã¿P‚5@96’¸!¬²¼p¶ž@8>À°?ÿ@8‹èã¿P@967¸!\²ü¸´®€@7‰’ ¬€¢?ÿ@1'€ÿÿÛà’ ‘= @=×” €¢?ÿ@±= ÿÿÒà@7ˆèã¿PÀ'`«>`Ö ©-p§>à£? ¸¥,ð€¢à^@>¬€€¢à*@™<`’”@H–²@=±>`²?ÿ±>`Çàè’”@<–²6@1±>`Ø €£ @²?ÿ±>`Çàè® €¥À:`%²?ÿ™<`’”@(–€¢?ÿ@ ®à€¥À oÿö™<`²?ÿ±>`Çàè %À²£40?ž›;ðÚ'`±>`Çàè” ™<`’@–²&@²?ÿ±>`Çàèã¿P@)5'¨#„€¦€ žàØ£? æ\`B¤ Ô €¢ $@ €¢`€¦`5€ì ¦?ÿ§dP±<àÇà耢 *H~€¦´ €¦€`qÖ €¢à*"Oÿû´ ™*à€¤`@¹3 ø\àà_*ŸÄ‘:ฒ ?† \‹2`ª […0àˆ ‚  þŸ5`¬ »10?¯0p?›5°?¨@¬ €¥ @2€¤`@ €¤ `JÔ €§ @.™<`Ø\àÖ[*ŸÂÀ‘: €§@& $ €¤ `;è €§@Þ\àÚ[êŸÃ@‘= €§2Oÿô $ €™<` `,ê €§@ $ €¤ `$ú €§2Oÿû $ €™<`€¤ `™<`’”ÿÿ‡–€¢?ÿ@€¤` $ €¤¡eP¿ÿ¾€¥ ²$±6p?¶@£>𤀦€§<à±<àÇàè¦?ÿ±<àÇàè°&@µ60?²·>p¢À§<`±<àÇàè`­€¢ ?@€¢ [´ ° ¤ €¢€¦€@u€¤`´ ú @$¬€¦€`jî €¥à]@f´ Ú €£`-@˜ €£`?€¥ÀÖ @´ €§@ $@A° €¢ÀGÿ뀧@Oÿꀦ€° €:€¦€€¥ÀOÿ䀦€° €4€¦€€¦€`Hî €¥à]@D´ Æ\àÄXêŸÀ€‘=à € `-@ ª´ €¦€`Ò\àÊ ´ ÈZjŸÁ‘9`€¥@@€§@H€¢° €€¦€€¢GÿÞ€§@OÿÝ€¦€° € €¦€¦?ÿ±<àÇà耥@OÿÓ€¦€° €¦€`ž&Ô €¢ ]@ ´ €¦€`Ö €¢à]2Oÿû´ ´ ž&©3ð? À›<0™;`¤€ €1€¦€¦?ÿ±<àÇà耢 \2@ ì ´ €¦€*hì ¦?ÿ±<àÇàèø €¤`@ªÆ\àÄXêŸÀ€‘= Â\à®úXjŸÇ@‘? €¥À2@¦?ÿ° ´ €’&€¥€2@¦?ÿ° ´ ’&•2p?€¦€@ ‹:0‰9`¤€*oþÉÔ €¦¦?ÿ±<àÇà覱<àÇàè‚ @4Š¡¸˜"(ˆž”’àg‚‘: @<ž‚ @4Š¡¸˜!Јž”’àh‚‘: @;ûžã¿P‚@94/¸!t¬á¶ž@8à5 ²¡¸ê^À°ÀÐ6 ðE`@;éèã¿P‚7@94²á¸! / ´žð^€¬á¸'@;ÛÐF ª€¤âà#€ |àè`•= @5â’€šâà°€ Çàèã¿P‚@94/¸ |¬á¶ž@8¢5 ²¡¸ê^À°ÀÐ6 ðE`@;«èã¿P‚7@94²á¸ / ´žð^€¬á¸'@;ÐF ª€¤âô#€ |àè`•= @5¤’€šâô°€ Çàè‚ @3Š¡À˜#ˆˆž”’àg‚‘: @;iž‚ @3Š¡À˜#0ˆž”’àh‚‘: @;Sžã¿P‚¸@73/ ¶âÔ¬áÀºÀž@;X‘? @86ª@±> Ð5`@;Yèã¿P‚5 @93²¡À¸"l+¶ž@;>‘> ®À¨c'À#¤üàìà c•= @5;’À°ÀÇàèã¿P‚¸@73/ ¶áì¬áÀºÀž@;‘? @7üª@±> Ð5`@;èã¿P‚5 @93²¡À¸!„+¶ž@;‘> ®À¨c'À#¤üàìà c•= @5’À°ÀÇàèã¿ @-3¬¡ ¸€ Æ €¦ ’¼è² @:ô Çà‘èðw§ßš #4Ú'§ç §ß–’§ßÀw§÷Öw§ï@D œ’§Û”@z Âo€¢ ò_§÷#žcÿ€¦@`;¤|ø² @:ÖÇà‘è/´aX¬àØê_è]`æ] (ŸÄÀ‘6   €¢ 3¶}² @:ÅÇà‘èðw§ß„ ‚!TÄ'§ç²’Âw§ï@ œ’§Û”@N  €¢ ’ ØÊ_ ÈY`ÆY 0ŸÀÀ² Çà‘èÀ.a@°aUÀ.aAÀvaHÀ&aP@ÉÖJ €¢à@/ØN €£ @ Ú Ú.a@€ â§Û€£ 2@â§ÛàaAž Þ.aAâ§Û€Œ`@¦ ¤ èJ €¥ @° ªî €¥àª`*ýÿþî `¸%`¶'µ>à€¦€§fÀ¥fÀ@ €¢ *ú?îèJ ævaHä&aPÇà‘è² Çà‘èã¿@@/2¬ ¹> ®â´ À€§ @ ì&`ö €¦à@)¦=@:YÇà‘è ªà°àð& ‘=`@’°§û@w’Âr€¢ ’€¦ "Æú§û@kú§û€ ì`§û@i’Âd€¢ ’ú§û¶ ° ì`€`@ˆ`¬ ¿þ†€Æ&`Â^ ÄH`€  |@®§ûŠ`Êv @R’€¢ ’@Iú§ûÒ`€`@˜`’ þ– Ö&`Â^ ÔH`€¢ |OÿìŠ`€€§ Çà‘è €§ žà(š›f@‘;`@I’¶@-’Æ €¦ ¢@M’@%€¢ ¢ ú?ú'€§ ¤ý("@ ø^ ê^ ²`òv èM`€¥ )@@9ìÇà‘è ôO €¦ H€¦ )@@9áÇà‘è @9Ý Çà‘è ° Çàèã¿@ À& @’ö^`´ÖNà€¢à@'¤ €¢à|@$€¢à)@"¢§û@-’€¢ "Â!´ Ú§ûÞ  ¦ `˜ÀÄ€€¤ Ø& @Ý’€î^`ª `¨è& î^`ìMà€¥ @¤€¥ |@€¥ )Oÿã Ä€€¤  @á’Çà‘èã¿@@71§û¶ãt¸À@¢’ €¢ ´ Çà‘èÊ^`ÆI`ˆÿÖ€¡ @ ´€ à?@® ЧûÐ& Çà‘èÒ§û€Š`@€ à?@”ýH´ @9v Çà‘è® î& €. € à+@@˜ € à*@%Ø& à§û€Œ @’ @Ý”€Xê^` @Ø” @™’’@¤@¡’ @’’@u @Š’’@o€>ê^`€ à?@: ’@»” @|’’@a @v’¤@Z’@}’€&ê^`Ú§ûž Þ& €‹`@ ’@ ”€ê^` @_’¢@C’ @X’@>’ @S’’@8 @M’’@2ê^`¬`ìv`æM`¨ÿÖ€¥ @€¤à?@3Çà‘è3°}h´ @8ûÇà‘èã¿@À& -î^`ª½ @71´àôv`æMà¶àĨÀº€¤à.@€¤à)@ €¤à@±€¤à$"H&° €¤à("@œ’§û€Î´& €¤à)@§¸$à*€§ @©€Æ´& €¤à\@ €¤à.@€¤à?@ €¤à["HÈN €»´& €¤à\@ž€¤à^"H° €¤à|H€±´& @öè@ôè @ñ’ò ´†`Æ& Çà‘耡 ^@  @æ’´Ð^`Š Êv`€ÒI` @Ý’Ê^`´ÒI`€¢`]@€¢`-@€¢`2H€¢`-€D ”`Ôv`ÐI`@ì’Ê^`ÒI`€¢`@9€¢`]@7€¢`-@(–`Öv`ØI`€£ ]@€£ @¸ ÿÞ ÿþš ®à€¥À @€¥À@ ‘-ð8‘:08®à@Ï’€¥ÀOÿû‘-ð8Ö^`ŠàÊv`€ÒI`@8gØ´ Çà‘è -@¿’Ê^`€ ÒI` `àv`ÐI`@·’Ê^`ÒI`€¢`@€¢`]Oÿ΀¢`- @­’â^`äL`€¤ ]@ª`@8Hð´ Çà‘èêv`è ¦ æ& Çà‘è ÿýÔ” €¢ ´ Çà‘èú§û´ö ®`¬Àì& Çà‘è@8-´ Çà‘è@8(`´ Çà‘èÂN € `@ @8`(´ Çà‘è@X’È^`´Š Êv`ÐI @q’ @n’Æ „àÄ& Çà‘è’`8ôv`@8¹: €§ @€§ ´ @8`HÇà‘è@—? ÒN€ ”Ö€¢ @ €¢`?"@¸?ÿä ¢ â& € ¸?ÿÚ €§ ˜`@ Ø& ž  Þ& @#’´€ à^` @’€§ @ ´à^`° ðv`¸?ÿÐL @3’€§ 6Oÿùà^` @-’Çà‘èÇà‘è‚ÄZ`@0”ã4˜ Šžˆ@ € €`‡: ÚZ`˜`Ør`ÃàÆ( ‚ À( À( Âr`Ãà‚ÚZ`@/”ã4˜#”Šžˆ@ €£@`…: ‚`Âr`ÃàÄ+`ÐZ`† ÃàÆr`‚ÆZ @ /„c4Šc$ˆ@ž˜€ À `—: ÒZ †`ÃàÆr „à€ À Är `ˆ`Š À€¡``PŠ`š¿ÿ˜ÿÿ”#@‚#š` ”" ƒ:°?˜€š#€£@`C€ À`A€ À `=Š  ˜?ÿ” À €¢ `1 àš ÄÿÿÁj?oíipŠ!`Æ ?ÿ" Ä)` Æ)`Ø Â)`Ä Ø)` Ô Ä)`  Ô)` Æ Â)` Ø Æ)` Ô Ø)`Ä Ô)` Ä)`Ø Â)`Æ Ø)`Ô Æ)` Ô)`Ä €¢ oÿÜÂ)`Ä)`Š!`†€¢ ` Âÿÿ† àÂ)`Š!`€ À:oÿüÂÿÿ€<Ö*`€ À `8”  ‚?ÿš À€£``,˜ Áhÿoíj¿p”" Äÿÿ† àÄ* ÊàÊ* Ðà Ð* Âà Â*  Úà Ú*  Äà Ä*  Êà Ê*  ÐàÐ*  ÂàÂ* ÚàÚ* ÄàÄ* ÊàÊ* ÐàÐ* ÂàÂ* ÚàÚ* Äà€ À oÿÜÄ* € À ` Ðÿÿ† àÐ* ”" € À:oÿüÐÿÿÖ*`À) ÃàÀ) ã¿P@7/º¶à|1¸À®#4¬€§@`@ô€¢ º@ *ú?ýºêO`¦&@²'@€¥`§d@æ/`©<àè/`Çàè‚@.˜#䈞€¢ Š£4†€¢` ÖJ €¢à@ ‚ÿÿÇžÃàã¿0@-.+¬£l¨~¦€ÀÆz€¦ Æ@x€¦`Þ!T€£àœ"@ê^!H@6†  ±: ÇàèÅ@*€¥`ìM`“= @5€¢ "Âh îF!P¶€¢` ”€€ úàø `§@` €§`Ç@ ’à’`@/Å”" €@ à@4è“= €¢ ¶ ú?耦À ±: ÇàèàN!Aôw§ç€¤ @ ¶§ß”@A’±: ÇàèâN!@€¤`@”@7’€@ ôN`²`€¦ Oÿ÷” ±: Çàè ±: Çàè“<`@4º¤Â€¢ ”@’€@  @4®ÒN!@€¢ ¤ ú?ö” ±: Çàè ±: Çàè ±: Çàè@6 ±: Çàèã¿P¶  òv ¢&ðv Ÿ(˜@º Æ!€¦ ´@”øN  @ ?ÿÿŠbà­7 ‹9`€¥ 1°@@×·- îFÀÅÀÒ^`Ô^`€¢@ h´º ±?`Çàèô^`ÖN €¢àHþ´º ±?`ÇàèØ^`ÚK €£`"@ûº ¢ âv`€ñ´ä^`ÞN èL €£À2@ñº ° ¦è €¥ ¦à*ý?þè à¸$àª'«=`€¥`@€¦` •=`€€  Þ æ  £À` €£àÃÀ ’ ’ @.”" €H·=`º ±?`Çàè·=`¸€øv`€Á´ì^`ÂM € `@  @3–“8`€¢ „ Äv`€´´º ±?`Çàèî^`ÆMà€ à@  @3…“8à €¢ ˆàÈv`€£´º ±?`ÇàèÞL €£à@  €™´æ^` ÿÿo’€@æv`@ €¢ èJ ´€¥ "Oÿòæ^`º ±?`Çàèº ±?`ÇàèêL €¥`@º €„ úL „ ƒ0 ì^` ¶ @‚’¯6ð?€¢&@tº €§`@¸—? °Àÿÿ@’€@°& ¸?ÿðv`€§Oÿøº ±?`ÇàèÐ^`’¿ÿ•? ´@ ÊJ €¡@@ ÿÿ*’€Hº ±?`Çàè¸?ÿôv`´& €§6OÿïÊJ º ±?`Çàèº ±?`Çàè†?뀠àHˆ?×ð^`ÿÿ ’€"@5º –?ìò^`•:à“*°ÐZ@€¢ *Â-º Š@ º ðq`±?`Çà耡 Hô^`ÿþô’€"@º ¤?ØØ^`£< ›,pú[@ €§`*Ç@º º   ±?`ôt Çàè@4[º ±?`Çàè´€¤ ü>å@4Q`º ±?`Çàèã¿PêN @-,ô^`¬¢ €¥`¤€@€¥`@L€¥`"@ ÚN €6º €¥`@€¥`"H7ÔN €/º €£`@Hº “;`¸ @2°ÂB€¢ º`ÞN ´ €£à@<“;à@2¦€¢ *ú?øº`€6ôv`àN €¤ @1º “< ¸ @2™ Â+€¢ º`âN ´ €¤`@%“<`@2€¢ "ú?øº`€ôv`)¦>X@3þ€€ôv`ÖN €¢€ @º º`ØN ´ €¢€ "Oÿýº`€ ôv`’𠀦 ’`*þ?þð `º"`¸'@»? ´€ôv`±?`Çàè‚@,”ã4˜ x’žŠ@ €¢`Š Ãà Ø š`ÿ•+`– ÿ’‚€ @Š ÃàÈJ …:`Š"€¡ ‹d@Ãà‚ @+”áȘ#à’žŠ@ ÃàÐq`‚ @+”áȘ#˜’ž@ ÃàÐZ ã¿P@9+5¸#T² Ð¶î^Àìà€¥ @²1'ª!Ȥá è^À!@1¾’â^Àð\`Æ€¦ @1¸èÇàèã¿PÂN`€ `@ª¶ € `$@€ `*ÄN`€  @ÖN €¢à@h€W€ @ ÆN ´?ÿ€ àµd@±> Çàè@aÖN €¢à@Y€ `?@N€ `[@;€ `\ØN`²`€£ ]@2€£ @0€£ "@%²`ÚN`€£`-2@²`ÞN`€£à@€£ @ €£À @€£ 6@²`²`€ ²`$@²`²`€²`´?ÿ±> ÇàèØN`€£ ]Oÿà€£ ´?ÿ±> Çàè²`àN`€¤ ]@€¤ 2Oÿü²`²&`€²`´?ÿ±> Çàè@ € @ ÂN`²`€ `H€ @ ´?ÿ±> ÇàèH²`´?ÿ±> Çàè²`ÂN`° ¶à€ `Oÿ”€ `$€:´´?ÿ±> ÇàèÈN`€¡ @Šò `€¦`Š`*þþò `º!`¸'@¶µ>à±> Çàè¸`’ì €¥ ’`*ý¿þì `´"`®&€»=à€§`&@´?ÿ£?`¦¤@°$€ÿÿd’€¢?ÿ@ °& º‡ÿOÿú´?ÿ±> Çàè”´€±> Çàè´±> Çàèã¿PÀ& æN`€¤à^@3€¤à*@ ÿÿ@’º@3±?`º?ÿ±?`Çàèÿÿ7’º6@*±?`èN €¥ @º?ÿ±?`ÇàèìN ª €¥ "@º?ÿÿÿ%’€¢?ÿ@ îM`ª`€¥àOÿøº?ÿ±?`Çàè²%@ºò& ±?`Çàè’`ÿÿº&@º?ÿ±?`Çàèã¿P@5*/ ´¢Ô¬âX¹> ¶€ºÀ€§?ÿ2@ ³? @1Ô¡: Ø_`£,0ž@›+ðÇà‘ë «.pä_`¨@§-0Çà‘ì€ã¿P@)*' ¨"L¤âX¢º@µ> à`ð_`€¦€@2ƒ>  Æ €¦ ° ¥> ¶ §,°¢À@2I‘,p°€ ðw`¶ ­>à¯-°ªÀ“-p@2Gè`°ðw`¶ €¦À@ô'`›>à¬&€Ÿ+pª ˜À €¥`—+0®À@ ²& À%à¶à®àP€¦ÀOÿüÀ%ÿØ€¦À@À%àƒ> …(p¸€³/0ô@€¦ @¸Èø† @2‘0àÐw  €¢ ¸ Çà‘èÐøŠ Ê' Ð' Ò_ Òw Òw Çà‘è‚@+§žã¿0@-*+ ¬ ¬¨bdº€ @æ €¤à@@0rÀ$ @0x+šü¨@0Ä@ ´ ØÖ_@ÔZà@0ÆÐZ¤Æ‘€¦ ÆA€¦`'ô^`¤þ ¦@Æ€€¦ €¦`  ø ö §`€§ Ç ’ @+’`€@ €ÿÈ´ÿøÿÈ’@1Ì”‚¡0ê_@è`€¥ @@+{ ˆa°Æ_@@ Ð à¢?ÿ@+² ±<`ò" Çàè®a°’ ì_@ÐE @+” ÿÿ?ÐE   €¢ ¢?ÿ@+°° ð" ±<`Çàè@+Ч÷€¢?ÿ@¢?ÿ±<`Çàè@+‚§ï€¢?ÿ@ @+ÐG§÷@+ÐG§û¢?ÿ±<`Çàè@+u§ç€¢?ÿ@@*øÐG§÷@*öÐG§û@*ôÐG§ï@*òÐG§ó¢?ÿ±<`Çàè@+l€¢?ÿ¸¢ö_@@Ð&à¢?ÿ±<`Çà耢 @w@*ÝÐG§û@*ÛÐG§ï#@*ØÐG§ë a0Þ_@˜a°ô_@ Öà€¢à@@*ÍÐF @1[ÐG§÷’§æ@+” €¢?ÿ2@ÐF @+Z5¬ Ø¢?ÿê_@±<`è]`ä]$ŸÄ€ÐB ’@1Oà Çàè@+’ @1Aà@ÐG§ó’àh@+]” €¢?ÿ@@+@ ¢?ÿˆ`ØÆ_@±<`ÄXàÂX¤ŸÀ@ÐB ’@14àpÇàè@1(à@*–ÐG§÷@*”ÐG§ó®§ßÐG§ç’@+G” €¢?ÿH€¢ @1€²"@+Ò €¢`"OÿñÐG§ç@+ö €ö'§ß€ À'§ßú_@’ ÐG`@+E” @+ ¸?ÿæ§ßæ" ø& @*nÐG§çâ ±<`Çàè@*hÐG§÷@*fÐG§ó@*dÐG§çÐG§ë’ @*X” @*æ ’ @*R” ˜a0Ö_@ Ôà€¢ @"¸@*Q @*O @*M  † H´aÄ_@+#ì_@¨`¨ a°Ð@ ä_@ÒE @*–Ô\ Þ_@®àHuÐ#àÞà€£àH‹€ 5®¡°ì_@ê €¥`@¨ @** ÐE ’ @*” @*$  ’ @*” @*  ’ @*” @*ÐE †  Ä_@ € `@ á@)ÿ’ €¢?ÿHs¶'€’à‘>à@0O” €¢?ÿ@@* ‘? ’ #@)õ”  aÈÞ_@˜ø’@ á@.¥Ô^`@)ó‘>àÐG§û’àh@*Ÿ” €¢?ÿHdÐG§û@)éÐG§ï’§æ@*” €¢?ÿHtÐG§ï@)ßšâHØ_@ Ö[ €¢àÂÀ%ŸÂÀ¢¡Hú_@à_`Ä{€¤ ŸÄ€x@*cº ¢?ÿú" ±<`Çàè@)Ä ‘? ’ @)¸” @*V˜`ØÖ_@ ÔZàöZ¤ŸÆÀÐB ”’!ÈÊ_@ a@.`’à¸@*Ž?ÿ¿ÿvÞà@)ª ‘? ’ %@)” ¢¡ÈÔEàà_@!@.O’àÐ@*}?ÿ¿ÿ† @)™ ‘? ’ @)” ’¡ÈÊ_@ ’áa@.>Ô^`@*l?ÿ¿ÿ'€@)ˆ ‘? ’ @)|” @*+´`بaÈö_@î^àì]äŸÅ€ÐB ä_@”¡@.$’á @*R?ÿ¿ÿ‡ÐG§û@)n ‘? ’ @)b” @*’ ØÊ_@ ÈY`ÆY$ŸÀÀÐB ’„<`@/ô@@*:?ÿ¿ÿyÐG§ï@*’@)ë’ÐG§ë@)ÿ” @*-?ÿ±<`Çàèã¿Pòw¨‡˜  ¨ôw¨öw¨—øw¨Ÿúw¨§º¨‡Æ@ €¦`˜ æ â   ¥,ð €”@2oÿû˜ – •:à@/³‘*°  €¢ @)ǰ?ÿš Ú" ±> ÇàèÞ_¨‡¸’ ðw Þw ÃÀ€£à¶ ¨`¶`î ò ¨ ­-ð ª–@êvàoÿú¶àð_ @/µ°@/º±> Çàèã¿Pÿý'‘> »>  €¢ º?ÿ@)—´ ±?`ô" Çàè±?`Çàè—:`€¢à@† Š ˆÿÿÔJ „€¢ @€ à†à€„ 2HÔ*  „ Š`€¡@$OÿôÔH Ãà‘8àã¿P‚7'@9'²ýà¸"1´ž’€® p² @)m ð^€@.ºèã¿ @-'ø#¨¿ª?þð#¨×¬¡¼ð¨¿º€ús¨¯ö#¨Ã€¦ ôs¨Çòs¨Ï@ê#¨·@.ª‘> Þ[¨¯˜`pÐ[À @.¬’ €¢ @)‚  ð[¨¯Þ¨×† øÄ^€£ÿÿ@  ú[¨Ï@/F€¢?ÿ@’ Ô[¨ÇÐ* €Ò#¨·@/E€@Š?ÿ€ À#¨·€Ê#¨·Ò[¨Ç‘;à@):ÔC¨ÃÐ#¨·@)!ö[¨¯š#0Ö ˜À Ö# )ø[¨¯¦ øâ¨¿ä_€¤`À$ $@ðC¨·@.o ðC¨·Çàèã¿@'òs¨¯†àd‚¢0»> ¸Àú#¨·ú_‘> ÿüX’Ðw§÷¶ààê_ €¢ ´ €iÚ_`ö_§÷„ ðÞ_Ð^àÐw`Æ^àÆu`Ò^à‚ À ·8`€¦à@Òsà@+w•>àÐ_`™>à– Öu`À+ Æ€€¦ ´ €OÚ_`Þ ’|€¢ €£à@#âs¨¿²€£à2@ ²`Ê^` Á@ €¡`@.• @.ãÐ^`Ðv` €¢ ²`Þ`€£àOÿñ€£à€@.ß5°¡È–Ô^`ä_´ ¡@,¿Ò[¨¿€'Ú_`† ì_§÷# Â_®bP¦È`à  ©) €¤è$à@9€¦À@”?ÿÐ_`¶&À™6à– ’À @+.•2  ž¢P²è`¶?ÿÐ_`’ @.u“2`Ðw` €¢ ´ Ú_`Ê_§÷”àðÒ_ Úq`Ø]`Øq`ÐZ`Ðq`ö¨·€¦ÿÿ@I@.©Ð[¨¯€EÂ_`£>à! /°"PÀ(@¦ààÈ_`¤è_¬Ú_§÷Ê ìu Ê#` 樷€¤ÿÿ@@.’Ð[¨¯²áÀÐ_Æ € ÿÿ@+'„}à’@(_  -¢!À1î_ ¢¤ ð¬ êà® @+C§ïÚ_§=`Ê_è_§ï’#@—:p?¦˜@ ¨ ”# €¢ h3 ¬bP‚Æ`€¦À@-”á¸Ä_ Þ €£à@Ö`Ð_`•2à¶"À ’ @*[•>àÐ_`‚ààÈ_Ÿ>à¢âq €€¥ !'° ð¨â5 ?û·>஼¨@.ì_` ê_š`àä_Ò_ ìu`˜€Øt Ør`€åú_`€¥ @€±¨ ’aÀØ_ ò €¦@@€¥`@ !°!Àä_Ê €¡`@€¥àHè[¨¿' ?þ@-á @¨àðì_`ê_ìu`€Äú_` àà䨷‚âPò_ˆ‘< Ô^`™=`î ¢%À—4`ÿþ‚Ò[¨¯®@­€¥ÿÿ@{€¥ÿþ@n Ä^`¶À† hÂ_£>àž€Þv`È`€¡ @˜`(Ö_ Ôà€¢ @.1¤! Ê_ÚY` Ã@€£`±< ¥=à€Ö_`’ „¡ Þ_±< ÀÖ[à¥=à@+Ç•=à† (Â_È`€¡ @‚áÈÞ_`’ È_À– €@+¸” š`PÒ_ ØZ`€£ *Ë Ä_`€ † PÄ_ÂX À@$€ `Ä_`1’ ¤ Pð_•< € Ö^ @+Ÿ•=àÐ^ €¢ @-²’`(Ø_ Ö €¢à@%ž¡ÈÆ_@-§à€ˆa Ê_ÐY`€¢ @-Ÿ”áàÄ_ 𠀦 @“< Ø_` ÿýÔ“=à¶&À£>àÆ_` ®  ð‚ÀÂv`À(ÀÚ_`Ê_Úq`@-ŽÐ_`%’ ½@-AÞ €£à@ؤ3Ð\  bà_@-#°}(’¢@-2ò €¦`@€¦`Ð_`Ò\ ÿúT”§ë²@­ð_`ÊG§ë– ðÔ_ ›>`’Òt „@ Är €£€¦ÿ@ €¦`ð_`Ò\ @-f €¢ ²?ÿ€˜€¦ÿ² ž¢Æ_ÐpàÈ\ ‚Ê €¡`‚`*ùþÊ`”àðš `Ò_ ˜#@ Ðr`€ƒ€¦ÿ@T3ð_`˜`àÖ_ ÔZà€¦ `²?ÿ€x€¦ÿŠ" ²!@ ðÈ_€¦``3†²`ž$– €£À`š&–€£`˜ `!˜”À €¢’ € ‚ `„&‚ž €  &hžš@€Š@ @€¡@`€ ÀÒ_`€¢@`²?ÿÚJ`€£`@°`Òt ² ðq ’`€¢@(oÿøÚJ`€ð_`€?€¦ÿ€ À`;²?ÿÖHà€¢à@˜àÆt ² Øq †à€ À(oÿøÖHà€/€¦ÿ@,† Ò_`Ð\ @,ú” €2@ð_`@,Õ²?ÿ €¢ ð_`€€¦ÿ@,Î Š!È’}0Â_–’ a@*¬Ô\ ð_`€€¦ÿØ\ ”âˆàðÄ[ ² Ð_ Ê_Är Þ\ Â[à Âq`€¦ÿ@ ¤ @,v`HÆ € à2Oÿ;Ð\ € !@,¶ô[¨¿’@,j Øà €Pú_`!¢!ÀÄ_Þ €£àGþ53 @)f§ïð_§ï¤$À«< ¿þ.3 ò[¨¿7 ?þ@,T`@¦àðê_`è_êu €7ú_`”ã0¶ Äà€  @ì[¨¿@,E X ?õ€+ú_`ð[¨¿;!ÒFà¬b0@,; hî_° àò_§÷’`ðâ]àä_âv`Ê\ ø_ Êv`Ø_ ôàØv`€¥ÿÿ@€¦ @,gÐ[¨¯€¦ @ ±< @&* ?ÿ±< ô" Çàèê[¨¿ ?õ@,`Xú_`#ô_§÷+¤`à¬`ðæ_úv è\àø_èv î_ îv ø¨·€§?ÿ@±< @,GÐ[¨¯±< Çàè–” ’ ‚?ÿÿý ž” ‚‘: ’ ÿýžã¿Pòw¨‡¡> ¤¨‡ôw¨²@5$öw¨—´ Tøw¨Ÿš€ž úw¨§@ ˜¨€¦`@ ´ €¦`² žàµd@ò  ˜ €¦`Oÿ÷€¦`€„à7+®áȨ}xì[@•;à¶?ÿ±>à¡@)î’@@%Ô¦ æ" Çàè„à»8 ƒ/p° @@+³‘.0  €¢ @%Ƕ?ÿ† Æ" ±>àÇàèÈ ¸€¡ @È' ’ ¤Ø`â`—+0 Р”@ Ôt €¢ @ Š`è`æ`Š`Ÿ-0 šÀÚt €ò`ò`Àt î` ’`ò$ ¤ €¥àî$ 2OÿèØ`‘< ’ ÿü ”ú €§`@ ¶¬€§`2@¬ @+¢Ð] ¬ ú €§`Oÿù€§`@+›±>àÇàèã¿Pòw¨‡˜ ¢¨‡ôw¨²öw¨—@7#øw¨Ÿ¶âtúw¨§šÀ@  ¨€¦`@ ´ €¦`² ˜ µd@ò    €¦`Oÿ÷€¦`€† 7+®áȨ}xì[@’@¡@)z•; @%`¸ ø" ¸?ÿ±? Çàè† ƒ8à…(pº €@+=‘/p  €¢ @%Q¸?ÿˆ È" ±? ÇàèÊ` €¡`@Ê$ ”`¦Ø`ä Ÿ+0 Òà–€Ötà€¢`@  ì ê  ©-° ¢@âtà€ò ò Àtàî ” ò$à¦à€¥àî$à2OÿèØ ?ÿ’ÿü*”ú €§`@ ¸°€§`2@° @+,Ð^ ° ú €§`Oÿù€§`@+%±? Çàèã¿P@5#3´ œ–¶€°} ®À”à’@+V˜ @º Çà‘è’à@+V‘: €¢ º Çà‘èº@(u’ Çà‘èã¿P@9"7¸#ü²â@´ð^€î €¥à@ ¦ @$Ö˜?ÿš •Ú" ±; Çàè-%ª¢@¢½¸¸€!è^€ž!Èú^€’ æ% @+*”’ ”`€@+&’ ”a@+"@$¨˜ ±; Çàèã¿Pòw¨‡ôw¨5öw¨—² Pøw¨Ÿ@9"úw¨§¸#$¶î^ÀÐ]à€¢ Â!”¨‡@+’ž ÐÚ^ÀØ`€£ @-ª¡È”¨‡è^À¢¨‡'¤á !@+’ö^ÀÐ^à€¢ ”@*ú’Çàèã¿Pòw¨‡”¨‡¢¨‡ôw¨5-öw¨—²¡Èª Pøw¨Ÿ@9"úw¨§¸"d î\á@*ä’è\Ð] €¢ Â'”@*Ü’¤á ö\Ð^à€¢ ”@*Ô’Çàèã¿P@7"#¶áÜ }ظÀº Æ€¦ Çà‘è²1 ¤"p¢¶ä `ð^à€¤ ¢`*ü¿þä `®$`¬%Àæÿø«- ¨`«5 €¥@(@ôN`Æ €¦ ‚ Øô_è^ æ] 0ŸÄÀ`ØÊ_ÈY`ÆY (ŸÀÀ‘5`ôN`°Ðvàê&ÿø€¦ ”áˆî_ @0¬€¦  @’`@$E¬ €$²`€¦  @’`@$=¬ €²`€¦  @’`@$5¬ €²`€Ž¿€@ Ÿ> šÀØ `€‹ W@’` ô- ¬ €²`’` ” ÿ²`@#ɬ ôN`€¦ OÿÕ€¦  À- Çàè‚@"b ˜ ˆ”á@ÆYžš ÊY ‚àÄ@ š£`OÿþÄ @ † – €ÔY ’ Ð@† àOÿþÐ"@Ãàã¿Pô 4€¦ @·>`@*7‘>àô 4€¦ @±> Çà‘è ³>à@*6èã¿P‘> @#’ €¦`® €´ ?¯d@¹> ‘? •=à@# ’ €@‘? @#¤ì ±= Çàè@"þ’ ¬ ±= Çàèã¿PÀ&à•> ÐF 4@#´’µ: €¦¿ÿ@VÈ ”€¡ @V·> ’@€¦@ `R¶"`®&À¬à€¥ `?¸`ò`°&àío!ª`è ¸ ê/?ï¦ ä?ñæ/?𢠠à?òâ/?ñž Ú?óÞ/?ò˜ `Ö?ôØ/?ó” àÒ?õÔ/?ô `Ê?öÐ/?õˆ `Æ?÷È/?ö„àÂ?øÄ/?÷²`ú?ùò/?ø®`ì?úî/?ùª  è?ûê/?ú¦ ä?üæ/?û¢  à?ýâ/?üž Ú?þÞ/?ý˜ `ò?ÿ€§oÿÎØ/?þº`²ú/?ÿ€§` ð`” Ô.`²`€¦@(oÿüð`±> Çàè@#:´?ÿÊ Ê&à±> Çàèã¿P@-!¡> ¬¡$º€€¤ @ À&à'¤àؘ~â_@Þ\`Ö[à ŸÂÀ@ €ÐF 8€¤ @¸ ÐF 8•< @#+’¹: €§ @€§ 3@)” ª~8¸?ÿ@#Ø@¨ è&à±? Çàè@ ±? @"ÿ¸?ÿú ±? ú&àÇàè±? Çàèã¿P@9!5¸ ,² Ø¶-ú^Àª£8Àî_`è]队Œ À& Œ¸æ_`ä\à0ŸÄ€Ð^ XÐ^ hâ  „ÿ@à" Ê_`ÈYaŸÁÐ_ ’€¢ €¢` ’ ØÐZ Ø€¢ ú?û€¢€Ú Ô^ ØÔr`Ú ˜ÿØ' Ö Ä€¢à@€¢à@ž @%—Çà‘è ž Þ& ÈÇà‘è ‚@ Š˜#”àØžÂ`LÈZ ‡:`šˆÀÒY "@ÄZ``ÖY`ÐA`4ÔZf ØZ`XÓ;`À€ÐA`4‰:`€‰ @€‰ ÆB 4Ær @Š ÖB 4Š Ör Ãà‘9`ã¿P‚7@9 ²àظ"D-´ª£8ð^€ž€î^ è]队Œ æ ±<àÇàèã¿P@7 -Ð^ ¶áܪ Ø¸À»> ô_à^ •?`Þ\* ŸÃÀ’€¢?ÿ@®@"Hâ €¤` "OÿôÐ^ ;²bø_©=ठÀ𠀦 ¥d@±< Çàèã¾p‚/@9 ¬àظ!,º¸§'â_@žê\`è]càŸÅ§'æ\`“> ”ä\ë ŸÄ€Ò_§'ÔG§/@"‘à\`¶±>àÞ\#ПÃÀÇàèã¿Pô Ì@9 €¦ ¸ @¦@!hÐF 4è ÐÀ& Ô€¥ @3®`Øö\Àì^àê] 0Å@èÇàèã¿P@9 5¸ ² Ø¶+î^À¨c8Àì]àæ]©˜ŸÄÀ’ ÒZ Â@ €¢`äZ`Ø@"€¤ ’*ü¿üäZ`ØÇàèã¿P@95¸#”² Ø¶-ð^Àª£8Àî^ è]队Œ ðZ Æ*€¦ ˜aXÒ PÖ^À Ôà€¢@ @Þ „€£à@à ˆ€¤ @¢ ÐF P’@!Ü” @ä P€¢@€¢ @ €¢?ÿ@ @!šæ €¤à"OÿñÐF PÇàèð^ Ø€¦ þ?ÛÇàèã¿@@73¶⌰`Ø´À+î^€¨c8€ì]àæ]©˜ŸÄÀ’ ¤@(§ûú\ Ç@€§`Þ`P€£À@¢ ú_`Ø€§`*ÿûÞ`P€º â'`ˆà§ûà'`Çà‘èº Çà‘èã¿P@97¸!Ô²àØ´-ð^€ª£8€î^ è]队Œ âZ Ä@€¤`ä\`¸Ä€€¤ æ`d€¤à@@'×’ â\`Ø€¤`*üöä\`¸Çàèã¿P@-+¬¡4¨`Ø¡>à¶€â^À%ž£8æ\`»> À¹>`Ú\队Ã@’ Ø\`´Ö[ (ŸÂÀ àÔ^ ®¬ Ôr Ø•? Ðv ~xªÀ’@ ßø%à4Š €§ Ê%àL@ ú%à8€§ @ @ t‘? €§"@À%àÌ@ o‘?`À%àÌÈ\`”„â(’ÂY"и -Ð^ÀŸÀ@– Ðuà’ò\`è^f 3ŸÅø%àŒ”`–`æ\`¨b8Ò]àä\çŸÄ€Þ\`”` –`0Ò]àÚ[çŸÃ@Ø\`”`8–`HÒ]àú['ŸÇ@à%àPø%à`À%àdð\`à^ (1ŸÄ ÐuàX  ˆÖ\`ÔZáȟ€ÐuàhÒ ¢`â" Š!h¢ È^ÀÆ Æ%àp@ãÀ%àt„¡ê^Àšᨒ?ÿÀ%àxÂ`æ^ÀÂ%à|äàØ^À ä%à”ú ö^Àú%à˜Ôà– Ö&àÔ%àœø%à€Ò%àHâ%àÄø%àÔÀuà¸À%à À%à„À%àˆÀ%à¤À%à¬À%àÀÀ%àÈÀ%àÐÀuà@ø  Ð& Çà‘èã¿P‚7@9²àظ"œ-´ª£8ð^€ž€î^ è]队Œ À" Çàèã¿P@97¸"<²àØ´+ ð^€¨cpî^ ì]à(ŸÅ€ @ €°Þ\ €£àÃÀ¢?ÿðsà8ä ðt Þv 0¦ æ$ ä& â& Àv À& Àv Àv Àv (Àv 8Çàèã¿P@75ÔF`¶á”®¾à¸À-ºª Ø’@ è`â_€¥ "@ Ð^`à\`Þ\*°ŸÃÀÐ^`’`”@€'Ð^`  €¢ æ\`ä\ê°ŸÄ€”’` @ô€Ð^` è`€¥?ÿ"@Ð^` Ð^`€¢ ‚ Øö_ô^àî^ª°ŸÅÀ-ª¿”’@ßè`’`8•= @ÚÐ^` €¢ – ØÔ_ ÒZ ÊZj°ŸÁ@ ”†? ’@ÊÐ^`(€¢ 3¦`Øä_â\ à\j°ŸÄ”šÿ0’ @º²``@·èã¿@9¸#ì3º®`Øà_@ì\ ê]«ØŸÅ@’§ßö§ß€¦à@,¤ )ò_§ç¢ ¦?H®@¬@ê €¥ÿ@¸§Ë§Ë’@‘•< Þ_§çÖ\ š@Ô`Ø` ÊZì“: ?ÿ•: ŸÁ@Ä\ –ˆ`¸”Æ_@ÂX©øÒXàŸÀ@˜ ö§ß¤ ¢`€¤€$OÿÝò_§çÇàèã¿@@9ê /¸"ܬàØº€¥`î_@@9 Ò^ ø]àì_+0ŸÅ€” ú]à ê_aПÅ@’?ÿè ”¤’– ¦ æ"  â]à˜?ÿÞ\kПÃÀš €@’ÿÿ”” ¶ÿ€¦à@/ö$ Æ]àÄXáŸÀ€€*Ò^  ô ²¿ÿò$ €¦`4@Bˆ ð]àè^!ŸÅˆ ±9 ÇàèÐ^ Â€¢ Ø]àÖ[*°ŸÂÀÔ]à’ÊZ§¸ŸÁ@€@ ˆ ±9 ÇàèÚ €£ÿ@ˆ ±9 ÇàèÒ^  Â@€¢`à]à”§ûÞ\$PŸÃÀ€2@ˆ â§û€¤`@ˆ ±9 ÇàèÒ^ (€¢`Â@æ]àä\é8ŸÄ€” €ˆ ÿþÚ’ˆ ±9 Çàèã¿@@-ÄN +¬ Ì¨`Ø¢€ºä\@€  #@’ ”§ûÖ\ ÊZá8ŸÁ@€2@i² اû€£ @Z² €A€£ ¬aˆê\@§8 ¨`à À€Œ @2³? È\ ”§ûî^ ¨ÆY!8ŸÀÀ’€@€¦`² ±>`Çàè@ €¥àاû"ÅÀ$² Þà(² ˜Ø'§û€€£ ÅÀ €¥àÚ§û² Øà(º˜# Ø'§û€€£  Ð\ ² ”〒@ ÊZ'PÒZ`±>`ŸÁ@” Çàèæ^ ¨² àà(˜?ÿØ'§û€£ @º ±>`úvàÇàèÇ@€§`ø`(€§ @ú_` €§`*ÿûø`(€ú\ ±>`úvàÇàèú\ ö_b@šÿh”’@ ² –`ŸÆÀ˜ ±>`Çàèã¿@@#!¢b´¸@ž?€² Æ€¦ Çà‘è; ä ‚„cº€¤ ‚`*ü¿þä`¶ `®&Àæø­-àª%€©-`¯5 €¥À(@î_`Ð_`€¢ †#@¬€¢`– ØÔ_ ÒZ ÊZ`0ŸÁ@%¦à¢ Øà_Þ\ Ú[à(ŸÃ@‘4àÐw`î'øî_`èN €¥ @g˜aˆ”àØì_ ê_ Â]`ôXj’§ýŸÆ€ô§ý·: €¦ @°’`@k®à€OÒN €¦  @’`@c®à€GÒN €¦  @’`@[®à€?ÒN €¦  @’` @S®à€7ÒN ‡. €¦  @…0à’`(@I®à€-ÒN €¦  @’`0@A®à€%ÒN €   @’`8•> @à®à€ÒN €¦ @’`@@0®à€ÒN €¦ €@  ÿŠ€È `€‰ W@’`HÄ-à®à€ÒN ’`H•> @Å®àÒN €¢`2Oÿ£Â]`À-àò_`Çà‘èã¿0@7 ¶àcD¢À @¥>`æ ø Tö\ \€¤À$@!ú^ ÆÀ€¦à–#Œ”@ €¦À ` ž Øú\@è_`ê] 0ŸÅ@7 ŠãDš@æ`¦à²àØÄ\@ÂX îX`(ŸÅÀ‘4àæ ¶ú^ Ðt \æ$ T9¬?в@€¦@`  è`Þ`¥`€¥ Å ’`@×’`¹2 ’`•<à@q–¬ –Øà«5°?¬`€£ –à*û?þØ àš"ค¿ÿ@Š®#@ä “=ত€ @…¤ €¥ «:`ºà˜´Àê\@@<¬ Às¨¯Ö]`˜§ïÒ\ ”?ÿÊZàÀ–§÷ŸÁ@š Ô_§÷ö\ \ÒJ €¢`@/È_§ïÆI € à@ )š?è˜ÿÿÖ\ ’@ •; @;€ ®/¬ÿàžÿýÖ\ ’@•;à®@0²Äà€  ²`*ø¿þÄ`†&`¸‡?ÿ@L® ÀÐ ƒ=ठ´À¦¢4OÿËÀs¨¯€DØ?ü€¥ @%–§÷7ºà˜Ò\ ˜§ïè\@”?ÿÀs¨¯ê] Ê]`ÀŸÁ@š Ô_§÷ ˜c ÈJ –@ öZà€¡ @î_§ïÞMà€£à@ „ÿÿÖ\ è’@•8 @ù€ ®†à²ÿýÖ\ ’@•>`®@îˆÒà€¢`ˆ *úþÒ ”! ¸‡?ÿ@ ®"€Ô ‹=ଠ´À¤ ¦¢€Oÿ€¥ Ø?ü€£ "@ôD ÿþvö\ \’ÔD @#¡šÈà€¡ š`*ù?þÈ `Š#`®!@ôD €¥À` ¢¿ý±<`¦ .æ.Àø ¤?þ»< æ.Àà ¨?ÿ«= æ.ÀÇà‘èã¿@@9/¸#ô¬àغ¨`ø_@¡>`ê_ æ]`(ŸÄÀ‘5 ¤€¤ @¢ ®?ÿÐ^ ²¶§ûÞ_ ¢`´ Ú[áXŸÃ@’Ðv`²`€¤@$Oÿ÷Ð^ ™<`—+0“<`Àt€ ÿþÖ”Çà‘èã¿P@9€¦@¬ ® *­dP¸#4«- ¢¡=` Æ@€¦`% ž£Hš@µ< ÒC`Ô[`ÿþ¹¶–?ð²@ @hèÒ^` )ÿÿâ”ÒF` ¦<Ô^`µ< ÿÿ¬º@¸öF`(²@Wèã¿P‚’@3”²bd/ª@žÿÿĬü“>à´ÿÿŽ”²@¶@;èÖZ`¨€¢ `” Ãà‘: ÂÀ €¢àÖZà €¢ "`” €¢à*úÿüÖZà ” Ãà‘: TTT@@@@@@@@@T@@@TT@T@Tø0ø„„h ã¿ @#! öw§ï¢a$–#¨æ_¨¯¸@¶ æw§ßÔà€¢ @ä°à_§ßž`Øâ_µ> »?`Ö\`ÔZ갟€Ð\ ’ÐJ €¢ @@)?ÿÿØJ`¨"ø©= šª# b©5`€¥ @¯- ìEÀ Å€ Ä^ÿpŸÀ€€@Á3¤| €¦¿ÿ®§×¬ ’ÿ(“d@@Õ>  æ^ÿÈŠ † tò^ ¨¤Ê&àÀ$ ÄÀ €¤àÒ_§ïÿüK”æ\à0¬€ ôÿú€¤à€¥ @Р€¢ @:¦ €Oîÿ¼Âÿ¼€ `@ € `@€ `"HÐ\  € `"H)ê\  ¦ €+€¤à€ `@Œ€ `@¦ €$€¤àÖÿ¸”‚ÿÿ@„Ô&ÿ¸¦ €€¤àÿÿY’€@|Øÿ¸¢ƒ?ÿ@yâ&ÿ¸¦ €€¤àÚ Þ ˜€£@@qèÿ¸´…?ÿ@nô&ÿ¸¦ €€¤àì^ ¨€¥@`g¦ €¤à@ ”§ïÿý¹’ '–„ü(”§×’¦ @fÆ^ÿ`Š ˆ Ò^ÿhÊ&ÿ¼È&àŸÀÀîÿ¼’ÿû€¢`@2” @?ÿÿìÿ¼†àØî^ ¨‡8àš% òv ¨™3`„À‚ X€£ @!µ+ ÞF€ÃÀòt  €9À&àÊ ˜Ê$ €5À&à Æ@ €¦`òt  |8’@9€îv ¨ú^` út  €'À&à—?`š§×’”ÿþݘîv ¨¿ÿ¸€¤à– ¨™=àÿü=’€¢?ÿGÿ¯+¨`Øâ_ô\`Þ^¥€ŸÃÀ”˜|0’ @Ö\`ÔZæØŸÂ€¿ÿž€¤àÀ&àÇà‘è ã¿P@;/ ºa<+¢@Þ ¬ãh¨`t @¤ ¦@€¦ Þ$?üä$à@Þ$ ’ Ò$?ø€ö?øÒ^à˜`ØÖ\@ ÔZàÊZ¡@ŸÁ@”?ø€@² ±>`Çàèö?ø² ö$ ±>`Çàèã¿P@9/ è ¸ t¬ãdº€¦ ª@@è%`– ¸À €§`@5º ¸ ø$ ±?`Çà讼p€§`´@\¢ ¤à® LÐ^àšàØØ_ Ö[ ÒZê°ŸÂ@ÐJ €¢ -@N-ª ØÒ\ š§óö_–”è^àæ]!0ŸÄÀ˜ €@Fè§ó€¥ @€¥ "H¢`€4¤ ¢`€¤@@ ¤ ÔD?ܰ|x’@Ê€(¤ Ò\ Š Ø”?àÈ_ÆY ÄXáŸÀ€€2@'’ €¤ €¤@@ ¤ ÔD?à|x’@±€¤ 'Ò\ ”?àžàØÚ_Ø[`Ö[!@ŸÂÀ€@’ ¤ ¢`€¤@&Oÿ«Ð\ €¤@@º ±?`Çàè’ @•º ±?`Çàèã¿@@'£> ¦ãT€¤`@¤À# ¶cp¸€ô_ €¦ "ÆZ¤ ÿù`’ô^ 0€¦  þ¿ü¤ ±< Çàè-€¤`  Øà\€@cú\ Æ_j°ŸÀÀÐ^à‚¼È´’€€¢ `  ê ì `¥@`€¥`Å@  @µ’`; €¸cx¦€2@Ô\ Ð\ÿøÂ€¢ ÿþºÐ\ÿø ú?ý€¢ ¤ À$à±< ÇàèðZª°ŸÆÐ^àÈJ €¡ -@4”§óÖ\ Ò^àÊZá@ŸÁ@€@,Ú§óÐ\ÿø˜ Ø'§ó€¢ Þ €£À @ÐZ 0€¢ *ú?ûÞ €!ÿþ‘ò\ÿø€¦`*Æ@ü¤ ¤ À$à±< Çàè!¸ Ø)Ò\€ª<ÐôZ`’€¤ î^§P±< ŸÅÀ” ÇàèÿøÅæ\  ¸„ãÈÒ^àì\á0|pš§ï¦€º€”–ŸÅ€˜ €2@:è\ ާà6@`® €£à@€£à"H€¤`® €Y€¥À€¤`2@ð\ €£º`xÈ^*°® ŸÁÐ^à’ÿþ´ €K€¥À@š #¶|øº€€“Ú' Ø\ Ö[*°ŸÂÀÐ^à’ÿþ£ Ô\ Ò_ ÊZ«0ŸÁ@” €¢ *Â2® ÿþ0¤ ±< Çàèê]*°ŸÅ@Ð^à°@F’ : €¢ ® À-à´ :ÿþ†’°àô-àî\ ” ì]á8ŸÅ€’€@® Ð_ €¢ Ä ‚€¿ÿ@ Â" Ò\ ÆZaŸÀÀ€€¥À’` ® @“€¥À@d™=à Øš§ïð\€—+0”Ò^À –Ê^ ÈYa0ŸÁ˜ €@µ=àڧ`@€£`(@µ=à€‹=à€£`"@®à€‹=à€¥À@µ=à€-ºaê^ ©.°®àÞ]j°ŸÃÀÐ^À’ÿþ< €¥À6H7â\ ‹=àš§ï„àØ”Â\€‰)p–Ò^ÀðX`ì^!0ŸÅ€˜ €@™=àЧ @€¢ €™=à@€¢ @™=à®à€¥À@ºaÿý°ö\ ’ä^çPŸÄ€” ¤ ±< Çàè™=àÔ\ —+0ÒZª°ŸÂ@Ð^À ’ÿþ (â\ Þ\a°¤ ŸÃÀÐG à\ Ú\'h’ŸÃ@±< Çàèã¿P@1/ °!”¬ãð¸ºô_`Æ€€¦ +¨|0¦’º`@”ô_`€¦  þ¿ú’Çà‘è ã¿Pòw¨‡ôw¨´3 öw¨—®c @7øw¨Ÿ¶áúw¨§ºÀ¶¨¸@ì_ Å€€¥ @Ä’Çàèò $î!€¬`PÐ_!ˆ€¥€@’€¢ „ãØ‚@€¢`”àØÒ_@ ÊZ`ÈY`0ŸÁ'ê $¤àØâ_@¨`Qà\`Þ\ (ŸÃÀ‘5 Ú $’Ðw!ˆ˜`PØ'!€@ý”ú_ Ô_ Ò_!ˆŸÇ@Çàè‚ @㘠ˆž†š– ÄXàÐXàÔpà—zT ÖpàÃà’‚ @†~ø˜#  ˆ”ãšž„ ÐX ›zT ÃàÚp ‚ @Š ˜#H’ã žˆ ÐY ÒY Êq ÃàÔq ‚ @”ã0˜"ð’ž@ Ê Ãà‘9`ã¿P@ šb¬–#Hº@€¦  @ @ð$ òt Çà‘è +¨`Øæ_@µ> ¸ ä\à­? £- Þ\ (ŸÃÀ‘4`€¦ @F°´¿ÿ€¦ @9’ Š&‡9p?‘:`ˆ@…*0‚!€ @`0¸º&¿þ€§` @"´¿ÿ¶`î^`ÁnàÀío À´¿øì^à¶à@îw ¸ @ê^ÿÈìw?Èè^ÿÐêw?Ðæ^ÿØèw?Øä^ÿàæw?àâ^ÿèäw?èÞ^ÿðâw?ðî^ÿø€¦ OÿëÞw?øîw ¸ ²€¦¿ÿ@ Ô^`´¿ÿÔw ²`¸ €¦¿ÿ6OÿûÔ^`€ ðt ¶î^`€îvà²`¶à´¿ÿ6Oÿûî^`ðt ÇàèÃà ãº`@95¸ 䮠ض)ô^À¦  ì^ ê]£àŸÅ@§¤ÀÞ €£à@¬  @ˆ’ % ¦¡È/è^Àˆ °†üø¦Àª €¨?ÿ¤À€¥ @'’¿èšàØ”¿øø^À Ø_ Ê[%ŸÁ@–  ’ḺÀ €¢ ’ºP@Y”Â`’„`Ä'`ÔF ˜—8`ÿþ²@’£”$@û ³: €¦`@À€‡>`’ ÿþ£@’£”$@ì ³: €¦`@‡>`À/£€ú^ ¬£ú^ À(ÀÈ_c¸§’£ŸÁ•>`ºÐ^ îZ" ŸÅÀ€@¬ ¿ÿ¹€¥ ÔO`€¢  @€¢  2@:Ð^ ÊO`€¡`@5®9 ˜ °’À ÖZ`ÂÀ €¢àÚ~¸Þà€£À @ò]à®à€¦`*þúÞàÒ]à ØÈ^À§ìY Æ]£¸ŸÀÀ”?ÿÂà„@€  @€ `2@Ð^  /‚£lžý²À¸£’ÀÔF`@O£§˜`ØÖ^À ÒZàÊZc¸’ŸÁ@”?ÿÐ^ ÊZ&@ŸÁ@’ø^ È_$ŸÁ’ì^ ¸Æ]£ÐŸÀÀ§€§ @ €§ @*€§ "HÂ^ €§ @!€¬ ²' €¦`@/¬ Š=(’À•? ÿþ–¿ÿR€¥ òXeˆ„ý¬ ®À’ŸÆ@” ”’ûÿþ¿ÿC€¥ È^ ¸ €ÚY#ÐØ^ ¬ Ö[%€ŸÂÀÒJ €¢`Gÿ5”šü0’À ÿýü¿ÿ/€¥ È^ ÚY#ПÃ@§–  ”À Ò €¢`@±?  @›’ Çàè@_ ¿ÿUú^ ã¿P@7/ ¶बà°¸À+²¨`Øú_ô^`Æ€€¦ Ô^`â_`–`’²`à\cŸÄ˜ ô^`€¦ *þ¿öÔ^`æ_`#%  ~ØÞ\ï(’£” –˜ /ŸÃÀš Â_` ˜`˜ – ’£0† ¸Ä_3¬üPÐrà´}8Š  ) öXg€¦!¼ÒX Ê" ”–ŸÆÀ˜ ê_`²ä]dÄ€èã¿0@5/ ´£t¬ã0¸€º·>`ê`€¥`@† ÿÿ§† €¦àÆ'`4@'Æ'`0)#¦ Ø }@ò_ä^`Þ\¡ÐŸÃÀ’ !Ðw§÷Ú ˜`Ø" Ö^`ÔZ갟€Ð_§÷’§÷Òs¨¯”?ÿ– ’˜ ÿùgš Ð_§÷Ê ˆÿ€¡ @È" ø^`ö_!ŸÆÀÇàèã¿P@95 ¸"l®£0¶¸Àì €¥ @'ò_!€`Øú^ÀÆ@ €¦`´!€Ô_`ÊZ£H´ ŸÁ@’ò^ €¦`*þùÔ_`+ä_`!¨`˜¦Àâ\£˜Ò\àŸÄ@Ø_`ž ¸Ú^À° Ö['øÒ[`À' ŸÂÀ” ð' 0ð' 4Çàè‚@”à ˜!€’žŠ@ ÃàÐ!` ‚P。!@7 ?ÿ¶á,5 ˜¸À²½h–°’!ž ?ÿ”` @ì @)’ ®@ @#’Çàèã¿P@;€¦ º`”£>`@ @ºa@Ò\@e‘<`€¢?ÿ@ ±<` ’¢„ˆa „?ÿÆ\À" Ä à@¯è€¦ –"ˆ¯>ಠ@°Úü€£`@ '%’àž €Ô\@>‘<`@”‘<`€¥à@ 9´"ˆ+¬¨}ˆÒ] ÿÿ Æ€¦ ò^`ÿÿ›èÇàèã¿P@97¸#|²ý´1€®!%@’ ª?ÿì^€¢¢„©5` €¦ Ð% Ÿ4ð?€£à@ Þ$ ³: ° ´ ¶ ¸ ÿÿèÇàèã¿P@97¸"ܲá´/ö^€¬ý €Àvà@æ’ €¢?ÿ@°?ÿ±> Çàè°3@4‘> ®bˆ¬€Ðu  €¢ @å‘> °?ÿ±> Çàè@/‘> €@ † ¨„€@pÄvà@.ÐB º}°¸Ð^à’€@7•? @Í‘> °?ÿ±> Çàè@'‘> €¢?ÿ@˜bœ–€ @XÖvà@ÐB ’¿ŠÐ^à’€ @•9`@µ‘> °?ÿ±> Çàè+)’`¦"ˆ‘> #@ñ” ¤€ `@ô^€±> Þ\ Þv ÇàèÃàã¿P@7/¶á¬∪À¶@»> ¡>`Ð^à@u’ °@þ’¡ø]@ @Ðw @ÓÐB Ô^àˆ †’@Ð_ ™8à@Ú—> °?ÿ±> Çàè%–?8’£²@ ‘> @®”€@ ž£@ù@·ÐB š`•;`@“> ž£“;à”`(@‘> €@ ¨£@è@¦ÐB ¦`0•<à@±“> “= ”`P@‘> €@ €¦ @Ø@–ÐB ª``•=`@¡“> €¦ @  ’ @+”  ’ @'” “>  •?`—< ÿþ¹˜@—±> ÇàèÃàÃà‚@’àØ˜#”ÐZ ˆžÊY šaxÆY`ÄXã8À€ÒY ã¿P‚5Ð^ @9² Ø¸"˜+¶¨axî^Àž’ Ô^À¤ ì]àæ]¢ØŸÄÀ–ä& ÄÇàèÖ Ä€¢à@€¢àÃà@€¢àHÃà‚ÿÿÕžÃàÀ" ÄÔ Ä€¢ @€¢ @€¢ "H’ ÃàŠ ÃàÊ" Ä‚Ò" Ä@'žÃàÖ Ä€¢à@€¢à(H ” Ãà€¢à@ €¢à@” ‚Ô" Ä@ žÃàÖ Ä€¢à@€¢à"H‚Ãà‚ÿÿž@gž‚À" Ä@ìž– ÃàÖ" – ‚Ö" ¤Ò" ¨@Mžã¿P‚5Ð^ @9² Ø¸ 8+¶¨„î^Àž’Àì]àæ]£8ŸÄÀ”À& ¬Çàèã¿ @ ös¨¯#Ôˆ`Ø£?`ºö_@/¡> ‚¢Æ^àµ? ¬áP@«. ¨ ðX阦?ÿô#¨¿ŸÆ’ ø_@ž%@¤À'§ó›+à€¤ 𠘀 ´ ¯+ î#¨»ð#¨·@~š  ‚`€ @6@‚ Â$ €‘8`‘8`À$ ‡*0ÞXÀÄàœ€ €@_Èà €¡ 2@ìà¤Òàd€¢`"Hìà¤Ö[¨¯€¥ Þrà"ň®?öø^à®?ö±=àú_#ŸÇ@Çà耥 @,š`€£@OÿÙ‚` Å€¥ Ú¨¿€£`@¨ Ø Ö_@°x註ÔZà’@‘= êZ£ ŸÅ@”§ó¨ð^`® šÿ„¬ª@ Ò^à”®àÐ^ ¬ ÈZbØ’ ŸÁ–€¥Àô& ¬$Oÿõð] €<Æ^àôà¨€Ž @€¥ Ø[¨¯Þs À#à¤"ÅJ®?÷ä^à®?÷±=àæ\£ŸÄÀÇàè"Å@®?õà^à®?õâ\#±=àŸÄ@ÇàèÔ[¨¯€¥ â#àœÀ#à Þr "Å1®?öö^à®?ö±=àò^ãŸÆ@Çàè Å€¥ ꨿€¥`@ è^à”ÿx쨻Ê]# ’@ ‘= ŸÁ@”§ó¨Æ^àÄX㨟À€ §ó€ `@Ð Þ¨·€£ÀOÿi€¤ €¥ "Å ®?ôö^à®?ôò^ã±=àŸÆ@Çàè®?þ±=àÇàèÖ`¨?÷Š?õ” à€¢ ‹f@Ãà‘9`@@ã¿@97À'§ó¸ \²ÿ€´/°€¬àØ)ú^€¦?xÉ ê_` ‰D’€ä]c  FÁ#¨¯ÐC¨¯ŸÄ€”§óâ§ó€¤`@ à_`Þ\#¨ŸÃÀ Ú§ó€£`"Oÿûà_`Çà‘è ‚@”àØ˜#¨ ˆžÒY ‚áÛÊZ`ÄYdÀ€’ã¿P‚7@9²àظ#L-´ª¢ð^€ž'€#¤üPî^  `Àè]队Œ š€Þ^€À" ÚsàÇàè‚ÚZ @–âȈÀžÃ@ €£`Æ`?(π À@Ãà ’¿ÀÀr š Š Êr Ãà –?Е2à’"  ‹2p?Ãà‘9`ã¿@@-Àw§÷¬¢¸€ÿÿλ>  €¢ ¶ Çà‘è7ÊZ ¦˜ÿø¢ ˜§÷”’ŸÁ@– €¢ ¶ Çà‘耧`@F¶úN`€§`@ ´   `ÿÿÍ‘?`úL €¢ š µd@ €§`Oÿù  €¦ 2@(Â\àÞN`€£à@¤èNà€£À@ ªª`ìM`€¥ @ ¤ îL €¥€Oÿúª`€ ú\àôN`€¦ 2@ú\àÿÿªÐL €"HÞ_§÷ú\à’”– ¶ ŸÇ@˜ Çà‘è’”– ŸÀ@˜ ¶ €¢ ¶ Çà‘èÞ_§÷%¢ Øà_˜aØÆ_ ”à˜aÐÞt Ä[àÈ_ Ê_À€ €  øX ò\ øpàð^`ê^ êq è^`æ] æq`Çà‘èÀpàÀq Àq`Çà‘èÇà‘èã¿PÇàèã¿PÇàèexit 1exit 1exit 1exit 1exit 1exit 1exit 1exit 0exit 1exit 1exp0spawn_id%s: spawn id %s not open-1exp%s: %s is not an expect channel - use spawn -open to convert/dev/nullclose-blockingonclose user_spawn_iderror_spawn_idany_spawn_idtty_spawn_id-console-ignore-leaveopen-noecho-nottycopy-nottyinit-open-ptyflagusage: -open file-identifierusage: -ignore signalusage: -ignore %s: unknown signal nameusage: -[leave]open [fileXX]usage: spawn [spawn-args] program [program-args]stty_init %sThe system only has a finite number of ptys and you have many of them in use. The usual reason for this is that you forgot (or didn't know) to call "wait" after closing each of them./The system has no more ptys. Ask your system administrator to create more.- You have too many files are open. Close some files or increase your per-process descriptor limit.spawn_outslave,name [open ...] channel is neither readable nor writablefdopen: %sopen(slave pty): %s %dslave,fdspawn: returns {%s} too many programs spawned? could not create pipe: %sfork: %sparent: waiting for sync byte parent: sync byte read: parent: telling child to go ahead parent: sync byte write: %s parent: now unsynchronized from child couldn't execute "%s": %sexp_getptyslave: slave = %d but expected 0 child: sync byte write: %s child: sync byte read: %s -iexp_pidusage: -i spawn_idgetpid is deprecated, use pid must have one arg: secondssend_slowsend -s: send_slow has no value%d %lfsend -s: found %d value(s) in send_slow but need 2send -s: size (%d) in send_slow must be positivesend -s: time (%f) in send_slow must be largersend_humansend -h: send_human has no value%f %f %f %f %fsend -h: found %d value(s) in send_human but need 5send -h: average interarrival times (%f %f) must be non-negative in send_humansend -h: variability (%f) in send_human must be positivesend -h: minimum (%f) in send_human must be non-negativesend -h: maximum (%f) in send_human must be non-negativesend -h: maximum (%f) must be >= minimum (%f) in send_humanhuman_write: avg_arr=%f/%f 1/shape=%f min=%f max=%f exp_i_parse_states: warning: indirect variable %s undefined--usage: send [args] string-h-s-null-0-raw-breaksend_tty: cannot send to controlling terminal in an environment when there is no controlling terminal to send to!send: sending "" to { %s sendÀ€write(spawn_id=%d): %s} -a-info-noappend-a -noappend -leaveopen cannot start logging without first stopping loggingcannot use -a without a file or channelusage: log_file [-info] [-noappend] [[-a] file] [-[leave]open [open ...]]usage: [-info|1|0]-nowusage: [[-now] 1|0]-f-f %s 10usage: [-f file] 0|1-onexit-noexitrename _close.pre_expect close-strictwrite-strictwrite valueoption-onexec-slaveusage: -onexec 0|1expect/cmdinfo/closeno such slave%2d usage: trace level-nowaitwaitPOSIXno childrenCHILDKILLEDCHILDSUSPusage: forkfork: returns {%s} usage: disconnectalready disconnectedcan only disconnect child process-overlay -# requires additional argumentoverlay: mapping fd %d to %d warning: overlay: old fd == new fd (%d) need program nameexecvp(%s): %s -eof-eof cmd-continue_timerusage: exp_continue [-continue_timer] expect/cmdinfo/returnexp_opendup: %sexp_%sdebugexp_internaldisconnectexitexp_continueforkgetpidinterpreterlog_filelog_useroverlayinter_returnsend_errorsend_logsend_ttysend_usersleepspawnstraceexp_configureRE-2-GLOB '%s' ARE '%s' %s Processing AREOPTSEXPANDED '%s' <-- '%s' QF '%s' QB '%s' ST '%s' RESULT_ '%s' RESULT_ ERROR LITERAL '%s' Q-STAR @%1d /%1d '%s' <-- Q-Forward ?%1d /%1d '%s' <-- Q-Backward /%1d '%s' <-- /%1d '%s' <-- -nobrace-glob-regexp-exact-notransfer-nocase-i-indices-iread-timestamp-timeout--flag-glob pattern-regexp regexpGate keeper glob pattern for '%s' is '%s'. Activating booster. is '%s'. Not usable, disabling the performance booster. -exact string-i spawn_id-timeout secondstimeouteoffull_bufferdefaultnullkeyword expect%s: does "" (spawn_id %s) match %s ""? Gate ""? gate=(No Gate, RE only) gate=yes re=null? ? -re-gl-ex {%ld} -all-noindirectdummy-braceinfoexpectexpect_outbad spawn_id (process died earlier?)i_read(spawn_id fd=%d): %s%s: set %s(spawn_id) "%s" spawn_id%s: set %s(buffer) "" bufferexpect_backgroundexpect_beforeexpect_afterunknown expect command%s from indirect variable (%s)%d,start%d%s: set %s(%s) "%d,end%d,string0,start0,end0,stringexpect_background: full buffer _backgroundexpect_background: read eof expect channel %s lost in background handler expect: timed out expect: read eof expect: continuing expect expect: continuing expect after update -format-gmt-secondsargs: [-seconds #] [-format format] [-gmt]-d-i needs argumentcannot do -d and -i at the same timetoo many argumentsmatch_maxmust be positiveremove_nullsmust be 0 or 1parityclose_on_eofexpect_userexpect_ttytimestamp10full bufferglob patternregular expressionexact string%d,start%dinteract: set %s(%s) interact_out" %d,end%d,stringinteract: set %s(%s) "WARNING: interact buffer is full, probably because your patterns have matched all of it but require more chars in order to complete the match. Dumping first half of buffer in order to continue Recommend you enlarge the buffer or fix your patterns. interactspawn id %s sent <> -brace---exact-re-input-output-u-o-i-echo-nobuffer-indices-f-reset-F-iread-iwrite-eof-timeout-nobraceswitch-re pattern-input spawn_id-output spawn_id-u spawn_idcannot use -o more than once-eof is deprecated, use eof -timeout is deprecated, use timeout -timeout timeeoftimeoutnulloptiontimeout time [action]defining key , action interpreter cannot interact with self - set spawn_id to a spawned processinteract: received eof from spawn_id %s interact: write on spawn id %s failed (%s) spawn_idreturntty_raw_noecho: was raw = %d echo = %d ioctl(raw): %s tty_cooked_echo: was raw = %d echo = %d ioctl(noraw): %s ioctl(set): %s tty_set: raw = %d, echo = %d exec /bin/stty =%d chars)system() = %d ioctl(get): %s %dCHILDSTATUSCHILDKILLEDchild killed: CHILDSUSPchild suspended: child wait status didn't make sense child process exited abnormallysystem%sa-bufferingnonewchannel is not writable\r\n\t\u%04xthis programusage: expect [-div] [-c cmds] [[-f] cmdfile] [args] onexit handler called recursively - forcing exit application exit handler called recursively - forcing exit tcl::historynextid%d+> errorInfo-nostack error %d: usage: expect_version [[-exit] version]version number must include a minor version number%s requires Expect version %s (but using %s)%s requires Expect version %s (but is using %s) 8.1closereturnexpect/cmdinfo/closeexpect/cmdinfo/return_close.pre_expectExpect5.45expect_library/usr/local/lib/expect5.45exp_libraryexp_exec_librarytcl_interactive0trap {exit %d} SIGINTtrap {exit %d} SIGTERM+b:c:dD:f:inN-vexpect version %s %s: -D argument must be 0 or 1 EXPECT_DEBUG_INITexpect version %s argv[%d] = ---rcould not read - odd file name?%s: %s 1argcset argc %s argv0set argv0 "%s" set argv "" argv%s/expect.rcerror executing system initialization file: %s Tcl_Eval = %d DOTDIRHOME%s/.expect.rcerror executing file: %s executing commands from command file %s executing commands from command file exp_versionprompt1prompt2/tmp/expect.%dcan't create %s, errno = %d pty master (%s) is locked...skipping %s slave open, skipping %s master open, skipping using master pty %s /tmp/ptylock.%c%sSIGNAL OUT OF RANGEsighandler: handling signal(%d) caught impossible signal %d sigchld_count-- == %d caught unexpected signal: %s (%d) SIGCHLD%dinvalid signal %s-code-interp-name-number-maxno signal in progressSIG_DFLcannot trap %strap: setting up signal %d ("%s") SIG_IGNusage: trap [command or SIG_DFL or SIG_IGN] {list of signals}async event handler: Tcl_Eval() errorInfoerrorCodereturn value = %d for trap %s, action -nostackreturn value = %d for trap %s, action %s NONEtrapSunMonTueWedThuFriSatSundayMondayTuesdayWednesdayThursdayFridaySaturdayJanFebMarAprMayJunJulAugSepOctNovDecJanuaryFebruaryMarchAprilJuneJulyAugustSeptemberOctoberNovemberDecemberAMPM%?%s %s %2d %02d:%02d:%02d %d%02d%03d%d%s %s %2d %d%02d:%02d:%02d%Z%m/%d/%y%2d%I:%M:%S %p%H:%M%H:%M:%Sexpect: spawn: cannot %s console, check permissions of /dev/console /dev/consoleopenredirect%dNULL argumentregexp too bigout of spacetoo many ()unmatched ()junk on end*+ operand could be emptynested *?+invalid [] rangeunmatched []internal urp?+* follows nothingtrailing \^$.[()|?+*\internal disasterNULL parametercorrupted programmemory corruptioncorrupted pointersinternal foulupexpect: warning: file (%s) != argv[0] (%s) parent: waiting for sync byte parent sync byte read: %s parent: telling child to go ahead parent sync byte write: %s parent: now unsynchronized from child open(slave pty): %s exp_getptyslave: slave = %d but expected 0 /dev/consolespawn %s: cannot open console, check permissions of /dev/console spawn %s: cannot redirect console, check permissions of /dev/console child: sync byte write: %s child: sync byte read: %s regular expression %s is bad: %sexpect: full buffer expect: timeout expect: eof expect: error (errno = %d) expect: does {%s} match {%s}? r.e. match (pattern %s) failed: %syes exp_buffer is {%s} no bad type (set %d) in exp_expectl sh-cr+/dev/nullrw\r\n\t\x%02xexpExpOutputProc: called with negative char countwrite() failed to write anything - will sleep(1) and retry... exp%d-bufferingnone-blocking0-translationlfdbgapplicationbreakpoint %d: -re "%s" -glob "%s" %s:%d if {%s} then {%s} %dalready at top levelbad level ""\b\f\v\r\n\t\%03o\177\u%04xproc%.*s {%.*s} %.*s%c0: %s %c%d: %s %s: %s ?%s: %s %s nowhere to return to 1-compress-widthflag%d usage: w [-width #] [-compress 0|1] -glob-regexpifthen-no such breakpointno pattern?bad regular expressionsetting breakpoints by line number is currently unimplemented - use patterns or expressions if whatthen what?s [#] step into proceduren [#] step over procedureN [#] step over procedures, commands, and argumentsc continuer continue until return to calleru [#] move scope up leveld [#] move scope down level go to absolute frame if # is prefaced by "#"w show stack ("where")w -w [#] show/set widthw -c [0|1] show/set compressb show breakpointsb [-r regexp-pattern] [if expr] [then command]b [-g glob-pattern] [if expr] [then command]b [[file:]#] [if expr] [then command] if pattern given, break if command resembles pattern if # given, break on line # if expr given, break if expr true if command given, execute command at breakpointb -# delete breakpointb - delete all breakpointsnsNcrwbudhtcl::historynextiddbg%d.%d> dbg+> %derrorInfoerror %d: %s active--interrupted-- (command_unknown)%s %s < %s/bin/sttysane/dev/tty/dev/ptmxgrantpt(%s) failed - likely reason is that your system administrator (in a rage of blind passion to rid the system of security holes) removed setuid from the utility used internally by grantpt to change pty permissions. Tell your system admin to reestablish setuid on the utility. Get the utility name by running Expect under truss or trace.unlockpt(%s) failed.open(%s,rw) = %d (%s)ptemioctl(%d,I_PUSH,"ptem") = %s ldtermioctl(%d,I_PUSH,"ldterm") = %s ttcompatioctl(%d,I_PUSH,"ttcompat") = %s interpreter uses an incompatible stubs mechanismTclè€0oÿç 0oÿßÀ0oÿ×à0oÿÏ0oÿÇ 0oÿ¿@0oÿ·`0oÿ¯€0oÿ§ 0oÿŸÀ0oÿ—à0oÿ0oÿ‡ 0oÿ@0oÿw`0oÿo€0oÿg 0oÿ_À0oÿWà0oÿO0oÿG 0oÿ?@0oÿ7`0oÿ/€0oÿ' 0oÿÀ0oÿà0oÿ0oÿ 0oþÿ@0oþ÷`0oþï€0oþç 0oþßÀ0oþ×à0oþÏ0oþÇ 0oþ¿@0oþ·`0oþ¯€0oþ§ 0oþŸÀ0oþ—à0oþ0oþ‡ 0oþ@0oþw`0oþo€0oþg 0oþ_À0oþWà0oþO0oþG 0oþ?@0oþ7`0oþ/€0oþ' 0oþÀ0oþà0oþ0oþ 0oýÿ@0oý÷`0oýï€0oýç 0oýßÀ0oý×à0oýÏ 0oýÇ 0oý¿ @0oý· `0oý¯ €0oý§  0oýŸ À0oý— à0oý 0oý‡ 0oý @0oýw `0oýo €0oýg  0oý_ À0oýW à0oýO 0oýG 0oý? @0oý7 `0oý/ €0oý'  0oý À0oý à0oý 0oý 0oüÿ @0oü÷ `0oüï €0oüç  0oüß À0oü× à0oüÏ 0oüÇ 0oü¿ @0oü· `0oü¯ €0oü§  0oüŸ À0oü— à0oü0oü‡ 0oü@0oüw`0oüo€0oüg 0oü_À0oüWà0oüO0oüG 0oü?@0oü7`0oü/€0oü' 0oüÀ0oüà0oü0oü 0oûÿ@0oû÷`0oûï€0oûç 0oûßÀ0oû×à0oûÏ0oûÇ 0oû¿@0oû·`0oû¯€0oû§ 0oûŸÀ0oû—à0oû0oû‡ 0oû@0oûw`0oûo€0oûg 0oû_À0oûWà0oûO0oûG 0oû?@0oû7`0oû/€0oû' 0oûÀ0oûà0oû0oû 0oúÿ@0oú÷`0oúï€0oúç 0oúßÀ0oú×à0oúÏ0oúÇ 0oú¿@0oú·`0oú¯€0oú§ 0oúŸÀ0oú—à0oú0oú‡ 0oú@0oúw`0oúo€0oúg 0oú_À0oúWà0oúO0oúG 0oú?@0oú7`0oú/€0oú' 0oúÀ0oúà0oú0oú 0oùÿ@0où÷`0oùï€0oùç 0oùßÀ0où×à0oùÏ0oùÇ 0où¿@0où·`0où¯€0où§ 0oùŸÀ0où—à0où0où‡ 0où@0oùw`0oùo€0oùg 0où_À0oùWà0oùO0oùG 0où?@0où7`0où/€0où' 0oùÀ0oùà0où0où 0oøÿ@0oø÷`0oøï€0oøç 0oøßÀ0oø×à0oøÏ0oøÇ 0oø¿@0oø·`0oø¯€0oø§ 0oøŸÀ0oø—à0oø0oø‡ 0oø@0oøw`0oøo€0oøg 0oø_À0oøWà0oøO0oøG 0oø?@0oø7`0oø/€0oø' 0oøÀ0oøà0oø***=***:(??:?=?!?#[.[=[:Ðyes no returninterpreter5.45prompt1prompt2expect%d.%d> if {$exp_library != ""} { lappend auto_path $exp_library } if {$exp_exec_library != ""} { lappend auto_path $exp_exec_library }trap {exp_debug 1} SIGINT/tmp/ptylock.XXXX/tmp/expect.pidÐ  ÿÿÿÿKK›lappend auto_path $dbg_librarydestroy .ÿñèh@2˜IHIhL`mð … §Ø §è §ø ¨HãØçà ÉOô Ïÿñÿñ% §ø4ÿñBàKV co{† Ì€ä– Ę8¦ Æè ¼ Ý( Ñ É à Ûè(ï £ø” ¥¨t ¾HÐ- Ã0P? ßP¸Q ¸,` ¶¨r ¦8È‚ ‘ À’ Ð(У Ó@Œ² Ë@(ÆÐÏ"˜× ˆ¸å ‰˜lí ¸ ø à è  §5 § C ¨@àN © e ©@ôt «8” «X„  ¬¬ ´ ¿ ·È Ö Ï€pá ÐðÿñB" K àù ¸ ¾ O @Æ à$@ !$àà5%ÀàG& Ï&¨T ë@XX ÿ˜€c ÿ€q 0$~ œ’ ÐÔ£ pŒ³ ÀdÀ @Í pØ 7Ðtí ¨”ù  Ø8  (H  p0&  ¸8 xÀI 8ìT @Øj 0€w °  èä¢  pd±  ð8 !@¬Ï #XØ #x(å 8`”ú .Tt .àô 4H\' 5ðx3 6€ H QøSÿñB&°KÆØPÏ&°_ \ˆ h `°`~ cl† c˜pŽ e (¢ h`8³ h˜LÐ ƒÐLÛ xÈæ ƒ0„ñ ‚ÀTý ‚XP  „8pÿñ"ÿñK(% §ü,(3,= 8 8I ™p ¤Æ@xW ޏhaÿñB&¸K¸Ï.ˆk ²è¬€ ¼PÐ ¾8¤£ÿñB.KØ% ¨²(º8Ê@ÚNˆéÜÆø ü/¨P  x Ã0 + ÃX@= Åh€L ǘY Ǹk Р4y Þ d† Þ hÿñB/øK˜™˜ ®2¨à²<°Á<¸Ò<Àß<Ðò<ؘG=pö ã0` ã¨ÄÿñB=xKèì)ôÆP7=xE=€M=ˆ 0S ëp`d ëè,l ùÄ} î0ˆ ïHŸÿñKPª ý(° ý@èÇ  ¨`Ò Œß ,¸æ èýÿñ   < +ÿñ 6  P@ KÿñBF¸K U ]˜ fÿñBGK  q  x( 0GG ‚G  ‹ $8T   H ” 3X€ œ #¸d ¤ hÜ ® 'X€ ¶ 'ð\ À `„ É œ Ñ $¨” Û *ˆp â ,ؼ ë +øÈ  1°  4€p  5Ä ) 7è 9 9l @ 9ˆ` G ; _ E@`ö E¸H F@ l Gp È tÿñ ƒÿñ ‘ÿñKP  ÿñBGKX « \P@ ¼ _¨ü É ]” Ö ^°Ü ä `À` ñ a84ÏG ÿñBGKà à  Žð$ ðà ŽÐ %ø / ? I  S( `< j@ zD ŠH •P §X ¼Ȱ Á ~˜¬ É øL Ó ‚pø Ü „€¨ å `€ ì Š@d ôˆÚ”ÊHL ýH` Hp Hx " i˜ 1 j@ < Ф B kèô R løø b oü s q ˜ | sÐø ‡ wਠ’ x ° ¢ yhX ­ yØH ë z x · z°Ì Å €`ˆ Ø ‚T à “0 îÿñBH€ üN\üN`  –˜Œ  —@ü ÿñ 'ÿñBNhK³ 3³ ÏNh ? 0\ g ŸP w Ÿ\ ë £X Š ¤(< žÿñKÀ « ¥d º ¥ˆ Âÿñ × °°T â £00 o Yø¬ ô »èP  £x˜ œ°' §ø4 E` $E •hÌMÈ[ ‡¨8n ¥¸ € §Øˆ -ˆÌ—ø£ Š è­´ ê€HÈèÖÜã ˜X„ð h STö$à Nˆ ˜øŒ. (Œ; üè0N ² ´`f PLz  xpŠ ¯ ´˜ ¹pP« »xT¹NxÌèØ ¥,ë æÐø SlÜ Âp H</ Œà0:ˆEO ¯ðLb ‡øœu| Áp‹ 28Xž 48,­ [Àtº Œ˜`Æ ðPÓ È@  ¬è´§Þ f xï ÿ ß d àL*Nà˜6 …h0@ ò8¸O …°<Z ¹Tm ÿ@ìz Ÿ(ž0±èºO $Ê áH„à ‹X ìò ˆèX% ë°42 †hB £xô\e X0x øLŠ‘ˆ¢  èP¶ Œ0@Æ œÐDýÚ ‰xçÐöü ZHTð! ª<À- £4 E ÒLTZ ·ÀPg ê Dx ˆ‡Ž ¸˜P à®Š³ š ÇÎ ±XdÞéîù Ððü  c@\", ¯`x@ ®HÀJ  4] Œ `k Z¸ €Œ ‡(x¤  ø± ¹ØPÂðÒØ å Hé ¯ðXø ð     <-2 $¸> §èD ¸(TVÀb ‰°v ŸTŠ– ¿ø|¥°¶» \H$ÑáèÀöþ  žL×/ é0,@ c¸lN ³Ô ^fl Dè@x Hh ¦DÌš ‹ «Üª <¾ œËì× TŒêñ ¶èPÅ S  éÈ Ò ˆ%Ox1 à KP\aNps YH˜€Ü‘ `h£· âè0Ê WØÀÙØé WhXú ´° OÐ$ d@ð+ ³°P; ¸tOøfn b „ Îx” ¨NŒ³» i\Î ´à|àåH÷  % ƘT7 ¶xTGðX Àt i B ¤‡N’  ¥ /ð,­ 4À ÂÇÏ èHÌÜ Càì çë ãÔò X˜°ÿN€  šÀ´ ;(¸( Æ€:J çèDY `qg äxÐ} žØ4£è° [འë(,ÌÓ ðà<è å`|þ °`4 …p È% ïh4 ²`pF \0V i0Pe ‡P@x XL‰ Œˆ<” ´­ãØÃ †¬Ï žpPú ã <áOÈ ®ˆT+ éx09ÌI †˜tW Œhf HxÔ„ ‰X êø0ï£ ŽX躾 5x\Ê ®øPÜ ¶d(Æí ¤ˆxù ÿ Èà|Ø" ¨DD 78€Z ±Øpl :t| XØX‘˜  ·PT­àg´ „ÀËÈÛ èpñOôëÐü @\  KNt" ¤€l1 aøŒ? \pSl »P~™ ® P¬ UHع ­œlà «àðÎ º@¸ß S8ìò÷ äˆ N˜H ‹ÈL'OÄ/8¸B W8„L ÀhXO|$g êà0ûs &è„ÑŠ’Xˆ¡¨¬ éÀD» aˆTÎ (h | ÒxÙ †Ðdæ†í ð¸ûç  3¨  * Õü 9 Á˜h E X  X ”`ì¬ _ ˆP n èp ˜  « 3ð, » µ8, È à$ Ú «È ç f„!P!!&!.!A eHœ!N åø€!] UÀŒ!s ¨<!‡ ¨(!•!° –P,!¾Ølibexpect5.45.socrti.svalues-Xa.cDrodata.rodataexp_command.cBbss.bssDdata.datasendCD_errorsendCD_usersendCD_procsendCD_ttyExp_CloseObjCmdExp_DebugObjCmdExp_ExpInternalObjCmdExp_DisconnectObjCmdExp_ExitObjCmdExp_ForkObjCmdExp_ExpPidObjCmdExp_GetpidDeprecatedObjCmdExp_LogFileObjCmdExp_LogUserObjCmdExp_OverlayObjCmdExp_SendObjCmdExp_SendLogObjCmdExp_SleepObjCmdExp_SpawnObjCmdExp_StraceObjCmdExp_WaitObjCmdExp_ConfigureObjCmdcmd_datadataKeyexp_wait_zeroexpBusyexpSetpgrpset_slave_name___const_seg_900002203___const_seg_900002801get_slow_argsslow_write___const_seg_900003001get_human_args___const_seg_900003101exp_init_unit_randomhuman_writeexp_i_parse_states___const_seg_900004501tcl_tracertcl_tracer_delexpect.cyesfilenoExp_TimestampObjCmdexp_cmdsStdinoutPlaceholderDevttyPlaceholderi_read_errnoxxxExpLiteralExpChopNestedExpBackslashExpCollapseQForwardExpCollapseQBackExpCollapseStarExpCountStarexp_cmd_initfree_ecaseexp_indirect_update2free_ecasesecase_clearecase_new___const_seg_900001801parse_expect_argseval_case_stringeval_casesecases_remove_by_expiexp_i_removeexp_i_remove_with_ecasesecmd_remove_statestate_list_armexp_i_uses_stateecase_appendecase_by_exp_i_appendexp_indirect_update1expNullStripexpIRead___const_seg_900004301get_timeoutupdate_expect_statesprocess_diexp_inter.cintMatchintRegExpMatchProcessintEchointReadupdate_interact_fdsinter_updateproc___const_seg_900000902debug_new_actioninter_evalfree_inputfree_actionfree_keymapfree_outputexp_regexp.cexp_tty.cis_rawis_noechoExp_SttyCmdExp_SystemCmdexec_sttyexp_log.cexpDiagWriteCharsUniexpPrintifyRealexpPrintifyRealUniexp_main_sub.cprompt1prompt2_defaultprompt1_defaultinit_auto_pathdebug_init_defaultsigint_init_defaultusageexp_pty_exit_for_tclexp_init_pty_exithistory_nextidignore_procshandle_eval_errorDeleteCmdInfoprint_resultrun_exitexp_pty.clockedlocksrcenv_validexpErrnoMsgValexpDiagLogPtrValcurrent_timeoldAlarmHandlergetenvsigalarm_handleri_readexp_trap.ccurrent_sigexp_rearm_sigchldasync_handlergot_sigtrapssignal_to_stringtophalfeval_trap_actionbottomhalf___const_seg_900000401exp_strf.crange___const_seg_900000202weeknumberiso8601wknumisleap___const_seg_900000501exp_console.cexp_console_manipulation_failedexp_glob.cExp_StringCaseMatch2exp_win.cwinsizewin2sizeexp_clib.cerrMsgbufsizfsregdummyregcregregnextregnoderegbranchregtailregoptailregpieceregatomreginsertregtryregmatch___const_seg_900001301regrepeatexpDiagLogUExp_StringMatch2Exp_StringMatchfdfp2ffd_newexp_setpgrpexp_default_rm_nullsexp_expectvexp_closetcl.cexp_memmove.cexp_tty_comm.cexp_chan.cExpBlockModeProcExpCloseProcExpInputProcExpOutputProcExpWatchProcExpGetHandleProcDbg.csimple_interactorignoreprocprintprocdebugger_activebuf_widthmain_argcdefault_argvdebug_cmdlast_action_cmdlast_step_countbreak_basebreakpoint_max_idalready_at_top_levelhelpcmdNextcmdSimplecmdWherecmdBreakcmdDircmdHelpcmd_listviewFrameNamedebug_handlestdinmodebreakpoint_newbreakpoint_printsave_re_matchesbreakpoint_testTclGetFrame2exp_printifyprint_argvprint_objvPrintStackBelowPrintStackGoalFramedebugger_trapbreakpoint_destroysavestrinit_debuggerpty_termios.cknew_dev_ttypty_sttyttytypeexp_select.cexp_event.cdestroy_cmdexp_arm_background_channelhandler_forceexp_timehandlerexp_channelhandlerexp_event_exit_realtclStubLib.cHasStubSupportisDigitcrtn.s_END__START_exp_free_iexp_init_tty_cmdsexpLogUserSetmemcpyptsnameexp_dsleepexp_unused_lib_versionExp_ExpectObjCmdDbg_Offexp_match_maxexp_tty_get_simpleTcl_InitStubsfork_initunlinkexpAdjustexp_cmdfileexp_closeoptindexpDiagLogPtrStrStrsigchld_countsrandisattyexp_init_ptyfcntlexp_loguserexp_argv0exp_stdin_is_ttyexp_getptymasterDbg_ArgcArgvexp_init_trap_cmdsexp_new_i_complexioctlexp_win_columns_setexp_console_setexp_new_stateexpLogLeaveOpenSetexpLogUserGetexp_pty_slave_nameexp_ttycopyexpLogInteractionUexp_pty_testexp_expectlexpLogInitexp_debugfileexp_win2_size_setDbg_Activeexp_i_pooltcgetattrexpDiagChannelOpenexp_tty_raw_noechofdopenexpPrintifyUniexp_buffer_shuffleTclGetRegErrorexp_init_ttyexpDevttyIsexpDevttyGetTclRegCompexpCreateChannelexp_logfile_allexp_interpret_rcfilesexp_win2_columns_setexp_readenvexp_israwExp_TrapObjCmdexp_isechoexpLogLeaveOpenGetexp_strftimeexp_block_background_channelhandlerexp_ioctled_devtty_DYNAMICexp_tty_currentexp_interpret_cmdfileexp_tty_setfgetsexp_state_prep_for_invalidationgrantptexpect_keyexp_retoglobexpStateCurrentexpWriteBytesAndLogIfTtyU___errnoexp_init_spawn_idsexp_win2_rows_setsetsidforked_proc_baseExp_StringCaseMatchDbg_IgnoreFuncsexp_event_disarm_bgexp_trap_offtclIntStubsPtrabortexpExpectVarsInitexp_consolesetbufexpErrorLogexp_get_next_event_infofork_clear_allfputsexpLogAllSetexpDiagLogPtrStrexpCloseOnExecstrcatexpLogToStdoutSetexp_stty_initwaitexp_slave_controlvfprintfexpDiagWriteObjexp_forkedpipesiglongjmpsystemExpect_InitvsprintfexpStateFreelocaltimeexpDiagChannelCloseexp_new_iexp_get_next_eventexpStateAnyIsexp_init_expect_cmdsDbg_VarNameexpStateFromChannelNamestring_firstexpLogChannelGetexp_event_exitfwriteexp_pty_test_endexp_free_stateexp_exit_handlersexp_is_debuggingexp_win2_size_getforkexpect_info_finiexpLogToStdoutGettclStubsPtrexp_tty_cooked_echoexp_event_disarm_fgtcsendbreakexpPrintifyObjexp_buffer_endgmtimeexpCreateStateToInputexp_cmdfilenamesscanfexp_match_endstrcspnexp_readingexp_disarm_background_channelhandlerexpDiagLogPtrSetexp_close_allexp_i_add_statestrncpyfopenexp_spawnfdexp_win2_columns_getexpStdoutLogexp_interactiveexp_window_size_getexp_pty_exitexp_ttyinitExp_MatchMaxObjCmdmallocexpLogAppendSetexp_create_commandsfork_addfflushexp_dev_ttyexp_interpret_cmdfilenamefeofexp_logfilegetcexp_stdout_is_ttyexp_errorlogexp_autoallocptyexp_win2_rows_getexp_state_list_poolexp_init_main_cmdsexp_disconnectexp_pty_timeoutExp_ParityObjCmdexpLogChannelCloseexp_tty_originalexpWaitOnAnyexpDiagFilenameexp_win_columns_getexp_child_exec_preludestrncmpexpWriteCharsUniExp_ExpVersionObjCmdexp_configure_countexp_getpidwaitpidExp_InteractObjCmdexpLogChannelOpenstatexp_onexit_actionexp_default_match_maxgetoptsigsetjmpstrchrExp_Prompt2ObjCmdexpLogAppendGetexp_nostack_dumpexp_win_rows_getexp_background_channelhandlerexp_interpexp_tty_breakdup2expReadexp_2tcl_returnvalueatoi__ctypeexp_pty_lockexp_spawnlpow_etextexp_debuglogexp_pty_errorexp_getptyslaveexp_spawnvExp_Prompt1ObjCmdexp_cmdlinecmdsexp_pty_unlockexpStdinoutIsExp_ExpContinueObjCmdexp_unblock_background_channelhandlerexp_app_exitexp_init_sigexpErrnoMsgSetexecvpexp_string_to_signalExp_InterReturnObjCmdexp_free_state_singleexp_errorexp_eval_with_one_argexpDiagWriteCharsexpStateToInputexpChannelInitexp_tty_set_simpleexp_win_rows_setDbg_Outputexp_default_close_on_eof_GLOBAL_OFFSET_TABLE_exp_tty_rawexp_disarm_background_channelhandler_forceExp_InterpreterObjCmdexp_ptyexpDiagToStderrGetexpDiagLogPtrexp_full_bufferexpStateCheckexp_init_stdiostring_first_charexp_timeoutexp_trap_onexp_init_most_cmdsexp_init_spawn_id_varsdupexp_get_varexpDiagChannelGetexp_new_i_simpleexpLogDiagU__iobexp_interpretertclIntPlatStubsPtrexp_arm_background_channelhandlerexp_cmdtype_printableexpDiagWriteBytesexpMatchProcessExp_CloseOnEofObjCmdstrcmpfreopenexpLogAllGet_edataexp_init_interact_cmdstclPlatStubsPtrexp_flageq_codeexp_remove_nullsexp_cookoptargvprintfsigchld_sleepexp_init_eventexpWriteCharsexpSetBlockModeProcexp_buffer_command_inputexpLogFilenameGetexp_strict_writetcsetattrexpDiagToStderrSetexp_fexpectlexpPrintfexpDiagLogexpLogChannelSetexp_fexpectvalarmfreeexp_pty_test_startpattern_styleDbg_Interactorexp_pidunlockptexp_matchexp_popenexpPrintifyexp_tty_cookedexpErrnoMsgExp_ExpectGlobalObjCmdmemmoveexpChannelTypeexp_bufferexpDiagLogPtrXexpChannelCountGetTclRegExecexp_tty_echostrstrexp_init_trap_PROCEDURE_LINKAGE_TABLE_exp_tcl2_returnvalueexp_parse_argvexpDiagInitexp_one_arg_bracedDbg_OnexpStdinoutGetexp_ecmd_remove_state_direct_and_indirectexp_default_parityexp_TclRegErrorexp_i_updatestring_case_firstexpErrorLogUexp_background_channelhandlers_run_allexp_disconnectedstrcpyreallocexp_close_in_childexpWaitOnOneExp_OpenObjCmdExp_RemoveNullsObjCmdexp_window_size_setexpStdoutLogUexp_tcl_debugger_availableDbg_StdinModeexp_versionanotate…e˜¸…p€ò†h€¢†˜t€*‡(x€rˆ¸€ ˆèX€’‰X€ ‰x€ ‰˜l€ÊŠ è€RŒ `€ŠŒ˜`€Š`€ŠˆP€‚ðP€‚ŽXè€ X0€ ˆ€ʸ €à€£ø”€¢¥¨t€¢¦8È€â¨@à€ê«Ü€B¬€¢®HÀ€B¯ ´€J¯ðX€ °`4€ °°T€Z² ´€b³Ô €R´ €’µ8,€Ò¶d(€’¶¨€¢¾HЀ¢Ã0P€âĘ8€¢Æè €¢É €âË@(€¢Ì€ä€¢Ï€p€²Ð€ Ð(Ѐ¢ÒL€Òx€Ò ˆ€ŠÓ@Œ€¢Ûè(€âÝ( €âßP¸€"ã <€¢äxЀ¢å`|€"åø€€¢èp€éÈ€Rêø0€Š ‘ À耢§ §€©@ô© €’«X„«8€¸,·È€¢@…ÀãØ…¼† ãØ††ÀãØ†¼‡0ãØ‡,ˆðãØˆì‰ ãØ‰œŠ(ãØŠ$Œ0ãØŒ,Œ¨ãØŒ¤ ãØ˜ãØ”ŽãØüŽ`ãØŽ\`ãØ\‘(ãØ‘$’,è’(¤ãØ£ü¥¸ãØ¥´¦@ãØ¦<§(ãØ§$¨HãØ¨D©HãØ©D«hãØ«d¬ãج®PãØ®L¯(ãØ¯$¯øãدô°lãØ°h°¸ãذ´²(ãØ²$´ãØ´µPãØµL¶°ãض¬¸ãظ¸Ø·È¸Ô¾PãØ¾LÃ8ãØÃ4Ä ãØÄœÆðãØÆìÉ(ãØÉ$ËHãØËD̈ãØÌ„ψãØÏ„Ð0ãØÐ,ÒãØÒÒ¨ãØÒ¤ÓHãØÓDÛðãØÛìÝ0ãØÝ,ßXãØßTã(ãØã$äœãØä˜åpãØålæãØåüé ãØéëãØë@…ÈãØ…¼†(ãØ††ÈãØ†¼‡8ãØ‡,ˆøãØˆì‰¨ãØ‰œŠ0ãØŠ$Œ8ãØŒ,Œ°ãØŒ¤(ãØ ãØ”ŽãØüŽhãØŽ\hãØ\‘4ãØ‘$’4è’(¤ãØ£ü¥ÀãØ¥´¦HãØ¦<§0ãØ§$¨PãØ¨D©PãØ©D«pãØ«d¬(ãØ¬®XãØ®L¯0ãØ¯$¯üãØ¯ô°tãØ°h°ÀãØ°´²0ãØ²$´$ãØ´µXãØµL¶¸ãض¬¸ãظ¸à·È¸Ô¾XãØ¾LÃ<ãØÃ4ĨãØÄœÆøãØÆìÉ4ãØÉ$ËPãØËDÌãØÌ„ÏãØÏ„Ð8ãØÐ,Ò$ãØÒÒ°ãØÒ¤ÓPãØÓDÛøãØÛìÝ8ãØÝ,ß`ãØßTã0ãØã$ä¤ãØä˜åxãØålæãØåüé(ãØéë ãØëxè §© «8·È `…ð‡¼‡ÜˆˆŒŠ”Ф‹$‹<‹P‹`‹p‹ ‹àŒ\ŒÔLÄŽ,ޔ޼ŽÜŽø‘h‘€‘ä’’´““H“ ”L”„”ô•P•¨––p–ˆ–À–ä—\—И0™T™Ä™øšTšdšxšˆš°šÈšø›T›°›ü4žXžœžÔžèŸ<¡¡ ¡4¡D¡h¡¨¡Ì¢¢4¢¬££4£„£¼¤T¤„¤À¥`¥t¥ô¦ ¦”¦°¨¤¬´¬Ô¬ô­(­P®ˆ¯`±±œ±À±Ü³L³Ä´D´Ì´üµx¶¶4··0·Œ¸<¸¸À¹$¹Èº€½Ä¾°¾àÀ0ÀXÀ„À¬ÀìÁôÄÃàÃüÄTÄhÄäÄøÅTÅ„Æ0ƀƔÇDÇtÈ ÈLȰÉhɈÉÌÉìÊÊ@Ê`Ê€ÊÔËËËÀËðÌTÌäÍÍh͸ÎÎ4ÎPÐ\ÐÄÐØÑ8ÑPѼÓÓ ÓÐÔÕÕ8ÕTÕÀÖÖø××0×H×\×tׄל״×Ì×èØØØ Ø8ØPØ`ØxØŒØÔØèÙÙÙ,Ù<ÙTÙpÙˆÙÀÙØÙðÚÚÚ0Ú@ÚXڄڜڸÚÈÚàÚüÛ Û$Û8Û¤ÜTÜÈÜÜÜìÝ`ÞxÞìßß ààPááXáá¤áàââ¤âÀâÐâäãŒääHäÐå å¼æXæˆæÔç”çôè è8èHè`é@éTé˜é´éèêêœê¼ P†xˆ˜‰0˜¼«ì¶T¶\Ó ë 0€P’Tè,Ü H<P¹·ÈDhŒŒü8anotate¨   ØÌ€ Ę (Æè PÝ( xÉ   äx ÈÛè ð£ø ¥¨ @ã  h¾H Ã0 ¸åø àßP å` 0¸ X¸ €¶¨ ¨¸ и ø¦8 ‘  HÐ( pÓ@ ˜Ë@RP§Ø§©à© «œ«8фπьÐSP§Ü§©è© «¤«8єπјÐTP§à§©ð© «¬«8ќπѴÐanotate¨ë(pÀXë@X€Òë°4€ÿ€€"ÿ˜€€0$€ÚpŒ€œ€ÐÔ€Àd€@€p€Ú¨”€ÚX €JÈ€Z Ø8€  (H€Bà$€š ø€šH€xÀ€²8쀲@Ø€Ú0€€Ú° €Úèä€âèp€ pd€R ð8€!@¬€’#X€š#x(€Ò$¸€¢&è„€b-ˆÌ€Ê.Tt€.àô€b/ð,€²28X€j3¨ € 5x\€Ò5ðx€Š6€ €R78€€ 7Ðt€ê8`”€Z:t€jB ¤€’E` $€¢O @€¢Qø€²TŒ€¢UÀŒ€¢WhX€¢XØX€¢ZHT€‚Z¸ € [à€@ ¸ p€ª4À 4H€ ØëPãØëLë¸ãØë´8ãØ4„ãØ€¼ãظ`ãØ\ãØ 8ãØ 4 ÀãØ ¼ ° p ¬èãØä8ãØ4€ãØ|XãØT@ãØ<øãØô!LãØ!H#€ãØ#|$ÔãØ$Ð&ðãØ&ì-”ãØ-.èãØ.ä/øãØ/ô2HãØ2D4È4H4Ä5€ãØ5|5øãØ5ô7DãØ7@7àãØ7Ü8lãØ8h:ãØ:B¨ãØB¤EhãØEdO¨ãØO¤RãØQüT ãØTUÈãØUÄWpãØWlXàãØXÜZXãØZTZÈãØZÄØëXãØëLëÄãØë´HãØ4ãØ€ÀãØ¸hãØ\ ãØ @ãØ 4 ÌãØ ¼ ¸ p ¬ìãØäDãØ4ŒãØ|dãØTHãØ< ãØô!TãØ!H#ˆãØ#|$àãØ$Ð&üãØ&ì- ãØ-.ðãØ.ä/üãØ/ô2PãØ2D4Ð4H4Ä5ˆãØ5|6ãØ5ô7LãØ7@7èãØ7Ü8tãØ8h:(ãØ:B´ãØB¤EtãØEdO°ãØO¤R ãØQüT,ãØTUÔãØUÄW|ãØWlXìãØXÜZ`ãØZTZÐãØZÄ0 p04H\Hë€ëôììDì¬íðDð˜ðÌðüòôó$óTó°óøþ°þÄþÔü8Ð0$„@\tˆ´ì  4 „ ¸ X  h ˜  H d ˜ ´ Ô ð  < ˆ Ì8˜Èìl€˜¨H|˜H`”¼Ü`”H¤à¸ä!€!´!è""P"p"Œ" "¼#°$ $X%(%Œ'„(,(P(t(œ))x+p,<,d,Ô-P. /\/˜1H2œ33D5¨6,9˜; ;;0<<Œ<È=$=X>>x?$?œ@@0@¸AA(BB$B@BpDŒE EüF°FÀGˆH¤I IˆK0N”O OpPP8PPÀQTQxQ˜Q¬R`RRÜTÔTèU V|VV´XX0XTYŒY YÄZˆ[  È P 0ë„"ä#Ô$5Ìp Ø pHtÀÌÜp€ ,È4ø4HP8 D,\\\\\\\\\\\\\\\\anotateø ð °(E`P&èx&è E`ÈE`ð&èT@UÀhWhXظO R`d7Ð Ü7Д7Ј7Ð*D7ÐO7ÐS`h7Ð à7И7Ð7Ð*P7ÐO(7ÐT`l7Ð ä7М7И7Ð*T7ÐO07Ðanotate [è)hh\0€’\H$€Ú\ˆ €²`°`€jcl€Úc˜p€je (€rh`8€*xÈ€Z‚XP€J‚ÀT€Jƒ0„€ÒƒÐL€J„8p€Ò„À€Š i\h˜€¢P\ÔãØ\Ð`¸ãØ`´c ãØcœe(ãØe$hlãØhhiãØilLh˜lH€ãØ|‚lãØ‚h‚ÈãØ‚ÄƒHãØƒDƒàãØƒÜ„PãØ„L„ÐãØ„ÌP\ÜãØ\Ð`ÄãØ`´c°ãØcœe4ãØe$htãØhhiãØilTh˜lHŒãØ|‚tãØ‚h‚ÐãØ‚ÄƒPãØƒDƒèãØƒÜ„XãØ„L„ØãØ„Ìh˜L0\ \X]ˆ]Ä^^À^Ø__4_X_à`äaÄb8btbÌcdpd ggg8gPgli<i°iàjŒjÀjükül4lÔlìmˆmÔn4n„n¨nèo@o¨qDqàr r4rDs`tt$tôu$u°uÔvdvÔwwÌyÐzÀ}€˜€´€ø<ô‚ô„……0 ‚8 ‚ ‚˜ƒ¤„˜¨lth˜($ ÜDœäð  $0 anotateX P àiR`n,h`nôh`uÌh`vh`ƒLh`„Th`S`n<h`nøh`uÜh`v˜h`ƒTh`„\h`T`nDh`oh`uäh`vœh`ƒhh`„ph`anotate …P€…h0€…°<€†¬€ †Ðd€ ‡P@€Ê‡¨8€Š‡øœ€â‰°€â‹X €âŒh€‚€’@\€Rޏh€"8 8€"™p ¤€¢£00€Šh…tãØ…p…¼ãØ…¸†ã؆†ÜãØ†Ø‡\ãØ‡X‡´ã؇°ˆã؇ü‰¸ã؉´‹`ãØ‹\Œ ãØŒœHãØDŽÀãØ޼@ãØ<™œãØ™˜£<ãØ£8h…|ãØ…p…ÄãØ…¸†ã؆†äãØ†Ø‡dãØ‡X‡¼ã؇°ˆã؇ü‰ÀãØ‰´‹dãØ‹\Œ¨ãØŒœLãØDŽÈãØ޼LãØ<™¨ãØ™˜£DãØ£8h‰$‰hŠÐ‹‹˜‹äŽŽŽø4l¬¼Øð‘L’’Ä––°—à˜X˜¸˜È™Tœü˜ŸŸ|ŸØ „¡ ¡0¡X¡È¡ä¢ ¢,¢X¢|¢¤¢Ä¢ä (‡ˆ‡ØŒð£Xanotate0 ( P8x™panotateø£`(ð£xô€Ú¤ˆx€Ê¥,€Ú¦DÌ€ò¨(€Òª<À€ò«È€ «àð€ò¬è´€Ê­œl€ò® P€Š®ˆT€‚®øP€‚¯`x€Š¯ðL€±Xd€Š±Øp€Ò²`p€Ò²è¬€Ò³°P€‚´°€Š´à|€¶xT€‚¶èP€Š·PT€‚·ÀP€Š¸(T€‚¸˜P€Š¹T€‚¹pP€Š¹ØP€‚º@¸€Ò»P€‚»xT€‚»èP€Š¼PЀʾ8¤€Ò¿ø|€ŠÀh€ŠÁp€’Á˜h€‚Âp€‚Ø£€ãØ£|¤ãؤŒ¥ ãØ¥¦lãØ¦h¨0ãØ¨,ªpãØªl« ãØ«¬ãج¬ðãØ¬ì®0ãØ®,®˜ãØ®”¯ãد¯hãØ¯d¯øãدô±`ãØ±\±àãØ±Ü²hãØ²d²ðãØ²ì³ÀãØ³¼´ ãØ´´èãØ´ä¶ˆãØ¶„¶øãضô·`ãØ·\·ÐãØ·Ì¸8ãØ¸4¸¨ãظ¤¹ãع ¹€ãع|¹èãØ¹äºHãØºD» ãØ»»ˆãØ»„»øãØ»ô¼XãØ¼T¾@ãØ¾<ÀãØ¿üÀ˜ãØÀ”ÁãØÁÁ¨ãØÁ¤Â(ãØÂ$Ø£ˆãØ£|¤˜ãؤŒ¥(ãØ¥¦tãØ¦h¨8ãØ¨,ªxãØªl«(ãØ«¬ãج¬øãجì®8ãØ®,® ãØ®”¯ãد¯pãØ¯d°ãدô±hãØ±\±ìãØ±Ü²tãØ²d²øãزì³ÈãØ³¼´(ãØ´´ðãØ´ä¶ãض„·ãضô·hãØ·\·Øãط̸@ãØ¸4¸°ãظ¤¹ãع ¹ˆãع|¹ðãØ¹äºPãØºD»(ãØ»»ãØ»„¼ãØ»ô¼`ãØ¼T¾HãØ¾<ÀãØ¿üÀ ãØÀ”Á ãØÁÁ°ãØÁ¤Â0ãØÂ$¸£°¤¤0¤H¤X¤À¥T¥”¥¬¥Ä¥Ô¦”§¼¨d©Ø©üªª ª”ªì«P¬,¬À­ ®\®Ä¯4¯”¯´¯Ä°$°<°T°¤°Ì°è±±$±²²œ³ ³D³\³t³„³ì´L´|´Œ´°µµ`µxµÈµä¶¶$¶@¶´·$·Œ·ü¸d¸Ô¹<¹¬ººtººà»L»´¼$¼ì¼ü½@¾Ì¾äÀ,À`ÀÄÁHÁÔÁèÂXÂl ¦<ÀlÀðÁx 8¤ðª4«Ð­Œ±¬²8²Àanotate anotate°ˆ à x€ŠÃ0 € ÃX@€‚ð € Åh€€ Æ€€"ƘT€âǘ€Ǹ€ÒÈà|€’Îx€bР4€RÐðü€ Õü€Þ d€JÞ h€Šß d€Úà €’áH„€Òâè0€Š°°ãجÃdãØÃ`øãØôÅpãØÅlÆãØÆ ƨãØƤÇÀãØǼÈèãØÈä΀ãØÎ|ЬãØШÐøãØÐôÕãØÕ Þ(ãØÞ$Þ°ãØÞ¬ß(ãØß$à¨ãØà¤áPãØáLâôãØâð°¸ãجÃlãØÃ`ÃÀãØôÅxãØÅlÆãØÆ ưãØƤÇÈãØǼÈðãØÈäΈãØÎ|дãØШÑãØÐôÕãØÕ Þ0ãØÞ$Þ¸ãØÞ¬ß0ãØß$à°ãØà¤áXãØáLâüãØâððÃÄÄ,Ä”ŰÆpÆÜÇøÈÉ0ɄɔÉÔÊÊ4ÊtÊËË4Ë€˨˸ËàËüÌ,ÌHÌ”̸ÌÈÍdÍtÍ ÍüÎLÎÈÏ4ÐpÑLÑhьќѸÑØÑìÒÒ4ÒTÒ„Ò¬ÒÀÓ€ÓøÔÔ4ÔXÔpÔ˜Ô¸ÔÌÕxÕ¨ÕÌÖx×€×°ØØ|ØœÜ ÜlÜ ÜèÝ Ý`ÝœÝÔÝäÞLÞøßà@àààôáá€á¼áÌââ$â\âlâ€â”â¼ (Ã4ÅHÈÀÞtã ÃÐÌanotateH @ 0Îx(ÆPƘRPÃpÃ0ÑüРÓP¬èÓpðÔ¨ÇSPÃxÃ0ÒРÓT¬èÓtðÔ°ÇTPÃŒÃ0Ò РÓ\¬èÓ|ðÔÔÇanotatehã<Pã0`€Šã¨Ä€â 䈀å H€‚æЀ"çèD€BèHÌ€é0,€ éx0€JéÀD€Òê D€Òê€H€êà0€Jë(,€ Pã8ãØã4ã°ãØã¬äãØäŒå°ãØå¬æãØæçðãØçìèPãØèLé<ãØé8é„ãØé€éÐãØéÌê0ãØê,êãØêŒêìãØêèë4ãØë0Pã@ãØã4ã¼ãØã¬ä˜ãØäŒå¸ãØå¬æãØæçøãØçìèXãØèLéDãØé8éŒãØé€éØãØéÌê8ãØê,ê˜ãØêŒêôãØêèë<ãØë0 ã€åà (é éüê\êÀëanotate€ xR ã<ã0ä”ã0S ãDã0äœã0T ãPã0ä¨ã0anotatePëXÀÀëp`€ ëè,€î0€Šð¸€‚ðà<€Òò8¸€"ùÄ€büè0€Š ïhïH€ŠØëxãØëtëðãØëìî8ãØî4ïpãØïlðãØððèãØðäò@ãØò<ùãØù üôãØüðØë€ãØëtëøãØëìî@ãØî4ïxãØïlð ãØðððãØðäòHãØò<ùãØù üüãØüðïH@íTí°ï ðLð´ò”ôÔôüõ õ|õäö”÷°÷Ä÷øøø8øLøˆø¼ùtùù°ùÌùàùøú úXúhú„úœúÀúÜúøûTûxûûÌü,üP ý î¬anotate(  ò8RPî\î0ï˜î0ïÐïHðëè÷î0SPî`î0ï¤î0ïÔïHð˜ëè÷î0TPîdî0ï¬î0ïØïHð°ëè÷î0anotateðý ðHý(€,¸€  ¨`€@ÿ@ìý@€šŒè€ŠHÿXãØÿTÿèý@ÿä\èXHÿdãØÿTÿìý@ÿä`èX0ý@èè(ÿÐ0\àà ý@                                    4                           œÿÿÿÿÿÿÿР Dl    ÿÿÿÿÿÿÿР ètœXè€,L      `ØP¨  Ø ´  Ôh ( Ð |x À ØH€è€anotate anotateØ à0 <€Š xp€Â0 0ãØ , €ãØ |0 8ãØ , ˆãØ |  T àanotate anotateÐ è¨0 èP€r P@€j XãØ T `ãØ T8  € ¼¤Üø anotate anotateØ  ¨<€Ê<€ÊXL€JÀt€ÂPL€J¸t€ÂH<€Ê <€ÊøL€R`h€ÊàL€RHh€Ê ´ãذ ãØhãØdÐãØÌ`ãØ\ÈãØÄTãØP¬ãبãØpãØlðãØìXãØT ¼ãذãØpãØdØãØÌhãØ\ÐãØÄ\ãØP´ãبãØxãØløãØì`ãØT @Ü4œ”|Ô<$anotate anotate ø°DôÈ@€Ê H€šhÜ€’`„€Òœ€Ò#¸d€$8T€$¨”€'X€€R'ð\€’(h €Ú*ˆp€š1°€’3X€€ 3ð,€ 48,€4€p€Š5Ä€’7耚9l€R9ˆ`€Š; €;(¸€ÒCà쀲Dè@€JE@`€E¸H€ŠF@€ê Gp È€ZS8€ÒST€ÒSlÜ€òUHØ€òW8„€JWØÀ€ÂX˜°€òYH˜€òYø¬€Ê ,ؼ+ø€ÒÐÐãØÌ(ãØ$hãØdãØ#ÈãØ#Ä$HãØ$D$¸ãØ$´'`ãØ'\'øãØ'ô(pãØ(l,àãØ,Ü-+ø-1¼ãØ1¸3dãØ3`3üãØ3ø4DãØ4@4ˆãØ4„9ãØ99ãØ9Œ;0ãØ;,EÈãØEÄF ãØFGxãØGtSˆãØS„UhãØUdW@ãØW<WàãØWÜX¸ãØX´YxãØYtZãØYüÐÔãØÌ4ãØ$pãØd(ãØ#ÐãØ#Ä$PãØ$D$ÀãØ$´'hãØ'\'üãØ'ô(xãØ(l,èãØ,Ü- +ø-1ÄãØ1¸3lãØ3`4ãØ3ø4LãØ4@4ãØ4„9ãØ99˜ãØ9Œ;8ãØ;,EÐãØEÄF0ãØFG„ãØGtSãØS„UpãØUdWHãØW<WèãØWÜXÀãØX´Y€ãØYtZãØYü+øÈX >>„A¨AÄB$CC|Z”Z° @àè(<4à;EøSLSd -@+ø@,P4x¼,t,88PPPPPPPPP`````````PPPPPPPPPPPÀÀÀÀÀÀÀÀÀanotate° ¨R0;h4€EÀE¸JE¸S0;l4€EÌE¸JE¸T0;t4€EàE¸J E¸anotatex[¨Œ[Àt€[ÌãØ[È[ÔãØ[Èanotate anotate(\8 H˜\P@€’\p€Ò]”€â^°Ü€â_¨ü€’`À`€a84€aˆT€‚aøŒ€Úb „€Úc@\€Jc¸l€Šd@ð€ÂeHœ€‚f„€‚f x€"i0P€‚8^¸ãØ^´_°ãØ_¬`ÌãØ`Èa˜ãØa”bãØaüb°ãØb¬cLãØcHcÀãØc¼dHãØdDePãØeLfãØff¨ãØf¤i@ãØi<8^ÀãØ^´_¸ãØ_¬`ÔãØ`Èa ãØa”b ãØaüb¸ãØb¬cTãØcHcÈãØc¼dPãØdDeXãØeLfãØff°ãØf¤iHãØi<¸^ð_Ü_ô`aÄb,bÔbìccìdte|f4fàfôg”g°gÔgðh h,hDil \ˆ aacŒanotatep h ``\Ph_¨p]x^°˜`À a8anotate ˜i€,üèi˜€Bj@€Òkèô€Zløø€šoü€jq ˜€ÊsÐø€šw਀Úx °€ZyhX€2yØH€~˜¬€â`€€âøL€"€`ˆ€J‚T€’‚pø€¢„€¨€¢Š@d€âФ €ò‹ÈL€Œ0@€Œˆ<€Œà0€ (Œ€ZŽÐ€Žð$€“0€Š”`쀒•h̀ʖP,€  z°Ìz €²i ãØiœjHãØjDkðãØkìmãØlüoãØo q(ãØq$sØãØsÔwèãØwäx¨ãØx¤yxãØytz¸ãØz´{,z {(}Lz }H~ ãØ~œhãØd€ãØ€€hãØ€d‚ãØ‚ ‚xãØ‚t„ˆãØ„„ŠHãØŠDŠÄãØŠÀ‹ÔãØ‹ÐŒ<ãØŒ8Œ”ãØŒŒìãØŒè0ãØ,ŽøãØŽô“8ãØ“4”hãØ”d•pãØ•l–\ãØ–Xi¨ãØiœjTãØjDkøãØkìm ãØlüoãØo q0ãØq$sàãØsÔwðãØwäx¼ãØx¤y€ãØytzÄãØz´{4z {(}Tz }H~¨ãØ~œtãØd€ãØ€€pãØ€d‚ãØ‚ ‚€ãØ‚t„ãØ„„ŠPãØŠDŠÌãØŠÀ‹ÜãØ‹ÐŒDãØŒ8ŒœãØŒŒôãØŒè8ãØ,ãØŽô“@ãØ“4”pãØ”d•xãØ•l–dãØ–Xz xÐiÈj”jÄkkdk¤llˆl´m4mLm€m¼mìnn,n€nÈoHo¬pHpðqÐqðr4t<tlulvhxxH{ {d},~8~` ¸€¨€ä \‚4‚ìƒ(ƒ¨„ ……¤…Ȇt†Ä‡$‡h‡Œ‡¼ˆˆ@ˆ˜‰‰T‰¸‰àŠŠ‹L‹p‹ „ œl€‘ ‘ˆ‘ ‘´‘È’T’’Ì“„“È”,”Дð•<•À•ô– kÈyyHy¸ à”@À{Xz P}„zxì$ìxx\anotatex p ÀàŽððŽÐ~˜¨~˜À~˜Øøðø‚p „€8`P`hŠ@R0‹èŽðŒ4ŽÐ“ z°S0‹ðŽðŒ@ŽÐ“¨z°T0‹ôŽðŒTŽÐ“¼z°anotateè–€¨–˜Œ€R—@ü€ê˜X„€B˜øŒ€Âš €šÀ´€Zœ€x–°ãØ–¬—HãØ—D˜`ãØ˜\™ãؘüšÈãØšÄx–¸ãØ–¬—PãØ—D˜hãØ˜\™ãؘüšÐãØšÄ —¤˜,˜Ìanotate anotate8œ˜ œ°€anotateðœ¸4PœÐD€Ê0\€ ¨D€JžL€JžpP€JžØ4€JŸ(€JŸP € Ÿ\€RŸT€Ê 4€2£4 €¤(<€Š¤€l€‚ £x˜£X€Ê¨œÜãØœØDãØ@Ÿ¤ãØŸ  ãØ £€ãØ£|¤4ãØ¤0¤ãؤŒ¨œäãØœØLãØ@Ÿ¬ãØŸ  ãØ £ŒãØ£|¤<ãØ¤0¤˜ãؤŒ£XxxŸÐ \¡ ¡„¡Ä¢¢@¢|¢¼¢Ð££Ð£ð¤Ì 8ÜžDž°žüŸŸ0Ÿl  ¤\anotateÐ ÈRœüB PB Ÿ°Ÿ\¡dŸP¡Ÿ\¢ ŸP£„£X£¤ŸP¤°¤(SB XB Ÿ¸Ÿ\¡lŸP¡œŸ\¢¨ŸP££X£¬ŸP¤¼¤(TB hB ŸÄŸ\¡xŸP¡¤Ÿ\¢´ŸP£œ£X£¼ŸP¤Ô¤(anotateø¤ðèH¥d€ ¥ˆ€ ¥¸ €Z0¥ãØ¥¥ÀãØ¥¼0¥ãØ¥¥ÈãØ¥¼¦§ §,anotate ÿÿÿÿ²exp_command.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_command.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3ÿÿÿÿ¨expect.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c expect.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.37ÿÿÿÿ®,exp_inter.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_inter.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3iÿÿÿÿ°Bexp_regexp.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_regexp.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3žÿÿÿÿªXexp_tty.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_tty.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3Ôÿÿÿÿªnexp_log.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_log.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3ÿÿÿÿ´„exp_main_sub.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_main_sub.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3:ÿÿÿÿªšexp_pty.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_pty.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3rÿÿÿÿ¬°exp_trap.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_trap.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3¥ÿÿÿÿ¬Æexp_strf.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_strf.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3Ùÿÿÿÿ²Üexp_console.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_console.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3 ÿÿÿÿ¬òexp_glob.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_glob.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3Dÿÿÿÿªexp_win.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_win.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3xÿÿÿÿ¬exp_clib.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_clib.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3«ÿÿÿÿ´4exp_closetcl.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_closetcl.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3ßÿÿÿÿ²Jexp_memmove.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_memmove.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3ÿÿÿÿ´`exp_tty_comm.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_tty_comm.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3Nÿÿÿÿ¬vexp_chan.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_chan.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3†ÿÿÿÿ¢ŒDbg.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c Dbg.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3ºÿÿÿÿ²¢pty_termios.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c pty_termios.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3éÿÿÿÿ°¸exp_select.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_select.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3 ÿÿÿÿ®Îexp_event.c /var/tmp/expect5.45 /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -DPACKAGE_NAME='"expect"' -DPACKAGE_TARNAME='"expect"' -DPACKAGE_VERSION='"5.45"' -DPACKAGE_STRING='"expect 5.45"' -DPACKAGE_BUGREPORT='""' -DBUILD_expect='' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DWORDS_BIGENDIAN='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DTCL_THREADS='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_WIDE_INT_IS_LONG='1' -DUSE_TCL_STUBS='1' -DUSE_TCL_STUBS='1' -DHAVE_SYS_SELECT_H='1' -DHAVE_SYSMACROS_H='1' -DHAVE_VARARGS_H='1' -DHAVE_STROPTS_H='1' -DHAVE_SYSCONF_H='1' -DHAVE_SYS_FCNTL_H='1' -DHAVE_SYS_PTEM_H='1' -DHAVE_STRREDIR_H='1' -DRETSIGTYPE='void' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_TIMEZONE_VAR='1' -DNO_UNION_WAIT='1' -DSOLARIS='1' -DHAVE_MEMMOVE='1' -DHAVE_SYSCONF='1' -DHAVE_STRFTIME='1' -DHAVE_STRCHR='1' -DHAVE_TIMEZONE='1' -DHAVE_SIGLONGJMP='1' -DHAVE_MEMCPY='1' -DWNOHANG_BACKUP_VALUE='64' -DSELECT_MASK_TYPE='fd_set' -DREARM_SIG='1' -DHAVE_PTMX='1' -DHAVE_TCSETATTR='1' -DPOSIX='1' -DHAVE_SGTTYB='1' -DHAVE_TERMIO='1' -DHAVE_TERMIOS='1' -DHAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H='1' -DHAVE_TIOCGWINSZ_IN_TERMIOS_H='1' -DSETPGRP_VOID='1' -DHAVE_SV_TIMEZONE='1' -DHAVE_LONG_FILE_NAMES='1' -DTCL_DEBUGGER -DUSE_NON_CONST -DSCRIPTDIR='"/usr/local/lib/expect5.45"' -DEXECSCRIPTDIR='"/usr/local/lib/expect5.45"' -DSTTY_BIN='"/bin/stty"' -DDFLT_STTY='"sane"' -I. -I. -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/unix -xarch=v9 -O -KPIC -c exp_event.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3Vÿÿÿÿèä/var/tmp/tcl8.6.0/generic/tclStubLib.c /var/tmp/tcl8.6.0/unix /opt/solarisstudio12.3/prod/bin/cc -xtarget=ultra -m64 -xcode=pic32 -c -DNDEBUG -O -xarch=v9 -KPIC -DBUILD_tcl -I. -I/var/tmp/tcl8.6.0/unix -I/var/tmp/tcl8.6.0/generic -I/var/tmp/tcl8.6.0/libtommath -DPACKAGE_NAME='"tcl"' -DPACKAGE_TARNAME='"tcl"' -DPACKAGE_VERSION='"8.6"' -DPACKAGE_STRING='"tcl 8.6"' -DPACKAGE_BUGREPORT='""' -DSTDC_HEADERS='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_SYS_STAT_H='1' -DHAVE_STDLIB_H='1' -DHAVE_STRING_H='1' -DHAVE_MEMORY_H='1' -DHAVE_STRINGS_H='1' -DHAVE_INTTYPES_H='1' -DHAVE_STDINT_H='1' -DHAVE_UNISTD_H='1' -DHAVE_LIMITS_H='1' -DHAVE_SYS_PARAM_H='1' -DUSE_THREAD_ALLOC='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -D_THREAD_SAFE='1' -DHAVE_PTHREAD_ATTR_SETSTACKSIZE='1' -DTCL_THREADS='1' -DTCL_CFGVAL_ENCODING='"iso8859-1"' -DHAVE_ZLIB='1' -D_REENTRANT='1' -D_POSIX_PTHREAD_SEMANTICS='1' -DTCL_CFG_DO64BIT='1' -DMODULE_SCOPE='extern' -DNO_VIZ='' -DTCL_SHLIB_EXT='".so"' -DNDEBUG='1' -DTCL_CFG_OPTIMIZED='1' -DTCL_TOMMATH='1' -DMP_PREC='4' -DTCL_WIDE_INT_IS_LONG='1' -DWORDS_BIGENDIAN='1' -DHAVE_GETCWD='1' -DHAVE_MKSTEMP='1' -DHAVE_OPENDIR='1' -DHAVE_STRTOL='1' -DHAVE_WAITPID='1' -DHAVE_GETNAMEINFO='1' -DHAVE_GETADDRINFO='1' -DHAVE_FREEADDRINFO='1' -DHAVE_GAI_STRERROR='1' -DHAVE_STRUCT_ADDRINFO='1' -DHAVE_STRUCT_IN6_ADDR='1' -DHAVE_STRUCT_SOCKADDR_IN6='1' -DHAVE_STRUCT_SOCKADDR_STORAGE='1' -DHAVE_GETPWUID_R_5='1' -DHAVE_GETPWUID_R='1' -DHAVE_GETPWNAM_R_5='1' -DHAVE_GETPWNAM_R='1' -DHAVE_GETGRGID_R_5='1' -DHAVE_GETGRGID_R='1' -DHAVE_GETGRNAM_R_5='1' -DHAVE_GETGRNAM_R='1' -DHAVE_GETHOSTBYNAME_R_5='1' -DHAVE_GETHOSTBYNAME_R='1' -DHAVE_GETHOSTBYADDR_R_7='1' -DHAVE_GETHOSTBYADDR_R='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_GMTIME_R='1' -DHAVE_LOCALTIME_R='1' -DHAVE_MKTIME='1' -DHAVE_TIMEZONE_VAR='1' -DHAVE_STRUCT_STAT_ST_BLOCKS='1' -DHAVE_STRUCT_STAT_ST_BLKSIZE='1' -DHAVE_BLKCNT_T='1' -DHAVE_INTPTR_T='1' -DHAVE_UINTPTR_T='1' -DNO_UNION_WAIT='1' -DHAVE_SIGNED_CHAR='1' -DHAVE_PUTENV_THAT_COPIES='1' -DHAVE_LANGINFO='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_UNLOAD_DLLS='1' -DUSE_DTRACE='1' /var/tmp/tcl8.6.0/generic/tclStubLib.cXa;O;P;R=Sun C 5.12 SunOS_sparc 2011/11/16;backend;raw;cd;DBG_GEN 5.3.3‹ÿÿÿÿ+!ÿ exp_command.cÿÿÿÿ&ÿ expect.cÿÿÿÿ)ÿ exp_inter.cÿÿÿÿ* ÿ exp_regexp.cÿÿÿÿ'ÿ exp_tty.cÿÿÿÿ'ÿ exp_log.cÿÿÿÿ,"ÿ exp_main_sub.cÿÿÿÿ'ÿ exp_pty.cÿÿÿÿ(ÿ exp_trap.cÿÿÿÿ(ÿ exp_strf.cÿÿÿÿ+!ÿ exp_console.cÿÿÿÿ(ÿ exp_glob.cÿÿÿÿ'ÿ exp_win.cÿÿÿÿ(ÿ exp_clib.cÿÿÿÿ,"ÿ exp_closetcl.cÿÿÿÿ+!ÿ exp_memmove.cÿÿÿÿ,"ÿ exp_tty_comm.cÿÿÿÿ(ÿ exp_chan.cÿÿÿÿ#ÿ Dbg.cÿÿÿÿ+!ÿ pty_termios.cÿÿÿÿ* ÿ exp_select.cÿÿÿÿ)ÿ exp_event.cÿÿÿÿD:ÿ /var/tmp/tcl8.6.0/generictclStubLib.c …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D% …D‡D%cg: Sun Compiler Common 12.3 SunOS_sparc 2011/11/16@(#)stdio.h 1.85 11/01/07 SMI@(#)feature_tests.h 1.26 11/04/12 SMI@(#)ccompile.h 1.2 04/11/08 SMI@(#)isa_defs.h 1.30 11/03/31 SMI@(#)stdio_iso.h 1.8 05/08/16 SMI@(#)va_list.h 1.15 04/11/19 SMI@(#)stdio_tag.h 1.4 04/09/28 SMI@(#)stdio_impl.h 1.15 07/03/05 SMI@(#)stdio_c99.h 1.2 04/03/29 SMI@(#)types.h 1.88 12/06/11 SMI@(#)machtypes.h 1.13 99/05/04 SMI@(#)int_types.h 1.10 04/09/28 SMI@(#)select.h 1.19 04/01/28 SMI@(#)time_impl.h 1.11 05/05/19 SMI@(#)time.h 2.78 11/10/14 SMI@(#)time.h 1.45 08/01/09 SMI@(#)time_iso.h 1.4 04/09/07 SMI@(#)stropts.h 1.52 04/07/13 SMI@(#)conf.h 1.73 08/01/04 SMI@(#)t_lock.h 1.45 98/02/01 SMI@(#)machlock.h 1.25 03/09/02 SMI@(#)param.h 1.89 11/08/02 SMI@(#)unistd.h 1.46 12/01/17 SMI@(#)mutex.h 1.23 10/12/23 SMI@(#)rwlock.h 1.10 08/05/05 SMI@(#)semaphore.h 1.5 98/02/01 SMI@(#)condvar.h 1.15 11/07/27 SMI@(#)ioctl.h 1.9 92/07/14 SMI@(#)fcntl.h 1.52 07/03/05 SMI@(#)file.h 1.71 11/01/10 SMI@(#)errno.h 1.17 03/01/03 SMI@(#)errno.h 1.20 00/01/12 SMI@(#)signal.h 1.43 04/09/28 SMI@(#)signal_iso.h 1.1 99/08/09 SMI@(#)signal_iso.h 1.6 03/05/02 SMI@(#)signal.h 1.66 04/09/28 SMI@(#)siginfo.h 1.59 04/07/15 SMI@(#)machsig.h 1.15 99/08/15 SMI@(#)procset.h 1.26 11/04/18 SMI@(#)unistd.h 1.76 06/03/10 SMI@(#)math.h 2.24 04/10/23 SMI@(#)math_iso.h 1.9 04/10/23 SMI@(#)math_c99.h 1.9 04/11/01 SMI@(#)floatingpoint.h 2.9 04/10/23 SMI@(#)ieeefp.h 2.12 04/10/23 SMI@(#)ctype.h 1.35 04/09/28 SMI@(#)ctype_iso.h 1.3 04/09/28 SMI@(#)ctype_c99.h 1.2 04/09/28 SMI@(#)stdarg.h 1.47 04/09/28 SMI@(#)stdarg_iso.h 1.4 04/11/19 SMI@(#)va_impl.h 1.1 04/11/19 SMI@(#)stdarg_c99.h 1.2 04/09/28 SMI@(#)fcntl.h 1.17 06/03/10 SMI@(#)pwd.h 1.22 04/09/28 SMI@(#)dirent.h 1.37 04/09/28 SMI@(#)dirent.h 1.36 04/09/28 SMI@(#)stat.h 1.12 10/01/15 SMI@(#)stat_impl.h 1.4 03/12/04 SMI@(#)wait.h 1.23 04/06/03 SMI@(#)resource.h 1.37 07/02/07 SMI@(#)inttypes.h 1.4 04/04/29 SMI@(#)inttypes.h 1.3 03/12/04 SMI@(#)int_limits.h 1.9 04/09/28 SMI@(#)int_const.h 1.5 04/09/28 SMI@(#)int_fmtio.h 1.6 04/09/28 SMI@(#)stdint.h 1.1 03/12/04 SMI@(#)limits.h 1.60 11/04/12 SMI@(#)limits_iso.h 1.2 03/12/04 SMI@(#)utime.h 1.8 92/07/14 SMI@(#)utime.h 1.9 97/08/12 SMI@(#)socket.h 1.79 11/01/06 SMI@(#)uio.h 1.36 12/10/02 SMI@(#)socket_impl.h 1.1 05/08/02 SMI@(#)un.h 1.11 02/10/02 SMI@(#)if_dl.h 1.10 03/05/21 SMI@(#)netconfig.h 1.24 04/02/27 SMI@(#)in.h 1.55 09/05/27 SMI@(#)stream.h 1.118 12/08/20 SMI@(#)vnode.h 1.137 12/06/21 SMI@(#)rwstlock.h 1.4 04/11/09 SMI@(#)ksynch.h 1.6 97/10/22 SMI@(#)cred.h 1.28 11/01/20 SMI@(#)seg_enum.h 1.9 09/07/02 SMI@(#)kstat.h 1.22 07/02/02 SMI@(#)kmem.h 1.43 12/09/03 SMI@(#)vmem.h 1.14 12/09/03 SMI@(#)poll.h 1.28 98/11/23 SMI@(#)strmdep.h 1.10 98/01/06 SMI@(#)model.h 1.24 04/09/28 SMI@(#)strft.h 1.2 00/03/17 SMI@(#)byteorder.h 1.19 11/03/04 SMI@(#)utsname.h 1.30 04/09/28 SMI@(#)inet.h 1.21 08/01/04 SMI@(#)netdb.h 1.30 03/12/04 SMI@(#)float.h 1.22 04/09/28 SMI@(#)pthread.h 1.37 04/09/28 SMI@(#)sched.h 1.10 03/03/06 SMI@(#)grp.h 1.22 04/09/28 SMI@(#)stdlib.h 1.52 12/08/01 SMI@(#)stdlib_iso.h 1.9 04/09/28 SMI@(#)stdlib_c99.h 1.2 04/03/29 SMI@(#)string.h 1.27 07/01/14 SMI@(#)string_iso.h 1.5 04/06/18 SMI@(#)stddef.h 1.18 04/09/28 SMI@(#)stddef_iso.h 1.2 03/03/06 SMI@(#)setjmp.h 1.38 04/09/28 SMI@(#)setjmp_iso.h 1.2 04/09/28 SMI@(#)termios.h 1.6 92/07/14 SMI@(#)termios.h 1.42 07/01/14 SMI@(#)ttydev.h 1.7 92/07/14 SMIacomp: Sun C 5.12 SunOS_sparc 2011/11/16iropt: Sun Compiler Common 12.3 SunOS_sparc 2011/11/16@(#)strredir.h 1.10 10/03/16 SMI@(#)ptem.h 1.15 98/05/13 SMI@(#)sysmacros.h 1.43 08/05/21 SMIld: Software Generation Utilities - Solaris Link Editors: 5.10-1.1516.dynamic.hash.dynsym.dynstr.SUNW_version.SUNW_versym.SUNW_reloc.rela.plt.text.init.fini.rodata.rodata1.got.data.bss.symtab.strtab.annotate.debug_info.debug_line.debug_abbrev.comment.shstrtabèè€ hh Ø @@#X"2˜2˜­ oÿÿþIHIH .oÿÿÿIhIhò;L`L`!GBmðmð Q……"HW§Ø§Ø]§è§èc§ø§øJk¨H¨H;ŒtãØãØ`Lçç  yØàà6„àBðRŒ \Ð!Ê”oÿÿ÷~  ðž²êªÒzÛ¶×UúÄÙOºÍ è ×07070100057426000081a400000000000000000000000151a4006a0000008f0000010000010031ffffffffffffffff0000002b00000000root/usr/local/lib/expect5.45/pkgIndex.tclif {![package vsatisfies [package provide Tcl] 8.6]} {return} package ifneeded Expect 5.45 \ [list load [file join $dir libexpect5.45.so]] 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!