dillon@CORY.BERKELEY.EDU (Matt Dillon) (01/03/87)
#! /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:
# README.txt
# doc.txt
# breakup.uue
# my.lib.uue
# This archive created: Sat Jan 3 00:54:48 1987
export PATH; PATH=/bin:/usr/bin:$PATH
echo shar: "extracting 'README.txt'" '(545 characters)'
if test -f 'README.txt'
then
echo shar: "will not over-write existing file 'README.txt'"
else
cat << \!Funky!Stuff! > 'README.txt'
CREATING THE LIBRARY:
(1) breaking out the files.
<UUDECODE BREAKUP.UUE>
<get into some empty directory>
makedir src
makedir bfiles
<copy all the .B files into 'bfiles'>
cd bfiles
breakup *.b
(breakup will put all the files in 'src')
cd /src
<copy all the .H files into your compiler disk INCLUDE directory>
(2) compiling/assembling
<compile all .C files, assemble all .ASM files>
<JOIN all the .o files together and call it MY.LIB. If you have
Manx, you must use Manx's librarian to do it>
!Funky!Stuff!
fi # end of overwriting check
echo shar: "extracting 'doc.txt'" '(19936 characters)'
if test -f 'doc.txt'
then
echo shar: "will not over-write existing file 'doc.txt'"
else
cat << \!Funky!Stuff! > 'doc.txt'
MY.LIB COMPILATION
- 32 bit Lattice C OR 32 bit Manx C (i.e. +l option) It has not
been tested under Manx, but since the assembly routines do not use
the frame pointer (Lattice and Manx use different FP's), I see no
problems.
- Compile Each .C module with stack checking DISABLED (this is an option
with lattice, I don't know about manx).
- Assemble each .ASM module
- JOIN ALL the .O modules together to create the library. Under MANX,
you might have to use Manx's support programs to create the library.
- When linking in MY.LIB, link it BEFORE Amiga.lib. It can go before or
after any other libraries, but remember that if MY.LIB has priority
(comes before) LC.LIB, some of LC.LIB's functions are replaced
(string functions, etc...). Additionaly, MY.LIB contains the function
FPRINTF for FILEHANDLES (the fprintf in LC.LIB and MAnx's library is
for the respective STDIO routines). Also read the docs on malloc() and
free() under MY.LIB
MY.LIB DOCUMENTATION OF COMMANDS:
XSTDIO:
fi = xopen(name, mode, bufsize)
result = xasync(fi, command) set asyncronous mode for fi
xclose(fi)
c = xgetc(fi)
xputc(fi, c)
actual = xread(fi, buf, n)
bool = xwrite(fi, buf, n)
bool = xsetbuf(fi, bufsize)
fi = xattach(FileHandle, bufsize)
fh = xdetach(fi)
position = xtell(fi)
fh = xfileno(fi)
newpos = xseek(fi, offset, mode) mode= -1/0/1
bool = xputs(fi, buf) Note: adds \n
nchars = xgets(fi, buf, max) Replaces \n with \0. nchars includes \0
buf = gets(buf)
puts(buf)
bool = xflush(fi)
xprintf(fi, ctlstring, args...) xstdio file pointer
fprintf(fh, ctlstring, args...) AmigaDos file handle
STRING:
len = strlen(str)
dst = strcpy(dst, src)
dst = strcat(dst, src)
result = strcmp(s1, s2) result: -1 s1<s2 0 s1=s2 1 s1>s2
dst = strncpy(dst, src, max) max doesn't include \0
dst = strncat(dst, src, max) max doesn't include \0
dst = strncmp(dst, src, max)
MEMORY:
str = malloc(bytes) (a hack.. is wasteful)
free(str)
free_memory() must be called on exit if you use
malloc().
bzero(ptr, bytes)
bmov(src, dst, bytes) handles both src<dst and src>dst
bset(ptr, bytes, char)
MISC:
val = atoi(str)
bool = openlibs(mask) see xmisc.h for bitmap of mask
closelibs(mask) may give argument '-1' to close all
bool = wildcmp(wild, name)
check32() exits if not compiled w/32 bit ints
io_open() See below for calling parameters
io_close() See below for calling parameters
bool = checkbreak() check if break pressed
resetbreak() reset 'break-pressed' signal.
mountrequest(bool) disable/enable requestors for
unmounted filing system accesses.
CAPSULE SUMMARY OF XSTDIO:
The xstdio routines provide the programmer (read 'us') with buffered
and asyncronous file support. With xstdio, you generally have better
control over your file-pointers than the original stdio. The
disadvantage to xstdio is that its error reporting mechanism hasn't
been fully developed as yet.
Please note that the xstdio file pointers (I denote them as 'FI') are
not in anyway compatible with stdio file pointers.
For your safety, you should not access an xstdio file pointer's file
handle directly. Especially when you are using the asyncronous write
utility (see xasync()), the file pointer's file handle is placed in a
precarious position and should only be accessed only through xstdio
routines.
The XSTDIO routines provide the programmer with buffered file I/O much
like STDIO routines. XSTDIO routines offer better control over your
enviroment, but lack in error reporting for some functions. The
XSTDIO routines also have the ability to double-buffer writes.
XSTDIO routines use a File Pointer (fi), but are NOT compatible
with STDIO routines.
Implimentation Notes:
My implimentation of xprintf() and fprintf() uses the stack to hold
the output buffer... 256 bytes. Therefore, the eventual output
string of a given xprintf() or fprintf() call cannot be larger than
255 bytes. I've heard that it can't be larger anyway due to
restrictions on RawDoFmt(), but am not sure.
The xstdio puts() exists to correct a problem with AMIGA.LIB's puts().
Namely, the latter crashes on outputs larger than 255 bytes for no
good reason. The xstdio puts() can handle any string size.
Revision Notes:
The revision can be found by looking at the XSTDIO.H header file.
V2.04:
-buffering now works well for reverse seeking (backup/read
backup/read...) as well as forward reading.
V2.03:
-xputc() now works
-xwrite() now returns FALSE when an error occurs in asyncronous
write mode. Before, it always returned TRUE. Note that
the error might not be returned immediately.
--------------------------------------------------------------------------
fi = xopen(name, access, bufsize)
FILE *fi; returned file pointer
char *name; file name to open
char *access; access modes "r", "r+", "w", "w+"
int bufsize; requested buffer size, in bytes
"r" -read (fail if non-existant)
"r+" -read and write (fail if non-existant)
"w" -write (create if non-existant, truncate if exists)
"w+" -append (create if non-existant, seek to end if exists)
The minimum buffer size is 1 (calling w/ 0 is actually 1). It is
suggested that you use buffer sizes of at least 512 bytes. For
example, if you xopen() with a bufsize of 1 and write out a 20K
block, it will be written 1 byte at a time.
NULL is returned on error.
result = xasync(fi, operation)
int result; -result of operation (depends)
FILE *fi; -file pointer
int operation; -operation
operation = -1 -returns boolean whether async. is on or off.
0 -turns async OFF
1 -turns async-writes ON
2 -reserved
3 -(internal) waits for async. operation to complete
4 -(internal) don't call with this operation.
usually one calls xasync() with operation 0 or 1 to turn off or
on asyncronous write mode. When ON, another buffer of the same
size is allocated to provide the double buffering asyncronous-writes
need. When on, any write operation which causes the buffer to
flush to the disk will be done asyncronously (e.g. will return before
disk operation is complete). This is only useful if you are not
writing to the disk at full speed. Since the writes are only double-
buffered, writing at full speed WILL cause momentary block conditions
just like normal writing. A good use for asyncronous writes is the
capture function of a modem program.
Future revisions of the library will also have an asyncronous READ
capability.
fi = xattach(fh, bufsize)
FILE *fi; -return file pointer
FileHandle fh; -source AmigaDOS file handle
int bufsize; -buffering size (like xopen()).
This routine will attempt to attach a file pointer to a file handle.
If it succedes, any further I/O should be through XSTDIO functions
and the file pointer rather than AmigaDOS functions through the
File Handle.
fi returns NULL if the buffer could not be allocated.
fh = xdetach(fi)
FileHandle fh; -file handle
FILE *fi; -file pointer
This call deallocates the XSTDIO file pointer and returns a properly
Seek'd file handle. It ALWAYS works.
bool = xsetbuf(fi, newbufsize)
int bool; -did the operatio work?
FILE *fi; -file pointer
int newbufsize; -new buffer size.
This operation resizes a file pointer's buffer(s). If it fails, the
original buffer(s) are still in place. Remember that if xasync() is
on for that file pointer, the actual allocated memory is twice the
requested buffer size.
chars = xgets(fi, buf, n)
int chars; -# bytes in buffer INCLUDING the termination \0.
FILE *fi; -file handle to get data from.
char *buf; -buffer to place data in
int n; -maximum buffer size allowed.
This routine will retrieve a string from the file pointer until it
reaches the end of file or a newline '\n'. The newline is REPLACED
by a \0 before the function returns.
The End Of File occurs when 'chars' is 0.
bool = xputs(fi, buf);
int bool; -did the operation work?
FILE *fi; -file pointer
char *buf; -\0 terminated string
xputs() writes the specified string to the specified file pointer.
The \0 in the string is replaced with a newline '\n' in the output.
c = xgetc(fi);
int c; -returned char or -1
FILE *fi; -file pointer
xgets() gets a single character from a file pointer. -1 is returned
on EOF or error.
bool = xputc(fi, c);
int bool; -did it work?
FILE *fi; -file pointer
char c; -character to write
output a single character to a file. NOTE: Since files are buffered,
you may not get an error until the buffer is flushed.
actual = xread(fi, buf, n);
int actual; -actual bytes read or 0
FILE *fi; -file pointer
char *buf; -buffer to read into
int n; -max # bytes to read
0 is returned on EOF or error. Attempt to read n bytes into a buffer.
The actual number read is returned.
bool = xwrite(fi, buf, n);
int bool; -did the operation work?
FILE *fi; -file pointer
char *buf; -buffer
int n; -bytes to write
Note that xwrite() returns a bool, not the actual number bytes
written.
bool = xflush(fi);
int bool; -sucess?
FILE *fi; -file ptr;
FILE is returned only if the buffer was modified AND the Write()
failed.
newpos = xseek(fi, offset, which);
int newpos; -NEW position AFTER xseek.
FILE *fi; -file pointer
int offset; -offset relative to 'which'
int which; -AMIGA conventions -1(start) 0(current) 1(end)
pos = xtell(fi);
int pos;
FILE *fi;
Self evident: returns the current seek position. Note that this
may not reflect the actual Seek() position of the underlying file
handle.
xclose(fi);
FILE *fi;
close the file pointer AND the underlying file handle. You may pass
this routine a NULL without ill-effects.
xprintf(fi, cs, arg, arg ... )
FILE *fi;
char *cs;
Uses AMIGA.LIB's RawDoFmt. This version of printf outputs to a
file pointer. xprintf() dies with large output strings (>255), so
don't be too fancy. Also note that RawDoFmt is not a full fledged
printf, but should do what you want.
fprintf(fh, cs, arg, arg ... )
long fh;
char *cs;
Same thing as xprintf() except works on AmigaDos File Handles.
ptr = gets(buf)
char *ptr;
char *buf;
gets() uses Input() to get the next line from the programs STDIN.
NULL is returned on EOF or error.
This is rather a slow function, since data is read one-byte-at-a-time.
It works fine for user-input, but if your program expects STDIN to
be a file, you may want to xattach() Input() to a file-pointer and
use xgets().
bool = puts(str)
int bool;
char *str;
Output the \0 terminated string to STDOUT, replacing the \0 with
a newline (\n). Unlike AMIGA.LIB's puts(), this one allows
strings of any size.
---------------------------------------------------------------------------
result = atoi(str)
int result; -resulting integer
char *str; -source string
atoi() converts ascii-decimal integers into integers, stopping at
the first illegal character.
#include <xmisc.h>
bool = openlibs(libs_mask)
int bool; -if all the libraries were openned
int libs_mask; -mask of all libraries to open.
openlibs() is an easy way of openning several run-time libraries at
once. If you have this call in your code, global definitions for
all of the amiga's standard libraries will be automatically
included. You specify a mask of libraries to open (see xmisc.h for
mask #defines). If all the libraries could be openned, TRUE is
returned. If one or more could not be openned, FALSE is returned on
the ones that were able to be openned are closed.
closelibs(libs_mask)
int libs_mask;
close the specified libraries. Only open libraries will be closed.
Thus, you can say: closelibs(-1); to close all the libraries.
bool = wildcmp(wild, name)
int bool;
char *wild;
char *name;
wildcmp() returns TRUE of the wildcard-name matches a normal
string-name:
TRUE = wildcmp("abcd?f", "abcdef");
TRUE = wildcmp("abc*x", "abcd.e.f.x");
FALSE= wildcmp("ab??", "ab");
The wildcard name may consist of any number of '*'s and '?'s.
check32()
Checks to see if the program was compiled using 32-bit ints. If
not, gives an error message and exit()'s.
checkbreak()
resetbreak()
checkbreak() returns true (1) if ^C has been pressed. Once ^C has
been pressed, checkbreak() will always return true until you call
resetbreak() to reset the signal. (checkbreak() does not reset the
signal).
mountrequest(bool)
turn on or off automatic system requestors when your program accesses
unmounted prefixes:
TRUE (default) -system will prompt user to place correct disk
in drive via a requestor when program accesses
unmounted file.
FALSE -if a given file path is not mounted, an error is
returned to the program rather than prompting the
user.
WARNING: Do not exit the program while mountrequest() is set to
FALSE... bad things might happen.
NOTE: You can call mountrequest() with it's current state without
harm. That is, you can call mountrequest(TRUE) when it is already
TRUE, and mountrequest(FALSE) when it is already false.
io_open()
io_close()
long
io_open(device_name, unit, flags, &rreq, &wwreq, req_size, spec1, spec2)
char *device_name -the device name (ex: "serial.device")
int unit -unit #
int flags -OpenDevice flags
struct IOxxxxxx *rreq -address of pointer (will be filled in)
struct IOxxxxxx *wreq -address of pointer (will be filled in)
int req_size -size of above structures
long spec1,spec2 -special arguments for preinitialization
(depends on the device your openning)
EXAMPLE:
----------------------
typedef struct IOExtSer SIO;
#define SERFLAGS (SERF_XDISABLED | SERF_SHARED)
SIO *srr, *swr;
long mask;
mask = io_open("serial.device",0,0,&srr,&swr,sizeof(SIO),SERFLAGS,0);
...
io_close(srr, swr, sizeof(SIO));
----------------------
The structure for rreq and wreq depend on the device you are openning.
You must be sure to specify the correct size.
Some devices, such as the serial device, require certain fields inside
their IO structures to be initialized before the OpenDevice(). Since
io_open() Allocates these structures for you, these extra parameters
must be passed to io_open() via SPEC1 and SPEC2 in the arguments list
as outlined below:
SPEC1 SPEC2
console.device window pointer window structure size
parallel.device parallel flags 0
serial.device serial flags 0
**ALL OTHERS** 0 0
note on audio device: You must ADCMD_ALLOCATE and ADCMD_FREE
manually.
You also pass io_open() the address of two pointers (e.g. **x). These
will be filled in by io_open() to result in a READ and WRITE request
structure, each with it's own reply port, and with it's io_Command
fields initialized to CMD_READ and CMD_WRITE, respectively. You may
specify a NULL for the **WRITE request structure instead of a
**wreq. This will result in only a READ request structure being
set up.
You do not have to use the structures for only CMD_READ and CMD_WRITE,
of course, you can use them for any io command.
a signal MASK with one bit set is returned. This is the signal bit
for the read-request structure (if rreq was NULL, then it is the
signal for the write-request structure). an example mask:
00000000001000000000000000000000 in binary.
0 is returned if the open fails.
io_close(rreq, wreq, size)
specify 0 for the wreq if it doesn't exist (e.g. you passed a
NULL for it in the io_open() ).
----------------------------------------------------------------------------
memory routines. These are not quite automatic. You must call the
routine 'free_memory()' just before you exit if you use 'malloc'.
The binary-zero/set/mov routines are written in assembly for speed.
ptr = malloc(bytes);
char *ptr; -pointer to buffer
int bytes; -#bytes to allocate
NULL is returned if the allocation failed. The pointer returned is on
32-bit boundries (e.g. longword).
free(ptr)
char *ptr;
Free a malloc'd space. Call only with pointer's you have
malloc'd.
free_memory()
Must be called before you exit to free ALL mallocs that have occured .
bzero(s, n)
char *s;
int n;
Zero n bytes starting at s.
bset(s, n, v)
char *s; -start address
int n; -# bytes
int v; -fill value
Set a memory area to 'v'.
bmov(s, d, n)
char *s; -source
char *d; -dest
int n; -# bytes
Move from source to destination. bmov() will properly do a forward or
reverse move depending on where s and d are relative to each other.
--------------------------------------------------------------------------
String routines. Exactly as normal STDIO routines.
len = strlen(str)
int len;
char *str;
return the length of the string.
dest = strcpy(dest, source)
char *source, *dest;
string copy. source and destination must be disjunct.
dest = strncpy(dest, source, maxchars)
char *dest, *source;
int maxchars;
Copy no more than maxchars bytes. This does NOT include the \0.
dest = strcat(dest, source)
Place the source after the destination. Source and where source will
be placed on destination must be disjuct.
dest = strncat(dest, source, n)
Same as strcat, but no more than n chars will be copied, \0 NOT included.
result = strcmp(source, dest)
Compare the source with the destination. Result is:
-1 source < dest
0 source = dest
1 source > dest
result = strncmp(source, dest, n)
Same as strcmp, but a maximum of n chars are compared.
!Funky!Stuff!
fi # end of overwriting check
echo shar: "extracting 'breakup.uue'" '(5480 characters)'
if test -f 'breakup.uue'
then
echo shar: "will not over-write existing file 'breakup.uue'"
else
cat << \!Funky!Stuff! > 'breakup.uue'
begin 644 breakup
M```#\P`````````)``````````@```!Q````;@```=T````C`````@```!0`
M```(````*0````P```/I````<2//````'"/`````)"/(````*$*Y````("QY
M````!"/.````!)/)3J[^VBA`2JP`K&<``*AA``%L(&P`K-'(T<@@:``0T<C1
MR$CG(#!%^0```*Q'^0```"QT`7``$!@FRF`"%-A1R/_\0AH@.0```"0@>0``
M`"@2&%.`;QX,`0`@;_12@B;*8`H2&%.`#`$`(&\$%,%@\D(:8-Q"&D*;(`),
MWPP$2'D````L+P!.N0```&@CP````!!.N0```'@CP````!0CP````!A.N0``
M``!P`"YY````'$YU80``QF$``+`CP````"!"IR\`)$`@*@`D9Q`L>0````@@
M0"(H``!.KO^"(BH`(&<H)#P```/M3J[_XB/`````$"/`````%"/`````&&<*
MY8@@0"EH``@`I$ZY`````'``8`0@+P`$+GD````<+P`L>0````0@.0````AG
M`B)`3J[^8DJY````(&<.3J[_?")Y````($ZN_H8@'TYU2.<!!BX\``.`!RQX
M``1.KO^43-]@@'!D8+!![`!<3J[^@$'L`%Q.KOZ,3G5"N0````A#^0```:P@
M/````!Y.KOW8(\`````(9[9.=0`````#[````!H````!```!N@```:H```&D
M```!:@```5X```%0```!0@```2(```$<```!%@```/8```#D````U````,8`
M``#`````M````*8```!R````;````%0```!.````(````!0````.````"```
M``(````"`````@```,P```$T`````@````<```"N````N@````````/R```#
MZ@```&X``0``````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````````````````````&1O<RYL:6)R87)Y`````_(`
M``/I```!W4Y6__A(YP,`80`"#@RN`````0`(9AQ(>0````!.N0``!Q!8CTAY
M````&$ZY```'$%B/?@&^K@`(;```GB`'(@?E@2!N``S1P2)0$A$,`0`M9@X2
MN0````03P`````1@6"`'(@?E@2!N``S1P2\\```@`$AY````-R\080`!S$_O
M``PL`$J&9Q0O!B\N``QA4%"/+P9A``+26(]@'"`'(@?E@2!N``S1P2\02'D`
M```Y3KD`````4(]*N0````!G#"\Y`````&$``J!8CT*Y`````%*'8`#_7DS?
M`,!.7DYU3E;^]B\\```!`$AN_P`O+@`,80`#@$_O``Q*@&<``19P"2\`2'D`
M``!,2&[_`&$`!5)/[P`,2H!F``#<0>[_"2U(_OP@;O[\$!`,```@9@92KO[\
M8.XM;O[\_O@@;O[X2A!G#A`0#```(&<&4J[^^&#J(&[^^$(0+SD`````80`"
M"%B/0KD`````2CD````$9T8=>0````3^]THN_O=G5G``$"[^]^6`(&X`"-'`
M(E!4B2\N_OPO"6$`!'10CTJ`9Q9P`!`N_O?E@"!N``C1P")0'5'^]V#"+SP`
M`"``2'D```!6+R[^_&$``'Y/[P`,(\``````2KD`````9P#_!B\N_OQ(>0``
M`%A.N0````!0CV``_O!*N0````!G`/[F2&[_`"\Y`````&$``BY0CV``_M).
M7DYU3E;__'``4X`M0/_\4H!G'$AY````8DZY```'$%B/+SP``,-03KD```$\
M6(].7DYU3E;_]$CG`QPJ;@`(*&X`#'P`#*X````!`!!L!G`!+4``$"\\``$`
M`'`>+P!.N0````!0CR9`M_P`````9P``U!`4#```<F86+CP```/M$"P``0P`
M`"MF!BX\```#[1`4#```=V8X+CP```/N$"P``0P``"MF*"\\```#[2\-3KD`
M````4(\L`$J&9Q)P`2\`0J<O!DZY````B$_O``Q*AF8.+P<O#4ZY`````%"/
M+`!*AF=&)H8@+@`0)T``#$*G+P!.N0````!0CR=``!I*@&<<<``O`"\`+P9.
MN0```(A/[P`,)T``%"=``!!@)"\&3KD````<6(].<7`>+P`O"TZY````&%"/
M<`!,WSC`3EY.=2`+(@L@`4S?.,!.7DYU3E8``$CG``0J;@`(N_P`````9S`O
M#6$``?Y8CR\53KD````<6(\O+0`,+RT`&DZY````&%"/<!XO`"\-3KD````8
M4(],WR``3EY.=4Y6__Q(YP,,*FX`""AN``PN+@`0("T`#)"M``2PAVT"(`<L
M`"!M`!K1[0`$+P8O""\,80`"W$_O``R>AMG&W:T`%"`&(BT`!-"!*T``!"(M
M``BR@&P$*T``"!`M`!@````!&T``&$J'9Q0O#6$``5Q8CW``*T``""M```1@
MEDS?,,!.7DYU3E8``"\N``QA``&H6(\O`"\N``PO+@`(80#_8$_O``QP`2\`
M2'D```"&+RX`"&$`_TI/[P`,3EY.=4Y6__Q(YP,,*FX`""AN``PN+@`04X=\
M`+R';$8@+0`$L*T`"&86+PUA2EB/2H!F#$(4<`!,WS#`3EY.=2!,T<8@+0`$
M4JT`!")M`!K3P!`1$(!2K0`4$!`,```*9P12AF"V($S1QD(0(`92@$S?,,!.
M7DYU3E;_^$CG`P0J;@`(+!4O#6$``(18CW``*T``""M```0@+0`0(BT`%+*`
M9Q*2@$*G+P$O!DZY````B$_O``PO+0`,+RT`&B\&3KD````P3^\`#"X`2H=N
M)"`M`!0K0``0<O\O`2\`+P9.N0```(A/[P`,<`!,WR#`3EY.=2`'*T``""(M
M`!32@"M!`!!P`4S?(,!.7DYU3E;__$CG`00J;@`($"T`&`@```!G4"`M`!20
MK0`$+@`@+0`0L(=G%B`'D*T`$$*G+P`O%4ZY````B$_O``PO+0`$+RT`&B\5
M3KD```!,3^\`#"('TH`K00`0$"T`&`(`__X;0``83-\@@$Y>3G5.5O_\2.<`
M!"IN``A*%6<$4HU@^"`-D*X`"$S?(`!.7DYU3E8``$CG``PJ;@`(*&X`#$H5
M9RY*%&<J$!42%+`!9`IP_TS?,`!.7DYU$!42%+`!8PIP`4S?,`!.7DYU4HU2
MC&#.$!42%+`!9LYP`$S?,`!.7DYU3E8``$CG`0PJ;@`(*&X`#"XN`!!*AV<T
M2A5G,$H49RQ3AQ`5$A2P`60*</],WS"`3EY.=1`5$A2P`6,*<`%,WS"`3EY.
M=5*-4HQ@R$J'9P@0%1(4L`%FRG``3-\P@$Y>3G5.5O_\2.<##"IN``@H;@`,
M+BX`$+O,9!8L!U.&(`9*@&L@($S1QB)-T\80D6#L?`"\AVP.($S1QB)-T\80
MD5*&8.Y,WS#`3EY.=0``3E;_^$CG`P!.N0```'@N`"\N``A.N0``!>Q8CRP`
M+P8O+@`(+P=.N0```$Q/[P`,L(9F)'`!+P!(>0```(@O!TZY````3$_O``Q*
M@&<*<`%,WP#`3EY.=7``3-\`P$Y>3G4``````^P````!`````````CX````$
M`````@``!R8````>````+````C`````*`````P``!TH```1@```"*@```>8`
M``'````!!@```*P```!T````)@```!@````-````!````@8```'X```!V```
M`=(```%T```!;````68```%:````S@```,(```"Z````6@```%0````"````
M!@```+(```'L````#@````<```<:```%R```!S@```=2```%,@```SH```.(
M```"W@```R0```4>```%4@``!;0```+(```"\`````4````(```#2@```Y@`
M``.F```"=@```PP````````#\@```^H````C=C$N,#`@8GD@36%T=&AE=R!$
M:6QL;VX`8G)E86MU<"!;+6YS96-T:6]N("XN+ET@9FEL92YB`'(`0V]U;&0@
M;F]T(&]P96X@)7,*`"\J0E)%04M54`!W`&9I;&4Z("5S"@!-55-4($)%($-/
M35!)3$5$(%=)5$@@,S(M8FET($E.5"=S(0`*``H```````/R```#ZP````(`
M``/R```#Z0```!1(YP`Z*&\`%"!O`!@B;P`<1?H`.D_O_W0F3RQY````!$ZN
M_?9P_TH;5\C__$:`9Q(O`$AO``1(5$ZY````3$_O``Q/[P",3-]<`$YU%L!.
M=0```^P````!````!P```#H````````#\@```^D````(+P(D+P`(2&\`#"\"
M+SD````43KD`````3^\`#"0?3G4```/L`````0````$````.`````0````4`
M```4`````````_(```/I````*4CG(`(L>0````A,[P`&``Q.KO_B3-]`!$YU
M```O#BQY````""(O``A.KO_<+%].=4CG,`(L>0````A,[P`.`!!.KO_63-]`
M#$YU``!(YS`"+'D````(3.\`#@`03J[_T$S?0`Q.=0``+PXL>0````A.KO_*
M+%].=2\.+'D````(3J[_Q"Q?3G5(YS`"+'D````(3.\`#@`03J[_ODS?0`Q.
M=0`````#[`````<````!````!@```"`````V````4@```&P```!\````C@``
M``````/R```#Z0````PO#BQY````!$SO``,`"$ZN_SHL7TYU```O#BQY````
M!")O``@@+P`,3J[_+BQ?3G4```/L`````@````$````$````'`````````/R
`
end
!Funky!Stuff!
fi # end of overwriting check
echo shar: "extracting 'my.lib.uue'" '(17995 characters)'
if test -f 'my.lib.uue'
then
echo shar: "will not over-write existing file 'my.lib.uue'"
else
cat << \!Funky!Stuff! > 'my.lib.uue'
begin 644 my.lib
M```#YP````````/I````'4ZY````(DZY`````&````Y.N0```").N0````!/
M[P$,3G4@3Y_\```!#"Z0+V@`"``$0^\`$"])``A(YP`^)DE#Z``0(&@`#"1\
M````<"QY`````$ZN```F;P`<2AMF_)?O`!Q3BR]+`"!,WWP`3G46P$YU```#
M[`````,`````````2@```!(````"`````````^\!```"7V9P<FEN=&8````0
M`0```E]X<')I;G1F`````($```)?4WES0F%S90````$```!0@0```E]7<FET
M90```````0```!B!```"7WAW<FET90`````!````"(,```-?3%9/4F%W1&]&
M;70````!````5@````````/R```#YP````)X9FQU<V@N<0```^@````!=&5X
M=````^D```!"3E;_]$CG!P0J;@`(?`!Z`1`M`"`(````9P``G"`M`!R0K0`,
M+@`@+0`8L(=G+DJM``1G$"!M``1P`R\`+PU.D%"/*@`@!Y"M`!A"IR\`+RT`
M"$ZY`````$_O``Q*E6<:2H5G+B!M``1P!"\`+PU.D%"/*@`L+0`,8!@O+0`,
M+RT`(B\M``A.N0````!/[P`,+``@+0`,L(9G"'H`2H9J`GP`(`?0ABM``!@0
M+0`@`@#__AM``"!P`"M``!`K0``,(`5,WR#@3EY.=4Y6__Q(YP$`+RX`"&$`
M_RA8CRX`2H=G&B!N``A*J``$9Q`B:``$<`,O`"\(3I%0CRX`(`=,WP"`3EY.
M=0`````#[X$```)?4V5E:P````````$```!4@0```E]7<FET90```````0``
M`(@!```"7WAF;'5S:````````0```U]X9FQU<VA?=V%I=````,H````````#
M\@```_(```/H`````61A=&$```/J`````````_(```/R```#Z`````)U9&%T
M80```````^L````````#\@```_(```/G`````WAF:6QB=68N<0```````^@`
M```!=&5X=````^D````D3E;_^$CG`P0J;@`(+"T`""\-3KD`````6(\@+0`8
M(BT`'+*`9Q*2@$*G+P$O!DZY`````$_O``PO+0`4+RT`(B\&3KD`````3^\`
M#"X`2H=N)"`M`!PK0``8<O\O`2\`+P9.N0````!/[P`,<`!,WR#`3EY.=2`'
M*T``$"(M`!S2@"M!`!AP`4S?(,!.7DYU```#[X$```-?>&9L=7-H7W=A:70`
M```!````%($```)?4V5E:P````````(```!D````,($```)?4F5A9```````
M``$```!$`0```E]X9FEL8G5F``````````````/R```#\@```^@````!9&%T
M80```^H````````#\@```_(```/H`````G5D871A```````#ZP````````/R
M```#\@```^<````">&=E=',N<0````/H`````71E>'0```/I````'DY6__Q(
MYP,,*FX`""AN``PN+@`04X=\`+R';$H@+0`,L*T`$&8:+PU.N0````!8CTJ`
M9@Q"%'``3-\PP$Y>3G4@3-'&("T`#%*M``PB;0`BT\`0$1"`4JT`'!`0#```
M"F<$4H9@LB!,T<9"$"`&4H!,WS#`3EY.=0```^^!```"7WAF:6QB=68````!
M````*@$```)?>&=E=',````````````````#\@```_(```/H`````61A=&$`
M``/J`````````_(```/R```#Z`````)U9&%T80```````^L````````#\@``
M`_(```/G`````G!U=',N<0`````#Z`````%T97AT```#Z0```!E.5O_X2.<#
M`$ZY`````"X`+RX`"$ZY`````%B/+``O!B\N``@O!TZY`````$_O``RPAF8D
M<`$O`$AY`````"\'3KD`````3^\`#$J`9PIP`4S?`,!.7DYU<`!,WP#`3EY.
M=0`````#[`````$````!````.@````````/O@0```E]/=71P=70``````0``
M``J!```"7W-T<FQE;@`````!````%H$```)?5W)I=&4```````(```!"````
M*`$```)?<'5T<P`````````````````#\@```_(```/H`````61A=&$```/J
M`````0H```````/R```#\@```^@````"=61A=&$```````/K`````````_(`
M``/R```#YP````)G971S+G$``````^@````!=&5X=````^D````:3E;_^$CG
M`P0J;@`(?@!.N0`````L`"!-T<=P`2\`+P@O!DZY`````$_O``Q*@&<:4H<@
M!U.`($W1P!`0#```#6<(#```"F;.3G%*AV<.(`=3@"!-T<!"$"!-8`*1R"`(
M3-\@P$Y>3G4```/O@0```E]);G!U=````````0```!"!```"7U)E860`````
M```!````)`$```)?9V5T<P`````````````````#\@```_(```/H`````61A
M=&$```/J`````````_(```/R```#Z`````)U9&%T80```````^L````````#
M\@```_(```/G`````WAF:6QE;F\N<0```````^@````!=&5X=````^D````$
M3E8``"!N``@@*``(3EY.=0```^\!```"7WAF:6QE;F\``````````````_(`
M``/R```#Z`````%D871A```#Z@````````/R```#\@```^@````"=61A=&$`
M``````/K`````````_(```/R```#YP````)X<'5T<RYQ`````^@````!=&5X
M=````^D````43E8``"\N``Q.N0````!8CR\`+RX`#"\N``A.N0````!/[P`,
M2H!G(G`!+P!(>0`````O+@`(3KD`````3^\`#$J`9P9P`4Y>3G5P`$Y>3G4`
M``/L`````0````$````N`````````^^!```"7W-T<FQE;@`````!````"H$`
M``)?>'=R:71E``````(````X````'`$```)?>'!U=',````````````````#
M\@```_(```/H`````61A=&$```/J`````0H```````/R```#\@```^@````"
M=61A=&$```````/K`````````_(```/R```#YP````)X<V5E:RYQ`````^@`
M```!=&5X=````^D````]3E;_]$CG#P0J;@`(+BX`#"PN`!`,A@````%L4"H'
M2H9F!-JM`!P@+0`,T(60K0`<*`!M&+BM`!!N$BM$``PK10`<(`5,WR#P3EY.
M=2\-3KD`````6(]P_R\`+P4O+0`(3KD`````3^\`#&`>+PU.N0````!8CW`"
M+P`O!R\M``A.N0````!/[P`,+6T`'/_T<``O`"\`+RT`"$ZY`````$_O``PK
M0``<*T``&"`M`!RPKO_T;#(B+0`4XH$M0/_TD($K0``<;`1"K0`<+PU.N0``
M``!8CR`N__20K0`<*T``#"MN__0`'"`M`!Q,WR#P3EY.=0```^^!```#7WAF
M;'5S:%]W86ET`````@```'````!0@0```E]3965K`````````P```)P```""
M````8H$```)?>&9I;&)U9@````$```#0`0```E]X<V5E:P``````````````
M``/R```#\@```^@````!9&%T80```^H````````#\@```_(```/H`````G5D
M871A```````#ZP````````/R```#\@```^<````">'1E;&PN<0````/H````
M`71E>'0```/I````!$Y6```@;@`(("@`'$Y>3G4```/O`0```E]X=&5L;```
M``````````````/R```#\@```^@````!9&%T80```^H````````#\@```_(`
M``/H`````G5D871A```````#ZP````````/R```#\@```^<````#>&1E=&%C
M:"YQ```````#Z`````%T97AT```#Z0```!-.5O_\2.<!!"IN``@O#4ZY````
M`%B/+BT`""`M`!R0K0`80J<O`"\'3KD`````3^\`#$*M``@O#4ZY`````%B/
M(`=,WR"`3EY.=0`````#[X$```)?>&9L=7-H``````$````0@0```E]3965K
M`````````0```"J!```"7WAC;&]S90`````!````.@$```)?>&1E=&%C:```
M```````````#\@```_(```/H`````61A=&$```/J`````````_(```/R```#
MZ`````)U9&%T80```````^L````````#\@```_(```/G`````WAA='1A8V@N
M<0```````^@````!=&5X=````^D````F3E;__$CG``0,K@````$`#&P&<`$M
M0``,+SP``0``<"HO`$ZY`````%"/*D"[_`````!G6"`N``PK0``40J<O`$ZY
M`````%"/*T``(DJ`9RX@+@`(*T``"'``+P`O`"\M``A.N0````!/[P`,*T``
M'"M``!@@#4S?(`!.7DYU<"HO`"\-3KD`````4(]P`$S?(`!.7DYU``````/O
M@0```U]!;&QO8TUE;0````````(```!"````)($```)?4V5E:P````````$`
M``!D@0```E]&<F5E365M`````0```(8!```"7WAA='1A8V@`````````````
M`_(```/R```#Z`````%D871A```#Z@````````/R```#\@```^@````"=61A
M=&$```````/K`````````_(```/R```#YP````-X<V5T8G5F+G$```````/H
M`````71E>'0```/I````.$Y6__1(YP$\*FX`""XN``P,AP````%L`GX!+PU.
MN0````!8CT*G+P=.N0````!0CRA`E\LD;0`$M?P`````9PY"IR\'3KD`````
M4(\F0+G\`````&=8M?P`````9PBW_`````!G2+7\`````&<:<`,O`"\-3I)0
MCR\M`!0O+0`F3KD`````4(\O+0`4+RT`(DZY`````%"/*TP`(BM+`"8K1P`4
M<`%,WSR`3EY.=;G\`````&<,+P<O#$ZY`````%"/M_P`````9PPO!R\+3KD`
M````4(]P`$S?/(!.7DYU```#[X$```)?>&9L=7-H``````$````>@0```U]!
M;&QO8TUE;0````````(```!&````*H$```)?1G)E94UE;0````0```#0````
MO````)(```""`0```E]X<V5T8G5F``````````````/R```#\@```^@````!
M9&%T80```^H````````#\@```_(```/H`````G5D871A```````#ZP``````
M``/R```#\@```^<````">'=R:71E+G$```/H`````71E>'0```/I````)$Y6
M__Q(YP,,*FX`""AN``PN+@`0("T`%)"M``RPAVT"(`<L`"!M`"+1[0`,+P8O
M""\,3KD`````3^\`#)Z&V<;=K0`<(`8B+0`,T($K0``,(BT`$+*`;`0K0``0
M$"T`(`````$;0``@2H=G&B\-3KD`````6(\L`$J&9IAP`$S?,,!.7DYU<`%,
MWS#`3EY.=0```^^!```"7V)M;W8````````!````-($```)?>&9L=7-H````
M``$```!P`0```E]X=W)I=&4```````````````/R```#\@```^@````!9&%T
M80```^H````````#\@```_(```/H`````G5D871A```````#ZP````````/R
M```#\@```^<````">')E860N<0````/H`````71E>'0```/I````'$Y6__A(
MYP<,*FX`""AN``PN+@`0>@`@+0`0D*T`#"P`O(=O`BP'2H9G)B!M`"+1[0`,
M+P8O#"\(3KD`````3^\`#-G&GH;:AMVM`!S=K0`,2H=G$"\-3KD`````6(]*
M@&<"8+(@!4S?,.!.7DYU``````/O@0```E]B;6]V`````````0```#J!```"
M7WAF:6QB=68````!````6`$```)?>')E860````````````````#\@```_(`
M``/H`````61A=&$```/J`````````_(```/R```#Z`````)U9&%T80``````
M`^L````````#\@```_(```/G`````GAP=71C+G$````#Z`````%T97AT```#
MZ0````A.5@``<`$O`$AN``\O+@`(3KD`````3^\`#$Y>3G4``````^^!```"
M7WAW<FET90`````!````$@$```)?>'!U=&,````````````````#\@```_(`
M``/H`````61A=&$```/J`````````_(```/R```#Z`````)U9&%T80``````
M`^L````````#\@```_(```/G`````GAG971C+G$````#Z`````%T97AT```#
MZ0````Q.5O_^<`$O`$AN__\O+@`(3KD`````3^\`#$J`9PIP`!`N__].7DYU
M</].7DYU``````/O@0```E]X<F5A9````````0```!(!```"7WAG971C````
M`````````````_(```/R```#Z`````%D871A```#Z@````````/R```#\@``
M`^@````"=61A=&$```````/K`````````_(```/R```#YP````)X8VQO<V4N
M<0```^@````!=&5X=````^D````:3E8``$CG``0J;@`(N_P`````9TPO#4ZY
M`````%B/2JT`!&<,(&T`!$*G+PU.D%"/2JT`"&<,+RT`"$ZY`````%B/+RT`
M%"\M`").N0````!0CW`J+P`O#4ZY`````%"/3-\@`$Y>3G4```/O@0```E]X
M9FQU<V@``````0```!B!```"7T-L;W-E```````!````/($```)?1G)E94UE
M;0````(```!:````3`$```)?>&-L;W-E```````````````#\@```_(```/H
M`````61A=&$```/J`````````_(```/R```#Z`````)U9&%T80```````^L`
M```````#\@```_(```/G`````GAA<WEN8RYQ```#Z`````%T97AT```#Z0``
M`().5O_\2.<!!"IN``@@+@`,!(#_____;0``[`R`````!FP``.+E@$[["`)@
M```68```)&```%Q@``#,8```JF```+1*E5;`1`!(@$C`3-\@@$Y>3G5*E6<N
M+PUA``"R6(\O%4ZY`````%B/+RT`%"\M`"9.N0````!0CW``*H`K0``F*T``
M!'`!3-\@@$Y>3G5*E69(<``O`"\`3KD`````4(\N`$J'9RI"IR\M`!1.N0``
M``!0CRM``"9*@&84+P=.N0````!8CW``3-\@@$Y>3G4JAT'Z_RHK2``$<`%,
MWR"`3EY.=2\-8218CTS?((!.7DYU+PUA``!X6(],WR"`3EY.=7``3-\@@$Y>
M3G5.5O_X2.<!#"IN``A^`4J59T80+0`@"````6<\+Q5.N0````!8CR\53KD`
M````6(\H0"`L`""PK``P9P)^`'!$+P`O#$ZY`````%"/$"T`(`(`__T;0``@
M(`=,WS"`3EY.=4Y6_^Q(YP$\*FX`""`M``CE@"1`+SP``0``<$0O`$ZY````
M`%"/)D`@2]#\`!0@""=```HG2P`4)U4`&'!7)T``'"!+T/P`*"A(**H`)"EM
M`"(`!"EM``P`""\-80#_0%B/+@`O"R\J``A.N0````!0CQ`M`"`````"&T``
M("!M`"(K;0`F`"(K2``F(`=,WSR`3EY.=0`````#[X$```-?1&5L971E4&]R
M=``````"````P@```&2!```"7T9R965-96T````"```!5````'2!```#7T-R
M96%T95!O<G0``````0```)R!```#7T%L;&]C365M`````````@```9````"P
M@0```U]786ET4&]R=`````````$```$N@0```E]'971-<V<``````0```3B!
M```"7U!U=$US9P`````!```!W`$```)?>&%S>6YC```````````````#\@``
M`_(```/H`````61A=&$```/J`````````_(```/R```#Z`````)U9&%T80``
M`````^L````````#\@```_(```/G`````GAO<&5N+G$````#Z`````%T97AT
M```#Z0```$A.5O_T2.<#'"IN``@H;@`,?``,K@````$`$&P&<`$M0``0+SP`
M`0``<"HO`$ZY`````%"/)D"W_`````!G``#6$!0,``!R9A8N/````^T0+``!
M#```*V8&+CP```/M$!0,``!W9C@N/````^X0+``!#```*V8H+SP```/M+PU.
MN0````!0CRP`2H9G$G`!+P!"IR\&3KD`````3^\`#$J&9@XO!R\-3KD`````
M4(\L`$J&9T@G1@`(("X`$"=``!1"IR\`3KD`````4(\G0``B2H!G''``+P`O
M`"\&3KD`````3^\`#"=``!PG0``88"0O!DZY`````%B/3G%P*B\`+PM.N0``
M``!0CW``3-\XP$Y>3G4@"TS?.,!.7DYU``````/O@0```U]!;&QO8TUE;0``
M``````(```#&````+H$```)?3W!E;@````````(```"H````@($```)?4V5E
M:P````````(```#>````EH$```)?0VQO<V4```````$```#T@0```E]&<F5E
M365M`````0```00!```"7WAO<&5N`````````````````_(```/R```#Z```
M``%D871A```#Z@````````/R```#\@```^@````"=61A=&$```````/K````
M`````_(```/R```#YP````-R86TZ<W1R;F-M<`````/H`````71E>'0```/I
M````&4Y6``!(YP$,*FX`""AN``PN+@`02H=G-$H59S!*%&<L4X<0%1(4L`%D
M"G#_3-\P@$Y>3G40%1(4L`%C"G`!3-\P@$Y>3G52C5*,8,A*AV<($!42%+`!
M9LIP`$S?,(!.7DYU``````/O`0```E]S=')N8VUP``````````````/R```#
M\@```^@````!9&%T80```^H````````#\@```_(```/H`````G5D871A````
M```#ZP````````/R```#\@```^<````#<F%M.G-T<F-M<``````#Z`````%T
M97AT```#Z0```!5.5@``2.<`#"IN``@H;@`,2A5G+DH49RH0%1(4L`%D"G#_
M3-\P`$Y>3G40%1(4L`%C"G`!3-\P`$Y>3G52C5*,8,X0%1(4L`%FSG``3-\P
M`$Y>3G4```/O`0```E]S=')C;7````````````````/R```#\@```^@````!
M9&%T80```^H````````#\@```_(```/H`````G5D871A```````#ZP``````
M``/R```#\@```^<````#<F%M.G-T<FYC870````#Z`````%T97AT```#Z0``
M`!!.5O_\2.<!'"IN``@H;@`,+BX`$"9-2A5G!%*-8/A*%&<0(`=3ATJ`9P@:
ME%*,4HU@[$(54HT@"TS?.(!.7DYU```#[P$```)?<W1R;F-A=```````````
M```#\@```_(```/H`````61A=&$```/J`````````_(```/R```#Z`````)U
M9&%T80```````^L````````#\@```_(```/G`````````^D````&(&\`!")O
M``@@"$H89OQ3B!#99OQ.=0`````#[P$```)?<W1R8V%T```````````````#
M\@```^<````#<F%M.G-T<FYC<'D````#Z`````%T97AT```#Z0````Y.5O_\
M2.<!'"IN``@H;@`,+BX`$"9-2A1G$"`'4X=*@&<(&I12C%*-8.Q"%5*-(`M,
MWSB`3EY.=0```^\!```"7W-T<FYC<'D``````````````_(```/R```#Z```
M``%D871A```#Z@````````/R```#\@```^@````"=61A=&$```````/K````
M`````_(```/R```#YP````````/I````!2!O``0B;P`($-EF_"`O``1.=0``
M```#[P$```)?<W1R8W!Y```````````````#\@```^<````````#Z0````8@
M;P`$2AAF_)'O``21_`````$@"$YU``````/O`0```E]S=')L96X`````````
M``````/R```#YP````%I;RYQ```#Z`````%T97AT```#Z0```+E.5O_\<``@
M;@`(,"@`'#%\``(`'"%N``P`*"%N`!``)"\(+4#__$ZY`````%B/("[__"!N
M``@Q0``<("@`($Y>3G5.5O_\<``@;@`(,"@`'#%\``,`'"%N``P`*"%N`!``
M)"\(+4#__$ZY`````%B/("[__"!N``@Q0``<("@`($Y>3G5.5O_LD<@O""\(
M+4C__"U(__@M2/_T+4C_\$ZY`````%"/+4#__$J`9P`!/"\\``$``2\N`!Q.
MN0````!0CRU`__1*@&<``2!*K@`89S1P`"\`+P!.N0````!0CRU`__A*@&<`
M`0(O/``!``$O+@`<3KD`````4(\M0/_P2H!G``#F2JX`(&=D2'D`````+RX`
M"&$``910CTJ`9PP@;O_T("X`(!%``$](>0````XO+@`(80`!=%"/2H!G#"!N
M__0@+@`@$4``-4AY````'B\N``AA``%44(]*@&<0(&[_]"%N`"``*"%N`"0`
M)"!N__0A;O_\``XO+@`0+P@O+@`,+RX`"$ZY`````$_O`!`M0/_L2H!F4$JN
M`!AG)B!N__0B;O_P<!\2V%'(__P@;O_P(6[_^``.,7P``P`<(FX`&"*((&[_
M]#%\``(`'")N`!0BB'``(&[__!`H``]R`>&A(`%.7DYU2J[__&<,+R[__$ZY
M`````%B/2J[_^&<,+R[_^$ZY`````%B/2J[_]&<0+RX`'"\N__1.N0````!0
MCTJN__!G$"\N`!PO+O_P3KD`````4(]P`$Y>3G5.5@``2JX`"&<R+RX`"$ZY
M`````%B/(&X`"$JH``YG#"\H``Y.N0````!8CR\N`!`O+@`(3KD`````4(]*
MK@`,9R8@;@`,2J@`#F<,+R@`#DZY`````%B/+RX`$"\N``Q.N0````!0CTY>
M3G5.5@``2.<`#"IN``@H;@`,$!42%+`!9A:``4H`9@IP`4S?,`!.7DYU4HU2
MC&#B<`!,WS``3EY.=0```^P````#`````0```4X```$N```!#@````````/O
M@0```E]$;TE/`````````@```&H````H@0```U]#<F5A=&50;W)T``````(`
M``#:````H($```-?06QL;V--96T````````"````]@```+R!```#7T]P96Y$
M979I8V4``````0```8J!```#7T1E;&5T95!O<G0`````!````I(```)F```"
M"````?:!```"7T9R965-96T````$```"H@```G8```(T```"'H$```-?0VQO
M<V5$979I8V4````!```"4`$```)?:6]?<F5A9``````!```#7VEO7W=R:71E
M````````0@$```)?:6]?;W!E;@```(0!```#7VEO7V-L;W-E```````"0`$`
M``)?<V-M<````````JP````````#\@```_(```/H`````61A=&$```/J````
M#'-E<FEA;"YD979I8V4`<&%R86QL96PN9&5V:6-E`&-O;G-O;&4N9&5V:6-E
M`````````_(```/R```#Z`````)U9&%T80```````^L````````#\@```_(`
M``/G````!&UO=6YT<F5Q=65S="YQ``````/H`````71E>'0```/I````%DY6
M__Q(YP`$0J=.N0````!8CRI`2JX`"&88('S_____(FT`N+/(9PHK2`"X(\D`
M````2JX`"&<6('S_____(FT`N+/(9@@K>0``````N$S?(`!.7DYU``````/L
M`````@````(```!(````+@````````/O@0```U]&:6YD5&%S:P````````$`
M```,`0``!%]M;W5N=')E<75E<W0``````````````````_(```/R```#Z```
M``%D871A```#Z@````````/R```#\@```^@````"=61A=&$```````/K````
M`0```_(```/R```#YP````-R97-E=&)R96%K+G$```/H`````71E>'0```/I
M````!2\\```0`$*G3KD`````4(].=0`````#[X$```-?4V5T4VEG;F%L````
M```!````"@$```-?<F5S971B<F5A:P```````````````_(```/R```#Z```
M``%D871A```#Z@````````/R```#\@```^@````"=61A=&$```````/K````
M`````_(```/R```#YP````-C:&5C:V)R96%K+G$```/H`````71E>'0```/I
M````"'``+P`O`$ZY`````%"/`H```!``5L%$`4B!2,$@`4YU```#[X$```-?
M4V5T4VEG;F%L```````!````"`$```-?8VAE8VMB<F5A:P``````````````
M`_(```/R```#Z`````%D871A```#Z@````````/R```#\@```^@````"=61A
M=&$```````/K`````````_(```/R```#YP````-R86TZ8VAE8VLS,@````/H
M`````71E>'0```/I````#$Y6__QP`%.`+4#__%*`9QQ(>0````!.N0````!8
MCR\\``##4$ZY`````%B/3EY.=0```^P````!`````0```!(````````#[X$`
M``)?<'5T<P````````$````8@0```E]E>&ET`````````0```"8!```"7V-H
M96-K,S(``````````````_(```/R```#Z`````%D871A```#Z@````E-55-4
M($)%($-/35!)3$5$(%=)5$@@,S(M8FET($E.5"=S(0````/R```#\@```^@`
M```"=61A=&$```````/K`````````_(```/R```#YP````-R86TZ=VEL9&-M
M<`````/H`````71E>'0```/I````0TY6_[1(YP`,*FX`""AN``Q"KO^T2A1F
M!DH59P``Y!`52(!(P`R`````/V<``)8,@````"IF``"@#*X````(_[1F&$AY
M`````$ZY`````%B/<`!,WS``3EY.=2`N_[3G@"V-"+@MC`B\4J[_M%*-8*13
MKO^T2J[_M&L6("[_M.>`('8(O!`02@!F!E.N_[1@Y$JN_[1J"G``3-\P`$Y>
M3G4@+O^TYX`@=@BX4H@J2"!V"+Q2B"V("+PH2%*N_[1@`/]42A1F*$JN_[1F
MI'``3-\P`$Y>3G40%!(5L`%G$$JN_[1FC'``3-\P`$Y>3G5*%&<"4HQ*%6<`
M_QQ2C6``_Q9P`4S?,`!.7DYU``````/L`````0````$```!$`````````^^!
M```"7W!U=',````````!````2@$```)?=VEL9&-M<``````````````#\@``
M`_(```/H`````61A=&$```/J````!E1O;R!M86YY(&QE=F5L<R!O9B`G*B<`
M`````_(```/R```#Z`````)U9&%T80```````^L````````#\@```_(```/G
M````!')A;3IC;&]S96QI8G,```````/H`````71E>'0```/I````$4Y6__Q(
MYP`$2_D`````2FX`"F<F""X````+9Q!*E6<,+Q5.N0````!8CT*5,"X`"N)(
M6(T]0``*8-1,WR``3EY.=0`````#[X$```)?1V9X0F%S90````$````*@0``
M!%]#;&]S94QI8G)A<GD````````!````)`$```-?8VQO<V5L:6)S````````
M`````````_(```/R```#Z`````%D871A```#Z@````````/R```#\@```^@`
M```"=61A=&$```````/K`````````_(```/R```#YP````-O<&5N;&EB<RYQ
M``````/H`````71E>'0```/I````)4Y6_[1(YP`,2_D`````2?D```"*<``P
M+@`*+4#_M$IN``IG4`@N````"V<X+Q1(;O^X3KD`````4(](>0```,I(;O^X
M3KD`````4(]*E6840J=(;O^X3KD`````4(\J@$J`9QHP+@`*XDA8C5B,/4``
M"F"J<`%,WS``3EY.=2\N_[1.N0````!8CW``3-\P`$Y>3G4```/L`````@``
M``$````\````$`````$````"````"@````````/O@0```E]S=')C<'D`````
M`0```#2!```"7W-T<F-A=``````!````1H$```-?3W!E;DQI8G)A<GD````!
M````6($```-?8VQO<V5L:6)S```````!````A`$```-?;W!E;FQI8G,`````
M`````````````_(```/R```#Z`````%D871A```#Z@```#5G<F%P:&EC<P!I
M;G1U:71I;VX`97AP86YS:6]N`&1I<VMF;VYT`'1R86YS;&%T;W(`:6-O;@!M
M871H9F9P`&UA=&AT<F%N<P!M871H:65E961O=6)B87,`;6%T:&EE965S:6YG
M8F%S`&QA>65R<P!C;&ES=`!P;W1G;P!T:6UE<@!X,34`>#$V````````````
M"0```!,````=````)@```#$````V````/@```$@```!8````:````&\```!U
M````>P```($```"%+FQI8G)A<GD``````^P````0`````0```,8```#"````
MO@```+H```"V````L@```*X```"J````I@```*(```">````F@```)8```"2
M````C@```(H````````#\@```_(```/H`````G5D871A```````#ZP```!``
M``/O`0```E]'9GA"87-E``````$```1?26YT=6ET:6]N0F%S90``````!`$`
M``1?17AP86YS:6]N0F%S90``````"`$```1?1&ES:V9O;G1"87-E````````
M#`$```1?5')A;G-L871O<D)A<V4`````$`$```-?26-O;D)A<V4````````4
M`0```U]-871H0F%S90```````!@!```$7TUA=&A4<F%N<T)A<V4``````!P!
M```%7TUA=&A)965E1&]U8D)A<T)A<V4````@`0``!5]-871H265E95-I;F="
M87-"87-E````)`$```-?3&%Y97)S0F%S90`````H`0```U]#;&ES=$)A<V4`
M`````"P!```#7U!O=&=O0F%S90``````,`$```-?5&EM97)"87-E```````T
M`0```U]X9FEL;&5R,34``````#@!```#7WAF:6QL97(Q-@``````/```````
M``/R```#\@```^<````"<F%M.F%T;VD```/H`````71E>'0```/I````&TY6
M__A(YR,$*FX`"'X`?``0%0P``"!F!%*-8/00%0P``"UF!%*-?`$0%0P``#!M
M)@P``#EN("`'(@?C@20'YX+2@A052()(PE*-TH($@0```#`N`6#22H9G!B`'
M1(!@`B`'3-\@Q$Y>3G4``````^\!```"7V%T;VD``````````````````_(`
M``/R```#Z`````%D871A```#Z@````````/R```#\@```^@````"=61A=&$`
M``````/K`````````_(```/R```#YP````-C;W!Y<FEG:'0N<0````/H````
M`71E>'0```/I`````````_(```/R```#Z`````%D871A```#Z@```!%#;W!Y
M<FEG:'0@*$,I,3DX-BP@36%T=&AE=R!3:6YG:"!$:6QL;VXL($%L;"!2:6=H
M=',@4F5S97)V960N`````````````^P````!`````0```#X````````#[P$`
M``1?36%T=&AE=T1I;&QO;@``````/@````````/R```#\@```^@````"=61A
M=&$```````/K`````````_(```/R```#YP````````/I````!B!O``0B+P`,
M("\`"&<```@0P5.`9OI.=0```^\!```"7V)S970``````````````````_(`
M``/G`````````^D````,(&\`!")O``@@+P`,9P``'K/(9P``&&\```[1P-/`
M$R!3@&;Z3G42V%.`9OI.=0`````#[P$```)?8FUO=@`````````````````#
M\@```^<````````#Z0````4@;P`$("\`"&<```A"&%.`9OI.=0```^\!```"
M7V)Z97)O`````````````````_(```/G````!')A;3IF<F5E7VUE;6]R>0``
M``/H`````71E>'0```/I````#DY6__Q(YP`$2KD`````9QX@>0`````J4"\H
M``@O"$ZY`````%"/(\T`````8-I,WR``3EY.=0`````#[`````,````"````
M*````!(````*`````````^^!```"7T9R965-96T````!````(`$```-?9G)E
M95]M96UO<GD``````````````_(```/R```#Z`````%D871A```#Z@``````
M``/R```#\@```^@````"=61A=&$```````/K`````0```^\!```#7T%L;&-?
M8F%S90````````````````/R```#\@```^<````"<F%M.F9R964```/H````
M`71E>'0```/I````$4Y6__Q(YP`$2JX`"&<N(&X`")#\``P@""I`(&T`!")5
M((E*E6<((%4A;0`$``0O+0`(+PU.N0````!0CTS?(`!.7DYU```#[X$```)?
M1G)E94UE;0````$````V`0```E]F<F5E``````````````````/R```#\@``
M`^@````!9&%T80```^H````````#\@```_(```/H`````G5D871A```````#
MZP````````/R```#\@```^<````#<F%M.FUA;&QO8P`````#Z`````%T97AT
M```#Z0```!E.5O_\2.<`!"`N``@&@`````Q"IR\`3KD`````4(\J0$JY````
M`&<*('D`````(4T`!"JY`````"M\```````$("X`"`:`````#"M```@CS0``
M```@3=#\``P@"$S?(`!.7DYU```#[X$```-?06QL;V--96T````````!````
M&($```-?06QL8U]B87-E```````%````4````#H````T````*@```"(!```"
M7VUA;&QO8P```````````````_(```/R```#Z`````%D871A```#Z@``````
G``/R```#\@```^@````"=61A=&$```````/K`````````_(```/R
`
end
!Funky!Stuff!
fi # end of overwriting check
exit 0
# End of shell archive