[net.sources] cal.c for Unix and MSDOS

evp@lewey.AIT.COM (Ed Post) (01/24/87)

After all the discussion about a "bug" in unix cal, I decided to post
this version.  It compiles both in the unix environment and under
MSDOS using Lattice C (with a little .ASM assist).  It folds years
between 13 and 99 into the twentieth century, and recognizes months
either by name or number.

Included is the source and uuencoded MSDOS executable.

Usage:	cal [m] [y]
	'm' is 1 thru 12 or any reasonable month name.
	'y' is a year between 100 and 9999.
	Years 13-99 are abbreviations for 1913-1999.
	With no arguments, the current year is printed.
	With only a month given, the next instance of
		that month (this year or next) is printed.
	Year as a single argument gives that whole year.

------------------------cut here------------------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1.  Remove everything above the #! /bin/sh line.
# 2.  Save the resulting test in a file
# 3.  Execute the file with /bin/sh (not csh) to create the files:
#
#		cal.c
#		time.asm
#		cal_exe_uu
#
# Created by evp (Ed Post) on Fri Jan 23 20:52:24 PST 1987
#
if test -f 'cal.c'
then
	echo shar: will not over-write existing file 'cal.c'
else
echo extracting 'cal.c'
sed 's/^X//' >cal.c <<'SHAR_EOF'
X/* #define LATTICE */
X#ifndef LATTICE
X#include <sys/time.h>			/* structures for time system calls */
X#endif
X#include <stdio.h>			/* buffered i/o package */
X#include <ctype.h>			/* upper/lower case macros */
X
X#ifdef LATTICE
Xstruct tm {
X	int	tm_sec;
X	int	tm_min;
X	int	tm_hour;
X	int	tm_mday;
X	int	tm_mon;
X	int	tm_year;
X	int	tm_wday;
X	int	tm_yday;
X	int	tm_isdst;
X};
X#endif
X
Xchar	string[432];
X	
X/*
X *	Day of week headers.
X */
X
Xstatic	char	dayw[] = { " S  M Tu  W Th  F  S" };
X
X/*
X *	Month of year headers.
X */
X
Xstatic	char	*smon[]= {
X	"January",	"February",	"March",	"April",
X	"May",		"June",		"July",		"August",
X	"September",	"October",	"November",	"December",
X};
X
Xmain(argc, argv)
Xint	argc;					/* argument count */
Xchar	*argv[];				/* argument vector */
X{
X	extern	int		exit();		/* terminate our process */
X	extern	int		fprintf();	/* print formatted to file */
X	extern	int		printf();	/* print formatted */
X	extern	long		time();		/* get current system time */
X	extern	struct	tm	*localtime();	/* convert sys to local time */
X
X	extern	pstr();				/* print calendar string */
X
X	register int	m;			/* month */
X	register int	y;			/* year */
X	register int	i;
X	register int	j;
X
X	long		systime;		/* system time */
X	struct	tm	*local;			/* local time */
X
X	/**
X	 *	Get the system time.
X	**/
X	
X	time(&systime);
X	
X	/**
X	 *	Convert it to local time.
X	**/
X	
X	local = localtime(&systime);
X	
X	/**
X	 *	Print the whole year if there was exactly one argument other
X	 *	than the invocation name, and that argument is a number greater
X	 *	than 13, or if there was no argument.
X	**/
X
X	if (argc == 1 || (argc == 2 && (y = number(argv[1])) > 12)) {
X
X		/**
X		 *	Print out the current year if
X		 *	no arguments are specified.
X		**/
X
X		if (argc == 1) {
X		
X			/**
X			 *	Extract the year and adjust it for this century.
X			**/
X
X			y = local->tm_year + 1900;
X
X		}
X	
X		/**
X		 *	Get the year from the command line.
X		**/
X
X		else {
X
X			/**
X			 *	Check for allowable years
X			**/
X
X			if (y < 1 || y > 9999) {
X				usage();
X			}
X
X			/**
X			 *	Allow abbreviations: 86 --> 1986.
X			**/
X
X			if (y < 100) {
X				y += 1900;
X			}
X		}
X
X		/**
X		 *	Print the year header.
X		**/
X
X		printf("\n\n\n				%u\n\n", y);
X
X		/**
X		 *	Cycle through the months.
X		**/
X
X		for (i = 0; i < 12; i += 3) {
X			for (j = 0; j < 6 * 72; j++)
X				string[j] = '\0';
X
X			printf("         %.3s", smon[i]);
X			printf("                    %.3s", smon[i + 1]);
X			printf("                    %.3s\n", smon[i + 2]);
X			printf("%s   %s   %s\n", dayw, dayw, dayw);
X
X			cal(i + 1, y, string, 72);
X			cal(i + 2, y, string + 23, 72);
X			cal(i + 3, y, string + 46, 72);
X
X			for (j = 0; j < 6 * 72; j += 72)
X				pstr(string + j, 72);
X		}
X		printf("\n\n\n");
X	}
X
X	else {
X
X		/**
X		 *	Print the current month if there was exactly one
X		 *	argument other than the invocation name, and that
X		 *	argument is a number less than 13.
X		**/
X
X		if (argc == 2 && (y = number(argv[1])) <= 12) {
X		
X			/**
X			 *	Extract the year and adjust it for this century.
X			**/
X
X			y = local->tm_year + 1900;
X
X			/**
X			 *	Get the month from the command line.
X			**/
X
X			m = number(argv[1]);
X
X			/**
X			 *	If the month has already passed, use
X			 *	next year.
X			**/
X
X			if (m < local->tm_mon+1) {
X				y++;
X			}
X
X		}
X
X		/**
X		 *	Print a specific month from the specified year if
X		 *	there was more than one argument other than the
X		 *	invocation name.
X		**/
X
X		else {
X			/**
X			 *	Get the month from the command line.
X			**/
X
X			m = number(argv[1]);
X	
X			/**
X			 *	Get the year from the command line.  Allow
X			 *	abbreviations of form nn -> 19nn.
X			**/
X
X			y = number(argv[2]);
X			if (y >0 && y < 100) {
X				y += 1900;
X			}
X		}
X
X		/**
X		 *	Generate an error if the month is illegal.
X		**/
X
X		if (m < 1 || m > 12) {
X			fprintf(stderr,
X				"cal:  month must be between 1 and 12.\n");
X			usage();
X		}
X
X		/**
X		 *	Generate an error if the year is illegal.
X		**/
X
X		if (y < 1 || y > 9999) {
X			fprintf(stderr,
X				"cal:  year must be between 1 and 9999.\n");
X			usage();
X		}
X
X		/**
X		 *	Print the month and year header.
X		**/
X
X		printf("   %s %u\n", smon[m - 1], y);
X
X		/**
X		 *	Print the day of week header.
X		**/
X
X		printf("%s\n", dayw);
X
X		/**
X		 *	Generate the calendar for the month and year.
X		**/
X
X		cal(m, y, string, 24);
X
X		/**
X		 *	Print out the month.
X		**/
X
X		for (i = 0; i < 6 * 24; i += 24)
X			pstr(string + i, 24);
X	}
X
X	/**
X	 *	All done.
X	**/
X
X	exit(0);
X}
X
Xint
Xnumber(str)
Xregister char	*str;				/* string to convert */
X{
X	int		cicmp();		/* case-insensitive compare */
X
X	register int	n;			/* number value of string */
X	register char	*s,*p;			/* loop pointers */
X
X	/**
X	 *	Convert the string to a number.
X	**/
X
X	for (n = 0, s = str; *s >= '0' && *s <= '9'; s++) {
X		n = n * 10 + *s - '0';
X	}
X	
X	if (*s == '\0') {
X		return (n);
X	}
X
X	/**
X	 *	If it's not a number, check if it's a month.
X	**/
X
X	for (n=0; n<12; n++) {
X		if (cicmp(str,smon[n]) == 0) {
X			return (n+1);
X		}
X	}
X
X	/**
X	 *	Otherwise, give up and return zero.
X	**/
X	
X	return (0);
X}
X
Xpstr(str, n)
Xchar	*str;
Xint	n;
X{
X	register int	i;
X	register char	*s;
X
X	s = str;
X	i = n;
X
X	while (i--)
X		if (*s++ == '\0')
X			s[-1] = ' ';
X
X	i = n + 1;
X
X	while (i--)
X		if (*--s != ' ')
X			break;
X
X	s[1] = '\0';
X	printf("%s\n", str);
X
X	return;
X}
X
Xcal(m, y, p, w)
Xint	m;						/* month */
Xint	y;						/* year */
Xchar	*p;
Xint	w;
X{
X	register int	d;
X	register int	i;
X	register char	*s;
X
X	/*
X	 *	Number of days per month table.
X	 */
X
X	static	char	mon[] = {
X		0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
X	};
X
X	s = p;
X
X	/**
X	 *	Get the day of the week for January 1 of this `y`ear.
X	**/
X
X	d = jan1(y);
X
X	/**
X	 *	Restore the days-per-month for February and September because
X	 *	they may have been fiddled with.
X	**/
X
X	mon[2] = 29;
X	mon[9] = 30;
X
X	switch ((jan1(y + 1) + 7 - d) % 7) {
X
X		/*
X		 *	non-leap year
X		 */
X	case 1:
X		mon[2] = 28;
X		break;
X
X		/*
X		 *	1752
X		 */
X	default:
X		mon[9] = 19;
X		break;
X
X		/*
X		 *	leap year
X		 */
X	case 2:
X		;
X	}
X
X	for (i = 1; i < m; i++)
X		d += mon[i];
X	d %= 7;
X	s += 3 * d;
X	for (i = 1; i <= mon[m]; i++) {
X		if (i == 3 && mon[m] == 19) {
X			i += 11;
X			mon[m] += 11;
X		}
X		if (i > 9)
X			*s = i / 10 + '0';
X		s++;
X		*s++ = i % 10 + '0';
X		s++;
X		if (++d == 7) {
X			d = 0;
X			s = p + w;
X			p = s;
X		}
X	}
X}
X
Xjan1(y)
Xregister int	y;					/* year */
X{
X	register int	d;				/* day */
X
X	/**
X	 *	Compute the number of days until the first of this year using
X	 *	the normal Gregorian calendar which has one extra day per four
X	 *	years.
X	**/
X
X	d = 4 + y + (y + 3) / 4;
X
X	/**
X	 *	Adjust for the Julian and Regular Gregorian calendars which
X	 *	have three less days per each 400.
X	**/
X
X	if (y > 1800) {
X		d -= (y - 1701) / 100;
X		d += (y - 1601) / 400;
X	}
X
X	/**
X	 *	Add three days if necessary to account for the great
X	 *	calendar changeover instant.
X	**/
X
X	if (y > 1752)
X		d += 3;
X	
X	/**
X	 *	Get the day of the week from the day count.
X	**/
X
X	return (d % 7);
X}
X
Xusage()
X{
X	fprintf(stderr,"Usage:\tcal [m] [y]\n");
X	fprintf(stderr,"\t'm' is 1 thru 12 or any reasonable month name.\n");
X	fprintf(stderr,"\t'y' is a year between 100 and 9999.\n");
X	fprintf(stderr,"\tYears 13-99 are abbreviations for 1913-1999.\n");
X	fprintf(stderr,"\tWith no arguments, the current year is printed.\n");
X	fprintf(stderr,"\tWith only a month given, the next instance of\n");
X	fprintf(stderr,"\t\tthat month (this year or next) is printed.\n");
X	fprintf(stderr,"\tYear as a single argument gives that whole year.\n");
X
X	exit(-1);
X}
X
Xint cicmp(s,pat)
Xchar *s,*pat;
X{
X	char	c1,c2;
X	while (*s) {
X		c1 = *s++;
X		c2 = *pat++;
X		if (isupper(c1)) {
X			c1 = tolower(c1);
X		}
X		if (isupper(c2)) {
X			c2 = tolower(c2);
X		}
X		if (c1 != c2) {
X			return (1);
X		}
X	}
X	return (0);
X}
X
X#ifdef LATTICE
Xlong time()
X{
X}
X
Xstruct tm *localtime()
X{
X	extern long time_bin(),date_bin();
X	long date,time;
X	static struct tm t;
X
X	time=time_bin();
X	date=date_bin();
X
X	t.tm_year=(date >> 16) & 0x0000FFFFL;
X	t.tm_year -= 1900;	/* conform to unix */
X	t.tm_mon=(date >> 8) & 0x000000FFL;
X	t.tm_mon -= 1;		/* unix months start at zero */
X	t.tm_day=date & 0x000000FFL;
X	t.tm_hr=(time >> 24) & 0x000000FFL;
X	t.tm_min=(time >> 16) & 0x000000FFL;
X	t.tm_sec=(time >> 8) & 0x000000FFL;
X
X	return (&t);
X}
X#endif
X
SHAR_EOF
if test 8116 -ne  ` wc -c < cal.c `
then
	echo shar: error transmitting 'cal.c' -- should have been 8116 characters
fi
fi
if test -f 'time.asm'
then
	echo shar: will not over-write existing file 'time.asm'
else
echo extracting 'time.asm'
sed 's/^X//' >time.asm <<'SHAR_EOF'
Xdgroup	group	data
Xdata	segment byte public 'DATA'
Xdata	ends
X
X_prog	segment byte
X	assume cs:_prog,ds:dgroup
X
X; long time_bin()
X;
X; Function: return the current time as a long in binary format:
X; top byte is hours (0-23), next is minutes (0-59), seconds (0-59),
X; and hundreths (0-99).
X;
X	public time_bin
Xtime_bin proc far
X	mov	ah,2Ch		; get-time command
X	int	21h		; BIOS request
X	mov	bx,dx		; ss,hu
X	mov	ax,cx		; hh,mm
X	ret
Xtime_bin endp
X
X; long date_bin()
X;
X; Function:  return the current date as a long: top two bytes are year,
X; followed by month and day in last two bytes.
X;
X	public date_bin
Xdate_bin proc far
X	mov	ah,2Ah		; get-date command
X	int	21h		; BIOS request
X	mov	bx,dx		; year
X	mov	ax,cx		; month and day
X	ret
Xdate_bin endp
X
X_prog	ends
X	end
SHAR_EOF
if test 754 -ne  ` wc -c < time.asm `
then
	echo shar: error transmitting 'time.asm' -- should have been 754 characters
fi
fi
if test -f 'cal_exe_uu'
then
	echo shar: will not over-write existing file 'cal_exe_uu'
else
echo extracting 'cal_exe_uu'
sed 's/^X//' >cal_exe_uu <<'SHAR_EOF'
Xbegin 640 cal.exe
XM35I@ ", K !  !  __\&!  !#T\"    '     0    )    - $   X %@"7
XM !8 VP 6 /@ %@ 5 18 *@$6 *P!%@!3 A8 =0(6 )D"%@"J A8 \ (6  8#
XM%@"K Q8 (P06 #D$%@!\!18 Z046 /H%%@ +!A8 ' 86 "T&%@ ^!A8 3P86
XM & &%@!K!A8 ?@86 #P'%@!#!Q8 3@<6 .T"6P/Q EL#]0); _D"6P/] EL#
XM 0-; P4#6P,) UL##0-; Q$#6P,5 UL#&0-; P\ E@#@ )8   &6  H!E@ 1
XM *< C "G *P IP 2 :< 1@&G !  O "$ +P HP"\ +0 O  & ;P *0&\ %X!
XMO "N ;P =@*\ )$"O "Y KP X0*\ !@ Z@"> .H O@#J "L!Z@!J >H %@ !
XM 3@  0%2  $!9P ! 0T " %A  @!A $( <<!" '; 0@! 0(( 3T"" %K @@!
XMGP(( 0(#" %U P@!@@,( 8@#" &< P@!H@,( 0@%" 'M!0@!+@8( 3P&" %*
XM!@@!Y@8( 70'" &P!P@!" @( 5,(" &-" @!Q0@( ? (" $/ *@!K "H 54!
XMJ $I J@!R@*H 9,#J &Z Z@!%0#H =X!Z 'Z >@!?@7H 1L <0)[ '$"F@!Q
XM LX <0(8 7$"3 %Q G(!<0*, 7$"H %Q K$!<0+@ 7$"(P)Q F\"<0*. G$"
XMR0)Q AL#<0(V W$"40-Q FX#<0*= W$"K@-Q N0#<0("!'$"7 1Q G($<0*R
XM!'$"#@5Q C<%<0)<!7$"H@5Q AH U (- -8"$0#< AP W (U -P"2P#< E8 
XMW )O -P"A0#< I8 W *Q -P"O #< M( W +C -P"_@#< @\!W (7 #H#+  Z
XM T\ .@-O #H#@P Z Z0 .@.T #H#R  Z ^( .@,1 %8#&0!6 RH 5@,     
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                              , ^KA; X[8N 8$
XMCM"\  '[N+ *HQ( C 96 ":A+ "C9@"^@  FB@PR[>,51B:*!#P]=! \('0$
XM/ EU!4E_[3/)ZT20,]M)="Y&)HH$/"!T)CP)="(L,'PH/ E_) /;<B"+TP/;
XM<AH#VW(6 ]IR$C+D ]AR#.O/"]MT!HD>X 7KN[IH .FT (L>X 71ZP/;@?L 
XM G<'NP "B1[@!2:+%@( C- KT/?" /!U"]'BT>+1XM'BZP20NO#_.]-W!KJ7
XM .MYD(D>$ "+XXO1H1  !0\ L033Z(S3 \.C6@"C7@ FBQX" "O8=M6Q!-/#
XMB\,E#P"!X_#_B1Y@ *-B  8SP%"+[(O:B\J#PP2!X_[_*^.+_#;&!6-'XP\V
XMQ@4@1R:*!#:(!49'XO8VQ@4 B\064!X'F@( E@"X $S-(;0)S2&X 4S-(:$0
XM "T$ (O@NJT M G-(;@!3,TAB^R+1@2T3,TA58/L%#LF$ !R!>I$ 0  B^P6
XMC48,4 [H#P>+Y1:-1@Q0#N@)!XOEBTX:@_D!B482B5X0="2#^0)T ^EU <1V
XM'";_= 8F_W0$#NBL HOE/0P B48&?P/I60&#?AH!=0[$=A FBP0%; >)1@;K
XM'HM&!CT! 'P%/0\G?@0.Z%H%BT8&/60 ?06!1@9L!_]V!AZX&P-0F@, IP"+
XMY<=&"   @WX(#'P#Z?L QT8*  "+1@H]L %]#(OPQH30  #_1@KK[(M&"-'@
XMT>"+\/^T[0+_M.L"'K@G U": P"G (OEBT8(T>#1X(OP_[3Q O^T[P(>N#4#
XM4)H# *< B^6+1@C1X-'@B_#_M/4"_[3S AZX3@-0F@, IP"+Y1ZX@ )0'E >
XM4!ZX: -0F@, IP"+Y8M&"$"[2 !3'KO0 %/_=@90#NCI HOEBT8(0$"[2 !3
XM'KOG %/_=@90#NC1 HOEBT8(!0, NT@ 4QZ[_@!3_W8&4 [HN *+Y<=&"@  
XMBT8*/; !?1J,V+O0  ->"KE( %%04P[H"0*+Y8-&"DCKWH-&" /I_/X>N'8#
XM4)H# *< B^7I-P&#?AH"=4K$=APF_W0&)O]T! [H,0&+Y3T, (E&!G\QQ'80
XM)HL$!6P'Q'8<)O]T!B;_= 2)1@8.Z P!B^7$=A FBUP"0SO#B48$?3O_1@;K
XM-L1V'";_= 8F_W0$#NCG (OEQ'8<)O]T"B;_= B)1@0.Z-, B^6%P(E&!GX*
XM/60 ?06!1@9L!XM&!#T! 'P%/0P ?A4>N'H#4!ZX% 90F@H Z@"+Y0[H?@.+
XM1@8] 0!\!3T/)WX5'KBA U >N!0&4)H* .H B^4.Z%P#BT8$T>#1X(OP_W8&
XM_[3I O^TYP(>N,D#4)H# *< B^4>N( "4!ZXTP-0F@, IP"+Y;@8 % >N-  
XM4/]V!O]V! [H:P&+Y<=&"   BT8(/9  ?1J,V+O0  ->"+D8 %%04P[HO "+
XMY8-&"!CKWC/ 4)H)  $!B^6#Q!1=RU6#[! [)A  <@7J1 $  (OLQT8&  "+
XM1AB+7A:)1@J)7@C$=@@FB@0PY#TP (E& 'P?/3D ?QJ+1@:["@#WZR:*'##_
XM \,M, ")1@;_1@CKT<1V"":*!##DA<!U"(M&!H/$$%W+QT8&  "+1@8]# !]
XM+-'@T>"+\/^T[0+_M.L"_W88_W86#NCN HOEA<!U"8M&!D"#Q!!=R_]&!NO,
XM,\"#Q!!=RU6#[ X[)A  <@7J1 $  (OLBT86BUX4BTX8B48,B4X(B5X*BT8(
XM_TX(A<!T&<1V"O]&"B:*!##DA<!UYXMV"B;&1/\@Z]V+1AA B48(BT8(_TX(
XMA<!T&(M&"DB.1@R+\":*'##_@_L@B48*=.#K ,1V"B;&1 $ _W86_W84'KC3
XM U": P"G (OE@\0.7<M5@^P0.R80 '(%ZD0!  "+[(M&'(M>&O]V&(E&#HE>
XM# [H'P&+Y<8&V0,=Q@;@ QZ+7AA#4XE&" [H!P&+Y04' "M&"+L' )GW^^L0
XMQ@;9 QSK%<8&X ,3ZP[K#(/Z G0'@_H!=.;KZ\=&"@$ BT8*BUX6.]A^$(OP
XMBH37 S#D 48(_T8*Z^:+1@B[!P"9]_N+PHE&"+L# /?KBUX, 48,QT8* 0"+
XM=A:*A-<#,.2+7@H[PWT#Z88 @_L#=1R*A-<#,.0]$P!U$8-&"@N*A-<#,.0%
XM"P"(A-<#BT8*/0D ?@^["@"9]_L%, #$=@PFB 2+1@Q CD8.B_")1@Q B48,
XMBT8*NPH F??[@\(P)H@4_T8,BT8(0#T' (E&"'4:QT8(  "+1AR+7AH#7AZ)
XM1AR)1@Z)7AJ)7@S_1@KI9_^#Q!!=RU6#[ 8[)A  <@7J1 $  (OLBT8,!0, 
XMNP0 F??[BUX,@\,$ ]B+1@P]" >)7@1^'RVE!KED )GW^2O8BT8,+4$&N9 !
XMF??YB5X$ ]B)7@2!?@S8!GX$@T8$ XM&!+L' )GW^XO"@\0&7<M5B^P>N.0#
XM4!ZX% 90F@H Z@"+Y1ZX^ -0'K@4!E":"@#J (OE'K@I!% >N!0&4)H* .H 
XMB^4>N$\$4!ZX% 90F@H Z@"+Y1ZX?@10'K@4!E":"@#J (OE'KBP!% >N!0&
XM4)H* .H B^4>N. $4!ZX% 90F@H Z@"+Y1ZX#@50'K@4!E":"@#J (OEN/__
XM4)H)  $!B^5=RU6#[ H[)A  <@7J1 $  (OLQ'80)H(\ '4#Z94 _T80)HH$
XMQ'84_T84)HH<B$8(,.2)1@! B_"*C& ',.V!X0$ B48"B%X)=!N*A& ',.0E
XM 0!T"(M&  4@ .L%BD8(,.2(1@B*1@DPY(E& $"+\(J<8 <P_X'C 0")1@)T
XM&XJ$8 <PY"4! '0(BT8 !2  ZP6*1@DPY(A&"8I&"3#DBEX(,/\[V'4#Z6?_
XMN $ @\0*7<LSP(/$"EW+58OL7<M5@^P,.R80 '(%ZD0!  "+[)H  )4 B48*
XMB5X(F@D E0"Y$ ")1@:)7@31^-';XOHSP(D>006!ZVP'N0@ BT8&BU8$T?C1
XMVN+Z,\"!XO\ B19#!4J+1@:+3@0SP('A_P")#D4%N1@ BT8*B1Y!!8M>"-'X
XMT=OB^C/ @>/_ +D0 (M&"HD>1P6+7@C1^-';XOHSP('C_P"Y" "+1@J)'DD%
XMBUX(T?C1V^+Z,\"!X_\ B19#!8D>2P6,V+M!!8/$#%W+M"S-(8O:B\'+M"K-
XM(8O:B\'+58/L!CLF$ !R!>I$ 0  B^S'!E %  "#/E %('P#Z7\ Q'8,)HH$
XM,.1 B_B*A6 ',.0E" !T!?]&#.OEQ'8,)HH$,.2%P'18H5 %_P90!='@T>"+
XM\(M&#HM>#(F$5 6)G%(%Q'8,)HH$,.2%P(E& '030(OXBH5@!S#D)0@ =07_
XM1@SKWL1V#":*!/]&#";&! "(1@0PY(7 = /I>?_K ,8&_04 L &S L8&( 8&
XMQ@9P",#'!G8( 0"QH,<&>@@" +H! %*B#P:B_ 6(#G@(B YT"(@>(0:('@X&
XMFO, F &+Y26  '0+H X&,.0-! "B#@8>N%(%4/\V4 6: 0 6 (OE,\!0F@D 
XM 0&+Y8/$!EW+58'L%@$[)A  <@7J1 $  (OLC-"-GB !B484B5X2Q+8< 2:*
XM!##DA<!U ^D< 8O&B48 0":*'##_@_LEB88< 8E>"G0#Z=  B_ FBAPP_X/[
XM)74[_X8< 2:*!##DBQX(!DN%VXE&"HD>" 9X#\0V @;_!@(&)H@$,.3KHHS8
XMNP(&4%/_=@J:2 &H 8OEZX\6C48,4!:-1A)0%HU&%E#_MAX!_[8< 9H( .@!
XMB^6)1A +PXE>#G4#Z63_BT80QT8(  ")AAX!B9X< 8M&"(M>##O8?P/I1_^+
XM'@@&2X7;B1X(!G@8BS8"!O\& @:+^(I#%HX&! 8FB 0PY.L7BW8(BD(6,.2,
XMV[D"!E-14)I( :@!B^7_1@CKLJ$(!DB%P*,(!G@3Q#8"!O\& @:+1@HFB 0P
XMY.GH_HS8NP(&4%/_=@J:2 &H 8OEZ=3^@<06 5W+58/L##LF$ !R!>I$ 0  
XMB^R,V+OP!8E&!HE>!(M&!+M8!SO#<Q6.1@:+\":*1 PPY(7 = :#1@02Z^&+
XM1@:+7@2,V;I8!SO!=0([VG4),\ SVX/$#%W+_W8&_W8$_W88_W86_W84_W82
XM#N@' (OE@\0,7<M5@^P..R80 '(%ZD0!  "+[,1V'":*1 R$P'0E,.0E @!T
XM#096N/__4)I( :@!B^7$=APFBD0-,.10FH (" &+Y<1V&":*1 $PY#TK '0$
XM,]OK S/;0R:*!##DB%X,Z04!H6 *#0@ B48 @GX, '0%N ( ZP.X 0"+7@ +
XMV('+  &XI %04_]V%O]V%)I4  @!B^6)1@9 =0DSP#/;@\0.7<NX @!0,\!0
XM,]M3_W8&FOL'" &+Y8)^# !T!;B  .L#N ( B48$Z;, @GX, '0%N ( ZP(S
XMP(L>8 H+V%/_=A;_=A2:5  ( 8OEB48&0'4),\ SVX/$#EW+@GX, '0%N(  
XMZP.X 0")1@3K<()^# !T!;@" .L#N $ BQY@"@O8@<L  8'+  *XI %04_]V
XM%O]V%)I4  @!B^6)1@9 =0DSP#/;@\0.7<N"?@P = 6X@ #K [@" (E&!.L@
XM,\ SVX/$#EW+/7< =*(]<@!U ^E7_SUA '4#Z>;^Z^"+1@;1X-'@B_""O'$(
XM '0?@4X$! "+1AZ+7AR#PQ".P(MV'":)1 J.P":)7 CK#\1V'";'1 H  ";'
XM1 @  (M&!L1V'":(1 TFBT0*)HM<"":)1 (FB1PSP":)1 8FB40$)HE$#HM&
XM!":(1 R,P(O>@\0.7<M5@^P$.R80 '(%ZD0!  "+[,1V"B:*1 PPY"4" '0-
XM!E:X__]0FD@!J &+Y<1V"B:*1 PPY"4, '4:)H-\#@!T$R;_= XF_W0*)O]T
XM")IA W$"B^7$=@HFQT0*   FQT0(   FQT0.   FQD0, ":*1 TPY%":@ @(
XM 8OE@\0$7<M5@>P6 3LF$ !R!>I$ 0  B^R,T(V>) &)1A2)7A+$MB !)HH$
XM,.2%P'4#Z3L!B\:)1@! )HH<,/^#^R6)AB !B5X*= /IX@"+\":*'##_@_LE
XM=4;_AB !)HH$,.3$MAP!)HM<!DLFB5P&A=N)1@IX%2:+7 (FBPPF_P2.PXOY
XM)H@%,.3KF/^V'@'_MAP!_W8*FD@!J &+Y>N$%HU&#% 6C4824!:-1A90_[8B
XM ?^V( &:" #H 8OEB480"\.)7@YU ^E9_XM&$,=&"   B88B 8F>( &+1@B+
XM7@P[V'\#Z3S_Q+8< 2:+7 9+)HE<!H7;>!HFBUP")HL,)O\$B_B*0Q:.PXOY
XM)H@%,.3K&(MV"(I"%C#D_[8> ?^V' %0FD@!J &+Y?]&".NKQ+8< 2:+1 9(
XM)HE$!H7 >!<FBT0")HL<)O\$BTX*CL FB \P[>G,_O^V'@'_MAP!_W8*FD@!
XMJ &+Y8O(Z;7^@<06 5W+58/L!CLF$ !R!>I$ 0  B^S'1@0  (M&!#T4 'T:
XMNQ( ]^N,V[GP!0/(4U&::0*\ (OE_T8$Z]['1@0  (-^!!1]#_]V!)J " @!
XMB^7_1@3KZ_]V$/]V#O]V#)H+ -0"B^6#Q 9=RU6#[ 0[)A  <@7J1 $  (OL
XMBT8*A<!X%CT4 'T1T>#1X(OPBH1P"##D)8  =0_'!H *"0 SP#/;@\0$7<N+
XM1@K1X-'@C-NY< @#R(O#B]F#Q 1=RU6#[ X[)A  <@7J1 $  (OLQT8&  "+
XM1@8]% !]%='@T>"+\(J$< @PY(7 = 7_1@;KXX-^!A1U#L<&@ H8 +C__X/$
XM#EW+BT8&T>#1X(S;N7 ( \B+\:&0"B4 @(M.&#/!B488)0" B5X,B78*= 6X
XM$ #K C/ #8  Q'8*)H@$BT88)0, ZU;$=@HFB@0PY U  ":(!.M7BT88)0@ 
XM= 6X" #K C/ #2  Q'8*)HH<,/\+V":('.LVQ'8*)HH$,.0-8  FB 3K)L1V
XM"B;&! #'!H *%@"X__^#Q Y=RST" '36/0$ =+ ]  !TF^O:Q'84)HH$,.2%
XMP'40Q'8*)L9$ 0&+1@:#Q Y=R\=&"   BT8(/1@ ?4*["@#WZXS;N< ( \A!
XM4U'_=A;_=A2:  #6 HOEA<!U'8M&"+L* /?KB_"*A, (Q'X*)HA% 8M&!H/$
XM#EW+_T8(Z[;$=@HFQD0! (M&&"4  G0-_W86_W84FKD F &+Y8M&&"4# %#_
XM=A;_=A2:( "8 8OEQ'8*)HE$ H,^0 H =#N+1A@E  -T%S/ 4/]V%O]V%)H$
XM )@!B^7$=@HFB40"@SY "@!T0\<&@ H" ,1V"B;&! "X__^#Q Y=RXM&&"4 
XM!3T !74CQ'8*)O]T IH\ )@!B^7'!H *$0#$=@HFQ@0 N/__@\0.7<N+1@:#
XMQ Y=RU6#[ 8[)A  <@7J1 $  (OLBT80)0" #0$#BUX0@>/_?U-0_W8._W8,
XM#NC)_8OE@\0&7<M5@^P<.R80 '(%ZD0!  "+[(M&*(7 >0['!H *%@"X__^#
XMQ!Q=R_]V(@[H0?V+Y8E&&@O#B5X8=0BX__^#Q!Q=R\1V&":*1 $PY.GQ HM&
XM*#T! '\#Z9< /8  ?@6X@ #K XM&*!Z[L E3HK )F@8 VP*+Y<=&"   QT8*
XM @"@L DPY(M>"#O#?E*+1@K_1@J+\(J$L F(1@8PY#T- '43_T8(BT8FBW8D
XM _..P";&! KK*8I&!C#D/1H =0?'1@@  .L8BT8(_T8(BUXFBW8D _"*1@:.
XMPR:(!.NBN H 4)IX -P"B^6+1@B#Q!Q=R[C< KL$ +G< KIX (E&$HE.%HE6
XM%(E>$.L8N-P"NZ0 N=P"NL4 B482B4X6B584B5X0Q'88)HH$,.0E$ !T-,=&
XM"   BT8(.T8H?1^+1@C_1@B+7B:+3B0#R(E. (E> O]>$,1V ":(!.O9BT8(
XM@\0<7<O'1@@  (M&"#M&*'P#Z>( _UX0B$8&,.3IP0"X#0!0_UX4B^6X"@!0
XM_UX4B^6+1@B)1@! BUXFBW8D W8 CL,FQ@0*B48(@\0<7<N#?@@ =+2X" !0
XM_UX4B^6X( !0_UX4B^6X" !0_UX4B^7KE[@- %#_7A2+Y;@* %#_7A2+Y3/ 
XM@\0<7<N+1@C_1@B+7B:+=B0#\(I&!H[#)H@$,.0]( !]&KA> %#_7A2+Y8I&
XM!C#D!4  4/]>%(OEZ4?_BD8&,.10_UX4B^7I.?\: &($"  _! T #P0*  \$
XMO@P +CN$P 1U!2[_I,($@^X$>>_KE8M&"(/$'%W+,\"#Q!Q=R_]V*/]V)O]V
XM),1V&";_= *:4P"8 8OEB48(@SY "@!T"+C__X/$'%W+Q'88)HH$,.0E$ !T
XM"(M&"(/$'%W+,\")1@J)1@R+1@J+7@@[V'YB_T8*BUXFBW8D _".PR:*!(A&
XM!C#DZS^+1@HK1@A(,]N%P'D!2[D! %%34/]V(@[HA *+Y8M&#(/$'%W+Z[B+
XM1@S_1@R+7B:+=B0#\(I&!H[#)H@$ZZ ]#0!TFST: '2WZ]R#?@P =0F#?@@ 
XM= /I/_^+1@R#Q!Q=R[C__X/$'%W+]03? NX$FP/N!(OP@_X%<P?1YB[_I,8%
XMZ]Y5@^P6.R80 '(%ZD0!  "+[(M&(H7 >0['!H *%@"X__^#Q!9=R_]V' [H
XM\_F+Y8E&% O#B5X2=0BX__^#Q!9=R\1V$B:*1 $PY.F^ ;C< KMX (E&"(E>
XM!NL:N-P"N_$ B48(B5X&ZPRXW *[Q0")1@B)7@;'1@H  (M&"HM>(CO8?CW_
XM1@J+7B"+=AX#\([#)HH$B$8$,.0]"@!U%L1V$B:*!##D)1  =0FX#0!0_UX&
XMB^6*1@0PY%#_7@:+Y>NYBT8*@\067<O$=A(FB@0PY"4( '03N ( 4#/ 4#/;
XM4_]V' [H- &+Y<1V$B:*!##D)1  ="[_=B+_=B#_=AXF_W0"FG0 F &+Y8E&
XM"H,^0 H = BX__^#Q!9=RXM&"H/$%EW+QD8% #/ B48*B48,B48.BT8*BUXB
XM.]A^>_]&"HM>((MV'@/PCL,FB@2(1@0PY#T* '41BD8%,.0]#0!T!\9&! W_
XM3@J+1@R)1@! BW8 BEX$B)RP"3V  (E&#(A>!7RO4!ZXL E0Q'82)O]T IIT
XM )@!B^6)1A"#/D * '0(BT8*@\067<N+1A !1@['1@P  .E[_X-^# !T)?]V
XM#!ZXL E0Q'82)O]T IIT )@!B^6)1A"#/D * '0%QT80  "+1@J#Q!9=RXM&
XM(H/$%EW+QP: "A, N/__@\067<NI!BT&.P9)!LL'B_"#_@5S!]'F+O^DX0?K
XMV%6#[ P[)A  <@7J1 $  (OL_W82#NCM]XOEB48*"\.)7@AU"[C__[O__X/$
XM#%W+Q'8()HI$ 3#DA<!T"3/ ,]N#Q Q=R_]V&/]V%O]V%,1V"";_= *:E0"8
XM 8OEB48&B5X$@SY "@!T$<<&@ H6 +C__[O__X/$#%W+BT8&BUX$@\0,7<M5
XM@^P*.R80 '(%ZD0!  "+[/]V$ [H:/>+Y8E&" O#B5X&=0BX__^#Q I=RS/ 
XMQ'8&)HI< 3#_A=N)1@1U%R;_= *:/ "8 8OE@SY "@!T!<=&!/__Q'8&)L8$
XM (M&!(/$"EW+58OL_W8(_W8&FKD F &+Y8,^0 H = 6X__]=RS/ 7<M5B^S'
XM!D *   >Q58&BTX*M#S-(1]S Z- "EW+58OLQP9 "@  'L56!HM&"K0]S2$?
XM<P.C0 I=RU6+[,<&0 H  (M>!K0^S2%S Z- "EW+58OLQP9 "@  BUX&BTX,
XM'L56"+0_S2$?<P6C0 HSP%W+58OLQP9 "@  BUX&BTX,'L56"+1 S2$?<P6C
XM0 HSP%W+58OLQP9 "@  BT8,M$*+7@:+3@J+5@C-(7,#HT *B]B+PEW+58OL
XMQP9 "@  'L56!K1!S2$?<P.C0 I=RU6+[,<&0 H  ![%5@:+1@JT0XM.#,TA
XM'W,#HT *B\%=RU6+[(M>!K@ 1,TAB\)=RU6#[ @[)A  <@7J1 $  (OLQ'8.
XM)HI$###D)3  = BX__^#Q A=R\1V#B:#? X =1\FBD0,,.0E! !U% 96#NA"
XM XOEA<!T"+C__X/$"%W+Q'8.)HI$###D)00 = ?'1@8! .LMQ'8.)HI$###D
XM)0( = BX__^#Q A=R\1V#B:*1 PPY T! ":(1 PFBT0.B48&Q'8.)HI$#3#D
XM_W8&)O]T"B;_= A0FI("" &+Y87 B48$>1#$=@XFBD0,,.0-(  FB$0,@WX$
XM '40Q'8.)HI$###D#1  )HA$#(M&!(7 ?A;$=@XFB40$)HM$"B:+7 @FB40"
XM)HD<Q'8.)HI$###D)3  = BX__^#Q A=R\1V#B:+1 1()HE$!(7 >!,FBT0"
XM)HL<)O\$CL FB@\P[>L._W80_W8.#NC%_HOEB\B+P8/$"%W+58/L#CLF$ !R
XM!>I$ 0  B^R+1A3$=A8FBEP,,/^!XS  B48)= BX__^#Q Y=R\1V%B:#? X 
XM=6XFBD0,,.0E! !U8P96#NCU 8OEA<!T"+C__X/$#EW+Q'86)HI$###D#0( 
XM)HA$#":+1 XFB40&2":)1 :%P'@6)HM$ B:+'";_!(M.%([ )H@/,.WK$?]V
XM&/]V%O]V% [H9?^+Y8O(B\&#Q Y=R\1V%B:*1 PPY"4$ '0\@WX4_W4',\"#
XMQ Y=RXM&%,1V%B:*7 TP_\=&"P$ _W8+%HU.!E%3B$8&FN %" &+Y<=&%/__
XMB48'Z:  Q'86)HI$###D)0$ = BX__^#Q Y=R\1V%B:*1 PPY T" ":(1 R#
XM?A3_=$ F@WP& 'XY)HM$!D@FB40&A<!X%B:+1 (FBQPF_P2+3A2.P":(#S#M
XMZQ'_=AC_=A;_=A0.Z*W^B^6+R,=&%/__Q'86)HL$)BM$"(E&"X7 =!XFBD0-
XM,.3_=@LF_W0*)O]T"%":X 4( 8OEB48'ZP7'1@<  (-^!_]U$L1V%B:*1 PP
XMY T@ ":(1 SK&(M&!SM&"W00Q'86)HI$###D#1  )HA$#,1V%B:+1 XFB40&
XM)HM$"B:+7 @FB40")HD<BT84/?__=#$FBUP&2R:)7 :%VW@5)HM< B:+#";_
XM!([#B_DFB 4PY.L/_W88_W86_W84#NCO_8OEQ'86)HI$###D)3  = BX__^#
XMQ Y=RX-^"?]U!S/ @\0.7<N+1@F#Q Y=RU6#[ 0[)A  <@7J1 $  (OLQ'8*
XM)H-\#@!T$B:*1 PPY"4( '4',\"#Q 1=R_\VH J:90%Q HOEQ'8*)HE$ B:)
XM'":)1 HFB5P("\-U#L<&@ H, +C__X/$!%W+H: *Q'8*)HE$#B:*1 PPY"7S
XM_R:(1 PSP":)1 8FB40$@\0$7<M5@^PZ.R80 '(%ZD0!  "+[#/ QT84___'
XM1A8@ ,1V0":*'##_@_LMB48.B488B480B482=0FX 0#_1D")1@[$=D FB@0P
XMY(E& $"+\(J$8 <PY"4$ '1-@WX ,'4%QT86, #$=D#_1D FB@0PY"4/ (E&
XM&,1V0":*!##D0(OXBH5@!S#D)00 =!N+1AB["@#WZ_]&0":*'##_@>,/  /#
XMB488Z\_$=D FB@0PY#TN '4Y_T9 QT84  #$=D FB@0PY$"+^(J%8 <PY"4$
XM '0;BT84NPH ]^O_1D FBAPP_X'C#P #PXE&%.O/Q'9 )HH$,.0]; !U";@!
XM /]&0(E&$,=&(   QT8>  #$=D FB@0PY.DR X-^$ !T(<1V2":+1 (FBQPF
XM@P0$CL FBT\"CL FBQ>)3B2)5B+K(,1V2":+1 (FBQPF@P0"CL FBP\STH7)
XM>0%*B4XBB58DBT8DA<!Y4_=6)/=>(H->)/_'1A(! .M"@WX0 '0AQ'9()HM$
XM B:+'":#! 2.P":+3P*.P":+%XE.)(E6(NL;Q'9()HM$ B:+'":#! *.P":+
XM#S/ B48DB4XBQT8("P"+1@A(B_")1@B+1B2+7B(SR;H* (EV )H- .T"@\(P
XM@]$ BW8 B%(FBT8DBUXB,\FZ"@":#0#M HE&)(E>(HM&) M&(G6Z@WX2 74-
XMBT8(2(OPQD(F+8E&"(S0C5XFBTX( ]FZ"P KT8E&((E6#(E>'NDN H-^$ !T
XM(<1V2":+1 (FBQPF@P0$CL FBT\"CL FBQ>)3B2)5B+K&\1V2":+1 (FBQPF
XM@P0"CL FBP\SP(E&)(E.(L=&" @ BT8(2(OPBUXDBTXB,]N!X0\ B_F*G5 *
XMB%HFN00 BUXDBU8BT?O1VN+ZB5XD@>/_#XE&"(E6(HE>)(M&) M&(G6^C-"-
XM7B:+3@@#V;H( "O1B48@B58,B5X>Z8H!@WX0 '0AQ'9()HM$ B:+'":#! 2.
XMP":+3P*.P":+%XE.)(E6(NL;Q'9()HM$ B:+'":#! *.P":+#S/ B48DB4XB
XMQT8("P"+1@A(B_"+7B2+3B(SVX'A!P"#P3"#TP"(2B:Y P"+7B2+5B+1^]':
XMXOJ)7B2!X_\?B48(B58BB5XDBT8D"T8B=;Z,T(U>)HM." /9N@L *]&)1B")
XM5@R)7A[IY@"#?A3_=07'1A3( ,=&#   BT8,BUX4.]A^*,1V2":+7 (FBSR.
XMPR:+10*.PR:+-0-V#([ )HH<,/^%VW0%_T8,Z\[$=D@FBT0")HL<)H,$!([ 
XM)HM/ H[ )HL7B4X@B58>Z8( C-"-7B;'1@P! ,1V2":+3 (FBQ0F@P0"B48@
XMCL&+\B:+!(A&)HE>'NM8QT8< @#K4<=&'   ZTK'1AP! .M#,\ SVX/$.EW+
XM9@ <!&4 %01G  X$8P#D W, @ -O -P">  X G4 ?0%D !X!OB  +CN$+ 1U
XM!2[_I"X$@^X$>>_KO8M&( M&'G4#Z=  BT88A<!T!3M&#'T&BT8,B488BT8,
XM*488QT8(  "#?@X =$R+1@Q(A<")1@QX'HM&"/]&"(M>1HMV1 /PQ'X>_T8>
XM)HH%CL,FB 3KUXM&&$B%P(E&&'ADBT8(_T8(BUY&BW9$ _"+1A:.PR:(!.O=
XMBT882(7 B488>!B+1@C_1@B+7D:+=D0#\(M&%H[#)H@$Z]V+1@Q(A<")1@QX
XM'HM&"/]&"(M>1HMV1 /PQ'X>_T8>)HH%CL,FB 3KUXM&",1V3":)!(M&0HM>
XM0$.#Q#I=RX-^%/]U!<=&% 8 @WX4%'P%N!, ZP.+1A2)1@Q %HU>)E,6C5X2
XM4Q:-7AI3_W8<4,1V2";_= (F_S2:  #Y HOEQ'9()H,$"(S3C4XFBU8:A=*)
XM1@R)3AZ)5@B)7B!Y _=>"(-^' )U%H-^# !T"H-^" 9\!#/ ZP,SP$")1AR#
XM?@P = /_3AHSP(E&"(-^$@!T _]&"(-^' !T(8M&%$"+7@@#PXM>&H7;B48(
XM> ,!7@B#?A0 =#'_1@CK+(M&% 4&  %&"(M&&H7 >03WV.L#BT8:/6, B48*
XM?@/_1@B!?@KG WX#_T8(@WX. '4JBT88.T8(?B*+1@@I1AB+1AA(A<")1AAX
XM$<1V1/]&1(M&%B:(!/]&".OD@WX2 '0*Q'9$_T9$)L8$+8-^' !U ^GX (M&
XM&H7 >6W$=D2+QHE& $ FQ@0PB_")1D1 )L8$+HE&1(M&%$B%P(E&%'D#Z;<!
XMBT8:0(7 B48:>0S$=D3_1D0FQ@0PZ]N+1@Q(A<")1@QX%XMV1/]&1,1^'O]&
XM'B:*!8Y&1B:(!.NYQ'9$_T9$)L8$,.NMBT8:_TX:A<!X+HM&#$B%P(E&#'@7
XMBW9$_T9$Q'X>_T8>)HH%CD9&)H@$Z]3$=D3_1D0FQ@0PZ\B#?A0 = K$=D3_
XM1D0FQ@0NBT842(7 B484>0/I' &+1@Q(A<")1@QX%XMV1/]&1,1^'O]&'B:*
XM!8Y&1B:(!.O0Q'9$_T9$)L8$,.O$BT8,2(7 B48,>!>+=D3_1D3$?A[_1AXF
XMB@6.1D8FB 3K"L1V1/]&1";&!##$=D3_1D0FQ@0NBT842(7 B484>"Z+1@Q(
XMA<")1@QX%XMV1/]&1,1^'O]&'B:*!8Y&1B:(!.O3Q'9$_T9$)L8$,.O'Q'9$
XMB\:)1@! )L8$18M>&H7;B49$>0Z+\/]&1";&!"WW7AKK"L1V1/]&1";&!"O'
XM1@P+ (M&#$B+\(E&#(M&&KL* )GW^X/",(A2)HM&&IGW^XE&&H-^# E_V8-^
XM&@!UTXM&##T+ 'T6BW9$_T9$_T8,B_B*0R:.1D8FB 3KXH-^#@%U*HM&&#M&
XM"'XBBT8(*488BT882(7 B488>!'$=D3_1D2+1A8FB 3_1@CKY(M&",1V3":)
XM!(M&0HM>0$.#Q#I=RU6#[ 0[)A  <@7J1 $  (OLH7(*BQYP"HL.=@J+%G0*
XMB0Y^"@O*HWH*B19\"HD>> IU"+C__X/$!%W+Q#9X"B;'1 (  ";'!   H7X*
XMBQY\"B:)1 8FB5P$,\"#Q 1=RU6#[ ([)A  <@7J1 $  (OL,\!0#N@' (OE
XM@\0"7<M5@^P*.R80 '(%ZD0!  "+[(M&$(7 >0BX__^#Q I=RS/ ,]O'1@B 
XM #/)4;H !%*C=@JC<@J)'G0*B1YP"IH* #H#B^6)1@8+PXE>!'4(N/__@\0*
XM7<N+1@:+7@2+3@@STH7)>0%*HW(*B0YT"HD6=@J)'G *BT802(E&$(7 ="8S
XMP%"[  13F@H .@.+Y0O#=!2+1@@SVX7 >0%+ 09T"A$>=@KKSP[HUOXSP(/$
XM"EW+58/L!#LF$ !R!>I$ 0  B^RY P"A?@J+'GP*T>/1T.+Z@\0$7<M5@^P(
XM.R80 '(%ZD0!  "+[(M&#C/;4U")1@2)7@8.Z P B^6:"0!) X/$"%W+58/L
XM&#LF$ !R!>I$ 0  B^R+1B"+7AXSR3/2F@< 3 -_"8O!B]J#Q!A=RXM&'@4(
XM (M>((/3 "T! (/; (E& (O#BUX ,\FZ" ":#0#M HS9OG@*CL$FBU0"B486
XMC$8.CL$FBP2)1@B)5@J)7A2)=@R+1@H+1@AU ^FF ,1V"":+1 8FBUP$BTX6
XMBU84F@< 3 -\;CO!=0([VG43)HM$ B:+',1V#":)1 (FB1SK-<1V"":+1 0K
XM1A0FBUP&&UX6)HE<!B:)1 2Y P#1X-'3XOJ+RXO0C,"+WIH$ $X#B48*B5X(
XMBT84*09\"HM>%AD>?@J+1@J+7@B:"0!) X/$&%W+BT8*BUX(CL FBT\"CL F
XMBQ>)1@Z)3@J)5@B)7@SI3_^Y P"+1A:+7A31X]'0XOI04YH* #H#B^6)1A*)
XM7A +PW4#Z7X H78*"P9T"G4:BT82BTX6BU84HW(*B0YV"HD6= J)'G *ZTNY
XM P"A=@J+'G0*T>/1T.+ZB\B+TZ%R"HL>< J:! !. XM.$HM6$(E&"HO!B5X(
XMB]J+3@J+5@B: @!1 W4.BT84 09T"HM>%A$>=@J+1A*+7A":"0!) X/$&%W+
XM,\ SVX/$&%W+58/L"#LF$ !R!>I$ 0  B^R+1A(SVU-0_W80_W8.B48$B5X&
XM#N@' (OE@\0(7<M5@^P@.R80 '(%ZD0!  "+[(M&+(M>*C/),]*:!P!, W\(
XMN/__@\0@7<N+1BB+7B:+3BJ#P0B+5BR#T@"#Z0&#V@")1A:+PHE>%(O9,\FZ
XM" ":#0#M KD# (E&'HE>'-'CT=#B^HO(B].+1A:+7A2:! !. XM.' $.? J+
XM5AX1%GX*C-F^> J.P2:+5 *)1AJ,1@Z.P2:+!(E&!(E6!HE>&(EV#(M&!HM>
XM! O#=0/IPP&Y P".1@8FBT<&)HM7!-'BT=#B^HO(C,":! !. XE&"HM&&HE>
XM"(M>&(S!BU8$F@( 40-S+<1V%":)3 (FB12+1AZ+7APFB40&)HE<!(S B][$
XM=@PFB40")HD<,\"#Q"!=RXM&!HM>!(M.&HM6&)H" %$#=4F.P":+3P*.P":+
XM%\1V%":)3 (FB12+1AR.1@8F T<$BUX>BWX$)A-=!HY&%B:)7 8FB40$C,"+
XMWL1V#":)1 (FB1PSP(/$(%W+BT86BUX4BTX*BU8(F@( 40-S%HM&'"D&? J+
XM7AX9'GX*N/__@\0@7<N+1A:+7A2+3@J+5@B: @!1 W0#Z9P Q'8$)HM$ B:+
XM' O#="J+1AJ+7A@FBTP")HL4F@( 40-V%HM&'"D&? J+7AX9'GX*N/__@\0@
XM7<N+1AS$=@0F 40$BUX>)A%<!B:+1 (FBQP+PW1!BT8:BUX8)HM, B:+%)H"
XM %$#=2V.P":+3P2.1@8F 4P$CL FBU<&CD8&)A%4!H[ )HM' B:+'XY&!B:)
XM1 (FB1PSP(/$(%W+BT8&BUX$BTX*BU8(B48.CL FBT<"B5X,)HL?B48&B4X2
XMB580B5X$Z3#^BT86BUX4Q'8,)HE$ B:)'([ )L=' @  CL FQP<  (M&'HM>
XM'(MV%":)1 8FB5P$,\"#Q"!=RU6+[/]V"O]V"/]V!II8 0  B^5=RU6#[ 0[
XM)A  <@7J1 $  (OLQ'8.)HH$,.3$=@HFBAPP_SO8=1@FB@0PY(7 =0<SP(/$
XM!%W+_T8*_T8.Z]3$=@XFB@0PY,1V"B:*'##_*]B+PX/$!%W+58OL'L56!K0*
XMS2$?7<M5@^P$.R80 '(%ZD0!  "+[+@( %":!P!5 XOEB$8"A,!T!S#D@\0$
XM7<NX" !0F@< 50.+Y8/$!%W+58/L!#LF$ !R!>I$ 0  B^RX 0!0F@< 50.+
XMY8A& H3 = <PY(/$!%W+N $ 4)H' %4#B^6#Q 1=RU6#[ ([)A  <@7J1 $ 
XM (OLBD8(,.10N ( 4)H' %4#B^6*1@@PY(/$ EW+58/L CLF$ !R!>I$ 0  
XMB^RX P!0F@< 50.+Y8/$ EW+58/L CLF$ !R!>I$ 0  B^R*1@@PY%"X! !0
XMF@< 50.+Y8I&"##D@\0"7<M5@^P".R80 '(%ZD0!  "+[(I&"##D4+@% %":
XM!P!5 XOEBD8(,.2#Q )=RU6#[ 2+[(E.  O*=0<SP#/;Z9H B48""\-U!S/)
XM,]+IC "+3@"+1@*+\(7V>1+WT/?;'?__>0DSP#/),]+K;Y S\8EV #/VA<EY
XM!_?1]]J#V?]U'872>!F_( #1X]'0T=8[\G(#*_)#3W7P,\F+UNLAOQ  T>/1
XMT-'6._%R"W4$.\)R!2O"&_%#3W7HB\Z+T#/ ]T8  (!T!_?0]]L=___W1@( 
XM@'0']]'WVH/9_X/$!%W+58/L*(OLQT8   #'1@P  ,1V+B:+1 :%P'D%@4X 
XM ( E_W]U%HOX)@M\!'4.)@M\ G4()@L\=0/I@ "Q!-/H+?X#B48.)HL,)HM<
XM B:+1 0FBW0&,]*_!0#1[M'8T=O1V=':3W7S#0" B48$B5X&B4X(B58*QT8,
XM  "+=@Z+SH7V=&EY$(/& W@3O@$ Z#L#_T8.Z^7HJ@+_1@SK#[X$  %V#N@E
XM ^@$ _].#/=&! " =<?_3@[HO0+K\3/V@4X  $ SR?=&  ! =2&+1@0+1@9U
XM"(M&" M&"G01Z,\"A<EU"H/^ 74%_TX,Z^^ P3"(2A1&@_X4?,K'1A ! (M&
XM-(MV,H7 = NY 0"+1@Q( _!X+;D4 (/^$GTEB\Z*0A4$!3PZ?!K&0A4P_D(4
XMBD(43GGO_T8,_TX0@WXT '0!0<1^/HMV$#/;BD(4)H@%0T<[V7T21H/^%'SN
XML# FB 5'0SM>,GSV,\#W1@  @'0(]T8  $!U 4C$=CHFB02+1@S$=C8FB03W
XM1@  0'0",\F+P8/$*%W+58/L*(OL,\")1@")1@R)1@*)1@Z)1@2)1@:)1@B)
XM1@KH-P(\,'4'@4X  "#K\CPM=0B!3@  @.@@ CPP?#@\.7\T@4X  "")1A"+
XM1@(I1@SW1@0 \'0%_T8,Z]OHN0&+1A E#P !1@J#5@@ @U8& (-6! #KP3PN
XM=0R+1@*%P'5"_T8"Z[$\170$/&5U->C) 3PK= D\+74(@4X  !#HN0$\,'P>
XM/#E_&B0/B480BT8.Z$X! T80B48./?\/<M_1Z.OT]T8  "!U$#/ Q'8V)HD$
XMBT82@\0H7<N+1@[W1@  $'0"]]@!1@R+1@0+1@8+1@@+1@IU ^F  ,=&#CX$
XM]T8$ (!U".C8 /].#NOQBT8,A<!T&W@1O@0  78.Z!8!Z/4 _TX,Z]?H@@#_
XM1@SKSXM&#H7 >$$]_P=_-[$$T^")1@Z+1@2+7@:+3@B+5@J*UHKQBLV*ZXK?
XMBOB*Q+\# -'HT=O1V=':3W7U)0\ "T8.ZPVX\'_K C/ ,]LSR3/2Q'8Z]T8 
XM (!T PT @":)1 8FB5P$)HE, B:)%+@! ,1V-B:)!(M&$H/$*%W+OD  ,\"+
XM7@2+3@:+5@B+?@K1Y]'2T='1T]'0/0H <@0M"@!'3G7JB5X$B4X&B58(B7X*
XMPXM&"M'@B48*BT8(T=")1@B+1@;1T(E&!HM&!-'0B48$PXO8,\G1X-'1T>#1
XMT0/#@]$ T>#1T<,SR;\& (M#!(E+!.C<_XM;! /#@]$ B4,$3T]YZ,.+1@2+
XM7@:+3@B+5@K1Z-';T=G1VDYU]8E&!(E>!HE."(E6"L.#?BX = F+1B['1BX 
XM ,/_7C*)1A+_3C!U!H%.   (P_=&   (= .X___#58/L!CLF$ !R!>I$ 0  
XMB^R+1@Z+7@R+#F( BQ9@ )H' $P#?@DSP#/;@\0&7<NA7@"+'EP BTX.BU8,
XMB48$B5X"F@0 3@.+3@PI#F  BU8.&19B *-> (D>7 "+1@2+7@*:"0!) X/$
XM!EW+58/L##LF$ !R!>I$ 0  B^R+1A(SVU-0#NAX_XOEB48*B5X("\-T#8M&
XM"IH) $D#@\0,7<NX__\SVY.:"0!) X/$#%W+58/L!#LF$ !R!>I$ 0  B^RX
XM 0!0H5X BQY< (L.6@"+%E@ F@D 5@,!'F  $09B (D.7@")%EP @\0$7<M1
XML033P(O()0\ @>'P_P/9%0  B\N!X0\ D]'KT=C1Z]'8T>O1V-'KT=B+V5G+
XM4#/!6%!X#RO!=0XSP#O:= AW TCK PW_?X7 6,M1L033P(O(@>'P_R4/  /9
XM%0  60/:$\$E#P"Q!-/(B]/3RH'B_P\+PH'C#P#+4%-14E8S]M'@T=;1X-'6
XMT>#1UM'@T=8#V(/6 (O&,_;1X='6T>'1UM'AT=;1X='6 ]&#U@"+SCO:&\%U
XM CO:7EI96UC+58OLBF8&BD8*BU8(S2&T %W+58OL45*: @!9 Y&'VIH" %D#
XMD8?:*]H;P8M6!C/)F@T [0):65W* @!1L033P(O(@>'P_R4/  /9%0  6<L 
XM             $QA='1I8V4@0R R+C P                            
XM                                                            
XM                             $EN=F%L:60@<W1A8VL@<VEZ90T*)$EN
XM=F%L:60@22]/(')E9&ER96-T:6]N#0HD26YS=69F:6-I96YT(&UE;6]R>0T*
XM)"HJ*B!35$%#2R!/5D521DQ/5R J*BH-"B0                         
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                        (%,@($T@5'4@(%<@5&@@($8@(%, 2F%N=6%R
XM>0!&96)R=6%R>0!-87)C: !!<')I; !-87D 2G5N90!*=6QY $%U9W5S= !3
XM97!T96UB97( 3V-T;V)E<@!.;W9E;6)E<@!$96-E;6)E<@"5 EL#G0); Z8"
XM6P.L EL#L@); [8"6P.[ EL#P ); \<"6P/1 EL#V0); ^("6P,*"@H)"0D)
XM)74*"@ @(" @(" @(" E+C-S " @(" @(" @(" @(" @(" @(" @)2XS<P @
XM(" @(" @(" @(" @(" @(" @("4N,W,* "5S(" @)7,@(" E<PH "@H* &-A
XM;#H@(&UO;G1H(&UU<W0@8F4@8F5T=V5E;B Q(&%N9" Q,BX* &-A;#H@('EE
XM87(@;75S="!B92!B971W965N(#$@86YD(#DY.3DN"@ @(" E<R E=0H )7,*
XM   ?'1\>'QX?'QX?'A]5<V%G93H)8V%L(%MM72!;>5T*  DG;2<@:7,@,2!T
XM:')U(#$R(&]R(&%N>2!R96%S;VYA8FQE(&UO;G1H(&YA;64N"@ ))WDG(&ES
XM(&$@>65A<B!B971W965N(#$P,"!A;F0@.3DY.2X*  E996%R<R Q,RTY.2!A
XM<F4@86)B<F5V:6%T:6]N<R!F;W(@,3DQ,RTQ.3DY+@H "5=I=&@@;F\@87)G
XM=6UE;G1S+"!T:&4@8W5R<F5N="!Y96%R(&ES('!R:6YT960N"@ )5VET:"!O
XM;FQY(&$@;6]N=&@@9VEV96XL('1H92!N97AT(&EN<W1A;F-E(&]F"@ )"71H
XM870@;6]N=&@@*'1H:7,@>65A<B!O<B!N97AT*2!I<R!P<FEN=&5D+@H "5EE
XM87(@87,@82!S:6YG;&4@87)G=6UE;G0@9VEV97,@=&AA="!W:&]L92!Y96%R
XM+@H                                                         
XM                                                            
XM                                                            
XM                                      @                     
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM                                                            
XM         " @(" @(" @("@H*"@H(" @(" @(" @(" @(" @(" @2! 0$! 0
XM$! 0$! 0$! 0$(2$A(2$A(2$A(00$! 0$! 0@8&!@8&! 0$! 0$! 0$! 0$!
XM 0$! 0$! 0$0$! 0$!""@H*"@H(" @(" @(" @(" @(" @(" @(" A 0$! @
XM(" @(" @(" @*"@H*"@@(" @(" @(" @(" @(" @("!($! 0$! 0$! 0$! 0
XM$! 0A(2$A(2$A(2$A! 0$! 0$!"!@8&!@8$! 0$! 0$! 0$! 0$! 0$! 0$!
XM 1 0$! 0$(*"@H*"@@(" @(" @(" @(" @(" @(" @("$! 0$"          
XM                                                            
XM                                                          %C
XM;VXZ       !0T]..@       G!R;CH       )04DXZ       ";'-T.@  
XM     DQ35#H       )L<'0Z       "3%!4.@       FQP=#$Z      ),
XM4%0Q.@     #875X.@       T%56#H       -C;VTZ       #0T]-.@  
XM     V-O;3$Z      -#3TTQ.@     #<F1R.@       U)$4CH       -P
XM=6XZ       #4%5..@      !&YU;#H       1.54PZ       $;G5L;#H 
XM    !$Y53$PZ                                                
XM                                                            
XM                                                            
XM                                                   P,3(S-#4V
XM-S@Y04)#1$5&                                                
XM                                       "                  !P
XM1                    P)#3 (   0!0P   @ $!EA#15A)5   6 $$!5A#
XM3U9&  !$ 00%7T)!4T5; Q( ! 9?24Y!345; Q0 ! 9?34)!4T5; U@ ! 9?
XM34Y%6%1; UP ! 9?35-)6D5; V  ! 9?3TY!345; S0 ! 1?4%-06P-4  0$
XM7U1/4%L#$  $!%]615); P(  P-#04P$!$U!24X6  $ !CT %@ 2  9# !8 
XM'0 &2P 6 "@ !E( %@!:  98 !8 8  &8  6 &P !F8 %@!N  9G !8 >P &
XM;@ 6 '\ !F\ %@"'  9W !8 C  &?0 6 )L !GX %@"I  9_ !8 M@ &@0 6
XM +T !H( %@#?  :# !8 _  &A  6 !D!!H8 %@ N 0:' !8 10$&B  6 %T!
XM!HH %@!V 0:+ !8 @P$&C  6 )<!!HT %@"= 0:0 !8 L $&F  6 +,!!IX 
XM%@#2 0:D !8 VP$&JP 6 .\!!JP %@#^ 0:W !8  0(&O  6  ,"!L, %@ 4
XM @;$ !8 * (&Q0 6 #0"!LT %@ Y @;/ !8 1@(&T  6 %<"!M< %@!; @;9
XM !8 : (&V@ 6 'D"!N$ %@!] @;G !8 G0(&[0 6 *X"!O, %@## @;T !8 
XMT (&]0 6 .0"!OL %@#J @;^ !8 ] ($!DY534)%4A8 ^0(&"P$6  H#!@P!
XM%@ P P8/ 18 10,&$ $6 %8#!A<!%@!> P88 18 :P,&&0$6 (D#!B$!%@"2
XM P0$4%-44A8 G@,&*P$6 *\#!BP!%@"U P8N 18 P0,&+P$6 ,L#!C !%@#:
XM P8R 18 X@,&- $6 .L#!C4!%@#U P8V 18 "P0&. $6  T$!CD!%@ 5! 8[
XM 18 )P0$ T-!3!8 + 0&4 $6 #T$!E8!%@!#! 9= 18 4@0&7@$6 %<$!F !
XM%@!<! 9F 18 > 0&9P$6 'T$!FT!%@!_! 9N 18 A 0&=P$6 (8$!G@!%@"C
XM! 9Y 18 K@0&>@$6 +P$!GL!%@#,! 9\ 18 Y 0&?0$6 /0$!GX!%@#X! : 
XM 18 !04&@0$6  T%!H(!%@ <!0:# 18 ( 4&A $6 #L%!H4!%@ ^!0:& 18 
XM2@4&AP$6 $\%!H@!%@!8!0:+ 18 9 4&C0$6 &H%! 1*04XQ%@!O!0:8 18 
XM@ 4&GP$6 )0%!J !%@"?!0:A 18 J@4&J0$6 +X%!JH!%@#%!0:P 18 R04$
XM!55304=%%@#9!0:U 18 W 4&M@$6 .T%!K<!%@#^!0:X 18 #P8&N0$6 " &
XM!KH!%@ Q!@:[ 18 0@8&O $6 %,&!KX!%@!D!@;! 18 ;P8$!4-)0TU0%@!Q
XM!@;% 18 @@8&Q@$6 (X&!L<!%@"4!@;( 18 G08&R0$6 +H&!LL!%@#5!@;,
XM 18 [P8&S@$6  H'!L\!%@ ;!P;2 18 (P<$!%1)3446 "H'!MH!%@ M!P0(
XM3$]#04Q424T6 "\'!N !%@! !P;A 18 10<&XP$6 % '!N0!%@!A!P;E 18 
XM:0<&Y@$6 'X'!N<!%@"#!P;H 18 CP<&Z0$6 *P'!NH!%@#%!P;L 18 W@<$
XM!E-44DE.1UL#T  #!%1)344$"$1!5$5?0DE.E0 )  0(5$E-15]"24Z5    
XM PA?34%)3E8R3 0%7TU!24Z6  ( ! 1!4D=#6P-0!00$05)'5EL#4@4#!5-4
XM04-+! 9?4U1!0TM; ^ % P904DE.5$8$!E!224Y41J<  P #"$9/4$5.5C),
XM! 5&3U!%3KP  P $!T9214]014Z\ '< ! 9&0TQ/4T6\ &D"! 1?24]"6P/P
XM!0,'1E!224Y41@0'1E!224Y41NH "@ #!$58250$!$58250! 0D  P5#5%E0
XM100&7T-465!%6P-@!P,'24]3,58R3 0$3U!%3@@!5  $!4-214%4" %> @0$
XM4D5!1 @!D@($!5=2251%" '@!00%3%-%14L( ?L'! 5#3$]310@!@ @$!E5.
XM3$E.2P@!Y @$!5]51D)36P-P" 0%7T1.0E-; \ ( P=)3U,P5C),! 9?1D-(
XM1TV8 =( ! =?1D-,3U-%F $\  0'7T9#4D5!5)@!!  $!5]&1T1)F 'S  0&
XM7T9/4$5.F $@  0&7T9214%$F %3  0%7T9235:8 ;D ! 9?1E-%14N8 94 
XM! =?1E=2251%F %T  0&7T]315)26P- "@,$24]3,@0&7T9)3$)&J $"  0&
XM7T9,4T)&J %( 0,%7U!&350$!5]01DU4Z $(  ,%1DU/1$4$!E]&34]$15L#
XM8 H#!$U%33($!E)35$U%37$"#@ $!D%,3$U%37$";@ $!D),1$U%37$"C0 $
XM!E-)6DU%37$"/P$$!D=%5$U%37$"90$$!4=%5$U,<0*3 00&4DQ3345-<0)A
XM P0%4DQ334QQ I #! 5?4$]/3%L#< H$!5]-14Q46P-X"@,%7T58250$!5]%
XM6$E4U (+  ,%15)23U($!4524DY/6P. "@,&24]-3T1%! =?24]-3T1%6P.0
XM"@,&4U120TU0! 935%)#35#6 @   P9?0T=%5%,$!E]#1T544]L"!@ #!$E/
XM4S $!5]#1T54W ($  0&7T-'151%W (^  0%7T-0553< G@ ! 5?04=%5-P"
XMI  $!5]!4%54W +%  0%7TQ0553< O$  P9"549325H$!U]"549325I; Z *
XM P5#6$0S,P0%0UA$,S/M @T  P5#6%9&1 0%0UA61$;Y I4!! 5#6%9&1/D"
XM   #!$U%33$$!4Q30E)+.@,*  0$4T)22SH#=@ $!%)"4DLZ [L  P5#6$Y-
XM. 0%0UA.33A) PD  P5#6$,S,P0%0UA#,S-, P<  P5#6$$S. 0%0UA!,SA.
XM P0  P5#6$,X. 0%0UA#.#A1 P(  P1"1$]3! 1"1$]350,'  ,%0UA3.#@$
XM!4-84S@X5@,)  ,%0UA6.#,$!4-85C@S60,"  ,'1$5&24Y%<P0&)%-44E0D
X(   "  <    )
X 
Xend
SHAR_EOF
if test 27318 -ne  ` wc -c < cal_exe_uu `
then
	echo shar: error transmitting 'cal_exe_uu' -- should have been 27318 characters
fi
fi
# end of shell archive
exit 0
-- 
Ed Post -- hplabs!lewey!evp
American Information Technology    (408)252-8713