``picture'' pictures and source (part 2 of 2)
John Campbell
jdc at naucse.UUCP
Fri Dec 23 15:00:40 AEST 1988
A lot of people responded to my offer for ``picture'', a 3b1 program
that displays 7 grey level 240x150 pictures. Lenny suggested I post
the program (and pictures) to unix-pc.source, which I am doing. The
posting is in two pieces. This is the second of the pieces.
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
# picture.c
# picture.l
# pig.uue
# shuttle.uue
# skull.uue
# This archive created: Thu Dec 22 21:40:31 1988
# By: John Campbell ()
export PATH; PATH=/bin:/usr/bin:$PATH
echo shar: "extracting 'picture.c'" '(8169 characters)'
if test -f 'picture.c'
then
echo shar: "will not over-write existing file 'picture.c'"
else
sed 's/^X//' << \SHAR_EOF > 'picture.c'
X#include <stdio.h>
X#include <fcntl.h>
X#include <sys/window.h>
X#include <sys/signal.h>
X
X#define DEFAULT_PICTURE_LIBRARY "/usr/local/lib"
X
X#define XSIZE 720 /* 45 *16 = 720 resolution */
X#define YSIZE 300 /* 348 hah!, best is 300 due to 4 "special" lines*/
X
Xunsigned short g_display[YSIZE][XSIZE/16];
Xunsigned char A[YSIZE/2][XSIZE/3];
Xunsigned short ur_pat[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
Xstatic struct urdata uPC_ur = {0, XSIZE/8, 0, XSIZE/8,
X 0, 0, 0, 0, XSIZE, YSIZE, SRCSRC, DSTSRC, ur_pat};
X
Xextern errno, sys_nerr;
Xextern char *sys_errlist[];
Xextern char *getenv();
X
X#define IfErrOut(e1,e2,s1,s2) if (e1 e2) {\
Xfprintf(stderr, "%s:: %s %s\n", sys_errlist[errno], s1, s2);\
Xfixwind(0);\
Xexit(1);}
X
X#define display(src,dst,srcop,dstop,pat) \
X {uPC_ur.ur_srcbase = (unsigned short *)src;\
X uPC_ur.ur_dstbase = (unsigned short *)dst;\
X uPC_ur.ur_srcop = srcop;\
X uPC_ur.ur_dstop = dstop;\
X uPC_ur.ur_pattern = pat;\
X IfErrOut (ioctl(0, WIOCRASTOP, &uPC_ur), <0, \
X "ioctl failed on", "WIOCRASTOP");}
X
X
Xmain (argc, argv)
Xint argc;
Xchar *argv[];
X/*-
X Program to show pictures on the 3b1. In order to create a grey scale,
X the 720x300 screen was viewed as 2x3 pels--allowing all pixels in the
X pel to be off (0) or on (6) for a total of 7 grey levels. This reduces
X the addressable screen (in pels) to 240x300.
X
X The images are coded as '0', '1', '2', '3', '4', '5', '6' (and '7' is
X allowed although it is treated the same as '6') pixel intensities. The
X image is viewed as 150 rows with 240 ('0'-'6') characters terminated
X by a newline. Thus each line (or row) is 241 characters long (counting
X the newline). This format allows editing in vi.
X
X Pictures may be compressed (saves 70-90% of the space) and ``picture''
X will show each (possibly compressed) argument until the argument list
X is empty.
X
X Every attempt is made to restore your screen to normallacy in all exit
X paths prior to leaving this program. (All of the screen except the
X bottom 48 scan lines are used for pictures.)
X
X Extensions to this routine could be easily made to have a number of
X bitmaps (instead of just g_display) and toggle (with ioctl) between
X a number of these pictures relatively quickly... It might also be
X fun to see what /dev/kmem ``looks'' like as a bitmap.
X-*/
X{
X short i, j, x, y, zflag, iarg;
X struct uwdata uw;
X char cmd[120], fpath[120];
X char *picdir=getenv("PICTURES");
X int fixwind(),c, len;
X FILE *fd;
X
X if (argc == 1 || argv[1][1] == '?') {
X fprintf (stderr,"usage: picture file_name [ file_name ]\n");
X exit(-1);
X }
X
X for (i=1; i<=16; i++)
X signal (i, fixwind);
X
X/* Increase the screen size */
X uw.uw_x = 0;
X uw.uw_y = 0; /* Leave room for top status line. */
X uw.uw_width = XSIZE; /* 720 */
X uw.uw_height = YSIZE; /* 288 normal--we clobber 12 (top row)*/
X uw.uw_uflags = 1; /* Creates with no border */
X
X IfErrOut (ioctl (0, WIOCSETD, &uw), <0, "ioctl failed on", "WIOCSETD");
X
X/* Turn off the cursor */
X printf ("\033[=1C");
X for (iarg=1; iarg < argc; iarg++) {
X /* Position the cursor to prevent scrolling. */
X printf ("\033[10;1H");
X /*
X Try to find the file as name, $PICTURES/name, /usr/local/lib/name and
X determine if the file is compressed (zflag == 1)
X */
X zflag = must_find (fpath, argv[iarg], picdir);
X
X if (zflag)
X sprintf (cmd, "zcat %s", fpath);
X else
X sprintf (cmd, "cat %s", fpath);
X
X if ((fd = popen (cmd, "r")) == NULL) {
X fprintf (stderr, "can't execute zcat %s", fpath);
X fixwind (0);
X exit(1);
X }
X
X /* Ok- build the A array from the picture. */
X x = 0; y = 0;
X while ((c = fgetc(fd)) != EOF) {
X if (c == '\n')
X continue;
X if (x < 240 && y < 150)
X A[y][x] = c - '0';
X if (++x >= 240) {
X ++y;
X x = 0;
X }
X }
X pclose (fd);
X
X bit_fill (A);
X display (g_display, 0, SRCSRC, DSTSRC, 0);
X center_bottom (fpath);
X getchar ();
X/* Clear the display buffer. */
X display (g_display, g_display, SRCAND, DSTSRC, ur_pat);
X }
X/* Clear the display. */
X display (0, 0, SRCAND, DSTSRC, ur_pat);
X
X/* Fix the window (reset scrolling to "normal" */
X fixwind (0);
X exit(0);
X}
X
Xbit_fill (A)
Xchar A[YSIZE/2][XSIZE/3];
X{
X#define PLOT(a,b) (*(a)|=(b))
X#define SBIT(addr,y,x) (g_display[y][x>>4] |= lookup[x & 0x0f])
X int x,y;
X static unsigned short lookup[] = {
X 0x0001, 0x0002, 0x0004, 0x0008,
X 0x0010, 0x0020, 0x0040, 0x0080,
X 0x0100, 0x0200, 0x0400, 0x0800,
X 0x1000, 0x2000, 0x4000, 0x8000,
X };
X/*
X a = &g_display[(YSIZE - 1) - y1][x1 >> 4];
X mask = lookup[x1 & 0x0f];
X*/
X/*
X pel made out of 6 pixels.
X
X -------------
X | 4 | 1 | 5 |
X +---+---+---+
X | 6 | 2 | 3 |
X -------------
X*/
X
X for (y=0; y<YSIZE/2; ++y) {
X for (x=0; x<XSIZE/3; ++x) {
X switch (A[y][x] & 0x07) {
X case 7: /* Really shouldn't have any of this value... */
X case 6:
X SBIT (g_display, 2*y+1, 3*x);
X case 5:
X SBIT (g_display, 2*y, 3*x+2);
X case 4:
X SBIT (g_display, 2*y, 3*x);
X case 3:
X SBIT (g_display, 2*y+1, 3*x+2);
X case 2:
X SBIT (g_display, 2*y+1, 3*x+1);
X case 1:
X SBIT (g_display, 2*y, 3*x+1);
X break;
X }
X }
X }
X}
X
Xcenter_bottom (str)
Xchar *str;
X/*
X Routine to put the string centered on the 3rd line in the special "text"
X region.
X*/
X{
X int col = 40-strlen(str)/2, i;
X struct utdata ut;
X char *txt=ut.ut_text;
X
X/* Fill in the pad... */
X for (i = 0; i < col; i++)
X txt[i] = ' ';
X
X/* ...stick in the text. */
X txt[i] = '\0';
X strcat (txt, str);
X
X ut.ut_num = WTXTSLK1;
X ioctl (0, WIOCSETTEXT, &ut);
X}
X
X
Xfixwind (signo)
Xint signo;
X{
X static struct uwdata wreset = { 0, 12, 720, 288, 0x1};
X struct utdata ut;
X/* Reset the screen size. */
X ioctl (0, WIOCSETD, &wreset);
X
X/* Clear the title line. */
X ut.ut_text[0] = '\0';
X ut.ut_num = WTXTSLK1;
X ioctl (0, WIOCSETTEXT, &ut);
X
X/* Turn on the cursor */
X printf ("\033[=0C\n");
X
X/* Position the cursor to the bottom of the screen. */
X printf ("\033[25;1H\n");
X fflush (stdin);
X
X/* Rearm any signals to do normal default tasks. */
X if (signo) {
X if (signo == SIGILL || signo == SIGTRAP || signo == SIGPWR)
X signal (signo, SIG_DFL);
X kill (0,signo); /* Redo the signal (as if we never trapped it). */
X }
X}
X
Xint must_find (fpath, name, picdir)
Xchar *fpath, *name, *picdir;
X/*
X Search for name in . $PICTURES and /usr/local/lib. If it doesn't exist
X there try again with .Z at the end. Return 0 if the name without .Z
X was found, 1 if .Z was found (indicates we must run zcat).
X*/
X{
X int len, found=0, zflag=0;
X
X/* Just try the 6 possiblities. */
X len = strlen (name);
X if (name[len-1] == 'Z') zflag = 1; /* Z on original name? */
X
X/* Try the original name. */
X strcpy (fpath, name);
X if (access (fpath, 04) != -1)
X return zflag;
X
X/* Try original with .Z at the end. */
X if (!zflag) {
X strcat (fpath, ".Z");
X if (access (fpath, 04) != -1)
X return 1;
X }
X
X if (picdir != NULL) {
X /* Try the $PICTURE/name. */
X strcpy (fpath, picdir);
X strcat (fpath, "/");
X strcat (fpath, name);
X if (access (fpath, 04) != -1)
X return zflag;
X
X /* Try original with .Z at the end. */
X if (!zflag) {
X strcat (fpath, ".Z");
X if (access (fpath, 04) != -1)
X return 1;
X }
X }
X/* Try /usr/local/lib (DEFAULT_PICTURE_LIBRARY) */
X
X/* Try /usr/local/lib/name. */
X strcpy (fpath, DEFAULT_PICTURE_LIBRARY);
X strcat (fpath, "/");
X strcat (fpath, name);
X if (access (fpath, 04) != -1)
X return zflag;
X
X/* Try original with .Z at the end. */
X if (!zflag) {
X strcat (fpath, ".Z");
X if (access (fpath, 04) != -1)
X return 1;
X }
X
X/* No file found--die. */
X
X fprintf (stderr, "Can't open %s:: %s\n", name, sys_errlist[errno]);
X fixwind (0);
X exit (-1);
X}
SHAR_EOF
if test 8169 -ne "`wc -c < 'picture.c'`"
then
echo shar: "error transmitting 'picture.c'" '(should have been 8169 characters)'
fi
fi
echo shar: "extracting 'picture.l'" '(1938 characters)'
if test -f 'picture.l'
then
echo shar: "will not over-write existing file 'picture.l'"
else
sed 's/^X//' << \SHAR_EOF > 'picture.l'
X.TH PICTURE l
X.SH NAME
Xpicture - show pictures on a 3b1 (240 x 150, 7 grey levels).
X.SH SYNOPSIS
Xpicture pic_file [pic_file]
X.SH DESCRIPTION
X.LP
XPicture is a facility for displaying specially constructed ``images'' on the
X3b1 bitmapped display. These images are coded as 150 rows of 240 bytes each
X(terminated by a newline) containing '0', '1', '2', '3', '4', '5', or '6'.
XThe result is mapped onto a 720 x 300 screen with a pel (pixel element) formed
Xout of two rows and three columns (720/3 = 240, 300/2 = 150).
XThe resulting bit map has 0, 1, 2, etc. pixels turned on in each 2x3 pel
Xdepending upon the indicated grey level.
XImages are stored in ascii and may be edited with an editor.
X.LP
XImages are typically 85-95% smaller if compressed. For this reason ``picture''
Xaccepts compressed files. If a file name is given without the trailing ".Z",
X``picture'' will first try to open a normal image and then search
Xfor a compressed image.
X.LP
X``Picture'' looks for an image first in the current directory, next
Xin a directory pointed to by the environment variable PICTURES, and last
Xin /usr/local/lib. Together with the possibility of trying
Xto open a compressed file there can be a total of six access
Xattempts for each file before ``picture'' gives up.
X.LP
X``Picture'' has no options, it simply displays each argument in its
Xargument list as though it were a well formed image. After displaying
Xeach image ``picture'' waits for a carriage return before going on to
Xthe next image. If there is an error, or signal, a trap is invoked
Xthat restores the cursor and resets the screen to
Xa ``normal'' state.
X.SH AUTHOR
X.nf
X.na
XJohn Campbell (CAMPBELL at NAUVAX.bitnet)
XRt. 4, Box 952A
XFlagstaff, AZ 86001
X602-774-5375
X.fi
X.ad
X.LP
X.SH BUGS
X``Picture'' does not know about tam. If called from ua or other tam window
Xenvironment the screen is not set back to normal. Also, "grey" scales
Xare shown in various intensities of green.
SHAR_EOF
if test 1938 -ne "`wc -c < 'picture.l'`"
then
echo shar: "error transmitting 'picture.l'" '(should have been 1938 characters)'
fi
fi
echo shar: "extracting 'pig.uue'" '(12576 characters)'
if test -f 'pig.uue'
then
echo shar: "will not over-write existing file 'pig.uue'"
else
sed 's/^X//' << \SHAR_EOF > 'pig.uue'
Xbegin 644 pig.pic.Z
XM'YV0,F3,$!BP8(P8!1,B3&AP(<*#$!_&@$$QHD6+,@[".)B1XD:-$RN&](@1
XM8L 9 R^J/#@PX\F "&<L-/BR8,N%+3/*E&ERYLF<,6Y&;+ at 2)$>:!!V:%#@P
XM)U&?! <JL)DPY=&&!*FZE%BTZT68+&%^A$B2K,B5##.N'!LSK<^9. WN?(@U
XM*-V:::N"[>D58]ZF>YEF?<E3:5P94P='?1O1J4ZN?/M>_*B6H]6(8]E2KGS7
XMLN2K3R]7#DA#KEV86U.[5!RUJL2G'/NV1CDX)N"6 at -5R!JH :NZ3?F&CE0V9
XM[5#.:\]R1KU4)?*E1)L./;Q5)G.PHVOZ!!Q4X-'2R)FCC7J[/$/'-MM:G8H>
XMM735"KL&_LKW[$;C13WB]_I\+UJ>+_54U4VK/024;DCEQ%U;!95FW71;.>=4
XM4X"!EQ=T%,H WD&)M:=57O$-%UM1:AEWEE?ZC;A?A%]9Y=]XU\GE(50 at 9N0@
XM4Y=-J"%#T$5V5$H#T8!2D#?EAJ%@TB'$GEZHU93;@L2ME=]^4TY'95&XM>7C
XM<:H9*!B/\%U(V()_>:?04U at 12-Z.0.&FVV]X(?9D;7KI^!R)(+&8W$9BJ;3B
XM0U<BYQ2#/J[6Y6-NPN>0H><Q26.,\S569UH4MCE3AG-6M>2'KY5Y)V0D?@K2
XMB1.-6*ISLC$J%&RK9M5<F//I2>FDK=%$EWP[UNKDD&".29"0N at J4V(5^M3><
XMJ'#YF1F>7XW&7YS9+9=4;,L)Z): $-ZE6W>T$2@:5-3&(.20-]8*9Y.*6<@M
XM2J4I -11)?VF+7T=_;FG1E>:RA6RW7&*8';?>I>M6^$-S)AOV$V+(8W=*J9C
XMHHSBQ:U at -/3V8F!B at BLEJGY.%NJ=PD'G9).WUE929-?>&J]=7D9+U+5480KM
XMS VG%*=C&;:+YLNLL9:?<Y4M:]1G*EW6;'OO'KGE524;%J&SUE6'+E8UVE2I
XM@^=JAV1M<WK8U+ +2TLSNOP9C=]8+TJ&KE!9\W at TB* 5#-&#*D,&WZ!,#N9F
XMP^/"Z:% ZC;J8KD%@7UIP352&[+(9$F9=MI<-IB4=@@;1IW/(>HK*W%5SV9D
XMS&S>1IK# R*EE7J$(3:UK=K"V>FGF_%[JIZ6OY75D#/:IFMPA"7K:MU$H]IY
XMHJ>E_C#%#K^7^%(RSS!LS[1N&*Y_^"5]ZJC!,S:ZANCA/#7OV_(<<;79Y]UY
XMR6W_M/55M(&>M$YZ"?D\I#6Z2#9FQPG5EW$-4?;YZ1/SGK;&QR^J"6PZGTE/
XM at .3EM+@E;%8)PYW50D>Z2J$$;'];&]D,A:O at X<<_!&.>2QI&++A(C#_%\D]A
XM.&>Z\9D0._UZE*-LT[Z78,USY,'=_*HFPQ!!;FD_4QN43/*D&MX/-$GJH%\,
XMIK;4P&L[,)$@;1#FK\F9ZSSMD]FX;K3#Q'T(9LB27>.:.$0'ZF]+9_K4O\+C
XM+"=RKE/L4QY3: "L 7DO9J*K%4[R2!I>?:V'H9G9$8&&O^SQ[HS- J'"0(.K
XM[$2N:<SBTJMN-@,ZTJ &EM0@;G#&MZTA2(IX'(S%SB>RSHD1>_0!(MP0R#A)
XM+I&-3RSEP7X8JE)VSY*8I*,1NY8W=B&O59*#&(&F DB,P8V#ABP),L'7GT0Z
XMDY$%8AJ,6GG*XW )3D+"9 VV60,V&0])?L31)J]8,^,-<W49S%B DBD\9U6.
XME77A6(^T]T-%LO-D3(M:=[3)31*BCH3F*0^O<A at D&WH2,<6$UJ*L)1X3>6Q%
XMCP- at N+04R7GNK(F/N^?T8E.#&6A32#=ZF'FP1IN^U:Q;?@QH0D;9PF/:BE%
XMS-<S2ZDP%L$&A$N49I1TJM&*=O2C-13=A-QT0Y(:%:42_$D-E=2OB#GP3(^:
XMZ#UA2--_96N>XY'JL[#54Z*AY*?CTIMW+/0E]?G*@FM*7Y-8&L66JC-SG"&5
XM$IN9,K'ECY8)2V ;NRJN2F;3DI6LC%^UN4L-3>Q#PJR30&6V1I>P5(YB8IW&
XMGO*1^WQ,5,1J)OLR]QH at UK*:&!DL-[E) QN,U@:E)>UH+SF at TI U8GZS4Z/
XM0Z;XL)5@/FRD9#$3J(M%CD"IC.I,U=95#6W3M*:M07*7JUSD*I>TR[UD8.<8
XMV)W ,(=F+1/CN%/0EO3&@8HC'^125LC+YG1>J>+7&4$;/('PL[2I?:YS;4#?
XM^3;WN:OMIM4&RKK4M>92&6ILNI#T749BU)DXQ>A+%;E"VL5RFGPET25/"U_D
XM(C>U]&VN?>6KVCJBM8'DA&" R_I- at A3X8,_"K3OEV2R<#!!XG"7:XKHJ)-0F
XM][C*Q?!QX3O:'L^WOJO=)$C%0\61J0^M1L2B30J\6WW]MH0H"^/<P#(HS8$J
XM at 5?NJ7LQ:>/XVCC'%@;SA'N,8PMGF)LVH6-'R4K##(Z8J&7=Y('<!6>ZZ>1
XM#IG04P>)PBD7T,&L3%:$9<#E'7^9PQON,FK)O,T*WW?16>1>1ZN[+M(M[Z0
XMS95!%- W7;H6*6&58ON,ZC"*9OE8I]XHT!P9X4HZEYNO+O.$8YUC1G^4N5W&
XMY)!^6DF_5C(HW;LNH<I$VS7!A,[L N4(?;U%7U>%CCNB+;E at 4FP:%&\^#XJF
XM".MZ0. ET[VT1O1QSPQK^=KWS!7V<KIQ*=V_>EHQOFL=I,*)PX#0&4<@!:F0
XM>SWM2>,[L)\&.$JW^*M_$VEOL\U505_;)+*BAX at .XR>NS5S?BI_YQ_+%\+GQ
XMF^M\Y[+7N1RR&R$.NM$@_*P9X72EQ%G=7N<[VM--]I"!12']<H]<?<7=P&&N
XMRPH1VI>EZ:;.-Y0;A]]&WR MM[CIJW&+XQ?1%PYSK#.L:, BW:.6;+?>U(0I
XM!FVM;RPO7#CU#7#NY;OL0A_=S*<;=*3RN[LZ)Y? /5IPP :VF_K&T:^ +LY.
XM_U7JL-:XHZG^:(M7W-P<5CJB[>[R2TZ8[G@?R)IS^&E#F?3C<M?Y5%P[]R")
XMR^PSC[9!.YU2"^&NYV;W9;)Y[?+/GSV;,"]X2ODFP:0[>NF/1CR0;WQXJ2?Z
XMM(@'ZE_SR]I)9[/E+J\NX%IN=5ZY5GZ?GGGT;XYTF+>$\Z?OV^2S3W#.IY[7
XM!._CV]?,[Y .IMH 'S.7;_]EBD,]\8J'.N$+#V8<KWGX/9;N_3U*=Y.:M+IK
XMYVDE!7J;9WV9Q'G-AH#(=W;L at H!UA'3-]WR#Y7C-)A-7MWS_-R8ZEQ 2EWNO
XM=FX;9WCB%G at 8UW[ %VN.UV at WEG]9=WQ at 9U+4A7;,)GKCPFF$=G,R)W "&'=$
XMHB%V)WW0UH!JUGPAYU>,%VH".$?4YW; @C6.]X'R!X(:-G%4IW'XE6Y4-P.'
XMMG[M%W5CEEPM^'K-EWD#!W18UW^I5TD%6'MO)X1DUX!ZUX*5-'FZU$=RF$M
XM)7?^=Q($]U71-F1#YX/\5']/9WA49X at K"(4E.'B/QF-5-X@[!HD?MW>Z9'P-
XMTGC3UH2 at 5W;-YBY-2',#F( "^()F1X><:%T*J&8?YX2H%VU!07:2QCTW6'GL
XM4FZ IW2*.(6(6()3&(5BMEJ+]H49AVM:QX<@)XL!=WIM"(%KXB#(YDOXMHEM
XMEVRAZ(,]QV]FAQ#_]U5G>"-_U3!IUWW]-X,D16;A9HL>J(N[MWOI2'A3%W5E
XMQFC1%8S1Q7I^&'FRUW?8EX.:N$D%>'/>A'V?)G3)IG;+6(U\F'HNZ$O=5(0%
XM50,Y%WUWQW=X2&:#=V'C]H%6:&8<YW3N=UI !I*XIF$=MFB&QG^C^'.:>$.J
XM9U@)6$Y,88--86WEL7_8)TYUUX8^1Y.KIW_\)X/O%G1S))1DEX+Q^'30-6M<
XM:&Y8&(^\6(*)J'N%J(XH&(PJB))JAI6HEXS+UQHO5R[>N(8^5R%^979>:5#;
XMYWPW&"1MQVO&IX,E)7D@]U$?I8K$N&%<IH6E-5]-YX7N"&ODYHM.:6C057A.
XMIX(3QF-8EX)R-VF2YSG5F(G-B!A<V9+'%Y?).),W2'ZM at 7? !G)8)WRSR&^#
XM:)3YAXY16(6'9H*Z2(CP6&COU87NZ&5ZV6B2:'^G>9I9%W+5IX2A5B&?!W#]
XM<G %&%(HI9(^2(.A<W=_J(?=48F+F77,9H2V*8PK*&N )X5/*9*J&7Q-*69_
XM29>JQ6P4Z&.DI7ZF^5[-EG:<B).9&7"IXRZB-VT+1WVS")#,*71KUU'BYX+N
XMADOR&'P"^F/N2*"'&)Z'67]5*)[*I9>+]FHI.(23=XF[:93M)J&Y69<3RG>^
XM&8K3AU3%N9QF^)4!*7-I.'178X08:IU_V9U(J8Z)YWZ[&)**&%^&]H0W:EKQ
XMU6[127<*0GI at 57S4&:%X.&99F3-L$FI]QW>:5Y\#2"27^:'D H&]9HRL:(2A
XM29@'VGL@>8*&.&[M:* BR*5,QZ"#F7'W)YTM67?2R(EMV7A$ZG at X6*5Q!TZ9
XM6'Z>6'9/ZH8Y&'-P699ZBH'6Z%%.N:4NJIM0::#O)Z:'B8*WR:572(2AUU;&
XMZ7(&B)5"2)<'.*?EIX3I-W?09Y:@^'_Y=HW(PX "N*%Z*%KPEY&#F6A]N73L
XM.'^\MZ6M6IV/^J+\5Y<S!R%I9JE'=75S2%B<^88-F'X&&'L5,Y,;"(I86JIQ
XMIX#3^9,&5XN 26Z_EZT*>J9?VJ(D&9Z,9J$/6FL=IJGZ-U[B)U34J(-9R7H*
XM.)3"^GHQR!XSJ(PO"8OB>(W'REK46*%/>9%-.9O968@>F9$#NZ#A"HGH:9(1
XM"J"$51HP<CRK^E/]9 .AN78E]6YZ>(0U>*5DZ7_)QX-R27H)^"NJR(5>MJWS
XM:*.X!ZG?:H('RW%9VK 6JJ&)*:$5>K-J-'+#N9DS"U9X2$%D^*D0J&_TNI79
XM9Z\\^(F_B7UX)VG8R;)\*74\!GQ:&H),R9H;MTT72[,5VFA?NYLH";0@]6VC
XMDZ;M.K.PN+27"GNZI')Y9T$2>:Q,^I@(Z(.[NB-*]X3JMH6+-Y*OBK4K*[ V
XMZI.Z1E@]J6L."+8^B4N[.B[L9(?4V9B.9ZEU.K<-N80U@&QA]6_0)I#MN9[6
XMYVM/6Y'PJ)$F":93=U\9J6.R"I[/E6X6"7XJNFM8Z;.X2K-:Z2 K83W3 :4'
XMB7ES&WH$%WEQ26?P&8C3:**8BX8.XH(J:6NTEKKQ)YNSVHB*:H)Q.H2C6'[]
XMUJF1!YUHNZO3*6T;VVT8LH'TR12NY[G):KP@=6^9R7<"R7-+2)1;=("$:IZ
XM:6NGR:AD>K4O2GQ%:G?S69^$<\ 'S&X/6WW.-W87<V2T8E"A.'"IF&SR*:6B
XM.J<?ZKX at VW/FR'&WBIJ%.J/7.<*V6:YJZGD(YQ at N1C_4);9]&',T%WL-%E6A
XMQ)65AX-[IT.62I"R%[* B%1UN(V@)Y)'Z;_7";BU6K!)K'_M:G72R9*FP5[I
XM6[*2^;RG2!L0&3[HRL,I>GT'IWI2P8^ XTTS68&Y4K+;^%7J-X*Z69%)F8O<
XMZKKC:9-@/!LME&HR!J])JK?1^)YE9R9N0Z%)18V2&YG.HY LUWURV(,4(JW/
XM!YLW>IM0C*M<RZ 82:Y at IH5S3+Z!>DQF2Z$J'(9186V ^+3!2D&5RE_+2XFX
XM,;QL at KQY1ZIR=Y\\Z)9S>+'R6%IC"[;D2WQS6+ at P"UU:2*C!_':[@T\RYJ/<
XMZ&X=!EBG;+M,P9E]NH Q",'@@<H49(K=ISJ6FI. .&1/NVN&FYB:ZJ at 7"LS'
XM]U[$6K6PNZ -F[E at AS<:-3IC#'F[2I=5>AZ89%Q:_(*^1GMQJ9E.BL!0FH9A
XM"9K;3(-3NIDXHJFPZ86V!L6/W,[H'*&IN\GY%9WS&4+WQ*S35W!!6LX at 4I:5
XMJY.!R*YZVZQ$:\,GVKE2,=(/Z:D#68IQ.HA@>,(2^KBIFIXX.I+42X&56(=X
XMUE4+)Y1 +#K?.*'_PHUP^(:,[,BVJYE4&GHHT;X;^"N;%\Y.NGR/F::E:9X\
XMS9MN.<_ZIUH!FL*9S'C*1TOEXZGTRW(?RRO4HHP06;S+B;%$PI\M6= #C5TA
XM.UTO ;< "<@K#7(6FM;F%IBYRZ.6[,YO3'SZ6L_*P\=>(<;\:(93FF0,QL/A
XM^)!L%X3)9XV"*F>)K6E99Y9\F*?0:(>>JXJ3?9M(F=%%F$VT;:0XRYF;$R;>
XMEE['&H?"RGWZVDS/EZH_-Y$@&\D/+&?D4;^0_(JZALB!I7()/5AP:IHG',(W
XM!J"V?;($'(: :#?RT5EZ98=2'<-]ND4/2[IOXGJU2WJ2YJ?=\I[)^K%S6R%
XM^!/+&E8.")J17;.S*]X4:Z3F2KN#C%D1%A9%A:5 O+SIYVGB#:QDB=W-S9:D
XM5XW/.[I/FIS[&$4#C8V]9MA%*]'A>G8*.8:4F], "LJ MN#Y0[]]+>()S7-^
XM%X:8J%3KJHRUV'F1"3CPC<8Q")^P#-;+EZ<.*-L,NL)N85V@$WWDG.+""=??
XM1A\K!WFGK)+*#'OTF;1%V7AT+<T!;8WAJY8BYXT0C"G*MV_ :W9PFZD'_LB_
XMDTJJ49]C%4 O5>5XLAM]Y7UNBXPH&51#/+28^*[[B*79-T>F*&H9Z'WJ6FW>
XMI)"UVTVNK:)!]IMP;>=.]!CA4SOE,Q,[7"!N9".<FK>-B8U6XXWB%XMG1WZ?
XM^W:K3:(:2]=PN.;JV\-908LM/<4:(K\J2H&+L1O?A\ZY(B(P?A"H/-="%ND4
XM3#'*]WH#=34YY^$_Z=[W=\"(GN,&G,U&#NE4/,0?#<C0+C_,/2YI%QK!C)[2
XM<^RX(JTF;:6#O'"0C-41J'?MF9\1_E/)G;R(/GG\R7B X,U+,;C+&D"KW!M
XMVRU(CCG,,\SF&E8[55PQ3&C5YW"OOEANYYAW)ZQ+:($WUY#E-XKUSMQ175VN
XMCH%P&3H7G]2D5B[&R^.4&>GA<G3YQ;4;8L55OJ3L?:3GT83=);D4 \*=/:EF
XM58NC2>CDIZ<A/I!]K7#)]Y7UK=)T6Z?[BK?4N"2M KP-6*03RNYXPH952M1)
XM]O0_7WN ([Q6W_'8".U)?X1";./OEO29NZH83L85B*)D:+*OGH'R:2O[VGB\
XMBKY>+RE#::_)Z=0-DH0%E9#9I[A8RL'*#*=I.M at 3&;KZ5KI-+VW)>(',R.,R
XM;K+LZFE]#QS'K<M.C=F%XF3A92A'=XT!ETGG3EN]"7>EI[\4GWE[N*K0>='+
XMJ+<>]Z<FW8;5K,W^7=K@;B,HK=!RXI5]KF8R7T!9Y'W^=IPZGL TB?(5'[Y*
XMQ<AJ+D7?N-PA?\;/IY)7U[T.2(G0JGI61^O7[-"BNN6Y;OQ]NO!H3FFR,W0"
XM?W#F\IRH7O:(+)"5*-<QON/D_ZK>AMM'KT[C,229H^+65>'[1 at 3-&T6 at Q830
XM[EWRBG_+K6]D,#16[T"&,3)[6JSLW0[X5L,^U/2Y:GX*G^$0$_CT EF2"E3?
XMS/]\L'#"IWH.*'),S6\<J2D;-[KR4;1K3E<'R=&P1[9"&%RIDV7PJ9[!M +(
XM[ZR>:P$VGD.'[37R553,$F$C*9\ODS O)Z6_&ET_4VC9K?80+X.4$\J%O-MU
XMR.M+[*])M!R($MX:@Y()K9!!5%0SB%=G at V":9OJ-'FJ7]&3<%J-N5I!D:3-!
XMI?%H"SYZ9EIO&]$<)Q2-\@A"$SUO[@%EI9O'WQQ:Z+)/E4H+_J%4]VQ&U)W*
XM:@H"P[DG9-5VZI!<@WINYR7 at G0 $_YQ6("Q#!,_+=:JJAL^H6X!9.S3($\DU
XM?Z)4HIR\DDC?C%GI&C\F<&S(EOM4_2PXD3,QYIML8*=R3Z@*L!&5P+8*D=N&
XM WGK:VT-,=+&^190D-MQZPT2WC1Y 3]\GBI[@SZ./%V-XH>T1 Y#JH0H34GE
XM#*32"Y<;?TH=W:N^51XHQUI08+Q*/59P:&T^N'-Y_EB;TX)U#T55#%P6'SR>
XM0E1Y#BS]D385!:^ 82#S4XZN<V%!.C5JAM)\DV8$\= EQ >&>E;A05)32(CY
XM8+/QA['N5E2315 M8\VP$3?2$H(&,U92#O0P+?R'F5 at AJ2%(E\O6X2 /(^\$
XM&@.RA.E-I5DCD2?_?-SS<GU:;HM)J1AX>DY9<?MP1NNC 1NLEK1^%(4C4<.P
XM,?' *S?T1J$*3 ESRSU1G\^#MI"B3 at H[K$@GRK\QIWP:C1 "@IM0*(DTGG/=
XMIE6R*H4VZ(;0M1[V<A+%5UR&^J7&]4"FAHRL#SBY?BVAS/DFT /+UAYAK'9C
XM+"#EDM'T"\^89#Q2'"L3A95R!@@UHLJ;:TT(OG6UHF.<U!L@<G;&21/Y&QT7
XMQ*Z/'M-PZ4KH at +J6!F?.WS3*.^A/ZS"W!M'GZ%E%G$]N2[_YG2DE S,/6(N%
XM&F[UI"'2N,A:3B++(GH(X1FYS"ARJ(ODP(JUL8/UPU]#J;3<)9)WNN\+HK?/
XMM7?.DN-39<E/YKBZ6(:9+B*PJFS(9T.)J,.HB80%K",-2;$L[H0K%QXAT^B)
XM.1\M**TQR[4;81%<Q(0ARQ at V-;XHSMS at T!IR7FTB B :)'V8H]+JC=>M\/6U
XMS2,8JZ+IP4FA$)2\OF>G%E]>0")S"4[XA069B-K8T'I"D &A&G*YPS8:F=1I
XM*Y V!U@!)/9XI\!?_B(K)*4KZ4-5Z#QD6G\J)Y<K.%DFY)@@ 8/Q:G9N"#\!
XMO#W"'/O(1;R11''8Q3MZJ 4'W2%35H:EUK&VFUCJ:)\I]"0\B$>J(8[XG'Z)
XMB$J3+_ $_LB@"!QY6,!31@"R!Y&ZI)6N;&2?8CEM,4PVLOKVAP;>^YIF1.FA
XM8<& 2/5D4?5+B!DN1S;)-<?*%ICJD9(PT.1Y!X&"_3 at AP?.(9XA=X(375P+5
XME_=B0.M-&?45O1/P(*0"K#OC\*\UM\MH?DB1%%&&]PJ153-=R!C9U-5XD1%R
XMC$&;[;=REF4,JH23<C-"KH]&V$J/'9DV7JD6/47])QVHE3 at R:/RMH)TQVF<G
XM at Z%''&F0T1-2J32V 2N<4-%Q:HE9A4(4=QVE9*N4@)WG[.$<JN"$G!L:6U>S
XM4;2-1P\S%<><.XQV*8WYA,"?-U8:HR3K@=RLRP'*2+80G^!BH99)95PJP5;G
XM%3N)L]259._ZU##XD1,S)ECBBZ<HUK$=Y<4.@]L7%$,R$>7Y$0M!%5?2B>IA
XMLP?YC,@\LBZ at Y YBEJ at GJCG+HWB!N&6;@GGM at UM@C2 I':2 at 2.0Y!"E,IA1+
XMM!RWXQ;TCH$M[K@>.\CH= [_LY$\K.W<FZ2Y%<ME*\J9^HT6=K:<M.S(X FT
XM at 0WS>Y$:AIF9OH[Q<U9;8_L P^.&*P'B...&OD0;@4QP".X^G/Y;26I( (*%
XMY-4O0TK]*W*O[;6QJ;!S!N7=='-%5DWA!"$%5IF6G<;3 at Z#DP1T]D,GT %O0
XM##_7S-DLR_4E>OS:B4([,2_ 0 1YF,9 at DOXS2!B3(;A$?-4*EZ*F26-S[[2]
XMQ21Y!</9CHR.#2U\N<09U =/HP7):CZ/8M:Z>G7A=ATY2IP;+D<D23Y41R(=
XM?RE[IJ>P+#Z&Z3<Y)+/[DX/.?'VYN+5O/J>M>W;^#2^>NW5E!G5B]?M,3(H5
XM/BOQAR#]')TB=[<#.'"$'1;<\!RJDSV\:_&E&:WF__90"-0T_ TX?D$W1K2L
XMHWO!)7ORH-5,1A at NP=Z,.X!CI0(6S:"Y,MF<^J(C].HXB9"+^4VN( =\"-9/
XM"7U'?IG_NF=:P(6 L.3M( N&M\#:9SJ81NP'1;]%.)GT(RW:-9U2IH$_MU.0
XM2D^'6&;<HF<2CL47&P%05O,O,W- !I6NY-_D(50P="6*/18E",K>VF.ZFF8$
XML/<-QW at YXVQC\4.*HN=9ZDKTQ^&J8[C+'THS"!G0^L>L1DB<\3[;STN^P^P8
XM0T&>L31\>,Q\J4Z$=SCE(6RK9;6R>'(QZ3(95=Y at 3(EE\#B!4=*H.HQE8'B"
XM1[$<XB1FN4NJ)6LK@/%Q^9R[U*']]!AV\4^'+?*M)?&G.>,G6QI'.>F, <1A
XMACCAY;BLBK?SKY7. at W9![MP.&PK<;-:AR!1I&YW<;PAU+/ $^B%HBIPN9T Q
XM>Q.J_A4_B/3CA.0U1)-U:CL.H42W3.T=7Z-0M-3/><]%-AF+($N0GD&%CS31
XM4?E#OR."?%KHDT.B(3PRR>2IJXQ;, >/L2<B!ZA>IXO,9QW4=QY$>U<4\]M6
XM-)%ADXQVB)HH[,XH*,QR%0[(61?<P?](T?QDD2+M\_1"<S8I:>#98CL&*.Y]
XMG?B727W>$46:JO(_;:+!B0P'E6!K6ASJ)_2&DA=%[DK0=$DV9%W4LY:AZMPA
XM(/N E&=S*I9CE#W/YT+*EDGG&*DY\]5WI%%[7)XI$S[.NJG:SZ93G,EU^DJ_
XML0>0*&A^Q&NDF^+B.3FP2D,S2:A7$WZB4"@*O?H%[GI20U-_4'$>RDM"NJF4
XM%Z0T>']PX&W(N)6$-.?1*71S9.&)#I8Q-^ZBG?MJSC$SCM3]\INH'O^Q=WJO
XM?!F4+R&'CHSV6:,>L5!&(*[)%8&2M#*:=!59D;%F^B6[J"=RD&@QM!C-HA/$
XMNA(9?#:5-9/(S"'1Y]C7F,A?P8VA2BY0] "+7S.-J9"O5"%!#AB7)M':>I<E
XM<"V&3T]E'Q4$L82 at CT%26"YS 25KI2&+99IPJVG#XPHDT at P"-#_CLQC"'<6U
XM]W92O.PT2Y'"I2'NV13<U3Y54ND2EZDK<&G5)JCS2*5-1D3&#/R)YV1:.(-7
XM7/!/HCSJ2BF,:W=<.>Z/'X9&]+A1'2"BDX=@Q[ON,KTV_OR?N/,YNX(@.L"8
XM!$KL&3+M?VD2"L*/2);E*FM!W9X<T7'J"L_9J3:?-*U at 16WVX2?"</>"4GG(
XM.Z^HI+2W0>9A[B0G32FT,9^90><!!:?HE9% -C%-]AH#.B$@7G940O?0-,I8
XMJW!8(R6GM(SJ]."X-2(F5E at DU$.2;U7[Z,U_:6Q02MOKJFDECA+0976JV 1]
XMZ(ZT4L5.D&Z!/VU&A]-!6[&HPL2TNBO at 8RC[:[02<Y5$%]C] I*%%)@VP[_U
XM$\M6+<>)B;2%: 4\5HK>$-#LGS0Q<KUC>Z0Z5Z8&O5'/RK)FCO^Y"J=P^6;A
XM?L&'^/ .WCL6Y@(ET-PCB5,D[H2<_:@@)I/(BZX)"<V%.SJK^XB"D'BGCN'F
XM\58*UC3#9J :0$#QJ^E1:]/S=B= V:*5*4DY/AW&5A>8 QM+[B%C.2;DN#DW
XM(B0=MR[V=2[9%'J!E$)6BPF.\D>51S,8G/9@%0R?'0Z@%HA^)9&V0Z:IGU!N
XMN_[*V]$K*QYLQ(Y6\K+*,OP&FJ3A:HU669,TR*>0N4Y81G("3CO!8K)9CZ<N
XM.ACK/(O-"3 at T'"23:X7K(Y2P5G!<UHJ;]"?=91P]5=7NP];&Z81N9P]F98 T
XM<*(:(7]!1*+K];N-2*).UIG9,$6+"+9L(7[GY5).,X=3 2?R0"PPB(Q1R8'X
XM$=5.'FMSJ1/??L^/9QWE!_9+<&'A(Y 0- at L996BS [J",KO,0VI;YZPH;,-U
XMY"0#QC) )SA46J/#A+]*\IBJ4HA*@Q4-1*Q^MZAPKFP&(!AKF[F-]":[L+:P
XM$T*'BB/<G$.E:&9,-5AP3%N_RHXXYUA6MC$$1C6;B/Q3I-(H2M?[]=Q,5,-(
XM at RSW18P%-0$<1LRK_55LMWD I,_D/LK6P\A]).: 3EU1=<'^;.UDCF'U539"
XM7HJBHBWU:7!#%72UQKK5Z[82! 45%<%FL 8G617]:)$PN1 TTE#,8/=Z6^/U
XMDVI*MJ5)NI870&V9ZQMZ73$'Z0W(Y3$M4\NIDRF7:AP(.=%)?-=(Z YA02Y8
XM2DY8'=[#88FR4>.BVI$% W33 at T/\>06/[]XG@!LLW,QIN U[))2,NE>A^NC%
XMI at L>'8+%OHO[8%G:",!8*,!E at Q@8 <HT"+"I$!S7YD%8"@5ZEO[OZWAQ at R\&
XMWPL.3!(H M:KA2LD1027QF#LE$F@@3%HY >CEX7B8 R(X<5Y,C@))P>S8!%@
XM0!J,0T%#/WR0H]%BEL8%-B%\P:;@%&%G9_:"S6 at EK):#S+F783N^:*F9"UX"
XM7%(-EE!5U*[*()GP)#RDT#4U$J1PR8@/6N-P"!8KLE%]0\O8KV1X(6S/GN'9
XM;.?*.Z NS(W^5>_K3>!O0<6BKM3E=LNV0% )"HBC5V ,7]1@/L%Z+\1&U0X,
XM4]/9NTKS3*O,[0"FL:5KH$70Q]DJ592-0Q 5M4'3J'<B95K[4DXVDR7=X@)H
XM$S.8L*S#4CC:_=\L46'+(U @<M%(!:Y?4TQ0NF>W;*$P\;D=.D<J4C -A$V%
X1V>5LJI1[F\>6;_85;+9! 0 @
X
Xend
SHAR_EOF
if test 12576 -ne "`wc -c < 'pig.uue'`"
then
echo shar: "error transmitting 'pig.uue'" '(should have been 12576 characters)'
fi
fi
echo shar: "extracting 'shuttle.uue'" '(3450 characters)'
if test -f 'shuttle.uue'
then
echo shar: "will not over-write existing file 'shuttle.uue'"
else
sed 's/^X//' << \SHAR_EOF > 'shuttle.uue'
Xbegin 644 shuttle.pic.Z
XM'YV0, (*'$BPH,&#"!,J7,BPH<.'$!G&F"AC1 at T;&#'>V,BQH\>/(#EF'$FR
XMI$F3"B*J7,FRI<N7$2=.M$@RI,V;'D_JW$DR)<R?0(,*%2I3QL6,.),FY<GT
XMI,^A4*-*G0I#9 at P9-$8JW8JSJ5>,3ZF*'4NV8=&L2+FJ#?FU:=BR<..2M3I#
XMZ]J[(-ON?"NWKU^@5HVFQ4OXH]Z2?/\J7OPP,%H;A2.S/6PC,>/+F DZ'BRY
XM\T;*E3.+'AUPLT;/J#\?MDRZ-5S3D%/+OJ&7M>O;5*T^GLV[K6W<P(G*K,N9
XMMV??P9-/A6W<N-??RJ/'U%V\>6JWTK._M!J#>&SKUO=J'S\]\%'PZ%4C)L]>
XM(O<8N].#=]J^_L'WW:O+EPT9I?W_ N&'U6G[I=<3@ B^YUV!\AV(8'T"GL=@
XM at QE!]R!P^,4W(7HC67CA;>\)]MV&!H;VX7CX+4BB@;1Y>&)F^%UUU(@KAF?B
XMB\K%2!.!-<[G(HZ*Q2BC73VB]R.0?@F(U8PT%FG<D4C&%2(--5#)9)-.R at 9E
XME&.%2%,-5_*8Y6Q;<KD<=R+: *9)8S97IIE0H;DC1FL2V29O;\(9E'EAUJG?
XMG9[EJ2=,YIWDYY^ 1B;HH"QQYYVA-25*)J-RT14F4Y).2FE9P_69T:69XKEI
XMES-=>FA)H8HZJE34C;0FF*<BFFIABZYJ$)JNPDJG3K.J:BM at 5\TPPX!JPEHE
XMIKUJ^>M/G=HP;%:P6OG82<EJNFRCI=(IPY)5TN"MKM16BQI8UV([IYK;SN#M
XMMZ^"*NYQY)8+$45, at DE#NNM:>=2I[\(;K[SN$?NIM^H*RRZXQ<K:KU+K :P0
XM1=,6V^U%S^J[:Z0+$^:?P_==]=A%QH9<<<BH9JSQQAQKMN2G(;><;\MVFJR6
XM26#6BJ3'^[9<;\@'(RSS72792X/-+\XT<,]UZARMQ6+^W%70!,] ](79JIFO
XMONT:>_75$CJ]5-!5"KOMU !6;0,-!D^L=+=;K]NUUY.!'?6V,I -X9 8H:WN
XMUDJW_;+",NLDM-C;3F0W>QX?'37?6ON=+^ F&\HVX3+(=+AV1M-I,-KX,N[X
XMUDW#31O-40];N%671U=U#:975'A%G[>]][J0]TNZWJV?COJHV8*9.]V5ISM[
XM[,(.'[K3N<X-O) QI([;ZI33C69%FW]>_-X7B2Z2JWH#7SGSA@]*+YV<+Z\D
XM]</+7KRWQV><?/3@<^<\:7B?G7O\PE>OOL'MVWXT_/&3GYGJQSKO!9!NZ_/;
XM]7;DM?]%[WL!E D,YG>9Q&GN=Q&\"OK2EZ_UU2Y3 RN>]R"808%0,$CP^=0#
XM,TB1_"EP<_V;50 at -R,*)&.2$?<F<U7Y'P at RZT''J>ENU2%*^'I80(3B4TIR*
XM*+T:%@5]L:N3N$@2MB8Z,08*2>)<!,8Z#%XQ,-3S&\FP!*B at 4>Z+6%R(%G-3
XMD7TQT8A?_*';CO;!"4'-=&B4($/6&!4=5M&*>03C]6 at 70@:6D7S=@V,-(<)'
XMX7BGBS1T8E6PJ*3JD81P&LJ2YLP7R#0^I)',RD]&WBC)6X4(=E1$%P+K.)^\
XMZ:Z3GF0D>>KW1D7&:)(%H>0I(]:MWV72CB/A'"QMV!)0ML2"]ANA)&.IF>$$
XM;TZ^$QMS-A1,/ X3)L94"2UYN,Q<"LA9;53AO5X),586AGO6S"-4LCDO-WJQ
XME*;4I=&HI*9BM4Y( N-0W@@'2ZFPTRPI5-,[68 at 0Y@GL;'^,G[K,^;5]1O**
XM8_GG0N C ZMQ\HC,;&:*ZL7/ RZ4H88A'S>_"!>))B0&!1SH$0LJI$?YCISX
XM"R)(1V>U6L(T?GTQ*4*PHDQX=BQ&VT(+E:091YD"[HX&&];>. at J^JBA&I[<:
XMH2UO.5&@5FE D)PJ_O!U*;"!+)KY(\XX;\J=RT!U(!J\: 0?9M"CW&NH9,V@
XMND:X/\ZEKW78P\C]J(J9LTX2D#[UIE6K2=1 [HV$/0T6\ I6L,Y=Y%YI?4]K
XMSMI"K3;U5I,4$"_OB482%A9\PWHBOJXW(,A&EIB3%4T+(<K6EE)1F)T45AP5
XM2=>S?:^)N#$I& ,K6,V^-IT27&MI*-)9R[;1M+B]C6ZK$E?\N$='9HQK9B\[
XMW>*"#W:071YP=$M<X;8V17?4:G7UJ,>?7M>RTR-<:#,Z&E R<Y'L12L^ZY7(
XM9<;7O*=4:P33];W at Z-2[)QWO^%S%62%5]\"-.=]#FTI=TF at 1M;WE:T$%/. 9
XMDG22,[@O2_,+6.8%Z)3E%<T)BW)?#VM8OFCB)6P!C-;0EH?#/0SJBBLYMQ";
XM52S!RO!)G?M<\!*QPS at 5K#85W$1N@:R'S-V<V*2580 at OQGD:E.:.K>(0U_Y8
XMG7N"L??HJ4(J0XQ at 09U1%9WLE\M5MK^M!2ATJ=CDX7JYP:&$<0+%;%HY>2MX
XMET*;C>5RN+2B>:()#M&5PO;>E689395-WZO2.5WJW9;+Z-QS6>SFY\H-!:@J
XM'F>AJ3Q>5CU1D$A[Z>D^[.? &)7 ?RYIE at THG"E%%X(HEFQISK3;HF"/9YPE
XM=:53C#"!ICJBP%+FH6%#IS%SNJQE)95!];<NX.KZS("$7=*N2F9_QIF<A!+0
XMHW:XWD4J^[H+!"Z9IR=54V.-VB?^2:U(+.MC^AC5Z.7QM[=JR^]*]972!AED
XMQ;)N#V-+T"69\2WER6D<!Y#"DIYRI2]JY#I;VR6737>L 4Y$<1.44W"^-+FM
XMZ$+625PE at KIXCXE=T^;:T,"O07G*P8A8>M+ at XQ')D\A'KL-1?C:-R);P7'2>
XM)&WK^>$K87"U-SP<J)$5EQ3^"\\KV.YU_INO,&_TN78XU5DO?>?)_E695#XO
XM- U:X 2/9=,A'G4W#WU36Y=WH,_R*:H/G+QAC_/9XUEV+J6]X%UG.R++=_"L
XM9UOM#TO9!(><\*KJ/2/\13(Q%^]WLG-=\&HD_-,/ZDHD.W769I_[VC,.^8-L
XM2?,*WW8RF^Y)P#_]X)V/?$S^?:ZP=9N2'T;XWPV=>B1B7)2$)2&*GPUZFDOV
XM\;4G" XI0D1C2QKVTYW]6L<>?!/.9=M9):]YAXWEY at N?5&S&^WT"U.H at 7[WY
XM(W8=E59L>.I7W_H%&3%%"ML8C4?<].@?B/HY&?C+]Y&U\;=];DY;^)7G'/[Y
XM=WVT]GN8$7< &( "V$>6IUIOQGP(Z'E3,6IUIW2]]X#.IX 5:('MD3J_EDL:
XM:!]FEH$?R!YF-H)V9X((Z%<HJ!PJN(+^Y8+QUX(PJ%PS:'TR6(,.AH/!=X,Z
XMF!D\V(,W!H20]X-"^%1%*'A$>(0YI80<DX1,J&I/*"].&(7 1H77,H56.!58
X%F(51H0 W
X
Xend
SHAR_EOF
if test 3450 -ne "`wc -c < 'shuttle.uue'`"
then
echo shar: "error transmitting 'shuttle.uue'" '(should have been 3450 characters)'
fi
fi
echo shar: "extracting 'skull.uue'" '(3580 characters)'
if test -f 'skull.uue'
then
echo shar: "will not over-write existing file 'skull.uue'"
else
sed 's/^X//' << \SHAR_EOF > 'skull.uue'
Xbegin 644 skull.pic.Z
XM'YV0. (*'$BPH,&#"!,J7,BPH<.'$"-*G$@1H8**&#-JW,BQH\>/!2^"'$FR
XMI,F3*'&(3,FRI<N7*5?"G$FSILV%,F_JW,DS9L^?0(-NS"FTJ-&C!(DB7<J4
XMI]*F4*.Z?"JUJE605*]JW4HQ*]>O8!5Z#4NVK$JS:-,*' L3AMNW<./*G4NW
XMKMV[>//JW4NW*-N7? //C6&CL.'#-6H<+IRXL>/'D"'3F$R9\HS+E!,O9CSY
XMLHS/,F*('CU:AM^@I&/0L'&C=>O-L&/+GKU8L8W&MW%'WMTX,V[8KH,SKE&Y
XM.(W+R$\#)2W#-NWGT&/SGDZ=N'$:CF4+'WZ]N_*?I%='OST^>O7SUKM7?CS[
XM!N+TZBE_[UG:.6W%MC67WXS^?'SCD$&76&?(S7!<@9/-Q]-HV.V7W7Z&]>??
XM?\5%]MR !Q:HH8$*[B1:<Q?R1MZ%$4I('87=63@;AANVV*%.HC4HH(H"DF?B
XMB2A>1R-L++:HX8LWQ="<?2&R5V-N-T:68WP!RM:CC\D)]9=+,<Q I)-(-GF?
XMC4E*MF2*6O)(()27 6F3:B36%F9M:G;IY9< KEG;F&2:61.(1V;Y8)%N$N<8
XMG&#NR1^=4-I)DY5YBLBGF]CU!FB@^HE)J(M2!B7CBODI>E^?CC[ZGYKJA
XMH3-=BMB(Z(W(YG"<>DKA;J%F6&BE0$7ZWHTKZIFDJRCNR)FH/]+ZDZVL=LEC
XML;ORVBNH$5K6H at PS0$LJ3%?J*J&-UC*J['68^:8EAK(B!]IGT[YT):>:H?OF
XMMLYVZ^UON56VX;@SE.L2?^IFJRV[[2*WGI&=ACLNN<+VA*^Z" ?,[X;_/ACP
XMO./:V]+!"5?L)[LMOJL;N.%&&W'!/%%LL;XW*FM at QPTKV:^XH$G,DL at 6)^PJ
XMF?XVNIN\&@[L<DIMQFSQS)CYF/)C.'LVL&D@[P2SS^@^BF#'[MK\IM%'$QS4
XME!/?RK3,3G>+8,T:]U9 at U2TGK=.I6U?L*=@U1\V;K&1;#136+Y>8MKK8 =W=
XMR5(K/';<.Z/4\]U]=OTTI'_V&[?</]'-L]:$[[NDAG .Z#7+@)M]T^"1EVSX
XM9/!]FN&8BS/>D^."V]UYEWE[JC#.Q7U-]>*!GZ3ZZLFZSC'4?/M8>ME7!P4Y
XM[IY7SC&9P(XK9.;! W4[\<4O^3#-OH/V(?-S"X\L]/Y=_.7N9(+V[&>I8=^X
XM\-R;^"C11?L[MI#CI[9\U;6;1'+Z?X:^+/C."BQ^SJ&1W_QTICF;W ]_N]M?
XMZ^2ULME!ZV\"O-[1ZE>2 R+P>]Z+3_7H1;4(2O!CS?N)!2_8JX;%SD#CL][1
XM/,@< H;08#=#8.)$UYGVT6Q at I;$>"S]H.J=HKS<R5%F.VD8]S 7P>CML(0BS
XMY[QX]2V(">36TXHXNR3NT(5,%&&\H'@S"DV1BLJSH@>Q>+Y:;9&+Z]+ at Y8H8
XM1C%&<(EE'-:ONDA"%*V1>FUTH_S@>+J at I.N)G<*?%P_'.P"23X\"Y*,/@=(@
XM<+%O:)U;CW$89AFH/;"#B$QD#W>"NI, at ZC8ZBE/Z%M at O*;+,8T;,Y!XWJ9-.
XMFF1(3GQ5ZP)IK.J0LG^3-.+_R*9*"5*0)*J9H7HR.$M1ILJ67_K;[ZJ62>!E
XMD3Y6$F:@)*F_:W'I;?JK9+N6B<->SN^7(XF1-"MTL?2\#I(!*EXV#T2V:'EL
XMA4)2I3/C2)\JI5&2)EPG(-G3M!-R,V[R9.5-7%D2!HVS0J #W3G1R;7V_?.!
XM>73C//NXG ])C9SZQ*@H]UFX$SI0>:4+J$!M0E!@EH:C432>GW[F48#J<(!'
XM%.,$"UB3\G&47QA26TL!.L:86G&F+UR03;.ST/4I])']48\NN^G-\@'UF4*U
XM*2#Y=53V(3.70?MH1)L*TY'6I*3A3*2![LFK?;$-8CSE:@[)2%'P>'"L!W45
XMZQH(I<6]<:U7I!]-:7+%BW;-F$FUH;A2:%>\OO2->@VJA_I:5#5&#:5"="@'
XM_5E8"<XOKT^E9U19* .;K8UO8>NB*0?V6$+!<ZU;=6IFVUK/)'8V at 824(F#)
XM6C32 at I:!ND0M/'W*PXDNTJT_;91'2QLN8U:5.,3-$ =ONS<</E2U;/UM:W\:
XM3:4^EG(I0VAL2?<_YN[MG9<D[&')!DZ0(!):MZ234M&IT.)*]C- at 0RAE[ZA,
XM'08PL5!=['G'^MU/T1&YA)P7)8>V,@*%]Z.K5"0G41-0[^8HLJT+,/4PVEC/
XMH!6DND6:8F'D3?%1U90G*^)L]7G#TZY6NIL5*7K3B[&L(@]2_PG?;D^\X(HV
XME;2>':Z#4U1([)8RQS$F(GA+5]Z/J+6K(9[PY&@&XN1:-W;_++)'CMS5TOEX
XMD&/;+K F1]EE2KDC5.ZME;7<Y/!:E\P,M"XWO\R1,(MY<6C6,91VNF,"J7'-
XM>YV)F]_<SCK+66C5XYO^XLO<(9N/M2FF\C^=K.,#RPYB)SLG:$MK:/QJ5K][
XM!FD[A_ at W*J+0PG"*+SN)G&>8[%F)?>:6%*&U7$_#UXOJA3*I-QRD4^OVTTEV
XMIZB/4S41P\W/HIKD[]B\$5NCNG<.%'6E'3W@=MFQT\7Q<JE?8FPE9C75\HJ;
XMDKL&T1531MJT/E.U/ZA5#_NOUTS^;)9!"^[\<GC<53Z:D,O-["L[UM>\'O:T
XMJ03O95(ZWWV>,Y8-W&R S]K=M1[W[RCWM3$+#5"R,XYMR;OOEL![@$.FI"'M
XMVUV!+WF[AEXVL35R<0["%XQ,[;C'GQTT8>,YW#55>*M1SM3Y>1K+NUXVQ6'.
XM5YFK7,#U/21TZXW=J*W<X.V^]+N-;=M !YVW5;YYNIWU4 TC7-S5GOF%67U:
XM5#?=TQFC>M5'GI&2:WVIS$QPP,%^.'K3KN(LN3@/Q9MVM6M[W;YCN,X/KO2$
XMF_WLY>9L/(^-]J\7/NF(QK3/?TZGKC?SD at O?^-CAGA*YRUOC2^6J^"+_]"A3
XM'B5RARD;:]YASE=]YU>/^=]_+GFHE_[NIT=]W['>;\-OW?6O[W7L99_XI=>>
XM]4^W]>X?2G:,A'[NAQ>Z\(>O;Y[K.?2VU_GOF<][%"L^ZX9'>FI/O7GJ^[;&
XMP,5^]N%&^L5[W^JS5SW3T?UH0Q\_WKLO?D7,#_C,OW^ ?.9[[_V^_J\[NOSW
XMEV&(9WV^MWRD170 &("7!7_1!7[3U7_UYWX*R%DOEWH]1W\'%E(3V%,#Z(")
XMYF9KUWG*MX%>IW\$R']A=G>RDU8D.'1OYWRFQGTJZ#[!UX(N^((6^'R9-H,N
XMIE4V6((XF'X7F()P-ECGEH *2'R?=Q(@R'FZUGHC2()*"(/4=F2+AD=U)X53
XMF(,QJ'EP=G)8Z'@;.'E4R&^YQWZ4!H6'I86>5X86=X;,5D/?Y7:X!WW/%0/R
XM1Q%G^'##M$TLF(1WF(=J,8 at O 5:$>(BMA(B*>!6&N(B.V!*-^(B2:!*1.(F6
X*^!&5>(F:J!$* (1W
X
Xend
SHAR_EOF
if test 3580 -ne "`wc -c < 'skull.uue'`"
then
echo shar: "error transmitting 'skull.uue'" '(should have been 3580 characters)'
fi
fi
exit 0
# End of shell archive
--
John Campbell ...!arizona!naucse!jdc
CAMPBELL at NAUVAX.bitnet
unix? Sure send me a dozen, all different colors.
More information about the Unix-pc.sources
mailing list