[alt.sources] Psroff 2.0 Part 06 of 16

clewis@ecicrl.UUCP (Chris Lewis) (11/17/90)

Submitted-by: Chris Lewis <clewis@ecicrl.uucp>
Archive-name: psroff2.0/Part06

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then feed it
# into a shell via "sh file" or similar.  To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix@uunet.uu.net if you want that tool.
# Contents:  Makefile dt.c fonts.lj/S.24.pk.UU lib/lethead.ps
#   lib/ps.lib
# Wrapped by clewis@ecicrl on Fri Nov 16 23:36:00 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
echo If this archive is complete, you will see the following message:
echo '          "shar: End of archive 6 (of 16)."'
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
  echo shar: Extracting \"'Makefile'\" \(12208 characters\)
  sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X#	Copyright 1985, 1986, 1987, 1988, 1989, 1990 Chris Lewis
X#		All Rights Reserved
X#
X#	This makefile requires System V compatible "make".  *Not* V7
X#	vanilla BSD or Ultrix or Sun.  Most modern systems will have
X#	a copy of the SV one somewhere (eg: .../s5bin/make).
X#
X#    Permission to copy and further distribute is freely given provided
X#    this copyright notice remains intact and that this software is not
X#    sold for profit.
X#
X#	Project:	Generic Troff drivers
X#	Module:		Makefile
X#	Author: 	Chris Lewis
X#	Specs:		Makefile for Generic Troff drivers
X#	Note:		This is a System V Makefile, so you may
X#			have some problems making a few of the items.
X#
X#ident  "@(#)Makefile: 2.2 Copyright 90/08/10 15:22:08 Chris Lewis"
X
X#	Use s5make on Ultrix and Sun!
X
X#	Set to where you want the user-interfaces to go
XBINDIR	= /usr/lbin
X#BINDIR	= /usr/tmp/bin
X
X#	Testing type (default postscript (ps)):
X#	Use lj for laserjet.
XTTYPE	= ps
X
X#	Libraries for Troff2 internals, created if it doesn't exist.
X#	This *must* be a directory all by itself with no other stuff
X#	in it.
XLIBDIR	= /usr/lib/troff2
X#LIBDIR = /usr/tmp/troff2
X
X#	Directory for Laserjet fonts.
XLJF	= $(LIBDIR)/lib/lj
X
X#	nroff/troff macro directory for tmac.t2.
XT2DIR	= /usr/lib/tmac
X
X#	Where your real macros are
XRTMACDIR = /usr/lib/tmac
X#RTMACDIR = /usr/tmp/tmac
X
X#	upper level man directory, with subdirectories man1, man2 etc.
XMANDIR	= /usr/man/l_man
X#MANDIR	= /usr/tmp/man
X
X#	Change this at your peril - your troff *must* support -F!
X#	(font width files (ft??) are placed under FONTDIR/<width>/ft??)
X#	(see lib/psrofflib.S)
XFONTDIR	= /usr/lib/font
X#FONTDIR = /usr/tmp/font
X
X#	Comment this out if you don't have shared libraries ala 386/ix
XLIBFLAGS = -lc_s
X
X#	Bourne shell.  *All* Bourne shells with the exception of extremely
X#	braindamaged ones (such as Ultrix or vanilla BSD) will work fine.
X#	Ultrix/Dynix may need the ... s5bin/sh one.  Korn or bash
X#	*should* work just fine, but I've never tested 'em.
X#
X#	This is also here for make, but if you have SHELL defined in your
X#	*own* environment, you can't trust this to work anyways.
X#
XSHELL	=	/bin/sh
X
X#	Try "make testbug"  If make stops, uncomment IGNORESH and
X#	try "make testbug" again.  If it still stops, complain to your
X#	vendor - your shell is BADLY broken.
X#IGNORESH = set +e ;
X
X#	How to ensure that shell scripts use the *right* shell.
X#	"#! /bin/sh" may work for you.  ": /bin/sh" may work for you.
X#
X#	Frankly, none of this crap is necessary on a sane O/S.
X#	(Even Xenix gets this right for crying out loud!  But *noooo*
X#	Not Ultrix or Sun or Dynix BSD universe....)
X#
X#	": /usr/bin/sh5" works for Ultrix.
X#	Do not use $(SHELL) in this line because if your environment has
X#	SHELL defined, it may *override* the above SHELL definition.
X#
X#	If you have to get a "#" into STARTSHELL, the Makefile won't
X#	like it.  In that case, if you have a System V compatible echo
X#	(one that understands \nnn), use:
X#	STARTSHELL = "`echo '\043! <your shell here>'`"
X#	If you don't have a System V compatible echo (eg: Ultrix or
X#	pure BSD), use this instead:
X#	STARTSHELL = `cat STARTSHELL`
X#	then create a file called STARTSHELL with the right stuff
X#	in it.  Eg: echo "#! <your shell here>" > STARTSHELL
X#
X#	System V usually:
XSTARTSHELL = : /bin/sh
X#	System V echo compliance, but needs #!: (Xenix?)
X#STARTSHELL = `echo '\043! /bin/sh'`
X#	Pure BSD (ala Ultrix) echo "#! /bin/sh" > STARTSHELL" first.
X#STARTSHELL = `cat STARTSHELL`
X
X#	Whether you need "cc -c"'d font width tables for troff.
XCOMPILE	=
X
X#	Compile flags needed to compile things on your machine.
X#	Usually just -O
X#
X#	PROFBUG is for 386/ix 1.0.6 mcrt making a mistake on argument
X#	vector on entry to main.  Only troff2.c has the additional parts
X#	to make profiling work on 386ix.  You'd normally want just -p
X#	and/or -g.
X#
X#CCFLAGS = -p -g -DPROFBUG
X#	Chris's wierd, not yet quite working NULL dereference checker
X#CCFLAGS	= -O -Ya,`pwd/t` -g -DNULLCHECK
X#	Chris's other wierd, but working, NULL dereference checker.
X#CCFLAGS	= -O `pwd`/ifile
XCCFLAGS = -O
X
X#	If you're using gcc or something else, change this:
XCC	= cc
X
X#	Do not comment any of the following out.  If you aren't going
X#	to use TeX PK fonts with HP Laserjet output, just NEVER execute
X#	makebuildljfonts.
X#
X#	If you have Rick Richardson's sfp2pk, set it's full path here:
X#	Only of interest for LJ/buildfonts.  If you don't have sfp2pk,
X#	leave this alone, the code won't try to run it.
XSFP2PK	= /usr4/public/bin/sfp2pk
X#	If you have TeX fonts onboard, list the directories that
X#	contain them.  Only of interest for LJ/buildfonts.
X#	You can always set this to "/", it'll just take a long time, but
X#	it will find ALL PK's on your system.
XPKFONTS	= /usr/lib/font/devjet /usr5/texfonts/fonts
X#	Where you want to build fonts, set this to the name of the
X#	directory where you want to make them.  Caution: this could be
X#	enormous...  (5000+ blocks)
XNEWFONTS = /tmp/newfonts
X
X#	Dinna touch from here on
X
X.SUFFIXES: .S .S~
X
X.S~:
X	@rm -f $@
X	$(GET) -p $(GFLAGS) $< | ./sedscript > $@
X	@chmod 444 $@
X
X.S~.S:
X	@rm -f $@
X	$(GET) -p $(GFLAGS) $< > $@
X	@chmod 444 $@
X
X.S:
X	rm -f $@
X	./sedscript < $@.S > $@
X	@chmod 444 $@
X
X#	Main stuff:
X
XMAIN	= troff2.o opt.o utils.o t2conf.o cattab.o debug.o
X
X#	Drivers:
X
XBACKENDS = lj.o pk.o pkc.o ps.o dt.o
X
X#	Creation of sedscript for parameterization.
X
XSEDSCRIPT =	"sed -e 's;%%LIBDIR%%;$(LIBDIR);g' \
X		     -e 's;%%LJF%%;$(LJF);g' \
X		     -e 's;%%STARTSHELL%%;'\"$(STARTSHELL)\"';g' \
X		     -e 's;%%COMPILE%%;$(COMPILE);g' \
X		     -e 's;%%FONTDIR%%;$(FONTDIR);g' \
X		     -e 's;%%MANDIR%%;$(MANDIR);g' \
X		     -e 's;%%CCFLAGS%%;$(CCFLAGS);' \
X		     -e 's;%%CC%%;$(CC);' \
X		     -e 's;%%LIBFLAGS%%;$(LIBFLAGS);' \
X		     -e 's;%%SFP2PK%%;$(SFP2PK);' \
X		     -e 's;%%PKFONTS%%;$(PKFONTS);' \
X		     -e 's;%%NEWFONTS%%;$(NEWFONTS);' \
X		     -e 's^%%IGNORESH%%^$(IGNORESH)^' \
X		     -e 's;%%RTMACDIR%%;$(RTMACDIR);g'"
X
XDEFINES	= '-DLIBDIR="$(LIBDIR)/lib"' '-DFONTDIR="$(FONTDIR)"'\
X	'-DLJF="$(LJF)"' $(CCFLAGS)
XCFLAGS	= $(DEFINES)
X
X
Xall:	troff2ps subst.done makeincl psroff README TROUBLE LASERFONTS submakes
X
Xsubst.done:	sedscript
X	rm -f psroff makeincl
X	touch subst.done
X
Xsubmakes:
X	cd adapters ; $(MAKE) all
X	cd lib ; $(MAKE) all
X	cd man ; $(MAKE) all
X	cd utils ; $(MAKE) all
X	cd widths ; $(MAKE) all
X	cd tests ; $(MAKE) all
X
Xpsroff:	psroff.S sedscript
X	@echo "Extracting $@ with variable substitutions"
X	@rm -f $(@) ; ./sedscript < $@.S > T ; chmod 555 T ; mv T $@
X
Xmakeincl:	makeincl.S sedscript
X	@echo "Extracting $@ with variable substitutions"
X	@rm -f $(@) ; ./sedscript < $@.S > T ; chmod 555 T ; mv T $@
X
Xaudit:	audit.S sedscript
X	@echo "Extracting $@ with variable substitutions"
X	@rm -f $(@) ; ./sedscript < $@.S > T ; chmod 555 T ; mv T $@
X
Xunpackljfonts:
X	@ $(IGNORESH) find . -name '*.UU' -print | \
X	while read i ; \
X	do \
X	    ft=`echo $$i | sed -e 's/.UU//'` ; \
X	    if [ -s $$ft ] ; \
X	    then \
X		echo "Removing $$i" ; \
X		rm -f $$i ; \
X	    else \
X		rm -f $$ft ; \
X		echo "uudecoding $$i -> $$ft" ; \
X		uudecode < $$i ; \
X		if [ ! -s $$ft ] ; \
X		then \
X		    echo "Whoops - uudecode failed on $$i - bad path?" ; \
X		    exit 1 ; \
X		else \
X		    rm $$i ; \
X		fi ; \
X	    fi ; \
X	done
X
Xbuildljfonts:	unpackljfonts
X	make troff2ps makeincl
X	cd lib ; make lj.fonts lj.lib
X	cd utils ; make buildfonts
X
Xinstallljfonts:
X	test -d $(LIBDIR) || mkdir $(LIBDIR)
X	test -d $(LIBDIR)/lib || mkdir $(LIBDIR)/lib
X	test -d $(LIBDIR)/lib/lj || mkdir $(LIBDIR)/lib/lj
X	$(IGNORESH) files=`echo fonts.lj/*.pk` ; \
X	if [ "$$files" != 'fonts.lj/*.pk' ] ; \
X	then \
X	    cp fonts.lj/*.pk $(LJF) ; \
X	fi
X	$(IGNORESH) files=`echo fonts.lj/*.sfp` ; \
X	if [ "$$files" != 'fonts.lj/*.sfp' ] ; \
X	then \
X	    cp fonts.lj/*.sfp $(LJF) ; \
X	fi
X	$(IGNORESH) test -z "$(PKFONTS)" -o ! -d "$(NEWFONTS)" \
X	    || cp $(NEWFONTS)/* $(LJF)
X
Xregister:
X	make troff2ps makeincl
X	cd lib ; make lj.fonts lj.lib
X	cd widths ; make ljwidths widths
X	@echo "Now su to root and type 'make installwidths'"
X
Xinstallwidths:	makeincl
X	cd widths; $(MAKE) installwidths
X
Xinstall:	makeincl
X	test -d $(BINDIR) || mkdir $(BINDIR)
X	test -d $(MANDIR) || mkdir $(MANDIR)
X	test -d $(LIBDIR) || mkdir $(LIBDIR)
X	test -d $(LIBDIR)/adapters || mkdir $(LIBDIR)/adapters
X	test -d $(LIBDIR)/lib || mkdir $(LIBDIR)/lib
X	test -d $(RTMACDIR) || mkdir $(RTMACDIR)
X	test -d $(FONTDIR) || mkdir $(FONTDIR)
X	rm -f $(BINDIR)/psroff.old
X	-cp $(BINDIR)/psroff $(BINDIR)/psroff.old
X	cp psroff $(BINDIR)/psroff
X	rm -f $(LIBDIR)/troff2ps.old
X	-cp $(LIBDIR)/troff2ps $(LIBDIR)/troff2ps.old
X	cp troff2ps $(LIBDIR)/troff2ps
X	cd lib ; $(MAKE) install
X	cd adapters ; $(MAKE) install
X	cd man ; $(MAKE) install
X	cd utils ; $(MAKE) install
X	cd widths; $(MAKE) install
X
Xtroff2ps:	$(MAIN) $(BACKENDS)
X	$(CC) $(CFLAGS) -o troff2ps $(MAIN) $(BACKENDS) $(LIBFLAGS)
X
X#	The following is commented out because make has a bug in that
X#	even if you don't want to make lint, it insists on making
X#	the .c's from the SCCS files.  Dumb stupid....
X#lint:	$(MAIN:.o=.c) $(BACKENDS:.o=.c)
X#	lint -p $(CFLAGS) $(MAIN:.o=.c) $(BACKENDS:.o=.c) > output.lint
X
X#	Drivers include dependencies - add to this list if you're adding
X#	drivers.
Xt2conf.o:	defs.h ps.h lj.h dt.h
Xps.o:	defs.h ps.h
Xdt.o:	defs.h dt.h
Xlj.o:	defs.h lj.h pkc.h pk.h
X
Xpk.o:	defs.h pk.h pkc.h
Xpkc.o:	defs.h pk.h pkc.h
Xcattab.o:	defs.h pk.h
Xdebug.o:	defs.h pk.h
X
Xtroff2.o utils.o opt.o: defs.h
X
Xsedscript:	Makefile
X	rm -f sedscript ; echo $(SEDSCRIPT) > T ; chmod 755 T ; mv T sedscript
X
Xclean:	makeincl
X	rm -f core *.o troff2ps psroff diagnostics audit
X	rm -fr mon.out output.lint TEST*
X	rm -fr FONTS
X	cd adapters ; $(MAKE) clean
X	cd man ; $(MAKE) clean
X	cd utils ; $(MAKE) clean
X	cd lib ; $(MAKE) clean
X	cd widths ; $(MAKE) clean
X	cd tests ; $(MAKE) clean
X	rm -f sedscript makeincl subst.done */subst.done
X
X#	Yes, this is a little wierd, but in this way I can figure
X#	out what you are...
XTEST:	Makefile defs.h tests/testtab.m makeincl
X	cd lib ; make
X	rm -f TEST1 TEST2
X	PATH=.:$(LIBDIR):$$PATH \
X		troff2ps -V | sed -e 's/^.*- \(.*\)/.ds 2v "\1/' > TEST1
X	echo ".ds 2d \"`date`" >> TEST1
X	echo ".sp" > TEST2
X	echo ".ps 10" >> TEST2
X	echo ".vs 12p" >> TEST2
X	echo ".ad 1" >> TEST2
X	echo "DEFS.H DEFINITIONS:" >> TEST2
X	sed -n -e '/Edit no more/q' \
X		-e '/T2VERSION/d' \
X		-e '/LIBDIR/d' \
X		-e 's/[ 	]*\/\*.*//' \
X		-e '/^.define[ 	]*\([^ 	]*\)[ 	]*\(.*\)$$/s//define \1=\2;/' \
X		-e 's/=;/;/' \
X		-e 's/^define //p' \
X		-e '/^.undef[ 	]*\([^ 	]*\).*/s//!\1;/p' \
X		defs.h >> TEST2
X	#echo ".br" >> TEST2
X	echo "MAKEFILE DEFINITIONS:" >> TEST2
X	echo "LIBDIR = $(LIBDIR);" >> TEST2
X	echo "LJF = $(LJF);" >> TEST2
X	echo "STARTSHELL = $(STARTSHELL); " >> TEST2
X	echo "SHELL = $(SHELL); " >> TEST2
X	echo "COMPILE = $(COMPILE);" >> TEST2
X	echo "FONTDIR = $(FONTDIR);" >> TEST2
X	echo "MANDIR = $(MANDIR);" >> TEST2
X	echo "CCFLAGS = $(CCFLAGS);" >> TEST2
X	echo "CC = $(CC);" >> TEST2
X	echo "LIBFLAGS = $(LIBFLAGS);" >> TEST2
X	echo "RTMACDIR = $(RTMACDIR);" >> TEST2
X	echo "PKFONTS = $(PKFONTS);" >> TEST2
X	echo "NEWFONTS = $(NEWFONTS);" >> TEST2
X	echo "IGNORESH = $(IGNORESH);" >> TEST2
X	echo "SFP2PK = $(SFP2PK)." >> TEST2
X	echo "TTYPE = $(TTYPE)." >> TEST2
X	@echo "Don't worry if the uname/grep fails"
X	-grep '^trofftype' lib/psrofflib >> TEST2
X	echo "Uname results:" >> TEST2
X	-uname -a >> TEST2
X	cat TEST1 tests/testtab.m TEST2 > TEST
X	rm -f TEST1 TEST2
X
Xtest:	TEST
X	tbl TEST | PATH=.:$(LIBDIR):$$PATH psroff -T$(TTYPE)
X
Xcheck:	audit sedscript makeincl
X	cd lib ; $(MAKE)
X	./audit
X
Xcheckinstall:	audit sedscript makeincl
X	cd lib ; $(MAKE)
X	./audit install
X
X#	This is how I build a release - don't even try running this...!
Xbuildrelease:	clean unpackljfonts
X	$(IGNORESH) t=`find . -name 'p.*' -print`; \
X	if [ -n "$$t" ] ; \
X	then \
X	    echo "files still out: $$t" ; \
X	    exit 1 ; \
X	fi
X	make buildfinal
X
Xbuildfinal:
X	make troff2ps makeincl
X	cd lib ; make lj.fonts lj.lib
X	cd utils ; make tmaps buildSfonts
X	cd utils ; make keepbuiltfonts
X	make test
X	make clean
X	t/cleantree
X	t/mkmanifest
X	t/mkkits
X	t/cleantree
X
X#	Impossible file, we hope....
XWF	= /cowsnovskibumsteinpastafazoola/bdkdkdk
Xtestbug:
X	@ $(IGNORESH) if [ -r $(WF) ] ; \
X	then \
X	    echo "Bizarre - are you sure you have $(WF)?" ; \
X	else \
X	    echo "IGNORESH set correctly" ; \
X	fi
END_OF_FILE
  if test 12208 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
  fi
  # end of 'Makefile'
fi
if test -f 'dt.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'dt.c'\"
else
  echo shar: Extracting \"'dt.c'\" \(13509 characters\)
  sed "s/^X//" >'dt.c' <<'END_OF_FILE'
X/*	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X		All Rights Reserved
X
X    Permission to copy and further distribute is freely given provided
X    this copyright notice remains intact and that this software is not
X    sold for profit.
X
X	Project:	Generic Troff drivers
X	Module:		dt.c
X	Author: 	Chris Lewis
X	Specs:		Ditroff driver
X */
X
X#include "defs.h"
X
X#ifndef	lint
Xstatic char SCCSid[] =
X    "@(#)dt.c: 2.3 Copyright 90/10/22 14:52:55 Chris Lewis";
X#endif
X
X/*	These two tables are always included so that we have the
X	official character mapping tables.
X */
X
Xstruct troff2befont dtStdFont[108] = {
X
X/*	Note on X-shift, Y-shift and point scale factor:
X	The first two are shifts in the baseline position of the
X	character, and the third is a multiplier of the point size.
X	If they are zero, nothing happens.  If they are non-zero,
X	they are first multiplied by .01, then (in the case of the
X	shifts), multiplied by the current points to get a shift
X	value in TROFF2PS[XY] coordinates.  In the case of point scale
X	factor, it is multiplied by <currentpointsize> * .01 and becomes
X	the pointsize of the sequence to be emitted.
X */
X/*          +-------------------------------- Troff character number
X	    |
X            |    +--------------------------- N: standard fonts
X            |    |                            S: symbol font
X            |    |                            D: draw macro
X            |    |                            n: new font
X            |    |
X            |    |  +------------------------ X-shift (scaled by point)
X            |    |  |                         Note: positive is right.
X            |    |  |
X            |    |  |  +--------------------- Y-shift (scaled by point)
X            |    |  |  |                      Note: positive is up.
X            |    |  |  |
X            |    |  |  |  +------------------ Point scale factor
X            |    |  |  |  |
X            |    |  |  |  |   +-------------- Sequence
X            |    |  |  |  |   |
X            v    v  v  v  v   v */
X	/*  0*/	{N, 0, 0, 0, "h"},
X	/*  1*/	{N, 0, 0, 0, "t"},
X	/*  2*/	{N, 0, 0, 0, "n"},
X	/*  3*/	{N, 0, 0, 0, "m"},
X	/*  4*/	{N, 0, 0, 0, "l"},
X	/*  5*/	{N, 0, 0, 0, "i"},
X	/*  6*/	{N, 0, 0, 0, "z"},
X	/*  7*/	{N, 0, 0, 0, "s"},
X	/*  8*/	{N, 0, 0, 0, "d"},
X	/*  9*/	{N, 0, 0, 0, "b"},
X	/* 10*/	{N, 0, 0, 0, "x"},
X	/* 11*/	{N, 0, 0, 0, "f"},
X	/* 12*/	{N, 0, 0, 0, "j"},
X	/* 13*/	{N, 0, 0, 0, "u"},
X	/* 14*/	{N, 0, 0, 0, "k"},
X	/* 15*/	{N, 0, 0, 0, NOC},
X	/* 16*/	{N, 0, 0, 0, "p"},
X	/* 17*/	{N, 0, 0, 0, "em"},
X	/* 18*/	{N, 0, 0, 0, ";"},
X	/* 19*/	{N, 0, 0, 0, NOC},
X	/* 20*/	{N, 0, 0, 0, "a"},
X	/* 21*/	{N, 0, 0, 0, "ru"},
X	/* 22*/	{N, 0, 0, 0, "c"},
X	/* 23*/	{N, 0, 0, 0, "`"},
X	/* 24*/	{N, 0, 0, 0, "e"},
X	/* 25*/	{N, 0, 0, 0, "'"},
X	/* 26*/	{N, 0, 0, 0, "o"},
X	/* 27*/	{N, 0, 0, 0, "14"},
X	/* 28*/	{N, 0, 0, 0, "r"},
X	/* 29*/	{N, 0, 0, 0, "12"},
X	/* 30*/	{N, 0, 0, 0, "v"},
X	/* 31*/	{N, 0, 0, 0, "hy"},
X	/* 32*/	{N, 0, 0, 0, "w"},
X	/* 33*/	{N, 0, 0, 0, "q"},
X	/* 34*/	{N, 0, 0, 0, "/"},
X	/* 35*/	{N, 0, 0, 0, "."},
X	/* 36*/	{N, 0, 0, 0, "g"},
X	/* 37*/	{N, 0, 0, 0, "34"},
X	/* 38*/	{N, 0, 0, 0, ","},
X	/* 39*/	{N, 0, 0, 0, "&"},
X	/* 40*/	{N, 0, 0, 0, "y"},
X	/* 41*/	{N, 0, 0, 0, NOC},
X	/* 42*/	{N, 0, 0, 0, "%"},
X	/* 43*/	{N, 0, 0, 0, NOC},
X	/* 44*/	{N, 0, 0, 0, "Q"},
X	/* 45*/	{N, 0, 0, 0, "T"},
X	/* 46*/	{N, 0, 0, 0, "O"},
X	/* 47*/	{N, 0, 0, 0, "H"},
X	/* 48*/	{N, 0, 0, 0, "N"},
X	/* 49*/	{N, 0, 0, 0, "M"},
X	/* 50*/	{N, 0, 0, 0, "L"},
X	/* 51*/	{N, 0, 0, 0, "R"},
X	/* 52*/	{N, 0, 0, 0, "G"},
X	/* 53*/	{N, 0, 0, 0, "I"},
X	/* 54*/	{N, 0, 0, 0, "P"},
X	/* 55*/	{N, 0, 0, 0, "C"},
X	/* 56*/	{N, 0, 0, 0, "V"},
X	/* 57*/	{N, 0, 0, 0, "E"},
X	/* 58*/	{N, 0, 0, 0, "Z"},
X	/* 59*/	{N, 0, 0, 0, "D"},
X	/* 60*/	{N, 0, 0, 0, "B"},
X	/* 61*/	{N, 0, 0, 0, "S"},
X	/* 62*/	{N, 0, 0, 0, "Y"},
X	/*from here on are actually code 1-45, upper half of font */
X	/* 63*/	{N, 0, 0, 0, "F"},
X	/* 64*/	{N, 0, 0, 0, "X"},
X	/* 65*/	{N, 0, 0, 0, "A"},
X	/* 66*/	{N, 0, 0, 0, "W"},
X	/* 67*/	{N, 0, 0, 0, "J"},
X	/* 68*/	{N, 0, 0, 0, "U"},
X	/* 69*/	{N, 0, 0, 0, "K"},
X	/* 70*/	{N, 0, 0, 0, "0"},
X	/* 71*/	{N, 0, 0, 0, "1"},
X	/* 72*/	{N, 0, 0, 0, "2"},
X	/* 73*/	{N, 0, 0, 0, "3"},
X	/* 74*/	{N, 0, 0, 0, "4"},
X	/* 75*/	{N, 0, 0, 0, "5"},
X	/* 76*/	{N, 0, 0, 0, "6"},
X	/* 77*/	{N, 0, 0, 0, "7"},
X	/* 78*/	{N, 0, 0, 0, "8"},
X	/* 79*/	{N, 0, 0, 0, "9"},
X	/* 80*/	{N, 0, 0, 0, "*"},
X	/* 81*/	{N, 0, 0, 0, "-"},
X	/* 82*/	{N, 0, 0, 0, "fi"},
X	/* 83*/	{N, 0, 0, 0, "fl"},
X	/* 84*/	{N, 0, 0, 0, "ff"},
X	/* 85*/	{N, 0, 0, 0, "ct"},
X	/* 86*/	{N, 0, 0, 0, "Fl"},
X	/* 87*/	{N, 0, 0, 0, "Fi"},
X	/* 88*/	{N, 0, 0, 0, "("},
X	/* 89*/	{N, 0, 0, 0, ")"},
X	/* 90*/	{N, 0, 0, 0, "["},
X	/* 91*/	{N, 0, 0, 0, "]"},
X	/* 92*/	{N, 0, 0, 0, "de"},
X	/* 93*/	{N, 0, 0, 0, "dg"},
X	/* 94*/	{N, 0, 0, 0, "="},
X	/* 95*/	{N, 0, 0, 0, "rg"},
X	/* 96*/	{N, 0, 0, 0, ":"},
X	/* 97*/	{N, 0, 0, 0, "+"},
X	/* 98*/	{N, 0, 0, 0, NOC},
X	/* 99*/	{N, 0, 0, 0, "!"},
X	/*100*/	{N, 0, 0, 0, "bu"},
X	/*101*/	{N, 0, 0, 0, "?"},
X	/*102*/	{N, 0, 0, 0, "fm"},
X	/*103*/	{N, 0, 0, 0, "|"},
X	/*104*/	{N, 0, 0, 0, NOC},
X	/*105*/	{N, 0, 0, 0, "co"},
X	/*106*/	{N, 0, 0, 0, "sq"},
X	/*107*/	{N, 0, 0, 0, "$"}
X};
X
Xstruct troff2befont dtSymFont[] = {
X/*          +-------------------------------- Troff character number
X	    |
X            |    +--------------------------- N: standard fonts
X            |    |                            S: symbol font
X            |    |                            D: draw macro
X            |    |
X            |    |  +------------------------ X-shift (scaled by point)
X            |    |  |                         Note: positive is right.
X            |    |  |
X            |    |  |  +--------------------- Y-shift (scaled by point)
X            |    |  |  |                      Note: positive is up.
X            |    |  |  |
X            |    |  |  |  +------------------ Point scale factor
X            |    |  |  |  |
X            |    |  |  |  |   +-------------- Sequence
X            |    |  |  |  |   |
X            |    |  |  |  |   |
X            v    v  v  v  v   v */
X	/*  0*/	{S, 0, 0, 0, "*q"},
X	/*  1*/	{S, 0, 0, 0, "*h"},
X	/*  2*/	{S, 0, 0, 0, "*n"},
X	/*  3*/	{S, 0, 0, 0, "*m"},
X	/*  4*/	{S, 0, 0, 0, "*l"},
X	/*  5*/	{S, 0, 0, 0, "*i"},
X	/*  6*/	{S, 0, 0, 0, "*z"},
X	/*  7*/	{S, 0, 0, 0, "*s"},
X	/*  8*/	{S, 0, 0, 0, "*d"},
X	/*  9*/	{S, 0, 0, 0, "*b"},
X	/* 10*/	{S, 0, 0, 0, "*c"},
X	/* 11*/	{S, 0, 0, 0, "*y"},
X	/* 12*/	{S, 0, 0, 0, "*f"},
X	/* 13*/	{S, 0, 0, 0, "*u"},
X	/* 14*/	{S, 0, 0, 0, "*k"},
X	/* 15*/	{S, 0, 0, 0, NOC},
X	/* 16*/	{S, 0, 0, 0, "*p"},
X	/* 17*/	{S, 0, 0, 0, "@"},
X	/* 18*/	{S, 0, 0, 0, "da"},
X	/* 19*/	{S, 0, 0, 0, NOC},
X	/* 20*/	{S, 0, 0, 0, "*a"},
X	/* 21*/	{S, 0, 0, 0, "or"},
X	/* 22*/	{S, 0, 0, 0, "*x"},
X	/* 23*/	{N, 0, 0, 0, "\""},
X	/* 24*/	{S, 0, 0, 0, "*e"},
X	/* 25*/	{S, 0, 0, 0, "eq"},
X	/* 26*/	{S, 0, 0, 0, "*o"},
X	/* 27*/	{S, 0, 0, 0, "<-"},
X	/* 28*/	{S, 0, 0, 0, "*r"},
X	/* 29*/	{S, 0, 0, 0, "ua"},
X	/* 30*/	{S, 0, 0, 0, "*t"},
X	/* 31*/	{S, 0, 0, 0, "ul"},
X	/* 32*/	{N, 0, 0, 0, "\\"},
X	/* 33*/	{S, 0, 0, 0, "*Q"},
X	/* 34*/	{S, 0, 0, 0, "bs"},
X	/* 35*/	{S, 0, 0, 0, "if"},
X	/* 36*/	{S, 0, 0, 0, "*g"},
X	/* 37*/	{S, 0, 0, 0, "ip"},
X	/* 38*/	{S, 0, 0, 0, "pt"},
X	/* 39*/	{S, 0, 0, 0, "rh"},
X	/* 40*/	{S, 0, 0, 0, "*w"},
X	/* 41*/	{S, 0, 0, 0, NOC},
X	/* 42*/	{S, 0, 0, 0, "gr"},
X	/* 43*/	{S, 0, 0, 0, NOC},
X	/* 44*/	{S, 0, 0, 0, "*F"},
X	/* 45*/	{S, 0, 0, 0, "*H"},
X	/* 46*/	{S, 0, 0, 0, "*W"},
X	/* 47*/	{S, 0, 0, 0, "cu"},
X	/* 48*/	{S, 0, 0, 0, "rn"},
X	/* 49*/	{S, 0, 0, 0, "ts"},
X	/* 50*/	{S, 0, 0, 0, "*L"},
X	/* 51*/	{S, 0, 0, 0, "mi"},
X	/* 52*/	{S, 0, 0, 0, "*G"},
X	/* 53*/	{S, 0, 0, 0, "is"},
X	/* 54*/	{S, 0, 0, 0, "*P"},
X	/* 55*/	{S, 0, 0, 0, "sb"},
X	/* 56*/	{S, 0, 0, 0, "sp"},
X	/* 57*/	{S, 0, 0, 0, "ap"},
X	/* 58*/	{S, 0, 0, 0, "pd"},
X	/* 59*/	{S, 0, 0, 0, "*D"},
X	/* 60*/	{S, 0, 0, 0, "sr"},
X	/* 61*/	{S, 0, 0, 0, "*S"},
X	/* 62*/	{S, 0, 0, 0, "~="},
X	/* 63*/	{S, 0, 0, 0, ">"},
X	/* 64*/	{S, 0, 0, 0, "*C"},
X	/* 65*/	{S, 0, 0, 0, "<"},
X	/* 66*/	{S, 0, 0, 0, "/"},
X	/* 67*/	{S, 0, 0, 0, "ca"},
X	/* 68*/	{S, 0, 0, 0, "*U"},
X	/* 69*/	{S, 0, 0, 0, "no"},
X	/* 70*/	{S, 0, 0, 0, "rc"},
X	/* 71*/	{S, 0, 0, 0, "lt"},
X	/* 72*/	{S, 0, 0, 0, "bv"},
X	/* 73*/	{S, 0, 0, 0, "lk"},
X	/* 74*/	{S, 0, 0, 0, "lb"},
X	/* 75*/	{S, 0, 0, 0, "rt"},
X	/* 76*/	{S, 0, 0, 0, "rk"},
X	/* 77*/	{S, 0, 0, 0, "rb"},
X	/* 78*/	{S, 0, 0, 0, "rf"},
X	/* 79*/	{S, 0, 0, 0, "lf"},
X	/* 80*/	{S, 0, 0, 0, "lc"},
X	/* 81*/	{S, 0, 0, 0, "mu"},
X	/* 82*/	{S, 0, 0, 0, "di"},
X	/* 83*/	{S, 0, 0, 0, "+-"},
X	/* 84*/	{S, 0, 0, 0, "<="},
X	/* 85*/	{S, 0, 0, 0, ">="},
X	/* 86*/	{S, 0, 0, 0, "=="},
X	/* 87*/	{S, 0, 0, 0, "!="},
X	/* 88*/	{S, 0, 0, 0, "{"},
X	/* 89*/	{S, 0, 0, 0, "}"},
X	/* 90*/	{N, 0, 0, 0, "aa"},
X	/* 91*/	{N, 0, 0, 0, "ga"},
X	/* 92*/	{S, 0, 0, 0, "^"},
X	/* 93*/	{S, 0, 0, 0, "#"},
X	/* 94*/	{S, 0, 0, 0, "lh"},
X	/* 95*/	{S, 0, 0, 0, "mo"},
X	/* 96*/	{N, 0, 0, 0, "~"},
X	/* 97*/	{S, 0, 0, 0, "es"},
X	/* 98*/	{S, 0, 0, 0, NOC},
X	/* 99*/	{N, 0, 0, 0, "dd"},
X	/*100*/	{S, 0, 0, 0, "br"},
X	/*101*/	{S, 0, 0, 0, "**"},
X	/*102*/	{S, 0, 0, 0, "ib"},
X	/*103*/	{S, 0, 0, 0, "ci"},
X	/*104*/	{S, 0, 0, 0, NOC},
X	/*105*/	{S, 0, 0, 0, "pl"},
X	/*106*/	{S, 0, 0, 0, "->"},
X	/*107*/	{N, 0, 0, 0, "sc"}
X};
X
X#ifdef	DT
X#include "dt.h"
X
X#define	USED	01
X
Xint dtresolution = DTRESOLUTION;
X
XdtPage() {
X    pagePending = 1;
X}
X
Xstatic
XdoPageStart() {
X    currentPage++;
X    pagePending = 0;
X    printf("p%d\n", currentPage);
X}
X
X
XdtSetFont(font, points)
Xint font, points; {
X    if (lastPoints != points || font != lastFont) {
X	if (!(fonttable[font].flags)&USED)
X	    printf("x font %d %s\n", font+1, fonttable[font].troffName);
X	fonttable[font].flags |= USED;
X	printf("f%d\n", font+1);
X	printf("s%d\n", points);
X	lastPoints = points;
X	lastFont = font;
X    }
X}
X
XdtChar(x, y, font, points, troffChar, sequence)
Xlong x, y;
Xint font, points, troffChar;
Xchar *sequence; {
X    register int nx = TROFF2DTX(x), ny = TROFF2DTY(y);
X    register struct troff2befont *rp;
X    if (pagePending) {
X	resetState();
X	doPageStart();
X    }
X
X    DBP((D_BEND,"x,y=%d,%d; font=%d, points=%d, tc=%d\n",
X	x, y, font, points, troffChar));
X
X    if (font == 3) {
X	rp = &be->besymfont[troffChar];
X    } else {
X	rp = &be->bestdfont[troffChar];
X    }
X
X    switch(rp->t2b_font) {
X	/* Only fonts with "N" are subject to font translation */
X	case N:
X	    if (font == 3)
X		font = 0;	/* Special chars are Courier */
X	    else {
X		DBP((D_BEND, "dtSetChar %d->%s (%s)\n", font,
X		    xlatetable[font]->troffName,
X		    xlatetable[font]->fontName));
X		font = xlatetable[font] - fonttable;
X	    }
X	    break;
X	case S:
X	    font = 3;
X	    break;
X	case D:
X	    break;
X	default:
X	/* Typically used when the R and S fonts don't have the
X	   character desired, so select the font via the index
X	   in the fonts.?? file */
X	    font = rp->t2b_font;
X	    break;
X    }
X
X    if (!sequence)
X	sequence = rp->t2b_charseq;
X
X    if (!sequence) {
X	fprintf(stderr, "No coding for %d\n", troffChar);
X	return;
X    }
X
X    /*	We're committed now - the "if" statements avoid floating
X	arithmetic on slow machines */
X
X    if (rp->t2b_scale) points *= (.01 * rp->t2b_scale);
X    if (rp->t2b_xc) nx += points * (.01 * rp->t2b_xc);
X    if (rp->t2b_yc) ny += points * (.01 * rp->t2b_yc);
X
X    dtSetFont(font, points);
X#ifdef	NOTYET
X    if (rp->t2b_font == D)
X	printf("H%d\nV%d\nc%s\n", nx, ny, sequence);
X    else {
X#endif
X	/* print an nnc sequence if we can...may even be able to avoid
X	   the newline. */
X
X	if (lastYPos == ny &&
X	    sequence[1] == 0 &&
X	    lastXPos != -1 &&
X	    (nx - lastXPos) > 0 && (nx - lastXPos) < 100) {
X
X	    printf("%02d%c\n",(nx - lastXPos), sequence[0]);
X
X	} else {
X
X	    printf("H%d\n", nx);
X
X	    if (lastYPos != ny) {
X		printf("V%d\n", ny);
X		lastYPos = ny;
X	    }
X	    if (sequence[1])
X		printf("C%s\n", sequence);
X	    else
X		printf("c%s\n", sequence);
X	}
X	lastXPos = nx;
X#ifdef	NOTYET
X    }
X#endif
X}
X
XdtProlog() {
X    extern char *ctime();
X    extern char *strchr();
X    extern char nodename[];
X    extern char *device;
X    char buffer[30];
X    long curtime;
X#ifdef	OPT
X    extern int optimize;
X
X    optimize = 0;
X#endif
X
X    currentPage = 0;
X    pagePending = 1;
X
X    time(&curtime);
X    strcpy(buffer, ctime(&curtime));
X    *strchr(buffer, '\n') = '\0';
X
X    getnodename();
X
X#ifndef	NOCHATTER
X    printf("#Title: (stdin)\n");
X    printf("#Creator: %s %s\n", progname, shortversion);
X    printf("#PsroffVersion: %s\n", version);
X    printf("#CreationDate: %s\n", buffer);
X    printf("#For: %s\n", username);
X    printf("#Pages: (atend)\n");
X    printf("#DocumentFonts: (atend)\n");
X    printf("#EndComments\n");
X#endif
X    printf("x T %s\n", device);
X    printf("x res %d %d %d\n", dtresolution, 1, 1);
X    printf("x init\n");
X    doprologs();
X
X}
X
XdtPassthru(s)
Xregister char *s; {
X    printf("x X %s\n", s);
X}
X
XdtEpilog() {
X    printf("x trailer\n");
X    printf("x stop\n");
X}
X
X#ifdef	INSPECIAL
XdtDraw(origX, origY, s)
Xint origX, origY;
Xregister char *s; {
X    register int temp, t2;
X    DBP((D_CAT, "dtDraw: (%d,%d): %s\n", origX, origY, s));
X    printf("H%d\n", TROFF2DTX(origX));
X    printf("V%d\n", TROFF2DTY(origY));
X    putchar('D');
X    putchar(*s);
X    s++;
X    /* We just pass these thru, scaling them to output resolution */
X    for (;*s;s++) {
X	if (isspace(*s))
X	    putchar(' ');
X	else if (!isdigit(*s))
X	    putchar(*s);
X	else {
X	    temp = *s - '0';
X	    while(isdigit(*(s+1))) {
X		temp = temp * 10 + (*++s - '0');
X	    }
X	    t2 = temp * dtresolution / TROFFRESOLUTION;
X	    DBP((D_CAT, "dtDraw (scale): %d -> %d\n", temp, t2));
X	    printf("%d", t2);
X	}
X    }
X    putchar('\n');
X}
X#endif
X
X#endif /* DT */
END_OF_FILE
  if test 13509 -ne `wc -c <'dt.c'`; then
    echo shar: \"'dt.c'\" unpacked with wrong size!
  fi
  # end of 'dt.c'
fi
if test -f 'fonts.lj/S.24.pk.UU' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'fonts.lj/S.24.pk.UU'\"
else
  echo shar: Extracting \"'fonts.lj/S.24.pk.UU'\" \(14167 characters\)
  sed "s/^X//" >'fonts.lj/S.24.pk.UU' <<'END_OF_FILE'
Xtable
X !"#$%&'()*+,-./0123456789:;<=>?
X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
Xbegin 644 fonts.lj/S.24.pk
XM]UD``8``````````!":N``0FKI#0(0```$U(8_E)VRV_3979397939793979
XM3979]-E=E-E=E-E=E-E=E-E=GTV5V4V5V4V5V4V5V?397939793979397939
XM79]-E=E-E=E+4;E;0KE+-;=;)K=+(1:U6Q$FM4L"-K5*\6:S6N%VLTN&L5N&
XML4N6L%NFKTNVKEO&K4O6K%OO:K2_:J7`:I3!:H7":G3#:F7#:F3%:D7%:D3'
XM:C3':B7':B3):@7):@3+:%RVA,QG7-9DSF5<_V1-%B718DTF%=/Z#5^-9]AM
XMA=I-H\*PVR0```!I7"WZ*\2=Z='$U\/,R-/'R,S/R\7/RZIL/1R8PUP7K#Q8
XMQEML/!PXR4EL7!P7S$A<?!M\U67*P)?/15S,!WT41,[`9M)$3/P$;4,TT,`V
XMU4)-'`%M<R/3QM<Q34Q-B-7"VFU\':;7P-MMC`VFV<#9;:P-AMO`UVVL'7;:
XMPM6-C$U$$]?&TS(]=AP-%"358\#00SU&3`ST1-)FP,Y$31=\#,54SWG`RE9<
XMU[P<=83,?!P<5I3)C#P<-K7&C%PZ?!7#C)T<-JK+S\7+S\S(Q]/(S,/7Q-&=
XMZ<20/"4```!213WZ-K@==].=&AS^*CS:7-XJ//H=&=-]<0`VK9$)4=D`-J'7
XM?3G1H<_BH\VES>*CSZ'1G3?7&X"PLR8```!21BWZ*\.-J<#"U,"L;0PHRLS`
XM$WS<F,-JO&?%;!K$?%7$K";'3'G`;'3)FFR$RIALA,R77)/.E5R4SI1LE,^3
XM7*/1D5RSTL'+32P<L]2\P]6LP]6<T]:<P]>,P]><L]B<H]>LH]>\E-7!R3U<
XM')/449R#TU.<=-%DG'/159QTSU><<\YHG&3,:IQDRFP)Q4R6PJQ$QGQ*Q%PW
XMQKPUN,G&B1P,S$K&T,+`PM3`PIVH$+"&*@```%(S,_$Q$]\Q7=O;P=EQ?7<W
XMU75]-W?1>7SWM\U\%\M\-\E\5\=\=\5\E\-\M\%\U[?/>7T7=]-U?5<WUW%]
XMG!V[W9WWWYW;V\'9<7UW-]5U?3=WT7E\][?-?!?+?#?)?%?'?'?%?)?#?+?!
XM?->WSWE]%W?3=7U7-]=Q?9P=N]U1/?,0$`TM````4C\%]QH5L=L5L:!6/```
XM`$8U-/@RURUETWT9SZSISYSYSYSYSYSYSJSJSJSJSISYSYSYSYSYSYSYSYT/
XMC3G3G3G3G3G3G3G3G3G3K2K2K2K3G3G3G3G3G3G3G3G3G3?577(0H%8]````
XM1C4T^#(1V%U7TYTYTYTYTYTYTYTYTYTZTJTJTJTYTYTYTYTYTYTYTYTYT_C0
XMG/G/G/G/G/G/G/G/G.K.K.K.K.G/G/G/G/G/G/G/G/G1?376+7"X-T,```!"
XM.43\0^(!J\#*P,"LZL"=",#YTFP)TUP/G43`XIU4OCG6.YUDXJG7/MRI`3L!
XM'"U^+3S@H+=$````6$U&^T7*,!Y0'/<!KY`8^P`6^R`40:`3,J`20Z`1-*`0
XM\VK>.*W$BPVSJMI*L-D[&MA+&PUSLZUDM*U3M:U$MJTSMZTDN*T3N:T#NZSD
XMN[#-.]K,2]L,L[^LI+^PR3P:R$PJQSPZQDQ*Q3Q:Q$QJPSQZPO/)K`/+J^3+
XML+T\VKQ,VPNSSZNDS["Y/1JX32JW/3JV34JU/5JT36JS/7JR\]FK`]NI3;L(
XM/=I_`<7P'C\"`0;PH)Y(````4D5&^D3"L-NXU+[/J:RXMHQXNHQ'OGP8P(OH
XMPHO(Q(NGR'N(R(MHRHM(S(LWSGLHSHL/C0B?C2A_C4A9U)3XUH/BG6DH<\0W
XM@?ESQ#>WYWRGM_<\0WD8<\0W@N*=:3^-:$G4E?C4AITI>-*)^-"+#XSHLHS(
XMM(RHMGRGN'R'NGQGO'Q'OHP(P(OHPXNHQIMIR;";#.OM.ZVK#""@J$L```!)
XM0$;\1<0@$O0!#VWN*-SBK:XK'8L]<QK7,IUC.M7S2=0UK3\VG2-ZT3B=!(K/
XM.:SSJ<Y*K-.PK-.QG,2QK+.RK+.SG*2SK).TK).UG(.VK'\[><8[BL7SN9Q#
XMNJPSNYPDNZP3O*P3O9P$O:OSOJOSOYODOZO3P*O3P9O$P:NSPJNSPYNCQ*N?
XM/%FX/&JW/'FV3'FV7&JT;&JRG%L*LL&S;BN;>_"0,$X```!&/4/\0BYL]$QT
XM/B3)0N0\LP`;KD.W.LYKVLY#MS`!]N4\U_RT$\LR3)0N;1&X(%````!/1D3\
XM0PMHO4O%K4K'X!V=2<>]*\7!T,&.+1P-$+"J4@```$P_1/I#$!\P($`?2]3$
XM6]C`6MN5O;AKVW>]MGO<6+W$F]M9K<2;VTJ]I+K;.[VCP+V3P;V$P:V3P;V#
XMPKUSPZ`9L!FP&?L!FP&;`9H!FP&;`9^P&:`:@!SV`>0!Y`'D`>0!Y`'D`>0!
XMY-D\9-H\5-L\1-M,--P\0]T\,]X\)-U,%-Y,!-]+3?6D`02D`064`0:$`0=T
XM`0ADWZ5-[`1-K%/P'S`@0!\PL%Y3````)R8W_"O*O+QL;*PHE\!\-*;'*ETV
XMTVTVTVU%U%U/74XEU&U/75XFU/?3C2G2G1O0P,_!SL+-P\S$S,3,P\S$S,/-
XMPL[!S[T9THTWU.)M1=1M1<M%7,P<Z])L,+!C5````%)%1?I$J-6,7"S\+!Q,
XMW$O'R<><G'R7R\7+7-P\U,[!SC>KNZ<EPIN<)23%B8Q4%,=Y?'?\EW?);*=7
XMRFRV5LL\YS<!GV-@&U-0'.)A8!U14![CL!_M>0'[`<PP$>+5QK"/50```$P_
XM1/I#P^+4W,(!>@&N>`&,,!#+V-/2LH.\Z6AYRIB)G'BHN,2;C`G!C!C"BYP8
XMPIF<*,.7^<.,25^<2,63K$C%HIQ8QI'GK%C&H9Q8QI*L2,6C^<2,65^<.,27
XMG"C#F9P8PIN,&,*,&;C`G$BHN,>8B9RI:'G.LH.]+3V,L!##`7YX`:H!?"W.
XM+4Q`H(A7````4D5$^D.WXL73L]Z@$>:,6+J+NYN(N;RWBXL4FVBWF9M8MIL/
XMBUBVBRXHM(M8M.L(LXM(MGLXLXM^*+*+.+A[*+-[F+&+*+F+&+)[M[&+)[N+
XM"+%[U["+%[YZBP>_B8J,!YB8PGB(C$=X>,:%AHR).$C,MQK/OM.YVK$!#G@!
XM&MZST^+%N+"@6````$Q!1?M$SL$!3)W<_7N[TJQ:SYR9S)S9R9SYQITYPYU9
XMP?G7FYV9GYVY?YW97ZW:2=^3YZWZ.=^4XJW:7YW9?BG;F9V9OXV8P?C7C#?7
XM?$C5C%?5?';5;(?3?);3;+]M%LU=%<]<]<([7/6VP$STP&P%S5P#\3P$S4P#
XM+SP4RTP3),$\L\%#/!/+/!-$P#RSP$3CR,G(7\?)QVQ\K&.HMUD```!834;[
XM0P;_$"`_`>7P''K=.+#;2:VSL/K9.RK7.SK62TK5.UK42VK3.WK22XK1.YL,
XM]+JL\[NPS4O*S3O;#+2^K+/`^LD\*L<\.L9,2L4\6L1,:L,\>L),BL$\FPOT
XMRJOSR["]3,J]/-L+M,ZKL]"KD]&KA-*K<].K9-2K4]6K1-:K,]>PL4V*L3V;
XM"DVJH]NPA-RH/>^F,!"D,!&C0!*B,!.A0!3[(!;[`!CY`:]P'%`>/*"PM%H`
XM```X-T?\1<^=[%V&EM5,)M%,9<],ALQ,ILI,QLA,YL<\]L9-!L5\U\.<UL/B
XMG-?"^,]\)=%P%'`4Y(T1Q8RL&YQ\:9Q<IYPXP%:<&,1%G`C&0ZM\DSFWRS*9
XMC-(IB,[!>,_`>="WC1MHTK7YTJ6=.EG3E:TY6=25^=.5K3AITY;YTX>=*(C3
XMB/C2B8T8J-%[C0?!?0?!C.?#?-?$?,?&?*?(?(?*?%?-?"C/B9T\K7Q=V]*@
XMBEP```!2/U3W00$#WVW(VJV+#7L->PU[#7L->PU[#7L->PU[#7L->PU[#7L-
XM>PU[#7L->PU[#7L->PU[#7L->PU[#7L-BMJ-RMNPV[#;L-NPV[#;L-NPV[#;
XML-NPV[#;L-NPV[#;L-NPV[#;L-NPV[#;L-NPV[#;L-NPV[#;K<C>8!`P`\<!
XM(0DA`2&@B5X```!2/U3W01,!!MZ-RMNPV[#;L-NPV[#;L-NPV[#;L-NPV[#;
XML-NPV[#;L-NPV[#;L-NPV[#;L-NPV[#;L-NPV[#;K<C:K8L->PU[#7L->PU[
XM#7L->PU[#7L->PU[#7L->PU[#7L->PU[#7L->PU[#7L->PU[#7L->PV*VHW&
XMWS`$`0$A"2$!(=@*7P```#(R!0#I#\"PD6$```!$.BW\*\N0$</=Q]F6C5BW
XMTWPGPDM\1\%)C&;!.8QWP#B,EZ1_C*>C>,N(1IS'@WC-=T:<UW-ISG9&G.A3
XM><Z$1ISX0WG/@T><^#-ZSX)'G1<4B=%Q.9T;F=&J^-*;C2C`XXTGPGT)PGSZ
XMPWS;PWRU)X)7R5-W-GQ65W-WPG=F2(B:9$K)PL#!Q<6L6LMGH.9B````.SM9
XM_D7.C4M,^XRX=\AK)L9;5L1+=L);EL!;IK];M[U;Q[Q;U[Q+Y[M+][I,![H\
XM"+E,![E,%[D\)[A,&+@\)[A,)[@\)[D\%[E,%KH\%[H\![I+*P)[L[&YO?.P
XMN;U+"[NSL[`WNCP8N3PGN$PWMSQ'M_/$BU3%>U/&BT\\6;-,6;/B/&FR3%JR
XMXCQILDQ:LO3%FS3$FS7$FS7$BT7#FT7#BT?!BU,3P)M3%+^+8Q2^BV0DO(MS
XM1+J+@T6X>Z-6M(ND=K"+PYN[X["WP#LK+"3<XCW$W.(]Q-SB/<3<XCW/3<"@
XM@6,````V.$#_*[:-.QODL;:\2PN+I*N[DZO;=)O[8YL&L+1(BRBT.'MGLDA;
XMEK(X6[:Q-UO5L$=+]+`X/!24=,%).#PSA(/#1SA,-&30\V/11$T40],S33\S
XM/4,DU#(]4Q35\Q/6?6XFU_78XDV>(]GTV3V>--CB3878XTV.--D]HKRPEF0`
XM```O*T?\1<^-3!T,7-=URVM,AL),9L0\9<5,1L8L3VV.-MA]CXV(UZU;U;U,
XM#4P=3`U,#4P-/!S\7,R,ITK(AJQGF<5[G"C!C!C#?!C$;`C%:XQVF<=IC)6)
XMR5?BG*1^*<M&K*1^*<M'G*2/C+2/C*2?C)2HR$P'R$P'QTP8Q5PGQ4Q'PTQ7
XMPDQWP$R8A<S&S\/2O)"P0V4````K(RS\*LK`R,3$QL.<R,Z,V,Z,Z,Z,Z<V<
XMZ,[YS?G-K-_1;0:LWFG/XHT/?0C0?1?1?'&7Q$E\%JB'PLC%P\N;L'IF````
XM+BQ9^T3.YCW3*M'%S\;-Q\O(RU2LM=I=I=I=I=I=I=I=KUVEVEVO7:7:]=KU
XMVO7:]=IMKUVFVN)=IMKC7:Y6VO?:;:]]F-F-B=>];`U<+3Q-'&S\C-RLS)SL
XMC/QM'#U,'6K8C9?:XVVO7,.US5E<YF70P].]AL7`BV<````U,4#]*X;5G1K1
XMT+T*U(1'=G=S9F6G5&<UT'0W<ET7-(84U&,Y84U'(XO5<4BM9Q.9UW$YC8N)
XMU[^8V'T'V7SXV(SWV7SXV(SWV7SXV(SWV7SXV(SWV7SXV(SWV7SXV(SWV7T'
XMV(T&V8T&V7TCVW`<^`'/<!SX`<]P'/@!SW`<^`'.)P'6`?/2L*9H````,2M'
XM_$7.?6O2P\YU;,:%RVELEK;';`;&?`?$?";#?#;"C#?!?$?`?%>XQ7M\9ZC&
XM>GQWF,>'G'AXR(:<B&C(GUG(E8R86<F%^<B4^<F4G(HZR)2<F4_;/;3YR92<
XMBCK(E/G)E/G(E8R97XR):,B'C'EXQXA\B(]\>)]\:*?%BWQ7P'Q(P6Q'PFPW
XMPWP7Q6P6QFP&R%MLEI;+9VS61\_"TKUGS\!*:0```"4;+?HKP]EM?B?6C6XG
XMUHUN)]:-;B?6C6]]:-;WUHUO?6C6]]:-%/%](QC107TC)]%"?00VT4-M!$;$
XM5J5GA896O2T,U'T@L(UJ````/3,M^BO`,!)LML-\F<)\;!P7Q<+`C#4IP(PD
XM2,%\%5C!?`1WP8M)3#BDT7E=)X33ATU(5=5U37<UUX%MC!VLC3S,[/S(G`RG
XMP:R7PYQXQ)QHQ8QO?'?%C'>T*,=[,_?(>S*,AZ0HR'HS?):S-\EJ0HR6HSC)
XM>$-\IW1'RV<U?,9%5L[!9L^I/46@L(1K````/3)&^D3`?>O<P-VM[YWIWOC?
XMXHW_C>G>^-Z=[XW^*-_XWIWOC>G>^-_BC?^-[YW*V\#9P=A1C74XU52-15C3
XM5XT5B,]XG->HS'N,M\"<E\*,A\.,=\6,5\:,1\>,.,B,&,F,",J:C,B8S8B,
XMZ6C0A8T82=*"G3@HU)%]:!;8@4VGH)]L````/SA`_"NV/8:]2Z>\:Y][M[B+
XMJ+B+I[GWNWN(NHN(NGN?>[>XBZBXBZ>Y][M[B+J+B+I[GWNWN(NHN(NGN?>[
XM>XBZBXBZ>Y][M[B+J)-XNGE'BZ>3A[MY-XNHDWBYF#B;B).)MYDWJVJ$>PM$
XM%H.+"S0G9(L;!3=4BT=E<UB_BRESL[&J=IM6L/C5]]7XU??5^-7WU?C5XGUF
XMV#V0L'AM````-#$L^RNGT#3#S6+#S7/"S7F,UYC,CY?->GS(I\QZ?->O?,>W
XMRXI\Q[]\M\!\I\!\J,!\I\%\E\)\A\)\B,)\A\-\=\1\9\1\9\5\5\9\1\=\
XM-\=\-\A\)LI\!\M[?+>VS7E\YW?0=FT71]-R?5PM?`V*W%WPL(AN````+BM9
XM_43-YCW,//QLO)Q\S&D<+%E:QIU9U9U9U9U:U9U:U?G5K5YIU_G7G7DL#)S,
XMC+R<K(RL=CP<A=E=E=E=E=E=GUV5V6V?79XEV>-MGWV(V(UZU<#4P=/#T<7/
XMQL[(S<G,RLS)S<?/Q=##T\'5K7C8?9;9]<H\!<M*;+A6SL31P-9\(,!N;P``
XM`#,M+?PKVI`4TM[7VI>-=\?4C1?2?4?(U8J-=Y^-B'C:=HVX2=N$C<@YW(*=
XMV/*=R?&=V1G<U]R1^=V1G<H9W)*-V2^-R3C<A(VY2-J5C:AWV8B->*?7>WUG
XMT'TXTGT8U'N->'C;UM_2`4G:L'IP````/3@L_2K!WL`!&0$X`4<!5@%'>CL\
XMEL`[/(7!2SR$PCM,=,,[3&3#2SQSQ$L\9,0[3'+$2TV?2TV$P$V/2UUUM==,
XM!=;B7`757!757`;4]L!M1<%M/VP7T?;"?0]\-\Y\1\Y\2,R,2,Q\6<M\:,M\
XM9\QLALT\L\6PCW$````V,$#\*]&-G"U,;1=GSGE\QL!\IL)\AL-\=L5\5L9\
XM1L=\-\>,)LB,%\B/P'R8M\J+?)FHR9^GRII\FIC)FO?*F8R:F,F:?*FGRHJ,
XMF:C)BWR9M\F+^,B,",>,&<6,&L2,*\*,-Q3`C$<DI\6"9HQH/%R';!RGB,SX
XMW/?<^-SWW/C<]]SXW.)]UM\P$+!Y<@```#PW+/TJRM3(V,7:P]S"W<#=P:BL
XMZ<"<R,1\N,6,F,=\B,A\A\IL=\M\7WS'Q/?-?#C-?#?.?#?-C"C-?#]\Y\-\
XMV,*,U\-\Y\-\V,/WS7Q6S'QFS&QVRWQVRGR'R'RFR&RVQVS6Q'SVPGT6P&U'
XM>-;'VL/?C7"@2',````O,BS]*K+)L<R<Z,]]!L]WLCOVLTOEM4ODMDO4MTO$
XMMTO3N$O$N$O2N%TETDTN-='B71]M%='C;0XFT.)\_C?/?1;2/$"PBW0````Y
XM,RW]*[703`K,>,'*AU1LBE1FR*1(;'I#EL>C26QZ))?)CR.GRG%)C+;Q.GS9
XMF,U!.GSDPGSDP8SDP7SSP8SSP7T#P7STP(SSP7T#P7STP7SSP8SDP7SSPGSD
XMPGSCPWS4PWS3Q'S$Q'RTQ7RSQGRDQGR4R'QTR7QDRWPUS7P5SYAM+'UL/;G*
XMH,YU````/S99^T3*\]?TU_/7]-?SU_37\]?TU_/7]-?SU_37/1M<B[P[^_A3
XM9[QX.'N'E)>V>DI[-[$[%[%[([)K![)+-I>S2S:'M#M'9[4[5EBT2U='M4M7
XM\WMCMG\GMDMG\7MSMW%[9+:UMDMG'WMSMW%[9+:!>V2V<GMCMH)[8[9S>U2U
XM@WM4M71[4[5V:U.T=VM$M'=[-+-Y:S.S>GLCLGL6L4L6M&L$I[9J.GN'@WB[
XMA46+^_P[O(M-'TU_/7]-?SU_37\]?TU_/7]-<\F@M'8```!!.4#\*X?5L<HE
XMM,<T1)Q4-&G#1#>L%$2)P$4ZF^2XF]2ZB\2[FZ2]BY2^FW6_BV7`FU3"BT3#
XMBS3$FQ3&BP3'BDR8A,J'3+ADS81,Z#3/@ET(%-&QTK#4G5^-?XU9U+#2L=%!
XMC04HST.,Y$C-1HRT>,I(C)2HQTL(QDL9Q$LXPTM(PDM9P%MHOUMYODN8O4NI
XMNTO(NDO9N$OIHU3`F$1,&G-$PY9#3%E$0\>T4LJQU7B@]W<```!%/EG]1-'S
XMWTW^(]]-_B/?3?XCWTW^(]]-_B/?3?\\5;L[-+&K=+)XLK8[*'5&M3L:5&:U
XM.QI$AK-+&D.6LSLJ-):S.RHDE[,[2".GLDM7(Z>R.V<4F+([=A.GLSN%$Z>R
XM2XF8LCN4$Z>S.Y2S>S.Y2RBR2Y2R>S.Z.RBS.Z.R>T.Z.R>S2Y2QBS.Z.R>T
XM.Z.R>T.Y2R>S2Y.RBS.Y2R][0[A+-[-+=+1[,[=+5[,[<[9[,[9+9[)+5+=[
XM([5+E[$[1+I[$[-+QZ2Q6]B3L5OX@Z7"ECAL6P%%?)O<ZXU+'93?XCWTW^(]
XM]-_B/?3?XCWTW_/*H*!X````0CPM_BO:2R+->DRXH\NH3+ITS*<\VF3-I4T(
XM5-%T32=#U&--1C/64SUD-+P[Q#.\6[0SNVNT)+MKLS.\:[,SNWNS,[MKM"2[
XM:[,SO&NS,[MKM#.[:[-#NVND0[M;M$.[6Z13NTNE7TN5N59+AKA76VBV6%M9
XMM'AK*QLGE["SJ+"5D96K&\*[LKL[JTN5N+:V>WN+2;2[L;&QOWMWND`->0``
XM`!D$8_9)$A#_$A"P17H````M'F/Y2<U<I,Q,Q,U,U,U<SUS4S>T5S4S?7,7,
XM7-3,7,3+7)71703/7/3.7.7.]<Y,[M%<Y,[USESDSTSTT$T$T5"X17L````M
XM'F/Y25T5T$SUSTSESESO7.3.[17.3.]<Y<Y,],]-!-!-%<I,Q,Q,U,U,U<SU
XMS4S>T5S4S?7,7,7-3,7,3+7)7-"P9'P```!212_Z+\)P$AP,'>.<7<.,C:-L
XMO9-<[61-#50[?!TT.,&]%2?%K04FR)SE)LJ<U27-G*8ESIR&)="L5R71O!@T
XMT\%[--701-;.4]G+8]K(@]S%D][!P!`2<`3-`G$+,0)QD!Q]````4D4O^B\=
XMD0E1V0!!C9$)4=D`08V1"5'9$+!Y?@```"TB8_M)$M/TTETO3272]-)=+B32
XM72]-)=+TTETO3272]-)=+TTETN)-)=+TTETO3272]-)=+TTETO3272XDTETO
XM3272]-)=+TTETO3272]-)=+B3272]-)=+TTETO3272]-)=+TTETN)-)=+TTE
XMTO327])-,A"0OG\```!214CZ1:.+&*VEJ:6HJ:6II:RAK*.NFNH8B@>@B)>C
XMA8HWAJ9S>F9VJ'%ZAE:J86JF1:RAK%1:V:U3:MFM8O6O>O46L%L*'[%;&@LC
XMLJ#FT:'/;B%<]2;-8US51LME7+5FR6=<E8;':6Q6H?;#:C;!:E:_:G:]:H>[
XM>I>Y>K>W>M>U>O>S>Q>Q>S>O>U>M>W>K>Y>I>[>G>]>E>_>C?!>A?#>7Q7=\
XM=G;)96RV-LWV%L^AT?G3]]7UUSMPL#NA````-258^$3&+6\]5=/WT9S[S<',
XM,5$\LR4CR%)27%4U-<-%54P%9665=756E986I:K`7`3@)\1=4\5P-Z(```!I
XM7"/Z*<`M+STO/2/131/2/131313170715M`PO!T,U<U<Y<Y,],]-`]`]!-`]
XM#ST//1**L#NC````-258^$3%/5X"=<1,!<"J6F%I66575UE65EP$553#4U-<
XM524ER#)2/+,5$\S!S;SYT??375\]<L5P.:0```!I7"/Z*8HM'ST//0/030/0
XM/03/3/3.7.7-7-T"!?'3/09=%=!=%-%-%-$](]%-$]+STO/2+`"PA*8````U
XM+C7],A/>;<?;G9O7P=7"U%&M)3K059SU:LU8K+6IRENLA<&L9<.L1<2L-<:L
XM%<BK7*FERZA<VF7/I%T*-=*A74PM;`U,+2H5T*-<^D7-IERZA<J:7(JUQJP5
XMQ*PUPZQ%P:QENLA:G*6*RU:LU5G/4ZT%&M+"U,'5O7G9?;;=/>"PA*@````U
XM+C7],MX]UMM]F=>]7!U,+2H5T*-<^57-IERZA<FJ7(JUQJP5Q*PUPYQ5P:QE
XMNLA:G*6*RU:LU4K/4ZT%&M+"U,#6PM11K24ZT%2L]6K-6*RUJ<I;K(7!K&7#
XMG%7$K#7&K!7(JUR:I<NH7-IESY5="C72H5U,+5P=>]F=M]QMXQ#8"K`````R
XM,@4`2P_`L#NU````1CD\^CH3`5,>W5`3L!%A4!%2;?8UWU1MUE;;9GV7>-6)
XMC3BYSYP;R;Q,'!P<?9RM7/S]7)W,'*"P.[8```!&.3SZ.LK!W,G5S\_5RMG'
XMP<'!Q+R;P9SYN-.)C5AWV79MME;=9%WU-M]B4!%18!&^W0$U$P%3$*!AMP``
XM`$8S/_<WO[V\PKC%ML>TR+2QRJS9SHSXSWT'T6T6T6TETFT6TETFTO72;2XE
XMTFTO73UQ"@'UTVT^)=-M/UTVTUTVTVTUTVTVTVTGTGTHT8T9T*T+'-R+?'N,
XM6[PK^]&@6KH```!2/S_W-[_)O,ZXT;;3M-2TL=:MF=J-N-M]Q]UMUMUMWVW6
XMWEWFWO7>;>XEWFWNA=]M_B7?;?]=]M]=]M_VWVWVWVWGWGWHW8W9W*W+'9U+
XM?3N-&[SK_)&@6KL```!2/S_W-QR;_.N]&XT[?4V;'<K<G=C=C>?>?>;?;?;?
XM]M]M]=]M_UWVW^)=]NC?7>;BWEWFWO7>;>7>;=]MUMUMUMU]Q]N-N-J=FM:Q
XMM-2TT[;1N,Z\R;^09;X```!2/U3W0;"ZK;^IPJ?$I<6EHL>@RIRXS(S'S7SF
XMSFSFSO;.;/7/;/]<]L_B7/;/Z%T&T.)=!M#UT&T%T&T/;0;0;0;/?/?/C.C.
XMG-H,VBRL6HQ*G"K+^PN@`[K132+3/2/1$)!DOP```%(_5/=!&ZL+^LPJG$J,
XM7*HLV@S9SHSHSWSWSVT&T&T/;0;070;0]=!M#B70;HT%SVXL]<]L_USVSUSV
XMSO;.;.;.;.?-?,C,C+G*H,>BI<6EQ*?"J;^MN@`]'1/2/3+231.@$L@```!&
XM.1SZ(QW!"`'=ZZV5VC&P-LP````U*"GZ+,2-#$RLC&S,/.P="]*?U'UE_8/B
XMVA`!G.(=H_V%UG_4G2O0P<[#S,;(RL30C$"`T<T```!I7%KZ1:Z5T)_(I<*K
XMO:^YEI66M9.?D[&2I9*ND:F1K)"MD*F0L9"FBUBDBWBBBYB@>]>>>_><?!>;
XM;#::;%:8;':6]LEI1LMI-<U9)LUI!L]H]=%7;19ETU5M-D]=53;58N-==1;7
XMDNDMF2UVXQ774FU6/UU51M-E735FT6?UT5AL]I!LUI)<U9-LMI3VR6EFQVF&
XMQ6FFPVFWP7G'OWGGO7H(N8HHMXI(M8II"QD*F0K9"LD:F1KI*EDK&3GY.UEI
XM66N:^]J\*ER)_0E:X+`LS@```"\C6OI%Q#TNE]'F73Y3QF@X8K4U!C4ULF@X
XM;&XST^1='L]]'L-=/E/$L$S/````+R-:^D7$/2YWT>5=/C/&:#ABM34&-36R
XM:#AL;C/3Y5T>=](P)STN=]'D73Y#Q98VD<$S,$0S/!&6-I0<`\`<?C/3Y%T>
XM=](\0+!KU0```"PK6OI%U%V)U<#25$T59,]67/5(XLU4G,9)S%6<Q6?-6#SN
XM)MGUV>1MA]CD;8XWV&V.5]>-?E?7C7Y7V&V.-]CD;8?8Y&V?79XFSCA<UV7,
XME5S)1LSBE%S81<]67/1ET41=+`U9V%U`P,+8````-2I2^TH!(P&>)0%VVX1=
XMG1%=?9U8:=5L;4;0?272C0;2G%TYM=.Y;346A=126%TV)7;34V9=1456TV1D
XMXFTU5C?297+VTU=B;29V+VTEAA?1:-'BT5G1T&G1_06M'&K1XL6]&VO1^US1
XMILT?I=#1EM#1XI71T8;1?Q:%TF)G;28O=ETG)U;2<^)E7396-M)F]C739U)M
XM-885TVE1736ZTER=)M"-%M)]!M1L;5EHUMC7U]E4C<4!=@%^)0&3`2"1-=D`
XM``!:3UK[1;>CU*O-L<BUQ**AHL"@J:"]BOBZBSBW>W>U:[:S:]:Q7!6O7#6M
XM7%6K7'6I7)6H3+2G7+6E7-6D3/2C7/6B312A716@3325TUA-5'755DM8L$9+
XM-%.N15L3H2K%1+!*,JQ$2O2E*K0UKDIRJE)*Y:<JM"2M6I*J0DK4JBJD)*Q:
XMA:E!6K:G:IGZQ:AJJ*MJAJJ*MJE*N*M<..BJ;#FI;"44J6PD)*I<)"]*IL%"
XM6J7`4TJEK2IT1*IJPJ=$6J6K*G54JTJRIT9*M:H:A&6K6H*G5TK$J!J$A:Q*
XM8:A92M2D&I2@6N.A*I6A2O1RJTHEL8K%HTSTI%S5I5RUITRTJ%R5J5QUJUQ5
XMK5PUKUP5L6O6LVNVM7MWMXLXNHKXO:"IH,"BH:+$M<BQS:O4H[=`$=H````W
XM+"W[+!=1T^;V_3%U$(@,X````%`;8]Y(#K[>EX@-X0```%`;8]Y*[>DI<.#`
XM.^(```!0'6/>2-Q-IME]B->-:=:=:=:=>->->=:=;YUIUOG6G6^M7ZU>*M7Z
XMU;U>*M6]7ZU>2]6M7@++U<!)XP```%`=9?!*U>W[XM2]3[U:U;U:U:U:U:UI
XMUIUIU:U:U9U9UIU*UGV5VWV:V9V)V9V*UZV)V)V)UZUZUZUZUKUJUOO6XKUN
XMW[#(.>0```!0'6/>2N`LO6K6Y+UOK6O6XJUKUOK7XJU_K7^M>=CYV)V/G8G8
XMG8C9C8G8G8G8G9C9C9?:;<2(#?````!0&V/N2`X.WI>2@`SQ````4!MC[DJ7
XM[>#KR#GR````4!UC\$A-QMI]F-F-F=B=B=B=B-F-B=B=CYV)V/G8G7^M?ZU^
XM*M?ZUKUN*M:];ZUN2]:M;@++R$GS````4!UEWDKM^];BO6^]:M:]:M>M>M>M
XM>=B=B=BM>MB=F=B=FME]M=E]:M2=:=6=6M6M6=:=:=:M6M6M6M6]6M7[U.*]
XM3M^]4,`[]````%`=8_!*U>`LO5K5Y+U?K5O5XJU;U?K5XJU?K5^M:=;YUIUO
XMG6G6G7C7C7G6G6G6G6C7C8?9;:3<V`OU````4`MEWDH`19"8"O8```!I:`,`
XM&P_@@&;[````:5PY^C2J3>]=U=UMU=U=UMU=U=UMQMQMQMQMS*G\R=SIO/F=
XM"9?:C:C9C8D=>1U9/4E-:2V)39D]N1VY'<C=C<C=?=T)S/G,Z=S)_*H6WFWF
XMWFWFWEWUWFWEWUWFWEW_7?2\V`O\````-RPM^RP`>^"`9OT```!I7#GZ-+Q-
XM_UWUWFWEWUWFWEWUWFWFWFWFWFH<J?S)W.G,^<T-U]V-R-V-R1VY';D]F4V)
XM+6E-23U9'7D=B-F-J-IYG0F<^;SIW,G\K<;<;<;<;<;=7=7=;=7=7=;=7=]=
XBY*J0&_X```!214?Z1+<]?K5;?9$)4=FWZQ6WV1"5'9'U]M7=
X`
Xend
END_OF_FILE
  if test 14167 -ne `wc -c <'fonts.lj/S.24.pk.UU'`; then
    echo shar: \"'fonts.lj/S.24.pk.UU'\" unpacked with wrong size!
  fi
  # end of 'fonts.lj/S.24.pk.UU'
fi
if test -f 'lib/lethead.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'lib/lethead.ps'\"
else
  echo shar: Extracting \"'lib/lethead.ps'\" \(973 characters\)
  sed "s/^X//" >'lib/lethead.ps' <<'END_OF_FILE'
X%	Copyright 1985, 1986, 1987, 1988 R.H. Lathwell Associates:
X%		Elegant Communications Inc.  All Rights Reserved
X%
X%    Permission to copy and further distribute is freely given provided
X%    this copyright notice remains intact and that this software is not
X%    sold for profit.
X%
X%	Project:	Generic Troff drivers
X%	Module:		lhead.ps.sh
X%	Author: 	Chris Lewis
X%	Specs:		LetterHead overlay inclusion.
X%ident  @(#)lhead.ps.sh: 2.1 Copyright 90/07/18 16:52:18 Chris Lewis"
X
X/LetterHead {
X   /Logosave save def
X   matrix currentmatrix setmatrix 180 740 translate
X   % Box
X   newpath 0 12 moveto 0 32 rlineto 250 0 rlineto 0 -32 rlineto closepath fill
X   % Type in box
X   /Helvetica findfont 16 scalefont setfont
X   9 17 moveto 1 setgray (R.H. LATHWELL ASSOCIATES:)show
X   % Type below box.
X   /Helvetica findfont 12 scalefont setfont
X   25 0 moveto 0 setgray (ELEGANT COMMUNICATIONS, INC.)show
X   % Underline.
X   -162 -4 moveto 630 0 rlineto stroke
X   Logosave restore
X} def
END_OF_FILE
  if test 973 -ne `wc -c <'lib/lethead.ps'`; then
    echo shar: \"'lib/lethead.ps'\" unpacked with wrong size!
  fi
  # end of 'lib/lethead.ps'
fi
if test -f 'lib/ps.lib' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'lib/ps.lib'\"
else
  echo shar: Extracting \"'lib/ps.lib'\" \(11215 characters\)
  sed "s/^X//" >'lib/ps.lib' <<'END_OF_FILE'
X%	Copyright 1985, 1986, 1987, 1988 Chris Lewis
X%		All Rights Reserved
X%
X%    Permission to copy and further distribute is freely given provided
X%    this copyright notice remains intact and that this software is not
X%    sold for profit.
X%
X%	Project:	Generic Troff drivers
X%	Module:		ps.lib
X%	Author: 	Chris Lewis
X%	Specs:		Predefinitions for PostScript
X%ident  @(#)ps.lib: 2.2 Copyright 90/10/12 13:15:42 Chris Lewis"
X
X/Y { 3 1 roll dup /CurY exch def moveto show } bind def
X/X { exch CurY moveto show } bind def
X/hits 0 def
X/misses 0 def
X/pagecount 0 def
X
X/drawfraction {
X    /denominator exch def
X    /numerator exch def
X    /origY exch def
X    /origX exch def
X    origX curPoints 4.7 div add origY moveto
X    (/) show
X    curFont findfont curPoints .5 mul cvi scalefont setfont
X    origX origY curPoints 3 div add moveto
X    numerator show
X    origX curPoints 2.5 div add origY moveto
X    denominator show
X    curFont findfont curPoints scalefont setfont
X    origX origY moveto
X} def
X
X/mySetLineWidth {
X    curPoints 3 72 div mul setlinewidth
X} def
X
X/do12 {
X    (1) (2) drawfraction
X} def
X
X/do14 {
X    (1) (4) drawfraction
X} def
X
X/do34 {
X    (3) (4) drawfraction
X} def
X
X/doff {
X    moveto
X    (f) show curPoints 20 div neg 0 rmoveto (f) show
X} def
X
X/doFi {
X    moveto
X    (f) show curPoints 20 div neg 0 rmoveto (\256) show
X} def
X
X/doFl {
X    moveto
X    (f) show curPoints 20 div neg 0 rmoveto (\257) show
X} def
X
X%	This should be sort of a font-caching mechanism - eg:
X%	remember each font/point combination requested, and
X%	if the setting is not already known, *then* do the findfont/scalefont.
X%	Otherwise, simply retrieve it.
X%	However, even with simply recalculating the font each time, it
X%	isn't *that* slow.  Eg: 20 seconds or so for *very* "font-changy"
X%	pages.
X%
X%	Trial font cache - I can't think in Polish... ;-)
X/SetFont {
X    /curPoints exch def
X    /curFont exch def
X    %	Concatenate the curFont string with the curPoints to create
X    %	a new name and assign to cF
X
X    /cF 50 string def
X
X    cF 0
X	    cF curFont cF cvs		% cF 0 string "curFont"
X	    length dup			% cF 0 "curFont\0\0..." N N
X	    curPoints 10 string cvs	% cF 0 "curFont\0\0..." N N "points"
X	    dup length			% cF 0 "curFont\0\0..." N N "points" M
X	    3 -1 roll add		% cF 0 "curFont\0\0..." N "points" M+N
X	    4 1 roll			% cF 0 M+N "curFont\0\0..." N "points"
X	    putinterval			% cF 0 M+N    (cF <- "curFontpoints")
X    getinterval				% "curFontpoints"
X
X    /cF exch def
X    cF
X    cvn					% /curFontpoints
X
X    where {
X	/hits hits 1 add def
X	pop
X    } {
X	/misses misses 1 add def
X	cF curFont findfont curPoints scalefont def
X    } ifelse
X    cF load setfont
X} def
X
X/metrics {
X    /psize 16 def
X    /Times-Roman psize SetFont
X    /charcount exch def
X    /curpos 720 def
X    /xpos 72 def
X    xpos curpos (Execution Summary:) Y
X    /curpos curpos psize sub def
X    xpos 36 add curpos (Font cache hits: )Y
X    hits (         ) cvs show
X    /curpos curpos psize sub def
X    xpos 36 add curpos (Font cache misses: )Y
X    misses (         ) cvs show
X    /curpos curpos psize sub def
X    xpos 36 add curpos (Character count: )Y
X    charcount (        ) cvs show
X    /curpos curpos psize sub def
X    xpos 36 add curpos (Page count: )Y
X    pagecount (        ) cvs show
X    /curpos curpos psize sub def
X    xpos 36 add curpos (Execution time (seconds): )Y
X    usertime btime sub 0.001 mul (          ) cvs show
X    showpage
X} def
X
X/docircle {
X    /origY exch def
X    /origX exch def
X    /radius curPoints 3 div def
X    newpath origX radius add origY radius add radius 0 360 arc
X    mySetLineWidth
X    stroke
X    origX origY moveto
X} def
X
X/doru {
X    moveto
X    0 curPoints 5 div rmoveto (_) show
X} def
X
X/do34em {
X    /origY exch def
X    /origX exch def
X    /emheight curPoints .23 mul def
X    newpath
X    origX origY emheight add moveto
X    origX curPoints .75 mul add origY emheight add lineto
X    mySetLineWidth
X    stroke
X    origX origY moveto
X} def
X
X/dosq {
X    /origY exch def
X    /origX exch def
X    /L curPoints .8 mul def
X    newpath
X    origX origY moveto
X    origX origY L add lineto
X    origX L add origY L add lineto
X    origX L add origY lineto
X    closepath
X    mySetLineWidth
X    stroke
X    origX origY moveto
X} def
X
X/dobox {
X    /origY exch def
X    /origX exch def
X    /L curPoints def
X    newpath
X    origX origY moveto
X    origX origY L add lineto
X    origX L add origY L add lineto
X    origX L add origY lineto
X    closepath
X    1 setlinewidth
X    stroke
X    origX origY moveto
X} def
X
X
X/fourpops {
X    4 {pop} repeat
X} def
X
X%	These are macros so that they can be redefined.
X%	print current page.
X/ShowPage {
X    showpage
X    /pagecount pagecount 1 add def
X} def
X
X%	Emitted at beginning of page.
X/StartPage {
X    Form
X} def
X
X%	If you want to define a Bell System Logo, go ahead.  This
X%	one draws an animal (ferret) face
X%	Object should be scaled off of curPoints, with origX,origY
X%	lower left coordinates.
X/BellSymbol {
X    /origY exch def
X    /origX exch def
X    /TEMPSAVE save def
X
X    /Radius curPoints 3 div def	% Face Radius
X    /HRadius Radius 2 div def	% Half Face Radius
X    /NRadius Radius 6 div def	% Nose Radius
X    /ERadius Radius 8 div def	% Eye Radius
X    /EarRadius Radius 3 div def	% Ear Radius
X    /FaceType (Ferret) def
X
X    /MRadius Radius 4 div def	% Mask corner radius
X    /TopMask Radius .7 mul def	% XCent & YCent max delta
X    /BotMask NRadius 1.1 mul def % YCent min delta
X
X    /XCent origX Radius add def
X    /YCent origY Radius add def
X
X    newpath
X    %	Main face
X    XCent YCent Radius 0 360 arc mySetLineWidth stroke
X    %	Nose
X    XCent YCent NRadius 0 360 arc fill
X    %	Left Ear
X    XCent Radius 45 sin mul sub
X	YCent Radius 45 sin mul add EarRadius 20 250 arc mySetLineWidth stroke
X    %	Right Ear
X    XCent Radius 45 sin mul add
X	YCent Radius 45 sin mul add EarRadius -70 160 arc mySetLineWidth stroke
X    %	Cleft
X    XCent YCent NRadius sub moveto
X    XCent YCent HRadius sub lineto
X    mySetLineWidth stroke
X
X    %	Mouth
X    XCent HRadius 45 sin mul sub YCent HRadius 45 sin mul sub moveto
X    XCent HRadius 30 sin mul sub YCent HRadius sub lineto
X    XCent HRadius 30 sin mul add YCent HRadius sub lineto
X    XCent HRadius 45 sin mul add YCent HRadius 45 sin mul sub lineto
X    mySetLineWidth stroke
X
X    FaceType (Ferret) eq {
X	%	Mask
X	.6 setgray
X	XCent TopMask sub YCent BotMask add YCent TopMask add add 2 div moveto
X
X	XCent TopMask sub YCent TopMask add
X	    XCent TopMask add YCent TopMask add
X	    MRadius arcto fourpops
X	XCent TopMask add YCent TopMask add
X	    XCent TopMask add YCent BotMask add
X	    MRadius arcto fourpops
X	XCent TopMask add YCent BotMask add
X	    XCent TopMask sub YCent BotMask add
X	    MRadius arcto fourpops
X	XCent TopMask sub YCent BotMask add
X	    XCent TopMask sub YCent TopMask add
X	    MRadius arcto fourpops
X	fill
X
X	0 setgray
X    } if
X
X    %	Eyes
X    XCent HRadius add YCent HRadius add ERadius 0 360 arc fill
X    XCent HRadius sub YCent HRadius add ERadius 0 360 arc fill
X    TEMPSAVE restore
X    origX origY moveto
X} def
X
X%	bracket building font
X%!
X%
X% Michael Rourke, University of N.S.W., Australia
X%
X/BracketFontDict 9 dict def /$workingdict 10 dict def
XBracketFontDict begin
X/FontType 3 def
X/FontName (Bracket) cvn def
X/FontMatrix [ 0.001 0 0 0.001 0 0] def
X/FontBBox [ -50 -250 1000 1000 ] def
X/Encoding 256 array def 0 1 255 { Encoding exch /.notdef put } for
XEncoding
Xdup 65 /Cbv put	%A
Xdup 66 /Clt put	%B
Xdup 67 /Clk put	%C
Xdup 68 /Clb put	%D
Xdup 69 /Crt put	%E
Xdup 70 /Crk put	%F
Xdup 71 /Crb put	%G
Xdup 72 /Clc put	%H
Xdup 73 /Clf put	%I
Xdup 74 /Crc put	%J
Xdup 75 /Crf put	%K
Xdup 76 /Cbr put	%L
Xdup 77 /Crn put	%M
Xdup 78 /Cci put	%N
Xdup 79 /Cru put	%O
Xpop
X/CharProcs 24 dict dup begin
X/setC { 0 -50 -250 500 1000 setcachedevice} def
X/C.bv {220 -250 moveto 0 1000 rlineto
X60 0 rlineto 0 -1000 rlineto fill } def
X/C.barc { 750 moveto 180 0 rlineto 0 -60 rlineto -180 0 rlineto fill } def
X/C.barf { -250 moveto 180 0 rlineto 0 60 rlineto -180 0 rlineto fill } def
X/C.brk.end { 1 setlinewidth moveto rlineto rcurveto
Xreversepath 60 0 rlineto rlineto rcurveto fill } def
X/C.setl {dup dtransform exch round exch idtransform pop setlinewidth } def
X/Cbv {
X300 setC
XC.bv
X} def
X/Clt {
X300 setC
X  0 150 50 210 140 250   0 730  0 150 50 250 200 250   0 750   220 -250
X  C.brk.end
X} def
X/Clk {
X300 setC
X  1 setlinewidth  220 -250 moveto  0 400 rlineto  0 50 -50 100 -100 100
X    rcurveto
X    50 0 100 50 100 100 rcurveto  0 400 rlineto  60 0 rlineto  0 -400 rlineto
X    0 -50 -50 -100 -100 -100 rcurveto  50 0 100 -50 100 -100 rcurveto
X    0 -400 rlineto  closepath fill
X} def
X/Clb {
X300 setC
X  0 -150 50 -210 140 -250   0 -730  0 -150 50 -250 200 -250   0 -750  220 750
X  C.brk.end
X} def
X/Crt {
X300 setC
X  0 150 -50 250 -200 250   0 750   0 150 -50 210 -140 250   0 730  220 -250
X  C.brk.end
X} def
X/Crk {
X300 setC
X  1 setlinewidth  220 -250 moveto  0 400 rlineto  0 50 50 100 100 100 rcurveto
X  -50 0 -100 50 -100 100 rcurveto  0 400 rlineto  60 0 rlineto  0 -400 rlineto
X  0 -50 50 -100 100 -100 rcurveto  -50 0 -100 -50 -100 -100 rcurveto
X  0 -400 rlineto  fill
X} def
X/Crb {
X300 setC
X  0 -150 -50 -250 -200 -250   0 -750   0 -150 -50 -210 -140 -250   0 -730
X  220 750   C.brk.end
X} def
X/Clc {
X300 setC
X  C.bv   280   C.barc
X} def
X/Clf {
X300 setC
X  C.bv 280 C.barf
X} def
X/Crc {
X300 setC
X  C.bv 40 C.barc
X} def
X/Crf {
X300 setC
X  C.bv 40 C.barf
X} def
X/Cbr {
X0 0 -50 -250 0 1000 setcachedevice
X  40 C.setl  0 -250 moveto  0 1000 rlineto  stroke
X} def
X/Cru {
X0 0 -50 -250 1000 0 setcachedevice
X  40 C.setl  0 -250 moveto 500 0 rlineto stroke
X} def
X/Crn {
X300 setC
X  40 C.setl  0 895 moveto  500 0 rlineto  stroke
X} def
X/Cci {
X600 0 -50 -250 700 1000 setcachedevice
X  40 C.setl  400 250   300   0 360 arc   stroke
X} def
Xend def
X/BuildChar
X{
X	$workingdict begin
X	/charcode exch def
X	/fontdict exch def
X	fontdict /CharProcs get begin
X	fontdict /Encoding get
X	charcode get load
X	gsave
X	0 setlinecap 0 setgray newpath
X	exec
X	grestore
X	end end
X} def end
X/BracketFont BracketFontDict definefont pop
X
X/Ellipse {
X	/Yaxis exch 2 div def
X	/Xaxis exch 2 div def
X	currentpoint exch Xaxis add exch
X	/savematrix matrix currentmatrix def
X	translate
X	Xaxis Yaxis scale
X	1 0 moveto
X	0 0 1 0 360 arc
X	savematrix setmatrix
X	%currentpoint exch Xaxis 2 mul add exch moveto
X} bind def
X
X/Arc {
X	/eY exch def
X	/eX exch def
X	/cY exch def
X	/cX exch def
X	currentpoint cY add exch cX add exch	% center x y
X	cY dup mul cX dup mul add sqrt % radius
X	cY neg cX neg atan	% ang1
X	eY eX atan		% ang2
X%	5 copy
X%	(                    ) cvs print
X%	( ) print
X%	(                    ) cvs print
X%	( ) print
X%	(                    ) cvs print
X%	( ) print
X%	(                    ) cvs print
X%	( ) print
X%	(                    ) cvs print
X	arc
X} bind def
X
X%	This macro is invoked by ShowPage to display the current form.
X%	Usually redefined to point at a form loaded by an include
X%	directive.  Redefinition triggered by .sR O<formname> troff
X%	directive.
X%	Global default form (usually redefined top of each page anyways)
X/Form {} def
X%	This is a convenient place for putting your extra inclusions.
X%	Eg: this would load conf.ps (from current directory or LIBDIR)
X%	and insert it into the end of the prolog.
X%   This loads the confidential form.
X%%%include confid
X%%%include lethead
END_OF_FILE
  if test 11215 -ne `wc -c <'lib/ps.lib'`; then
    echo shar: \"'lib/ps.lib'\" unpacked with wrong size!
  fi
  # end of 'lib/ps.lib'
fi
echo shar: End of archive 6 \(of 16\).
cp /dev/null ark6isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 16 archives.
    echo "Read the README to get started with psroff installation"
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still must unpack the following archives:
    echo "        " ${MISSING}
fi
exit 0
-- 
Chris Lewis, Phone: TBA
UUCP: uunet!utai!lsuc!ecicrl!clewis
Moderator of the Ferret Mailing List (ferret-request@eci386)
Psroff mailing list (psroff-request@eci386)