Description: <short summary of the patch>
 TODO: Put a short summary on the line above and replace this paragraph
 with a longer explanation of this change. Complete the meta-information
 with other relevant fields (see below for details). To make it easier, the
 information below has been extracted from the changelog. Adjust it or drop
 it.
 .
 axiom (20170501-14) unstable; urgency=medium
 .
   * support gcl27
Author: Camm Maguire <camm@debian.org>

---
The information above should follow the Patch Tagging Guidelines, please
checkout https://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: (upstream|backport|vendor|other), (<patch-url>|commit:<commit-id>)
Bug: <upstream-bugtracker-url>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: (no|not-needed|<patch-forwarded-url>)
Applied-Upstream: <version>, (<commit-url>|commit:<commid-id>)
Reviewed-By: <name and email of someone who approved/reviewed the patch>
Last-Update: 2025-02-11

--- axiom-20170501.orig/Makefile
+++ axiom-20170501/Makefile
@@ -11,7 +11,7 @@ TMP:=${OBJ}/tmp
 ZIPS:=${SPD}/zips
 BOOKS:=${SPD}/books
 SRCDIRS:="interpdir sharedir algebradir etcdir docdir \
-          graphdir smandir hyperdir browserdir inputdir"
+          graphdir hyperdir browserdir inputdir"
 
 SYS:=$(notdir $(AXIOM))
 DAASE:=${SRC}/share
@@ -35,8 +35,8 @@ TOUCH:=touch
 UNCOMPRESS:=gunzip
 
 ####K C Related variables
-PLF=${SYS}platform
-CCF="-O2 -fno-strength-reduce -D_GNU_SOURCE -D${PLF} \
+PLF=$(shell echo $(SYS) |tr /a-z/ /A-Z/)platform
+CCF="${CFLAGS} -O2 -fno-strength-reduce -D_GNU_SOURCE -D${PLF} \
      -I/usr/X11/include \
      -Wno-absolute-value -std=gnu89 -w" 
 INC:=${SPD}/src/include
@@ -63,12 +63,12 @@ BYE:=bye
 #GCLVERSION=gcl-2.6.8pre3 
 #GCLVERSION=gcl-2.6.8pre4
 #GCLVERSION=gcl-2.6.8pre7
-#GCLVERSION=gcl-cygwin
+GCLVERSION=gcl-cygwin
 #GCLVERSION=gcl-2.6.9
 #GCLVERSION=gcl-2.6.10
 #GCLVERSION=gcl-2.6.11
 #GCLVERSION=gcl-2.6.12
-GCLVERSION=gcl-2.6.13pre
+#GCLVERSION=gcl-2.6.13pre
 GCLDIR:=${LSP}/${GCLVERSION}
 GCLOPTS="--enable-vssize=65536*2 --disable-xgcl --disable-tkconfig"
 LISP:=lsp
@@ -136,62 +136,40 @@ WEAVE=${WEAVE} \
 XLIB=${XLIB} \
 ZIPS=${ZIPS} 
 
-all: rootdirs axiom.sty tanglec libspad
+all: rootdirs axiom.sty tanglec libspad input_files book_files src_files
+#	@ echo 1 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART}
+#	@ echo 2 Environment '${ENV}'
+#	@ ${BOOKS}/tanglec Makefile.pamphlet "Makefile.${SYS}" >Makefile.${SYS}
+#	@ cp ${BOOKS}/dvipdfm.def ${MNT}/${SYS}/doc
+#	@ cp ${BOOKS}/changepage.sty ${MNT}/${SYS}/doc
+#	@ ${EXTRACT} Makefile.pamphlet
+#	@ cp Makefile.pdf ${MNT}/${SYS}/doc/src/root.Makefile.pdf
+#	@ echo p7 starting make of src
+#	@ ${ENV} $(MAKE) -f Makefile.${SYS} 
+#	@ echo 3 finished system build on `date` | tee >lastBuildDate
+
+Makefile.${SYS}: Makefile.pamphlet
+	@ ${BOOKS}/tanglec $< "Makefile.${SYS}" >$@
+
+${MNT}/${SYS}/doc/src/root.Makefile.pdf: Makefile.pdf
+	@cp $< $@
+
+${MNT}/${SYS}/doc/dvipdfm.def: ${BOOKS}/dvipdfm.def
+	@cp $< $@
+
+${MNT}/${SYS}/doc/changepage.sty: ${BOOKS}/changepage.sty
+	@cp $< $@
+
+Makefile.pdf: Makefile.pamphlet
+	@ ${EXTRACT} $<
+	
+src_files: Makefile.${SYS} ${MNT}/${SYS}/doc/src/root.Makefile.pdf \
+	   ${MNT}/${SYS}/doc/dvipdfm.def ${MNT}/${SYS}/doc/changepage.sty
 	@ echo 1 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART}
-	@ echo 2 Environment ${ENV}
-	@ ${BOOKS}/tanglec Makefile.pamphlet "Makefile.${SYS}" >Makefile.${SYS}
-	@ cp ${BOOKS}/dvipdfm.def ${MNT}/${SYS}/doc
-	@ cp ${BOOKS}/changepage.sty ${MNT}/${SYS}/doc
-	@ ${EXTRACT} Makefile.pamphlet
-	@ cp Makefile.pdf ${MNT}/${SYS}/doc/src/root.Makefile.pdf
-	@ if [ "${RUNTYPE}" = "parallel" ] ; then \
-	   ( echo p4 starting parallel make of input files ; \
-	     ${ENV} ${MAKE} input ${NOISE} & ) ; \
-	  else \
-           if [ "${BUILD}" = "full" ] ; then \
-	   ( echo s4 starting serial make of input files ; \
-             cd ${MNT}/${SYS}/doc/src/input ; \
-	     cp ${BOOKS}/axiom.sty . ; \
-             cp ${SRC}/input/*.eps . ; \
-	     for i in `ls ${SRC}/input/*.input.pamphlet` ; do \
-	      if [ .${NOISE} = . ] ; \
-	      then \
-               latex $$i ; \
-	      else \
-	       ( echo p4a making $$i ; \
-	         latex $$i >${TMP}/trace ) ; \
-	      fi ; \
-             done ; \
-	     rm -f *~ ; \
-	     rm -f *.pamphlet~ ; \
-	     rm -f *.log ; \
-	     rm -f *.tex ; \
-	     rm -f *.toc ; \
-	     rm -f *.aux ) ; fi ; \
-	  fi
-	@ if [ "${RUNTYPE}" = "parallel" ] ; then \
-	    ( echo s2 starting parallel make of books ; \
-	      echo s3 ${SPD}/books/Makefile from \
-                   ${SPD}/books/Makefile.pamphlet ; \
-	      cd ${SPD}/books ; \
-              ${EXTRACT} Makefile ; \
-              cp Makefile.pdf ${MNT}/${SYS}/doc/src/books.Makefile.pdf ; \
-	      ${ENV} ${MAKE} & ) ; \
-	  else \
-	    ( echo s2 starting serial make of books ; \
-	      echo s3 ${SPD}/books/Makefile from \
-                   ${SPD}/books/Makefile.pamphlet ; \
-	      cd ${SPD}/books ; \
-              ${EXTRACT} Makefile ; \
-              cp Makefile.pdf ${MNT}/${SYS}/doc/src/books.Makefile.pdf ; \
-              if [ "${BUILD}" = "full" ] ; then \
-	      ${ENV} ${MAKE} ; fi ) ; \
-	  fi
-	@ echo p7 starting make of src
-	@ ${ENV} $(MAKE) -f Makefile.${SYS} 
-	@ echo 3 finished system build on `date` | tee >lastBuildDate
+	@ echo 2 Environment '${ENV}'
+	@ ${ENV} $(MAKE) -f $< 
 
-libspad: 
+libspad: rootdirs tanglec
 	@ echo 11a making libspad
 	@ ( cd ${OBJ}/${SYS}/lib ; \
 	    ${BOOKS}/tanglec ${BOOKS}/bookvol8.pamphlet Makefile >Makefile ; \
@@ -234,6 +212,7 @@ rootdirs:
 	 mkdir -p ${MNT}/${SYS}/input
 	 mkdir -p ${MNT}/${SYS}/lib/graph
 	 mkdir -p ${MNT}/${SYS}/lib/scripts
+	 touch $@
 
 input:
 	@ echo p9 making input documents
@@ -250,6 +229,29 @@ input:
 	     rm -f *.toc ; \
 	     rm -f *.aux ) ; fi
 
+input_files: $(patsubst ${SRC}/input/%.input.pamphlet, \
+	       ${MNT}/${SYS}/doc/src/input/%.input.dvi, \
+	       $(shell ls -1 ${SRC}/input/*.input.pamphlet))
+
+${MNT}/${SYS}/doc/src/input/axiom.sty: rootdirs ${BOOKS}/axiom.sty ${SRC}/input/*.eps
+	@echo copying axiom.sty
+	cp $(filter-out rootdirs,$^) $(@D)
+
+${MNT}/${SYS}/doc/src/input/%.input.dvi: ${SRC}/input/%.input.pamphlet ${MNT}/${SYS}/doc/src/input/axiom.sty
+	@echo making $@ from $<
+	@(cd $(@D); \
+	if [ $(NOISE). = . ] ; then latex $<; else latex $< >$(TMP)/trace; fi ; \
+	rm -f *~ $*.log $*.tex $*.toc $*.aux )
+
+$(SPD)/books/Makefile.pdf: $(SPD)/books/Makefile.pamphlet
+	@(cd $(@D); $(EXTRACT) Makefile)
+
+${MNT}/${SYS}/doc/src/books.Makefile.pdf: $(SPD)/books/Makefile.pdf
+	@cp $< $@
+
+book_files: ${MNT}/${SYS}/doc/src/books.Makefile.pdf
+	@(cd books;$(ENV) $(MAKE))
+
 book:
 	@ echo 79 building the book as ${MNT}/${SYS}/doc/book.dvi 
 	@ cp ${SRC}/doc/book.pamphlet ${MNT}/${SYS}/doc
@@ -340,5 +342,5 @@ clean:
 	@ rm -f src/share/Makefile src/share/Makefile.dvi
 	@ rm -f src/share/Makefile.pdf 
 	@ rm -f Makefile.aux
-	@ rm -f Makefile.log
+	@ rm -f Makefile.log rootdirs
 
--- axiom-20170501.orig/Makefile.pamphlet
+++ axiom-20170501/Makefile.pamphlet
@@ -87,62 +87,40 @@ Note that make cannot handle recursively
 directory so we have to expand the serial forms inline. Cheesy.
 
 \begin{chunk}{parallel}
-all: rootdirs axiom.sty tanglec libspad
+all: rootdirs axiom.sty tanglec libspad input_files book_files src_files
+#	@ echo 1 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART}
+#	@ echo 2 Environment '${ENV}'
+#	@ ${BOOKS}/tanglec Makefile.pamphlet "Makefile.${SYS}" >Makefile.${SYS}
+#	@ cp ${BOOKS}/dvipdfm.def ${MNT}/${SYS}/doc
+#	@ cp ${BOOKS}/changepage.sty ${MNT}/${SYS}/doc
+#	@ ${EXTRACT} Makefile.pamphlet
+#	@ cp Makefile.pdf ${MNT}/${SYS}/doc/src/root.Makefile.pdf
+#	@ echo p7 starting make of src
+#	@ ${ENV} $(MAKE) -f Makefile.${SYS} 
+#	@ echo 3 finished system build on `date` | tee >lastBuildDate
+
+Makefile.${SYS}: Makefile.pamphlet
+	@ ${BOOKS}/tanglec $< "Makefile.${SYS}" >$@
+
+${MNT}/${SYS}/doc/src/root.Makefile.pdf: Makefile.pdf
+	@cp $< $@
+
+${MNT}/${SYS}/doc/dvipdfm.def: ${BOOKS}/dvipdfm.def
+	@cp $< $@
+
+${MNT}/${SYS}/doc/changepage.sty: ${BOOKS}/changepage.sty
+	@cp $< $@
+
+Makefile.pdf: Makefile.pamphlet
+	@ ${EXTRACT} $<
+	
+src_files: Makefile.${SYS} ${MNT}/${SYS}/doc/src/root.Makefile.pdf \
+	   ${MNT}/${SYS}/doc/dvipdfm.def ${MNT}/${SYS}/doc/changepage.sty
 	@ echo 1 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART}
-	@ echo 2 Environment ${ENV}
-	@ ${BOOKS}/tanglec Makefile.pamphlet "Makefile.${SYS}" >Makefile.${SYS}
-	@ cp ${BOOKS}/dvipdfm.def ${MNT}/${SYS}/doc
-	@ cp ${BOOKS}/changepage.sty ${MNT}/${SYS}/doc
-	@ ${EXTRACT} Makefile.pamphlet
-	@ cp Makefile.pdf ${MNT}/${SYS}/doc/src/root.Makefile.pdf
-	@ if [ "${RUNTYPE}" = "parallel" ] ; then \
-	   ( echo p4 starting parallel make of input files ; \
-	     ${ENV} ${MAKE} input ${NOISE} & ) ; \
-	  else \
-           if [ "${BUILD}" = "full" ] ; then \
-	   ( echo s4 starting serial make of input files ; \
-             cd ${MNT}/${SYS}/doc/src/input ; \
-	     cp ${BOOKS}/axiom.sty . ; \
-             cp ${SRC}/input/*.eps . ; \
-	     for i in `ls ${SRC}/input/*.input.pamphlet` ; do \
-	      if [ .${NOISE} = . ] ; \
-	      then \
-               latex $$i ; \
-	      else \
-	       ( echo p4a making $$i ; \
-	         latex $$i >${TMP}/trace ) ; \
-	      fi ; \
-             done ; \
-	     rm -f *~ ; \
-	     rm -f *.pamphlet~ ; \
-	     rm -f *.log ; \
-	     rm -f *.tex ; \
-	     rm -f *.toc ; \
-	     rm -f *.aux ) ; fi ; \
-	  fi
-	@ if [ "${RUNTYPE}" = "parallel" ] ; then \
-	    ( echo s2 starting parallel make of books ; \
-	      echo s3 ${SPD}/books/Makefile from \
-                   ${SPD}/books/Makefile.pamphlet ; \
-	      cd ${SPD}/books ; \
-              ${EXTRACT} Makefile ; \
-              cp Makefile.pdf ${MNT}/${SYS}/doc/src/books.Makefile.pdf ; \
-	      ${ENV} ${MAKE} & ) ; \
-	  else \
-	    ( echo s2 starting serial make of books ; \
-	      echo s3 ${SPD}/books/Makefile from \
-                   ${SPD}/books/Makefile.pamphlet ; \
-	      cd ${SPD}/books ; \
-              ${EXTRACT} Makefile ; \
-              cp Makefile.pdf ${MNT}/${SYS}/doc/src/books.Makefile.pdf ; \
-              if [ "${BUILD}" = "full" ] ; then \
-	      ${ENV} ${MAKE} ; fi ) ; \
-	  fi
-	@ echo p7 starting make of src
-	@ ${ENV} $(MAKE) -f Makefile.${SYS} 
-	@ echo 3 finished system build on `date` | tee >lastBuildDate
+	@ echo 2 Environment '${ENV}'
+	@ ${ENV} $(MAKE) -f $< 
 
-libspad: 
+libspad: rootdirs tanglec
 	@ echo 11a making libspad
 	@ ( cd ${OBJ}/${SYS}/lib ; \
 	    ${BOOKS}/tanglec ${BOOKS}/bookvol8.pamphlet Makefile >Makefile ; \
@@ -185,6 +163,7 @@ rootdirs:
 	 mkdir -p ${MNT}/${SYS}/input
 	 mkdir -p ${MNT}/${SYS}/lib/graph
 	 mkdir -p ${MNT}/${SYS}/lib/scripts
+	 touch $@
 
 input:
 	@ echo p9 making input documents
@@ -201,6 +180,29 @@ input:
 	     rm -f *.toc ; \
 	     rm -f *.aux ) ; fi
 
+input_files: $(patsubst ${SRC}/input/%.input.pamphlet, \
+	       ${MNT}/${SYS}/doc/src/input/%.input.dvi, \
+	       $(shell ls -1 ${SRC}/input/*.input.pamphlet))
+
+${MNT}/${SYS}/doc/src/input/axiom.sty: rootdirs ${BOOKS}/axiom.sty ${SRC}/input/*.eps
+	@echo copying axiom.sty
+	cp $(filter-out rootdirs,$^) $(@D)
+
+${MNT}/${SYS}/doc/src/input/%.input.dvi: ${SRC}/input/%.input.pamphlet ${MNT}/${SYS}/doc/src/input/axiom.sty
+	@echo making $@ from $<
+	@(cd $(@D); \
+	if [ $(NOISE). = . ] ; then latex $<; else latex $< >$(TMP)/trace; fi ; \
+	rm -f *~ $*.log $*.tex $*.toc $*.aux )
+
+$(SPD)/books/Makefile.pdf: $(SPD)/books/Makefile.pamphlet
+	@(cd $(@D); $(EXTRACT) Makefile)
+
+${MNT}/${SYS}/doc/src/books.Makefile.pdf: $(SPD)/books/Makefile.pdf
+	@cp $< $@
+
+book_files: ${MNT}/${SYS}/doc/src/books.Makefile.pdf
+	@(cd books;$(ENV) $(MAKE))
+
 \end{chunk}
 
 \begin{chunk}{*}
@@ -261,7 +263,7 @@ clean:
 	@ rm -f src/share/Makefile src/share/Makefile.dvi
 	@ rm -f src/share/Makefile.pdf 
 	@ rm -f Makefile.aux
-	@ rm -f Makefile.log
+	@ rm -f Makefile.log rootdirs
 
 \end{chunk}
 
@@ -481,7 +483,7 @@ TMP:=${OBJ}/tmp
 ZIPS:=${SPD}/zips
 BOOKS:=${SPD}/books
 SRCDIRS:="interpdir sharedir algebradir etcdir docdir \
-          graphdir smandir hyperdir browserdir inputdir"
+          graphdir hyperdir browserdir inputdir"
 
 SYS:=$(notdir $(AXIOM))
 DAASE:=${SRC}/share
@@ -639,7 +641,7 @@ We should recompile the world with the .
 \end{verbatim}
 
 \begin{chunk}{src}
-srcdir: ${SPD}/src/Makefile
+srcdir: lspdir ${SPD}/src/Makefile
 	@echo 15 making ${SPD}/src 
 	@( cd src ; ${ENV} ${MAKE} )
 
--- /dev/null
+++ axiom-20170501/bitcoin1.eps
@@ -0,0 +1,1403 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: bitcoin1.eps
+%%CreationDate: Tue Jan 20 01:45:35 2015
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 415 437
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 421.93686614173231 translate
+399.94015748031495 -421.93686614173231 scale
+% Image geometry
+400 422 8
+% Transformation matrix
+[ 400 0 0 422 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 400 string def
+/gstr 400 string def
+/bstr 400 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:        37506 ASCII Bytes
+colorimage
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!VPi2m"+MSm.K]GmIbu~>
+!VPi2m"+MSm.K]GmIbu~>
+!VPi2m"+MSm.K]GmIbu~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo>XKDh>dYjQQI*%Hum,^k?WGEGU<Dg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo>XKDh>dYjQQI*%Hum,^k?WHEGU<Dg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo,LIDh>dYjQQI*%Hum,^k?WGE,:3Cg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I>jV`NdY]5f&QVk%HH$0D17P:RZ)W0SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I?'eeNdY]5f&QVk%HH$0D17P:RuD`1SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I>jS_N.#K3f&QVk%HH$0D17M8RYuQ/SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDKXNKJ[bH6hLU"B/)%G.:tNipRahoMjXGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS4m"Ndp0akQ9+Bhrs81h2!X7:;?#Vk(s"^!f*u@J`u+WJ,~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDKXNTS]bH?nMU"B/)%G.:tO06^dhoMjXGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS=s#ic(=YkQ.]=kNE5mE%NY]e`c5LEW14aNP'i+iTPd~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDJXNBAWb,gVIU"B/)%G.:tNigI]hSlLSGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS=s#c"X`]kQ-gHkNE5\?nEsfiTTL?GlDshQcamCiTPd~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6R&icG[5^K#7BI%Dmdg\AZ\Ff#kn?S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$eh&Mfp?)M#0%oIO&BH?,`*P(FkMIjcN.3E29AtHbj6(p~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6R)jcG[5^K#7BI%Dmdg\AZ\Ff#kn?S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$Z7R`dp?)IL1$@^1Q<q>4/MQAN_C]bdE@ibtJ`l%UJ,~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6HrecG[5^K#7BI%Dmdg\AQSBe]Pe>S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$M_/K%p?)HpOltm<AV.mm/r&QPS1T/DBe:p?J`l%UJ,~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHQSb/M<4SXfQ=%A03)_o9aCcH4&C]q(djjpoJ]qVI<J
+V!7X&_;tI@aS=m"Sh2O:g#`h*k2si>]]S'&RHEYpJM!:@k2YTS~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHQSb/M<4SXfQ=%A03)_o9aCcH4&C]q(djjpoJ]qVI<J
+V!7X&_;tI@aS=m"Ah>U8g?&CqroOW]0&>[./]Qr8g.j6>J`c"TJ,~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHNQb/M<4SXfQ=%A03)_o9aCc,mrB]q(djjpoJ]qVI<J
+V!7X&_;tI@aSFs$gG^]9akGkWi;VjIG$="iTe5*_k/T80gO\MIk(!~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[Ai[o:u/(EY@N*=`lja_^=a\1CLjd%JM9?-&RWdLp#/ullB/V<`X#1G39jP2>M
+ro=1@/L9;+jQ,BP~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[Abq523:ZUTq>CY_pgJ+[.UNbe[gNG/#GMD3>G+XgI0$C.E/Z&4&#-0B2jMNRc
+ro=.'/Ur?4j5b^~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[AX=]hnMr`sD:n6V-__T<oK:q;da^6VOP2kWY?a"5s=O`-Y/\Uo>#)$+=jI\$T
+ro=-^/Z=6]j5b^~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[B^+R::/Y_=efe$@fVCp6V`[fg)N@qH\GV78%Te.Y&J1WCSRkDVRj9CPqc/dY3
+P5XGCS1<-AjQ,BP~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[BO"]IK/]d#6].Js%DD:/4R8;o)/2+r^9ebPeAM%l69eA$2Ft__Ij9A=4iT.m.
+_>WEq>?ug@j5b^~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[B@q+M./_oFJSh7A-3J?JSA<>m!065=D15+`D2_C#p1+d:P3c!dOj9O$fJ)o[_
+/_9p^!o,YqJ`PkPJ,~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_q;MQs=5r6k8cI]ia=LOHXlA?Y.bWN,OlGBV/<Sq],h_1q/]H`*/@kT9#E^RBio8ZC
+Oo=8@TIJEBioK*L~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_qVh_7/<Jl;/;jGd*MG#g/^WM:QVZVS/AL3(_(<@\>'JucQnR7S_(F@:iX"=C0$rV;
+_(<A"iW3RpJ`>_LJ,~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_qVh^u/[s`C/?f'4*J#b;9A\[f@[#fB/Crh?Sh/CF1nN^dCj=puR98GEiX!gd@G^#'
+Sh/CjiW@glP_%iSid_~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8Etcn$_jFY#,Wro!p:/8P7D(;hWSgaoPciSQ2JiL3g+iPR+siRocqqr%Y:E%/a)
+i<%[`OT",>O=/\3iT/sJ~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8EtYq.JLD(I<oro!o//=uk"(7%bT`%B<oiQ<^diEDZ.iKmg.iP7%tqr%Y*/6pj,
+i<$eG^]!*l9P/k7j5GL~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8F%N@\1S>qBaKiSi6</A_>E(1NHcTh=,!iN=`\fegD$iFA)1iLO*/qr%Xj/VN']
+i<#Q$e,J;-d5$r;iT&mI~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_tr6kR4A3/,+U96hqu7$9e<d2hngkof.<3EhqBWBhjIO&hn^enhq'EkqqhI--eA7R
+!nSugrnde&/9la'j55@~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_tr7<@ns"rUl?q.hqsnS9J4fOhj$so].CbThngqXhcZ0#hj.'qhnC\nr8.S2.qSY9
+!kp5$rnddY/?49Yj55@~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_u&=>f/@iKTW!&ca5>d"/21ephqqk)hj5nGhqsqTdFU4bhqqn+hqsr*hYc74a=`kX
+hZB<!eGe>,M_)o"hrEUE~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<mh(4$Rh][.ldaTgshet!dhngkohf^B]erME"hjIO&hn^enhq'Ekr8/()/8Mo+
+[F=$b/:Y[ZV(<t>J`#MFJ,~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<maXjarh]XLShn(GFfdonUhj$sofdgX\csn]]hcZ0#hj.'qhnC\nr8/$S/<[NN
+[G9ZR/>:)$N%Ajthr<OD~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<mXXq`rh]g/oP2D`[c+bi_hqqk)ho.1-e\O+]hUaTohqqn+hqsr*hYc7AF"F?$
+[Cb>RS1M+g]l>TeJ`#JEJ,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$i^b!D%h''E]WGY_lh:PFmh8:\kh:Qg".k.XWh3_3uh7tGgh:4$dr7q@gr$qiV
+h:;HS!\'5_J_f>AJ,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$iPqLehh'&%7`[d#(h7tOlh3q'oh8i5>.o"+@h,oirh3D1"h7YDir7q@<r@7t$
+eD7h:.fi>AJ_f;@J,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$hBm'@0+`U)d/?I[`UF`>!Eff,5[4j*]G1PL"1Uc,qBp%6-RU=kJh#MHn.g&i-
+h4"9m!F`Khh;R1?~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]7cJe'N[$^>+5~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]7fId"0udgjf~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]@iLg!J3!gqMQo~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+J_>V-J_BSHJ,~>
+J_>V-J_BSHJ,~>
+J_>V-J_BSHJ,~>
+J_5P+J_9MFJ,~>
+J_5P+J_9MFJ,~>
+J_5P+J_9MFJ,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcG?Ar5/@2s2*[ns2'?eYlB4~>
+JcG?Ar+Q!-s(L<is(Hu`YlB4~>
+JcG?Ar&afUs#]-<s#Yf3YlB4~>
+JcG?A!5e^7!5e@-!5a<ePlH7~>
+JcG?A!,2?2!,2!(!,-r`PlH7~>
+JcG?A!'C/Z!'BfP!'>c3PlH7~>
+JcG?A!5e[6!5eC.!5a<ePlH7~>
+JcG?A!,2<1!,2$)!,-r`PlH7~>
+JcG?A!'C,Y!'BiQ!'>c3PlH7~>
+JcG?A!5e^7!5e^7rkeU5qni=3r5/F4r5/F4rkeU5!Q+m8_Y!m+_Z'Q8_YsK7_Z'Q:_Z0Z8_Z'Q8
+_YjE6_Z'T5_L_aWs*t~>
+JcG?A!,2?2!,2?2rb260qe5s.r+Q'/r+Q'/rb260!GMN3B_;?&B`A#3B`7r2B`A#5B`J,3B`A#3
+B`.l1B`A&0BS$3Rs*t~>
+JcG?A!'C/Z!'C/Zr]C&Xq`FcVr&alWr&alWr]C&X!B^>[47rRN49#6[48o0Z49#6]49,?[49#6[
+48f*Y49#9X4+[G%s*t~>
+JcG?Ar5/=1!5eU4!5eX5!5e[6"2b*<_YjE6_YjE6_YjH6_YsK7_Y4!0_YjE9_Z0YQrVll7rVuo7
+rr3);s8Tt6rr^.<s2+^6!5a<eo)F4~>
+JcG?Ar+Ps,!,26/!,290!,2<1").`7B`.l1B`.l1B`.o1B`7r2B_MH+B`.l4B`J*GrVlk2rVun2
+rr3(6s8Qd1rrZs7s(M?1!,-r`o)F4~>
+JcG?Ar&acT!'C&W!'C)X!'C,Y"$?P_48f*Y48f*Y48f-Y48o0Z48/[S48f*\49,=BrVljZrVumZ
+rr3'^s8P1YrrY@_s#^/Y!'>c3o)F4~>
+JcG?A!5e^7!5eX5!5eU4!5eX5!5eR3!5e[6!5e[6!5e[6!5e[6!5eI0!5eR3!5e^7!5e^7!5e^7
+!5ea8!5ea8!5ea8!5e[6!5a<eo)F4~>
+JcG?A!,2?2!,290!,26/!,290!,23.!,2<1!,2<1!,2<1!,2<1!,2*+!,23.!,2?2!,2?2!,2?2
+!,2B3!,2B3!,2B3!,2<1!,-r`o)F4~>
+JcG?A!'C/Z!'C)X!'C&W!'C)X!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'BoS!'C#V!'C/Z!'C/Z!'C/Z
+!'C2[!'C2[!'C2[!'C,Y!'>c3o)F4~>
+JcG?A!5e[6!5e[6!5eU4!5eX5!5eR3!5e[6!5e[6!5e[6!5e[6!5eI0!5eR3!5e^7!5e^7!5eR3
+!5ea8!5ea8qSIg`o)F4~>
+JcG?A!,2<1!,2<1!,26/!,290!,23.!,2<1!,2<1!,2<1!,2<1!,2*+!,23.!,2?2!,2?2!,23.
+!,2B3!,2B3qIkH[o)F4~>
+JcG?A!'C,Y!'C,Y!'C&W!'C)X!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'BoS!'C#V!'C/Z!'C/Z!'C#V
+!'C2[!'C2[qE'9.o)F4~>
+JcG?A!5e[6!5e[6!5eU4!5eX5!5eR3!5e[6!5e[6!5e[6!5e[6!5eI0!5eR3!5e^7!5e^7!5eO2
+!lFuSrVll7JcG*:J,~>
+JcG?A!,2<1!,2<1!,26/!,290!,23.!,2<1!,2<1!,2<1!,2<1!,2*+!,23.!,2?2!,2?2!,20-
+!bhUIrVlk2JcG*:J,~>
+JcG?A!'C,Y!'C,Y!'C&W!'C)X!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'BoS!'C#V!'C/Z!'C/Z!'BuU
+!^$EDrVljZJcG*:J,~>
+JcG?A!5e^7!5eX5!5eU4!5ea8"2b*<_YjE9_Z0YQr;Qc6r;Qc6r;Qc6r;Qc6pAY-0r;Ql9s8Tt7
+rrBq7rrBq2rrU(;_YsK7_L_aRs*t~>
+JcG?A!,2?2!,290!,26/!,2B3").`7B`.l4B`J*Gr;Qb1r;Qb1r;Qb1r;Qb1pAY,+r;Qk4s8Qd2
+rr?a2rr?a-rrQm6B`7r2BS$3Ms*t~>
+JcG?A!'C/Z!'C)X!'C&W!'C2["$?P_48f*\49,=Br;QaYr;QaYr;QaYr;QaYpAY+Sr;Qj\s8P1Z
+rr>.Zrr>.UrrP:^48o0Z4+[Fus*t~>
+JcG?Ar5/C3r5/@2rkeX6r5/F4r5/F4r5/I5!5e[6!5eF/r5/F4rPAU8_Z'Q8_Y='1_YaB2_L_aW
+s*t~>
+JcG?Ar+Q$.r+Q!-rb291r+Q'/r+Q'/r+Q*0!,2<1!,2'*r+Q'/rFc63B`A#3B_VN,B`%i-BS$3R
+s*t~>
+JcG?Ar&aiVr&afUr]C)Yr&alWr&alWr&aoX!'C,Y!'BlRr&alWrAt&[49#6[488aT48]'U4+[G%
+s*t~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+pAb&!JcEjl!98Y1])R9~>
+pAb%cJcEjl!4.7V])R9~>
+pAb%.JcEjl!-s.q])R9~>
+pAY,$JcE^h!98Y1])R9~>
+pAY+fJcE^h!4.7V])R9~>
+pAY+1JcE^h!-s.q])R9~>
+pAY5's']>es2b3?j+76As*t~>
+pAY4is%Z=?s2b3?Z[r.fs*t~>
+pAY44rtu]*s2b3?H%H",s*t~>
+s8W"*rVun+s8N(-JcEjl!99mT!!&DdJ,~>
+s8W!lrVumms8N'oJcEjl!4/L$!0`fMJ,~>
+s8W!7rVum8s8N':JcEjl!-tC?!&^/DJ,~>
+o)A\uJcEjl!99pU!!&AcJ,~>
+o)A\bJcEjl!4/O%!0`cLJ,~>
+o)A\-JcEjl!-tF@!&^,CJ,~>
+pAY,$rr2t,JcEjl!99pU!!&AcJ,~>
+pAY+frr2snJcEjl!4/O%!0`cLJ,~>
+pAY+1rr2s9JcEjl!-tF@!&^,CJ,~>
+p&G#"JcEgk!99sV!!&>bJ,~>
+p&G"dJcEgk!4/R&!0``KJ,~>
+p&G"/JcEgk!-tIA!&^)BJ,~>
+JcE:\!99sV!!&>bJ,~>
+JcE:\!4/R&!0``KJ,~>
+JcE:\!-tIA!&^)BJ,~>
+JcE:\!9:!W!!&;aJ,~>
+JcE:\!4/U'!0`]JJ,~>
+JcE:\!-tLB!&^&AJ,~>
+JcE:\!9:!W!!&;aJ,~>
+JcE:\!4/U'!0`]JJ,~>
+JcE:\!-tLB!&^&AJ,~>
+JcE:\!9:$X!!&8`J,~>
+JcE:\!4/X(!0`ZIJ,~>
+JcE:\!-tOC!&^#@J,~>
+JcE:\!9:$X!!&8`J,~>
+JcE:\!4/X(!0`ZIJ,~>
+JcE:\!-tOC!&^#@J,~>
+JcE:\!9:'Y!!&5_J,~>
+JcE:\!4/[)!0`WHJ,~>
+JcE:\!-tRD!&]u?J,~>
+JcE:\!9:'Y!!&5_J,~>
+JcE:\!4/[)!0`WHJ,~>
+JcE:\!-tRD!&]u?J,~>
+JcE:\!9:*Z!!&2^J,~>
+JcE:\!4/^*!0`TGJ,~>
+JcE:\!-tUE!&]r>J,~>
+JcE:\!9:*Z!!&2^J,~>
+JcE:\!4/^*!0`TGJ,~>
+JcE:\!-tUE!&]r>J,~>
+JcE:\!9:-[!!&/]J,~>
+JcE:\!4/a+!0`QFJ,~>
+JcE:\!-tXF!&]o=J,~>
+JcE:\!9:-[!!&/]J,~>
+JcE:\!4/a+!0`QFJ,~>
+JcE:\!-tXF!&]o=J,~>
+JcE:\!9:0\!!&,\J,~>
+JcE:\!4/d,!0`NEJ,~>
+JcE:\!-t[G!&]l<J,~>
+JcE:\!9:0\!!&,\J,~>
+JcE:\!4/d,!0`NEJ,~>
+JcE:\!-t[G!&]l<J,~>
+JcE:\!9:3]!!&)[J,~>
+JcE:\!4/g-!0`KDJ,~>
+JcE:\!-t^H!&]i;J,~>
+JcE:\!9:6^!!&&ZJ,~>
+JcE:\!4/j.!0`HCJ,~>
+JcE:\!-taI!&]f:J,~>
+JcE:\!9:6^!!&&ZJ,~>
+JcE:\!4/j.!0`HCJ,~>
+JcE:\!-taI!&]f:J,~>
+JcE:\!9:9_!!&#YJ,~>
+JcE:\!4/m/!0`EBJ,~>
+JcE:\!-tdJ!&]c9J,~>
+JcE:\!9:9_!!&#YJ,~>
+JcE:\!4/m/!0`EBJ,~>
+JcE:\!-tdJ!&]c9J,~>
+JcE:\!9:<`!!%uXJ,~>
+JcE:\!4/p0!0`BAJ,~>
+JcE:\!-tgK!&]`8J,~>
+JcE:\!9:<`!!%uXJ,~>
+JcE:\!4/p0!0`BAJ,~>
+JcE:\!-tgK!&]`8J,~>
+JcE:\!9:?a!!%rWJ,~>
+JcE:\!4/s1!0`?@J,~>
+JcE:\!-tjL!&]]7J,~>
+JcE:\!9:Bb!!%oVJ,~>
+JcE:\!40!2!0`<?J,~>
+JcE:\!-tmM!&]Z6J,~>
+JcE:\!9:Bb!!%oVJ,~>
+JcE:\!40!2!0`<?J,~>
+JcE:\!-tmM!&]Z6J,~>
+JcE:\!9:Ec!!%lUJ,~>
+JcE:\!40$3!0`9>J,~>
+JcE:\!-tpN!&]W5J,~>
+JcE:\!9:Ec!!%lUJ,~>
+JcE:\!40$3!0`9>J,~>
+JcE:\!-tpN!&]W5J,~>
+JcE:\!9:Hd!!%iTJ,~>
+JcE:\!40'4!0`6=J,~>
+JcE:\!-tsO!&]T4J,~>
+JcE:\!9:Hd!!%iTJ,~>
+JcE:\!40'4!0`6=J,~>
+JcE:\!-tsO!&]T4J,~>
+JcE:\!9:Ke!!%fSJ,~>
+JcE:\!40*5!0`3<J,~>
+JcE:\!-u!P!&]Q3J,~>
+JcE:\!9:Nf!!%cRJ,~>
+JcE:\!40-6!0`0;J,~>
+JcE:\!-u$Q!&]N2J,~>
+oD\f!JcEgk!9:Nf!!%cRJ,~>
+oD\ecJcEgk!40-6!0`0;J,~>
+oD\e.JcEgk!-u$Q!&]N2J,~>
+o`+r"JcEgk!9:Qg!!%`QJ,~>
+o`+qdJcEgk!4007!0`-:J,~>
+o`+q/JcEgk!-u'R!&]K1J,~>
+p&>)%s'^KYaSu8#\GlO/K`?Q~>
+p&>(gs%\.FaSu7H\GlPmK`?Q~>
+p&>(2ru$CfaSu6c\GlOdK`?Q~>
+s8W"*rVlt.s8QMYs2b3?j1,*h!/1B&~>
+s8W!lrVlsps8PiFs2b3?Zag#8PD&sd~>
+s8W!7rVls;s8Nsfs2b3?H+<kS22)![~>
+pAb&!JcEjl!9:Wi!!%ZOJ,~>
+pAb%cJcEjl!4069!0`'8J,~>
+pAb%.JcEjl!-u-T!&]E/J,~>
+oD\f!JcEgk!9:Zj!!%WNJ,~>
+oD\ecJcEgk!409:!0`$7J,~>
+oD\e.JcEgk!-u0U!&]B.J,~>
+oD\f!JcEgk!9:Zj!!%WNJ,~>
+oD\ecJcEgk!409:!0`$7J,~>
+oD\e.JcEgk!-u0U!&]B.J,~>
+JcE:\!9:]k!!%TMJ,~>
+JcE:\!40<;!0`!6J,~>
+JcE:\!-u3V!&]?-J,~>
+JcE:\!9:]k!!%TMJ,~>
+JcE:\!40<;!0`!6J,~>
+JcE:\!-u3V!&]?-J,~>
+JcE:\!9:`l!!%TM!<7Q~>
+JcE:\!40?<!0`!6!<7Q~>
+JcE:\!-u6W!&]?-!<7Q~>
+JcE:\!9:cm!!%TMs8RT~>
+JcE:\!40B=!0`!6s8RT~>
+JcE:\!-u9X!&]?-s8RT~>
+JcE:\!9:cm!!%TMs8RT~>
+JcE:\!40B=!0`!6s8RT~>
+JcE:\!-u9X!&]?-s8RT~>
+JcE:\!9:fn!!%TMrr7K~>
+JcE:\!40E>!0`!6rr7K~>
+JcE:\!-u<Y!&]?-rr7K~>
+JcE:\!9:io!!%TMrVqB~>
+JcE:\!40H?!0`!6rVqB~>
+JcE:\!-u?Z!&]?-rVqB~>
+JcE:\!9:io!!%TMrVqB~>
+JcE:\!40H?!0`!6rVqB~>
+JcE:\!-u?Z!&]?-rVqB~>
+JcE:\!9:lp!!%TMr;V9~>
+JcE:\!40K@!0`!6r;V9~>
+JcE:\!-uB[!&]?-r;V9~>
+JcE:\!9:oq!!%TMqu;0~>
+JcE:\!40NA!0`!6qu;0~>
+JcE:\!-uE\!&]?-qu;0~>
+JcE:\!9:rr!!%TMqYu'~>
+JcE:\!40QB!0`!6qYu'~>
+JcE:\!-uH]!&]?-qYu'~>
+JcE:\!9:rr!!%TMqYu'~>
+JcE:\!40QB!0`!6qYu'~>
+JcE:\!-uH]!&]?-qYu'~>
+JcE:\!9:us!!%TMq>Ys~>
+JcE:\!40TC!0`!6q>Ys~>
+JcE:\!-uK^!&]?-q>Ys~>
+JcE:\!9;#t!!%TMq#>j~>
+JcE:\!40WD!0`!6q#>j~>
+JcE:\!-uN_!&]?-q#>j~>
+JcE:\!9;&u!!%TMp]#a~>
+JcE:\!40ZE!0`!6p]#a~>
+JcE:\!-uQ`!&]?-p]#a~>
+JcE:\!9;&u!!%TMp]#a~>
+JcE:\!40ZE!0`!6p]#a~>
+JcE:\!-uQ`!&]?-p]#a~>
+JcE:\!9;*!!!%TMpA]X~>
+JcE:\!40]F!0`!6pA]X~>
+JcE:\!-uTa!&]?-pA]X~>
+JcE:\!9;-"!!%TMp&BO~>
+JcE:\!40`G!0`!6p&BO~>
+JcE:\!-uWb!&]?-p&BO~>
+JcE:\!9;0#!!%TMo`'F~>
+JcE:\!40cH!0`!6o`'F~>
+JcE:\!-uZc!&]?-o`'F~>
+JcE:\!9;0#!!%TMo`'F~>
+JcE:\!40cH!0`!6o`'F~>
+JcE:\!-uZc!&]?-o`'F~>
+JcE:\!9;3$!!%TMoDa=~>
+JcE:\!40fI!0`!6oDa=~>
+JcE:\!-u]d!&]?-oDa=~>
+JcE:\!9;6%!!%TMo)F4~>
+JcE:\!40iJ!0`!6o)F4~>
+JcE:\!-u`e!&]?-o)F4~>
+JcE:\!9;9&!!%TMnc++~>
+JcE:\!40lK!0`!6nc++~>
+JcE:\!-ucf!&]?-nc++~>
+JcE:\!9;<'!!%TMnGe"~>
+JcE:\!40oL!0`!6nGe"~>
+JcE:\!-ufg!&]?-nGe"~>
+JcE:\!9;?(!!%TMn,In~>
+JcE:\!40rM!0`!6n,In~>
+JcE:\!-uih!&]?-n,In~>
+JcE:\!9;B)!!%TMmf.e~>
+JcE:\!40uN!0`!6mf.e~>
+JcE:\!-uli!&]?-mf.e~>
+JcE:\!9;H+rr@WMmJh\~>
+JcE:\!41&Ps-&$6mJh\~>
+JcE:\!-urks##B-mJh\~>
+JcE:\!9;K,!!%TMli2J~>
+JcE:\!41)Q!0`!6li2J~>
+JcE:\!-uul!&]?-li2J~>
+JcE:\!9;N-!!%TMlMlA~>
+JcE:\!41,R!0`!6lMlA~>
+JcE:\!.!#m!&]?-lMlA~>
+pAb&!JcEjl!9;Q.!!%TMl2Q8~>
+pAb%cJcEjl!41/S!0`!6l2Q8~>
+pAb%.JcEjl!.!&n!&]?-l2Q8~>
+o)A\uJcEjl!9;T/!!%TMkl6/~>
+o)A\bJcEjl!412T!0`!6kl6/~>
+o)A\-JcEjl!.!)o!&]?-kl6/~>
+oD\f!JcEgk!9;W0!!%TMkPp&~>
+oD\ecJcEgk!415U!0`!6kPp&~>
+oD\e.JcEgk!.!,p!&]?-kPp&~>
+s8W"*qu?\)JcEgk!9;Z1!!%TMk5Tr~>
+s8W!lqu?[kJcEgk!418V!0`!6k5Tr~>
+s8W!7qu?[6JcEgk!.!/q!&]?-k5Tr~>
+o)A\uJcEjl!9;]2!!%TMjo9i~>
+o)A\bJcEjl!41;W!0`!6jo9i~>
+o)A\-JcEjl!.!2r!&]?-jo9i~>
+pAY,$rr2t,JcEjl!9;c4rr@WMjSs`~>
+pAY+frr2snJcEjl!41AYs-&$6jSs`~>
+pAY+1rr2s9JcEjl!.!8ts##B-jSs`~>
+p&G#"JcEgk!9;i6rr@WMir=N~>
+p&G"dJcEgk!41G[s-&$6ir=N~>
+p&G"/JcEgk!.!?!s##B-ir=N~>
+JcE:\!9;o8rr@WMi;\<~>
+JcE:\!41M]s-&$6i;\<~>
+JcE:\!.!E#s##B-i;\<~>
+JcE:\!9;u:rr@WMhZ&*~>
+JcE:\!41S_s-&$6hZ&*~>
+JcE:\!.!K%s##B-hZ&*~>
+JcE:\!9<&<rr@WMh#Dm~>
+JcE:\!41Yas-&$6h#Dm~>
+JcE:\!.!Q's##B-h#Dm~>
+JcE:\!9<,>rr@WMgAc[~>
+JcE:\!41_cs-&$6gAc[~>
+JcE:\!.!W)s##B-gAc[~>
+JcE:\!9<2@rr@WMf`-I~>
+JcE:\!41ees-&$6f`-I~>
+JcE:\!.!]+s##B-f`-I~>
+JcE:\!9<;CrW%NLf)L7~>
+JcE:\!41nhrf_p5f)L7~>
+JcE:\!.!f.r\]9,f)L7~>
+JcE:\!9<JHquD<Je,Op~>
+JcE:\!42(mr0)^3e,Op~>
+JcE:\!.!u3r&''*e,Op~>
+JcE:\!9<VLr;_EKcMrC~>
+JcE:\!424qrKDg4cMrC~>
+JcE:\!.",7rAB0+cMrC~>
+JcEIalMuM9b5Zt~>
+JcEIal]Zo"b5Zt~>
+JcEIalSX7nb5Zt~>
+JcEaiq#L?m!98Y1])R9~>
+JcEaiq31aV!4.7V])R9~>
+JcEaiq)/*M!-s.q])R9~>
+JcF$qq#L'e!98Y1])R9~>
+JcF$qq31IN!4.7V])R9~>
+JcF$qq).gE!-s.q])R9~>
+JcF4!quH*`!98Y1])R9~>
+JcF4!r0-LI!4.7V])R9~>
+JcF4!r&*j@!-s.q])R9~>
+JcF:#rrD6^!98Y1])R9~>
+JcF:#s-)XG!4.7V])R9~>
+JcF:#s#'!>!-s.q])R9~>
+JcF@%rrD0\!98Y1])R9~>
+JcF@%s-)RE!4.7V])R9~>
+JcF@%s#&p<!-s.q])R9~>
+JcFI(rW)!Y!98Y1])R9~>
+JcFI(rfcCB!4.7V])R9~>
+JcFI(r\`a9!-s.q])R9~>
+JcFO*rrD!W!98Y1])R9~>
+JcFO*s-)C@!4.7V])R9~>
+JcFO*s#&a7!-s.q])R9~>
+JcFU,rrCpU!98Y1])R9~>
+JcFU,s-)=>!4.7V])R9~>
+JcFU,s#&[5!-s.q])R9~>
+JcF[.rrCjS!98Y1])R9~>
+JcF[.s-)7<!4.7V])R9~>
+JcF[.s#&U3!-s.q])R9~>
+JcF^/!!(aQ!98Y1])R9~>
+JcF^/!0c.:!4.7V])R9~>
+JcF^/!&`L1!-s.q])R9~>
+JcFa0!!(^P!98Y1])R9~>
+JcFa0!0c+9!4.7V])R9~>
+JcFa0!&`I0!-s.q])R9~>
+JcFd1!!([O!98Y1])R9~>
+JcFd1!0c(8!4.7V])R9~>
+JcFd1!&`F/!-s.q])R9~>
+JcFd1!!([O!98Y1])R9~>
+JcFd1!0c(8!4.7V])R9~>
+JcFd1!&`F/!-s.q])R9~>
+JcFg2!!(XN!98Y1])R9~>
+JcFg2!0c%7!4.7V])R9~>
+JcFg2!&`C.!-s.q])R9~>
+JcFj3!!(UM!98Y1])R9~>
+JcFj3!0c"6!4.7V])R9~>
+JcFj3!&`@-!-s.q])R9~>
+JcFm4!!(RL!98Y1])R9~>
+JcFm4!0bt5!4.7V])R9~>
+JcFm4!&`=,!-s.q])R9~>
+JcFp5!!(OK!98Y1])R9~>
+JcFp5!0bq4!4.7V])R9~>
+JcFp5!&`:+!-s.q])R9~>
+JcFs6!!(LJ!98Y1])R9~>
+JcFs6!0bn3!4.7V])R9~>
+JcFs6!&`7*!-s.q])R9~>
+JcG!7!!(II!98Y1])R9~>
+JcG!7!0bk2!4.7V])R9~>
+JcG!7!&`4)!-s.q])R9~>
+JcG$8!!(FH!98Y1])R9~>
+JcG$8!0bh1!4.7V])R9~>
+JcG$8!&`1(!-s.q])R9~>
+p&G#"JcGQG!!(FH!98Y1])R9~>
+p&G"dJcGQG!0bh1!4.7V])R9~>
+p&G"/JcGQG!&`1(!-s.q])R9~>
+pAY,$rr2t,JcGWI!!(CG!98Y1])R9~>
+pAY+frr2snJcGWI!0be0!4.7V])R9~>
+pAY+1rr2s9JcGWI!&`.'!-s.q])R9~>
+o)A\uJcGZJ!!(@F!98Y1])R9~>
+o)A\bJcGZJ!0bb/!4.7V])R9~>
+o)A\-JcGZJ!&`+&!-s.q])R9~>
+s8W"*qu?\)JcGZJ!!(=E!98Y1])R9~>
+s8W!lqu?[kJcGZJ!0b_.!4.7V])R9~>
+s8W!7qu?[6JcGZJ!&`(%!-s.q])R9~>
+p&>##JcGWI!!(:D!98Y1])R9~>
+p&>"eJcGWI!0b\-!4.7V])R9~>
+p&>"0JcGWI!&`%$!-s.q])R9~>
+pAY,$JcGTH!!(:D!98Y1])R9~>
+pAY+fJcGTH!0b\-!4.7V])R9~>
+pAY+1JcGTH!&`%$!-s.q])R9~>
+pAb&!JcGcM!!(7C!98Y1])R9~>
+pAb%cJcGcM!0bY,!4.7V])R9~>
+pAb%.JcGcM!&`"#!-s.q])R9~>
+JcG3=!!(7C!98Y1])R9~>
+JcG3=!0bY,!4.7V])R9~>
+JcG3=!&`"#!-s.q])R9~>
+JcG6>!!(4B!98Y1])R9~>
+JcG6>!0bV+!4.7V])R9~>
+JcG6>!&_t"!-s.q])R9~>
+JcG6>!!(4B!98Y1])R9~>
+JcG6>!0bV+!4.7V])R9~>
+JcG6>!&_t"!-s.q])R9~>
+JcG9?!!(1A!98Y1])R9~>
+JcG9?!0bS*!4.7V])R9~>
+JcG9?!&_q!!-s.q])R9~>
+JcG<@!!(.@!98Y1])R9~>
+JcG<@!0bP)!4.7V])R9~>
+JcG<@!&_mu!-s.q])R9~>
+JcG<@!!(.@!98Y1])R9~>
+JcG<@!0bP)!4.7V])R9~>
+JcG<@!&_mu!-s.q])R9~>
+JcG?A!!(+?!98Y1])R9~>
+JcG?A!0bM(!4.7V])R9~>
+JcG?A!&_jt!-s.q])R9~>
+JcG?A!!(+?!98Y1])R9~>
+JcG?A!0bM(!4.7V])R9~>
+JcG?A!&_jt!-s.q])R9~>
+JcGBB!!((>!98Y1])R9~>
+JcGBB!0bJ'!4.7V])R9~>
+JcGBB!&_gs!-s.q])R9~>
+JcGBB!!((>!98Y1])R9~>
+JcGBB!0bJ'!4.7V])R9~>
+JcGBB!&_gs!-s.q])R9~>
+JcGEC!!(%=!98Y1])R9~>
+JcGEC!0bG&!4.7V])R9~>
+JcGEC!&_dr!-s.q])R9~>
+JcGEC!!(%=!98Y1])R9~>
+JcGEC!0bG&!4.7V])R9~>
+JcGEC!&_dr!-s.q])R9~>
+JcGHD!!("<!98Y1])R9~>
+JcGHD!0bD%!4.7V])R9~>
+JcGHD!&_aq!-s.q])R9~>
+JcGHD!!("<!98Y1])R9~>
+JcGHD!0bD%!4.7V])R9~>
+JcGHD!&_aq!-s.q])R9~>
+JcGHD!!("<!98Y1])R9~>
+JcGHD!0bD%!4.7V])R9~>
+JcGHD!&_aq!-s.q])R9~>
+JcGHD!!("<!98Y1])R9~>
+JcGHD!0bD%!4.7V])R9~>
+JcGHD!&_aq!-s.q])R9~>
+JcGKE!!'t;!98Y1])R9~>
+JcGKE!0bA$!4.7V])R9~>
+JcGKE!&_^p!-s.q])R9~>
+JcGKE!!'t;!98Y1])R9~>
+JcGKE!0bA$!4.7V])R9~>
+JcGKE!&_^p!-s.q])R9~>
+JcGKE!!'t;!98Y1])R9~>
+JcGKE!0bA$!4.7V])R9~>
+JcGKE!&_^p!-s.q])R9~>
+JcGKE!!'t;!98Y1])R9~>
+JcGKE!0bA$!4.7V])R9~>
+JcGKE!&_^p!-s.q])R9~>
+JcGNF!!'q:!98Y1])R9~>
+JcGNF!0b>#!4.7V])R9~>
+JcGNF!&_[o!-s.q])R9~>
+JcGNF!!'q:!98Y1])R9~>
+JcGNF!0b>#!4.7V])R9~>
+JcGNF!&_[o!-s.q])R9~>
+JcGNF!!'q:!98Y1])R9~>
+JcGNF!0b>#!4.7V])R9~>
+JcGNF!&_[o!-s.q])R9~>
+JcGNF!!'q:!98Y1])R9~>
+JcGNF!0b>#!4.7V])R9~>
+JcGNF!&_[o!-s.q])R9~>
+JcGQG!!'n9!98Y1])R9~>
+JcGQG!0b;"!4.7V])R9~>
+JcGQG!&_Xn!-s.q])R9~>
+JcGQG!!'n9!98Y1])R9~>
+JcGQG!0b;"!4.7V])R9~>
+JcGQG!&_Xn!-s.q])R9~>
+JcGQG!!'n9!98Y1])R9~>
+JcGQG!0b;"!4.7V])R9~>
+JcGQG!&_Xn!-s.q])R9~>
+JcGQG!!'n9!98Y1])R9~>
+JcGQG!0b;"!4.7V])R9~>
+JcGQG!&_Xn!-s.q])R9~>
+JcGTH!!'k8!98Y1])R9~>
+JcGTH!0b8!!4.7V])R9~>
+JcGTH!&_Um!-s.q])R9~>
+o`"o"M#RGT_>aMqJcE=]J,~>
+o`"ndM#RI=_>aMAJcE=]J,~>
+o`"n/M#RH4_>aL\JcE=]J,~>
+p&G&#M#RGT_>aMqJcE=]J,~>
+p&G%eM#RI=_>aMAJcE=]J,~>
+p&G%0M#RH4_>aL\JcE=]J,~>
+pAY2&s'^``!!'k8!98Y1])R9~>
+pAY1hs%\CM!0b8!!4.7V])R9~>
+pAY13ru$Xm!&_Um!-s.q])R9~>
+s8W"*qu6Y)M>mPU_#FDpJcE=]J,~>
+s8W!lqu6XkM>mR>_#FD@JcE=]J,~>
+s8W!7qu6X6M>mQ5_#FC[JcE=]J,~>
+o`"o"M>mPU_#FDpJcE=]J,~>
+o`"ndM>mR>_#FD@JcE=]J,~>
+o`"n/M>mQ5_#FC[JcE=]J,~>
+o`"o"M>mPU_#FDpJcE=]J,~>
+o`"ndM>mR>_#FD@JcE=]J,~>
+o`"n/M>mQ5_#FC[JcE=]J,~>
+pAb&!MuNbW_#FDpJcE=]J,~>
+pAb%cMuNd@_#FD@JcE=]J,~>
+pAb%.MuNc7_#FC[JcE=]J,~>
+JcGWI!!'h7!98Y1])R9~>
+JcGWI!0b4u!4.7V])R9~>
+JcGWI!&_Rl!-s.q])R9~>
+JcGZJ!!'e6!98Y1])R9~>
+JcGZJ!0b1t!4.7V])R9~>
+JcGZJ!&_Ok!-s.q])R9~>
+JcGZJ!!'e6!98Y1])R9~>
+JcGZJ!0b1t!4.7V])R9~>
+JcGZJ!&_Ok!-s.q])R9~>
+JcGZJ!!'e6!98Y1])R9~>
+JcGZJ!0b1t!4.7V])R9~>
+JcGZJ!&_Ok!-s.q])R9~>
+JcGZJ!!'e6!98Y1])R9~>
+JcGZJ!0b1t!4.7V])R9~>
+JcGZJ!&_Ok!-s.q])R9~>
+JcGZJ!!'e6!98Y1])R9~>
+JcGZJ!0b1t!4.7V])R9~>
+JcGZJ!&_Ok!-s.q])R9~>
+JcGZJ!!'e6!98Y1])R9~>
+JcGZJ!0b1t!4.7V])R9~>
+JcGZJ!&_Ok!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+o`"o"N;ikX^&J)mJcE=]J,~>
+o`"ndN;imA^&J)=JcE=]J,~>
+o`"n/N;il8^&J(XJcE=]J,~>
+p&>)%s'^oe!!'_4!98Y1])R9~>
+p&>(gs%\RR!0b+r!4.7V])R9~>
+p&>(2ru$gr!&_Ii!-s.q])R9~>
+pAY,$rr2t,NrK(Z^&J)mJcE=]J,~>
+pAY+frr2snNrK*C^&J)=JcE=]J,~>
+pAY+1rr2s9NrK):^&J(XJcE=]J,~>
+s5X#crSmldrr3"-s,Z1?!.j0]j7VG_~>
+s0MVurNcK!rr3!os,XJdPC^&kZh:YT~>
+s*=M[rHSA\rr3!:s,VF*21^%(H1cH5~>
+pAY,$rr2t,NrK(Z^&J)mJcE=]J,~>
+pAY+frr2snNrK*C^&J)=JcE=]J,~>
+pAY+1rr2s9NrK):^&J(XJcE=]J,~>
+p&>)%s'^oe!!'_4!98Y1])R9~>
+p&>(gs%\RR!0b+r!4.7V])R9~>
+p&>(2ru$gr!&_Ii!-s.q])R9~>
+o`"o"N;ikX^&J)mJcE=]J,~>
+o`"ndN;imA^&J)=JcE=]J,~>
+o`"n/N;il8^&J(XJcE=]J,~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG`L!!'_4!98Y1])R9~>
+JcG`L!0b+r!4.7V])R9~>
+JcG`L!&_Ii!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcG]K!!'b5!98Y1])R9~>
+JcG]K!0b.s!4.7V])R9~>
+JcG]K!&_Lj!-s.q])R9~>
+JcGZJ!!'e6!98Y1])R9~>
+JcGZJ!0b1t!4.7V])R9~>
+JcGZJ!&_Ok!-s.q])R9~>
+JcGZJ!!'e6!98Y1])R9~>
+JcGZJ!0b1t!4.7V])R9~>
+JcGZJ!&_Ok!-s.q])R9~>
+JcGZJ!!'e6!98Y1])R9~>
+JcGZJ!0b1t!4.7V])R9~>
+JcGZJ!&_Ok!-s.q])R9~>
+JcGZJ!!'e6!98Y1])R9~>
+JcGZJ!0b1t!4.7V])R9~>
+JcGZJ!&_Ok!-s.q])R9~>
+mf*8qOT,:\^]+;oJcE=]J,~>
+mf*8^OT,<E^]+;?JcE=]J,~>
+mf*8)OT,;<^]+:ZJcE=]J,~>
+n,NDrO8f1[_#FDpJcE=]J,~>
+n,ND_O8f3D_#FD@JcE=]J,~>
+n,ND*O8f2;_#FC[JcE=]J,~>
+nG`Pus'^ug!!'h7!98Y1])R9~>
+nG`Pbs%\XT!0b4u!4.7V])R9~>
+nG`P-ru$mt!&_Rl!-s.q])R9~>
+s8W"*rVue(rr2t,O8f1[_#FDpJcE=]J,~>
+s8W!lrVudjrr2snO8f3D_#FD@JcE=]J,~>
+s8W!7rVud5rr2s9O8f2;_#FC[JcE=]J,~>
+mf*8qO8f1[_#FDpJcE=]J,~>
+mf*8^O8f3D_#FD@JcE=]J,~>
+mf*8)O8f2;_#FC[JcE=]J,~>
+mf*8qNrK(Z_>aMqJcE=]J,~>
+mf*8^NrK*C_>aMAJcE=]J,~>
+mf*8)NrK):_>aL\JcE=]J,~>
+nGiDpOT,:\_>aMqJcE=]J,~>
+nGiD]OT,<E_>aMAJcE=]J,~>
+nGiD(OT,;<_>aL\JcE=]J,~>
+JcGTH!!'k8!98Y1])R9~>
+JcGTH!0b8!!4.7V])R9~>
+JcGTH!&_Um!-s.q])R9~>
+JcGTH!!'k8!98Y1])R9~>
+JcGTH!0b8!!4.7V])R9~>
+JcGTH!&_Um!-s.q])R9~>
+JcGQG!!'n9!98Y1])R9~>
+JcGQG!0b;"!4.7V])R9~>
+JcGQG!&_Xn!-s.q])R9~>
+JcGQG!!'n9!98Y1])R9~>
+JcGQG!0b;"!4.7V])R9~>
+JcGQG!&_Xn!-s.q])R9~>
+JcGQG!!'n9!98Y1])R9~>
+JcGQG!0b;"!4.7V])R9~>
+JcGQG!&_Xn!-s.q])R9~>
+JcGQG!!'n9!98Y1])R9~>
+JcGQG!0b;"!4.7V])R9~>
+JcGQG!&_Xn!-s.q])R9~>
+JcGNF!!'q:!98Y1])R9~>
+JcGNF!0b>#!4.7V])R9~>
+JcGNF!&_[o!-s.q])R9~>
+JcGNF!!'q:!98Y1])R9~>
+JcGNF!0b>#!4.7V])R9~>
+JcGNF!&_[o!-s.q])R9~>
+JcGNF!!'q:!98Y1])R9~>
+JcGNF!0b>#!4.7V])R9~>
+JcGNF!&_[o!-s.q])R9~>
+JcGKE!!'t;!98Y1])R9~>
+JcGKE!0bA$!4.7V])R9~>
+JcGKE!&_^p!-s.q])R9~>
+JcGKE!!'t;!98Y1])R9~>
+JcGKE!0bA$!4.7V])R9~>
+JcGKE!&_^p!-s.q])R9~>
+JcGKE!!'t;!98Y1])R9~>
+JcGKE!0bA$!4.7V])R9~>
+JcGKE!&_^p!-s.q])R9~>
+JcGHD!!("<!98Y1])R9~>
+JcGHD!0bD%!4.7V])R9~>
+JcGHD!&_aq!-s.q])R9~>
+JcGHD!!("<!98Y1])R9~>
+JcGHD!0bD%!4.7V])R9~>
+JcGHD!&_aq!-s.q])R9~>
+JcGEC!!(%=!98Y1])R9~>
+JcGEC!0bG&!4.7V])R9~>
+JcGEC!&_dr!-s.q])R9~>
+JcGEC!!(%=!98Y1])R9~>
+JcGEC!0bG&!4.7V])R9~>
+JcGEC!&_dr!-s.q])R9~>
+JcGEC!!(%=!98Y1])R9~>
+JcGEC!0bG&!4.7V])R9~>
+JcGEC!&_dr!-s.q])R9~>
+JcGBB!!((>!98Y1])R9~>
+JcGBB!0bJ'!4.7V])R9~>
+JcGBB!&_gs!-s.q])R9~>
+JcGBB!!((>!98Y1])R9~>
+JcGBB!0bJ'!4.7V])R9~>
+JcGBB!&_gs!-s.q])R9~>
+JcGBB!!((>!98Y1])R9~>
+JcGBB!0bJ'!4.7V])R9~>
+JcGBB!&_gs!-s.q])R9~>
+JcG?A!!(+?!98Y1])R9~>
+JcG?A!0bM(!4.7V])R9~>
+JcG?A!&_jt!-s.q])R9~>
+JcG?A!!(+?!98Y1])R9~>
+JcG?A!0bM(!4.7V])R9~>
+JcG?A!&_jt!-s.q])R9~>
+JcG<@!!(.@!98Y1])R9~>
+JcG<@!0bP)!4.7V])R9~>
+JcG<@!&_mu!-s.q])R9~>
+JcG<@!!(.@!98Y1])R9~>
+JcG<@!0bP)!4.7V])R9~>
+JcG<@!&_mu!-s.q])R9~>
+JcG9?!!(1A!98Y1])R9~>
+JcG9?!0bS*!4.7V])R9~>
+JcG9?!&_q!!-s.q])R9~>
+JcG6>!!(4B!98Y1])R9~>
+JcG6>!0bV+!4.7V])R9~>
+JcG6>!&_t"!-s.q])R9~>
+JcG6>!!(4B!98Y1])R9~>
+JcG6>!0bV+!4.7V])R9~>
+JcG6>!&_t"!-s.q])R9~>
+JcG3=!!(7C!98Y1])R9~>
+JcG3=!0bY,!4.7V])R9~>
+JcG3=!&`"#!-s.q])R9~>
+JcG0<!!(:D!98Y1])R9~>
+JcG0<!0b\-!4.7V])R9~>
+JcG0<!&`%$!-s.q])R9~>
+n,NAqKDtoOc2Re(JcE=]J,~>
+n,NA^KDtq8c2RdMJcE=]J,~>
+n,NA)KDtp/c2RchJcE=]J,~>
+nG`Jsrr2t,KDtoOcMmn)JcE=]J,~>
+nG`J`rr2snKDtq8cMmmNJcE=]J,~>
+nG`J+rr2s9KDtp/cMmliJcE=]J,~>
+m/I&oK)YfNci4"*JcE=]J,~>
+m/I&\K)Yh7ci4!OJcE=]J,~>
+m/I&'K)Yg.ci3ujJcE=]J,~>
+s8W"*rVue(rr<",Jc>]Mci4"*JcE=]J,~>
+s8W!lrVudjrr<!nJc>_6ci4!OJcE=]J,~>
+s8W!7rVud5rr<!9Jc>^-ci3ujJcE=]J,~>
+n,EArJcG`L!!(CG!98Y1])R9~>
+n,EA_JcG`L!0be0!4.7V])R9~>
+n,EA*JcG`L!&`.'!-s.q])R9~>
+nG`JsJcGZJ!!(FH!98Y1])R9~>
+nG`J`JcGZJ!0bh1!4.7V])R9~>
+nG`J+JcGZJ!&`1(!-s.q])R9~>
+nGiDpJc>cN!7CfHj+76As*t~>
+nGiD]Jc>cNPL9C1Z[r.fs*t~>
+nGiD(Jc>cN2:;F(H%H",s*t~>
+JcG!7!!(II!98Y1])R9~>
+JcG!7!0bk2!4.7V])R9~>
+JcG!7!&`4)!-s.q])R9~>
+JcFs6!!(LJ!98Y1])R9~>
+JcFs6!0bn3!4.7V])R9~>
+JcFs6!&`7*!-s.q])R9~>
+JcFs6!!(LJ!98Y1])R9~>
+JcFs6!0bn3!4.7V])R9~>
+JcFs6!&`7*!-s.q])R9~>
+JcFp5!!(OK!98Y1])R9~>
+JcFp5!0bq4!4.7V])R9~>
+JcFp5!&`:+!-s.q])R9~>
+JcFm4!!(RL!98Y1])R9~>
+JcFm4!0bt5!4.7V])R9~>
+JcFm4!&`=,!-s.q])R9~>
+JcFm4!!(RL!98Y1])R9~>
+JcFm4!0bt5!4.7V])R9~>
+JcFm4!&`=,!-s.q])R9~>
+JcFj3!!(UM!98Y1])R9~>
+JcFj3!0c"6!4.7V])R9~>
+JcFj3!&`@-!-s.q])R9~>
+JcFg2rrC^O!98Y1])R9~>
+JcFg2s-)+8!4.7V])R9~>
+JcFg2s#&I/!-s.q])R9~>
+JcFa0rrCdQ!98Y1])R9~>
+JcFa0s-)1:!4.7V])R9~>
+JcFa0s#&O1!-s.q])R9~>
+JcF[.!!(dR!98Y1])R9~>
+JcF[.!0c1;!4.7V])R9~>
+JcF[.!&`O2!-s.q])R9~>
+JcFX-rrCmT!98Y1])R9~>
+JcFX-s-):=!4.7V])R9~>
+JcFX-s#&X4!-s.q])R9~>
+JcFR+rrCsV!98Y1])R9~>
+JcFR+s-)@?!4.7V])R9~>
+JcFR+s#&^6!-s.q])R9~>
+JcFL)!!(sW!98Y1])R9~>
+JcFL)!0c@@!4.7V])R9~>
+JcFL)!&`^7!-s.q])R9~>
+JcFI(rrD'Y!98Y1])R9~>
+JcFI(s-)IB!4.7V])R9~>
+JcFI(s#&g9!-s.q])R9~>
+JcFC&rrD-[!98Y1])R9~>
+JcFC&s-)OD!4.7V])R9~>
+JcFC&s#&m;!-s.q])R9~>
+JcF=$rrD3]!98Y1])R9~>
+JcF=$s-)UF!4.7V])R9~>
+JcF=$s#&s=!-s.q])R9~>
+JcF7"r;c-_!98Y1])R9~>
+JcF7"rKHOH!4.7V])R9~>
+JcF7"rAEm?!-s.q])R9~>
+JcF*srW)?c!98Y1])R9~>
+JcF*srfcaL!4.7V])R9~>
+JcF*sr\a*C!-s.q])R9~>
+JcF!pr;cBf!98Y1])R9~>
+JcF!prKHdO!4.7V])R9~>
+JcF!prAF-F!-s.q])R9~>
+JcEjlkQ$26_Z,,~>
+JcEjlk`^St_Z,,~>
+JcEjlkV[qk_Z,,~>
+JcE:\!9<nTpAfdEbl<1~>
+JcE:\!42M$pQL1.bl<1~>
+JcE:\!."D?pGIO%bl<1~>
+JcE:\!9<PJr;_EKd/SU~>
+JcE:\!42.orKDg4d/SU~>
+JcE:\!."&5rAB0+d/SU~>
+JcE:\!9<DFquD<Jec1.~>
+JcE:\!42"kr0)^3ec1.~>
+JcE:\!.!o1r&''*ec1.~>
+JcE:\!9<5ArW%NLf`-I~>
+JcE:\!41hfrf_p5f`-I~>
+JcE:\!.!`,r\]9,f`-I~>
+JcE:\!9<,>rr@WMgAc[~>
+JcE:\!41_cs-&$6gAc[~>
+JcE:\!.!W)s##B-gAc[~>
+JcE:\!9<&<rr@WMh#Dm~>
+JcE:\!41Yas-&$6h#Dm~>
+JcE:\!.!Q's##B-h#Dm~>
+JcE:\!9;u:!!%TMh>`!~>
+JcE:\!41S_!0`!6h>`!~>
+JcE:\!.!K%!&]?-h>`!~>
+JcE:\!9;r9rr@WMhuA3~>
+JcE:\!41P^s-&$6huA3~>
+JcE:\!.!H$s##B-huA3~>
+JcE:\!9;l7rr@WMiW"E~>
+JcE:\!41J\s-&$6iW"E~>
+JcE:\!.!B"s##B-iW"E~>
+nGiDpJcF'r!9;f5!!%TMir=N~>
+nGiD]JcF'r!41DZ!0`!6ir=N~>
+nGiD(JcF'r!.!;u!&]?-ir=N~>
+m/I&oJcF'r!9;c4rr@WMjSs`~>
+m/I&\JcF'r!41AYs-&$6jSs`~>
+m/I&'JcF'r!.!8ts##B-jSs`~>
+mJd/pJcF$q!9;]2rr@WMk5Tr~>
+mJd/]JcF$q!41;Ws-&$6k5Tr~>
+mJd/(JcF$q!.!2rs##B-k5Tr~>
+s8W"*rVue(rr<",JcF$q!9;W0!!%TMkPp&~>
+s8W!lrVudjrr<!nJcF$q!415U!0`!6kPp&~>
+s8W!7rVud5rr<!9JcF$q!.!,p!&]?-kPp&~>
+m/I&oJcF'r!9;T/!!%TMkl6/~>
+m/I&\JcF'r!412T!0`!6kl6/~>
+m/I&'JcF'r!.!)o!&]?-kl6/~>
+nG`Jsrr2t,JcF'r!9;Q.!!%TMl2Q8~>
+nG`J`rr2snJcF'r!41/S!0`!6l2Q8~>
+nG`J+rr2s9JcF'r!.!&n!&]?-l2Q8~>
+n,NAqJcF$q!9;N-!!%TMlMlA~>
+n,NA^JcF$q!41,R!0`!6lMlA~>
+n,NA)JcF$q!.!#m!&]?-lMlA~>
+JcE:\!9;K,!!%TMli2J~>
+JcE:\!41)Q!0`!6li2J~>
+JcE:\!-uul!&]?-li2J~>
+JcE:\!9;H+!!%TMm/MS~>
+JcE:\!41&P!0`!6m/MS~>
+JcE:\!-urk!&]?-m/MS~>
+JcE:\!9;E*!!%TMmJh\~>
+JcE:\!41#O!0`!6mJh\~>
+JcE:\!-uoj!&]?-mJh\~>
+JcE:\!9;B)!!%TMmf.e~>
+JcE:\!40uN!0`!6mf.e~>
+JcE:\!-uli!&]?-mf.e~>
+JcE:\!9;?(!!%TMn,In~>
+JcE:\!40rM!0`!6n,In~>
+JcE:\!-uih!&]?-n,In~>
+JcE:\!9;<'!!%TMnGe"~>
+JcE:\!40oL!0`!6nGe"~>
+JcE:\!-ufg!&]?-nGe"~>
+JcE:\!9;9&!!%TMnc++~>
+JcE:\!40lK!0`!6nc++~>
+JcE:\!-ucf!&]?-nc++~>
+JcE:\!9;6%!!%TMo)F4~>
+JcE:\!40iJ!0`!6o)F4~>
+JcE:\!-u`e!&]?-o)F4~>
+JcE:\!9;3$!!%TMoDa=~>
+JcE:\!40fI!0`!6oDa=~>
+JcE:\!-u]d!&]?-oDa=~>
+JcE:\!9;0#!!%TMo`'F~>
+JcE:\!40cH!0`!6o`'F~>
+JcE:\!-uZc!&]?-o`'F~>
+JcE:\!9;-"!!%TMp&BO~>
+JcE:\!40`G!0`!6p&BO~>
+JcE:\!-uWb!&]?-p&BO~>
+JcE:\!9;*!!!%TMpA]X~>
+JcE:\!40]F!0`!6pA]X~>
+JcE:\!-uTa!&]?-pA]X~>
+JcE:\!9;*!!!%TMpA]X~>
+JcE:\!40]F!0`!6pA]X~>
+JcE:\!-uTa!&]?-pA]X~>
+JcE:\!9;&u!!%TMp]#a~>
+JcE:\!40ZE!0`!6p]#a~>
+JcE:\!-uQ`!&]?-p]#a~>
+JcE:\!9;#t!!%TMq#>j~>
+JcE:\!40WD!0`!6q#>j~>
+JcE:\!-uN_!&]?-q#>j~>
+JcE:\!9:us!!%TMq>Ys~>
+JcE:\!40TC!0`!6q>Ys~>
+JcE:\!-uK^!&]?-q>Ys~>
+JcE:\!9:us!!%TMq>Ys~>
+JcE:\!40TC!0`!6q>Ys~>
+JcE:\!-uK^!&]?-q>Ys~>
+JcE:\!9:rr!!%TMqYu'~>
+JcE:\!40QB!0`!6qYu'~>
+JcE:\!-uH]!&]?-qYu'~>
+JcE:\!9:oq!!%TMqu;0~>
+JcE:\!40NA!0`!6qu;0~>
+JcE:\!-uE\!&]?-qu;0~>
+JcE:\!9:lp!!%TMr;V9~>
+JcE:\!40K@!0`!6r;V9~>
+JcE:\!-uB[!&]?-r;V9~>
+JcE:\!9:lp!!%TMr;V9~>
+JcE:\!40K@!0`!6r;V9~>
+JcE:\!-uB[!&]?-r;V9~>
+JcE:\!9:io!!%TMrVqB~>
+JcE:\!40H?!0`!6rVqB~>
+JcE:\!-u?Z!&]?-rVqB~>
+JcE:\!9:fn!!%TMrr7K~>
+JcE:\!40E>!0`!6rr7K~>
+JcE:\!-u<Y!&]?-rr7K~>
+JcE:\!9:cm!!%TMs8RT~>
+JcE:\!40B=!0`!6s8RT~>
+JcE:\!-u9X!&]?-s8RT~>
+JcE:\!9:cm!!%TMs8RT~>
+JcE:\!40B=!0`!6s8RT~>
+JcE:\!-u9X!&]?-s8RT~>
+JcE:\!9:`l!!%TM!<7Q~>
+JcE:\!40?<!0`!6!<7Q~>
+JcE:\!-u6W!&]?-!<7Q~>
+JcE:\!9:]k!!%TMJ,~>
+JcE:\!40<;!0`!6J,~>
+JcE:\!-u3V!&]?-J,~>
+JcE:\!9:]k!!%TMJ,~>
+JcE:\!40<;!0`!6J,~>
+JcE:\!-u3V!&]?-J,~>
+JcE:\!9:Zj!!%WNJ,~>
+JcE:\!409:!0`$7J,~>
+JcE:\!-u0U!&]B.J,~>
+mJd/pJcF$q!9:Wi!!%ZOJ,~>
+mJd/]JcF$q!4069!0`'8J,~>
+mJd/(JcF$q!-u-T!&]E/J,~>
+mf3;qJcF$q!9:Wi!!%ZOJ,~>
+mf3;^JcF$q!4069!0`'8J,~>
+mf3;)JcF$q!-u-T!&]E/J,~>
+n,EGts'^KYcMmn)\GlO/K`?Q~>
+n,EGas%\.FcMmmN\GlPmK`?Q~>
+n,EG,ru$CfcMmli\GlOdK`?Q~>
+s8W"*rVue("TMp1s'^KYcMmn)\,QF.L&ZZ~>
+s8W!lrVudj"TM6ss%\.FcMmmN\,QGlL&ZZ~>
+s8W!7rVud5"TKA>ru$CfcMmli\,QFcL&ZZ~>
+nGiDpJcF'r!9:Qg!!%`QJ,~>
+nGiD]JcF'r!4007!0`-:J,~>
+nGiD(JcF'r!-u'R!&]K1J,~>
+mJd/pJcF$q!9:Nf!!%cRJ,~>
+mJd/]JcF$q!40-6!0`0;J,~>
+mJd/(JcF$q!-u$Q!&]N2J,~>
+mJd/pJcF$q!9:Nf!!%cRJ,~>
+mJd/]JcF$q!40-6!0`0;J,~>
+mJd/(JcF$q!-u$Q!&]N2J,~>
+JcE:\!9:Ke!!%fSJ,~>
+JcE:\!40*5!0`3<J,~>
+JcE:\!-u!P!&]Q3J,~>
+JcE:\!9:Hd!!%iTJ,~>
+JcE:\!40'4!0`6=J,~>
+JcE:\!-tsO!&]T4J,~>
+JcE:\!9:Hd!!%iTJ,~>
+JcE:\!40'4!0`6=J,~>
+JcE:\!-tsO!&]T4J,~>
+JcE:\!9:Ec!!%lUJ,~>
+JcE:\!40$3!0`9>J,~>
+JcE:\!-tpN!&]W5J,~>
+JcE:\!9:Bb!!%oVJ,~>
+JcE:\!40!2!0`<?J,~>
+JcE:\!-tmM!&]Z6J,~>
+JcE:\!9:Bb!!%oVJ,~>
+JcE:\!40!2!0`<?J,~>
+JcE:\!-tmM!&]Z6J,~>
+JcE:\!9:?a!!%rWJ,~>
+JcE:\!4/s1!0`?@J,~>
+JcE:\!-tjL!&]]7J,~>
+JcE:\!9:?a!!%rWJ,~>
+JcE:\!4/s1!0`?@J,~>
+JcE:\!-tjL!&]]7J,~>
+JcE:\!9:<`!!%uXJ,~>
+JcE:\!4/p0!0`BAJ,~>
+JcE:\!-tgK!&]`8J,~>
+JcE:\!9:<`!!%uXJ,~>
+JcE:\!4/p0!0`BAJ,~>
+JcE:\!-tgK!&]`8J,~>
+JcE:\!9:9_!!&#YJ,~>
+JcE:\!4/m/!0`EBJ,~>
+JcE:\!-tdJ!&]c9J,~>
+JcE:\!9:6^!!&&ZJ,~>
+JcE:\!4/j.!0`HCJ,~>
+JcE:\!-taI!&]f:J,~>
+JcE:\!9:6^!!&&ZJ,~>
+JcE:\!4/j.!0`HCJ,~>
+JcE:\!-taI!&]f:J,~>
+JcE:\!9:3]!!&)[J,~>
+JcE:\!4/g-!0`KDJ,~>
+JcE:\!-t^H!&]i;J,~>
+JcE:\!9:3]!!&)[J,~>
+JcE:\!4/g-!0`KDJ,~>
+JcE:\!-t^H!&]i;J,~>
+JcE:\!9:0\!!&,\J,~>
+JcE:\!4/d,!0`NEJ,~>
+JcE:\!-t[G!&]l<J,~>
+JcE:\!9:0\!!&,\J,~>
+JcE:\!4/d,!0`NEJ,~>
+JcE:\!-t[G!&]l<J,~>
+JcE:\!9:-[!!&/]J,~>
+JcE:\!4/a+!0`QFJ,~>
+JcE:\!-tXF!&]o=J,~>
+JcE:\!9:-[!!&/]J,~>
+JcE:\!4/a+!0`QFJ,~>
+JcE:\!-tXF!&]o=J,~>
+JcE:\!9:*Z!!&2^J,~>
+JcE:\!4/^*!0`TGJ,~>
+JcE:\!-tUE!&]r>J,~>
+JcE:\!9:*Z!!&2^J,~>
+JcE:\!4/^*!0`TGJ,~>
+JcE:\!-tUE!&]r>J,~>
+JcE:\!9:'Y!!&5_J,~>
+JcE:\!4/[)!0`WHJ,~>
+JcE:\!-tRD!&]u?J,~>
+JcE:\!9:'Y!!&5_J,~>
+JcE:\!4/[)!0`WHJ,~>
+JcE:\!-tRD!&]u?J,~>
+JcC<$hu<ZVPlH7~>
+JcC<$hu<\?PlH7~>
+JcC<$hu<[6PlH7~>
+mJm)mhu<[biW&gaiW&mchu<[biVrmdhZ!RahuE[anG`IgoDe_shu<[biW&gan,In~>
+mJm)Zhu<[OiW&gNiW&mPhu<[OiVrmQhZ!RNhuE[NnG`KPoDe_`hu<[OiW&gNn,In~>
+mJm)%hu<ZoiW&fniW&lphu<ZoiVrlqhZ!QnhuEZnnG`JGoDe_+hu<ZoiW&fnn,In~>
+mJd/ph#IC_h>[I`ir9!err2t,iW&pdir9'gs'ajcs'ajc!+Gm,!+GBs!!)Ng!+Fgcs'amd!+G3n
+J,~>
+mJd/]h#ICLh>[IMir9!Rrr2sniW&pQir9'Ts%_MPs%_MP!)EOn!)E%`!0cpP!)DJPs%_PQ!)Dk[
+J,~>
+mJd/(h#IBlh>[Hmir8urrr2s9iW&oqir9&tru'bpru'bp!#be9!#b;+!&a9G!#a_pru'eq!#b,&
+J,~>
+mJd8ss']?orrQX/@G_"a@GUq`@H.:g@K0crrr?L,rr?KerrQX/@GLk_@IX9s!:g'h@Gq.e@K0cp
+rrZ^0@:AU(J,~>
+mJd8`s%Z>IrrPsq:>Z!N:>PpM:?)9T:B+)Lrr>gnrr>gRrrPsq:>GjL:@S8`PO\YQ:>l-R:B+)J
+rrZ$r:/:6WJ,~>
+mJd8+rtu^4rrO)<);bAn);Y;m)<1Yt)?1T7rr<r9rr<qrrrO)<);P5l)=[Y+2=^\H);tMr)?1T5
+rrX/=)&_lBJ,~>
+oDe_s"oi">s8QNks86:.s'bs-@H[[g@K-<,@H[[g@K-<,@H[[g@K-9,@H7@f@K-9,@Gq.c@G_%a
+@IF-q!;$6j@H%4g@K6@9iW&pds8N(-n,In~>
+oDe_`"oh=ms8PjXs85Ups%`Uo:?VZT:B(:n:?VZT:B(:n:?VZT:B(7n:?2?S:B(7n:>l-P:>Z$N
+:@A,^POnhS:>u3T:B1>hiW&pQs8N'on,In~>
+oDe_+"ofGXs8Nu#s83`;ru(k:)<_%t)?0[9)<_%t)?0[9)<_%t)?0X9)<:_s)?0X9);tMp);bDn
+)=IM)2=pkJ)<(St)?9^SiW&oqs8N':n,In~>
+l2L`lirApbhZ!RaiVrmdh>[I`j8T*frr2t,i;Wdchu<[bm/I%cnc&StirApbhZ!Ran,In~>
+l2L`YirApOhZ!RNiVrmQh>[IMj8T*Srr2sni;WdPhu<[Om/I'Lnc&SairApOhZ!RNn,In~>
+l2L`$irAoohZ!QniVrlqh>[Hmj8T)srr2s9i;Wcphu<Zom/I&Cnc&S,irAoohZ!Qnn,In~>
+nGiDps8N(-hu<[biVrmdrr2t,ir9!eh#@@_ir9'gs'agb!+Fgc!+G0m!!)`m!+Gm,!+Fdb!+Fjd
+!+Gm,!+GEt!?qJn~>
+nGiD]s8N'ohu<[OiVrmQrr2snir9!Rh#@@Lir9'Ts%_JO!)DJP!)DhZ!0d-V!)EOn!)DGO!)DMQ
+!)EOn!)E(a!?qJn~>
+nGiD(s8N':hu<ZoiVrlqrr2s9ir8urh#@?lir9&tru'_o!#a_p!#b)%!&aKM!#be9!#a\o!#abq
+!#be9!#b>,!?qJn~>
+nG`Jsr;Qb*hZ!Rai;`dbiW&gairApbj8T*fi;`^`irApbmf*7ep&G#"hZ!Rai;`dbnc&Y6-i\\~>
+nG`J`r;QalhZ!RNi;`dOiW&gNirApOj8T*Si;`^MirApOmf*9Np&G"dhZ!RNi;`dOnc&Y6-i\\~>
+nG`J+r;Qa7hZ!Qni;`coiW&fnirAooj8T)si;`]mirAoomf*8Ep&G"/hZ!Qni;`conc&Y6-i\\~>
+nG`T!s']>es+14>rr<%hrrX>jh#Dm~>
+nG`Scs%Z=?s+14>rrA7QrrX>jh#Dm~>
+nG`S.rtu]*s+14>rr=pHrrX>jh#Dm~>
+s8W"*rVue("oi">s8QMYs+14?rr<%irraDkh#ID)~>
+s8W!lrVudj"oh=ms8PiFs+14?rrA7RrraDkh#ID)~>
+s8W!7rVud5"ofGXs8Nsfs+14?rr=pIrraDkh#ID)~>
+m/I&ohu<[bhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Rao`#(6-f"_Fs*t~>
+m/I&\hu<[OhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNo`#(6-f"_Fs*t~>
+m/I&'hu<ZohZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qno`#(6-f"_Fs*t~>
+nG`Jsrr2t,hu<[bhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Rap&>46-f"_F-i\\~>
+nG`J`rr2snhu<[OhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNp&>46-f"_F-i\\~>
+nG`J+rr2s9hu<ZohZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qnp&>46-f"_F-i\\~>
+n,NAqhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RapAY@8-f"_A-f"`P~>
+n,NA^hZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNpAY@8-f"_A-f"`P~>
+n,NA)hZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnpAY@8-f"_A-f"`P~>
+ao;?LhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Rap\tL:-f"_A-f"b%J,~>
+ao;?9hZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNp\tL:-f"_A-f"b%J,~>
+ao;>YhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qnp\tL:-f"_A-f"b%J,~>
+ao;?LhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Raq#:X8-f"_A-f"_As*t~>
+ao;?9hZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNq#:X8-f"_A-f"_As*t~>
+ao;>YhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qnq#:X8-f"_A-f"_As*t~>
+JcE:\!98Y1`W$8b-f"_A-f"_A-i\\~>
+JcE:\!4.7V`W$8b-f"_A-f"_A-i\\~>
+JcE:\!-s.q`W$8b-f"_A-f"_A-i\\~>
+JcE:\!98Y1`r?Dd-f"_A-f"_A-f"`P~>
+JcE:\!4.7V`r?Dd-f"_A-f"_A-f"`P~>
+JcE:\!-s.q`r?Dd-f"_A-f"_A-f"`P~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
--- /dev/null
+++ axiom-20170501/bitcoin2.eps
@@ -0,0 +1,1406 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: bitcoin2.eps
+%%CreationDate: Tue Jan 20 01:56:46 2015
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 415 437
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 421.93686614173231 translate
+399.94015748031495 -421.93686614173231 scale
+% Image geometry
+400 422 8
+% Transformation matrix
+[ 400 0 0 422 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 400 string def
+/gstr 400 string def
+/bstr 400 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:        47463 ASCII Bytes
+colorimage
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!VPi2m"+MSm.K]GmIbu~>
+!VPi2m"+MSm.K]GmIbu~>
+!VPi2m"+MSm.K]GmIbu~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo>XKDh>dYjQQI*%Hum,^k?WGEGU<Dg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo>XKDh>dYjQQI*%Hum,^k?WHEGU<Dg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo,LIDh>dYjQQI*%Hum,^k?WGE,:3Cg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I>jV`NdY]5f&QVk%HH$0D17P:RZ)W0SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I?'eeNdY]5f&QVk%HH$0D17P:RuD`1SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I>jS_N.#K3f&QVk%HH$0D17M8RYuQ/SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDKXNKJ[bH6hLU"B/)%G.:tNipRahoMjXGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS4m"Ndp0akQ9+Bhrs81h2!X7:;?#Vk(s"^!f*u@J`u+WJ,~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDKXNTS]bH?nMU"B/)%G.:tO06^dhoMjXGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS=s#ic(=YkQ.]=kNE5mE%NY]e`c5LEW14aNP'i+iTPd~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDJXNBAWb,gVIU"B/)%G.:tNigI]hSlLSGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS=s#c"X`]kQ-gHkNE5\?nEsfiTTL?GlDshQcamCiTPd~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6R&icG[5^K#7BI%Dmdg\AZ\Ff#kn?S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$eh&Mfp?)M#0%oIO&BH?,`*P(FkMIjcN.3E29AtHbj6(p~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6R)jcG[5^K#7BI%Dmdg\AZ\Ff#kn?S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$Z7R`dp?)IL1$@^1Q<q>4/MQAN_C]bdE@ibtJ`l%UJ,~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6HrecG[5^K#7BI%Dmdg\AQSBe]Pe>S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$M_/K%p?)HpOltm<AV.mm/r&QPS1T/DBe:p?J`l%UJ,~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHQSb/M<4SXfQ=%A03)_o9aCcH4&C]q(djjpoJ]qVI<J
+V!7X&_;tI@aS=m"Sh2O:g#`h*k2si>]]S'&RHEYpJM!:@k2YTS~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHQSb/M<4SXfQ=%A03)_o9aCcH4&C]q(djjpoJ]qVI<J
+V!7X&_;tI@aS=m"Ah>U8g?&CqroOW]0&>[./]Qr8g.j6>J`c"TJ,~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHNQb/M<4SXfQ=%A03)_o9aCc,mrB]q(djjpoJ]qVI<J
+V!7X&_;tI@aSFs$gG^]9akGkWi;VjIG$="iTe5*_k/T80gO\MIk(!~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[Ai[o:u/(EY@N*=`lja_^=a\1CLjd%JM9?-&RWdLp#/ullB/V<`X#1G39jP2>M
+ro=1@/L9;+jQ,BP~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[Abq523:ZUTq>CY_pgJ+[.UNbe[gNG/#GMD3>G+XgI0$C.E/Z&4&#-0B2jMNRc
+ro=.'/Ur?4j5b^~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[AX=]hnMr`sD:n6V-__T<oK:q;da^6VOP2kWY?a"5s=O`-Y/\Uo>#)$+=jI\$T
+ro=-^/Z=6]j5b^~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[B^+R::/Y_=efe$@fVCp6V`[fg)N@qH\GV78%Te.Y&J1WCSRkDVRj9CPqc/dY3
+P5XGCS1<-AjQ,BP~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[BO"]IK/]d#6].Js%DD:/4R8;o)/2+r^9ebPeAM%l69eA$2Ft__Ij9A=4iT.m.
+_>WEq>?ug@j5b^~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[B@q+M./_oFJSh7A-3J?JSA<>m!065=D15+`D2_C#p1+d:P3c!dOj9O$fJ)o[_
+/_9p^!o,YqJ`PkPJ,~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_q;MQs=5r6k8cI]ia=LOHXlA?Y.bWN,OlGBV/<Sq],h_1q/]H`*/@kT9#E^RBio8ZC
+Oo=8@TIJEBioK*L~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_qVh_7/<Jl;/;jGd*MG#g/^WM:QVZVS/AL3(_(<@\>'JucQnR7S_(F@:iX"=C0$rV;
+_(<A"iW3RpJ`>_LJ,~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_qVh^u/[s`C/?f'4*J#b;9A\[f@[#fB/Crh?Sh/CF1nN^dCj=puR98GEiX!gd@G^#'
+Sh/CjiW@glP_%iSid_~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8Etcn$_jFY#,Wro!p:/8P7D(;hWSgaoPciSQ2JiL3g+iPR+siRocqqr%Y:E%/a)
+i<%[`OT",>O=/\3iT/sJ~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8EtYq.JLD(I<oro!o//=uk"(7%bT`%B<oiQ<^diEDZ.iKmg.iP7%tqr%Y*/6pj,
+i<$eG^]!*l9P/k7j5GL~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8F%N@\1S>qBaKiSi6</A_>E(1NHcTh=,!iN=`\fegD$iFA)1iLO*/qr%Xj/VN']
+i<#Q$e,J;-d5$r;iT&mI~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_tr6kR4A3/,+U96hqu7$9e<d2hngkof.<3EhqBWBhjIO&hn^enhq'EkqqhI--eA7R
+!nSugrnde&/9la'j55@~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_tr7<@ns"rUl?q.hqsnS9J4fOhj$so].CbThngqXhcZ0#hj.'qhnC\nr8.S2.qSY9
+!kp5$rnddY/?49Yj55@~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_u&=>f/@iKTW!&ca5>d"/21ephqqk)hj5nGhqsqTdFU4bhqqn+hqsr*hYc74a=`kX
+hZB<!eGe>,M_)o"hrEUE~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<mh(4$Rh][.ldaTgshet!dhngkohf^B]erME"hjIO&hn^enhq'Ekr8/()/8Mo+
+[F=$b/:Y[ZV(<t>J`#MFJ,~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<maXjarh]XLShn(GFfdonUhj$sofdgX\csn]]hcZ0#hj.'qhnC\nr8/$S/<[NN
+[G9ZR/>:)$N%Ajthr<OD~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<mXXq`rh]g/oP2D`[c+bi_hqqk)ho.1-e\O+]hUaTohqqn+hqsr*hYc7AF"F?$
+[Cb>RS1M+g]l>TeJ`#JEJ,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$i^b!D%h''E]WGY_lh:PFmh8:\kh:Qg".k.XWh3_3uh7tGgh:4$dr7q@gr$qiV
+h:;HS!\'5_J_f>AJ,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$iPqLehh'&%7`[d#(h7tOlh3q'oh8i5>.o"+@h,oirh3D1"h7YDir7q@<r@7t$
+eD7h:.fi>AJ_f;@J,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$hBm'@0+`U)d/?I[`UF`>!Eff,5[4j*]G1PL"1Uc,qBp%6-RU=kJh#MHn.g&i-
+h4"9m!F`Khh;R1?~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]7cJe'N[$^>+5~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]7fId"0udgjf~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]@iLg!J3!gqMQo~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+J_>V-J_BSHJ,~>
+J_>V-J_BSHJ,~>
+J_>V-J_BSHJ,~>
+J_5P+J_9MFJ,~>
+J_5P+J_9MFJ,~>
+J_5P+J_9MFJ,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcGKEqnht)s2*Xm!5eI0!5eR3!5e^7s2+=+s2'?eir=N~>
+JcGKEqe5U$s(L9h!,2*+!,23.!,2?2s(Ls&s(Hu`ir=N~>
+JcGKEq`FELs#]*;!'BoS!'C#V!'C/Zs#]cNs#Yf3ir=N~>
+JcGKE!5e[6!5daq!5e7*!lFuSp\t61q>UH3o`"p.JcFC&J,~>
+JcGKE!,2<1!,1Bl!,1m%!bhUIp\t5,q>UG.o`"o)JcFC&J,~>
+JcGKE!'C,Y!'B3?!'B]M!^$EDp\t4Tq>UFVo`"nQJcFC&J,~>
+JcGKE!5e[6!5daq!5e:+!5ea8!5eO2!5eR3!5eC.!5a<ef`-I~>
+JcGKE!,2<1!,1Bl!,1p&!,2B3!,20-!,23.!,2$)!,-r`f`-I~>
+JcGKE!'C,Y!'B3?!'B`N!'C2[!'BuU!'C#V!'BiQ!'>c3f`-I~>
+JcGKE!5e[6!5ea8r5/F4rkeU5!Q+m8_Z'T4_Y*p/_YjE6_Z'T6_?'\Rrr;r6!WU%9s8Kn5s80\3
+s8Kn4s89b5rrL":rPF-cpA]X~>
+JcGKE!,2<1!,2B3r+Q'/rb260!GMN3B`A&/B_DB*B`.l1B`A&1BEA-Hrr;q1!WQj4s8H^0s8-L.
+s8H^/s86R0rrHg5rFgc^pA]X~>
+JcGKE!'C,Y!'C2[r&alWr]C&X!B^>[49#9W48&UR48f*Y49#9Y3s#@Crr;pY!WP7\s8G+Xs8+nV
+s8G+Ws84tXrrG4]rB#T1pA]X~>
+JcGKEqni@4!5e[6!5e[6!5e[6s2+a7!5e^7!5e=,!5e[6"2b*<_YsN7_Z0W9_YsN7_YjE6_YX94
+_YF-2_YjE6_YjE:_Z0YQ_YsK7_L_a]s*t~>
+JcGKEqe6!/!,2<1!,2<1!,2<1s(MB2!,2?2!,1s'!,2<1").`7B`7u2B`J)4B`7u2B`.l1B_q`/
+B__T-B`.l1B`.l5B`J*GB`7r2BS$3Xs*t~>
+JcGKEq`FfW!'C,Y!'C,Y!'C,Ys#^2Z!'C/Z!'BcO!'C,Y"$?P_48o3Z49,<\48o3Z48f*Y48SsW
+48AgU48f*Y48f*]49,=B48o0Z4+[G+s*t~>
+JcGKE!5eR3!5e[6!5e[6!5e[6!5e[6!5e^7!5e=,!5e[6"2b*<_YjE9_Z0YQr;Qc6r;Qc6qYpQ4
+q#:?2r;Qc6r;Ql9s8Tt6rrBoes7cPD~>
+JcGKE!,23.!,2<1!,2<1!,2<1!,2<1!,2?2!,1s'!,2<1").`7B`.l4B`J*Gr;Qb1r;Qb1qYpP/
+q#:>-r;Qb1r;Qk4s8Qd1rr?_`s7cPD~>
+JcGKE!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'C/Z!'BcO!'C,Y"$?P_48f*\49,=Br;QaYr;QaYqYpOW
+q#:=Ur;QaYr;Qj\s8P1Yrr>-3s7cPD~>
+JcGKE!5eR3!5e[6!5e[6!5e[6!5e[6!5e^7!5e=,qSN:4!5e[6"2b*<_YjE6_YjE6_YX94_YF-2
+_YjE6_YjE9_Z0YQr;Qc6JcGKEJ,~>
+JcGKE!,23.!,2<1!,2<1!,2<1!,2<1!,2?2!,1s'qIop/!,2<1").`7B`.l1B`.l1B_q`/B__T-
+B`.l1B`.l4B`J*Gr;Qb1JcGKEJ,~>
+JcGKE!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'C/Z!'BcOqE+`W!'C,Y"$?P_48f*Y48f*Y48SsW48AgU
+48f*Y48f*\49,=Br;QaYJcGKEJ,~>
+JcGKE!5eR3!5e[6!5e[6!5e[6!5e[6!5e^7!5e=,!5e[6"2b*<_YjE9_Z0YQr;Qc6r;Qc6qYpQ4
+q#:?2r;Qc6r;Ql9s8Tt6rrBoes7cPD~>
+JcGKE!,23.!,2<1!,2<1!,2<1!,2<1!,2?2!,1s'!,2<1").`7B`.l4B`J*Gr;Qb1r;Qb1qYpP/
+q#:>-r;Qb1r;Qk4s8Qd1rr?_`s7cPD~>
+JcGKE!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'C/Z!'BcO!'C,Y"$?P_48f*\49,=Br;QaYr;QaYqYpOW
+q#:=Ur;QaYr;Qj\s8P1Yrr>-3s7cPD~>
+JcGKE!5eR3!5e[6!5e[6!5e[6!5e[6!5e^7!5ea8!5eI0!5e[6"2b*<_YsN7_Z0W9_YsN7_YjE6
+_YX94_Z'Q8_YjE6_YjE6_YjE9_Z0YQr;Qc6JcGKEJ,~>
+JcGKE!,23.!,2<1!,2<1!,2<1!,2<1!,2?2!,2B3!,2*+!,2<1").`7B`7u2B`J)4B`7u2B`.l1
+B_q`/B`A#3B`.l1B`.l1B`.l4B`J*Gr;Qb1JcGKEJ,~>
+JcGKE!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'C/Z!'C2[!'BoS!'C,Y"$?P_48o3Z49,<\48o3Z48f*Y
+48SsW49#6[48f*Y48f*Y48f*\49,=Br;QaYJcGKEJ,~>
+JcGKE!5eO2r5/F4r5/I5!5e[6!5e[6rke@.!5e[6!5ea8rPAU8_Z'T6_?'\Rrr;o5qu?Z4rVuf4
+rVuf4rr2u8r;Qc6JcGKEJ,~>
+JcGKE!,20-r+Q'/r+Q*0!,2<1!,2<1rb2!)!,2<1!,2B3rFc63B`A&1BEA-Hrr;n0qu?Y/rVue/
+rVue/rr2t3r;Qb1JcGKEJ,~>
+JcGKE!'BuUr&alWr&aoX!'C,Y!'C,Yr]BfQ!'C,Y!'C2[rAt&[49#9Y3s#@Crr;mXqu?XWrVudW
+rVudWrr2s[r;QaYJcGKEJ,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+pAb&!JcEjl!98Y1])R9~>
+pAb%cJcEjl!4.7V])R9~>
+pAb%.JcEjl!-s.q])R9~>
+pAY,$JcE^h!98Y1])R9~>
+pAY+fJcE^h!4.7V])R9~>
+pAY+1JcE^h!-s.q])R9~>
+pAY5's']>es2b3?j+76As*t~>
+pAY4is%Z=?s2b3?Z[r.fs*t~>
+pAY44rtu]*s2b3?H%H",s*t~>
+s8W"*rVun+s8N(-JcEjl!9;<'!!(aQ!!'2%rrDHdJ,~>
+s8W!lrVumms8N'oJcEjl!40oL!0c.:!0aScs-)jMJ,~>
+s8W!7rVum8s8N':JcEjl!-ufg!&`L1!&^qZs#'3DJ,~>
+o)A\uJcEjl!9;<'!!(dR!!'5&rrDBbJ,~>
+o)A\bJcEjl!40oL!0c1;!0aVds-)dKJ,~>
+o)A\-JcEjl!-ufg!&`O2!&^t[s#'-BJ,~>
+pAY,$rr2t,JcEjl!9;<'!!(dR!!';(rrD<`J,~>
+pAY+frr2snJcEjl!40oL!0c1;!0a\fs-)^IJ,~>
+pAY+1rr2s9JcEjl!-ufg!&`O2!&_%]s#''@J,~>
+p&G#"JcEgk!9;<'!!(gS!!'>)rrD6^J,~>
+p&G"dJcEgk!40oL!0c4<!0a_gs-)XGJ,~>
+p&G"/JcEgk!-ufg!&`R3!&_(^s#'!>J,~>
+JcE:\!9;<'!!(gS!!'D+rrD0\J,~>
+JcE:\!40oL!0c4<!0aeis-)REJ,~>
+JcE:\!-ufg!&`R3!&_.`s#&p<J,~>
+JcE:\!9;<'!!(jT!!'G,rrD*ZJ,~>
+JcE:\!40oL!0c7=!0ahjs-)LCJ,~>
+JcE:\!-ufg!&`U4!&_1as#&j:J,~>
+JcE:\!9;<'!!(jT!!'M.rrD$XJ,~>
+JcE:\!40oL!0c7=!0anls-)FAJ,~>
+JcE:\!-ufg!&`U4!&_7cs#&d8J,~>
+JcE:\!9;<'!!(mU!!'P/rrCsVJ,~>
+JcE:\!40oL!0c:>!0aqms-)@?J,~>
+JcE:\!-ufg!&`X5!&_:ds#&^6J,~>
+JcE:\!9;<'!!(mU!!'V1rrCmTJ,~>
+JcE:\!40oL!0c:>!0b"os-):=J,~>
+JcE:\!-ufg!&`X5!&_@fs#&X4J,~>
+JcE:\!9;<'!!(pV!!'Y2rrCgRJ,~>
+JcE:\!40oL!0c=?!0b%ps-)4;J,~>
+JcE:\!-ufg!&`[6!&_Cgs#&R2J,~>
+JcE:\!9;<'!!(pV!!'_4rrCaPJ,~>
+JcE:\!40oL!0c=?!0b+rs-).9J,~>
+JcE:\!-ufg!&`[6!&_Iis#&L0J,~>
+JcE:\!9;<'!!(sW!!'b5rrC[NJ,~>
+JcE:\!40oL!0c@@!0b.ss-)(7J,~>
+JcE:\!-ufg!&`^7!&_Ljs#&F.J,~>
+JcE:\!9;<'!!(sW!!'h7rrCULJ,~>
+JcE:\!40oL!0c@@!0b4us-)"5J,~>
+JcE:\!-ufg!&`^7!&_Rls#&@,J,~>
+JcE:\!9;<'!!)!X!!'k8rrCOJJ,~>
+JcE:\!40oL!0cCA!0b8!s-(q3J,~>
+JcE:\!-ufg!&`a8!&_Ums#&:*J,~>
+JcE:\!9;<'!!)!X!!'q:rrCIHJ,~>
+JcE:\!40oL!0cCA!0b>#s-(k1J,~>
+JcE:\!-ufg!&`a8!&_[os#&4(J,~>
+JcE:\!9;<'!!)$Y!!'t;rrCCFJ,~>
+JcE:\!40oL!0cFB!0bA$s-(e/J,~>
+JcE:\!-ufg!&`d9!&_^ps#&.&J,~>
+JcE:\!9;<'!!)$Y!!(%=rrC=DJ,~>
+JcE:\!40oL!0cFB!0bG&s-(_-J,~>
+JcE:\!-ufg!&`d9!&_drs#&($J,~>
+JcE:\!9;<'!!)'Z!!((>rrC7BJ,~>
+JcE:\!40oL!0cIC!0bJ's-(Y+J,~>
+JcE:\!-ufg!&`g:!&_gss#&""J,~>
+JcE:\!9;<'!!)*[!!(.@rW((?J,~>
+JcE:\!40oL!0cLD!0bP)rfbJ(J,~>
+JcE:\!-ufg!&`j;!&_mur\_gtJ,~>
+JcE:\!9;<'!!)*[!!(4BrrC(=J,~>
+JcE:\!40oL!0cLD!0bV+s-(J&J,~>
+JcE:\!-ufg!&`j;!&_t"s#%grJ,~>
+JcE:\!9;<'!!)-\!!(7CrrC";J,~>
+JcE:\!40oL!0cOE!0bY,s-(D$J,~>
+JcE:\!-ufg!&`m<!&`"#s#%apJ,~>
+JcE:\!9;<'!!)-\!!(=ErrBq9J,~>
+JcE:\!40oL!0cOE!0b_.s-(>"J,~>
+JcE:\!-ufg!&`m<!&`(%s#%[nJ,~>
+JcE:\!9;<'!!)0]!!(=E!!'h7J,~>
+JcE:\!40oL!0cRF!0b_.!0b4uJ,~>
+JcE:\!-ufg!&`p=!&`(%!&_RlJ,~>
+JcE:\!9;<'!!)0]!!(CGrrBh6J,~>
+JcE:\!40oL!0cRF!0be0s-(4tJ,~>
+JcE:\!-ufg!&`p=!&`.'s#%RkJ,~>
+JcE:\!9;<'!!)3^!!(FHrrBb4J,~>
+JcE:\!40oL!0cUG!0bh1s-(.rJ,~>
+JcE:\!-ufg!&`s>!&`1(s#%LiJ,~>
+JcE:\!9;<'!!)6_!!(IIrrB\2J,~>
+JcE:\!40oL!0cXH!0bk2s-((pJ,~>
+JcE:\!-ufg!&a!?!&`4)s#%FgJ,~>
+JcE:\!9;<'!!)6_!!(OKrrBV0J,~>
+JcE:\!40oL!0cXH!0bq4s-("nJ,~>
+JcE:\!-ufg!&a!?!&`:+s#%@eJ,~>
+JcE:\!9;<'!!)9`!!(RLrrBP.J,~>
+JcE:\!40oL!0c[I!0bt5s-'qlJ,~>
+JcE:\!-ufg!&a$@!&`=,s#%:cJ,~>
+JcE:\!9;<'!!)9`!!(XNrrBJ,J,~>
+JcE:\!40oL!0c[I!0c%7s-'kjJ,~>
+JcE:\!-ufg!&a$@!&`C.s#%4aJ,~>
+JcE:\!9;<'!!)<a!!([OrrBD*J,~>
+JcE:\!40oL!0c^J!0c(8s-'ehJ,~>
+JcE:\!-ufg!&a'A!&`F/s#%._J,~>
+JcE:\!9;<'!!)<a!!(aQrrB>(J,~>
+JcE:\!40oL!0c^J!0c.:s-'_fJ,~>
+JcE:\!-ufg!&a'A!&`L1s#%(]J,~>
+JcE:\!9;<'!!)?b!!(dRrrB8&J,~>
+JcE:\!40oL!0caK!0c1;s-'YdJ,~>
+JcE:\!-ufg!&a*B!&`O2s#%"[J,~>
+JcE:\!9;<'!!)Bc!!(gSrrB2$J,~>
+JcE:\!40oL!0cdL!0c4<s-'SbJ,~>
+JcE:\!-ufg!&a-C!&`R3s#$qYJ,~>
+oD\f!JcEgk!9;<'!!)Bc!!(mUrrB,"J,~>
+oD\ecJcEgk!40oL!0cdL!0c:>s-'M`J,~>
+oD\e.JcEgk!-ufg!&a-C!&`X5s#$kWJ,~>
+o`+r"JcEgk!9;<'!!)Ed!!(pVrrB%uJ,~>
+o`+qdJcEgk!40oL!0cgM!0c=?s-'G^J,~>
+o`+q/JcEgk!-ufg!&a0D!&`[6s#$eUJ,~>
+p&>)%s'^KYaSu8#bl7YCmf*7ei;`fWVuM8~>
+p&>(gs%\.FaSu7Hbl7[,mf*9Ni;`h@VuM8~>
+p&>(2ru$CfaSu6cbl7Z#mf*8Ei;`g7VuM8~>
+s8W"*rVlt.s8QMYs2b3?j37N'!:Kje!94%Y!2]^G~>
+s8W!lrVlsps8PiFs2b3?ZcrFLPOAGNPN)WBPGS;0~>
+s8W!7rVls;s8Nsfs2b3?H-H9g2=CJE2<+Z925U>'~>
+pAb&!JcEjl!9;<'!!)Kf!!)'ZrrAhoJ,~>
+pAb%cJcEjl!40oL!0cmO!0cICs-'5XJ,~>
+pAb%.JcEjl!-ufg!&a6F!&`g:s#$SOJ,~>
+oD\f!JcEgk!9;<'!!)Ng!!)*[rrAbmJ,~>
+oD\ecJcEgk!40oL!0cpP!0cLDs-'/VJ,~>
+oD\e.JcEgk!-ufg!&a9G!&`j;s#$MMJ,~>
+oD\f!JcEgk!9;<'!!)Ng!!)0]rrA\kJ,~>
+oD\ecJcEgk!40oL!0cpP!0cRFs-')TJ,~>
+oD\e.JcEgk!-ufg!&a9G!&`p=s#$GKJ,~>
+JcE:\!9;<'!!)Qh!!)3^rrAViJ,~>
+JcE:\!40oL!0csQ!0cUGs-'#RJ,~>
+JcE:\!-ufg!&a<H!&`s>s#$AIJ,~>
+JcE:\!9;<'!!)Qh!!)9`rrAPgJ,~>
+JcE:\!40oL!0csQ!0c[Is-&rPJ,~>
+JcE:\!-ufg!&a<H!&a$@s#$;GJ,~>
+JcE:\!9;<'!!)Ti!!)<arrAJeJ,~>
+JcE:\!40oL!0d!R!0c^Js-&lNJ,~>
+JcE:\!-ufg!&a?I!&a'As#$5EJ,~>
+JcE:\!9;<'!!)Wj!!)?brrADcJ,~>
+JcE:\!40oL!0d$S!0caKs-&fLJ,~>
+JcE:\!-ufg!&aBJ!&a*Bs#$/CJ,~>
+JcE:\!9;<'!!)Wj!!)EdrrA>aJ,~>
+JcE:\!40oL!0d$S!0cgMs-&`JJ,~>
+JcE:\!-ufg!&aBJ!&a0Ds#$)AJ,~>
+JcE:\!9;<'!!)Zk!!)HerrA8_J,~>
+JcE:\!40oL!0d'T!0cjNs-&ZHJ,~>
+JcE:\!-ufg!&aEK!&a3Es#$#?J,~>
+JcE:\!9;<'!!)]l!!)KfrrA2]J,~>
+JcE:\!40oL!0d*U!0cmOs-&TFJ,~>
+JcE:\!-ufg!&aHL!&a6Fs##r=J,~>
+JcE:\!9;<'!!)]l!!)QhrrA,[J,~>
+JcE:\!40oL!0d*U!0csQs-&NDJ,~>
+JcE:\!-ufg!&aHL!&a<Hs##l;J,~>
+JcE:\!9;<'!!)`m!!)WjrW%rXJ,~>
+JcE:\!40oL!0d-V!0d$Srf`?AJ,~>
+JcE:\!-ufg!&aKM!&aBJr\]]8J,~>
+JcE:\!9;<'!!)cn!!)Zkrr@rVJ,~>
+JcE:\!40oL!0d0W!0d'Ts-&??J,~>
+JcE:\!-ufg!&aNN!&aEKs##]6J,~>
+JcE:\!9;<'!!)fo!!)]lrr@lTJ,~>
+JcE:\!40oL!0d3X!0d*Us-&9=J,~>
+JcE:\!-ufg!&aQO!&aHLs##W4J,~>
+JcE:\!9;<'!!)fo!!)cnrr@fRJ,~>
+JcE:\!40oL!0d3X!0d0Ws-&3;J,~>
+JcE:\!-ufg!&aQO!&aNNs##Q2J,~>
+JcE:\!9;<'!!)ip!!)cn!!%]PJ,~>
+JcE:\!40oL!0d6Y!0d0W!0`*9J,~>
+JcE:\!-ufg!&aTP!&aNN!&]H0J,~>
+JcE:\!9;<'!!)lq!!)forr@]OJ,~>
+JcE:\!40oL!0d9Z!0d3Xs-&*8J,~>
+JcE:\!-ufg!&aWQ!&aQOs##H/J,~>
+JcE:\!9;<'!!)or!!)iprr@WMJ,~>
+JcE:\!40oL!0d<[!0d6Ys-&$6J,~>
+JcE:\!-ufg!&aZR!&aTPs##B-J,~>
+JcE:\!9;<'!!)or!!)orrr@WMs8RT~>
+JcE:\!40oL!0d<[!0d<[s-&$6s8RT~>
+JcE:\!-ufg!&aZR!&aZRs##B-s8RT~>
+JcE:\!9;<'!!)rs!!)or!!%TMrVqB~>
+JcE:\!40oL!0d?\!0d<[!0`!6rVqB~>
+JcE:\!-ufg!&a]S!&aZR!&]?-rVqB~>
+JcE:\!9;<'!!)ut!!)rsrr@WMr;V9~>
+JcE:\!40oL!0dB]!0d?\s-&$6r;V9~>
+JcE:\!-ufg!&a`T!&a]Ss##B-r;V9~>
+JcE:\!9;<'!!*#u!!)utrr@WMqYu'~>
+JcE:\!40oL!0dE^!0dB]s-&$6qYu'~>
+JcE:\!-ufg!&acU!&a`Ts##B-qYu'~>
+JcE:\!9;<'!!*#u"9AK%!!%TMq#>j~>
+JcE:\!40oL!0dE^"I&lcPEURtq#>j~>
+JcE:\!-ufg!&acU"?$5Z2)Tsbq#>j~>
+JcE:\!9;<'"p"]'!<3$!JcGHDJ,~>
+JcE:\!40oL#*])ePQ-i1JcGHDJ,~>
+JcE:\!-ufg"uZG\2?,NkJcGHDJ,~>
+JcE:\!9;<'!<E0!!.k1Bs*t~>
+JcE:\!40oL!L*Q_PC`c+s*t~>
+JcE:\!-ufg!B'oV21bf"s*t~>
+JcE:\!9;<'rr@WMnc++~>
+JcE:\!40oLs-&$6nc++~>
+JcE:\!-ufgs##B-nc++~>
+JcE:\!9;E*r;_EKnGe"~>
+JcE:\!41#OrKDg4nGe"~>
+JcE:\!-uojrAB0+nGe"~>
+JcE:\!9;K,rrE*!rr@WMnGe"~>
+JcE:\!41)Qs-*K_s-&$6nGe"~>
+JcE:\!-uuls#'iVs##B-nGe"~>
+JcE:\!9;Q.rrE&u!W`6#rr;os!sK]Mf_kaM!)%qDJ,~>
+JcE:\!41/Ss-*H^!gEYJrr;os!sK]Mf_kaM!)%qDJ,~>
+JcE:\!.!&ns#'fU!]C!8rr;os!sK]Mf_kaM!)%qDJ,~>
+JcE:\!9;W0rrE&urrE*!!!*#u#QQQRURlE4&)R9b!<>cEs*t~>
+JcE:\!415Us-*H^s-*K_!0dE^#QQQRURlE4&)R9b!<>cEs*t~>
+JcE:\!.!,ps#'fUs#'iV!&acU#QQQRURlE4&)R9b!<>cEs*t~>
+JcE:\!9;Z1!!)ut!!)ut!!*#u!<>dkrrTM,FoD=@!)%qDJ,~>
+JcE:\!418V!0dB]!0dB]!0dE^!<>dkrrTM,FoD=@!)%qDJ,~>
+JcE:\!.!/q!&a`T!&a`T!&acU!<>dkrrTM,FoD=@!)%qDJ,~>
+JcE:\!9;`3rrE#t!!)rs!!*#u!<>dkrrVur;>pLq!)%qDJ,~>
+JcE:\!41>Xs-*E]!0d?\!0dE^!<>dkrrVur;>pLq!)%qDJ,~>
+JcE:\!.!5ss#'cT!&a]S!&acU!<>dkrrVur;>pLq!)%qDJ,~>
+pAb&!JcEjl!9;f5rrDus!!)or!!*#u!<>dkrrU^NAc;W0!)%qDJ,~>
+pAb%cJcEjl!41DZs-*B\!0d<[!0dE^!<>dkrrU^NAc;W0!)%qDJ,~>
+pAb%.JcEjl!.!;us#'`S!&aZR!&acU!<>dkrrU^NAc;W0!)%qDJ,~>
+o)A\uJcEjl!9;l7rrDrr!!)lq!!*#u#QR?[lfP]/"3?&nr;V9~>
+o)A\bJcEjl!41J\s-*?[!0d9Z!0dE^#QR?[lfP]/"3?&nr;V9~>
+o)A\-JcEjl!.!B"s#']R!&aWQ!&acU#QR?[lfP]/"3?&nr;V9~>
+oD\f!JcEgk!9;o8!!)lq!!)ip!!*#uqZ$X3]Rg+[s*t~>
+oD\ecJcEgk!41M]!0d9Z!0d6Y!0dE^qZ$X3]Rg+[s*t~>
+oD\e.JcEgk!.!E#!&aWQ!&aTP!&acUqZ$X3]Rg+[s*t~>
+s8W"*qu?\)JcEgk!9;u:rrDoq!!)fo!!*#u#66]p\tM1cDLqibs*t~>
+s8W!lqu?[kJcEgk!41S_s-*<Z!0d3X!0dE^#66]p\tM1cDLqibs*t~>
+s8W!7qu?[6JcEgk!.!K%s#'ZQ!&aQO!&acU#66]p\tM1cDLqibs*t~>
+o)A\uJcEjl!9<&<rrDlp!!)cn!!*#u!<>dlrr`*V!4ma]r;V9~>
+o)A\bJcEjl!41Yas-*9Y!0d0W!0dE^!<>dlrr`*V!4ma]r;V9~>
+o)A\-JcEjl!.!Q's#'WP!&aNN!&acU!<>dlrr`*V!4ma]r;V9~>
+pAY,$rr2t,JcEjl!9<,>rrDlprrDcm!!*#u!<>dkrrU@D1kG])s*t~>
+pAY+frr2snJcEjl!41_cs-*9Ys-*0V!0dE^!<>dkrrU@D1kG])s*t~>
+pAY+1rr2s9JcEjl!.!W)s#'WPs#'NM!&acU!<>dkrrU@D1kG])s*t~>
+p&G#"JcEgk!9<2@rrDlprrD]k!!*#u!<>djrrPmp\q0n[s*t~>
+p&G"dJcEgk!41ees-*9Ys-**T!0dE^!<>djrrPmp\q0n[s*t~>
+p&G"/JcEgk!.!]+s#'WPs#'HK!&acU!<>djrrPmp\q0n[s*t~>
+JcE:\!9<;CrW)corrDWi!!*#u!<>djrrUFF6%T(7s*t~>
+JcE:\!41nhrfd0Xs-*$R!0dE^!<>djrrUFF6%T(7s*t~>
+JcE:\!.!f.r\aNOs#'BI!&acU!<>djrrUFF6%T(7s*t~>
+JcE:\!9<AErrDiorrDQg!!*#u!<>dirrPsraFXBjs*t~>
+JcE:\!41tjs-*6Xs-)sP!0dE^!<>dirrPsraFXBjs*t~>
+JcE:\!.!l0s#'TOs#'<G!&acU!<>dirrPsraFXBjs*t~>
+JcE:\!9<GGrrDiorrDKe!!%TMnGe"~>
+JcE:\!42%ls-*6Xs-)mN!0`!6nGe"~>
+JcE:\!.!r2s#'TOs#'6E!&]?-nGe"~>
+JcE:\!9<MIrrDiorrDEc!!%TMnGe"~>
+JcE:\!42+ns-*6Xs-)gL!0`!6nGe"~>
+JcE:\!."#4s#'TOs#'0C!&]?-nGe"~>
+JcE:\!9<SKrrDiorrD?a!!%TMnGe"~>
+JcE:\!421ps-*6Xs-)aJ!0`!6nGe"~>
+JcE:\!.")6s#'TOs#'*A!&]?-nGe"~>
+JcE:\!9<YMrrDlprW)0^!!%TMnGe"~>
+JcE:\!427rs-*9YrfcRG!0`!6nGe"~>
+JcE:\!."/8s#'WPr\`p>!&]?-nGe"~>
+JcE:\!9<_OrrDusquGjY!!%TMnGe"~>
+JcE:\!42=ts-*B\r0-7B!0`!6nGe"~>
+JcE:\!."5:s#'`Sr&*U9!&]?-nGe"~>
+JcE:\!9<eQrrE&ur;bdU!!%TMnGe"~>
+JcE:\!42D!s-*H^rKH1>!0`!6nGe"~>
+JcE:\!.";<s#'fUrAEO5!&]?-nGe"~>
+JcEIaqu?`WnGqAE!!%TMnGe"~>
+JcEIar0%,enWVc.!0`!6nGe"~>
+JcEIar&"J"nMT,%!&]?-nGe"~>
+JcEaiq#L?m!9<qUrrCUL!!%TMnGe"~>
+JcEaiq31aV!42P%s-)"5!0`!6nGe"~>
+JcEaiq)/*M!."G@s#&@,!&]?-nGe"~>
+JcF$qq#L'e!9<tV!!(LJ!!%TMnGe"~>
+JcF$qq31IN!42S&!0bn3!0`!6nGe"~>
+JcF$qq).gE!."JA!&`7*!&]?-nGe"~>
+JcF4!quH*`!9=%XrrCLI!!%TMnGe"~>
+JcF4!r0-LI!42Y(s-(n2!0`!6nGe"~>
+JcF4!r&*j@!."PCs#&7)!&]?-nGe"~>
+JcF:#rrD6^"QTO^!!(CG!!%TMnGe"~>
+JcF:#s-)XG"LJ..PEXAn!0`!6nGe"~>
+JcF:#s#'!>"F:%I2)Wb\!&]?-nGe"~>
+JcF@%rrD0\!oj7\cMmkEJcG6>J,~>
+JcF@%s-)RE!je)ScMmm.JcG6>J,~>
+JcF@%s#&p<!dQX\cMml%JcG6>J,~>
+JcFI(rW)$Z!<D0(rr<%Ms7$&=~>
+JcFI(rfcFC!L'k6rrA76s7$&=~>
+JcFI(r\`d:!B#/Hrr=p-s7$&=~>
+JcFO*rrD-[rW!!!j7iQYn:*%u$SHquhZ!QUJcG6>J,~>
+JcFO*s-)ODrf[B_ZhOJ)n:*%u$SHquhZ!S>JcG6>J,~>
+JcFO*s#&m;r\X`VH2%=Dn:*%u$SHquhZ!R5JcG6>J,~>
+JcFU,rrD-[rrE#t!9<kS$.^.$?'^jb"WuCSrr<%Ms7$&=~>
+JcFU,s-)ODs-*E]!42J#$.^.$?'^jb"WuCSrrA76s7$&=~>
+JcFU,s#&m;s#'cT!."A>$.^.$?'^jb"WuCSrr=p-s7$&=~>
+JcF[.rrD-[rrDrr!9<nT"8*rObPhGCbRc/qi;WcWJcG6>J,~>
+JcF[.s-)ODs-*?[!42M$"8*rObPhGCbRc/qi;We@JcG6>J,~>
+JcF[.s#&m;s#']R!."D?"8*rObPhGCbRc/qi;Wd7JcG6>J,~>
+JcF^/!!)*[rrDlp!9<nT!g!DQqu6_f!0Z:?!!%TMnGe"~>
+JcF^/!0cLDs-*9Y!42M$!g!DQqu6_f!0Z:?!0`!6nGe"~>
+JcF^/!&`j;s#'WP!."D?!g!DQqu6_f!0Z:?!&]?-nGe"~>
+JcFa0!!)-\rrDfn!9<nT!^7%gqu6`n$UEYM!!%TMnGe"~>
+JcFa0!0cOEs-*3W!42M$!^7%gqu6`n$UEYM!0`!6nGe"~>
+JcFa0!&`m<s#'QN!."D?!^7%gqu6`n$UEYM!&]?-nGe"~>
+JcFd1!!)0]rrD`l!9<nT!>7EgrrG(mi;WcWJcG6>J,~>
+JcFd1!0cRFs-*-U!42M$!>7EgrrG(mi;We@JcG6>J,~>
+JcFd1!&`p=s#'KL!."D?!>7EgrrG(mi;Wd7JcG6>J,~>
+JcFd1!!)6_rrDZj!9<nT!<bshrrGUmi;WcWJcG6>J,~>
+JcFd1!0cXHs-*'S!42M$!<bshrrGUmi;We@JcG6>J,~>
+JcFd1!&a!?s#'EJ!."D?!<bshrrGUmi;Wd7JcG6>J,~>
+JcFg2!!)9`rrDTh!9<nT!>7EgrrG(ki;WcWJcG6>J,~>
+JcFg2!0c[Is-*!Q!42M$!>7EgrrG(ki;We@JcG6>J,~>
+JcFg2!&a$@s#'?H!."D?!>7EgrrG(ki;Wd7JcG6>J,~>
+JcFj3!!)<arrDNf!9<nT!^7%gqu6`n$U!AI!!%TMnGe"~>
+JcFj3!0c^Js-)pO!42M$!^7%gqu6`n$U!AI!0`!6nGe"~>
+JcFj3!&a'As#'9F!."D?!^7%gqu6`n$U!AI!&]?-nGe"~>
+JcFm4!!)?brrDHd!9<nT!g!DSqu6_h!0,q:!!%TMnGe"~>
+JcFm4!0caKs-)jM!42M$!g!DSqu6_h!0,q:!0`!6nGe"~>
+JcFm4!&a*Bs#'3D!."D?!g!DSqu6_h!0,q:!&]?-nGe"~>
+JcFp5!!)BcrrDBb!9<nT"8!iOc2IYEc4M)fi;WcWJcG6>J,~>
+JcFp5!0cdLs-)dK!42M$"8!iOc2IYEc4M)fi;We@JcG6>J,~>
+JcFp5!&a-Cs#'-B!."D?"8!iOc2IYEc4M)fi;Wd7JcG6>J,~>
+JcFs6!!)EdrrD<`!9<kS$.^.$?^I-g"rGSBrr<%Ms7$&=~>
+JcFs6!0cgMs-)^I!42J#$.^.$?^I-g"rGSBrrA76s7$&=~>
+JcFs6!&a0Ds#''@!."A>$.^.$?^I-g"rGSBrr=p-s7$&=~>
+JcG!7!!)HerrD6^!9<hR#Om3q$31&TlJDO@!.k1>s*t~>
+JcG!7!0cjNs-)XG!42G"#Om3q$31&TlJDO@PC`c's*t~>
+JcG!7!&a3Es#'!>!.">=#Om3q$31&TlJDO@21bess*t~>
+JcG$8!!)KfrrD0\!9<\N"8GFfN8FR7!.k1>s*t~>
+JcG$8!0cmOs-)RE!42:s"8GFfN8FR7PC`c's*t~>
+JcG$8!&a6Fs#&p<!."29"8GFfN8FR721bess*t~>
+p&G#"JcGQG!!)QhrrD*Z!9<YM"8GCeRG\#E!.k1>s*t~>
+p&G"dJcGQG!0csQs-)LC!427r"8GCeRG\#EPC`c's*t~>
+p&G"/JcGQG!&a<Hs#&j:!."/8"8GCeRG\#E21bess*t~>
+pAY,$rr2t,JcGWI!!)TirrD$X!9;<'!!%TMnGe"~>
+pAY+frr2snJcGWI!0d!Rs-)FA!40oL!0`!6nGe"~>
+pAY+1rr2s9JcGWI!&a?Is#&d8!-ufg!&]?-nGe"~>
+o)A\uJcGZJ!!)WjrrCsV!9;<'!!%TMnGe"~>
+o)A\bJcGZJ!0d$Ss-)@?!40oL!0`!6nGe"~>
+o)A\-JcGZJ!&aBJs#&^6!-ufg!&]?-nGe"~>
+s8W"*qu?\)JcGZJ!!)ZkrrCmT!9;<'!!%TMnGe"~>
+s8W!lqu?[kJcGZJ!0d'Ts-):=!40oL!0`!6nGe"~>
+s8W!7qu?[6JcGZJ!&aEKs#&X4!-ufg!&]?-nGe"~>
+p&>##JcGWI!!)]lrrCgR!9;<'!!%TMnGe"~>
+p&>"eJcGWI!0d*Us-)4;!40oL!0`!6nGe"~>
+p&>"0JcGWI!&aHLs#&R2!-ufg!&]?-nGe"~>
+pAY,$JcGTH!!)cnrrCaP!9;<'!!%TMnGe"~>
+pAY+fJcGTH!0d0Ws-).9!40oL!0`!6nGe"~>
+pAY+1JcGTH!&aNNs#&L0!-ufg!&]?-nGe"~>
+pAb&!JcGcM!!)forrC[N!9;<'!!%TMnGe"~>
+pAb%cJcGcM!0d3Xs-)(7!40oL!0`!6nGe"~>
+pAb%.JcGcM!&aQOs#&F.!-ufg!&]?-nGe"~>
+JcG3=!!)lqrrCUL!9;<'!!%TMnGe"~>
+JcG3=!0d9Zs-)"5!40oL!0`!6nGe"~>
+JcG3=!&aWQs#&@,!-ufg!&]?-nGe"~>
+JcG6>!!)orrrCOJ!9;<'!!%TMnGe"~>
+JcG6>!0d<[s-(q3!40oL!0`!6nGe"~>
+JcG6>!&aZRs#&:*!-ufg!&]?-nGe"~>
+JcG6>!!)utrrCIH!9;<'!!%TMnGe"~>
+JcG6>!0dB]s-(k1!40oL!0`!6nGe"~>
+JcG6>!&a`Ts#&4(!-ufg!&]?-nGe"~>
+JcG9?!!*#urrCCF!9;<'!!%TMnGe"~>
+JcG9?!0dE^s-(e/!40oL!0`!6nGe"~>
+JcG9?!&acUs#&.&!-ufg!&]?-nGe"~>
+JcG<@!!*#u!!(:D!9;<'!!%TMnGe"~>
+JcG<@!0dE^!0b\-!40oL!0`!6nGe"~>
+JcG<@!&acU!&`%$!-ufg!&]?-nGe"~>
+JcG<@!s&?$!6kHCj37N'!.k1>s*t~>
+JcG<@"-`bKPKa%,ZcrFLPC`c's*t~>
+JcG<@"#^*929c(#H-H9g21bess*t~>
+JcG?ArW(+@!9;<'!!%TMnGe"~>
+JcG?ArfbM)!40oL!0`!6nGe"~>
+JcG?Ar\_ju!-ufg!&]?-nGe"~>
+JcGBBrrC.?!9;<'!!%TMnGe"~>
+JcGBBs-(P(!40oL!0`!6nGe"~>
+JcGBBs#%mt!-ufg!&]?-nGe"~>
+JcGHDrW("=!9;<'!!%TMnGe"~>
+JcGHDrfbD&!40oL!0`!6nGe"~>
+JcGHDr\_ar!-ufg!&]?-nGe"~>
+JcGQGrW)uu!!((>!9;<'!!%TMnGe"~>
+JcGQGrfdB^!0bJ'!40oL!0`!6nGe"~>
+JcGQGr\a`U!&_gs!-ufg!&]?-nGe"~>
+JcGWIrrE#t!!(%=!9;<'!!%TMnGe"~>
+JcGWIs-*E]!0bG&!40oL!0`!6nGe"~>
+JcGWIs#'cT!&_dr!-ufg!&]?-nGe"~>
+JcG]KrrDrr!!(%=!9;<'!!%TMnGe"~>
+JcG]Ks-*?[!0bG&!40oL!0`!6nGe"~>
+JcG]Ks#']R!&_dr!-ufg!&]?-nGe"~>
+JcGcMrrDoq!W`9#r;Zp'*amdLrrD*'rr<%Ms7$&=~>
+JcGcMs-*<Z!gEZar;Zp'*amdLrrBCLrrA76s7$&=~>
+JcGcMs#'ZQ!]C#Xr;Zp'*amdLrr@>grr=p-s7$&=~>
+JcG`Mq#:^%s8N'QUSFAq#SQ+CrrD*'rr<%Ms7$&=~>
+JcGb6q#:_cs8N'QUSFAq#SQ+CrrBCLrrA76s7$&=~>
+JcGa-q#:^Zs8N'QUSFAq#SQ+Crr@>grr=p-s7$&=~>
+KE(rOpAY6qs8N'lrVlr$!-Z`h!9;<'!!%TMnGe"~>
+KE(t8pAY8Zs8N'lrVlr$!-Z`h!40oL!0`!6nGe"~>
+KE(s/pAY7Qs8N'lrVlr$!-Z`h!-ufg!&]?-nGe"~>
+L&_/Qo`#$os8N'lrVlrp!)h2D!9;<'!!%TMnGe"~>
+L&_1:o`#&Xs8N'lrVlrp!)h2D!40oL!0`!6nGe"~>
+L&_01o`#%Os8N'lrVlrp!)h2D!-ufg!&]?-nGe"~>
+L]@ASoD\djrr3!!9E"kldK!q,rrD*'rr<%Ms7$&=~>
+L]@C<oD\fSrr3!!9E"kldK!q,rrBCLrrA76s7$&=~>
+L]@B3oD\eJrr3!!9E"kldK!q,rr@>grr=p-s7$&=~>
+M?!SUnc&Rhrr36(7dKC&ZmZ!pd/O++bl7YCJcG6>J,~>
+M?!U>nc&TQrr36(7dKC&ZmZ!pd/O*Pbl7[,JcG6>J,~>
+M?!T5nc&SHrr36(7dKC&ZmZ!pd/O)kbl7Z#JcG6>J,~>
+MuWeWn,E@frr;iq!?ePkrrD*'rr<%Ms7$&=~>
+MuWg@n,EBOrr;iq!?ePkrrBCLrrA76s7$&=~>
+MuWf7n,EAFrr;iq!?ePkrr@>grr=p-s7$&=~>
+N;ikXmJd.drr30&2nQ]<h#>V!!9;<'!!%TMnGe"~>
+N;imAmJd0Mrr30&2nQ]<h#>V!!40oL!0`!6nGe"~>
+N;il8mJd/Drr30&2nQ]<h#>V!!-ufg!&]?-nGe"~>
+NrT+ZmJd.drVllu9?I26j37N'!.k1>s*t~>
+NrT-CmJd0MrVllu9?I26ZcrFLPC`c's*t~>
+NrT,:mJd/DrVllu9?I26H-H9g21bess*t~>
+OT5=\li-qbrVllu9?I26j37N'!.k1>s*t~>
+OT5?Eli-sKrVllu9?I26ZcrFLPC`c's*t~>
+OT5><li-rBrVllu9?I26H-H9g21bess*t~>
+P5kO^l2L_`rVllu9?I26j37N'!.k1>s*t~>
+P5kQGl2LaIrVllu9?I26ZcrFLPC`c's*t~>
+P5kP>l2L`@rVllu9?I26H-H9g21bess*t~>
+PlLa`kPkM^rVllu9?I26j37N'!.k1>s*t~>
+PlLcIkPkOGrVllu9?I26ZcrFLPC`c's*t~>
+PlLb@kPkN>rVllu9?I26H-H9g21bess*t~>
+QiI$bk5PD]r;Qct9?I26j37N'!.k1>s*t~>
+QiI&Kk5PFFr;Qct9?I26ZcrFLPC`c's*t~>
+QiI%Bk5PE=r;Qct9?I26H-H9g21bess*t~>
+RK*9ej8T)Z_Z'Vrbl7YCJcG6>J,~>
+RK*;Nj8T+C_Z'VBbl7[,JcG6>J,~>
+RK*:Ej8T*:_Z'U]bl7Z#JcG6>J,~>
+SH&QgiVrlX_Z'Vrbl7YCJcG6>J,~>
+SH&SPiVrnA_Z'VBbl7[,JcG6>J,~>
+SH&RGiVrm8_Z'U]bl7Z#JcG6>J,~>
+T)\fjhZ!QU_Z'Vrbl7YCJcG6>J,~>
+T)\hShZ!S>_Z'VBbl7[,JcG6>J,~>
+T)\gJhZ!R5_Z'U]bl7Z#JcG6>J,~>
+T`>#lh>[HT_>aMqbl7YCJcG6>J,~>
+T`>%Uh>[J=_>aMAbl7[,JcG6>J,~>
+T`>$Lh>[I4_>aL\bl7Z#JcG6>J,~>
+o`"o"YlF_'g]%6R_>aMqbl7YCJcG6>J,~>
+o`"ndYlF`eg]%8;_>aMAbl7[,JcG6>J,~>
+o`"n/YlF_\g]%72_>aL\bl7Z#JcG6>J,~>
+p&G&#Z2Xe(g&D$P_>aMqbl7YCJcG6>J,~>
+p&G%eZ2Xffg&D&9_>aMAbl7[,JcG6>J,~>
+p&G%0Z2Xe]g&D%0_>aL\bl7Z#JcG6>J,~>
+pAY2&s'`86rrC^O!!'k8!9;<'!!%TMnGe"~>
+pAY1hs%]p#s-)+8!0b8!!40oL!0`!6nGe"~>
+pAY13ru&0Cs#&I/!&_Um!-ufg!&]?-nGe"~>
+s8W"*qu6Y)[K$7,fDbgN_#FDpbl7YCJcG6>J,~>
+s8W!lqu6Xk[K$8jfDbi7_#FD@bl7[,JcG6>J,~>
+s8W!7qu6X6[K$7afDbh._#FC[bl7Z#JcG6>J,~>
+o`"o"\,ZI.ec,UL_#FDpbl7YCJcG6>J,~>
+o`"nd\,ZJlec,W5_#FD@bl7[,JcG6>J,~>
+o`"n/\,ZIcec,V,_#FC[bl7Z#JcG6>J,~>
+o`"o"\GlO/e,KCJ_#FDpbl7YCJcG6>J,~>
+o`"nd\GlPme,KE3_#FD@bl7[,JcG6>J,~>
+o`"n/\GlOde,KD*_#FC[bl7Z#JcG6>J,~>
+pAb&!]`8!3df0:I_#FDpbl7YCJcG6>J,~>
+pAb%c]`8"qdf0<2_#FD@bl7[,JcG6>J,~>
+pAb%.]`8!hdf0;)_#FC[bl7Z#JcG6>J,~>
+Y5eM%d/O(G_#FDpbl7YCJcG6>J,~>
+Y5eNcd/O*0_#FD@bl7[,JcG6>J,~>
+Y5eMZd/O)'_#FC[bl7Z#JcG6>J,~>
+YlF_'ci3tF^]+;obl7YCJcG6>J,~>
+YlF`eci4!/^]+;?bl7[,JcG6>J,~>
+YlF_\ci3u&^]+:Zbl7Z#JcG6>J,~>
+ZN'q)c2RbD^]+;obl7YCJcG6>J,~>
+ZN'rgc2Rd-^]+;?bl7[,JcG6>J,~>
+ZN'q^c2Rc$^]+:Zbl7Z#JcG6>J,~>
+[K$4+bPqPB^]+;obl7YCJcG6>J,~>
+[K$5ibPqR+^]+;?bl7[,JcG6>J,~>
+[K$4`bPqQ"^]+:Zbl7Z#JcG6>J,~>
+\,ZI.aSu5?^]+;obl7YCJcG6>J,~>
+\,ZJlaSu7(^]+;?bl7[,JcG6>J,~>
+\,ZIcaSu5t^]+:Zbl7Z#JcG6>J,~>
+\c;[0`r?#=^]+;obl7YCJcG6>J,~>
+\c;\n`r?%&^]+;?bl7[,JcG6>J,~>
+\c;[e`r?#r^]+:Zbl7Z#JcG6>J,~>
+]Dqm2`;]f;^]+;obl7YCJcG6>J,~>
+]Dqnp`;]h$^]+;?bl7[,JcG6>J,~>
+]Dqmg`;]fp^]+:Zbl7Z#JcG6>J,~>
+^&S*4_uB]:^Ae2nbl7YCJcG6>J,~>
+^&S+r_uB_#^Ae2>bl7[,JcG6>J,~>
+^&S*i_uB]o^Ae1Ybl7Z#JcG6>J,~>
+^]4<6_>aK8^Ae2nbl7YCJcG6>J,~>
+^]4=t_>aM!^Ae2>bl7[,JcG6>J,~>
+^]4<k_>aKm^Ae1Ybl7Z#JcG6>J,~>
+_>jN8^]+96^Ae2nbl7YCJcG6>J,~>
+_>jP!^]+:t^Ae2>bl7[,JcG6>J,~>
+_>jNm^]+9k^Ae1Ybl7Z#JcG6>J,~>
+_uK`:^&J'4^Ae2nbl7YCJcG6>J,~>
+_uKb#^&J(r^Ae2>bl7[,JcG6>J,~>
+_uK`o^&J'i^Ae1Ybl7Z#JcG6>J,~>
+`W,r<]Dhj2^Ae2nbl7YCJcG6>J,~>
+`W,t%]Dhkp^Ae2>bl7[,JcG6>J,~>
+`W,rq]Dhjg^Ae1Ybl7Z#JcG6>J,~>
+a8c/>\c2X0^Ae2nbl7YCJcG6>J,~>
+a8c1'\c2Yn^Ae2>bl7[,JcG6>J,~>
+a8c/s\c2Xe^Ae1Ybl7Z#JcG6>J,~>
+aSu5?\,QF.^Ae2nbl7YCJcG6>J,~>
+aSu7(\,QGl^Ae2>bl7[,JcG6>J,~>
+aSu5t\,QFc^Ae1Ybl7Z#JcG6>J,~>
+b5_JA\,QF.^&J)mbl7YCJcG6>J,~>
+b5_L*\,QGl^&J)=bl7[,JcG6>J,~>
+b5_K!\,QFc^&J(Xbl7Z#JcG6>J,~>
+bl@\C[Jp4,^&J)mbl7YCJcG6>J,~>
+bl@^,[Jp5j^&J)=bl7[,JcG6>J,~>
+bl@]#[Jp4a^&J(Xbl7Z#JcG6>J,~>
+cN!nEZi:"*^&J)mbl7YCJcG6>J,~>
+cN!p.Zi:#h^&J)=bl7[,JcG6>J,~>
+cN!o%Zi:"_^&J(Xbl7Z#JcG6>J,~>
+d/X+GZ2Xe(^&J)mbl7YCJcG6>J,~>
+d/X-0Z2Xff^&J)=bl7[,JcG6>J,~>
+d/X,'Z2Xe]^&J(Xbl7Z#JcG6>J,~>
+e,TCIYQ"S&^&J)mbl7YCJcG6>J,~>
+e,TE2YQ"Td^&J)=bl7[,JcG6>J,~>
+e,TD)YQ"S[^&J(Xbl7Z#JcG6>J,~>
+ec5XLXT&8#^&J)mbl7YCJcG6>J,~>
+ec5Z5XT&9a^&J)=bl7[,JcG6>J,~>
+ec5Y,XT&8X^&J(Xbl7Z#JcG6>J,~>
+fDkjNWrE&!^&J)mbl7YCJcG6>J,~>
+fDkl7WrE'_^&J)=bl7[,JcG6>J,~>
+fDkk.WrE&V^&J(Xbl7Z#JcG6>J,~>
+g&M'PW;cht^&J)mbl7YCJcG6>J,~>
+g&M)9W;cj]^&J)=bl7[,JcG6>J,~>
+g&M(0W;ciT^&J(Xbl7Z#JcG6>J,~>
+g].9RVZ-Vr^&J)mbl7YCJcG6>J,~>
+g].;;VZ-X[^&J)=bl7[,JcG6>J,~>
+g].:2VZ-WR^&J(Xbl7Z#JcG6>J,~>
+h>dKTV#LDp^&J)mbl7YCJcG6>J,~>
+h>dM=V#LFY^&J)=bl7[,JcG6>J,~>
+h>dL4V#LEP^&J(Xbl7Z#JcG6>J,~>
+huE]VUAk2n^&J)mbl7YCJcG6>J,~>
+huE_?UAk4W^&J)=bl7[,JcG6>J,~>
+huE^6UAk3N^&J(Xbl7Z#JcG6>J,~>
+iW&oXT`4ul^&J)mbl7YCJcG6>J,~>
+iW&qAT`5"U^&J)=bl7[,JcG6>J,~>
+iW&p8T`5!L^&J(Xbl7Z#JcG6>J,~>
+j8],ZT)Scj^&J)mbl7YCJcG6>J,~>
+j8].CT)SeS^&J)=bl7[,JcG6>J,~>
+j8]-:T)SdJ^&J(Xbl7Z#JcG6>J,~>
+jo>>\SGrQh^&J)mbl7YCJcG6>J,~>
+jo>@ESGrSQ^&J)=bl7[,JcG6>J,~>
+jo>?<SGrRH^&J(Xbl7Z#JcG6>J,~>
+k5PD]Rf<?f^&J)mbl7YCJcG6>J,~>
+k5PFFRf<AO^&J)=bl7[,JcG6>J,~>
+k5PE=Rf<@F^&J(Xbl7Z#JcG6>J,~>
+o`"o"pAb-mRK!6e^&J)mbl7YCJcG6>J,~>
+o`"ndpAb/VRK!8N^&J)=bl7[,JcG6>J,~>
+o`"n/pAb.MRK!7E^&J(Xbl7Z#JcG6>J,~>
+p&>)%s'ba'rrADc!!'_4!9;<'!!%TMnGe"~>
+p&>(gs%`Cis-&fL!0b+r!40oL!0`!6nGe"~>
+p&>(2ru(Y4s#$/C!&_Ii!-ufg!&]?-nGe"~>
+pAY,$rr2t,r;ZcsQ2^ga^&J)mbl7YCJcG6>J,~>
+pAY+frr2snr;Ze\Q2^iJ^&J)=bl7[,JcG6>J,~>
+pAY+1rr2s9r;ZdSQ2^hA^&J(Xbl7Z#JcG6>J,~>
+s5X#crSmldrr3"-s+03pirB(1j7))Z~>
+s0MVurNcK!rr3!os+.M@ZN-2?Zgb;O~>
+s*=M[rHSA\rr3!:s+,H[GlT^QH16*0~>
+pAY,$rr2t,NrK(Z^&J)mbl7YCJcG6>J,~>
+pAY+frr2snNrK*C^&J)=bl7[,JcG6>J,~>
+pAY+1rr2s9NrK):^&J(Xbl7Z#JcG6>J,~>
+p&>)%s'^oe!!'_4!9;<'!!%TMnGe"~>
+p&>(gs%\RR!0b+r!40oL!0`!6nGe"~>
+p&>(2ru$gr!&_Ii!-ufg!&]?-nGe"~>
+o`"o"N;ikX^&J)mbl7YCJcG6>J,~>
+o`"ndN;imA^&J)=bl7[,JcG6>J,~>
+o`"n/N;il8^&J(Xbl7Z#JcG6>J,~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG`L!!'_4!9;<'!!%TMnGe"~>
+JcG`L!0b+r!40oL!0`!6nGe"~>
+JcG`L!&_Ii!-ufg!&]?-nGe"~>
+JcG]K!!'b5!9;<'!!%TMnGe"~>
+JcG]K!0b.s!40oL!0`!6nGe"~>
+JcG]K!&_Lj!-ufg!&]?-nGe"~>
+JcG]K!!'b5!9;<'!!%TMnGe"~>
+JcG]K!0b.s!40oL!0`!6nGe"~>
+JcG]K!&_Lj!-ufg!&]?-nGe"~>
+JcG]K!!'b5!9;<'!!%TMnGe"~>
+JcG]K!0b.s!40oL!0`!6nGe"~>
+JcG]K!&_Lj!-ufg!&]?-nGe"~>
+JcG]K!!'b5!9;<'!!%TMnGe"~>
+JcG]K!0b.s!40oL!0`!6nGe"~>
+JcG]K!&_Lj!-ufg!&]?-nGe"~>
+JcG]K!!'b5!9;<'!!%TMnGe"~>
+JcG]K!0b.s!40oL!0`!6nGe"~>
+JcG]K!&_Lj!-ufg!&]?-nGe"~>
+JcG]K!!'b5!9;<'!!%TMnGe"~>
+JcG]K!0b.s!40oL!0`!6nGe"~>
+JcG]K!&_Lj!-ufg!&]?-nGe"~>
+JcG]K!!'b5!9;<'!!%TMnGe"~>
+JcG]K!0b.s!40oL!0`!6nGe"~>
+JcG]K!&_Lj!-ufg!&]?-nGe"~>
+JcGZJ!!'e6!9;<'!!%TMnGe"~>
+JcGZJ!0b1t!40oL!0`!6nGe"~>
+JcGZJ!&_Ok!-ufg!&]?-nGe"~>
+JcGZJ!!'e6!9;<'!!%TMnGe"~>
+JcGZJ!0b1t!40oL!0`!6nGe"~>
+JcGZJ!&_Ok!-ufg!&]?-nGe"~>
+JcGZJ!!'e6!9;<'!!%TMnGe"~>
+JcGZJ!0b1t!40oL!0`!6nGe"~>
+JcGZJ!&_Ok!-ufg!&]?-nGe"~>
+JcGZJ!!'e6!9;<'!!%TMnGe"~>
+JcGZJ!0b1t!40oL!0`!6nGe"~>
+JcGZJ!&_Ok!-ufg!&]?-nGe"~>
+mf*8qOT,:\^]+;obl7YCJcG6>J,~>
+mf*8^OT,<E^]+;?bl7[,JcG6>J,~>
+mf*8)OT,;<^]+:Zbl7Z#JcG6>J,~>
+n,NDrO8f1[_#FDpbl7YCJcG6>J,~>
+n,ND_O8f3D_#FD@bl7[,JcG6>J,~>
+n,ND*O8f2;_#FC[bl7Z#JcG6>J,~>
+nG`Pus'^ug!!'h7!9;<'!!%TMnGe"~>
+nG`Pbs%\XT!0b4u!40oL!0`!6nGe"~>
+nG`P-ru$mt!&_Rl!-ufg!&]?-nGe"~>
+s8W"*rVue(rr2t,O8f1[_#FDpbl7YCJcG6>J,~>
+s8W!lrVudjrr2snO8f3D_#FD@bl7[,JcG6>J,~>
+s8W!7rVud5rr2s9O8f2;_#FC[bl7Z#JcG6>J,~>
+mf*8qO8f1[_#FDpbl7YCJcG6>J,~>
+mf*8^O8f3D_#FD@bl7[,JcG6>J,~>
+mf*8)O8f2;_#FC[bl7Z#JcG6>J,~>
+mf*8qNrK(Z_>aMqbl7YCJcG6>J,~>
+mf*8^NrK*C_>aMAbl7[,JcG6>J,~>
+mf*8)NrK):_>aL\bl7Z#JcG6>J,~>
+nGiDpOT,:\_>aMqbl7YCJcG6>J,~>
+nGiD]OT,<E_>aMAbl7[,JcG6>J,~>
+nGiD(OT,;<_>aL\bl7Z#JcG6>J,~>
+JcGTH!!'k8!9;<'!!%TMnGe"~>
+JcGTH!0b8!!40oL!0`!6nGe"~>
+JcGTH!&_Um!-ufg!&]?-nGe"~>
+JcGTH!!'k8!9;<'!!%TMnGe"~>
+JcGTH!0b8!!40oL!0`!6nGe"~>
+JcGTH!&_Um!-ufg!&]?-nGe"~>
+JcGQG!!'n9!9;<'!!%TMnGe"~>
+JcGQG!0b;"!40oL!0`!6nGe"~>
+JcGQG!&_Xn!-ufg!&]?-nGe"~>
+JcGQG!!'n9!9;<'!!%TMnGe"~>
+JcGQG!0b;"!40oL!0`!6nGe"~>
+JcGQG!&_Xn!-ufg!&]?-nGe"~>
+JcGQG!!'n9!9;<'!!%TMnGe"~>
+JcGQG!0b;"!40oL!0`!6nGe"~>
+JcGQG!&_Xn!-ufg!&]?-nGe"~>
+JcGQG!!'n9!9;<'!!%TMnGe"~>
+JcGQG!0b;"!40oL!0`!6nGe"~>
+JcGQG!&_Xn!-ufg!&]?-nGe"~>
+JcGNF!!'q:!9;<'!!%TMnGe"~>
+JcGNF!0b>#!40oL!0`!6nGe"~>
+JcGNF!&_[o!-ufg!&]?-nGe"~>
+JcGNF!!'q:!9;<'!!%TMnGe"~>
+JcGNF!0b>#!40oL!0`!6nGe"~>
+JcGNF!&_[o!-ufg!&]?-nGe"~>
+JcGNF!!'q:!9;<'!!%TMnGe"~>
+JcGNF!0b>#!40oL!0`!6nGe"~>
+JcGNF!&_[o!-ufg!&]?-nGe"~>
+JcGKE!!'t;!9;<'!!%TMnGe"~>
+JcGKE!0bA$!40oL!0`!6nGe"~>
+JcGKE!&_^p!-ufg!&]?-nGe"~>
+JcGKE!!'t;!9;<'!!%TMnGe"~>
+JcGKE!0bA$!40oL!0`!6nGe"~>
+JcGKE!&_^p!-ufg!&]?-nGe"~>
+JcGKE!!'t;!9;<'!!%TMnGe"~>
+JcGKE!0bA$!40oL!0`!6nGe"~>
+JcGKE!&_^p!-ufg!&]?-nGe"~>
+JcGHD!!("<!9;<'!!%TMnGe"~>
+JcGHD!0bD%!40oL!0`!6nGe"~>
+JcGHD!&_aq!-ufg!&]?-nGe"~>
+JcGHD!!("<!9;<'!!%TMnGe"~>
+JcGHD!0bD%!40oL!0`!6nGe"~>
+JcGHD!&_aq!-ufg!&]?-nGe"~>
+JcGEC!!(%=!9;<'!!%TMnGe"~>
+JcGEC!0bG&!40oL!0`!6nGe"~>
+JcGEC!&_dr!-ufg!&]?-nGe"~>
+JcGEC!!(%=!9;<'!!%TMnGe"~>
+JcGEC!0bG&!40oL!0`!6nGe"~>
+JcGEC!&_dr!-ufg!&]?-nGe"~>
+JcGEC!!(%=!9;<'!!%TMnGe"~>
+JcGEC!0bG&!40oL!0`!6nGe"~>
+JcGEC!&_dr!-ufg!&]?-nGe"~>
+JcGBB!!((>!9;<'!!%TMnGe"~>
+JcGBB!0bJ'!40oL!0`!6nGe"~>
+JcGBB!&_gs!-ufg!&]?-nGe"~>
+JcGBB!!((>!9;<'!!%TMnGe"~>
+JcGBB!0bJ'!40oL!0`!6nGe"~>
+JcGBB!&_gs!-ufg!&]?-nGe"~>
+JcGBB!!((>!9;<'!!%TMnGe"~>
+JcGBB!0bJ'!40oL!0`!6nGe"~>
+JcGBB!&_gs!-ufg!&]?-nGe"~>
+JcG?A!!(+?!9;<'!!%TMnGe"~>
+JcG?A!0bM(!40oL!0`!6nGe"~>
+JcG?A!&_jt!-ufg!&]?-nGe"~>
+JcG?A!!(+?!9;<'!!%TMnGe"~>
+JcG?A!0bM(!40oL!0`!6nGe"~>
+JcG?A!&_jt!-ufg!&]?-nGe"~>
+JcG<@!!(.@!9;<'!!%TMnGe"~>
+JcG<@!0bP)!40oL!0`!6nGe"~>
+JcG<@!&_mu!-ufg!&]?-nGe"~>
+JcG<@!!(.@!9;<'!!%TMnGe"~>
+JcG<@!0bP)!40oL!0`!6nGe"~>
+JcG<@!&_mu!-ufg!&]?-nGe"~>
+JcG9?!!(1A!9;<'!!%TMnGe"~>
+JcG9?!0bS*!40oL!0`!6nGe"~>
+JcG9?!&_q!!-ufg!&]?-nGe"~>
+JcG6>!!(4B!9;<'!!%TMnGe"~>
+JcG6>!0bV+!40oL!0`!6nGe"~>
+JcG6>!&_t"!-ufg!&]?-nGe"~>
+JcG6>!!(4B!9;<'!!%TMnGe"~>
+JcG6>!0bV+!40oL!0`!6nGe"~>
+JcG6>!&_t"!-ufg!&]?-nGe"~>
+JcG3=!!(7C!9;<'!!%TMnGe"~>
+JcG3=!0bY,!40oL!0`!6nGe"~>
+JcG3=!&`"#!-ufg!&]?-nGe"~>
+JcG0<!!(:D!9;<'!!%TMnGe"~>
+JcG0<!0b\-!40oL!0`!6nGe"~>
+JcG0<!&`%$!-ufg!&]?-nGe"~>
+n,NAqKDtoOc2Re(bl7YCJcG6>J,~>
+n,NA^KDtq8c2RdMbl7[,JcG6>J,~>
+n,NA)KDtp/c2Rchbl7Z#JcG6>J,~>
+nG`Jsrr2t,KDtoOcMmn)bl7YCJcG6>J,~>
+nG`J`rr2snKDtq8cMmmNbl7[,JcG6>J,~>
+nG`J+rr2s9KDtp/cMmlibl7Z#JcG6>J,~>
+m/I&oK)YfNci4"*bl7YCJcG6>J,~>
+m/I&\K)Yh7ci4!Obl7[,JcG6>J,~>
+m/I&'K)Yg.ci3ujbl7Z#JcG6>J,~>
+s8W"*rVue(rr<",Jc>]Mci4"*bl7YCJcG6>J,~>
+s8W!lrVudjrr<!nJc>_6ci4!Obl7[,JcG6>J,~>
+s8W!7rVud5rr<!9Jc>^-ci3ujbl7Z#JcG6>J,~>
+n,EArJcG`L!!(CG!9;<'!!%TMnGe"~>
+n,EA_JcG`L!0be0!40oL!0`!6nGe"~>
+n,EA*JcG`L!&`.'!-ufg!&]?-nGe"~>
+nG`JsJcGZJ!!(FH!9;<'!!%TMnGe"~>
+nG`J`JcGZJ!0bh1!40oL!0`!6nGe"~>
+nG`J+JcGZJ!&`1(!-ufg!&]?-nGe"~>
+nGiDpJc>cN!7CfHj37N'!.k1>s*t~>
+nGiD]Jc>cNPL9C1ZcrFLPC`c's*t~>
+nGiD(Jc>cN2:;F(H-H9g21bess*t~>
+JcG!7!!(II!9;<'!!%TMnGe"~>
+JcG!7!0bk2!40oL!0`!6nGe"~>
+JcG!7!&`4)!-ufg!&]?-nGe"~>
+JcFs6!!(LJ!9;<'!!%TMnGe"~>
+JcFs6!0bn3!40oL!0`!6nGe"~>
+JcFs6!&`7*!-ufg!&]?-nGe"~>
+JcFs6!!(LJ!9;<'!!%TMnGe"~>
+JcFs6!0bn3!40oL!0`!6nGe"~>
+JcFs6!&`7*!-ufg!&]?-nGe"~>
+JcFp5!!(OK!9;<'!!%TMnGe"~>
+JcFp5!0bq4!40oL!0`!6nGe"~>
+JcFp5!&`:+!-ufg!&]?-nGe"~>
+JcFm4!!(RL!9;<'!!%TMnGe"~>
+JcFm4!0bt5!40oL!0`!6nGe"~>
+JcFm4!&`=,!-ufg!&]?-nGe"~>
+JcFm4!!(RL!9;<'!!%TMnGe"~>
+JcFm4!0bt5!40oL!0`!6nGe"~>
+JcFm4!&`=,!-ufg!&]?-nGe"~>
+JcFj3!!(UM!9;<'!!%TMnGe"~>
+JcFj3!0c"6!40oL!0`!6nGe"~>
+JcFj3!&`@-!-ufg!&]?-nGe"~>
+JcFg2rrC^O!9;<'!!%TMnGe"~>
+JcFg2s-)+8!40oL!0`!6nGe"~>
+JcFg2s#&I/!-ufg!&]?-nGe"~>
+JcFa0rrCdQ!9;<'!!%TMnGe"~>
+JcFa0s-)1:!40oL!0`!6nGe"~>
+JcFa0s#&O1!-ufg!&]?-nGe"~>
+JcF[.!!(dR!9;<'!!%TMnGe"~>
+JcF[.!0c1;!40oL!0`!6nGe"~>
+JcF[.!&`O2!-ufg!&]?-nGe"~>
+JcFX-rrCmT!9;<'!!%TMnGe"~>
+JcFX-s-):=!40oL!0`!6nGe"~>
+JcFX-s#&X4!-ufg!&]?-nGe"~>
+JcFR+rrCsV!9;<'!!%TMnGe"~>
+JcFR+s-)@?!40oL!0`!6nGe"~>
+JcFR+s#&^6!-ufg!&]?-nGe"~>
+JcFL)!!(sW!9;<'!!%TMnGe"~>
+JcFL)!0c@@!40oL!0`!6nGe"~>
+JcFL)!&`^7!-ufg!&]?-nGe"~>
+JcFI(rrD'Y!9;<'!!%TMnGe"~>
+JcFI(s-)IB!40oL!0`!6nGe"~>
+JcFI(s#&g9!-ufg!&]?-nGe"~>
+JcFC&rrD-[!9;<'!!%TMnGe"~>
+JcFC&s-)OD!40oL!0`!6nGe"~>
+JcFC&s#&m;!-ufg!&]?-nGe"~>
+JcF=$rrD3]!9;<'!!%TMnGe"~>
+JcF=$s-)UF!40oL!0`!6nGe"~>
+JcF=$s#&s=!-ufg!&]?-nGe"~>
+JcF7"r;c-_!9;<'!!%TMnGe"~>
+JcF7"rKHOH!40oL!0`!6nGe"~>
+JcF7"rAEm?!-ufg!&]?-nGe"~>
+JcF*srW)?c!9;<'!!%TMnGe"~>
+JcF*srfcaL!40oL!0`!6nGe"~>
+JcF*sr\a*C!-ufg!&]?-nGe"~>
+JcF!pr;cBf!9;<'!!%TMnGe"~>
+JcF!prKHdO!40oL!0`!6nGe"~>
+JcF!prAF-F!-ufg!&]?-nGe"~>
+JcEjlnGiRLq#JqE!!%TMnGe"~>
+JcEjlnWNsZq30>.!0`!6nGe"~>
+JcEjlnML;lq)-\%!&]?-nGe"~>
+JcE:\!9<nTpAj(M!!%TMnGe"~>
+JcE:\!42M$pQOJ6!0`!6nGe"~>
+JcE:\!."D?pGLh-!&]?-nGe"~>
+JcE:\!9<PJr;bjW!!%TMnGe"~>
+JcE:\!42.orKH7@!0`!6nGe"~>
+JcE:\!."&5rAEU7!&]?-nGe"~>
+JcE:\!9<DFquGp[!!%TMnGe"~>
+JcE:\!42"kr0-=D!0`!6nGe"~>
+JcE:\!.!o1r&*[;!&]?-nGe"~>
+JcE:\!9<5ArW)6`!!%TMnGe"~>
+JcE:\!41hfrfcXI!0`!6nGe"~>
+JcE:\!.!`,r\a!@!&]?-nGe"~>
+JcE:\!9<,>rrDEc!!%TMnGe"~>
+JcE:\!41_cs-)gL!0`!6nGe"~>
+JcE:\!.!W)s#'0C!&]?-nGe"~>
+JcE:\!9<&<rrDKe!!%TMnGe"~>
+JcE:\!41Yas-)mN!0`!6nGe"~>
+JcE:\!.!Q's#'6E!&]?-nGe"~>
+JcE:\!9;u:!!)Kf!!%TMnGe"~>
+JcE:\!41S_!0cmO!0`!6nGe"~>
+JcE:\!.!K%!&a6F!&]?-nGe"~>
+JcE:\!9;r9rrDTh!<E/u!!<BF>hFW-q>Ys~>
+JcE:\!41P^s-*!Q!L*Q^!!<BF>hFW-q>Ys~>
+JcE:\!.!H$s#'?H!B'oU!!<BF>hFW-q>Ys~>
+JcE:\!9;l7rrDZj$3:)+0VbD7E!m35JcGTHJ,~>
+JcE:\!41J\s-*'S$BtJi0VbD7E!m35JcGTHJ,~>
+JcE:\!.!B"s#'EJ$8qh`0VbD7E!m35JcGTHJ,~>
+nGiDpJcF'r!9;f5!!)Zk!s&?$9E"klZN,-!s8)bG~>
+nGiD]JcF'r!41DZ!0d'T"-``b9E"klZN,-!s8)bG~>
+nGiD(JcF'r!.!;u!&aEK"#^)Y9E"klZN,-!s8)bG~>
+m/I&oJcF'r!9;c4rrDcm!s&?$9E"klq#F9Cs8)bG~>
+m/I&\JcF'r!41AYs-*0V"-``b9E"klq#F9Cs8)bG~>
+m/I&'JcF'r!.!8ts#'NM"#^)Y9E"klq#F9Cs8)bG~>
+mJd/pJcF$q!9;]2rrDio!s&?$9E"kleGs03s8)bG~>
+mJd/]JcF$q!41;Ws-*6X"-``b9E"kleGs03s8)bG~>
+mJd/(JcF$q!.!2rs#'TO"#^)Y9E"kleGs03s8)bG~>
+s8W"*rVue(rr<",JcF$q!9;W0!!)ip$3:)+7dKC&\1Ig(JcGTHJ,~>
+s8W!lrVudjrr<!nJcF$q!415U!0d6Y$BtJi7dKC&\1Ig(JcGTHJ,~>
+s8W!7rVud5rr<!9JcF$q!.!,p!&aTP$8qh`7dKC&\1Ig(JcGTHJ,~>
+m/I&oJcF'r!9;T/!!)lq!<E/s!!*hIJcGQGJ,~>
+m/I&\JcF'r!412T!0d9Z!L*Q\!!*hIJcGQGJ,~>
+m/I&'JcF'r!.!)o!&aWQ!B'oS!!*hIJcGQGJ,~>
+nG`Jsrr2t,JcF'r!9;Q.!!)or#lsu*2nQYp3rj/Ls7u\F~>
+nG`J`rr2snJcF'r!41/S!0d<[$'YAh2nQYp3rj/Ls7u\F~>
+nG`J+rr2s9JcF'r!.!&n!&aZR#rV__2nQYp3rj/Ls7u\F~>
+n,NAqJcF$q!9;N-!!)rs!s&?$9E+qnqDSDcJcGTHJ,~>
+n,NA^JcF$q!41,R!0d?\"-``b9E+qnqDSDcJcGTHJ,~>
+n,NA)JcF$q!.!#m!&a]S"#^)Y9E+qnqDSDcJcGTHJ,~>
+JcE:\!9;K,!!)ut!s&?$9E"klb5aAMs8)bG~>
+JcE:\!41)Q!0dB]"-``b9E"klb5aAMs8)bG~>
+JcE:\!-uul!&a`T"#^)Y9E"klb5aAMs8)bG~>
+JcE:\!9;H+!!*#u!s&?$9Dnek9`VbUs82hH~>
+JcE:\!41&P!0dE^"-``b9Dnek9`VbUs82hH~>
+JcE:\!-urk!&acU"#^)Y9Dnek9`VbUs82hH~>
+JcE:\!9;E*"p"]'!<3$lr;QiC!'u29qu;0~>
+JcE:\!41#O#*])ePQ(VUr;QiC!'u29qu;0~>
+JcE:\!-uoj"uZG\2?*YLr;QiC!'u29qu;0~>
+JcE:\!9;B)"T\Q&rr>^hrrPsraFXBhs*t~>
+JcE:\!40uN"dAtMrr>^hrrPsraFXBhs*t~>
+JcE:\!-uli"Z?<;rr>^hrrPsraFXBhs*t~>
+JcE:\!9;?(rr@WMnGe"~>
+JcE:\!40rMs-&$6nGe"~>
+JcE:\!-uihs##B-nGe"~>
+JcE:\!9;<'!!%TMnGe"~>
+JcE:\!40oL!0`!6nGe"~>
+JcE:\!-ufg!&]?-nGe"~>
+JcE:\!9;<'rr@WMnc++~>
+JcE:\!40oLs-&$6nc++~>
+JcE:\!-ufgs##B-nc++~>
+JcE:\!9;<'!W`6#JcG<@J,~>
+JcE:\!40oL!gEYJJcG<@J,~>
+JcE:\!-ufg!]C!8JcG<@J,~>
+JcE:\!9;<'!s&B$!.k1As*t~>
+JcE:\!40oL"-`cbPC`c*s*t~>
+JcE:\!-ufg"#^,Y21bf!s*t~>
+JcE:\!9;<'!!*#u!!%TMo`'F~>
+JcE:\!40oL!0dE^!0`!6o`'F~>
+JcE:\!-ufg!&acU!&]?-o`'F~>
+JcE:\!9;<'!!)ut!!%TMp&BO~>
+JcE:\!40oL!0dB]!0`!6p&BO~>
+JcE:\!-ufg!&a`T!&]?-p&BO~>
+JcE:\!9;<'!!)rs!!%TMpA]X~>
+JcE:\!40oL!0d?\!0`!6pA]X~>
+JcE:\!-ufg!&a]S!&]?-pA]X~>
+JcE:\!9;<'!!)rs!!%TMpA]X~>
+JcE:\!40oL!0d?\!0`!6pA]X~>
+JcE:\!-ufg!&a]S!&]?-pA]X~>
+JcE:\!9;<'!!)or!!%TMp]#a~>
+JcE:\!40oL!0d<[!0`!6p]#a~>
+JcE:\!-ufg!&aZR!&]?-p]#a~>
+JcE:\!9;<'!!)lq!!%TMq#>j~>
+JcE:\!40oL!0d9Z!0`!6q#>j~>
+JcE:\!-ufg!&aWQ!&]?-q#>j~>
+JcE:\!9;<'!!)ip!!%TMq>Ys~>
+JcE:\!40oL!0d6Y!0`!6q>Ys~>
+JcE:\!-ufg!&aTP!&]?-q>Ys~>
+JcE:\!9;<'!!)ip!!%TMq>Ys~>
+JcE:\!40oL!0d6Y!0`!6q>Ys~>
+JcE:\!-ufg!&aTP!&]?-q>Ys~>
+JcE:\!9;<'!!)fo!!%TMqYu'~>
+JcE:\!40oL!0d3X!0`!6qYu'~>
+JcE:\!-ufg!&aQO!&]?-qYu'~>
+JcE:\!9;<'!!)cn!!%TMqu;0~>
+JcE:\!40oL!0d0W!0`!6qu;0~>
+JcE:\!-ufg!&aNN!&]?-qu;0~>
+JcE:\!9;<'!!)`m!!%TMr;V9~>
+JcE:\!40oL!0d-V!0`!6r;V9~>
+JcE:\!-ufg!&aKM!&]?-r;V9~>
+JcE:\!9;<'!!)`m!!%TMr;V9~>
+JcE:\!40oL!0d-V!0`!6r;V9~>
+JcE:\!-ufg!&aKM!&]?-r;V9~>
+JcE:\!9;<'!!)]l!!%TMrVqB~>
+JcE:\!40oL!0d*U!0`!6rVqB~>
+JcE:\!-ufg!&aHL!&]?-rVqB~>
+JcE:\!9;<'!!)Zk!!%TMrr7K~>
+JcE:\!40oL!0d'T!0`!6rr7K~>
+JcE:\!-ufg!&aEK!&]?-rr7K~>
+JcE:\!9;<'!!)Wj!!%TMs8RT~>
+JcE:\!40oL!0d$S!0`!6s8RT~>
+JcE:\!-ufg!&aBJ!&]?-s8RT~>
+JcE:\!9;<'!!)Wj!!%TMs8RT~>
+JcE:\!40oL!0d$S!0`!6s8RT~>
+JcE:\!-ufg!&aBJ!&]?-s8RT~>
+JcE:\!9;<'!!)Ti!!%TM!<7Q~>
+JcE:\!40oL!0d!R!0`!6!<7Q~>
+JcE:\!-ufg!&a?I!&]?-!<7Q~>
+JcE:\!9;<'!!)Qh!!%TMJ,~>
+JcE:\!40oL!0csQ!0`!6J,~>
+JcE:\!-ufg!&a<H!&]?-J,~>
+JcE:\!9;<'!!)Qh!!%TMJ,~>
+JcE:\!40oL!0csQ!0`!6J,~>
+JcE:\!-ufg!&a<H!&]?-J,~>
+JcE:\!9;<'!!)Ng!!%WNJ,~>
+JcE:\!40oL!0cpP!0`$7J,~>
+JcE:\!-ufg!&a9G!&]B.J,~>
+mJd/pJcF$q!9;<'!!)Kf!!%ZOJ,~>
+mJd/]JcF$q!40oL!0cmO!0`'8J,~>
+mJd/(JcF$q!-ufg!&a6F!&]E/J,~>
+mf3;qJcF$q!9;<'!!)Kf!!%ZOJ,~>
+mf3;^JcF$q!40oL!0cmO!0`'8J,~>
+mf3;)JcF$q!-ufg!&a6F!&]E/J,~>
+n,EGts'^KYcMmn)bl7YCmf*7eK`?Q~>
+n,EGas%\.FcMmmNbl7[,mf*9NK`?Q~>
+n,EG,ru$CfcMmlibl7Z#mf*8EK`?Q~>
+s8W"*rVue("TMp1s'^KYcMmn)bl7YCmJd.dL&ZZ~>
+s8W!lrVudj"TM6ss%\.FcMmmNbl7[,mJd0ML&ZZ~>
+s8W!7rVud5"TKA>ru$CfcMmlibl7Z#mJd/DL&ZZ~>
+nGiDpJcF'r!9;<'!!)Ed!!%`QJ,~>
+nGiD]JcF'r!40oL!0cgM!0`-:J,~>
+nGiD(JcF'r!-ufg!&a0D!&]K1J,~>
+mJd/pJcF$q!9;<'!!)Bc!!%cRJ,~>
+mJd/]JcF$q!40oL!0cdL!0`0;J,~>
+mJd/(JcF$q!-ufg!&a-C!&]N2J,~>
+mJd/pJcF$q!9;<'!!)Bc!!%cRJ,~>
+mJd/]JcF$q!40oL!0cdL!0`0;J,~>
+mJd/(JcF$q!-ufg!&a-C!&]N2J,~>
+JcE:\!9;<'!!)?b!!%fSJ,~>
+JcE:\!40oL!0caK!0`3<J,~>
+JcE:\!-ufg!&a*B!&]Q3J,~>
+JcE:\!9;<'!!)<a!!%iTJ,~>
+JcE:\!40oL!0c^J!0`6=J,~>
+JcE:\!-ufg!&a'A!&]T4J,~>
+JcE:\!9;<'!!)<a!!%iTJ,~>
+JcE:\!40oL!0c^J!0`6=J,~>
+JcE:\!-ufg!&a'A!&]T4J,~>
+JcE:\!9;<'!!)9`!!%lUJ,~>
+JcE:\!40oL!0c[I!0`9>J,~>
+JcE:\!-ufg!&a$@!&]W5J,~>
+JcE:\!9;<'!!)6_!!%oVJ,~>
+JcE:\!40oL!0cXH!0`<?J,~>
+JcE:\!-ufg!&a!?!&]Z6J,~>
+JcE:\!9;<'!!)6_!!%oVJ,~>
+JcE:\!40oL!0cXH!0`<?J,~>
+JcE:\!-ufg!&a!?!&]Z6J,~>
+JcE:\!9;<'!!)3^!!%rWJ,~>
+JcE:\!40oL!0cUG!0`?@J,~>
+JcE:\!-ufg!&`s>!&]]7J,~>
+JcE:\!9;<'!!)3^!!%rWJ,~>
+JcE:\!40oL!0cUG!0`?@J,~>
+JcE:\!-ufg!&`s>!&]]7J,~>
+JcE:\!9;<'!!)0]!!%uXJ,~>
+JcE:\!40oL!0cRF!0`BAJ,~>
+JcE:\!-ufg!&`p=!&]`8J,~>
+JcE:\!9;<'!!)0]!!%uXJ,~>
+JcE:\!40oL!0cRF!0`BAJ,~>
+JcE:\!-ufg!&`p=!&]`8J,~>
+JcE:\!9;<'!!)-\!!&#YJ,~>
+JcE:\!40oL!0cOE!0`EBJ,~>
+JcE:\!-ufg!&`m<!&]c9J,~>
+JcE:\!9;<'!!)*[!!&&ZJ,~>
+JcE:\!40oL!0cLD!0`HCJ,~>
+JcE:\!-ufg!&`j;!&]f:J,~>
+JcE:\!9;<'!!)*[!!&&ZJ,~>
+JcE:\!40oL!0cLD!0`HCJ,~>
+JcE:\!-ufg!&`j;!&]f:J,~>
+JcE:\!9;<'!!)'Z!!&)[J,~>
+JcE:\!40oL!0cIC!0`KDJ,~>
+JcE:\!-ufg!&`g:!&]i;J,~>
+JcE:\!9;<'!!)'Z!!&)[J,~>
+JcE:\!40oL!0cIC!0`KDJ,~>
+JcE:\!-ufg!&`g:!&]i;J,~>
+JcE:\!9;<'!!)$Y!!&,\J,~>
+JcE:\!40oL!0cFB!0`NEJ,~>
+JcE:\!-ufg!&`d9!&]l<J,~>
+JcE:\!9;<'!!)$Y!!&,\J,~>
+JcE:\!40oL!0cFB!0`NEJ,~>
+JcE:\!-ufg!&`d9!&]l<J,~>
+JcE:\!9;<'!!)!X!!&/]J,~>
+JcE:\!40oL!0cCA!0`QFJ,~>
+JcE:\!-ufg!&`a8!&]o=J,~>
+JcE:\!9;<'!!)!X!!&/]J,~>
+JcE:\!40oL!0cCA!0`QFJ,~>
+JcE:\!-ufg!&`a8!&]o=J,~>
+JcE:\!9;<'!!(sW!!&2^J,~>
+JcE:\!40oL!0c@@!0`TGJ,~>
+JcE:\!-ufg!&`^7!&]r>J,~>
+JcE:\!9;<'!!(sW!!&2^J,~>
+JcE:\!40oL!0c@@!0`TGJ,~>
+JcE:\!-ufg!&`^7!&]r>J,~>
+JcE:\!9;<'!!(pV!!&5_J,~>
+JcE:\!40oL!0c=?!0`WHJ,~>
+JcE:\!-ufg!&`[6!&]u?J,~>
+JcE:\!9;<'!!(pV!!&5_J,~>
+JcE:\!40oL!0c=?!0`WHJ,~>
+JcE:\!-ufg!&`[6!&]u?J,~>
+JcCB&!!(mU!!&8`J,~>
+JcCB&!0c:>!0`ZIJ,~>
+JcCB&!&`X5!&^#@J,~>
+mJm)mhu<[biW&gaiW&mchu<[biVrmdhZ!Ran,E@fo)J\tnG`IgoDe_shu<[biW&gan,In~>
+mJm)Zhu<[OiW&gNiW&mPhu<[OiVrmQhZ!RNn,EBOo)J\anG`KPoDe_`hu<[OiW&gNn,In~>
+mJm)%hu<ZoiW&fniW&lphu<ZoiVrlqhZ!Qnn,EAFo)J\,nG`JGoDe_+hu<ZoiW&fnn,In~>
+mJd/ph#IC_h>[I`ir9!err2t,iW&pdir9'gs'ajcs'bBr!!)Wj!+Gm,!+GBs!!)Ng!+Fgcs'amd
+!+G3nJ,~>
+mJd/]h#ICLh>[IMir9!Rrr2sniW&pQir9'Ts%_MPs%`%_!0d$S!)EOn!)E%`!0cpP!)DJPs%_PQ
+!)Dk[J,~>
+mJd/(h#IBlh>[Hmir8urrr2s9iW&oqir9&tru'bpru(;*!&aBJ!#be9!#b;+!&a9G!#a_pru'eq
+!#b,&J,~>
+mJd8ss']?orrQX/@G_"a@GUq`@H.:g@K0crrr?L,rr?KerrQX/@IO3r!:Tpf@IX9s!:g'h@Gq.e
+@K0cprrZ^0@:AU(J,~>
+mJd8`s%Z>IrrPsq:>Z!N:>PpM:?)9T:B+)Lrr>gnrr>gRrrPsq:@J2_POJMO:@S8`PO\YQ:>l-R
+:B+)JrrZ$r:/:6WJ,~>
+mJd8+rtu^4rrO)<);bAn);Y;m)<1Yt)?1T7rr<r9rr<qrrrO)<)=RS*2=LPF)=[Y+2=^\H);tMr
+)?1T5rrX/=)&_lBJ,~>
+oDe_s"oi">s8QNks86:.s'bs-@H[[g@K-<,@H[[g@K-<,@H[[g@K-9,@H7@f@K-9,@Gq.c@IO3r
+!:g*h@IF-q!;$6j@H%4g@K6@9iW&pds8N(-n,In~>
+oDe_`"oh=ms8PjXs85Ups%`Uo:?VZT:B(:n:?VZT:B(:n:?VZT:B(7n:?2?S:B(7n:>l-P:@J2_
+PO\\Q:@A,^POnhS:>u3T:B1>hiW&pQs8N'on,In~>
+oDe_+"ofGXs8Nu#s83`;ru(k:)<_%t)?0[9)<_%t)?0[9)<_%t)?0X9)<:_s)?0X9);tMp)=RS*
+2=^_H)=IM)2=pkJ)<(St)?9^SiW&oqs8N':n,In~>
+l2L`lirApbhZ!RaiVrmdh>[I`j8T*frr2t,i;Wdcn,E@fo)A\um/I%cnc&StirApbhZ!Ran,In~>
+l2L`YirApOhZ!RNiVrmQh>[IMj8T*Srr2sni;WdPn,EBOo)A\bm/I'Lnc&SairApOhZ!RNn,In~>
+l2L`$irAoohZ!QniVrlqh>[Hmj8T)srr2s9i;Wcpn,EAFo)A\-m/I&Cnc&S,irAoohZ!Qnn,In~>
+nGiDps8N(-hu<[biVrmdrr2t,ir9!eh#@@_ir9'gs'agb!+G?r!!)Wj!+G0m!!)`m!+Gm,!+Fdb
+!+Fjd!+Gm,!+GEt!I4Wp~>
+nGiD]s8N'ohu<[OiVrmQrr2snir9!Rh#@@Lir9'Ts%_JO!)E"_!0d$S!)DhZ!0d-V!)EOn!)DGO
+!)DMQ!)EOn!)E(a!I4Wp~>
+nGiD(s8N':hu<ZoiVrlqrr2s9ir8urh#@?lir9&tru'_o!#b8*!&aBJ!#b)%!&aKM!#be9!#a\o
+!#abq!#be9!#b>,!I4Wp~>
+nG`Jsr;Qb*hZ!Rai;`dbiW&gairApbj8T*fi;`^`nc&RhoDe_smf*7ep&G#"hZ!Rai;`dbnc&Z8
+/H:5~>
+nG`J`r;QalhZ!RNi;`dOiW&gNirApOj8T*Si;`^Mnc&TQoDe_`mf*9Np&G"dhZ!RNi;`dOnc&Z8
+/H:5~>
+nG`J+r;Qa7hZ!Qni;`coiW&fnirAooj8T)si;`]mnc&SHoDe_+mf*8Ep&G"/hZ!Qni;`conc&Z8
+/H:5~>
+nG`T!s']>es-Wfd!8@GQ!1a&kFtDGKJ,~>
+nG`Scs%Z=?s-WfdPM6$:PFVXTFtDGKJ,~>
+nG`S.rtu]*s-Wfd2;8'124X[KFtDGKJ,~>
+s8W"*rVue("oi">s8QMYs-`le!8@GQ!1j,mFtDGKs*t~>
+s8W!lrVudj"oh=ms8PiFs-`lePM6$:PF_^VFtDGKs*t~>
+s8W!7rVud5"ofGXs8Nsfs-`le2;8'124aaMFtDGKs*t~>
+m/I&ohu<[bhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Rao`#)6/DU8Ms*t~>
+m/I&\hu<[OhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNo`#)6/DU8Ms*t~>
+m/I&'hu<ZohZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qno`#)6/DU8Ms*t~>
+nG`Jsrr2t,hu<[bhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Rap&>53/):/L/H:5~>
+nG`J`rr2snhu<[OhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNp&>53/):/L/H:5~>
+nG`J+rr2s9hu<ZohZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qnp&>53/):/L/H:5~>
+n,NAqhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RapAYA5/):/G/DU8U~>
+n,NA^hZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNpAYA5/):/G/DU8U~>
+n,NA)hZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnpAYA5/):/G/DU8U~>
+ao;?LhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Rap\tM7/):/G/):1)J,~>
+ao;?9hZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNp\tM7/):/G/):1)J,~>
+ao;>YhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qnp\tM7/):/G/):1)J,~>
+ao;?LhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Raq#:Y3/):/G/):/Gs*t~>
+ao;?9hZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNq#:Y3/):/G/):/Gs*t~>
+ao;>YhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qnq#:Y3/):/G/):/Gs*t~>
+JcE:\!98Y1`W$9d/):/G/):/G/,t,~>
+JcE:\!4.7V`W$9d/):/G/):/G/,t,~>
+JcE:\!-s.q`W$9d/):/G/):/G/,t,~>
+JcE:\!98Y1`r?Ef/):/G/):/G/):/T~>
+JcE:\!4.7V`r?Ef/):/G/):/G/):/T~>
+JcE:\!-s.q`r?Ef/):/G/):/G/):/T~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
--- /dev/null
+++ axiom-20170501/bitcoin3.eps
@@ -0,0 +1,1406 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: bitcoin3.eps
+%%CreationDate: Tue Jan 20 01:53:06 2015
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 415 437
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 421.93686614173231 translate
+399.94015748031495 -421.93686614173231 scale
+% Image geometry
+400 422 8
+% Transformation matrix
+[ 400 0 0 422 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 400 string def
+/gstr 400 string def
+/bstr 400 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:        44754 ASCII Bytes
+colorimage
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!VPi2m"+MSm.K]GmIbu~>
+!VPi2m"+MSm.K]GmIbu~>
+!VPi2m"+MSm.K]GmIbu~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo>XKDh>dYjQQI*%Hum,^k?WGEGU<Dg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo>XKDh>dYjQQI*%Hum,^k?WHEGU<Dg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo,LIDh>dYjQQI*%Hum,^k?WGE,:3Cg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I>jV`NdY]5f&QVk%HH$0D17P:RZ)W0SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I?'eeNdY]5f&QVk%HH$0D17P:RuD`1SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I>jS_N.#K3f&QVk%HH$0D17M8RYuQ/SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDKXNKJ[bH6hLU"B/)%G.:tNipRahoMjXGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS4m"Ndp0akQ9+Bhrs81h2!X7:;?#Vk(s"^!f*u@J`u+WJ,~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDKXNTS]bH?nMU"B/)%G.:tO06^dhoMjXGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS=s#ic(=YkQ.]=kNE5mE%NY]e`c5LEW14aNP'i+iTPd~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDJXNBAWb,gVIU"B/)%G.:tNigI]hSlLSGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS=s#c"X`]kQ-gHkNE5\?nEsfiTTL?GlDshQcamCiTPd~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6R&icG[5^K#7BI%Dmdg\AZ\Ff#kn?S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$eh&Mfp?)M#0%oIO&BH?,`*P(FkMIjcN.3E29AtHbj6(p~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6R)jcG[5^K#7BI%Dmdg\AZ\Ff#kn?S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$Z7R`dp?)IL1$@^1Q<q>4/MQAN_C]bdE@ibtJ`l%UJ,~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6HrecG[5^K#7BI%Dmdg\AQSBe]Pe>S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$M_/K%p?)HpOltm<AV.mm/r&QPS1T/DBe:p?J`l%UJ,~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHQSb/M<4SXfQ=%A03)_o9aCcH4&C]q(djjpoJ]qVI<J
+V!7X&_;tI@aS=m"Sh2O:g#`h*k2si>]]S'&RHEYpJM!:@k2YTS~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHQSb/M<4SXfQ=%A03)_o9aCcH4&C]q(djjpoJ]qVI<J
+V!7X&_;tI@aS=m"Ah>U8g?&CqroOW]0&>[./]Qr8g.j6>J`c"TJ,~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHNQb/M<4SXfQ=%A03)_o9aCc,mrB]q(djjpoJ]qVI<J
+V!7X&_;tI@aSFs$gG^]9akGkWi;VjIG$="iTe5*_k/T80gO\MIk(!~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[Ai[o:u/(EY@N*=`lja_^=a\1CLjd%JM9?-&RWdLp#/ullB/V<`X#1G39jP2>M
+ro=1@/L9;+jQ,BP~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[Abq523:ZUTq>CY_pgJ+[.UNbe[gNG/#GMD3>G+XgI0$C.E/Z&4&#-0B2jMNRc
+ro=.'/Ur?4j5b^~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[AX=]hnMr`sD:n6V-__T<oK:q;da^6VOP2kWY?a"5s=O`-Y/\Uo>#)$+=jI\$T
+ro=-^/Z=6]j5b^~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[B^+R::/Y_=efe$@fVCp6V`[fg)N@qH\GV78%Te.Y&J1WCSRkDVRj9CPqc/dY3
+P5XGCS1<-AjQ,BP~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[BO"]IK/]d#6].Js%DD:/4R8;o)/2+r^9ebPeAM%l69eA$2Ft__Ij9A=4iT.m.
+_>WEq>?ug@j5b^~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[B@q+M./_oFJSh7A-3J?JSA<>m!065=D15+`D2_C#p1+d:P3c!dOj9O$fJ)o[_
+/_9p^!o,YqJ`PkPJ,~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_q;MQs=5r6k8cI]ia=LOHXlA?Y.bWN,OlGBV/<Sq],h_1q/]H`*/@kT9#E^RBio8ZC
+Oo=8@TIJEBioK*L~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_qVh_7/<Jl;/;jGd*MG#g/^WM:QVZVS/AL3(_(<@\>'JucQnR7S_(F@:iX"=C0$rV;
+_(<A"iW3RpJ`>_LJ,~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_qVh^u/[s`C/?f'4*J#b;9A\[f@[#fB/Crh?Sh/CF1nN^dCj=puR98GEiX!gd@G^#'
+Sh/CjiW@glP_%iSid_~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8Etcn$_jFY#,Wro!p:/8P7D(;hWSgaoPciSQ2JiL3g+iPR+siRocqqr%Y:E%/a)
+i<%[`OT",>O=/\3iT/sJ~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8EtYq.JLD(I<oro!o//=uk"(7%bT`%B<oiQ<^diEDZ.iKmg.iP7%tqr%Y*/6pj,
+i<$eG^]!*l9P/k7j5GL~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8F%N@\1S>qBaKiSi6</A_>E(1NHcTh=,!iN=`\fegD$iFA)1iLO*/qr%Xj/VN']
+i<#Q$e,J;-d5$r;iT&mI~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_tr6kR4A3/,+U96hqu7$9e<d2hngkof.<3EhqBWBhjIO&hn^enhq'EkqqhI--eA7R
+!nSugrnde&/9la'j55@~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_tr7<@ns"rUl?q.hqsnS9J4fOhj$so].CbThngqXhcZ0#hj.'qhnC\nr8.S2.qSY9
+!kp5$rnddY/?49Yj55@~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_u&=>f/@iKTW!&ca5>d"/21ephqqk)hj5nGhqsqTdFU4bhqqn+hqsr*hYc74a=`kX
+hZB<!eGe>,M_)o"hrEUE~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<mh(4$Rh][.ldaTgshet!dhngkohf^B]erME"hjIO&hn^enhq'Ekr8/()/8Mo+
+[F=$b/:Y[ZV(<t>J`#MFJ,~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<maXjarh]XLShn(GFfdonUhj$sofdgX\csn]]hcZ0#hj.'qhnC\nr8/$S/<[NN
+[G9ZR/>:)$N%Ajthr<OD~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<mXXq`rh]g/oP2D`[c+bi_hqqk)ho.1-e\O+]hUaTohqqn+hqsr*hYc7AF"F?$
+[Cb>RS1M+g]l>TeJ`#JEJ,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$i^b!D%h''E]WGY_lh:PFmh8:\kh:Qg".k.XWh3_3uh7tGgh:4$dr7q@gr$qiV
+h:;HS!\'5_J_f>AJ,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$iPqLehh'&%7`[d#(h7tOlh3q'oh8i5>.o"+@h,oirh3D1"h7YDir7q@<r@7t$
+eD7h:.fi>AJ_f;@J,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$hBm'@0+`U)d/?I[`UF`>!Eff,5[4j*]G1PL"1Uc,qBp%6-RU=kJh#MHn.g&i-
+h4"9m!F`Khh;R1?~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]7cJe'N[$^>+5~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]7fId"0udgjf~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]@iLg!J3!gqMQo~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+J_>V-J_BSHJ,~>
+J_>V-J_BSHJ,~>
+J_>V-J_BSHJ,~>
+J_5P+J_9MFJ,~>
+J_5P+J_9MFJ,~>
+J_5P+J_9MFJ,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcGKEqnht)s2*apr5.e"!5eO2rkeO3s2'?eir=N~>
+JcGKEqe5U$s(LBkr+PEr!,20-rb20.s(Hu`ir=N~>
+JcGKEq`FELs#]3>r&a6E!'BuUr]BuVs#Yf3ir=N~>
+JcGKE!5e[6!5daq!5e=,!5e^7!5e+&!5eI0!5a<eg&HR~>
+JcGKE!,2<1!,1Bl!,1s'!,2?2!,1a!!,2*+!,-r`g&HR~>
+JcGKE!'C,Y!'B3?!'BcO!'C/Z!'BQI!'BoS!'>c3g&HR~>
+JcGKE!5e[6!5daq!5e=,!5e[6!5e.'!5eI0!5a<eg&HR~>
+JcGKE!,2<1!,1Bl!,1s'!,2<1!,1d"!,2*+!,-r`g&HR~>
+JcGKE!'C,Y!'B3?!'BcO!'C,Y!'BTJ!'BoS!'>c3g&HR~>
+JcGKE!5e[6!5ea8r5/F4rkeU5!Q+m8_Z'T4_Y*p/_YjE6_Z'T5_Z'Q8_YsK7_Z'Q9_Z0SOqu6Z5
+qu?Z4r;Qf7s8Bh5s8Be8s2'?ep]#a~>
+JcGKE!,2<1!,2B3r+Q'/rb260!GMN3B`A&/B_DB*B`.l1B`A&0B`A#3B`7r2B`A#4B`J$Equ6Y0
+qu?Y/r;Qe2s8?X0s8?U3s(Hu`p]#a~>
+JcGKE!'C,Y!'C2[r&alWr]C&X!B^>[49#9W48&UR48f*Y49#9X49#6[48o0Z49#6\49,7@qu6XX
+qu?XWr;QdZs8>%Xs8>"[s#Yf3p]#a~>
+JcGKEqni@4!5e[6!5e[6!5e[6s2+a7!5e^7!5e=,!5e[6"2b*<_YjE9_Z0YQrVll7rr<#8rVll7
+r;Qc6q>UH3r;Zf6rVlu:s8Tt7rrBoes7ZJC~>
+JcGKEqe6!/!,2<1!,2<1!,2<1s(MB2!,2?2!,1s'!,2<1").`7B`.l4B`J*GrVlk2rr<"3rVlk2
+r;Qb1q>UG.r;Ze1rVlt5s8Qd2rr?_`s7ZJC~>
+JcGKEq`FfW!'C,Y!'C,Y!'C,Ys#^2Z!'C/Z!'BcO!'C,Y"$?P_48f*\49,=BrVljZrr<![rVljZ
+r;QaYq>UFVr;ZdYrVls]s8P1Zrr>-3s7ZJC~>
+JcGKE!5eR3!5e[6!5e[6!5e[6!5e[6!5e^7!5e=,!5e[6"2b*<_YjE9_Z0YQrVll7rr2u8r;Qc6
+r;Qc6q>UH3r;Qc6r;Ql9s8Tt7rrBoes7ZJC~>
+JcGKE!,23.!,2<1!,2<1!,2<1!,2<1!,2?2!,1s'!,2<1").`7B`.l4B`J*GrVlk2rr2t3r;Qb1
+r;Qb1q>UG.r;Qb1r;Qk4s8Qd2rr?_`s7ZJC~>
+JcGKE!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'C/Z!'BcO!'C,Y"$?P_48f*\49,=BrVljZrr2s[r;QaY
+r;QaYq>UFVr;QaYr;Qj\s8P1Zrr>-3s7ZJC~>
+JcGKE!5eR3!5e[6!5e[6!5e[6!5e[6!5e^7!5e=,!5e[6"2b*<_YjE9_Z0YQrVll7rr2u8r;Qc6
+r;Qc6q>UH3r;Qc6r;Ql9s8Tt7rrBoes7ZJC~>
+JcGKE!,23.!,2<1!,2<1!,2<1!,2<1!,2?2!,1s'!,2<1").`7B`.l4B`J*GrVlk2rr2t3r;Qb1
+r;Qb1q>UG.r;Qb1r;Qk4s8Qd2rr?_`s7ZJC~>
+JcGKE!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'C/Z!'BcO!'C,Y"$?P_48f*\49,=BrVljZrr2s[r;QaY
+r;QaYq>UFVr;QaYr;Qj\s8P1Zrr>-3s7ZJC~>
+JcGKE!5eR3!5e[6!5e[6!5e[6!5e[6!5e^7!5e=,!5e[6"2b*<_YjE9_Z0YQrVll7rr2u8r;Qc6
+r;Qc6q>UH3r;Qc6r;Qc6rr;r6JcGECJ,~>
+JcGKE!,23.!,2<1!,2<1!,2<1!,2<1!,2?2!,1s'!,2<1").`7B`.l4B`J*GrVlk2rr2t3r;Qb1
+r;Qb1q>UG.r;Qb1r;Qb1rr;q1JcGECJ,~>
+JcGKE!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'C/Z!'BcO!'C,Y"$?P_48f*\49,=BrVljZrr2s[r;QaY
+r;QaYq>UFVr;QaYr;QaYrr;pYJcGECJ,~>
+JcGKE!5eR3!5e[6!5e[6!5e[6!5e[6!5e^7!5ea8!5eI0!5e^7!5ea8!5e[6"2b*<_YsK7_Z'T8
+_YsK7_YjE6_YO33_YjE6_YjE9_Z0YQJcG9?J,~>
+JcGKE!,23.!,2<1!,2<1!,2<1!,2<1!,2?2!,2B3!,2*+!,2?2!,2B3!,2<1").`7B`7r2B`A&3
+B`7r2B`.l1B_hZ.B`.l1B`.l4B`J*GJcG9?J,~>
+JcGKE!'C#V!'C,Y!'C,Y!'C,Y!'C,Y!'C/Z!'C2[!'BoS!'C/Z!'C2[!'C,Y"$?P_48o0Z49#9[
+48o0Z48f*Y48JmV48f*Y48f*\49,=BJcG9?J,~>
+JcGKE!5eO2r5/F4r5/I5!5e[6!5e[6rke@.r5/C3r5/F4rPAa<_Z0YQs8Bh5s89b4s89b5rrBq6
+rrBq8s89`bs7ZJC~>
+JcGKE!,20-r+Q'/r+Q*0!,2<1!,2<1rb2!)r+Q$.r+Q'/rFcB7B`J*Gs8?X0s86R/s86R0rr?a1
+rr?a3s86P]s7ZJC~>
+JcGKE!'BuUr&alWr&aoX!'C,Y!'C,Yr]BfQr&aiVr&alWrAt2_49,=Bs8>%Xs84tWs84tXrr>.Y
+rr>.[s84s0s7ZJC~>
+JcC?%!5e[6!5a<ep]#a~>
+JcC?%!,2<1!,-r`p]#a~>
+JcC?%!'C,Y!'>c3p]#a~>
+JcC?%!5e[6!5a<ep]#a~>
+JcC?%!,2<1!,-r`p]#a~>
+JcC?%!'C,Y!'>c3p]#a~>
+JcC<$r5+$bpA]X~>
+JcC<$r+LZ]pA]X~>
+JcC<$r&]K0pA]X~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcE:\!98h6rrBP.J,~>
+JcE:\!4.F[s-'qlJ,~>
+JcE:\!-s>!s#%:cJ,~>
+JcE:\!98k7!!'G,J,~>
+JcE:\!4.I\!0ahjJ,~>
+JcE:\!-sA"!&_1aJ,~>
+JcE:\!98q9rrBG+J,~>
+JcE:\!4.O^s-'hiJ,~>
+JcE:\!-sG$s#%1`J,~>
+JcE:\!99";rrBA)J,~>
+JcE:\!4.U`s-'bgJ,~>
+JcE:\!-sM&s#%+^J,~>
+pAb&!JcEjl!99%<!!'8'J,~>
+pAb%cJcEjl!4.Xa!0aYeJ,~>
+pAb%.JcEjl!-sP'!&_"\J,~>
+pAY,$JcE^h!99+>rrB8&J,~>
+pAY+fJcE^h!4.^cs-'YdJ,~>
+pAY+1JcE^h!-sV)s#%"[J,~>
+pAY5's']>es2b3?j,j<@!3Q9O~>
+pAY4is%Z=?s2b3?Z]P4ePHFk8~>
+pAY44rtu]*s2b3?H'&(+26Hn/~>
+s8W"*rVun+s8N(-JcEjl!9:3]!!)ip!!)Kf!!')"J,~>
+s8W!lrVumms8N'oJcEjl!4/g-!0d6Y!0cmO!0aJ`J,~>
+s8W!7rVum8s8N':JcEjl!-t^H!&aTP!&a6F!&^hWJ,~>
+o)A\uJcEjl!9:3]!!)lq!!)NgrrB)!J,~>
+o)A\bJcEjl!4/g-!0d9Z!0cpPs-'J_J,~>
+o)A\-JcEjl!-t^H!&aWQ!&a9Gs#$hVJ,~>
+pAY,$rr2t,JcEjl!9:3]!!)lq!!)Qh!!&ttJ,~>
+pAY+frr2snJcEjl!4/g-!0d9Z!0csQ!0aA]J,~>
+pAY+1rr2s9JcEjl!-t^H!&aWQ!&a<H!&^_TJ,~>
+p&G#"JcEgk!9:3]!!)or!!)TirrAtsJ,~>
+p&G"dJcEgk!4/g-!0d<[!0d!Rs-'A\J,~>
+p&G"/JcEgk!-t^H!&aZR!&a?Is#$_SJ,~>
+JcE:\!9:3]!!)or!!)ZkrrAnqJ,~>
+JcE:\!4/g-!0d<[!0d'Ts-';ZJ,~>
+JcE:\!-t^H!&aZR!&aEKs#$YQJ,~>
+JcE:\!9:3]!!)rs!!)Zk!!&eoJ,~>
+JcE:\!4/g-!0d?\!0d'T!0a2XJ,~>
+JcE:\!-t^H!&a]S!&aEK!&^POJ,~>
+JcE:\!9:3]!!)rs!!)`mrrAenJ,~>
+JcE:\!4/g-!0d?\!0d-Vs-'2WJ,~>
+JcE:\!-t^H!&a]S!&aKMs#$PNJ,~>
+JcE:\!9:3]!!)ut!!)cnrrA_lJ,~>
+JcE:\!4/g-!0dB]!0d0Ws-',UJ,~>
+JcE:\!-t^H!&a`T!&aNNs#$JLJ,~>
+JcE:\!9:3]!!)ut!!)fo!!&VjJ,~>
+JcE:\!4/g-!0dB]!0d3X!0a#SJ,~>
+JcE:\!-t^H!&a`T!&aQO!&^AJJ,~>
+JcE:\!9:3]!!*#u!!)iprrAViJ,~>
+JcE:\!4/g-!0dE^!0d6Ys-'#RJ,~>
+JcE:\!-t^H!&acU!&aTPs#$AIJ,~>
+JcE:\!9:3]!!*#u!!)lq!!&MgJ,~>
+JcE:\!4/g-!0dE^!0d9Z!0`oPJ,~>
+JcE:\!-t^H!&acU!&aWQ!&^8GJ,~>
+JcE:\!9:3]!s&B$!;lfr!1Nq<~>
+JcE:\!4/g-"-`cbPPbC[PFDN%~>
+JcE:\!-t^H"#^,Y2>dFR24FPq~>
+JcE:\!9:3]!s&B$!<)rt!1<e:~>
+JcE:\!4/g-"-`cbPPtO]PF2B#~>
+JcE:\!-t^H"#^,Y2?!RT244Do~>
+JcE:\!9:3]!W`6#rVlitQN)I~>
+JcE:\!4/g-!gEYJrVlk]QN)I~>
+JcE:\!-t^H!]C!8rVljTQN)I~>
+JcE:\!9:3]"p"Z's8N'!Q2c@~>
+JcE:\!4/g-#*](Ns8S:HQ2c@~>
+JcE:\!-t^H"uZE<s8Or6Q2c@~>
+JcE:\!9:3]rr<-#!!&5_J,~>
+JcE:\!4/g-s-!NaPEV41J,~>
+JcE:\!-t^Hs"slX2)UTtJ,~>
+JcE:\!9:3]rW&)\J,~>
+JcE:\!4/g-rf`KEJ,~>
+JcE:\!-t^Hr\]i<J,~>
+JcE:\!9:3]rrA/\J,~>
+JcE:\!4/g-s-&QEJ,~>
+JcE:\!-t^Hs##o<J,~>
+JcE:\!9:9_rW&#ZJ,~>
+JcE:\!4/m/rf`ECJ,~>
+JcE:\!-tdJr\]c:J,~>
+JcE:\!9:<`!s&?$!0@/1~>
+JcE:\!4/p0"-`bKPE5`o~>
+JcE:\!-tgK"#^*9237cf~>
+JcE:\!9:Bbrr<0$!<3%[s*t~>
+JcE:\!40!2s-!QbPQ-i-s*t~>
+JcE:\!-tmMs"soY2?,Ops*t~>
+JcE:\!9:Ec!!*#u!W`6#O8j_~>
+JcE:\!40$3!0dE^!gEYJO8j_~>
+JcE:\!-tpN!&acU!]C!8O8j_~>
+JcE:\!9:KerrE&u!s&B$!0@/1~>
+JcE:\!40*5s-*H^"-`cbPE5`o~>
+JcE:\!-u!Ps#'fU"#^,Y237cf~>
+JcE:\!9:QgrrDus"T\T&!<<)t!!<BF>hJuS!<>ccs*t~>
+JcE:\!4007s-*B\"dAudPQ1[]!!<BF>hJuS!<>ccs*t~>
+JcE:\!-u'Rs#'`S"Z?>[2?3^T!!<BF>hJuS!<>ccs*t~>
+JcE:\!9:Th!!)or!!*#u$NU5,!&11CSo>&JhYmHT!)'!bJ,~>
+JcE:\!4038!0d<[!0dE^$^:Vj!&11CSo>&JhYmHT!)'!bJ,~>
+JcE:\!-u*S!&aZR!&acU$T7ta!&11CSo>&JhYmHT!)'!bJ,~>
+JcE:\!9:ZjrrDrr!!)ut"9AK%!)*:j!j_lLrVllu9;)<8~>
+JcE:\!409:s-*?[!0dB]"I&lc!)*:j!j_lLrVllu9;)<8~>
+JcE:\!-u0Us#']R!&a`T"?$5Z!)*:j!j_lLrVllu9;)<8~>
+JcE:\!9:`lrrDlp!!)ut"9AK%!)*:j!r2gnrVllu9;)<8~>
+JcE:\!40?<s-*9Y!0dB]"I&lc!)*:j!r2gnrVllu9;)<8~>
+JcE:\!-u6Ws#'WP!&a`T"?$5Z!)*:j!r2gnrVllu9;)<8~>
+JcE:\!9:cm!!)fo!!)rs"9AK%!)*:j!n@9^rVllu9;)<8~>
+JcE:\!40B=!0d3X!0d?\"I&lc!)*:j!n@9^rVllu9;)<8~>
+JcE:\!-u9X!&aQO!&a]S"?$5Z!)*:j!n@9^rVllu9;)<8~>
+JcE:\!9:iorrDfn!!)rs$NU5,!(Q;?k-uuFaI<-Z~>
+JcE:\!40H?s-*3W!0d?\$^:Vj!(Q;?k-uuFaI<-Z~>
+JcE:\!-u?Zs#'QN!&a]S$T7ta!(Q;?k-uuFaI<-Z~>
+JcE:\!9:lp!!)`m!!)or!W`9#qZ$X3]UAeM~>
+JcE:\!40K@!0d-V!0d<[!gEZaqZ$X3]UAeM~>
+JcE:\!-uB[!&aKM!&aZR!]C#XqZ$X3]UAeM~>
+JcE:\!9:rrrrD`l!!)or$3:,+!&qO$TfW6lRK%d~>
+JcE:\!40QBs-*-U!0d<[$BtMi!&qO$TfW6lRK%d~>
+JcE:\!-uH]s#'KL!&aZR$8qk`!&qO$TfW6lRK%d~>
+JcE:\!9;#trrD]k!!)lq"9AK%!)*=k"8XqV\siYL~>
+JcE:\!40WDs-**T!0d9Z"I&lc!)*=k"8XqV\siYL~>
+JcE:\!-uN_s#'HK!&aWQ"?$5Z!)*=k"8XqV\siYL~>
+JcE:\!9;&u!!)Wj!!)ip"9AK%!)*:j!m:R#Rf@m~>
+JcE:\!40ZE!0d$S!0d6Y"I&lc!)*:j!m:R#Rf@m~>
+JcE:\!-uQ`!&aBJ!&aTP"?$5Z!)*:j!m:R#Rf@m~>
+oD\f!JcEgk!9;-"rrDWi!!)ip"9AK%!)*7i!_i[+S,\!~>
+oD\ecJcEgk!40`Gs-*$R!0d6Y"I&lc!)*7i!_i[+S,\!~>
+oD\e.JcEgk!-uWbs#'BI!&aTP"?$5Z!)*7i!_i[+S,\!~>
+o`+r"JcEgk!9;3$rrDTh!!)fo"9AK%!)*7i!mL^2S,\!~>
+o`+qdJcEgk!40fIs-*!Q!0d3X"I&lc!)*7i!mL^2S,\!~>
+o`+q/JcEgk!-u]ds#'?H!&aQO"?$5Z!)*7i!mL^2S,\!~>
+p&>)%s'^KYaSu8#b5VGAnG`Igp\t?rs8N'lqu6^n!6C]1J,~>
+p&>(gs%\.FaSu7Hb5VI*nG`KPp\tA[s8N'lqu6^n!6C]1J,~>
+p&>(2ru$CfaSu6cb5VH!nG`JGp\t@Rs8N'lqu6^n!6C]1J,~>
+s8W"*rVlt.s8QMYs2b3?j37Q'!:Tpf!;HKn!0@/1~>
+s8W!lrVlsps8PiFs2b3?ZcrILPOJMOPP>(WPE5`o~>
+s8W!7rVls;s8Nsfs2b3?H-H<g2=LPF2>@+N237cf~>
+pAb&!JcEjl!9;?(!!)He!!)`m!!&)[J,~>
+pAb%cJcEjl!40rM!0cjN!0d-V!0`KDJ,~>
+pAb%.JcEjl!-uih!&a3E!&aKM!&]i;J,~>
+oD\f!JcEgk!9;E*rrDKe!!)]l!!&)[J,~>
+oD\ecJcEgk!41#Os-)mN!0d*U!0`KDJ,~>
+oD\e.JcEgk!-uojs#'6E!&aHL!&]i;J,~>
+oD\f!JcEgk!9;K,rrDEc!!)]l!!&)[J,~>
+oD\ecJcEgk!41)Qs-)gL!0d*U!0`KDJ,~>
+oD\e.JcEgk!-uuls#'0C!&aHL!&]i;J,~>
+JcE:\!9;N-!!)?b!!)Zk!!&)[J,~>
+JcE:\!41,R!0caK!0d'T!0`KDJ,~>
+JcE:\!.!#m!&a*B!&aEK!&]i;J,~>
+JcE:\!9;T/rrD?a!!)Zk!!&)[J,~>
+JcE:\!412Ts-)aJ!0d'T!0`KDJ,~>
+JcE:\!.!)os#'*A!&aEK!&]i;J,~>
+JcE:\!9;Z1rrD<`!!)Wj!!&)[J,~>
+JcE:\!418Vs-)^I!0d$S!0`KDJ,~>
+JcE:\!.!/qs#''@!&aBJ!&]i;J,~>
+JcE:\!9;]2!!)6_!!)Ti!!&)[J,~>
+JcE:\!41;W!0cXH!0d!R!0`KDJ,~>
+JcE:\!.!2r!&a!?!&a?I!&]i;J,~>
+JcE:\!9;c4rrD6^!!)Ti!!&)[J,~>
+JcE:\!41AYs-)XG!0d!R!0`KDJ,~>
+JcE:\!.!8ts#'!>!&a?I!&]i;J,~>
+JcE:\!9;f5!!)0]!!)Qh!!&)[J,~>
+JcE:\!41DZ!0cRF!0csQ!0`KDJ,~>
+JcE:\!.!;u!&`p=!&a<H!&]i;J,~>
+JcE:\!9;l7rrD3]!!)Ng!!&)[J,~>
+JcE:\!41J\s-)UF!0cpP!0`KDJ,~>
+JcE:\!.!B"s#&s=!&a9G!&]i;J,~>
+JcE:\!9;r9rrD-[!!)Ng!!&)[J,~>
+JcE:\!41P^s-)OD!0cpP!0`KDJ,~>
+JcE:\!.!H$s#&m;!&a9G!&]i;J,~>
+JcE:\!9;u:!!)'Z!!)Kf!!&)[J,~>
+JcE:\!41S_!0cIC!0cmO!0`KDJ,~>
+JcE:\!.!K%!&`g:!&a6F!&]i;J,~>
+JcE:\!9<&<rrD*Z!!)He!!&)[J,~>
+JcE:\!41Yas-)LC!0cjN!0`KDJ,~>
+JcE:\!.!Q's#&j:!&a3E!&]i;J,~>
+JcE:\!9<,>rrD'Y!!)Ed!!&)[J,~>
+JcE:\!41_cs-)IB!0cgM!0`KDJ,~>
+JcE:\!.!W)s#&g9!&a0D!&]i;J,~>
+JcE:\!9</?!!(sW!!)Ed!!&)[J,~>
+JcE:\!41bd!0c@@!0cgM!0`KDJ,~>
+JcE:\!.!Z*!&`^7!&a0D!&]i;J,~>
+JcE:\!9<5ArrD!W!!)Bc!!&)[J,~>
+JcE:\!41hfs-)C@!0cdL!0`KDJ,~>
+JcE:\!.!`,s#&a7!&a-C!&]i;J,~>
+JcE:\!9<;CrrCsV!!)?b!!&)[J,~>
+JcE:\!41nhs-)@?!0caK!0`KDJ,~>
+JcE:\!.!f.s#&^6!&a*B!&]i;J,~>
+JcE:\!9<>D!!(mU!!)<a!!&)[J,~>
+JcE:\!41qi!0c:>!0c^J!0`KDJ,~>
+JcE:\!.!i/!&`X5!&a'A!&]i;J,~>
+JcE:\!9<DFrrCmT!!)<a!!&)[J,~>
+JcE:\!42"ks-):=!0c^J!0`KDJ,~>
+JcE:\!.!o1s#&X4!&a'A!&]i;J,~>
+JcE:\!9<GG!!(gS!!)9`!!&)[J,~>
+JcE:\!42%l!0c4<!0c[I!0`KDJ,~>
+JcE:\!.!r2!&`R3!&a$@!&]i;J,~>
+JcE:\!9<MIrrCjS!!)6_!!&)[J,~>
+JcE:\!42+ns-)7<!0cXH!0`KDJ,~>
+JcE:\!."#4s#&U3!&a!?!&]i;J,~>
+JcE:\!9<SKrrCgR!!)3^!!&)[J,~>
+JcE:\!421ps-)4;!0cUG!0`KDJ,~>
+JcE:\!.")6s#&R2!&`s>!&]i;J,~>
+JcE:\!9<VL!!(^P!!)3^!!&)[J,~>
+JcE:\!424q!0c+9!0cUG!0`KDJ,~>
+JcE:\!.",7!&`I0!&`s>!&]i;J,~>
+JcE:\!9<\NrrCaP!!)0]!!&)[J,~>
+JcE:\!42:ss-).9!0cRF!0`KDJ,~>
+JcE:\!."29s#&L0!&`p=!&]i;J,~>
+JcE:\!9<bPrrC^O!!)-\!!&)[J,~>
+JcE:\!42@us-)+8!0cOE!0`KDJ,~>
+JcE:\!."8;s#&I/!&`m<!&]i;J,~>
+JcE:\!9<eQ!!(XN!!)*[!!&)[J,~>
+JcE:\!42D!!0c%7!0cLD!0`KDJ,~>
+JcE:\!.";<!&`C.!&`j;!&]i;J,~>
+JcE:\!9<kSrrC[N!!)'Z!!&)[J,~>
+JcE:\!42J#s-)(7!0cIC!0`KDJ,~>
+JcE:\!."A>s#&F.!&`g:!&]i;J,~>
+JcE:\!9<nT!!(UM!!)$Y!!&)[J,~>
+JcE:\!42M$!0c"6!0cFB!0`KDJ,~>
+JcE:\!."D?!&`@-!&`d9!&]i;J,~>
+JcE:\!9<tVrrCXM!!)!X!!&)[J,~>
+JcE:\!42S&s-)%6!0cCA!0`KDJ,~>
+JcE:\!."JAs#&C-!&`a8!&]i;J,~>
+JcE:\!9=%XrrCXMrrD!W!!&)[J,~>
+JcE:\!42Y(s-)%6s-)C@!0`KDJ,~>
+JcE:\!."PCs#&C-s#&a7!&]i;J,~>
+JcE:\!9=(Y!!(RL!!(mU!!&)[J,~>
+JcE:\!42\)!0bt5!0c:>!0`KDJ,~>
+JcE:\!."SD!&`=,!&`X5!&]i;J,~>
+JcE:\"69C]!7h)L!8[YT!0@/1~>
+JcE:\"1/#kPL][5PMQ6=PE5`o~>
+JcE:\"*so(2:_^,2;S94237cf~>
+pAb&!JcEjlrrCRK!!(gS!!&)[J,~>
+pAb%cJcEjls-(t4!0c4<!0`KDJ,~>
+pAb%.JcEjls#&=+!&`R3!&]i;J,~>
+o)A\uJcEmm!<D00rr<&Rrr<%[s*t~>
+o)A\bJcEmm!L'k>rrA8;rrA7Ds*t~>
+o)A\-JcEmm!B#/Prr=q2rr=p;s*t~>
+oD\f!JcEpnrr<*"j44/0!8@GQ!0@/1~>
+oD\ecJcEpns-!K`Zdo'UPM6$:PE5`o~>
+oD\e.JcEpns"siWH.Dop2;8'1237cf~>
+s8W"*qu?\)JcEso!!*#u!9;Z1!!(^P!!&)[J,~>
+s8W!lqu?[kJcEso!0dE^!418V!0c+9!0`KDJ,~>
+s8W!7qu?[6JcEso!&acU!.!/q!&`I0!&]i;J,~>
+o)A\uJcF'rrrE#t!9;]2!!([O!!&)[J,~>
+o)A\bJcF'rs-*E]!41;W!0c(8!0`KDJ,~>
+o)A\-JcF'rs#'cT!.!2r!&`F/!&]i;J,~>
+pAY,$rr2t,JcF-trrDrr!9;c4rrC[N!!&)[J,~>
+pAY+frr2snJcF-ts-*?[!41AYs-)(7!0`KDJ,~>
+pAY+1rr2s9JcF-ts#']R!.!8ts#&F.!&]i;J,~>
+p&G#"JcF-t!!)ip!9;i6rrCUL!!&)[J,~>
+p&G"dJcF-t!0d6Y!41G[s-)"5!0`KDJ,~>
+p&G"/JcF-t!&aTP!.!?!s#&@,!&]i;J,~>
+JcE[grrDio!9;o8rrCOJ!!&)[J,~>
+JcE[gs-*6X!41M]s-(q3!0`KDJ,~>
+JcE[gs#'TO!.!E#s#&:*!&]i;J,~>
+JcEairrDcm!9;u:rrCIH!!&)[J,~>
+JcEais-*0V!41S_s-(k1!0`KDJ,~>
+JcEais#'NM!.!K%s#&4(!&]i;J,~>
+JcEdj!!)Zk!9<&<rrCCF!!&)[J,~>
+JcEdj!0d'T!41Yas-(e/!0`KDJ,~>
+JcEdj!&aEK!.!Q's#&.&!&]i;J,~>
+JcEjlrrDZj!9<,>rrC=D!!&)[J,~>
+JcEjls-*'S!41_cs-(_-!0`KDJ,~>
+JcEjls#'EJ!.!W)s#&($!&]i;J,~>
+JcEmm!!)Qh!9<2@rrC7B!!&)[J,~>
+JcEmm!0csQ!41ees-(Y+!0`KDJ,~>
+JcEmm!&a<H!.!]+s#&""!&]i;J,~>
+JcEsorrDQg!9<;CrW((?!!&)[J,~>
+JcEsos-)sP!41nhrfbJ(!0`KDJ,~>
+JcEsos#'<G!.!f.r\_gt!&]i;J,~>
+JcF$qrrDKe!9<JHquFb:!!&)[J,~>
+JcF$qs-)mN!42(mr0,/#!0`KDJ,~>
+JcF$qs#'6E!.!u3r&)Lo!&]i;J,~>
+JcF'r!!)Bc!9<VLr;a\6!!&)[J,~>
+JcF'r!0cdL!424qrKG(t!0`KDJ,~>
+JcF'r!&a-C!.",7rADFk!&]i;J,~>
+JcF-trrDQgqu?`WnGp9&!!&)[J,~>
+JcF-ts-)sPr0%,enWUZd!0`KDJ,~>
+JcF-ts#'<Gr&"J"nMS#[!&]i;J,~>
+JcF4!rrDcmq#L?m!9:3]!!&)[J,~>
+JcF4!s-*0Vq31aV!4/g-!0`KDJ,~>
+JcF4!s#'NMq)/*M!-t^H!&]i;J,~>
+JcF7"!!)rsq#L'e!9:3]!!&)[J,~>
+JcF7"!0d?\q31IN!4/g-!0`KDJ,~>
+JcF7"!&a]Sq).gE!-t^H!&]i;J,~>
+JcF=$rr<'!quH*`!9:3]!!&)[J,~>
+JcF=$s-!H_r0-LI!4/g-!0`KDJ,~>
+JcF=$s"sfVr&*j@!-t^H!&]i;J,~>
+JcFC&rr<-#!!)3^!9:3]!!&)[J,~>
+JcFC&s-!NaPEY20!4/g-!0`KDJ,~>
+JcFC&s"slX2)XRs!-t^H!&]i;J,~>
+JcFF'!s&?$!9O4\j/r=]!0@/1~>
+JcFF'"-`bKPNDfEZ`X6-PE5`o~>
+JcFF'"#^*92<Fi<H*.)H237cf~>
+JcFL)r;bmX!9:3]!!&)[J,~>
+JcFL)rKH:A!4/g-!0`KDJ,~>
+JcFL)rAEX8!-t^H!&]i;J,~>
+JcFO*rrD!W!9:3]!!&)[J,~>
+JcFO*s-)C@!4/g-!0`KDJ,~>
+JcFO*s#&a7!-t^H!&]i;J,~>
+JcFU,rrCpU!9:3]!!&)[J,~>
+JcFU,s-)=>!4/g-!0`KDJ,~>
+JcFU,s#&[5!-t^H!&]i;J,~>
+JcF[.rrCjS!9:3]!!&)[J,~>
+JcF[.s-)7<!4/g-!0`KDJ,~>
+JcF[.s#&U3!-t^H!&]i;J,~>
+JcF^/!!(aQ!9:3]!!&)[J,~>
+JcF^/!0c.:!4/g-!0`KDJ,~>
+JcF^/!&`L1!-t^H!&]i;J,~>
+JcFd1rrCaP!9:3]!!&)[J,~>
+JcFd1s-).9!4/g-!0`KDJ,~>
+JcFd1s#&L0!-t^H!&]i;J,~>
+JcFj3rW(UN!9:3]!!&)[J,~>
+JcFj3rfc"7!4/g-!0`KDJ,~>
+JcFj3r\`@.!-t^H!&]i;J,~>
+JcFm4!s&B$!8.;Oj/r=]!0@/1~>
+JcFm4"-`cbPM#m8Z`X6-PE5`o~>
+JcFm4"#^,Y2;%p/H*.)H237cf~>
+JcFs6rrE*!!!)orr;Zp'*amdbrrD)]rr<%[s*t~>
+JcFs6s-*K_!0d<[r;Zp'*amdbrrBC-rrA7Ds*t~>
+JcFs6s#'iV!&aZRr;Zp'*amdbrr@>Hrr=p;s*t~>
+JcG!7!!*#u!!)lq#QQQRURc0+'&i!Q!9:3]!!&)[J,~>
+JcG!7!0dE^!0d9Z#QQQRURc0+'&i!Q!4/g-!0`KDJ,~>
+JcG!7!&acU!&aWQ#QQQRURc0+'&i!Q!-t^H!&]i;J,~>
+JcG'9rrE&u!!)ip!<>dkrrT;&G38f)j/r=]!0@/1~>
+JcG'9s-*H^!0d6Y!<>dkrrT;&G38f)Z`X6-PE5`o~>
+JcG'9s#'fU!&aTP!<>dkrrT;&G38f)H*.)H237cf~>
+JcG-;rrE#t!!)fo!<>dkrrVur;WduZj/r=]!0@/1~>
+JcG-;s-*E]!0d3X!<>dkrrVur;WduZZ`X6-PE5`o~>
+JcG-;s#'cT!&aQO!<>dkrrVur;WduZH*.)H237cf~>
+JcG0<!!)rs!!)cn!<>dkrrUUKBBK3oj/r=]!0@/1~>
+JcG0<!0d?\!0d0W!<>dkrrUUKBBK3oZ`X6-PE5`o~>
+JcG0<!&a]S!&aNN!<>dkrrUUKBBK3oH*.)H237cf~>
+JcG6>rrDus!!)`m#QR?[lfPQ&!la=%!9:3]!!&)[J,~>
+JcG6>s-*B\!0d-V#QR?[lfPQ&!la=%!4/g-!0`KDJ,~>
+JcG6>s#'`S!&aKM#QR?[lfPQ&!la=%!-t^H!&]i;J,~>
+JcG<@rrDrr!!)]lqZ$X>Y3#Z`j/r=]!0@/1~>
+JcG<@s-*?[!0d*UqZ$X>Y3#Z`Z`X6-PE5`o~>
+JcG<@s#']R!&aHLqZ$X>Y3#Z`H*.)H237cf~>
+p&G#"K)YfNq>UEpp&>3r2nQ]<h#?C7!9:3]!!&)[J,~>
+p&G"dK)Yh7q>UGYp&>3r2nQ]<h#?C7!4/g-!0`KDJ,~>
+p&G"/K)Yg.q>UFPp&>3r2nQ]<h#?C7!-t^H!&]i;J,~>
+pAY,$rr2t,L&_/Qq>UEpo`"pl9AfaLj/r=]!0@/1~>
+pAY+frr2snL&_1:q>UGYo`"pl9AfaLZ`X6-PE5`o~>
+pAY+1rr2s9L&_01q>UFPo`"pl9AfaLH*.)H237cf~>
+o)A\uLAq5Rq#:<ooD\gk9AfaLj/r=]!0@/1~>
+o)A\bLAq7;q#:>XoD\gk9AfaLZ`X6-PE5`o~>
+o)A\-LAq62q#:=OoD\gk9AfaLH*.)H237cf~>
+s8W"*qu?\)L]@ASq#:<oo)A^j9AfaLj/r=]!0@/1~>
+s8W!lqu?[kL]@C<q#:>Xo)A^j9AfaLZ`X6-PE5`o~>
+s8W!7qu?[6L]@B3q#:=Oo)A^j9AfaLH*.)H237cf~>
+p&>##L]@ASp\t3nnc&Ui9AfaLj/r=]!0@/1~>
+p&>"eL]@C<p\t5Wnc&Ui9AfaLZ`X6-PE5`o~>
+p&>"0L]@B3p\t4Nnc&Ui9AfaLH*.)H237cf~>
+pAY,$L]7>Sp&>!lnc&Ui9AfaLj/r=]!0@/1~>
+pAY+fL]7@<p&>#Unc&Ui9AfaLZ`X6-PE5`o~>
+pAY+1L]7?3p&>"Lnc&Ui9AfaLH*.)H237cf~>
+pAb&!NW9"Yp&>!lbl7\'XoAA$O8j_~>
+pAb%cNW9$Bp&>#Ubl7[LXoABbO8j_~>
+pAb%.NW9#9p&>"Lbl7ZgXoAAYO8j_~>
+JcGcMrrDZj!!(7C!9:3]!!&)[J,~>
+JcGcMs-*'S!0bY,!4/g-!0`KDJ,~>
+JcGcMs#'EJ!&`"#!-t^H!&]i;J,~>
+Jc>cN!:p-i!6bBBj/r=]!0@/1~>
+Jc>cNPOe_RPKWt+Z`X6-PE5`o~>
+Jc>cN2=gbI29Z""H*.)H237cf~>
+K)biNnc&RhbPqS&XoAA$O8j_~>
+K)bk7nc&TQbPqRKXoABbO8j_~>
+K)bj.nc&SHbPqQfXoAAYO8j_~>
+KDtoOnG`Igb5VJ%XoAA$O8j_~>
+KDtq8nG`KPb5VIJXoABbO8j_~>
+KDtp/nG`JGb5VHeXoAAYO8j_~>
+L&_/QnG`Igao;A$XoAA$O8j_~>
+L&_1:nG`KPao;@IXoABbO8j_~>
+L&_01nG`JGao;?dXoAAYO8j_~>
+L]@ASmf*7eao;A$XoAA$O8j_~>
+L]@C<mf*9Nao;@IXoABbO8j_~>
+L]@B3mf*8Eao;?dXoAAYO8j_~>
+M#RGTmJd.daSu8#XoAA$O8j_~>
+M#RI=mJd0MaSu7HXoABbO8j_~>
+M#RH4mJd/DaSu6cXoAAYO8j_~>
+MZ<\Vm/I%caSu8#XoAA$O8j_~>
+MZ<^?m/I'LaSu7HXoABbO8j_~>
+MZ<]6m/I&CaSu6cXoAAYO8j_~>
+N;rnXli-qba8Z/"XoAA$O8j_~>
+N;rpAli-sKa8Z.GXoABbO8j_~>
+N;ro8li-rBa8Z-bXoAAYO8j_~>
+NW/tYl2L_`a8Z/"XoAA$O8j_~>
+NW0!Bl2LaIa8Z.GXoABbO8j_~>
+NW/u9l2L`@a8Z-bXoAAYO8j_~>
+O8o4[l2L_``r?&!XoAA$O8j_~>
+O8o6Dl2LaI`r?%FXoABbO8j_~>
+O8o5;l2L`@`r?$aXoAAYO8j_~>
+OT,:\kPkM^`r?&!XoAA$O8j_~>
+OT,<EkPkOG`r?%FXoABbO8j_~>
+OT,;<kPkN>`r?$aXoAAYO8j_~>
+P5kO^kPkM^`W#quXoAA$O8j_~>
+P5kQGkPkOG`W#qEXoABbO8j_~>
+P5kP>kPkN>`W#p`XoAAYO8j_~>
+PlLa`jo5;\`W#quXoAA$O8j_~>
+PlLcIjo5=E`W#qEXoABbO8j_~>
+PlLb@jo5<<`W#p`XoAAYO8j_~>
+Q2^gaj8T)Z`W#quXoAA$O8j_~>
+Q2^iJj8T+C`W#qEXoABbO8j_~>
+Q2^hAj8T*:`W#p`XoAAYO8j_~>
+QiI'cir8uY`W#quXoAA$O8j_~>
+QiI)Lir9"B`W#qEXoABbO8j_~>
+QiI(Cir9!9`W#p`XoAAYO8j_~>
+RK*9eiVrlX`;]htXoAA$O8j_~>
+RK*;NiVrnA`;]hDXoABbO8j_~>
+RK*:EiVrm8`;]g_XoAAYO8j_~>
+Rf<?fhu<ZV`;]htXoAA$O8j_~>
+Rf<AOhu<\?`;]hDXoABbO8j_~>
+Rf<@Fhu<[6`;]g_XoAAYO8j_~>
+SH&ThhZ!QU`;]htXoAA$O8j_~>
+SH&VQhZ!S>`;]hDXoABbO8j_~>
+SH&UHhZ!R5`;]g_XoAAYO8j_~>
+T)\fjh#@?S`;]htXoAA$O8j_~>
+T)\hSh#@A<`;]hDXoABbO8j_~>
+T)\gJh#@@3`;]g_XoAAYO8j_~>
+TDnlkg]%6R_uB_sXoAA$O8j_~>
+TDnnTg]%8;_uB_CXoABbO8j_~>
+TDnmKg]%72_uB^^XoAAYO8j_~>
+U&Y,mgA_-Q_uB_sXoAA$O8j_~>
+U&Y.VgA_/:_uB_CXoABbO8j_~>
+U&Y-MgA_.1_uB^^XoAAYO8j_~>
+UAk2nf`(pO_uB_sXoAA$O8j_~>
+UAk4Wf`(r8_uB_CXoABbO8j_~>
+UAk3Nf`(q/_uB^^XoAAYO8j_~>
+V#UGpfDbgN_uB_sXoAA$O8j_~>
+V#UIYfDbi7_uB_CXoABbO8j_~>
+V#UHPfDbh._uB^^XoAAYO8j_~>
+VZ6Yrf)G^M_Z'VrXoAA$O8j_~>
+VZ6[[f)G`6_Z'VBXoABbO8j_~>
+VZ6ZRf)G_-_Z'U]XoAAYO8j_~>
+VuH_seGfLK_Z'VrXoAA$O8j_~>
+VuHa\eGfN4_Z'VBXoABbO8j_~>
+VuH`SeGfM+_Z'U]XoAAYO8j_~>
+WW2tue,KCJ_Z'VrXoAA$O8j_~>
+WW3!^e,KE3_Z'VBXoABbO8j_~>
+WW2uUe,KD*_Z'U]XoAAYO8j_~>
+X8i2"dJj1H_Z'VrXoAA$O8j_~>
+X8i3`dJj31_Z'VBXoABbO8j_~>
+X8i2WdJj2(_Z'U]XoAAYO8j_~>
+XT&8#d/O(G_>aMqXoAA$O8j_~>
+XT&9ad/O*0_>aMAXoABbO8j_~>
+XT&8Xd/O)'_>aL\XoAAYO8j_~>
+o`"o"]`8!3ci3tF_>aMqXoAA$O8j_~>
+o`"nd]`8"qci4!/_>aMAXoABbO8j_~>
+o`"n/]`8!hci3u&_>aL\XoAAYO8j_~>
+p&G&#^&J'4c2RbD_>aMqXoAA$O8j_~>
+p&G%e^&J(rc2Rd-_>aMAXoABbO8j_~>
+p&G%0^&J'ic2Rc$_>aL\XoAAYO8j_~>
+pAY2&s'`\BrrC:C!!'k8!9:3]!!&)[J,~>
+pAY1hs%^?/s-(\,!0b8!!4/g-!0`KDJ,~>
+pAY13ru&TOs#&%#!&_Um!-t^H!&]i;J,~>
+s8W"*qu6Y)_>jN8bPqPB_#FDpXoAA$O8j_~>
+s8W!lqu6Xk_>jP!bPqR+_#FD@XoABbO8j_~>
+s8W!7qu6X6_>jNmbPqQ"_#FC[XoAAYO8j_~>
+o`"o"_Z'T9ao;>@_#FDpXoAA$O8j_~>
+o`"nd_Z'V"ao;@)_#FD@XoABbO8j_~>
+o`"n/_Z'Tnao;>u_#FC[XoAAYO8j_~>
+o`"o"`;fi;aSu5?_#FDpXoAA$O8j_~>
+o`"nd`;fk$aSu7(_#FD@XoABbO8j_~>
+o`"n/`;fipaSu5t_#FC[XoAAYO8j_~>
+pAb&!aT)8?`r?#=_#FDpXoAA$O8j_~>
+pAb%caT):(`r?%&_#FD@XoABbO8j_~>
+pAb%.aT)8t`r?#r_#FC[XoAAYO8j_~>
+\c2X0`;]f;_#FDpXoAA$O8j_~>
+\c2Yn`;]h$_#FD@XoABbO8j_~>
+\c2Xe`;]fp_#FC[XoAAYO8j_~>
+]Dqm2`;]f;^]+;oXoAA$O8j_~>
+]Dqnp`;]h$^]+;?XoABbO8j_~>
+]Dqmg`;]fp^]+:ZXoAAYO8j_~>
+]`.s3_Z'T9^]+;oXoAA$O8j_~>
+]`.tq_Z'V"^]+;?XoABbO8j_~>
+]`.sh_Z'Tn^]+:ZXoAAYO8j_~>
+^An35_>aK8^]+;oXoAA$O8j_~>
+^An4s_>aM!^]+;?XoABbO8j_~>
+^An3j_>aKm^]+:ZXoAAYO8j_~>
+_#OE7^]+96^]+;oXoAA$O8j_~>
+_#OFu^]+:t^]+;?XoABbO8j_~>
+_#OEl^]+9k^]+:ZXoAAYO8j_~>
+_>aK8^&J'4^]+;oXoAA$O8j_~>
+_>aM!^&J(r^]+;?XoABbO8j_~>
+_>aKm^&J'i^]+:ZXoAAYO8j_~>
+_uK`:]`.s3^]+;oXoAA$O8j_~>
+_uKb#]`.tq^]+;?XoABbO8j_~>
+_uK`o]`.sh^]+:ZXoAAYO8j_~>
+`W,r<]Dhj2^Ae2nXoAA$O8j_~>
+`W,t%]Dhkp^Ae2>XoABbO8j_~>
+`W,rq]Dhjg^Ae1YXoAAYO8j_~>
+`r?#=\c2X0^Ae2nXoAA$O8j_~>
+`r?%&\c2Yn^Ae2>XoABbO8j_~>
+`r?#r\c2Xe^Ae1YXoAAYO8j_~>
+aT)8?\GlO/^Ae2nXoAA$O8j_~>
+aT):(\GlPm^Ae2>XoABbO8j_~>
+aT)8t\GlOd^Ae1YXoAAYO8j_~>
+ao;>@[f6=-^Ae2nXoAA$O8j_~>
+ao;@)[f6>k^Ae2>XoABbO8j_~>
+ao;>u[f6=b^Ae1YXoAAYO8j_~>
+bQ%SB[Jp4,^Ae2nXoAA$O8j_~>
+bQ%U+[Jp5j^Ae2>XoABbO8j_~>
+bQ%T"[Jp4a^Ae1YXoAAYO8j_~>
+c2[eDZi:"*^Ae2nXoAA$O8j_~>
+c2[g-Zi:#h^Ae2>XoABbO8j_~>
+c2[f$Zi:"_^Ae1YXoAAYO8j_~>
+cMmkEZ2Xe(^Ae2nXoAA$O8j_~>
+cMmm.Z2Xff^Ae2>XoABbO8j_~>
+cMml%Z2Xe]^Ae1YXoAAYO8j_~>
+d/X+GZ2Xe(^&J)mXoAA$O8j_~>
+d/X-0Z2Xff^&J)=XoABbO8j_~>
+d/X,'Z2Xe]^&J(XXoAAYO8j_~>
+df9=IYQ"S&^&J)mXoAA$O8j_~>
+df9?2YQ"Td^&J)=XoABbO8j_~>
+df9>)YQ"S[^&J(XXoAAYO8j_~>
+e,KCJXoAA$^&J)mXoAA$O8j_~>
+e,KE3XoABb^&J)=XoABbO8j_~>
+e,KD*XoAAY^&J(XXoAAYO8j_~>
+ec5XLXT&8#^&J)mXoAA$O8j_~>
+ec5Z5XT&9a^&J)=XoABbO8j_~>
+ec5Y,XT&8X^&J(XXoAAYO8j_~>
+fDkjNWrE&!^&J)mXoAA$O8j_~>
+fDkl7WrE'_^&J)=XoABbO8j_~>
+fDkk.WrE&V^&J(XXoAAYO8j_~>
+f`(pOW;cht^&J)mXoAA$O8j_~>
+f`(r8W;cj]^&J)=XoABbO8j_~>
+f`(q/W;ciT^&J(XXoAAYO8j_~>
+gAh0QVuH_s^&J)mXoAA$O8j_~>
+gAh2:VuHa\^&J)=XoABbO8j_~>
+gAh11VuH`S^&J(XXoAAYO8j_~>
+g]%6RV>gMq^&J)mXoAA$O8j_~>
+g]%8;V>gOZ^&J)=XoABbO8j_~>
+g]%72V>gNQ^&J(XXoAAYO8j_~>
+h>dKTV#LDp^&J)mXoAA$O8j_~>
+h>dM=V#LFY^&J)=XoABbO8j_~>
+h>dL4V#LEP^&J(XXoAAYO8j_~>
+huE]VUAk2n^&J)mXoAA$O8j_~>
+huE_?UAk4W^&J)=XoABbO8j_~>
+huE^6UAk3N^&J(XXoAAYO8j_~>
+i;WcWT`4ul^&J)mXoAA$O8j_~>
+i;We@T`5"U^&J)=XoABbO8j_~>
+i;Wd7T`5!L^&J(XXoAAYO8j_~>
+irB#YTDnlk^&J)mXoAA$O8j_~>
+irB%BTDnnT^&J)=XoABbO8j_~>
+irB$9TDnmK^&J(XXoAAYO8j_~>
+jT#5[Sc8Zi^&J)mXoAA$O8j_~>
+jT#7DSc8\R^&J)=XoABbO8j_~>
+jT#6;Sc8[I^&J(XXoAAYO8j_~>
+jo5;\S,WHg^&J)mXoAA$O8j_~>
+jo5=ES,WJP^&J)=XoABbO8j_~>
+jo5<<S,WIG^&J(XXoAAYO8j_~>
+kPtP^Rf<?f^&J)mXoAA$O8j_~>
+kPtRGRf<AO^&J)=XoABbO8j_~>
+kPtQ>Rf<@F^&J(XXoAAYO8j_~>
+o`"o"pAY*mR/[-d^&J)mXoAA$O8j_~>
+o`"ndpAY,VR/[/M^&J)=XoABbO8j_~>
+o`"n/pAY+MR/[.D^&J(XXoAAYO8j_~>
+p&>)%s'ba'rrADc!!'_4!9:3]!!&)[J,~>
+p&>(gs%`Cis-&fL!0b+r!4/g-!0`KDJ,~>
+p&>(2ru(Y4s#$/C!&_Ii!-t^H!&]i;J,~>
+pAY,$rr2t,r;ZcsQ2^ga^&J)mXoAA$O8j_~>
+pAY+frr2snr;Ze\Q2^iJ^&J)=XoABbO8j_~>
+pAY+1rr2s9r;ZdSQ2^hA^&J(XXoAAYO8j_~>
+s5X#crSmldrr3"-s8M$Y!.j0]j+cTE~>
+s0MVurNcK!rr3!os8K>)PC^&kZ\Gf:~>
+s*=M[rHSA\rr3!:s8I9D21^%(H%pTp~>
+pAY,$rr2t,NrK(Z^&J)mXoAA$O8j_~>
+pAY+frr2snNrK*C^&J)=XoABbO8j_~>
+pAY+1rr2s9NrK):^&J(XXoAAYO8j_~>
+p&>)%s'^oe!!'_4!9:3]!!&)[J,~>
+p&>(gs%\RR!0b+r!4/g-!0`KDJ,~>
+p&>(2ru$gr!&_Ii!-t^H!&]i;J,~>
+o`"o"N;ikX^&J)mXoAA$O8j_~>
+o`"ndN;imA^&J)=XoABbO8j_~>
+o`"n/N;il8^&J(XXoAAYO8j_~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG`L!!'_4!9:3]!!&)[J,~>
+JcG`L!0b+r!4/g-!0`KDJ,~>
+JcG`L!&_Ii!-t^H!&]i;J,~>
+JcG]K!!'b5!9:3]!!&)[J,~>
+JcG]K!0b.s!4/g-!0`KDJ,~>
+JcG]K!&_Lj!-t^H!&]i;J,~>
+JcG]K!!'b5!9:3]!!&)[J,~>
+JcG]K!0b.s!4/g-!0`KDJ,~>
+JcG]K!&_Lj!-t^H!&]i;J,~>
+JcG]K!!'b5!9:3]!!&)[J,~>
+JcG]K!0b.s!4/g-!0`KDJ,~>
+JcG]K!&_Lj!-t^H!&]i;J,~>
+JcG]K!!'b5!9:3]!!&)[J,~>
+JcG]K!0b.s!4/g-!0`KDJ,~>
+JcG]K!&_Lj!-t^H!&]i;J,~>
+JcG]K!!'b5!9:3]!!&)[J,~>
+JcG]K!0b.s!4/g-!0`KDJ,~>
+JcG]K!&_Lj!-t^H!&]i;J,~>
+JcG]K!!'b5!9:3]!!&)[J,~>
+JcG]K!0b.s!4/g-!0`KDJ,~>
+JcG]K!&_Lj!-t^H!&]i;J,~>
+JcG]K!!'b5!9:3]!!&)[J,~>
+JcG]K!0b.s!4/g-!0`KDJ,~>
+JcG]K!&_Lj!-t^H!&]i;J,~>
+JcGZJ!!'e6!9:3]!!&)[J,~>
+JcGZJ!0b1t!4/g-!0`KDJ,~>
+JcGZJ!&_Ok!-t^H!&]i;J,~>
+JcGZJ!!'e6!9:3]!!&)[J,~>
+JcGZJ!0b1t!4/g-!0`KDJ,~>
+JcGZJ!&_Ok!-t^H!&]i;J,~>
+JcGZJ!!'e6!9:3]!!&)[J,~>
+JcGZJ!0b1t!4/g-!0`KDJ,~>
+JcGZJ!&_Ok!-t^H!&]i;J,~>
+JcGZJ!!'e6!9:3]!!&)[J,~>
+JcGZJ!0b1t!4/g-!0`KDJ,~>
+JcGZJ!&_Ok!-t^H!&]i;J,~>
+mf*8qOT,:\^]+;oXoAA$O8j_~>
+mf*8^OT,<E^]+;?XoABbO8j_~>
+mf*8)OT,;<^]+:ZXoAAYO8j_~>
+n,NDrO8f1[_#FDpXoAA$O8j_~>
+n,ND_O8f3D_#FD@XoABbO8j_~>
+n,ND*O8f2;_#FC[XoAAYO8j_~>
+nG`Pus'^ug!!'h7!9:3]!!&)[J,~>
+nG`Pbs%\XT!0b4u!4/g-!0`KDJ,~>
+nG`P-ru$mt!&_Rl!-t^H!&]i;J,~>
+s8W"*rVue(rr2t,O8f1[_#FDpXoAA$O8j_~>
+s8W!lrVudjrr2snO8f3D_#FD@XoABbO8j_~>
+s8W!7rVud5rr2s9O8f2;_#FC[XoAAYO8j_~>
+mf*8qO8f1[_#FDpXoAA$O8j_~>
+mf*8^O8f3D_#FD@XoABbO8j_~>
+mf*8)O8f2;_#FC[XoAAYO8j_~>
+mf*8qNrK(Z_>aMqXoAA$O8j_~>
+mf*8^NrK*C_>aMAXoABbO8j_~>
+mf*8)NrK):_>aL\XoAAYO8j_~>
+nGiDpOT,:\_>aMqXoAA$O8j_~>
+nGiD]OT,<E_>aMAXoABbO8j_~>
+nGiD(OT,;<_>aL\XoAAYO8j_~>
+JcGTH!!'k8!9:3]!!&)[J,~>
+JcGTH!0b8!!4/g-!0`KDJ,~>
+JcGTH!&_Um!-t^H!&]i;J,~>
+JcGTH!!'k8!9:3]!!&)[J,~>
+JcGTH!0b8!!4/g-!0`KDJ,~>
+JcGTH!&_Um!-t^H!&]i;J,~>
+JcGQG!!'n9!9:3]!!&)[J,~>
+JcGQG!0b;"!4/g-!0`KDJ,~>
+JcGQG!&_Xn!-t^H!&]i;J,~>
+JcGQG!!'n9!9:3]!!&)[J,~>
+JcGQG!0b;"!4/g-!0`KDJ,~>
+JcGQG!&_Xn!-t^H!&]i;J,~>
+JcGQG!!'n9!9:3]!!&)[J,~>
+JcGQG!0b;"!4/g-!0`KDJ,~>
+JcGQG!&_Xn!-t^H!&]i;J,~>
+JcGQG!!'n9!9:3]!!&)[J,~>
+JcGQG!0b;"!4/g-!0`KDJ,~>
+JcGQG!&_Xn!-t^H!&]i;J,~>
+JcGNF!!'q:!9:3]!!&)[J,~>
+JcGNF!0b>#!4/g-!0`KDJ,~>
+JcGNF!&_[o!-t^H!&]i;J,~>
+JcGNF!!'q:!9:3]!!&)[J,~>
+JcGNF!0b>#!4/g-!0`KDJ,~>
+JcGNF!&_[o!-t^H!&]i;J,~>
+JcGNF!!'q:!9:3]!!&)[J,~>
+JcGNF!0b>#!4/g-!0`KDJ,~>
+JcGNF!&_[o!-t^H!&]i;J,~>
+JcGKE!!'t;!9:3]!!&)[J,~>
+JcGKE!0bA$!4/g-!0`KDJ,~>
+JcGKE!&_^p!-t^H!&]i;J,~>
+JcGKE!!'t;!9:3]!!&)[J,~>
+JcGKE!0bA$!4/g-!0`KDJ,~>
+JcGKE!&_^p!-t^H!&]i;J,~>
+JcGKE!!'t;!9:3]!!&)[J,~>
+JcGKE!0bA$!4/g-!0`KDJ,~>
+JcGKE!&_^p!-t^H!&]i;J,~>
+JcGHD!!("<!9:3]!!&)[J,~>
+JcGHD!0bD%!4/g-!0`KDJ,~>
+JcGHD!&_aq!-t^H!&]i;J,~>
+JcGHD!!("<!9:3]!!&)[J,~>
+JcGHD!0bD%!4/g-!0`KDJ,~>
+JcGHD!&_aq!-t^H!&]i;J,~>
+JcGEC!!(%=!9:3]!!&)[J,~>
+JcGEC!0bG&!4/g-!0`KDJ,~>
+JcGEC!&_dr!-t^H!&]i;J,~>
+JcGEC!!(%=!9:3]!!&)[J,~>
+JcGEC!0bG&!4/g-!0`KDJ,~>
+JcGEC!&_dr!-t^H!&]i;J,~>
+JcGEC!!(%=!9:3]!!&)[J,~>
+JcGEC!0bG&!4/g-!0`KDJ,~>
+JcGEC!&_dr!-t^H!&]i;J,~>
+JcGBB!!((>!9:3]!!&)[J,~>
+JcGBB!0bJ'!4/g-!0`KDJ,~>
+JcGBB!&_gs!-t^H!&]i;J,~>
+JcGBB!!((>!9:3]!!&)[J,~>
+JcGBB!0bJ'!4/g-!0`KDJ,~>
+JcGBB!&_gs!-t^H!&]i;J,~>
+JcGBB!!((>!9:3]!!&)[J,~>
+JcGBB!0bJ'!4/g-!0`KDJ,~>
+JcGBB!&_gs!-t^H!&]i;J,~>
+JcG?A!!(+?!9:3]!!&)[J,~>
+JcG?A!0bM(!4/g-!0`KDJ,~>
+JcG?A!&_jt!-t^H!&]i;J,~>
+JcG?A!!(+?!9:3]!!&)[J,~>
+JcG?A!0bM(!4/g-!0`KDJ,~>
+JcG?A!&_jt!-t^H!&]i;J,~>
+JcG<@!!(.@!9:3]!!&)[J,~>
+JcG<@!0bP)!4/g-!0`KDJ,~>
+JcG<@!&_mu!-t^H!&]i;J,~>
+JcG<@!!(.@!9:3]!!&)[J,~>
+JcG<@!0bP)!4/g-!0`KDJ,~>
+JcG<@!&_mu!-t^H!&]i;J,~>
+JcG9?!!(1A!9:3]!!&)[J,~>
+JcG9?!0bS*!4/g-!0`KDJ,~>
+JcG9?!&_q!!-t^H!&]i;J,~>
+JcG6>!!(4B!9:3]!!&)[J,~>
+JcG6>!0bV+!4/g-!0`KDJ,~>
+JcG6>!&_t"!-t^H!&]i;J,~>
+JcG6>!!(4B!9:3]!!&)[J,~>
+JcG6>!0bV+!4/g-!0`KDJ,~>
+JcG6>!&_t"!-t^H!&]i;J,~>
+JcG3=!!(7C!9:3]!!&)[J,~>
+JcG3=!0bY,!4/g-!0`KDJ,~>
+JcG3=!&`"#!-t^H!&]i;J,~>
+JcG0<!!(:D!9:3]!!&)[J,~>
+JcG0<!0b\-!4/g-!0`KDJ,~>
+JcG0<!&`%$!-t^H!&]i;J,~>
+n,NAqKDtoOc2Re(XoAA$O8j_~>
+n,NA^KDtq8c2RdMXoABbO8j_~>
+n,NA)KDtp/c2RchXoAAYO8j_~>
+nG`Jsrr2t,KDtoOcMmn)XoAA$O8j_~>
+nG`J`rr2snKDtq8cMmmNXoABbO8j_~>
+nG`J+rr2s9KDtp/cMmliXoAAYO8j_~>
+m/I&oK)YfNci4"*XoAA$O8j_~>
+m/I&\K)Yh7ci4!OXoABbO8j_~>
+m/I&'K)Yg.ci3ujXoAAYO8j_~>
+s8W"*rVue(rr<",Jc>]Mci4"*XoAA$O8j_~>
+s8W!lrVudjrr<!nJc>_6ci4!OXoABbO8j_~>
+s8W!7rVud5rr<!9Jc>^-ci3ujXoAAYO8j_~>
+n,EArJcG`L!!(CG!9:3]!!&)[J,~>
+n,EA_JcG`L!0be0!4/g-!0`KDJ,~>
+n,EA*JcG`L!&`.'!-t^H!&]i;J,~>
+nG`JsJcGZJ!!(FH!9:3]!!&)[J,~>
+nG`J`JcGZJ!0bh1!4/g-!0`KDJ,~>
+nG`J+JcGZJ!&`1(!-t^H!&]i;J,~>
+nGiDpJc>cN!7CfHj/r=]!0@/1~>
+nGiD]Jc>cNPL9C1Z`X6-PE5`o~>
+nGiD(Jc>cN2:;F(H*.)H237cf~>
+JcG!7!!(II!9:3]!!&)[J,~>
+JcG!7!0bk2!4/g-!0`KDJ,~>
+JcG!7!&`4)!-t^H!&]i;J,~>
+JcFs6!!(LJ!9:3]!!&)[J,~>
+JcFs6!0bn3!4/g-!0`KDJ,~>
+JcFs6!&`7*!-t^H!&]i;J,~>
+JcFs6!!(LJ!9:3]!!&)[J,~>
+JcFs6!0bn3!4/g-!0`KDJ,~>
+JcFs6!&`7*!-t^H!&]i;J,~>
+JcFp5!!(OK!9:3]!!&)[J,~>
+JcFp5!0bq4!4/g-!0`KDJ,~>
+JcFp5!&`:+!-t^H!&]i;J,~>
+JcFm4!!(RL!9:3]!!&)[J,~>
+JcFm4!0bt5!4/g-!0`KDJ,~>
+JcFm4!&`=,!-t^H!&]i;J,~>
+JcFm4!!(RL!9:3]!!&)[J,~>
+JcFm4!0bt5!4/g-!0`KDJ,~>
+JcFm4!&`=,!-t^H!&]i;J,~>
+JcFj3!!(UM!9:3]!!&)[J,~>
+JcFj3!0c"6!4/g-!0`KDJ,~>
+JcFj3!&`@-!-t^H!&]i;J,~>
+JcFg2rrC^O!9:3]!!&)[J,~>
+JcFg2s-)+8!4/g-!0`KDJ,~>
+JcFg2s#&I/!-t^H!&]i;J,~>
+JcFa0rrCdQ!9:3]!!&)[J,~>
+JcFa0s-)1:!4/g-!0`KDJ,~>
+JcFa0s#&O1!-t^H!&]i;J,~>
+JcF[.!!(dR!9:3]!!&)[J,~>
+JcF[.!0c1;!4/g-!0`KDJ,~>
+JcF[.!&`O2!-t^H!&]i;J,~>
+JcFX-rrCmT!9:3]!!&)[J,~>
+JcFX-s-):=!4/g-!0`KDJ,~>
+JcFX-s#&X4!-t^H!&]i;J,~>
+JcFR+rrCsV!9:3]!!&)[J,~>
+JcFR+s-)@?!4/g-!0`KDJ,~>
+JcFR+s#&^6!-t^H!&]i;J,~>
+JcFL)!!(sW!9:3]!!&)[J,~>
+JcFL)!0c@@!4/g-!0`KDJ,~>
+JcFL)!&`^7!-t^H!&]i;J,~>
+JcFI(rrD'Y!9:3]!!&)[J,~>
+JcFI(s-)IB!4/g-!0`KDJ,~>
+JcFI(s#&g9!-t^H!&]i;J,~>
+JcFC&rrD-[!9:3]!!&)[J,~>
+JcFC&s-)OD!4/g-!0`KDJ,~>
+JcFC&s#&m;!-t^H!&]i;J,~>
+JcF=$rrD3]!9:3]!!&)[J,~>
+JcF=$s-)UF!4/g-!0`KDJ,~>
+JcF=$s#&s=!-t^H!&]i;J,~>
+JcF7"r;c-_!9:3]!!&)[J,~>
+JcF7"rKHOH!4/g-!0`KDJ,~>
+JcF7"rAEm?!-t^H!&]i;J,~>
+JcF*srW)?c!9:3]!!&)[J,~>
+JcF*srfcaL!4/g-!0`KDJ,~>
+JcF*sr\a*C!-t^H!&]i;J,~>
+JcF!pr;cBf!9:3]!!&)[J,~>
+JcF!prKHdO!4/g-!0`KDJ,~>
+JcF!prAF-F!-t^H!&]i;J,~>
+JcEjlnGiRLq#Ii&!!&)[J,~>
+JcEjlnWNsZq3/5d!0`KDJ,~>
+JcEjlnML;lq),S[!&]i;J,~>
+JcE:\!9<nTpAhu.!!&)[J,~>
+JcE:\!42M$pQNAl!0`KDJ,~>
+JcE:\!."D?pGK_c!&]i;J,~>
+JcE:\!9<PJr;ab8!!&)[J,~>
+JcE:\!42.orKG/!!0`KDJ,~>
+JcE:\!."&5rADLm!&]i;J,~>
+JcE:\!9<DFquFh<!!&)[J,~>
+JcE:\!42"kr0,5%!0`KDJ,~>
+JcE:\!.!o1r&)Rq!&]i;J,~>
+JcE:\!9<5ArW(.A!!&)[J,~>
+JcE:\!41hfrfbP*!0`KDJ,~>
+JcE:\!.!`,r\_n!!&]i;J,~>
+JcE:\!9<,>rrC=D!!&)[J,~>
+JcE:\!41_cs-(_-!0`KDJ,~>
+JcE:\!.!W)s#&($!&]i;J,~>
+JcE:\!9<&<rrCCF!!&)[J,~>
+JcE:\!41Yas-(e/!0`KDJ,~>
+JcE:\!.!Q's#&.&!&]i;J,~>
+JcE:\!9;u:!!(CG!!&)[J,~>
+JcE:\!41S_!0be0!0`KDJ,~>
+JcE:\!.!K%!&`.'!&]i;J,~>
+JcE:\!9;r9rrCLI!!&)[J,~>
+JcE:\!41P^s-(n2!0`KDJ,~>
+JcE:\!.!H$s#&7)!&]i;J,~>
+JcE:\!9;l7rrCRK!!&)[J,~>
+JcE:\!41J\s-(t4!0`KDJ,~>
+JcE:\!.!B"s#&=+!&]i;J,~>
+nGiDpJcF'r!9;f5!!(RL!!&)[J,~>
+nGiD]JcF'r!41DZ!0bt5!0`KDJ,~>
+nGiD(JcF'r!.!;u!&`=,!&]i;J,~>
+m/I&oJcF'r!9;c4rrC[N!!&)[J,~>
+m/I&\JcF'r!41AYs-)(7!0`KDJ,~>
+m/I&'JcF'r!.!8ts#&F.!&]i;J,~>
+mJd/pJcF$q!9;]2rrCaP!!&)[J,~>
+mJd/]JcF$q!41;Ws-).9!0`KDJ,~>
+mJd/(JcF$q!.!2rs#&L0!&]i;J,~>
+s8W"*rVue(rr<",JcF$q!9;W0!!(aQ!!&)[J,~>
+s8W!lrVudjrr<!nJcF$q!415U!0c.:!0`KDJ,~>
+s8W!7rVud5rr<!9JcF$q!.!,p!&`L1!&]i;J,~>
+m/I&oJcF'r!9;T/!!(dR!!&)[J,~>
+m/I&\JcF'r!412T!0c1;!0`KDJ,~>
+m/I&'JcF'r!.!)o!&`O2!&]i;J,~>
+nG`Jsrr2t,JcF'r!9;Q.!!(gS!!&)[J,~>
+nG`J`rr2snJcF'r!41/S!0c4<!0`KDJ,~>
+nG`J+rr2s9JcF'r!.!&n!&`R3!&]i;J,~>
+n,NAqJcF$q!9;N-!!(jT!!&)[J,~>
+n,NA^JcF$q!41,R!0c7=!0`KDJ,~>
+n,NA)JcF$q!.!#m!&`U4!&]i;J,~>
+JcE:\!9;K,!!(mU!!&)[J,~>
+JcE:\!41)Q!0c:>!0`KDJ,~>
+JcE:\!-uul!&`X5!&]i;J,~>
+JcE:\!9;H+!!(pV!!&)[J,~>
+JcE:\!41&P!0c=?!0`KDJ,~>
+JcE:\!-urk!&`[6!&]i;J,~>
+JcE:\!9;E*!!(sW!!&)[J,~>
+JcE:\!41#O!0c@@!0`KDJ,~>
+JcE:\!-uoj!&`^7!&]i;J,~>
+JcE:\!9;B)!!)!X!!&)[J,~>
+JcE:\!40uN!0cCA!0`KDJ,~>
+JcE:\!-uli!&`a8!&]i;J,~>
+JcE:\!9;?(!!)$Y!!&)[J,~>
+JcE:\!40rM!0cFB!0`KDJ,~>
+JcE:\!-uih!&`d9!&]i;J,~>
+JcE:\!9;<'!!)'Z!!&)[J,~>
+JcE:\!40oL!0cIC!0`KDJ,~>
+JcE:\!-ufg!&`g:!&]i;J,~>
+JcE:\!9;9&!!)*[!!&)[J,~>
+JcE:\!40lK!0cLD!0`KDJ,~>
+JcE:\!-ucf!&`j;!&]i;J,~>
+JcE:\!9;6%!!)-\!!&)[J,~>
+JcE:\!40iJ!0cOE!0`KDJ,~>
+JcE:\!-u`e!&`m<!&]i;J,~>
+JcE:\!9;3$!!)0]!!&)[J,~>
+JcE:\!40fI!0cRF!0`KDJ,~>
+JcE:\!-u]d!&`p=!&]i;J,~>
+JcE:\!9;0#!!)3^!!&)[J,~>
+JcE:\!40cH!0cUG!0`KDJ,~>
+JcE:\!-uZc!&`s>!&]i;J,~>
+JcE:\!9;-"!!)6_!!&)[J,~>
+JcE:\!40`G!0cXH!0`KDJ,~>
+JcE:\!-uWb!&a!?!&]i;J,~>
+JcE:\!9;*!!!)9`!!&)[J,~>
+JcE:\!40]F!0c[I!0`KDJ,~>
+JcE:\!-uTa!&a$@!&]i;J,~>
+JcE:\!9;*!!!)9`!!&)[J,~>
+JcE:\!40]F!0c[I!0`KDJ,~>
+JcE:\!-uTa!&a$@!&]i;J,~>
+JcE:\!9;&u!!)<a!!&)[J,~>
+JcE:\!40ZE!0c^J!0`KDJ,~>
+JcE:\!-uQ`!&a'A!&]i;J,~>
+JcE:\!9;#t!!)?b!!&)[J,~>
+JcE:\!40WD!0caK!0`KDJ,~>
+JcE:\!-uN_!&a*B!&]i;J,~>
+JcE:\!9:us!!)Bc!!&)[J,~>
+JcE:\!40TC!0cdL!0`KDJ,~>
+JcE:\!-uK^!&a-C!&]i;J,~>
+JcE:\!9:us!!)Bc!!&)[J,~>
+JcE:\!40TC!0cdL!0`KDJ,~>
+JcE:\!-uK^!&a-C!&]i;J,~>
+JcE:\!9:rr!!)Ed!!&)[J,~>
+JcE:\!40QB!0cgM!0`KDJ,~>
+JcE:\!-uH]!&a0D!&]i;J,~>
+JcE:\!9:oq!!)He!!&)[J,~>
+JcE:\!40NA!0cjN!0`KDJ,~>
+JcE:\!-uE\!&a3E!&]i;J,~>
+JcE:\!9:lp!!)Kf!!&)[J,~>
+JcE:\!40K@!0cmO!0`KDJ,~>
+JcE:\!-uB[!&a6F!&]i;J,~>
+JcE:\!9:lp!!)Kf!!&)[J,~>
+JcE:\!40K@!0cmO!0`KDJ,~>
+JcE:\!-uB[!&a6F!&]i;J,~>
+JcE:\!9:io!!)Ng!!&)[J,~>
+JcE:\!40H?!0cpP!0`KDJ,~>
+JcE:\!-u?Z!&a9G!&]i;J,~>
+JcE:\!9:fn!!)Qh!!&)[J,~>
+JcE:\!40E>!0csQ!0`KDJ,~>
+JcE:\!-u<Y!&a<H!&]i;J,~>
+JcE:\!9:cm!!)Ti!!&)[J,~>
+JcE:\!40B=!0d!R!0`KDJ,~>
+JcE:\!-u9X!&a?I!&]i;J,~>
+JcE:\!9:cm!!)Ti!!&)[J,~>
+JcE:\!40B=!0d!R!0`KDJ,~>
+JcE:\!-u9X!&a?I!&]i;J,~>
+JcE:\!9:`l!!)Wj!!&)[J,~>
+JcE:\!40?<!0d$S!0`KDJ,~>
+JcE:\!-u6W!&aBJ!&]i;J,~>
+JcE:\!9:]k!!)Zk!!&)[J,~>
+JcE:\!40<;!0d'T!0`KDJ,~>
+JcE:\!-u3V!&aEK!&]i;J,~>
+JcE:\!9:]k!!)Zk!!&)[J,~>
+JcE:\!40<;!0d'T!0`KDJ,~>
+JcE:\!-u3V!&aEK!&]i;J,~>
+JcE:\!9:Zj!!)]l!!&)[J,~>
+JcE:\!409:!0d*U!0`KDJ,~>
+JcE:\!-u0U!&aHL!&]i;J,~>
+mJd/pJcF$q!9:Wi!!)`m!!&)[J,~>
+mJd/]JcF$q!4069!0d-V!0`KDJ,~>
+mJd/(JcF$q!-u-T!&aKM!&]i;J,~>
+mf3;qJcF$q!9:Wi!!)`m!!&)[J,~>
+mf3;^JcF$q!4069!0d-V!0`KDJ,~>
+mf3;)JcF$q!-u-T!&aKM!&]i;J,~>
+n,EGts'^KYcMmn)\GlO/p\t3nO8j_~>
+n,EGas%\.FcMmmN\GlPmp\t5WO8j_~>
+n,EG,ru$CfcMmli\GlOdp\t4NO8j_~>
+s8W"*rVue("TMp1s'^KYcMmn)\,QF.q#:<oO8j_~>
+s8W!lrVudj"TM6ss%\.FcMmmN\,QGlq#:>XO8j_~>
+s8W!7rVud5"TKA>ru$CfcMmli\,QFcq#:=OO8j_~>
+nGiDpJcF'r!9:Qg!!)fo!!&)[J,~>
+nGiD]JcF'r!4007!0d3X!0`KDJ,~>
+nGiD(JcF'r!-u'R!&aQO!&]i;J,~>
+mJd/pJcF$q!9:Nf!!)ip!!&)[J,~>
+mJd/]JcF$q!40-6!0d6Y!0`KDJ,~>
+mJd/(JcF$q!-u$Q!&aTP!&]i;J,~>
+mJd/pJcF$q!9:Nf!!)ip!!&)[J,~>
+mJd/]JcF$q!40-6!0d6Y!0`KDJ,~>
+mJd/(JcF$q!-u$Q!&aTP!&]i;J,~>
+JcE:\!9:Ke!!)lq!!&)[J,~>
+JcE:\!40*5!0d9Z!0`KDJ,~>
+JcE:\!-u!P!&aWQ!&]i;J,~>
+JcE:\!9:Hd!!)or!<E/u!!<BF>hGGDJ,~>
+JcE:\!40'4!0d<[!L*Q^!!<BF>hGGDJ,~>
+JcE:\!-tsO!&aZR!B'oU!!<BF>hGGDJ,~>
+JcE:\!9:Hd!!)or$3:)+0VbD7E!m35RK%d~>
+JcE:\!40'4!0d<[$BtJi0VbD7E!m35RK%d~>
+JcE:\!-tsO!&aZR$8qh`0VbD7E!m35RK%d~>
+JcE:\!9:Ec!!)rs!s&?$9E"klZN,-9s*t~>
+JcE:\!40$3!0d?\"-``b9E"klZN,-9s*t~>
+JcE:\!-tpN!&a]S"#^)Y9E"klZN,-9s*t~>
+JcE:\!9:Bb!!)ut!s&?$9E"klq#F9[s*t~>
+JcE:\!40!2!0dB]"-``b9E"klq#F9[s*t~>
+JcE:\!-tmM!&a`T"#^)Y9E"klq#F9[s*t~>
+JcE:\!9:Bb!!)ut!s&?$9E"kleGs0Ks*t~>
+JcE:\!40!2!0dB]"-``b9E"kleGs0Ks*t~>
+JcE:\!-tmM!&a`T"#^)Y9E"kleGs0Ks*t~>
+JcE:\!9:?a!!*#u$3:)+7dKC&\1Ig(RK%d~>
+JcE:\!4/s1!0dE^$BtJi7dKC&\1Ig(RK%d~>
+JcE:\!-tjL!&acU$8qh`7dKC&\1Ig(RK%d~>
+JcE:\!9:?a!!*#u!<E/s!!*hIR/_[~>
+JcE:\!4/s1!0dE^!L*Q\!!*hIR/_[~>
+JcE:\!-tjL!&acU!B'oS!!*hIR/_[~>
+JcE:\!9:<`$ip>-!<3$X]=O[t!,e2(J,~>
+JcE:\!4/p0%$U_kPQ(VA]=O[t!,e2(J,~>
+JcE:\!-tgK$oS(b2?*Y8]=O[t!,e2(J,~>
+JcE:\!9:<`"p"]'!<3$lrr3)s2ZUFWs*t~>
+JcE:\!4/p0#*])ePQ(VUrr3)s2ZUFWs*t~>
+JcE:\!-tgK"uZG\2?*YLrr3)s2ZUFWs*t~>
+JcE:\!9:9_"T\Q&rr>^jrrU@D1n"Ao~>
+JcE:\!4/m/"dAtMrr>^jrrU@D1n"Ao~>
+JcE:\!-tdJ"Z?<;rr>^jrrU@D1n"Ao~>
+JcE:\!9:6^rr<-#!)*7i!_i[+Rf@m~>
+JcE:\!4/j.s-!Na!)*7i!_i[+Rf@m~>
+JcE:\!-taIs"slX!)*7i!_i[+Rf@m~>
+JcE:\!9:6^rr<-#!)*7i!mL^2Rf@m~>
+JcE:\!4/j.s-!Na!)*7i!mL^2Rf@m~>
+JcE:\!-taIs"slX!)*7i!mL^2Rf@m~>
+JcE:\!9:3]!s&?$9De_j:B8J*s*t~>
+JcE:\!4/g-"-``b9De_j:B8J*s*t~>
+JcE:\!-t^H"#^)Y9De_j:B8J*s*t~>
+JcE:\!9:3]!!&)[J,~>
+JcE:\!4/g-!0`KDJ,~>
+JcE:\!-t^H!&]i;J,~>
+JcE:\!9:3]rrA/\J,~>
+JcE:\!4/g-s-&QEJ,~>
+JcE:\!-t^Hs##o<J,~>
+JcE:\!9:3]rrA/\J,~>
+JcE:\!4/g-s-&QEJ,~>
+JcE:\!-t^Hs##o<J,~>
+JcE:\!9:3]!W`6#OoKq~>
+JcE:\!4/g-!gEYJOoKq~>
+JcE:\!-t^H!]C!8OoKq~>
+JcE:\!9:3]!W`6#OoKq~>
+JcE:\!4/g-!gEYJOoKq~>
+JcE:\!-t^H!]C!8OoKq~>
+JcE:\!9:3]!s&B$!0[A4~>
+JcE:\!4/g-"-`cbPEPrr~>
+JcE:\!-t^H"#^,Y23Rui~>
+JcE:\!9:3]!s&B$!0[A4~>
+JcE:\!4/g-"-`cbPEPrr~>
+JcE:\!-t^H"#^,Y23Rui~>
+JcE:\!9:3]!!*#u!!&5_J,~>
+JcE:\!4/g-!0dE^!0`WHJ,~>
+JcE:\!-t^H!&acU!&]u?J,~>
+JcE:\!9:3]!!*#u!!&5_J,~>
+JcE:\!4/g-!0dE^!0`WHJ,~>
+JcE:\!-t^H!&acU!&]u?J,~>
+JcC<$jSo2[rVlitPlH7~>
+JcC<$jSo4DrVlk]PlH7~>
+JcC<$jSo3;rVljTPlH7~>
+mJm)mhu<[biW&gaiW&mchu<[biVrmdhZ!RahuE[ap&>!lrVlitoDe_shu<[biW&gan,In~>
+mJm)Zhu<[OiW&gNiW&mPhu<[OiVrmQhZ!RNhuE[Np&>#UrVlk]oDe_`hu<[OiW&gNn,In~>
+mJm)%hu<ZoiW&fniW&lphu<ZoiVrlqhZ!QnhuEZnp&>"LrVljToDe_+hu<ZoiW&fnn,In~>
+mJd/ph#IC_h>[I`ir9!err2t,iW&pdir9'gs'ajcs'ajc!+Gm,!+GU$!!)rs!!)Ng!+Fgcs'amd
+!+G3nJ,~>
+mJd/]h#ICLh>[IMir9!Rrr2sniW&pQir9'Ts%_MPs%_MP!)EOn!)E7f!0d?\!0cpP!)DJPs%_PQ
+!)Dk[J,~>
+mJd/(h#IBlh>[Hmir8urrr2s9iW&oqir9&tru'bpru'bp!#be9!#bM1!&a]S!&a9G!#a_pru'eq
+!#b,&J,~>
+mJd8ss']?orrQX/@G_"a@GUq`@H.:g@K0crrr?L,rr?KerrQX/@GLk_@J9^$!;uis!:g'h@Gq.e
+@K0cprrZ^0@:AU(J,~>
+mJd8`s%Z>IrrPsq:>Z!N:>PpM:?)9T:B+)Lrr>gnrr>gRrrPsq:>GjL:A4\fPPkF\PO\YQ:>l-R
+:B+)JrrZ$r:/:6WJ,~>
+mJd8+rtu^4rrO)<);bAn);Y;m)<1Yt)?1T7rr<r9rr<qrrrO)<);P5l)>=(12>mIS2=^\H);tMr
+)?1T5rrX/=)&_lBJ,~>
+oDe_s"oi">s8QNks86:.s'bs-@H[[g@K-<,@H[[g@K-<,@H[[g@K-9,@H7@f@K-9,@Gq.c@G_%a
+@J0X#!;lcr!;$6j@H%4g@K6@9iW&pds8N(-n,In~>
+oDe_`"oh=ms8PjXs85Ups%`Uo:?VZT:B(:n:?VZT:B(:n:?VZT:B(7n:?2?S:B(7n:>l-P:>Z$N
+:A+VePPb@[POnhS:>u3T:B1>hiW&pQs8N'on,In~>
+oDe_+"ofGXs8Nu#s83`;ru(k:)<_%t)?0[9)<_%t)?0[9)<_%t)?0X9)<:_s)?0X9);tMp);bDn
+)>4"02>dCR2=pkJ)<(St)?9^SiW&oqs8N':n,In~>
+l2L`lirApbhZ!RaiVrmdh>[I`j8T*frr2t,i;Wdchu<[boD\djqu6Wrnc&StirApbhZ!Ran,In~>
+l2L`YirApOhZ!RNiVrmQh>[IMj8T*Srr2sni;WdPhu<[OoD\fSqu6Y[nc&SairApOhZ!RNn,In~>
+l2L`$irAoohZ!QniVrlqh>[Hmj8T)srr2s9i;Wcphu<ZooD\eJqu6XRnc&S,irAoohZ!Qnn,In~>
+nGiDps8N(-hu<[biVrmdrr2t,ir9!eh#@@_ir9'gs'agb!+Fgc!+GHu!!)lq!!)`m!+Gm,!+Fdb
+!+Fjd!+Gm,!+GEt!Mf[F~>
+nGiD]s8N'ohu<[OiVrmQrr2snir9!Rh#@@Lir9'Ts%_JO!)DJP!)E+b!0d9Z!0d-V!)EOn!)DGO
+!)DMQ!)EOn!)E(a!Mf[F~>
+nGiD(s8N':hu<ZoiVrlqrr2s9ir8urh#@?lir9&tru'_o!#a_p!#bA-!&aWQ!&aKM!#be9!#a\o
+!#abq!#be9!#b>,!Mf[F~>
+nG`Jsr;Qb*hZ!Rai;`dbiW&gairApbj8T*fi;`^`irApbpAY*mqYpNqp&G#"hZ!Rai;`dbnc&Zc
+4o^$~>
+nG`J`r;QalhZ!RNi;`dOiW&gNirApOj8T*Si;`^MirApOpAY,VqYpPZp&G"dhZ!RNi;`dOnc&Zc
+4TBp~>
+nG`J+r;Qa7hZ!Qni;`coiW&fnirAooj8T)si;`]mirAoopAY+MqYpOQp&G"/hZ!Qni;`conc&Zc
+4o^$~>
+nG`T!s']>es+14Grr<&prr<%hrr\rXhuA3~>
+nG`Scs%Z=?s+14GrrA8YrrA7Qrr\rWhuA3~>
+nG`S.rtu]*s+14Grr=qPrr=pHrr\rXhuA3~>
+s8W"*rVue("oi">s8QMYs+14Hrr<&prr<%irrf#YhuE_,~>
+s8W!lrVudj"oh=ms8PiFs+14HrrA8YrrA7Rrrf#XhuE_,~>
+s8W!7rVud5"ofGXs8Nsfs+14Hrr=qPrr=pIrrf#YhuE_,~>
+m/I&ohu<[bhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Rao`#)b4l?:7s*t~>
+m/I&\hu<[OhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNo`#)b4Q$16s*t~>
+m/I&'hu<ZohZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qno`#)b4l?:7s*t~>
+nG`Jsrr2t,hu<[bhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Rap&>5`4l?:74o^$~>
+nG`J`rr2snhu<[OhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNp&>5`4Q$164TBp~>
+nG`J+rr2s9hu<ZohZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qnp&>5`4l?:74o^$~>
+n,NAqhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RapAYAb4l?:34l?9i~>
+n,NA^hZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNpAYAb4Q$124Q$0h~>
+n,NA)hZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnpAYAb4l?:34l?9i~>
+ao;?LhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Rap\tMd4l?:34l?;>J,~>
+ao;?9hZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNp\tMd4Q$124Q$2=J,~>
+ao;>YhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qnp\tMd4l?:34l?;>J,~>
+ao;?LhZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!RahZ!Raq#:Ya4l?:34l?:3s*t~>
+ao;?9hZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNhZ!RNq#:Ya4Q$124Q$12s*t~>
+ao;>YhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!QnhZ!Qnq#:Ya4l?:34l?:3s*t~>
+JcE:\!98Y1`W$:;4l?:34l?:34o^$~>
+JcE:\!4.7V`W$:;4Q$124Q$124TBp~>
+JcE:\!-s.q`W$:;4l?:34l?:34o^$~>
+JcE:\!98Y1`r?F=4l?:34l?:34l?9i~>
+JcE:\!4.7V`r?F=4Q$124Q$124Q$0h~>
+JcE:\!-s.q`r?F=4l?:34l?:34l?9i~>
+JcE:\!98Y1])R9~>
+JcE:\!4.7V])R9~>
+JcE:\!-s.q])R9~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
--- /dev/null
+++ axiom-20170501/bitcoin4.eps
@@ -0,0 +1,1442 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: bitcoin4.eps
+%%CreationDate: Tue Jan 20 00:49:42 2015
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 415 437
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 421.93686614173231 translate
+399.94015748031495 -421.93686614173231 scale
+% Image geometry
+400 422 8
+% Transformation matrix
+[ 400 0 0 422 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 400 string def
+/gstr 400 string def
+/bstr 400 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:        41322 ASCII Bytes
+colorimage
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!VPi2m"+MSm.K]GmIbu~>
+!VPi2m"+MSm.K]GmIbu~>
+!VPi2m"+MSm.K]GmIbu~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo>XKDh>dYjQQI*%Hum,^k?WGEGU<Dg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo>XKDh>dYjQQI*%Hum,^k?WHEGU<Dg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo,LIDh>dYjQQI*%Hum,^k?WGE,:3Cg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I>jV`NdY]5f&QVk%HH$0D17P:RZ)W0SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I?'eeNdY]5f&QVk%HH$0D17P:RuD`1SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I>jS_N.#K3f&QVk%HH$0D17M8RYuQ/SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDKXNKJ[bH6hLU"B/)%G.:tNipRahoMjXGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS4m"Ndp0akQ9+Bhrs81h2!X7:;?#Vk(s"^!f*u@J`u+WJ,~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDKXNTS]bH?nMU"B/)%G.:tO06^dhoMjXGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS=s#ic(=YkQ.]=kNE5mE%NY]e`c5LEW14aNP'i+iTPd~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDJXNBAWb,gVIU"B/)%G.:tNigI]hSlLSGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS=s#c"X`]kQ-gHkNE5\?nEsfiTTL?GlDshQcamCiTPd~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6R&icG[5^K#7BI%Dmdg\AZ\Ff#kn?S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$eh&Mfp?)M#0%oIO&BH?,`*P(FkMIjcN.3E29AtHbj6(p~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6R)jcG[5^K#7BI%Dmdg\AZ\Ff#kn?S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$Z7R`dp?)IL1$@^1Q<q>4/MQAN_C]bdE@ibtJ`l%UJ,~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6HrecG[5^K#7BI%Dmdg\AQSBe]Pe>S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$M_/K%p?)HpOltm<AV.mm/r&QPS1T/DBe:p?J`l%UJ,~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHQSb/M<4SXfQ=%A03)_o9aCcH4&C]q(djjpoJ]qVI<J
+V!7X&_;tI@aS=m"Sh2O:g#`h*k2si>]]S'&RHEYpJM!:@k2YTS~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHQSb/M<4SXfQ=%A03)_o9aCcH4&C]q(djjpoJ]qVI<J
+V!7X&_;tI@aS=m"Ah>U8g?&CqroOW]0&>[./]Qr8g.j6>J`c"TJ,~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHNQb/M<4SXfQ=%A03)_o9aCc,mrB]q(djjpoJ]qVI<J
+V!7X&_;tI@aSFs$gG^]9akGkWi;VjIG$="iTe5*_k/T80gO\MIk(!~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[Ai[o:u/(EY@N*=`lja_^=a\1CLjd%JM9?-&RWdLp#/ullB/V<`X#1G39jP2>M
+ro=1@/L9;+jQ,BP~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[Abq523:ZUTq>CY_pgJ+[.UNbe[gNG/#GMD3>G+XgI0$C.E/Z&4&#-0B2jMNRc
+ro=.'/Ur?4j5b^~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[AX=]hnMr`sD:n6V-__T<oK:q;da^6VOP2kWY?a"5s=O`-Y/\Uo>#)$+=jI\$T
+ro=-^/Z=6]j5b^~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[B^+R::/Y_=efe$@fVCp6V`[fg)N@qH\GV78%Te.Y&J1WCSRkDVRj9CPqc/dY3
+P5XGCS1<-AjQ,BP~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[BO"]IK/]d#6].Js%DD:/4R8;o)/2+r^9ebPeAM%l69eA$2Ft__Ij9A=4iT.m.
+_>WEq>?ug@j5b^~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[B@q+M./_oFJSh7A-3J?JSA<>m!065=D15+`D2_C#p1+d:P3c!dOj9O$fJ)o[_
+/_9p^!o,YqJ`PkPJ,~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_q;MQs=5r6k8cI]ia=LOHXlA?Y.bWN,OlGBV/<Sq],h_1q/]H`*/@kT9#E^RBio8ZC
+Oo=8@TIJEBioK*L~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_qVh_7/<Jl;/;jGd*MG#g/^WM:QVZVS/AL3(_(<@\>'JucQnR7S_(F@:iX"=C0$rV;
+_(<A"iW3RpJ`>_LJ,~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_qVh^u/[s`C/?f'4*J#b;9A\[f@[#fB/Crh?Sh/CF1nN^dCj=puR98GEiX!gd@G^#'
+Sh/CjiW@glP_%iSid_~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8Etcn$_jFY#,Wro!p:/8P7D(;hWSgaoPciSQ2JiL3g+iPR+siRocqqr%Y:E%/a)
+i<%[`OT",>O=/\3iT/sJ~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8EtYq.JLD(I<oro!o//=uk"(7%bT`%B<oiQ<^diEDZ.iKmg.iP7%tqr%Y*/6pj,
+i<$eG^]!*l9P/k7j5GL~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8F%N@\1S>qBaKiSi6</A_>E(1NHcTh=,!iN=`\fegD$iFA)1iLO*/qr%Xj/VN']
+i<#Q$e,J;-d5$r;iT&mI~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_tr6kR4A3/,+U96hqu7$9e<d2hngkof.<3EhqBWBhjIO&hn^enhq'EkqqhI--eA7R
+!nSugrnde&/9la'j55@~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_tr7<@ns"rUl?q.hqsnS9J4fOhj$so].CbThngqXhcZ0#hj.'qhnC\nr8.S2.qSY9
+!kp5$rnddY/?49Yj55@~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_u&=>f/@iKTW!&ca5>d"/21ephqqk)hj5nGhqsqTdFU4bhqqn+hqsr*hYc74a=`kX
+hZB<!eGe>,M_)o"hrEUE~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<mh(4$Rh][.ldaTgshet!dhngkohf^B]erME"hjIO&hn^enhq'Ekr8/()/8Mo+
+[F=$b/:Y[ZV(<t>J`#MFJ,~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<maXjarh]XLShn(GFfdonUhj$sofdgX\csn]]hcZ0#hj.'qhnC\nr8/$S/<[NN
+[G9ZR/>:)$N%Ajthr<OD~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<mXXq`rh]g/oP2D`[c+bi_hqqk)ho.1-e\O+]hUaTohqqn+hqsr*hYc7AF"F?$
+[Cb>RS1M+g]l>TeJ`#JEJ,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$i^b!D%h''E]WGY_lh:PFmh8:\kh:Qg".k.XWh3_3uh7tGgh:4$dr7q@gr$qiV
+h:;HS!\'5_J_f>AJ,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$iPqLehh'&%7`[d#(h7tOlh3q'oh8i5>.o"+@h,oirh3D1"h7YDir7q@<r@7t$
+eD7h:.fi>AJ_f;@J,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$hBm'@0+`U)d/?I[`UF`>!Eff,5[4j*]G1PL"1Uc,qBp%6-RU=kJh#MHn.g&i-
+h4"9m!F`Khh;R1?~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]7cJe'N[$^>+5~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]7fId"0udgjf~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]@iLg!J3!gqMQo~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+J_>V-J_BSHJ,~>
+J_>V-J_BSHJ,~>
+J_>V-J_BSHJ,~>
+J_5P+J_9MFJ,~>
+J_5P+J_9MFJ,~>
+J_5P+J_9MFJ,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+S,`E'qu?]5o)JX)oDej-lMgk$r;Qc6nG`L*p&G$.iW&eloDej-JcG]KJ,~>
+S,`D"qu?\0o)JW$oDei(lMgitr;Qb1nG`K%p&G#)iW&dgoDei(JcG]KJ,~>
+S,`CJqu?[Xo)JVLoDehPlMgiGr;QaYnG`JMp&G"QiW&d:oDehPJcG]KJ,~>
+S,WK*rVll7oD\g-qu6Z5r;Qc6g]%8jr;Qc6nG`L*oD\g-iVrnpr;Qc6ir9"qNrOV~>
+S,WJ%rVlk2oD\f(qu6Y0r;Qb1g]%7er;Qb1nG`K%oD\f(iVrmkr;Qb1ir9!lNrOV~>
+S,WIMrVljZoD\ePqu6XXr;QaYg]%78r;QaYnG`JMoD\ePiVrm>r;QaYir9!?NrOV~>
+S,WK*r;Qc6o`"p.qu6Z5ec5Zdrr<#8nG`L*oD\g-iVrnpr;Qc6ir9"qNrOV~>
+S,WJ%r;Qb1o`"o)qu6Y0ec5Y_rr<"3nG`K%oD\f(iVrmkr;Qb1ir9!lNrOV~>
+S,WIMr;QaYo`"nQqu6XXec5Y2rr<![nG`JMoD\ePiVrm>r;QaYir9!?NrOV~>
+S,WK*rVll7rVul6r;ZZ2rr2u8q#C9/rVul6r;Qf7s8Bh-rs$@?_Z.LQ_Z'T5_YsN5_?BnUs8Tt7
+rrBq5rrBq5s89b5rrU(;s8Kn.rrBq6rrBq8s89b4s8Kn5rrL":rPJR6qni=3r5+p&J,~>
+S,WJ%rVlk2rVuk1r;ZY-rr2t3q#C8*rVuk1r;Qe2s8?X(rs!0:B`DcGB`A&0B`7u0BE\?Ks8Qd2
+rr?a0rr?a0s86R0rrQm6s8H^)rr?a1rr?a3s86R/s8H^0rrHg5rFl31qe5s.r+MQ!J,~>
+S,WIMrVljZrVujYr;ZXUrr2s[q#C7RrVujYr;QdZs8>%PrrtRb49%DB49#9X48o3X3s>RFs8P1Z
+rr>.Xrr>.Xs84tXrrP:^s8G+Qrr>.Yrr>.[s84tWs8G+XrrG4]rB(#Yq`FcVr&^AIJ,~>
+S,`E'qYpQ4qYpQ4qu6Z5q>UH3r;Qc6r;Qc6r;Zf6rVll7pAYH9s2+fQs2+g9_YjE9_Z0YQrVuo7
+s8N)9rVll7qu6Z5pAY-0rr<#8rr2u8pAb$,rr2u8r;Qc6r;Qc6r;Zf6rVll7rVll7qu6Z5r;Qc6
+S,\!~>
+S,`D"qYpP/qYpP/qu6Y0q>UG.r;Qb1r;Qb1r;Ze1rVlk2pAYG4s(MFGs(MH4B`.l4B`J*GrVun2
+s8N(4rVlk2qu6Y0pAY,+rr<"3rr2t3pAb#'rr2t3r;Qb1r;Qb1r;Ze1rVlk2rVlk2qu6Y0r;Qb1
+S,\!~>
+S,`CJqYpOWqYpOWqu6XXq>UFVr;QaYr;QaYr;ZdYrVljZpAYF\s#^6Bs#^8\48f*\49,=BrVumZ
+s8N'\rVljZqu6XXpAY+Srr<![rr2s[pAb"Orr2s[r;QaYr;QaYr;ZdYrVljZrVljZqu6XXr;QaY
+S,\!~>
+S,WK*rVll7qu6Z5qYpQ4qu6Z5q>UH3r;Qc6r;Qc6r;Qc6r;Qc6pAYH9s8Tt9s2+g9_YjE9_Z0YQ
+r;Ql9s8Tt7rrBq5rrBq0rrBq8rrBq7rrBq0rrBq3rrBq6rrBq6rrBq6rrBq6rrBq7rrBq5rrBp$
+s*t~>
+S,WJ%rVlk2qu6Y0qYpP/qu6Y0q>UG.r;Qb1r;Qb1r;Qb1r;Qb1pAYG4s8Qd4s(MH4B`.l4B`J*G
+r;Qk4s8Qd2rr?a0rr?a+rr?a3rr?a2rr?a+rr?a.rr?a1rr?a1rr?a1rr?a1rr?a2rr?a0rr?_t
+s*t~>
+S,WIMrVljZqu6XXqYpOWqu6XXq>UFVr;QaYr;QaYr;QaYr;QaYpAYF\s8P1\s#^8\48f*\49,=B
+r;Qj\s8P1Zrr>.Xrr>.Srr>.[rr>.Zrr>.Srr>.Vrr>.Yrr>.Yrr>.Yrr>.Yrr>.Zrr>.Xrr>-G
+s*t~>
+S,WK*r;Qc6r;Qc6qYpQ4qu6Z5q>UH3r;Qc6r;Qc6r;Qc6r;Qc6pAYH9s8Tt9s2+g9_YjE9_Z0YQ
+r;Ql9s8Tt7rrBq5rrBq5s80\4rrBq+rrBq3rrBq6rrBq6rrBq6rrBq6rrBq7rrBq4s89a&s*t~>
+S,WJ%r;Qb1r;Qb1qYpP/qu6Y0q>UG.r;Qb1r;Qb1r;Qb1r;Qb1pAYG4s8Qd4s(MH4B`.l4B`J*G
+r;Qk4s8Qd2rr?a0rr?a0s8-L/rr?a&rr?a.rr?a1rr?a1rr?a1rr?a1rr?a2rr?a/s86Q!s*t~>
+S,WIMr;QaYr;QaYqYpOWqu6XXq>UFVr;QaYr;QaYr;QaYr;QaYpAYF\s8P1\s#^8\48f*\49,=B
+r;Qj\s8P1Zrr>.Xrr>.Xs8+nWrr>.Nrr>.Vrr>.Yrr>.Yrr>.Yrr>.Yrr>.Zrr>.Ws84sIs*t~>
+S,WK*r;Qc6r;Qc6qYpQ4qu6Z5q>UH3r;Qc6r;Qc6r;Qc6r;Qc6pAY-0r;Ql9s8Tt6rr^.<s2+^6
+"2b*<_YsK7_Ya?5_YjE6_YjE6_Z'Q8_X[X+_YO33_YjE6_YjE6_YjE6_YjE6_YsK7_Y*p/_OLRU~>
+S,WJ%r;Qb1r;Qb1qYpP/qu6Y0q>UG.r;Qb1r;Qb1r;Qb1r;Qb1pAY,+r;Qk4s8Qd1rrZs7s(M?1
+").`7B`7r2B`%f0B`.l1B`.l1B`A#3B^u*&B_hZ.B`.l1B`.l1B`.l1B`.l1B`7r2B_DB*BUf$P~>
+S,WIMr;QaYr;QaYqYpOWqu6XXq>UFVr;QaYr;QaYr;QaYr;QaYpAY+Sr;Qj\s8P1YrrY@_s#^/Y
+"$?P_48o0Z48]$X48f*Y48f*Y49#6[47W=N48JmV48f*Y48f*Y48f*Y48f*Y48o0Z48&UR4.H8#~>
+S,WK*rVll7qu6Z5qYpQ4rr3);s8Tt6rr^.<s2+^6!5e[6!5e[6!5e[6!5eI0!5e[6"2b*<_YjE9
+_Z0YQrVuo7s8N)9rVll7qu6Z5r;Qc6rVuo7rr2u8nc&U+q>UH3r;Qc6r;Qc6r;Qc6r;Qc6rVll7
+rr3);s8Tt6rrBp*s*t~>
+S,WJ%rVlk2qu6Y0qYpP/rr3(6s8Qd1rrZs7s(M?1!,2<1!,2<1!,2<1!,2*+!,2<1").`7B`.l4
+B`J*GrVun2s8N(4rVlk2qu6Y0r;Qb1rVun2rr2t3nc&T&q>UG.r;Qb1r;Qb1r;Qb1r;Qb1rVlk2
+rr3(6s8Qd1rr?`%s*t~>
+S,WIMrVljZqu6XXqYpOWrr3'^s8P1YrrY@_s#^/Y!'C,Y!'C,Y!'C,Y!'BoS!'C,Y"$?P_48f*\
+49,=BrVumZs8N'\rVljZqu6XXr;QaYrVumZrr2s[nc&SNq>UFVr;QaYr;QaYr;QaYr;QaYrVljZ
+rr3'^s8P1Yrr>-Ms*t~>
+S,`E'r;Z]3qu?Z4rVuf4rVuf4rVuf4rr2u8r;Qc6pAY-0r;Qc6rr;o5rVui5!WU%9s8Be8s2+d8
+r5/F4rPAU8_Z'Q8_X[X+_YF0/_YsN4_Z'Q8_YjE6_YjH5_YsN4_OCLT~>
+S,`D"r;Z\.qu?Y/rVue/rVue/rVue/rr2t3r;Qb1pAY,+r;Qb1rr;n0rVuh0!WQj4s8?U3s(ME3
+r+Q'/rFc63B`A#3B^u*&B__W*B`7u/B`A#3B`.l1B`.o0B`7u/BU\sO~>
+S,`CJr;Z[Vqu?XWrVudWrVudWrVudWrr2s[r;QaYpAY+Sr;QaYrr;mXrVugX!WP7\s8>"[s#^5[
+r&alWrAt&[49#6[47W=N48AjR48o3W49#6[48f*Y48f-X48o3W4.?2"~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+q>UQWs8QO*rr?JYs+13&s*t~>
+q>UQ's8Pjlrr>fFs+13&s*t~>
+q>UPBs8Nu7rr<pfs+13&s*t~>
+s8W"*%KGJgs'bq9@K6@9s']>es+13)s*t~>
+s8W!l%KEd7s%`Sh:B1>hs%Z=?s+13)s*t~>
+s8W!7%KC_Rru(hS)?9^Srtu]*s+13)s*t~>
+q>Uoas8QM9s8QO-@:B39@=eH0s+gW)~>
+q>Uo1s8Phhs8Pjo:/:ih:4`Frs+gW)~>
+q>UnLs8NrSs8Nu:)&`JS)1hg=s+gW)~>
+q>UQWs8QO,rrQX/@K-9,@=eH0s+gW)~>
+q>UQ's8PjnrrPsq:B(7n:4`Frs+gW)~>
+q>UPBs8Nu9rrO)<)?0X9)1hg=s+gW)~>
+q>UHTrr;t+rr;t+JcC<$LAuc~>
+q>UH$rr;smrr;smJcC<$LAuc~>
+q>UG?rr;s8rr;s8JcC<$LAuc~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTli7"&bQ%U[JcEIas20otJ,~>
+q>UH$li6u;bQ%SpJcEIas"9B4J,~>
+q>UG?li6uAbQ%T!JcEIas"of:J,~>
+q>UHTli7"&bQ%U[JcEIas20otJ,~>
+q>UH$li6u;bQ%SpJcEIas"9B4J,~>
+q>UG?li6uAbQ%T!JcEIas"of:J,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTW;ln8JcDJEs23gqs23LhJ,~>
+q>UH$W;llMJcDJEs"<:1s";t(J,~>
+q>UG?W;llSJcDJEs"r^7s"rC.J,~>
+q>UHTW;ln8JcDJEs23gqs23LhJ,~>
+q>UH$W;llMJcDJEs"<:1s";t(J,~>
+q>UG?W;llSJcDJEs"r^7s"rC.J,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTrVun+rVlk+JcC<$L&ZZ~>
+q>UH$rVummrVljmJcC<$L&ZZ~>
+q>UG?rVum8rVlj8JcC<$L&ZZ~>
+q>UHTrr2t,r;Qh,s'^KYJcCK)J,~>
+q>UH$rr2snr;Qgns%\.FJcCK)J,~>
+q>UG?rr2s9r;Qg9ru$CfJcCK)J,~>
+q>UQWs8QO*rr?L,rr?JYs+13*s*t~>
+q>UQ's8Pjlrr>gnrr>fFs+13*s*t~>
+q>UPBs8Nu7rr<r9rr<pfs+13*s*t~>
+s8W"*$NK/ds'bq9@K6@9rr2t,JcF'rs228Es244's21N0J,~>
+s8W!l$NII4s%`Sh:B1>hrr2snJcF'rs":_Zs"<[<s"9uEJ,~>
+s8W!7$NGDOru(hS)?9^Srr2s9JcF'rs"q.`s"s*Bs"pDKJ,~>
+q>Uc]s8QM9s8QO-@K-9,@=eI)s8U!Es8U"'s8U!0s*t~>
+q>Uc-s8Phhs8Pjo:B(7n:4`Gks8O^Zs8O_<s8O^Es*t~>
+q>UbHs8NrSs8Nu:)?0X9)1hh6s8Op`s8OqBs8OpKs*t~>
+q>UQWs8QO,rrlj2s'bq9JcC<$LAuc~>
+q>UQ's8Pjnrrl0ts%`ShJcC<$LAuc~>
+q>UPBs8Nu9rrj;?ru(hSJcC<$LAuc~>
+q>UHTrr;t+rVlk+JcC<$L&ZZ~>
+q>UH$rr;smrVljmJcC<$L&ZZ~>
+q>UG?rr;s8rVlj8JcC<$L&ZZ~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTSH&W,JcELbs23"Zs23^nJ,~>
+q>UH$SH&UAJcELbs";Ios"<1.J,~>
+q>UG?SH&UGJcELbs"qmus"rU4J,~>
+q>UHTSH&W,JcELbs23"Zs23^nJ,~>
+q>UH$SH&UAJcELbs";Ios"<1.J,~>
+q>UG?SH&UGJcELbs"qmus"rU4J,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UNVs8W"*rVlk+JcC<$LAuc~>
+q>UN&s8W!lrVljmJcC<$LAuc~>
+q>UMAs8W!7rVlj8JcC<$LAuc~>
+q>UQWs8QO(s8QMYs+13)s*t~>
+q>UQ's8Pjjs8PiFs+13)s*t~>
+q>UPBs8Nu5s8Nsfs+13)s*t~>
+q>UZZs8QO-@:B08!b)+;JcC<$LAuc~>
+q>UZ*s8Pjo:/:fg!`&bjJcC<$LAuc~>
+q>UYEs8Nu:)&`GR!ZD"UJcC<$LAuc~>
+s8W"*%KGJgs']@9s'bq9s8QMYs+13)s*t~>
+s8W!l%KEd7s%Z>hs%`Shs8PiFs+13)s*t~>
+s8W!7%KC_Rrtu^Sru(hSs8Nsfs+13)s*t~>
+q>UHTqu6\*s86;Vs+13*s*t~>
+q>UH$qu6[ls85WCs+13*s*t~>
+q>UG?qu6[7s83acs+13*s*t~>
+q>UQWs8QO,rr?L+rr?JYs+13)s*t~>
+q>UQ's8Pjnrr>gmrr>fFs+13)s*t~>
+q>UPBs8Nu9rr<r8rr<pfs+13)s*t~>
+q>UHTrr;t+r;Qb*JcC<$LAuc~>
+q>UH$rr;smr;QalJcC<$LAuc~>
+q>UG?rr;s8r;Qa7JcC<$LAuc~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcGECs20Efi;`hprVuo8Z2]=~>
+q>UH$JcGECs"8m&i;`g0rVumMZ2]=~>
+q>UG?JcGECs"o<,i;`g6rVumSZ2]=~>
+q>UHTJcGECs20Efi;`hprVuo8Z2]=~>
+q>UH$JcGECs"8m&i;`g0rVumMZ2]=~>
+q>UG?JcGECs"o<,i;`g6rVumSZ2]=~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTr;Qb*rr;t+JcC<$LAuc~>
+q>UH$r;Qalrr;smJcC<$LAuc~>
+q>UG?r;Qa7rr;s8JcC<$LAuc~>
+q>UHTrVun+s8N(-rr2t,JcC<$L];l~>
+q>UH$rVumms8N'orr2snJcC<$L];l~>
+q>UG?rVum8s8N':rr2s9JcC<$L];l~>
+q>UHTrr3.1s'bs-@K-9,@=eH0s+gW)~>
+q>UH$rr3-ss%`Uo:B(7n:4`Frs+gW)~>
+q>UG?rr3->ru(k:)?0X9)1hg=s+gW)~>
+s8W"*#QNias'bs-@K-<+@=eH0s+^Q(~>
+s8W!l#QM.1s%`Uo:B(:m:4`Frs+^Q(~>
+s8W!7#QK)Lru(k:)?0[8)1hg=s+^Q(~>
+q>UNVs8W"*!WQU-rr?JYs+13*s*t~>
+q>UN&s8W!l!WPporr>fFs+13*s*t~>
+q>UMAs8W!7!WO&:rr<pfs+13*s*t~>
+q>UHTr;Qk-s8QO,rr?JYs+13*s*t~>
+q>UH$r;Qjos8Pjnrr>fFs+13*s*t~>
+q>UG?r;Qj:s8Nu9rr<pfs+13*s*t~>
+q>UHTr;Qb*rr;t+JcC<$LAuc~>
+q>UH$r;Qalrr;smJcC<$LAuc~>
+q>UG?r;Qa7rr;s8JcC<$LAuc~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTk5YJ!iW&qqJcDJEs21<*J,~>
+q>UH$k5YH6iW&p1JcDJEs"9c?J,~>
+q>UG?k5YH<iW&p7JcDJEs"p2EJ,~>
+q>UHTk5YJ!iW&qqJcDJEs21<*J,~>
+q>UH$k5YH6iW&p1JcDJEs"9c?J,~>
+q>UG?k5YH<iW&p7JcDJEs"p2EJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTpAb01kPtS"JcC<$jo>@u_>f#~>
+q>UH$pAb.FkPtQ7JcC<$jo>?5_>f#~>
+q>UG?pAb.LkPtQ=JcC<$jo>?;_>f#~>
+q>UHTpAb01kPtS"JcC<$jo>@u_>f#~>
+q>UH$pAb.FkPtQ7JcC<$jo>?5_>f#~>
+q>UG?pAb.LkPtQ=JcC<$jo>?;_>f#~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHT^An5Nrr<#9JcF[.s20EfkPp&~>
+q>UH$^An3crr<!NJcF[.s"8m&kPp&~>
+q>UG?^An3irr<!TJcF[.s"o<,kPp&~>
+q>UHT^An5Nrr<#9JcF[.s20EfkPp&~>
+q>UH$^An3crr<!NJcF[.s"8m&kPp&~>
+q>UG?^An3irr<!TJcF[.s"o<,kPp&~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTr;Qb*rr;t+JcC<$LAuc~>
+q>UH$r;Qalrr;smJcC<$LAuc~>
+q>UG?r;Qa7rr;s8JcC<$LAuc~>
+q>UHTrVun+s8N(-rr2t,JcC<$L];l~>
+q>UH$rVumms8N'orr2snJcC<$L];l~>
+q>UG?rVum8s8N':rr2s9JcC<$L];l~>
+q>UHTrr3%.s'bg)!+CHYJcCN*J,~>
+q>UH$rr3$ps%`Ik!)A+FJcCN*J,~>
+q>UG?rr3$;ru(_6!#^@fJcCN*J,~>
+s8W"*#QNias'bs-@K$6+@I4$o_ls+?_jLK(_h%jCs*t~>
+s8W!l#QM.1s%`Uo:At4m:@/#\0!G<T/su\=/qO&Xs*t~>
+s8W!7#QK)Lru(k:)?'U8)=7D'1p?rZ1mn=C1kG\^s*t~>
+q>UNVs8W"*s8N(-lMpn%YQ+X?R/d3(JcFO*J,~>
+q>UN&s8W!ls8N'olMpl:YQ+VTR/d1=JcFO*J,~>
+q>UMAs8W!7s8N':lMpl@YQ+VZR/d1CJcFO*J,~>
+q>UHTr;Qk-s8QMYs+13&s*t~>
+q>UH$r;Qjos8PiFs+13&s*t~>
+q>UG?r;Qj:s8Nsfs+13&s*t~>
+q>UHTr;Qh,s8W"*JcC<$L];l~>
+q>UH$r;Qgns8W!lJcC<$L];l~>
+q>UG?r;Qg9s8W!7JcC<$L];l~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcFF's23Ffs20Efk5YJ!mf.e~>
+q>UH$JcFF's";n&s"8m&k5YH6mf.e~>
+q>UG?JcFF's"r=,s"o<,k5YH<mf.e~>
+q>UHTJcFF's23Ffs20Efk5YJ!mf.e~>
+q>UH$JcFF's";n&s"8m&k5YH6mf.e~>
+q>UG?JcFF's"r=,s"o<,k5YH<mf.e~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcG$8s216(s22&?s23:bJ,~>
+q>UH$JcG$8s"9]=s":MTs";b"J,~>
+q>UG?JcG$8s"p,Cs"pqZs"r1(J,~>
+q>UHTJcG$8s216(s22&?s23:bJ,~>
+q>UH$JcG$8s"9]=s":MTs";b"J,~>
+q>UG?JcG$8s"p,Cs"pqZs"r1(J,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJc>fO_o%'*r;Zf7V#UJ4j8XW~>
+q>UH$Jc>fO/hV_Tr;ZdLV#UHIj8XW~>
+q>UG?Jc>fO1c0d`r;ZdRV#UHOj8XW~>
+q>UHTJc>fO_o%'*r;Zf7V#UJ4j8XW~>
+q>UH$Jc>fO/hV_Tr;ZdLV#UHIj8XW~>
+q>UG?Jc>fO1c0d`r;ZdRV#UHOj8XW~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTUAt82h#IDlp](92JcCc1J,~>
+q>UH$UAt6Gh#IC,p](7GJcCc1J,~>
+q>UG?UAt6Mh#IC2p](7MJcCc1J,~>
+q>UHTUAt82h#IDlp](92JcCc1J,~>
+q>UH$UAt6Gh#IC,p](7GJcCc1J,~>
+q>UG?UAt6Mh#IC2p](7MJcCc1J,~>
+q>UNVs8W"*rr<",JcC<$LAuc~>
+q>UN&s8W!lrr<!nJcC<$LAuc~>
+q>UMAs8W!7rr<!9JcC<$LAuc~>
+q>UHTqu6b,s8QMYs+13's*t~>
+q>UH$qu6ans8PiFs+13's*t~>
+q>UG?qu6a9s8Nsfs+13's*t~>
+q>UHTr;Qk-s8QMYs+13&s*t~>
+q>UH$r;Qjos8PiFs+13&s*t~>
+q>UG?r;Qj:s8Nsfs+13&s*t~>
+s8W"*!WV3Ys8QO-rrZ^0@:=`eJcCK)J,~>
+s8W!l!WTM)s8PjorrZ$r:/6B?JcCK)J,~>
+s8W!7!WRHDs8Nu:rrX/=)&\#*JcCK)J,~>
+q>UHTqu6k/s']@9s'^KYJcCN*J,~>
+q>UH$qu6jqs%Z>hs%\.FJcCN*J,~>
+q>UG?qu6j<rtu^Sru$CfJcCN*J,~>
+q>UQWs8QO,rrQX/@K-9,@=eH0s+gW)~>
+q>UQ's8PjnrrPsq:B(7n:4`Frs+gW)~>
+q>UPBs8Nu9rrO)<)?0X9)1hg=s+gW)~>
+q>UHTrr;t+rr;t+JcC<$LAuc~>
+q>UH$rr;smrr;smJcC<$LAuc~>
+q>UG?rr;s8rr;s8JcC<$LAuc~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UNVs8W"*rr2t,JcC<$L&ZZ~>
+q>UN&s8W!lrr2snJcC<$L&ZZ~>
+q>UMAs8W!7rr2s9JcC<$L&ZZ~>
+q>UHTqu6h.s8QO-@=eH0s+^Q(~>
+q>UH$qu6gps8Pjo:4`Frs+^Q(~>
+q>UG?qu6g;s8Nu:)1hg=s+^Q(~>
+q>UHTr;Qk-s8QO,rr?JYs+13*s*t~>
+q>UH$r;Qjos8Pjnrr>fFs+13*s*t~>
+q>UG?r;Qj:s8Nu9rr<pfs+13*s*t~>
+s8W"*!WV3Ys8QO-rr?L,rr?K2s8U!ls8U"2s8Tufs,R,0~>
+s8W!l!WTM)s8Pjorr>gnrr>fts8O_,s8O_Gs8O^&s,R,0~>
+s8W!7!WRHDs8Nu:rr<r9rr<q?s8Oq2s8OqMs8Op,s,R,0~>
+q>UHTqu6_+s'bp,!+E)2s23Xls24U2s20EfNrOV~>
+q>UH$qu6^ms%`Rn!)B`ts"<+,s"='Gs"8m&NrOV~>
+q>UG?qu6^8ru(h9!#`!?s"rO2s"sKMs"o<,NrOV~>
+q>UQWs8QO,rrlj2s'bq9JcC<$LAuc~>
+q>UQ's8Pjnrrl0ts%`ShJcC<$LAuc~>
+q>UPBs8Nu9rrj;?ru(hSJcC<$LAuc~>
+q>UHTrr;t+rVlk+JcC<$L&ZZ~>
+q>UH$rr;smrVljmJcC<$L&ZZ~>
+q>UG?rr;s8rVlj8JcC<$L&ZZ~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJc>fO_o%'*r;Zf7V#UJ4j8XW~>
+q>UH$Jc>fO/hV_Tr;ZdLV#UHIj8XW~>
+q>UG?Jc>fO1c0d`r;ZdRV#UHOj8XW~>
+q>UHTJc>fO_o%'*r;Zf7V#UJ4j8XW~>
+q>UH$Jc>fO/hV_Tr;ZdLV#UHIj8XW~>
+q>UG?Jc>fO1c0d`r;ZdRV#UHOj8XW~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcG$8s216(s22&?s23:bJ,~>
+q>UH$JcG$8s"9]=s":MTs";b"J,~>
+q>UG?JcG$8s"p,Cs"pqZs"r1(J,~>
+q>UHTJcG$8s216(s22&?s23:bJ,~>
+q>UH$JcG$8s"9]=s":MTs";b"J,~>
+q>UG?JcG$8s"p,Cs"pqZs"r1(J,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcFF's23Ffs20Efk5YJ!mf.e~>
+q>UH$JcFF's";n&s"8m&k5YH6mf.e~>
+q>UG?JcFF's"r=,s"o<,k5YH<mf.e~>
+q>UHTJcFF's23Ffs20Efk5YJ!mf.e~>
+q>UH$JcFF's";n&s"8m&k5YH6mf.e~>
+q>UG?JcFF's"r=,s"o<,k5YH<mf.e~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTi;`hpYQ+X?R/d3(JcFO*J,~>
+q>UH$i;`g0YQ+VTR/d1=JcFO*J,~>
+q>UG?i;`g6YQ+VZR/d1CJcFO*J,~>
+q>UHTi;`hpYQ+X?R/d3(JcFO*J,~>
+q>UH$i;`g0YQ+VTR/d1=JcFO*J,~>
+q>UG?i;`g6YQ+VZR/d1CJcFO*J,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTrr;t+r;Qb*JcC<$LAuc~>
+q>UH$rr;smr;QalJcC<$LAuc~>
+q>UG?rr;s8r;Qa7JcC<$LAuc~>
+q>UQWs8QO,rr?L,s8QMYs+13)s*t~>
+q>UQ's8Pjnrr>gns8PiFs+13)s*t~>
+q>UPBs8Nu9rr<r9s8Nsfs+13)s*t~>
+q>UHTqu6h.s8QO-@=eH0s+^Q(~>
+q>UH$qu6gps8Pjo:4`Frs+^Q(~>
+q>UG?qu6g;s8Nu:)1hg=s+^Q(~>
+s8W"*!WV3Ys8QO-rrZ^0s'^KYJcCK)J,~>
+s8W!l!WTM)s8PjorrZ$rs%\.FJcCK)J,~>
+s8W!7!WRHDs8Nu:rrX/=ru$CfJcCK)J,~>
+q>UHTrr2t,rVue(JcC<$L];l~>
+q>UH$rr2snrVudjJcC<$L];l~>
+q>UG?rr2s9rVud5JcC<$L];l~>
+q>UQWs8QO'rr?JYs+13)s*t~>
+q>UQ's8Pjirr>fFs+13)s*t~>
+q>UPBs8Nu4rr<pfs+13)s*t~>
+q>UNVs8W"*rVlk+JcC<$LAuc~>
+q>UN&s8W!lrVljmJcC<$LAuc~>
+q>UMAs8W!7rVlj8JcC<$LAuc~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHT^An5Nrr<#9JcF[.s20EfkPp&~>
+q>UH$^An3crr<!NJcF[.s"8m&kPp&~>
+q>UG?^An3irr<!TJcF[.s"o<,kPp&~>
+q>UHT^An5Nrr<#9JcF[.s20EfkPp&~>
+q>UH$^An3crr<!NJcF[.s"8m&kPp&~>
+q>UG?^An3irr<!TJcF[.s"o<,kPp&~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTpAb01kPtS"JcC<$jo>@u_>f#~>
+q>UH$pAb.FkPtQ7JcC<$jo>?5_>f#~>
+q>UG?pAb.LkPtQ=JcC<$jo>?;_>f#~>
+q>UHTpAb01kPtS"JcC<$jo>@u_>f#~>
+q>UH$pAb.FkPtQ7JcC<$jo>?5_>f#~>
+q>UG?pAb.LkPtQ=JcC<$jo>?;_>f#~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTk5YJ!iW&qqJcDJEs21<*J,~>
+q>UH$k5YH6iW&p1JcDJEs"9c?J,~>
+q>UG?k5YH<iW&p7JcDJEs"p2EJ,~>
+q>UHTk5YJ!iW&qqJcDJEs21<*J,~>
+q>UH$k5YH6iW&p1JcDJEs"9c?J,~>
+q>UG?k5YH<iW&p7JcDJEs"p2EJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTrVlk+rVuk*JcC<$LAuc~>
+q>UH$rVljmrVujlJcC<$LAuc~>
+q>UG?rVlj8rVuj7JcC<$LAuc~>
+q>UHTrr<",rr2t,rr2t,JcC<$L];l~>
+q>UH$rr<!nrr2snrr2snJcC<$L];l~>
+q>UG?rr<!9rr2s9rr2s9JcC<$L];l~>
+q>UWYs8QO-@K-9,@K-9,@=eH0s+gW)~>
+q>UW)s8Pjo:B(7n:B(7n:4`Frs+gW)~>
+q>UVDs8Nu:)?0X9)?0X9)1hg=s+gW)~>
+s8W"*!WV3Yrr?L+s8HGXs+13)s*t~>
+s8W!l!WTM)rr>gms8GcEs+13)s*t~>
+s8W!7!WRHDrr<r8s8Emes+13)s*t~>
+q>UHTrVlk+rr2t,rr2t,JcC<$L];l~>
+q>UH$rVljmrr2snrr2snJcC<$L];l~>
+q>UG?rVlj8rr2s9rr2s9JcC<$L];l~>
+q>UHTrVlk+rr2t,rr2t,JcC<$L];l~>
+q>UH$rVljmrr2snrr2snJcC<$L];l~>
+q>UG?rVlj8rr2s9rr2s9JcC<$L];l~>
+q>UNVs8W"*s8W(,JcC<$LAuc~>
+q>UN&s8W!ls8W'nJcC<$LAuc~>
+q>UMAs8W!7s8W'9JcC<$LAuc~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcGECs20Efi;`hprVuo8Z2]=~>
+q>UH$JcGECs"8m&i;`g0rVumMZ2]=~>
+q>UG?JcGECs"o<,i;`g6rVumSZ2]=~>
+q>UHTJcGECs20Efi;`hprVuo8Z2]=~>
+q>UH$JcGECs"8m&i;`g0rVumMZ2]=~>
+q>UG?JcGECs"o<,i;`g6rVumSZ2]=~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTrVlk+rVuk*JcC<$LAuc~>
+q>UH$rVljmrVujlJcC<$LAuc~>
+q>UG?rVlj8rVuj7JcC<$LAuc~>
+q>UHTrr<",rr2t,rr2t,JcC<$L];l~>
+q>UH$rr<!nrr2snrr2snJcC<$L];l~>
+q>UG?rr<!9rr2s9rr2s9JcC<$L];l~>
+q>UWYs8QO-@J^!(@=eH0s+gW)~>
+q>UW)s8Pjo:AXtj:4`Frs+gW)~>
+q>UVDs8Nu:)>a@5)1hg=s+gW)~>
+s8W"*!WV3Yrr?L*s8QN+s8Tufs1eU6_oi#Z_qtED~>
+s8W!l!WTM)rr>gls8Pims8O^&s1eU60$=4o0&HVY~>
+s8W!7!WRHDrr<r7s8Nt8s8Op,s1eU61s5ju1uA7_~>
+q>UHTrVlk+rVlk+VZ6\6JcELbs23"Zs23^nJ,~>
+q>UH$rVljmrVljmVZ6ZKJcELbs";Ios"<1.J,~>
+q>UG?rVlj8rVlj8VZ6ZQJcELbs"qmus"rU4J,~>
+q>UHTrVlk+rr2t,JcC<$KE$H~>
+q>UH$rVljmrr2snJcC<$KE$H~>
+q>UG?rVlj8rr2s9JcC<$KE$H~>
+q>UNVs8W"*!<;t*JcC<$L];l~>
+q>UN&s8W!l!<;slJcC<$L];l~>
+q>UMAs8W!7!<;s7JcC<$L];l~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcEUes228Es244's21N0J,~>
+q>UH$JcEUes":_Zs"<[<s"9uEJ,~>
+q>UG?JcEUes"q.`s"s*Bs"pDKJ,~>
+q>UHTJcEUes228Es244's21N0J,~>
+q>UH$JcEUes":_Zs"<[<s"9uEJ,~>
+q>UG?JcEUes"q.`s"s*Bs"pDKJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTrVun+JcC<$Jc>`MJ,~>
+q>UH$rVummJcC<$Jc>`MJ,~>
+q>UG?rVum8JcC<$Jc>`MJ,~>
+q>UHTrr2t,JcC<$JcG`LJ,~>
+q>UH$rr2snJcC<$JcG`LJ,~>
+q>UG?rr2s9JcC<$JcG`LJ,~>
+q>UQWs8QMYs+13$s8DtJ~>
+q>UQ's8PiFs+13$s8DtJ~>
+q>UPBs8Nsfs+13$s8DtJ~>
+s8W"*#QNias'bq9@=eH0s+11Ms*t~>
+s8W!l#QM.1s%`Sh:4`Frs+11Ms*t~>
+s8W!7#QK)Lru(hS)1hg=s+11Ms*t~>
+q>U][s8QM9s8QMYs+13$s*t~>
+q>U]+s8Phhs8PiFs+13$s*t~>
+q>U\Fs8NrSs8Nsfs+13$s*t~>
+q>UQWs8QO,rr?JYs+13$s*t~>
+q>UQ's8Pjnrr>fFs+13$s*t~>
+q>UPBs8Nu9rr<pfs+13$s*t~>
+q>UHTrr;t+JcC<$Jc>`MJ,~>
+q>UH$rr;smJcC<$Jc>`MJ,~>
+q>UG?rr;s8JcC<$Jc>`MJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTW;ln8JcDJEs23gqs23LhJ,~>
+q>UH$W;llMJcDJEs"<:1s";t(J,~>
+q>UG?W;llSJcDJEs"r^7s"rC.J,~>
+q>UHTW;ln8JcDJEs23gqs23LhJ,~>
+q>UH$W;llMJcDJEs"<:1s";t(J,~>
+q>UG?W;llSJcDJEs"r^7s"rC.J,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+qYpP(i;`gcjSo3grVuk*kPkNjrVuk*l2U`kr;Qb*l2UZirr2t,kl:Qhrr<",k5PEirr;t+kPkNj
+rr;t+l2UZirVlk+kPtQjrVlk+k5YHirVun+nc++~>
+qYpOji;`gPjSo3TrVujlkPkNWrVujll2U`Xr;Qall2UZVrr2snkl:QUrr<!nk5PEVrr;smkPkNW
+rr;sml2UZVrVljmkPtQWrVljmk5YHVrVummnc++~>
+qYpO5i;`fpjSo2trVuj7kPkN"rVuj7l2U`#r;Qa7l2UZ!rr2s9kl:Purr<!9k5PE!rr;s8kPkN"
+rr;s8l2UZ!rVlj8kPtQ"rVlj8k5YH!rVum8nc++~>
+qu6_+s'ape!+Fpfs'bp,!+Gm,!+G-ls'bp,!+Gm,!+G3n!+Gm,!+Gm,s'b$h"_%H2@K0ctrrZ^0
+s'b$hs'bs-!+Gm,!+G-ls'bs-!+Gm,!+G0m!+Ga(s'b-k!+Gg*!b)+;kl1Wkr;Qb*n,In~>
+qu6^ms%_SR!)DSSs%`Rn!)EOn!)DeYs%`Rn!)EOn!)Dk[!)EOn!)EOns%_\U"]#*t:B+)NrrZ$r
+s%_\Us%`Uo!)EOn!)DeYs%`Uo!)EOn!)DhZ!)ECjs%_eX!)EIl!`&bjkl1WXr;Qaln,In~>
+qu6^8ru'hr!#ahsru(h9!#be9!#b&$ru(h9!#be9!#b,&!#be9!#be9ru'qu"W@@?)?1T9rrX/=
+ru'quru(k:!#be9!#b&$ru(k:!#be9!#b)%!#bY5ru(&#!#b_7!ZD"Ukl1W#r;Qa7n,In~>
+r;Qb*rr2t,jSo3gj8T0hs'bd(!+G0m!b)+;rr2t,rr2t,kPk]os8QO-@HRRl@K6@9rr2t,kPkWm
+s8QNhrrQX/@Jg')@I!jr@K0d9s'bp,!+G0m"(D4<@K-9.@K0d#rr?L*rr?L,rr?Kmrr?L*rr?Kq
+s*t~>
+r;Qalrr2snjSo3Tj8T0Us%`Fj!)DhZ!`&bjrr2snrr2snkPk]\s8Pjo:?MQY:B1>hrr2snkPkWZ
+s8PjUrrPsq:Ab%k:?qi_:B+)hs%`Rn!)DhZ"&Akk:B(7p:B+)Rrr>glrr>gnrr>gZrr>glrr>g^
+s*t~>
+r;Qa7rr2s9jSo2tj8T/uru(\5!#b)%!ZD"Urr2s9rr2s9kPk]'s8Nu:)<Ur$)?9^Srr2s9kPkW%
+s8NturrO)<)>jF6)=%5*)?1TSru(h9!#b)%!u_+V)?0X;)?1T=rr<r7rr<r9rr<r%rr<r7rr<r)
+s*t~>
+r;Qb*rr2t,jSo<js']?srr?L*s8QNjrr?L+s8HHjs8QO-rrZ^0s'b*js'bs-!+Gm,!+G*ks'bs-
+"(D4<@Hmdo@K6@9rVun+lMgrps8QO,s8HHks8QO-rrlj2@K6@9l2Lrrs']@9s'bp,!+G0m$"<jB
+@K6@9s']@+s*t~>
+r;Qalrr2snjSo<Ws%Z>Mrr>gls8PjWrr>gms8GdWs8PjorrZ$rs%_bWs%`Uo!)EOn!)DbXs%`Uo
+"&Akk:?hc\:B1>hrVummlMgr]s8Pjns8GdXs8Pjorrl0t:B1>hl2Lr_s%Z>hs%`Rn!)DhZ#u:Lq
+:B1>hs%Z>Zs*t~>
+r;Qa7rr2s9jSo<"rtu^8rr<r7s8Nu"rr<r8s8Eo"s8Nu:rrX/=ru(#"ru(k:!#be9!#b##ru(k:
+!u_+V)<q/')?9^SrVum8lMgr(s8Nu9s8Eo#s8Nu:rrj;?)?9^Sl2Lr*rtu^Sru(h9!#b)%#oWa\
+)?9^Srtu^Es*t~>
+r;Qb*rr2t,jT#6gs8N(-jo5<hrVlk+jo5<hrr2t,rr2t,lMgimrVue(k5PKks'bp,!+G$i#%@O?
+@K6@9lMpcjs8N(-kl:Qh!WQU-rr?KirrHR.r*emjs'bs-!b)+;rr2t,lMplms8N:3s']@9s'bKu
+J,~>
+r;Qalrr2snjT#6Ts8N'ojo5<UrVljmjo5<Urr2snrr2snlMgiZrVudjk5PKXs%`Rn!)D\V##>1n
+:B1>hlMpcWs8N'okl:QU!WPporr>gVrrGmpr(cPWs%`Uo!`&bjrr2snlMplZs8N9us%Z>hs%`.b
+J,~>
+r;Qa7rr2s9jT#5ts8N':jo5;urVlj8jo5;urr2s9rr2s9lMgi%rVud5k5PK#ru(h9!#ar!"r[FY
+)?9^SlMpc"s8N':kl:Pu!WO&:rr<r!rrF#;r#+f"ru(k:!ZD"Urr2s9lMpl%s8N9@rtu^Sru(D-
+J,~>
+qu6_+s'asf!+Gm,!+G!h!+Gm,!+Fsg!+Gm,!+Gm,!+G3n!+G^'!+G-l!+Gm,"_%H2@K0d#rr?L,
+rrQX/@K-9,@H[Xm@K6@9jSo<js8QO,rr?Kmrr?L,rr?L+rr?Klrr?L,rrlj2s'bq9l2L`lrr3%.
+s'bp,!+GO"!I4Wp~>
+qu6^ms%_VS!)EOn!)DYU!)EOn!)DVT!)EOn!)EOn!)Dk[!)E@i!)DeY!)EOn"]#*t:B+)Rrr>gn
+rrPsq:B(7n:?VWZ:B1>hjSo<Ws8Pjnrr>gZrr>gnrr>gmrr>gYrr>gnrrl0ts%`Shl2L`Yrr3$p
+s%`Rn!)E1d!I4Wp~>
+qu6^8ru'ks!#be9!#anu!#be9!#akt!#be9!#be9!#b,&!#bV4!#b&$!#be9"W@@?)?1T=rr<r9
+rrO)<)?0X9)<_#%)?9^SjSo<"s8Nu9rr<r%rr<r9rr<r8rr<r$rr<r9rrj;?ru(hSl2L`$rr3$;
+ru(h9!#bG/!I4Wp~>
+qYpP(iW&mck5Y?f!<;t*lMpcjs8W(,lMpcjrVlk+kl:WjrVlk+kPtNirr;t+k5PKks8W"*kl1Wk
+rr;t+kl:Wjr;Qb*kl:WjrVlk+kPtNirr;t+o`"u;/H:5~>
+qYpOjiW&mPk5Y?S!<;sllMpcWs8W'nlMpcWrVljmkl:WWrVljmkPtNVrr;smk5PKXs8W!lkl1WX
+rr;smkl:WWr;Qalkl:WWrVljmkPtNVrr;smo`"u;/H:5~>
+qYpO5iW&lpk5Y>s!<;s7lMpc"s8W'9lMpc"rVlj8kl:W"rVlj8kPtN!rr;s8k5PK#s8W!7kl1W#
+rr;s8kl:W"r;Qa7kl:W"rVlj8kPtN!rr;s8o`"u;/H:5~>
+JcC<$JcGEC"*Q6Ns*t~>
+JcC<$JcGEC"*Q6Ns*t~>
+JcC<$JcGEC"*Q6Ns*t~>
+irB%rbQ%U[JcEIas21*$"El?Os8RT~>
+irB$2bQ%SpJcEIas"9Q9"El?Os8RT~>
+irB$8bQ%T!JcEIas"ou?"El?Os8RT~>
+q>UG'li7"&q#:>&i;Wdcp](92m/I&oiVrmdi;Wdci;Wdci;WdciVrmdr;Zf7kPkNji;Wdci;Wdc
+o`#)6/DU8Ms*t~>
+q>UFili6u;q#:=hi;WdPp](7Gm/I&\iVrmQi;WdPi;WdPi;WdPiVrmQr;ZdLkPkNWi;WdPi;WdP
+o`#)6/DU8Ms*t~>
+q>UF4li6uAq#:=3i;Wcpp](7Mm/I&'iVrlqi;Wcpi;Wcpi;WcpiVrlqr;ZdRkPkN"i;Wcpi;Wcp
+o`#)6/DU8Ms*t~>
+q>UG'i;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;Wdcp&>53/):/L/H:5~>
+q>UFii;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPp&>53/):/L/H:5~>
+q>UF4i;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;Wcpp&>53/):/L/H:5~>
+q>UG'i;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;WdcpAYA5/):/G/DU8U~>
+q>UFii;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPpAYA5/):/G/DU8U~>
+q>UF4i;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;WcppAYA5/):/G/DU8U~>
+q>UG'i;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;Wdcp\tM7/):/G/):1)
+J,~>
+q>UFii;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPp\tM7/):/G/):1)
+J,~>
+q>UF4i;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;Wcpp\tM7/):/G/):1)
+J,~>
+q>UG'i;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;Wdcq#:Y3/):/G/):/G
+s*t~>
+q>UFii;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPq#:Y3/):/G/):/G
+s*t~>
+q>UF4i;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;Wcpq#:Y3/):/G/):/G
+s*t~>
+q>UHTJcC<$L&VL$/):/G/):/G/,t,~>
+q>UH$JcC<$L&VL$/):/G/):/G/,t,~>
+q>UG?JcC<$L&VL$/):/G/):/G/,t,~>
+q>UHTJcC<$LAqX&/):/G/):/G/):/T~>
+q>UH$JcC<$LAqX&/):/G/):/G/):/T~>
+q>UG?JcC<$LAqX&/):/G/):/G/):/T~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
--- /dev/null
+++ axiom-20170501/bitcoin5.eps
@@ -0,0 +1,1460 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: bitcoin5.eps
+%%CreationDate: Tue Jan 20 00:43:54 2015
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 415 437
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 421.93686614173231 translate
+399.94015748031495 -421.93686614173231 scale
+% Image geometry
+400 422 8
+% Transformation matrix
+[ 400 0 0 422 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 400 string def
+/gstr 400 string def
+/bstr 400 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:        54129 ASCII Bytes
+colorimage
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rr2kJb4NcJb8^/!qlKkJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!rVZYJaJ$UJaN4!!q5aYJ,~>
+!VPi2m"+MSm.K]GmIbu~>
+!VPi2m"+MSm.K]GmIbu~>
+!VPi2m"+MSm.K]GmIbu~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+!:PL)jQcp2hV-]^f`p0`g=k6;kCMrklN$C(~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo>XKDh>dYjQQI*%Hum,^k?WGEGU<Dg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo>XKDh>dYjQQI*%Hum,^k?WHEGU<Dg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<AFQjP%D&DfTi8KYZ=&kkaQRkiCI5Jo,LIDh>dYjQQI*%Hum,^k?WGE,:3Cg>qIml42=bda6=e
+dEp:fd*L1`eUd"Wl@8~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I>jV`NdY]5f&QVk%HH$0D17P:RZ)W0SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I?'eeNdY]5f&QVk%HH$0D17P:RuD`1SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q<8@KespQ*O.Dc#I;GG)j8/!Lj49`9I>jS_N.#K3f&QVk%HH$0D17M8RYuQ/SCZ_qkmk_Ie^iL0
+gt^`@gY1Aq`e!BGl$r~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDKXNKJ[bH6hLU"B/)%G.:tNipRahoMjXGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS4m"Ndp0akQ9+Bhrs81h2!X7:;?#Vk(s"^!f*u@J`u+WJ,~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDKXNTS]bH?nMU"B/)%G.:tO06^dhoMjXGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS=s#ic(=YkQ.]=kNE5mE%NY]e`c5LEW14aNP'i+iTPd~>
+q</:>TQcBsbMhC%XGqFsfD=\?f:dDJXNBAWb,gVIU"B/)%G.:tNigI]hSlLSGG*Q_kl8^,f!1ph
+lMg2Sh9XotaS=s#c"X`]kQ-gHkNE5\?nEsfiTTL?GlDshQcamCiTPd~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6R&icG[5^K#7BI%Dmdg\AZ\Ff#kn?S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$eh&Mfp?)M#0%oIO&BH?,`*P(FkMIjcN.3E29AtHbj6(p~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6R)jcG[5^K#7BI%Dmdg\AZ\Ff#kn?S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$Z7R`dp?)IL1$@^1Q<q>4/MQAN_C]bdE@ibtJ`l%UJ,~>
+q<&4(KU]HhcIgdn`4)4h_YWF)_Le8e`6HrecG[5^K#7BI%Dmdg\AQSBe]Pe>S:nbSk75S]l_eKX
+g\Ud;b/WktanY$$M_/K%p?)HpOltm<AV.mm/r&QPS1T/DBe:p?J`l%UJ,~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHQSb/M<4SXfQ=%A03)_o9aCcH4&C]q(djjpoJ]qVI<J
+V!7X&_;tI@aS=m"Sh2O:g#`h*k2si>]]S'&RHEYpJM!:@k2YTS~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHQSb/M<4SXfQ=%A03)_o9aCcH4&C]q(djjpoJ]qVI<J
+V!7X&_;tI@aS=m"Ah>U8g?&CqroOW]0&>[./]Qr8g.j6>J`c"TJ,~>
+q;r-YS\;qZaNi)P`5B9ZTDI[ZS=R@3`QHNQb/M<4SXfQ=%A03)_o9aCc,mrB]q(djjpoJ]qVI<J
+V!7X&_;tI@aSFs$gG^]9akGkWi;VjIG$="iTe5*_k/T80gO\MIk(!~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[Ai[o:u/(EY@N*=`lja_^=a\1CLjd%JM9?-&RWdLp#/ullB/V<`X#1G39jP2>M
+ro=1@/L9;+jQ,BP~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[Abq523:ZUTq>CY_pgJ+[.UNbe[gNG/#GMD3>G+XgI0$C.E/Z&4&#-0B2jMNRc
+ro=.'/Ur?4j5b^~>
+q;`!OYf+W)bKS2RaiME)QhobPPH`!Hb08,Tbf\#FYa#"F%@FE>aND]Nbfe/M`Nbf*j:92Xq=i!X
+Dn+?3g\LZn`qe[AX=]hnMr`sD:n6V-__T<oK:q;da^6VOP2kWY?a"5s=O`-Y/\Uo>#)$+=jI\$T
+ro=-^/Z=6]j5b^~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[B^+R::/Y_=efe$@fVCp6V`[fg)N@qH\GV78%Te.Y&J1WCSRkDVRj9CPqc/dY3
+P5XGCS1<-AjQ,BP~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[BO"]IK/]d#6].Js%DD:/4R8;o)/2+r^9ebPeAM%l69eA$2Ft__Ij9A=4iT.m.
+_>WEq>?ug@j5b^~>
+q;`!P]?&4@cd:%bc-48@R/5kQQFt>acd:+gd*KtY]U&ET%@OlNbg+Vada?@bah4%:j:92Xq>'Nd
+Cko=Dp%eF3`qe[B@q+M./_oFJSh7A-3J?JSA<>m!065=D15+`D2_C#p1+d:P3c!dOj9O$fJ)o[_
+/_9p^!o,YqJ`PkPJ,~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_q;MQs=5r6k8cI]ia=LOHXlA?Y.bWN,OlGBV/<Sq],h_1q/]H`*/@kT9#E^RBio8ZC
+Oo=8@TIJEBioK*L~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_qVh_7/<Jl;/;jGd*MG#g/^WM:QVZVS/AL3(_(<@\>'JucQnR7S_(F@:iX"=C0$rV;
+_(<A"iW3RpJ`>_LJ,~>
+q;MOJ^<P!OrRD%ud*9:qqVhsQ^s19Ve_&O)eBuOVRel"QT"iRueCWF.f@83n^Rh4[!QELdq#o30
+Fck2Qq#Sp_qVh^u/[s`C/?f'4*J#b;9A\[f@[#fB/Crh?Sh/CF1nN^dCj=puR98GEiX!gd@G^#'
+Sh/CjiW@glP_%iSid_~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8Etcn$_jFY#,Wro!p:/8P7D(;hWSgaoPciSQ2JiL3g+iPR+siRocqqr%Y:E%/a)
+i<%[`OT",>O=/\3iT/sJ~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8EtYq.JLD(I<oro!o//=uk"(7%bT`%B<oiQ<^diEDZ.iKmg.iP7%tqr%Y*/6pj,
+i<$eG^]!*l9P/k7j5GL~>
+q;DdX][50[gYUfAf@A6\U\`pYTY/\&g"kNBh:^?+]V,,[%A^\bf%T!<hqm)<d_2KPi=<fRq>'U#
+Xc-tnlhUA'`;8F%N@\1S>qBaKiSi6</A_>E(1NHcTh=,!iN=`\fegD$iFA)1iLO*/qr%Xj/VN']
+i<#Q$e,J;-d5$r;iT&mI~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_tr6kR4A3/,+U96hqu7$9e<d2hngkof.<3EhqBWBhjIO&hn^enhq'EkqqhI--eA7R
+!nSugrnde&/9la'j55@~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_tr7<@ns"rUl?q.hqsnS9J4fOhj$so].CbThngqXhcZ0#hj.'qhnC\nr8.S2.qSY9
+!kp5$rnddY/?49Yj55@~>
+q;2XeYL2"Xhr<YQh:U,YZMNGfXK^1,h;RGUiSE2:YcR]Y%C<:eg>:iMjPo%Md]p-Rh[[QOq"E(A
+e\6'F^\%<K_u&=>f/@iKTW!&ca5>d"/21ephqqk)hj5nGhqsqTdFU4bhqqn+hqsr*hYc74a=`kX
+hZB<!eGe>,M_)o"hrEUE~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<mh(4$Rh][.ldaTgshet!dhngkohf^B]erME"hjIO&hn^enhq'Ekr8/()/8Mo+
+[F=$b/:Y[ZV(<t>J`#MFJ,~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<maXjarh]XLShn(GFfdonUhj$sofdgX\csn]]hcZ0#hj.'qhnC\nr8/$S/<[NN
+[G9ZR/>:)$N%Ajthr<OD~>
+q;2A&WlNlOir8!Ai7uAQd/)W/cDek?iT0.`jPeq9WQt@t%FD/sgu7>Vk2bLWaK*[_h[[NNptW@*
+p$/GeL",nE_u&<mXXq`rh]g/oP2D`[c+bi_hqqk)ho.1-e\O+]hUaTohqqn+hqsr*hYc7AF"F?$
+[Cb>RS1M+g]l>TeJ`#JEJ,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$i^b!D%h''E]WGY_lh:PFmh8:\kh:Qg".k.XWh3_3uh7tGgh:4$dr7q@gr$qiV
+h:;HS!\'5_J_f>AJ,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$iPqLehh'&%7`[d#(h7tOlh3q'oh8i5>.o"+@h,oirh3D1"h7YDir7q@<r@7t$
+eD7h:.fi>AJ_f;@J,~>
+q:uM2_QqMGjQG^eiR"pKf)"23f"JE:iT01bjl+Rm^"3&9%G&D%cf!mIkN(RJZbk:gh%%9Jke+t*
+q"WX*A=V`,_>E$hBm'@0+`U)d/?I[`UF`>!Eff,5[4j*]G1PL"1Uc,qBp%6-RU=kJh#MHn.g&i-
+h4"9m!F`Khh;R1?~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]7cJe'N[$^>+5~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]7fId"0udgjf~>
+q:lG1f>Y/@g"tZ?bI5CAf)"/2f%7[Eak5J,fZLV:f@KfR%G'.M[)gkThUflW`Ri\9g^_$-^okK!
+cHj_7Kp99\]]@iLg!J3!gqMQo~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+q:cA3f@e]h]>24o^X_#hg%sG4g"4p-\$ir^[^Xf?f@g#T%GB@de\AZ.]t(o.g"4oPgB#=(rjrKJ
+\[oAa]Xtec`IZd8gOK~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+pt>i&f%AdVhZMZdf%BcO"5)2Wh#6+4gt:31pt>i&f%AdVhZMZdf%?_N!7q/!r6kYqrR1btJ_H^L
+J,~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+p=fQ!rRV#$o\0>trRV#$o\0>trRV#$J_G\/Y1eC~>
+J_>V-J_BSHJ,~>
+J_>V-J_BSHJ,~>
+J_>V-J_BSHJ,~>
+J_5P+J_9MFJ,~>
+J_5P+J_9MFJ,~>
+J_5P+J_9MFJ,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+S,`E'qu?]5o)JX)oDej-lMgk$r;Qc6nG`L*p&G$.iW&eloDej-JcG]KJ,~>
+S,`D"qu?\0o)JW$oDei(lMgitr;Qb1nG`K%p&G#)iW&dgoDei(JcG]KJ,~>
+S,`CJqu?[Xo)JVLoDehPlMgiGr;QaYnG`JMp&G"QiW&d:oDehPJcG]KJ,~>
+S,WK*rVll7oD\g-qu6Z5r;Qc6g]%8jr;Qc6nG`L*oD\g-iVrnpr;Qc6ir9"qNrOV~>
+S,WJ%rVlk2oD\f(qu6Y0r;Qb1g]%7er;Qb1nG`K%oD\f(iVrmkr;Qb1ir9!lNrOV~>
+S,WIMrVljZoD\ePqu6XXr;QaYg]%78r;QaYnG`JMoD\ePiVrm>r;QaYir9!?NrOV~>
+S,WK*r;Qc6o`"p.qu6Z5ec5Zdrr<#8nG`L*oD\g-iVrnpr;Qc6ir9"qNrOV~>
+S,WJ%r;Qb1o`"o)qu6Y0ec5Y_rr<"3nG`K%oD\f(iVrmkr;Qb1ir9!lNrOV~>
+S,WIMr;QaYo`"nQqu6XXec5Y2rr<![nG`JMoD\ePiVrm>r;QaYir9!?NrOV~>
+S,WK*rVll7rVul6r;ZZ2rr2u8q#C9/rVul6r;Qf7s8Bh-rs$@?_Z.LQ_Z'T5_YsN5_?BnUs8Tt7
+rrBq5rrBq5s89b5rrU(;s8Kn.rrBq6rrBq8s89b4s8Kn5rrL":rPJR6qni=3r5+p&J,~>
+S,WJ%rVlk2rVuk1r;ZY-rr2t3q#C8*rVuk1r;Qe2s8?X(rs!0:B`DcGB`A&0B`7u0BE\?Ks8Qd2
+rr?a0rr?a0s86R0rrQm6s8H^)rr?a1rr?a3s86R/s8H^0rrHg5rFl31qe5s.r+MQ!J,~>
+S,WIMrVljZrVujYr;ZXUrr2s[q#C7RrVujYr;QdZs8>%PrrtRb49%DB49#9X48o3X3s>RFs8P1Z
+rr>.Xrr>.Xs84tXrrP:^s8G+Qrr>.Yrr>.[s84tWs8G+XrrG4]rB(#Yq`FcVr&^AIJ,~>
+S,`E'qYpQ4qYpQ4qu6Z5q>UH3r;Qc6r;Qc6r;Zf6rVll7pAYH9s2+fQs2+g9_YjE9_Z0YQrVuo7
+s8N)9rVll7qu6Z5pAY-0rr<#8rr2u8pAb$,rr2u8r;Qc6r;Qc6r;Zf6rVll7rVll7qu6Z5r;Qc6
+S,\!~>
+S,`D"qYpP/qYpP/qu6Y0q>UG.r;Qb1r;Qb1r;Ze1rVlk2pAYG4s(MFGs(MH4B`.l4B`J*GrVun2
+s8N(4rVlk2qu6Y0pAY,+rr<"3rr2t3pAb#'rr2t3r;Qb1r;Qb1r;Ze1rVlk2rVlk2qu6Y0r;Qb1
+S,\!~>
+S,`CJqYpOWqYpOWqu6XXq>UFVr;QaYr;QaYr;ZdYrVljZpAYF\s#^6Bs#^8\48f*\49,=BrVumZ
+s8N'\rVljZqu6XXpAY+Srr<![rr2s[pAb"Orr2s[r;QaYr;QaYr;ZdYrVljZrVljZqu6XXr;QaY
+S,\!~>
+S,WK*rVll7qu6Z5qYpQ4qu6Z5q>UH3r;Qc6r;Qc6r;Qc6r;Qc6pAYH9s8Tt9s2+g9_YjE9_Z0YQ
+r;Ql9s8Tt7rrBq5rrBq0rrBq8rrBq7rrBq0rrBq3rrBq6rrBq6rrBq6rrBq6rrBq7rrBq5rrBp$
+s*t~>
+S,WJ%rVlk2qu6Y0qYpP/qu6Y0q>UG.r;Qb1r;Qb1r;Qb1r;Qb1pAYG4s8Qd4s(MH4B`.l4B`J*G
+r;Qk4s8Qd2rr?a0rr?a+rr?a3rr?a2rr?a+rr?a.rr?a1rr?a1rr?a1rr?a1rr?a2rr?a0rr?_t
+s*t~>
+S,WIMrVljZqu6XXqYpOWqu6XXq>UFVr;QaYr;QaYr;QaYr;QaYpAYF\s8P1\s#^8\48f*\49,=B
+r;Qj\s8P1Zrr>.Xrr>.Srr>.[rr>.Zrr>.Srr>.Vrr>.Yrr>.Yrr>.Yrr>.Yrr>.Zrr>.Xrr>-G
+s*t~>
+S,WK*r;Qc6r;Qc6qYpQ4qu6Z5q>UH3r;Qc6r;Qc6r;Qc6r;Qc6pAYH9s8Tt9s2+g9_YjE9_Z0YQ
+r;Ql9s8Tt7rrBq5rrBq5s80\4rrBq+rrBq3rrBq6rrBq6rrBq6rrBq6rrBq7rrBq4s89a&s*t~>
+S,WJ%r;Qb1r;Qb1qYpP/qu6Y0q>UG.r;Qb1r;Qb1r;Qb1r;Qb1pAYG4s8Qd4s(MH4B`.l4B`J*G
+r;Qk4s8Qd2rr?a0rr?a0s8-L/rr?a&rr?a.rr?a1rr?a1rr?a1rr?a1rr?a2rr?a/s86Q!s*t~>
+S,WIMr;QaYr;QaYqYpOWqu6XXq>UFVr;QaYr;QaYr;QaYr;QaYpAYF\s8P1\s#^8\48f*\49,=B
+r;Qj\s8P1Zrr>.Xrr>.Xs8+nWrr>.Nrr>.Vrr>.Yrr>.Yrr>.Yrr>.Yrr>.Zrr>.Ws84sIs*t~>
+S,WK*r;Qc6r;Qc6qYpQ4qu6Z5q>UH3r;Qc6r;Qc6r;Qc6r;Qc6pAY-0r;Ql9s8Tt6rr^.<s2+^6
+"2b*<_YsK7_Ya?5_YjE6_YjE6_Z'Q8_X[X+_YO33_YjE6_YjE6_YjE6_YjE6_YsK7_Y*p/_OLRU~>
+S,WJ%r;Qb1r;Qb1qYpP/qu6Y0q>UG.r;Qb1r;Qb1r;Qb1r;Qb1pAY,+r;Qk4s8Qd1rrZs7s(M?1
+").`7B`7r2B`%f0B`.l1B`.l1B`A#3B^u*&B_hZ.B`.l1B`.l1B`.l1B`.l1B`7r2B_DB*BUf$P~>
+S,WIMr;QaYr;QaYqYpOWqu6XXq>UFVr;QaYr;QaYr;QaYr;QaYpAY+Sr;Qj\s8P1YrrY@_s#^/Y
+"$?P_48o0Z48]$X48f*Y48f*Y49#6[47W=N48JmV48f*Y48f*Y48f*Y48f*Y48o0Z48&UR4.H8#~>
+S,WK*rVll7qu6Z5qYpQ4rr3);s8Tt6rr^.<s2+^6!5e[6!5e[6!5e[6!5eI0!5e[6"2b*<_YjE9
+_Z0YQrVuo7s8N)9rVll7qu6Z5r;Qc6rVuo7rr2u8nc&U+q>UH3r;Qc6r;Qc6r;Qc6r;Qc6rVll7
+rr3);s8Tt6rrBp*s*t~>
+S,WJ%rVlk2qu6Y0qYpP/rr3(6s8Qd1rrZs7s(M?1!,2<1!,2<1!,2<1!,2*+!,2<1").`7B`.l4
+B`J*GrVun2s8N(4rVlk2qu6Y0r;Qb1rVun2rr2t3nc&T&q>UG.r;Qb1r;Qb1r;Qb1r;Qb1rVlk2
+rr3(6s8Qd1rr?`%s*t~>
+S,WIMrVljZqu6XXqYpOWrr3'^s8P1YrrY@_s#^/Y!'C,Y!'C,Y!'C,Y!'BoS!'C,Y"$?P_48f*\
+49,=BrVumZs8N'\rVljZqu6XXr;QaYrVumZrr2s[nc&SNq>UFVr;QaYr;QaYr;QaYr;QaYrVljZ
+rr3'^s8P1Yrr>-Ms*t~>
+S,`E'r;Z]3qu?Z4rVuf4rVuf4rVuf4rr2u8r;Qc6pAY-0r;Qc6rr;o5rVui5!WU%9s8Be8s2+d8
+r5/F4rPAU8_Z'Q8_X[X+_YF0/_YsN4_Z'Q8_YjE6_YjH5_YsN4_OCLT~>
+S,`D"r;Z\.qu?Y/rVue/rVue/rVue/rr2t3r;Qb1pAY,+r;Qb1rr;n0rVuh0!WQj4s8?U3s(ME3
+r+Q'/rFc63B`A#3B^u*&B__W*B`7u/B`A#3B`.l1B`.o0B`7u/BU\sO~>
+S,`CJr;Z[Vqu?XWrVudWrVudWrVudWrr2s[r;QaYpAY+Sr;QaYrr;mXrVugX!WP7\s8>"[s#^5[
+r&alWrAt&[49#6[47W=N48AjR48o3W49#6[48f*Y48f-X48o3W4.?2"~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+JcC<$JcG9?J,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+q>UHTJcC<$q>^EoZi:$CrW(RMJ,~>
+q>UH$JcC<$q>^EoZi:"XrW(RMJ,~>
+q>UG?JcC<$q>^EoZi:"^rW(RMJ,~>
+q>UHTJcC<$q>^Eo[/^%(fDg@~>
+q>UH$JcC<$q>^Eo[/^%(fDg@~>
+q>UG?JcC<$q>^Eo[/^%(fDg@~>
+q>UHTJcC<$q>^Eo[K$+(fDg@~>
+q>UH$JcC<$q>^Eo[K$+(fDg@~>
+q>UG?JcC<$q>^Eo[K$+(fDg@~>
+q>UHTJcC<$q>^Eo[f?4)f)L7~>
+q>UH$JcC<$q>^Eo[f?4)f)L7~>
+q>UG?JcC<$q>^Eo[f?4)f)L7~>
+q>UHTJcC<$q>^Eo\GuF+eGk%~>
+q>UH$JcC<$q>^Eo\GuF+eGk%~>
+q>UG?JcC<$q>^Eo\GuF+eGk%~>
+q>UHTJcC<$q>^Eo]DqoKqZ,+FJ,~>
+q>UH$JcC<$q>^Eo]Dqm`qZ,+FJ,~>
+q>UG?JcC<$q>^Eo]DqmfqZ,+FJ,~>
+q>UHTJcC<$q>^Eo]DhlKqZ,(EJ,~>
+q>UH$JcC<$q>^Eo]Dhj`qZ,(EJ,~>
+q>UG?JcC<$q>^Eo]DhjfqZ,(EJ,~>
+q>UHTJcC<$q>^Eo]`7j/d/SU~>
+q>UH$JcC<$q>^Eo]`7j/d/SU~>
+q>UG?JcC<$q>^Eo]`7j/d/SU~>
+q>UHTli7"&bQ%U[JcEjlrW)cos22nWqZ+tBJ,~>
+q>UH$li6u;bQ%SpJcEjlrW)cos";@lqZ+tBJ,~>
+q>UG?li6uAbQ%T!JcEjlrW)cos"qdrqZ+tBJ,~>
+q>UHTli7"&bQ%U[JcEjlrW)cos22tYq>eh@J,~>
+q>UH$li6u;bQ%SpJcEjlrW)cos";Fnq>eh@J,~>
+q>UG?li6uAbQ%T!JcEjlrW)cos"qjtq>eh@J,~>
+q>UHTJcC<$q>^Eo_#O93bl<1~>
+q>UH$JcC<$q>^Eo_#O93bl<1~>
+q>UG?JcC<$q>^Eo_#O93bl<1~>
+q>UHTJcC<$q>^Eo_uKbSqZ+h>J,~>
+q>UH$JcC<$q>^Eo_uK`hqZ+h>J,~>
+q>UG?JcC<$q>^Eo_uK`nqZ+h>J,~>
+q>UHTJcC<$q>^Eo_uKT6ao?k~>
+q>UH$JcC<$q>^Eo_uKT6ao?k~>
+q>UG?JcC<$q>^Eo_uKT6ao?k~>
+q>UHTJcC<$q>^Eo`;f]7aT$b~>
+q>UH$JcC<$q>^Eo`;f]7aT$b~>
+q>UG?JcC<$q>^Eo`;f]7aT$b~>
+q>UHTJcC<$q>^Eo`W,f8a8^Y~>
+q>UH$JcC<$q>^Eo`W,f8a8^Y~>
+q>UG?JcC<$q>^Eo`W,f8a8^Y~>
+q>UHTJcC<$q>^Eoa8c#:`W(G~>
+q>UH$JcC<$q>^Eoa8c#:`W(G~>
+q>UG?JcC<$q>^Eoa8c#:`W(G~>
+q>UHTrVun+s8W"*JcCK)rW(%>qZ+S7J,~>
+q>UH$rVumms8W!lJcCK)rW(%>qZ+S7J,~>
+q>UG?rVum8s8W!7JcCK)rW(%>qZ+S7J,~>
+q>UHTrr2t,q>UG'JcCK)rW(.A!5nX5_uG5~>
+q>UH$rr2snq>UFiJcCK)rW(.A!&"*J_uG5~>
+q>UG?rr2s9q>UF4JcCK)rW(.A!&XNP_uG5~>
+q>UQWs8QO'rr?JYs+ULP!6bE>!5\\c~>
+q>UQ's8Pjirr>fFs+ULP!6bE>!5\\c~>
+q>UPBs8Nu4rr<pfs+ULP!6bE>!5\\c~>
+s8W"*#QNias'bq9@K$6+@C6(7_h%j;s8E#Hs8U"8s8)f^s8U!hs*t~>
+s8W!l#QM.1s%`Sh:At4m::1'$/qO&Ps8E#Hs8O_Ms8)f^s8O_(s*t~>
+s8W!7#QK)Lru(hS)?'U8)79GD1kG\Vs8E#Hs8OqSs8)f^s8Oq.s*t~>
+q>U][s8QM9s8QO*rr?K8s8Tufs4%)J!7LoI_uKc6!9sO`_q>!>~>
+q>U]+s8Phhs8Pjlrr>g%s8O^&s4%)J!7LoI0)ttK!9sO`0%g2S~>
+q>U\Fs8NrSs8Nu7rr<qEs8Op,s4%)J!7LoI2#mUQ!9sO`1t_hY~>
+q>UQWs8QO,rrQX/@K-9,@=eH5s8E#Es8)f0s*t~>
+q>UQ's8PjnrrPsq:B(7n:4`G"s8E#Es8)f0s*t~>
+q>UPBs8Nu9rrO)<)?0X9)1hgBs8E#Es8)f0s*t~>
+q>UHTrr;t+rr;t+JcCH(rW(=FqZ+;/J,~>
+q>UH$rr;smrr;smJcCH(rW(=FqZ+;/J,~>
+q>UG?rr;s8rr;s8JcCH(rW(=FqZ+;/J,~>
+q>UHTJcC<$q>^Eoe,KEcqZ+5-J,~>
+q>UH$JcC<$q>^Eoe,KD#qZ+5-J,~>
+q>UG?JcC<$q>^Eoe,KD)qZ+5-J,~>
+q>UHTJcC<$q>^Eoe,T:F\c70~>
+q>UH$JcC<$q>^Eoe,T:F\c70~>
+q>UG?JcC<$q>^Eoe,T:F\c70~>
+q>UHTJcC<$q>^EoeGoCG\Gq'~>
+q>UH$JcC<$q>^EoeGoCG\Gq'~>
+q>UG?JcC<$q>^EoeGoCG\Gq'~>
+q>UHTJcC<$q>^Eof)PUI[f:j~>
+q>UH$JcC<$q>^Eof)PUI[f:j~>
+q>UG?JcC<$q>^Eof)PUI[f:j~>
+q>UHTJcC<$q>^EofDk^J[Jta~>
+q>UH$JcC<$q>^EofDk^J[Jta~>
+q>UG?JcC<$q>^EofDk^J[Jta~>
+q>UHTJcC<$q>^Eog].;kq>do&J,~>
+q>UH$JcC<$q>^Eog].:+q>do&J,~>
+q>UG?JcC<$q>^Eog].:1q>do&J,~>
+q>UHTJcC<$q>^Eog]%8kqZ*r%J,~>
+q>UH$JcC<$q>^Eog]%7+qZ*r%J,~>
+q>UG?JcC<$q>^Eog]%71qZ*r%J,~>
+q>UHTJcC<$q>^Eog].-NZ2]=~>
+q>UH$JcC<$q>^Eog].-NZ2]=~>
+q>UG?JcC<$q>^Eog].-NZ2]=~>
+q>UHTJcC<$q>^Eoh>d?PYQ'+~>
+q>UH$JcC<$q>^Eoh>d?PYQ'+~>
+q>UG?JcC<$q>^Eoh>d?PYQ'+~>
+q>UHTJcC<$q>^EohZ*HQY5a"~>
+q>UH$JcC<$q>^EohZ*HQY5a"~>
+q>UG?JcC<$q>^EohZ*HQY5a"~>
+q>UHTJcC<$q>^EohuEQRXoEn~>
+q>UH$JcC<$q>^EohuEQRXoEn~>
+q>UG?JcC<$q>^EohuEQRXoEn~>
+q>UHTJcC<$q>^Eoir9"rqZ*\sJ,~>
+q>UH$JcC<$q>^Eoir9!2qZ*\sJ,~>
+q>UG?JcC<$q>^Eoir9!8qZ*\sJ,~>
+q>UHTJcEUes22GJrW)uus244's24g8qZ*YrJ,~>
+q>UH$JcEUes":n_rW)uus"<[<s"=9MqZ*YrJ,~>
+q>UG?JcEUes"q=erW)uus"s*Bs"s]SqZ*YrJ,~>
+q>UHTJcEUes22GJrW)uus244's24m:q>dMpJ,~>
+q>UH$JcEUes":n_rW)uus"<[<s"=?Oq>dMpJ,~>
+q>UG?JcEUes"q=erW)uus"s*Bs"scUq>dMpJ,~>
+q>UHTJcC<$q>^Eojo>2XVuM8~>
+q>UH$JcC<$q>^Eojo>2XVuM8~>
+q>UG?JcC<$q>^Eojo>2XVuM8~>
+q>UHTJcC<$q>^Eok5Y;YVZ2/~>
+q>UH$JcC<$q>^Eok5Y;YVZ2/~>
+q>UG?JcC<$q>^Eok5Y;YVZ2/~>
+q>UHTJcC<$q>^Eokl:M[V#Pr~>
+q>UH$JcC<$q>^Eokl:M[V#Pr~>
+q>UG?JcC<$q>^Eokl:M[V#Pr~>
+q>UHTJcC<$q>^EolMgk%qZ*DkJ,~>
+q>UH$JcC<$q>^EolMgi:qZ*DkJ,~>
+q>UG?JcC<$q>^EolMgi@qZ*DkJ,~>
+q>UHTJcC<$q>^EolMp_]UAo`~>
+q>UH$JcC<$q>^EolMp_]UAo`~>
+q>UG?JcC<$q>^EolMp_]UAo`~>
+q>UHTJcC<$q>^Eom/Qq_T`9N~>
+q>UH$JcC<$q>^Eom/Qq_T`9N~>
+q>UG?JcC<$q>^Eom/Qq_T`9N~>
+q>UHTJcC<$q>^EomJm%`TDsE~>
+q>UH$JcC<$q>^EomJm%`TDsE~>
+q>UG?JcC<$q>^EomJm%`TDsE~>
+q>UHTJcC<$q>^Eon,N4aT)X<~>
+q>UH$JcC<$q>^Eon,N4aT)X<~>
+q>UG?JcC<$q>^Eon,N4aT)X<~>
+q>UHTJcC<$q>^Eoo)Ja-qZ*/dJ,~>
+q>UH$JcC<$q>^Eoo)J_BqZ*/dJ,~>
+q>UG?JcC<$q>^Eoo)J_HqZ*/dJ,~>
+q>UHTJcC<$q>^Eoo)A^-qZ*,cJ,~>
+q>UH$JcC<$q>^Eoo)A\BqZ*,cJ,~>
+q>UG?JcC<$q>^Eoo)A\HqZ*,cJ,~>
+q>UHTJcC<$q>^EooDe[fRK%d~>
+q>UH$JcC<$q>^EooDe[fRK%d~>
+q>UG?JcC<$q>^EooDe[fRK%d~>
+q>UHTJcC<$q>^Eoo`+dgR/_[~>
+q>UH$JcC<$q>^Eoo`+dgR/_[~>
+q>UG?JcC<$q>^Eoo`+dgR/_[~>
+q>UHTJcC<$q>^Eop&FmhQiDR~>
+q>UH$JcC<$q>^Eop&FmhQiDR~>
+q>UG?JcC<$q>^Eop&FmhQiDR~>
+q>UHTJcC<$q>^Eop](*jQ2c@~>
+q>UH$JcC<$q>^Eop](*jQ2c@~>
+q>UG?JcC<$q>^Eop](*jQ2c@~>
+q>UHTJcC<$q>^EoqZ$T5qZ)l\J,~>
+q>UH$JcC<$q>^EoqZ$RJqZ)l\J,~>
+q>UG?JcC<$q>^EoqZ$RPqZ)l\J,~>
+q>UHTJcC<$q>^EoqZ$BlPQ-.~>
+q>UH$JcC<$q>^EoqZ$BlPQ-.~>
+q>UG?JcC<$q>^EoqZ$BlPQ-.~>
+q>UHTJcC<$q>^Eoqu?NnOoKq~>
+q>UH$JcC<$q>^Eoqu?NnOoKq~>
+q>UG?JcC<$q>^Eoqu?NnOoKq~>
+q>UNVs8W"*rr<",JcCH(rW)lrqZ)`XJ,~>
+q>UN&s8W!lrr<!nJcCH(rW)lrqZ)`XJ,~>
+q>UMAs8W!7rr<!9JcCH(rW)lrqZ)`XJ,~>
+q>UQWs8QO)rr?JYs+C@N!<3#q!07)0~>
+q>UQ's8Pjkrr>fFs+C@N!<3#q!07)0~>
+q>UPBs8Nu6rr<pfs+C@N!<3#q!07)0~>
+q>Uc]s8QO-@:B39@=eH1s8E#us8)eUs*t~>
+q>Uc-s8Pjo:/:ih:4`Fss8E#us8)eUs*t~>
+q>UbHs8Nu:)&`JS)1hg>s8E#us8)eUs*t~>
+s8W"*%KGJgs']@9s'bq9s']>es+ULP!!'q6!0$r.~>
+s8W!l%KEd7s%Z>hs%`Shs%Z=?s+ULP!!"YK!0$r.~>
+s8W!7%KC_Rrtu^Sru(hSrtu]*s+ULP!!"kQ!0$r.~>
+q>UHTqu6k/s']@9s'^KYLB%&LMZ82~>
+q>UH$qu6jqs%Z>hs%\.FLB%&LMZ82~>
+q>UG?qu6j<rtu^Sru$CfLB%&LMZ82~>
+q>UQWs8QO,rrQX/@K-9,@=eH5s7u_Ps*t~>
+q>UQ's8PjnrrPsq:B(7n:4`G"s7u_Ps*t~>
+q>UPBs8Nu9rrO)<)?0X9)1hgBs7u_Ps*t~>
+q>UHTrr;t+rr;t+JcCK)q>c?OJ,~>
+q>UH$rr;smrr;smJcCK)q>c?OJ,~>
+q>UG?rr;s8rr;s8JcCK)q>c?OJ,~>
+q>UHTJcC<$qu?NnLAuc~>
+q>UH$JcC<$qu?NnLAuc~>
+q>UG?JcC<$qu?NnLAuc~>
+q>UHTJcC<$s8W,:!<;orL&ZZ~>
+q>UH$JcC<$s8W*O!<;orL&ZZ~>
+q>UG?JcC<$s8W*U!<;orL&ZZ~>
+q>UHTSH&W,JcFm4!5nU4j8].sb5_LZhZ&*~>
+q>UH$SH&UAJcFm4!&"'Ij8]-3b5_JohZ&*~>
+q>UG?SH&UGJcFm4!&XKOj8]-9b5_JuhZ&*~>
+q>UHTSH&W,JcFm4p]0@Ss23"Zs23^nJ,~>
+q>UH$SH&UAJcFm4p]0@Ss";Ios"<1.J,~>
+q>UG?SH&UGJcFm4p]0@Ss"qmus"rU4J,~>
+q>UHTJcC<$!<;or!<<#uL&ZZ~>
+q>UH$JcC<$!<;or!<<#uL&ZZ~>
+q>UG?JcC<$!<;or!<<#uL&ZZ~>
+q>UHTJcC?%qZ-WqrW)Tj"77$-li-q]!!!E(rsmsP'a#+Oj8]/D>ndMu[^H-c~>
+q>UH$JcC?%qZ-WqrW)Tj"77$-li-q]!!!E(rsmsP'a#+Oj8]/D>ndMu[^H-c~>
+q>UG?JcC?%qZ-WqrW)Tj"77$-li-q]!!!E(rsmsP'a#+Oj8]/D>ndMu[^H-c~>
+q>UHTJcCB&qZ-TprW)Tj"&h_jli-q_k5sTRB)DT=jIOWXa#bjPr\?=Jj0KrL`W,o;p&BO~>
+q>UH$JcCB&qZ-TprW)Tj"&h_jli-q_k5sTRB)DT=jIOWXa#bjPr\?=Jj0KrL`W,o;p&BO~>
+q>UG?JcCB&qZ-TprW)Tj"&h_jli-q_k5sTRB)DT=jIOWXa#bjPr\?=Jj0KrL`W,o;p&BO~>
+q>UHTJcCK)s24^6r;Z`rp&>/c4M:a\qYpVn!7CN?"h"F&d/_SnrrJrka8c&;p&BO~>
+q>UH$JcCK)s"=0Kr;Z`rp&>/c4M:a\qYpVn!7CN?"h"F&d/_SnrrJrka8c&;p&BO~>
+q>UG?JcCK)s"sTQr;Z`rp&>/c4M:a\qYpVn!7CN?"h"F&d/_SnrrJrka8c&;p&BO~>
+q>UHTJcCK)qZ-KmrW)Zl"l'sN^B!TrrrG/CpAY?a=%*)3!8@GP!Nm$Us8)fhs*t~>
+q>UH$JcCK)qZ-KmrW)Zl"l'sN^B!TrrrG/CpAY?a=%*)3!8@GP!Nm$Us8)fhs*t~>
+q>UG?JcCK)qZ-KmrW)Zl"l'sN^B!TrrrG/CpAY?a=%*)3!8@GP!Nm$Us8)fhs*t~>
+q>UHTJcCN*qZ-HlrW)]m#5^?Ks1\R"qu6`D!2oVl%S-p,<Vc[k*DGVqfJ!=!b5_>=o`'F~>
+q>UH$JcCN*qZ-HlrW)]m#5^?Ks1\R"qu6`D!2oVl%S-p,<Vc[k*DGVqfJ!=!b5_>=o`'F~>
+q>UG?JcCN*qZ-HlrW)]m#5^?Ks1\R"qu6`D!2oVl%S-p,<Vc[k*DGVqfJ!=!b5_>=o`'F~>
+q>UHTJcCT,q>g<jrW)]m#(TGJs1\R"qu6_.)#F%-%cl<F*cV/ZdPLq/+F*t_bl@P?o)F4~>
+q>UH$JcCT,q>g<jrW)]m#(TGJs1\R"qu6_.)#F%-%cl<F*cV/ZdPLq/+F*t_bl@P?o)F4~>
+q>UG?JcCT,q>g<jrW)]m#(TGJs1\R"qu6_.)#F%-%cl<F*cV/ZdPLq/+F*t_bl@P?o)F4~>
+q>UHTJcCW-qZ-?irW)]m#<r7l!s/H)HN!jFmg=L8rrT,%p\t0qmGn20*6nK`_tsH(s*t~>
+q>UH$JcCW-qZ-?irW)]m#<r7l!s/H)HN!jFmg=L8rrT,%p\t0qmGn20*6nK`0)GY=s*t~>
+q>UG?JcCW-qZ-?irW)]m#<r7l!s/H)HN!jFmg=L8rrT,%p\t0qmGn20*6nK`2#@:Cs*t~>
+q>UHTJcCZ.qZ-<hrW)]m!8d_(".fM1kl(M_NWeG8rrT,$q#(-nrAAQ=s8)fcs*t~>
+q>UH$JcCZ.qZ-<hrW)]m!8d_(".fM1kl(M_NWeG8rrT,$q#(-nrAAQ=s8)fcs*t~>
+q>UG?JcCZ.qZ-<hrW)]m!8d_(".fM1kl(M_NWeG8rrT,$q#(-nrAAQ=s8)fcs*t~>
+q>UHTJcCc1!5n[6oDedioD\m,!:0U`!raKEq#:l,XPMm?+'JXDX1dQ9;BkPTs8)fas*t~>
+q>UH$JcCc1!&"-KoDedioD\m,!:0U`!raKEq#:l,XPMm?+'JXDX1dQ9;BkPTs8)fas*t~>
+q>UG?JcCc1!&XQQoDedioD\m,!:0U`!raKEq#:l,XPMm?+'JXDX1dQ9;BkPTs8)fas*t~>
+q>UHTJcCc1qZ-3erW)Qi!l"a$rVlr/!5AC2'#+G4s0"-a"<r-bs8S-!!u>D0ci<kBmJh\~>
+q>UH$JcCc1qZ-3erW)Qi!l"a$rVlr/!5AC2'#+G4s0"-a"<r-bs8S-!!u>D0ci<kBmJh\~>
+q>UG?JcCc1qZ-3erW)Qi!l"a$rVlr/!5AC2'#+G4s0"-a"<r-bs8S-!!u>D0ci<kBmJh\~>
+q>UHTJcCf2qZ-0drW)$Z!hLq@_#O93m/MS~>
+q>UH$JcCf2qZ-0drW)$Z!hLq@_#O93m/MS~>
+q>UG?JcCf2qZ-0drW)$Z!hLq@_#O93m/MS~>
+q>UHTJcCl4qZ-*brW)$Z!E?;>s8)f]s*t~>
+q>UH$JcCl4qZ-*brW)$Z!E?;>s8)f]s*t~>
+q>UG?JcCl4qZ-*brW)$Z!E?;>s8)f]s*t~>
+q>UHTJcCo5qZ-'arW&bo!5n[6l2Q8~>
+q>UH$JcCo5qZ-'arW&bo!&"-Kl2Q8~>
+q>UG?JcCo5qZ-'arW&bo!&XQQl2Q8~>
+q>UHTJcCu7q>fp_rW&boqZ,j[J,~>
+q>UH$JcCu7q>fp_rW&boqZ,j[J,~>
+q>UG?JcCu7q>fp_rW&boqZ,j[J,~>
+q>UHTJcD&9!5n[6li6qaVZ6Mnk5Tr~>
+q>UH$JcD&9!&"-Kli6qaVZ6Mnk5Tr~>
+q>UG?JcD&9!&XQQli6qaVZ6Mnk5Tr~>
+q>UHTJcD&9qZ,p]rW&krqZ,aXJ,~>
+q>UH$JcD&9qZ,p]rW&krqZ,aXJ,~>
+q>UG?JcD&9qZ,p]rW&krqZ,aXJ,~>
+q>UHTJcD,;qZ,j[rW&nsqZ,^WJ,~>
+q>UH$JcD,;qZ,j[rW&nsqZ,^WJ,~>
+q>UG?JcD,;qZ,j[rW&nsqZ,^WJ,~>
+q>UHTJcD/<qZ,gZrW&tuqZ,XUJ,~>
+q>UH$JcD/<qZ,gZrW&tuqZ,XUJ,~>
+q>UG?JcD/<qZ,gZrW&tuqZ,XUJ,~>
+q>UHTJcD2=qZ,dYrW'#!qZ,UTJ,~>
+q>UH$JcD2=qZ,dYrW'#!qZ,UTJ,~>
+q>UG?JcD2=qZ,dYrW'#!qZ,UTJ,~>
+q>UHTJcD>As24^6jT#2ZXT/.ti;\<~>
+q>UH$JcD>As"=0KjT#2ZXT/.ti;\<~>
+q>UG?JcD>As"sTQjT#2ZXT/.ti;\<~>
+q>UHTJcD>A!5n[6j8])YY5eA!hZ&*~>
+q>UH$JcD>A!&"-Kj8])YY5eA!hZ&*~>
+q>UG?JcD>A!&XQQj8])YY5eA!hZ&*~>
+q>UHTJcDABq>fOTrW'/%qZ,IPJ,~>
+q>UH$JcDABq>fOTrW'/%qZ,IPJ,~>
+q>UG?JcDABq>fOTrW'/%qZ,IPJ,~>
+q>UHTJcDDCqZ,RSrW'2&qZ,FOJ,~>
+q>UH$JcDDCqZ,RSrW'2&qZ,FOJ,~>
+q>UG?JcDDCqZ,RSrW'2&qZ,FOJ,~>
+q>UHTJcDGDqZ,ORrW'8(qZ,@MJ,~>
+q>UH$JcDGDqZ,ORrW'8(qZ,@MJ,~>
+q>UG?JcDGDqZ,ORrW'8(qZ,@MJ,~>
+q>UHTJcGECs22,AqZ,IPrW(dSs24g8s23aoqZ,=LJ,~>
+q>UH$JcGECs":SVqZ,IPrW(dSs"=9Ms"<4/qZ,=LJ,~>
+q>UG?JcGECs"q"\qZ,IPrW(dSs"s]Ss"rX5qZ,=LJ,~>
+q>UHTJcGECs225Ds24^6h#I?Rh>dMmrVuo8i;`ZSf`-I~>
+q>UH$JcGECs":\Ys"=0Kh#I?Rh>dL-rVumMi;`ZSf`-I~>
+q>UG?JcGECs"q+_s"sTQh#I?Rh>dL3rVumSi;`ZSf`-I~>
+q>UHTr;Qb*rr;t+JcE%U!5n[6g].6Q[f?4)f)L7~>
+q>UH$r;Qalrr;smJcE%U!&"-Kg].6Q[f?4)f)L7~>
+q>UG?r;Qa7rr;s8JcE%U!&XQQg].6Q[f?4)f)L7~>
+q>UHTrVun+s8N(-rr2t,JcE+WqZ,=LrW'G-qZ,1HJ,~>
+q>UH$rVumms8N'orr2snJcE+WqZ,=LrW'G-qZ,1HJ,~>
+q>UG?rVum8s8N':rr2s9JcE+WqZ,=LrW'G-qZ,1HJ,~>
+q>UHTrr3:5s'bs-@K6@9@=eHds8)fKs8E#/s7u`Fs*t~>
+q>UH$rr3:"s%`Uo:B1>h:4`GQs8)fKs8E#/s7u`Fs*t~>
+q>UG?rr39Bru(k:)?9^S)1hgqs8)fKs8E#/s7u`Fs*t~>
+s8W"*#QNias'bs-@K-<,@0-C:JcE4Zq>f.IrW'P0qZ,(EJ,~>
+s8W!l#QM.1s%`Uo:B(:n:'(AiJcE4Zq>f.IrW'P0qZ,(EJ,~>
+s8W!7#QK)Lru(k:)?0[9)$0aTJcE4Zq>f.IrW'P0qZ,(EJ,~>
+q>UNVs8W"*r;Qb*JcE7[qZ,1HrW'S1qZ,%DJ,~>
+q>UN&s8W!lr;QalJcE7[qZ,1HrW'S1qZ,%DJ,~>
+q>UMAs8W!7r;Qa7JcE7[qZ,1HrW'S1qZ,%DJ,~>
+q>UHTr;Qb*r;Qb*JcE=]s24^6eGoLJ^&Rs0ci8L~>
+q>UH$r;Qalr;QalJcE=]s"=0KeGoLJ^&Rs0ci8L~>
+q>UG?r;Qa7r;Qa7JcE=]s"sTQeGoLJ^&Rs0ci8L~>
+q>UHTr;Qb*rr<",JcE:\qZ,(ErW'\4qZ+qAJ,~>
+q>UH$r;Qalrr<!nJcE:\qZ,(ErW'\4qZ+qAJ,~>
+q>UG?r;Qa7rr<!9JcE:\qZ,(ErW'\4qZ+qAJ,~>
+q>UHTJcDqRqZ,%DrW'_5qZ+n@J,~>
+q>UH$JcDqRqZ,%DrW'_5qZ+n@J,~>
+q>UG?JcDqRqZ,%DrW'_5qZ+n@J,~>
+q>UHTJcDtSqZ,"CrW'e7qZ+h>J,~>
+q>UH$JcDtSqZ,"CrW'e7qZ+h>J,~>
+q>UG?JcDtSqZ,"CrW'e7qZ+h>J,~>
+q>UHTJcE%UqZ+qArW'h8qZ+e=J,~>
+q>UH$JcE%UqZ+qArW'h8qZ+e=J,~>
+q>UG?JcE%UqZ+qArW'h8qZ+e=J,~>
+q>UHTJcE1Ys2+j:qZ+n@rW'k9qZ+b<J,~>
+q>UH$JcE1Ys"4<OqZ+n@rW'k9qZ+b<J,~>
+q>UG?JcE1Ys"j`UqZ+n@rW'k9qZ+b<J,~>
+q>UHTJcE1Y!5nX5bl@YB`W,f8a8^Y~>
+q>UH$JcE1Y!&"*Jbl@YB`W,f8a8^Y~>
+q>UG?JcE1Y!&XNPbl@YB`W,f8a8^Y~>
+q>UHTJcE1YqZ+e=rW't<qZ+Y9J,~>
+q>UH$JcE1YqZ+e=rW't<qZ+Y9J,~>
+q>UG?JcE1YqZ+e=rW't<qZ+Y9J,~>
+q>UHTJcE4ZqZ+b<rW("=qZ+V8J,~>
+q>UH$JcE4ZqZ+b<rW("=qZ+V8J,~>
+q>UG?JcE4ZqZ+b<rW("=qZ+V8J,~>
+q>UHTk5YJ!iW&qqJcGNFqZ+\:rW)Bds23^nqZ+P6J,~>
+q>UH$k5YH6iW&p1JcGNFqZ+\:rW)Bds"<1.qZ+P6J,~>
+q>UG?k5YH<iW&p7JcGNFqZ+\:rW)Bds"rU4qZ+P6J,~>
+q>UHTk5YJ!iW&qqJcGQGqZ+Y9rW)Bds23dp!5n[6_Z,,~>
+q>UH$k5YH6iW&p1JcGQGqZ+Y9rW)Bds"<70!&"-K_Z,,~>
+q>UG?k5YH<iW&p7JcGQGqZ+Y9rW)Bds"r[6!&XQQ_Z,,~>
+q>UHTJcEF`s24^6`W,o;bQ%G>_>f#~>
+q>UH$JcEF`s"=0K`W,o;bQ%G>_>f#~>
+q>UG?JcEF`s"sTQ`W,o;bQ%G>_>f#~>
+q>UHTJcEF`qZ+P6rW(4CqZ+D2J,~>
+q>UH$JcEF`qZ+P6rW(4CqZ+D2J,~>
+q>UG?JcEF`qZ+P6rW(4CqZ+D2J,~>
+q>UHTJcEIaqZ+M5rW(7DqZ+A1J,~>
+q>UH$JcEIaqZ+M5rW(7DqZ+A1J,~>
+q>UG?JcEIaqZ+M5rW(7DqZ+A1J,~>
+q>UHTJcELbqZ+J4rW(:EqZ+>0J,~>
+q>UH$JcELbqZ+J4rW(:EqZ+>0J,~>
+q>UG?JcELbqZ+J4rW(:EqZ+>0J,~>
+q>UHTJcERdqZ+D2rW(@GqZ+8.J,~>
+q>UH$JcERdqZ+D2rW(@GqZ+8.J,~>
+q>UG?JcERdqZ+D2rW(@GqZ+8.J,~>
+q>UHTJcEUeqZ+A1rW(FI!5n[6])R9~>
+q>UH$JcEUeqZ+A1rW(FI!&"-K])R9~>
+q>UG?JcEUeqZ+A1rW(FI!&XQQ])R9~>
+q>UHTJcE^h!5nX5^&S'3e,T:F\c70~>
+q>UH$JcE^h!&"*J^&S'3e,T:F\c70~>
+q>UG?JcE^h!&XNP^&S'3e,T:F\c70~>
+q>UHTJcE^hqZ+8.rW(LKqZ+,*J,~>
+q>UH$JcE^hqZ+8.rW(LKqZ+,*J,~>
+q>UG?JcE^hqZ+8.rW(LKqZ+,*J,~>
+q>UHTJcEaiqZ+5-rW(OLqZ+))J,~>
+q>UH$JcEaiqZ+5-rW(OLqZ+))J,~>
+q>UG?JcEaiqZ+5-rW(OLqZ+))J,~>
+q>UHTpAb01kPtS"JcG9?qZ+/+rW(RMqZ-Bjs22\QJ,~>
+q>UH$pAb.FkPtQ7JcG9?qZ+/+rW(RMqZ-Bjs";.fJ,~>
+q>UG?pAb.LkPtQ=JcG9?qZ+/+rW(RMqZ-Bjs"qRlJ,~>
+q>UHTpAb01kPtS"JcG<@qZ+,*rW(XOqZ-<hs22\QJ,~>
+q>UH$pAb.FkPtQ7JcG<@qZ+,*rW(XOqZ-<hs";.fJ,~>
+q>UG?pAb.LkPtQ=JcG<@qZ+,*rW(XOqZ-<hs"qRlJ,~>
+q>UHTJcEmmqZ+))rW(^Q!5n[6ZN#F~>
+q>UH$JcEmmqZ+))rW(^Q!&"-KZN#F~>
+q>UG?JcEmmqZ+))rW(^Q!&XQQZN#F~>
+q>UHTJcF!p!5n[6[/^+*h#I3NZ2]=~>
+q>UH$JcF!p!&"-K[/^+*h#I3NZ2]=~>
+q>UG?JcF!p!&XQQ[/^+*h#I3NZ2]=~>
+q>UHTJcF!pqZ*u&rW(dSqZ*i"J,~>
+q>UH$JcF!pqZ*u&rW(dSqZ*i"J,~>
+q>UG?JcF!pqZ*u&rW(dSqZ*i"J,~>
+q>UHTJcF'rq>di$rW(gTqZ*f!J,~>
+q>UH$JcF'rq>di$rW(gTqZ*f!J,~>
+q>UG?JcF'rq>di$rW(gTqZ*f!J,~>
+q>UHT^An5Nrr<#9RfE6bc2[g]k5YD\i;`ZSXT*e~>
+q>UH$^An3crr<!NRfE6bc2[erk5YD\i;`ZSXT*e~>
+q>UG?^An3irr<!TRfE6bc2[f#k5YD\i;`ZSXT*e~>
+q>UHT^An5Nrr<#9S,`?cbl@^\k5YD\iW&cTX8d\~>
+q>UH$^An3crr<!NS,`?cbl@\qk5YD\iW&cTX8d\~>
+q>UG?^An3irr<!TS,`?cbl@]"k5YD\iW&cTX8d\~>
+q>UHTJcF:#s24^6XoJA#irAlUWrIS~>
+q>UH$JcF:#s"=0KXoJA#irAlUWrIS~>
+q>UG?JcF:#s"sTQXoJA#irAlUWrIS~>
+q>UHTJcF:#!5n[6XT/8"jT#)WW;hA~>
+q>UH$JcF:#!&"-KXT/8"jT#)WW;hA~>
+q>UG?JcF:#!&XQQXT/8"jT#)WW;hA~>
+q>UHTJcF:#qZ*\srW)'[qZ*PoJ,~>
+q>UH$JcF:#qZ*\srW)'[qZ*PoJ,~>
+q>UG?JcF:#qZ*\srW)'[qZ*PoJ,~>
+q>UHTJcF@%qZ*VqrW)*\qZ*MnJ,~>
+q>UH$JcF@%qZ*VqrW)*\qZ*MnJ,~>
+q>UG?JcF@%qZ*VqrW)*\qZ*MnJ,~>
+q>UHTJcFC&qZ*SprW)0^qZ*GlJ,~>
+q>UH$JcFC&qZ*SprW)0^qZ*GlJ,~>
+q>UG?JcFC&qZ*SprW)0^qZ*GlJ,~>
+q>UHTJcFI(q>dGnrW)3_qZ*DkJ,~>
+q>UH$JcFI(q>dGnrW)3_qZ*DkJ,~>
+q>UG?JcFI(q>dGnrW)3_qZ*DkJ,~>
+q>UHTr;Qb*rr;t+JcG!7s24^6V>pMplMp_]UAo`~>
+q>UH$r;Qalrr;smJcG!7s"=0KV>pMplMp_]UAo`~>
+q>UG?r;Qa7rr;s8JcG!7s"sTQV>pMplMp_]UAo`~>
+q>UHTrVun+s8N(-rr2t,JcG$8!5n[6V#UDom/Qq_T`9N~>
+q>UH$rVumms8N'orr2snJcG$8!&"-KV#UDom/Qq_T`9N~>
+q>UG?rVum8s8N':rr2s9JcG$8!&XQQV#UDom/Qq_T`9N~>
+q>UHTrr3%.s'bg)!+CHYli6h^UAt2mmJm%`TDsE~>
+q>UH$rr3$ps%`Ik!)A+Fli6h^UAt2mmJm%`TDsE~>
+q>UG?rr3$;ru(_6!#^@fli6h^UAt2mmJm%`TDsE~>
+s8W"*#QNias'bs-@K$6+@I4$o_ls+?_q+kb!6P9@_qY4j!:Kma!1s4@~>
+s8W!l#QM.1s%`Uo:At4m:@/#\0!G<T0%U("!6P9@0&-F*!:Kma!1s4@~>
+s8W!7#QK)Lru(k:)?'U8)=7D'1p?rZ1tM^(!6P9@1u&'0!:Kma!1s4@~>
+q>UNVs8W"*s8N(-lMpn%YQ+X?fDk^JaT):Xg].6QnGi@cSH"*~>
+q>UN&s8W!ls8N'olMpl:YQ+VTfDk^JaT)8mg].6QnGi@cSH"*~>
+q>UMAs8W!7s8N':lMpl@YQ+VZfDk^JaT)8sg].6QnGi@cSH"*~>
+q>UHTr;Qk-s8QMYs6K^^!1s5i!:p-i_tsG's*t~>
+q>UH$r;Qjos8PiFs6K^^!1s5i!:p-i0)GX<s*t~>
+q>UG?r;Qj:s8Nsfs6K^^!1s5i!:p-i2#@9Bs*t~>
+q>UHTr;Qh,s8W"*JcG<@s24^6ScAZho)JReRf@m~>
+q>UH$r;Qgns8W!lJcG<@s"=0KScAZho)JReRf@m~>
+q>UG?r;Qg9s8W!7JcG<@s"sTQScAZho)JReRf@m~>
+q>UHTJcFj3q>d&crW)TjqZ*#`J,~>
+q>UH$JcFj3q>d&crW)TjqZ*#`J,~>
+q>UG?JcFj3q>d&crW)TjqZ*#`J,~>
+q>UHTJcFm4qZ-Kms23Ffs234`rW)WkqZ*_ts24:)J,~>
+q>UH$JcFm4qZ-Kms";n&s";[urW)WkqZ*_ts"<a>J,~>
+q>UG?JcFm4qZ-Kms"r=,s"r+&rW)WkqZ*_ts"s0DJ,~>
+q>UHTJcFp5qZ-Hls23Ffs234`rW)ZlqZ*\ss24:)J,~>
+q>UH$JcFp5qZ-Hls";n&s";[urW)ZlqZ*\ss"<a>J,~>
+q>UG?JcFp5qZ-Hls"r=,s"r+&rW)ZlqZ*\ss"s0DJ,~>
+q>UHTJcG!7qZ)u_rW)`nqZ)l\J,~>
+q>UH$JcG!7qZ)u_rW)`nqZ)l\J,~>
+q>UG?JcG!7qZ)u_rW)`nqZ)l\J,~>
+q>UHTJcG-;s2+j:qZ)r^rW)fp!5n[6PQ-.~>
+q>UH$JcG-;s"4<OqZ)r^rW)fp!&"-KPQ-.~>
+q>UG?JcG-;s"j`UqZ)r^rW)fp!&XQQPQ-.~>
+q>UHTJcG-;s24^6Q2gg`qu?KmP5g%~>
+q>UH$JcG-;s"=0KQ2gg`qu?KmP5g%~>
+q>UG?JcG-;s"sTQQ2gg`qu?KmP5g%~>
+q>UHTJcG-;qZ)i[rW)lrqZ)`XJ,~>
+q>UH$JcG-;qZ)i[rW)lrqZ)`XJ,~>
+q>UG?JcG-;qZ)i[rW)lrqZ)`XJ,~>
+q>UHTJcG0<qZ*#`s24g8rW)osqZ+G3s23:bJ,~>
+q>UH$JcG0<qZ*#`s"=9MrW)osqZ+G3s";b"J,~>
+q>UG?JcG0<qZ*#`s"s]SrW)osqZ+G3s"r1(J,~>
+q>UHTJcG3=qZ$W6R/d3(rVuiss8Vrr^An5Ndf4g~>
+q>UH$JcG3=qZ$UKR/d1=rVuiss8Vrr^An3cdf4g~>
+q>UG?JcG3=qZ$UQR/d1CrVuiss8Vrr^An3idf4g~>
+q>UHTJcG9?qZ)]WrVuruqZ)TTJ,~>
+q>UH$JcG9?qZ)]WrVuruqZ)TTJ,~>
+q>UG?JcG9?qZ)]WrVuruqZ)TTJ,~>
+q>UHTJcGBBs24^6NrSkSMuS;~>
+q>UH$JcGBBs"=0KNrSkSMuS;~>
+q>UG?JcGBBs"sTQNrSkSMuS;~>
+q>UHTJcGBBq>cNTq>cBPJ,~>
+q>UH$JcGBBq>cNTq>cBPJ,~>
+q>UG?JcGBBq>cNTq>cBPJ,~>
+q>UHTJc>fO_o)9LqZ)QSqZ*Sps23msJ,~>
+q>UH$Jc>fO/hZr!qZ)QSqZ*Sps"<@3J,~>
+q>UG?Jc>fO1c5"-qZ)QSqZ*Sps"rd9J,~>
+q>UHTJc>fO_o)<MqZ)QSqZ*Pos23msJ,~>
+q>UH$Jc>fO/hZu"qZ)QSqZ*Pos"<@3J,~>
+q>UG?Jc>fO1c5%.qZ)QSqZ*Pos"rd9J,~>
+q>UHTJcGNFqZ)QSqZ)?MJ,~>
+q>UH$JcGNFqZ)QSqZ)?MJ,~>
+q>UG?JcGNFqZ)QSqZ)?MJ,~>
+q>UHTJcGQGqZ)QSq>c6LJ,~>
+q>UH$JcGQGqZ)QSq>c6LJ,~>
+q>UG?JcGQGqZ)QSq>c6LJ,~>
+q>UHTJcGZJs24^6N;imqq#H-KJ,~>
+q>UH$JcGZJs"=0KN;il1q#H-KJ,~>
+q>UG?JcGZJs"sTQN;il7q#H-KJ,~>
+q>UHTJcGZJqZ)QSqZ$WrrW%ZPJ,~>
+q>UH$JcGZJqZ)QSqZ$WrrW%ZPJ,~>
+q>UG?JcGZJqZ)QSqZ$WrrW%ZPJ,~>
+q>UHTJcG]KqZ)QSqZ-ZrrW%ZPJ,~>
+q>UH$JcG]KqZ)QSqZ-ZrrW%ZPJ,~>
+q>UG?JcG]KqZ)QSqZ-ZrrW%ZPJ,~>
+q>UHTJcGcMq>cHRqZ-WqrW%ZPJ,~>
+q>UH$JcGcMq>cHRqZ-WqrW%ZPJ,~>
+q>UG?JcGcMq>cHRqZ-WqrW%ZPJ,~>
+q>UHTJc>`MqZ)QSqZ-QorW%ZPJ,~>
+q>UH$Jc>`MqZ)QSqZ-QorW%ZPJ,~>
+q>UG?Jc>`MqZ)QSqZ-QorW%ZPJ,~>
+q>UHTJcGTIMuWYSqu?WqL&ZZ~>
+q>UH$JcGTIMuWYSqu?WqL&ZZ~>
+q>UG?JcGTIMuWYSqu?WqL&ZZ~>
+q>UHTK`;%iqZ)NRqZ-KmrW)Qi"77$-li-q]!!!E(rrmNp"VY81rr3/:2[9a^fs^p2~>
+q>UH$K`;$)qZ)NRqZ-KmrW)Qi"77$-li-q]!!!E(rrmNp"VY81rr3/:2[9a^fs^p2~>
+q>UG?K`;$/qZ)NRqZ-KmrW)Qi"77$-li-q]!!!E(rrmNp"VY81rr3/:2[9a^fs^p2~>
+q>UHTUAt82jo>2Xrr<#9p](92SH&Hdq#C<noD\nk8-%uTs8D*^i=KVurshN"i5R6;s8VBl@+ijl
+-as&*~>
+q>UH$UAt6Gjo>2Xrr<!Np](7GSH&Hdq#C<noD\nk8-%uTs8D*^i=KVurshN"i5R6;s8VBl@+ijl
+-as&*~>
+q>UG?UAt6Mjo>2Xrr<!Tp](7MSH&Hdq#C<noD\nk8-%uTs8D*^i=KVurshN"i5R6;s8VBl@+ijl
+-as&*~>
+q>UHTUAt82k5Y;YrVuo8p](92ScAQep](3mo`#&b4M:a\qYpVn!7CQ@$a'O*s2G&rs8TD*p:('P~>
+q>UH$UAt6Gk5Y;YrVumMp](7GScAQep](3mo`#&b4M:a\qYpVn!7CQ@$a'O*s2G&rs8TD*p:('P~>
+q>UG?UAt6Mk5Y;YrVumSp](7MScAQep](3mo`#&b4M:a\qYpVn!7CQ@$a'O*s2G&rs8TD*p:('P~>
+q>UHTL]@5OMZ<PRpAb*lp&>3N(u;q,lh^V^3^!-9$CqV(s7IL`qX[i][f:j~>
+q>UH$L]@5OMZ<PRpAb*lp&>3N(u;q,lh^V^3^!-9$CqV(s7IL`qX[i][f:j~>
+q>UG?L]@5OMZ<PRpAb*lp&>3N(u;q,lh^V^3^!-9$CqV(s7IL`qX[i][f:j~>
+q>UHTM#[>PMuWYSo`+mjpAY?o2k0i^!:0O^!m^kEp\t<a+a*ea"m.NA!D`Eus*t~>
+q>UH$M#[>PMuWYSo`+mjpAY?o2k0i^!:0O^!m^kEp\t<a+a*ea"m.NA!D`Eus*t~>
+q>UG?M#[>PMuWYSo`+mjpAY?o2k0i^!:0O^!m^kEp\t<a+a*ea"m.NA!D`Eus*t~>
+q>UHTN;rpqq>cHRqZ-6frW)Zl#(TGJs1\R"qu6_.)#F%-"8G5Iq#:9s7n(\=.X&9#J,~>
+q>UH$N;ro1q>cHRqZ-6frW)Zl#(TGJs1\R"qu6_.)#F%-"8G5Iq#:9s7n(\=.X&9#J,~>
+q>UG?N;ro7q>cHRqZ-6frW)Zl#(TGJs1\R"qu6_.)#F%-"8G5Iq#:9s7n(\=.X&9#J,~>
+q>UHTN;imqqZ)NRqZ-3erW)Zl#<r7l!s/H)HN!jFmg=L<rr`-p1\(JE#LNP$s8T,(qR?KT~>
+q>UH$N;il1qZ)NRqZ-3erW)Zl#<r7l!s/H)HN!jFmg=L<rr`-p1\(JE#LNP$s8T,(qR?KT~>
+q>UG?N;il7qZ)NRqZ-3erW)Zl#<r7l!s/H)HN!jFmg=L<rr`-p1\(JE#LNP$s8T,(qR?KT~>
+q>UHTN;rbTMuWYSnGiIfpAY-LrmLt@!5n%!rrS2`jSAfXrE1Z;rVm,G!8%8NXoeF.s*t~>
+q>UH$N;rbTMuWYSnGiIfpAY-LrmLt@!5n%!rrS2`jSAfXrE1Z;rVm,G!8%8NXoeF.s*t~>
+q>UG?N;rbTMuWYSnGiIfpAY-LrmLt@!5n%!rrS2`jSAfXrE1Z;rVm,G!8%8NXoeF.s*t~>
+q>UHTNrStVMZ<PRn,N@eo)Ad+!:0U`!raKEq#:D*):/<F#lal!),8c/0LWALJ,~>
+q>UH$NrStVMZ<PRn,N@eo)Ad+!:0U`!raKEq#:D*):/<F#lal!),8c/0LWALJ,~>
+q>UG?NrStVMZ<PRn,N@eo)Ad+!:0U`!raKEq#:D*):/<F#lal!),8c/0LWALJ,~>
+q>UNVs8W"*!<;t*SH&HdMuWVRmf37do)Ad+!:0U`!k86Er;Ql6!:0[^!!r&ns33\3$rQ/qs*t~>
+q>UN&s8W!l!<;slSH&HdMuWVRmf37do)Ad+!:0U`!k86Er;Ql6!:0[^!!r&ns33\3$rQ/qs*t~>
+q>UMAs8W!7!<;s7SH&HdMuWVRmf37do)Ad+!:0U`!k86Er;Ql6!:0[^!!r&ns33\3$rQ/qs*t~>
+q>UHTqu6_+s'_>qqZ)QSqZ-!_rW)!Y!hLq@VZ2/~>
+q>UH$qu6^ms%]!^qZ)QSqZ-!_rW)!Y!hLq@VZ2/~>
+q>UG?qu6^8ru%7)qZ)QSqZ-!_rW)!Y!hLq@VZ2/~>
+q>UHTr;Qt0s8QO-@:>i/s24^6MuNdpqZ,s^rW)!Y!E?;"s*t~>
+q>UH$r;Qsrs8Pjo:/7J^s"=0KMuNc0qZ,s^rW)!Y!E?;"s*t~>
+q>UG?r;Qs=s8Nu:)&]+Is"sTQMuNc6qZ,s^rW)!Y!E?;"s*t~>
+s8W"*!WV3Ys8QO-s8QO-rr?K$rrBt6!/pmS!9sO_!/:H'~>
+s8W!l!WTM)s8Pjos8Pjorr>ffrr=\K!/pmS!9sO_!/:H'~>
+s8W!7!WRHDs8Nu:s8Nu:rr<q1rr=nQ!/pmS!9sO_!/:H'~>
+q>UHTqu6Y)r;Qb*UAt&iMuWYSkl:V^L&ZZ~>
+q>UH$qu6Xkr;QalUAt&iMuWYSkl:V^L&ZZ~>
+q>UG?qu6X6r;Qa7UAt&iMuWYSkl:V^L&ZZ~>
+q>UQWs8QO,rrQX/@K-9,@AEl"!/ggR!9aC]!/:H'~>
+q>UQ's8PjnrrPsq:B(7n:8@jd!/ggR!9aC]!/:H'~>
+q>UPBs8Nu9rrO)<)?0X9)5I6/!/ggR!9aC]!/:H'~>
+q>UHTrr;t+rr;t+U]:2kMuWYSjo>;[L&ZZ~>
+q>UH$rr;smrr;smU]:2kMuWYSjo>;[L&ZZ~>
+q>UG?rr;s8rr;s8U]:2kMuWYSjo>;[L&ZZ~>
+q>UHTRK*-aMZ<PRjT#2ZL&ZZ~>
+q>UH$RK*-aMZ<PRjT#2ZL&ZZ~>
+q>UG?RK*-aMZ<PRjT#2ZL&ZZ~>
+q>UHTSH&W,qZ)QS!5n[6j8])YL&ZZ~>
+q>UH$SH&UAqZ)QS!&"-Kj8])YL&ZZ~>
+q>UG?SH&UGqZ)QS!&XQQj8])YL&ZZ~>
+q>UHTSGrT,qZ)QSqZ,UTrW%ZPJ,~>
+q>UH$SGrRAqZ)QSqZ,UTrW%ZPJ,~>
+q>UG?SGrRGqZ)QSqZ,UTrW%ZPJ,~>
+q>UHTScAQeMZ<PRi;`cVL&ZZ~>
+q>UH$ScAQeMZ<PRi;`cVL&ZZ~>
+q>UG?ScAQeMZ<PRi;`cVL&ZZ~>
+q>UHTT)\ZfMZ<PRhuEZUL&ZZ~>
+q>UH$T)\ZfMZ<PRhuEZUL&ZZ~>
+q>UG?T)\ZfMZ<PRhuEZUL&ZZ~>
+q>UHTT`=igMuWYSh>dHSL&ZZ~>
+q>UH$T`=igMuWYSh>dHSL&ZZ~>
+q>UG?T`=igMuWYSh>dHSL&ZZ~>
+q>UHTV#UJ4!<;orMZ<PRh#I?RL&ZZ~>
+q>UH$V#UHI!<;orMZ<PRh#I?RL&ZZ~>
+q>UG?V#UHO!<;orMZ<PRh#I?RL&ZZ~>
+q>UHTV#UJ4qZ)QS!5n[6g].6QL&ZZ~>
+q>UH$V#UHIqZ)QS!&"-Kg].6QL&ZZ~>
+q>UG?V#UHOqZ)QS!&XQQg].6QL&ZZ~>
+q>UHTV#U;lMZ<PRg&M$OL&ZZ~>
+q>UH$V#U;lMZ<PRg&M$OL&ZZ~>
+q>UG?V#U;lMZ<PRg&M$OL&ZZ~>
+q>UHTV>pDmMZ<PRf`1pNL&ZZ~>
+q>UH$V>pDmMZ<PRf`1pNL&ZZ~>
+q>UG?V>pDmMZ<PRf`1pNL&ZZ~>
+q>UHTVZ6MnMZ<PRfDkgML&ZZ~>
+q>UH$VZ6MnMZ<PRfDkgML&ZZ~>
+q>UG?VZ6MnMZ<PRfDkgML&ZZ~>
+q>UHTW;l_pMZ<PRec5UKL&ZZ~>
+q>UH$W;l_pMZ<PRec5UKL&ZZ~>
+q>UG?W;l_pMZ<PRec5UKL&ZZ~>
+q>UHTX8i4;qZ)NRqZ,.GrW%ZPJ,~>
+q>UH$X8i2PqZ)NRqZ,.GrW%ZPJ,~>
+q>UG?X8i2VqZ)NRqZ,.GrW%ZPJ,~>
+q>UHTX8`1;qZ)QS!5n[6e,TCIL&ZZ~>
+q>UH$X8`/PqZ)QS!&"-Ke,TCIL&ZZ~>
+q>UG?X8`/VqZ)QS!&XQQe,TCIL&ZZ~>
+q>UHTXT/.tMZ<PRdJs1GL&ZZ~>
+q>UH$XT/.tMZ<PRdJs1GL&ZZ~>
+q>UG?XT/.tMZ<PRdJs1GL&ZZ~>
+q>UHTXoJ7uMZ<PRd/X(FL&ZZ~>
+q>UH$XoJ7uMZ<PRd/X(FL&ZZ~>
+q>UG?XoJ7uMZ<PRd/X(FL&ZZ~>
+q>UHTYQ+G!MZ<PRci<tEL&ZZ~>
+q>UH$YQ+G!MZ<PRci<tEL&ZZ~>
+q>UG?YQ+G!MZ<PRci<tEL&ZZ~>
+q>UHTYlFS#MZ<PRc2[bCL&ZZ~>
+q>UH$YlFS#MZ<PRc2[bCL&ZZ~>
+q>UG?YlFS#MZ<PRc2[bCL&ZZ~>
+q>UHTZiC'CqZ)NRqZ+k?rW%ZPJ,~>
+q>UH$ZiC%XqZ)NRqZ+k?rW%ZPJ,~>
+q>UG?ZiC%^qZ)NRqZ+k?rW%ZPJ,~>
+q>UHTZiBn&MZ<MQbQ%PAL&ZZ~>
+q>UH$ZiBn&MZ<MQbQ%PAL&ZZ~>
+q>UG?ZiBn&MZ<MQbQ%PAL&ZZ~>
+q>UHT[/^"'MZ<PRaoD>?L&ZZ~>
+q>UH$[/^"'MZ<PRaoD>?L&ZZ~>
+q>UG?[/^"'MZ<PRaoD>?L&ZZ~>
+q>UHT[K$+(MZ<PRaT)5>L&ZZ~>
+q>UH$[K$+(MZ<PRaT)5>L&ZZ~>
+q>UG?[K$+(MZ<PRaT)5>L&ZZ~>
+q>UHT\,Z=*MZ<PR`rH#<L&ZZ~>
+q>UH$\,Z=*MZ<PR`rH#<L&ZZ~>
+q>UG?\,Z=*MZ<PR`rH#<L&ZZ~>
+q>UHT\GuF+nc/X,h#IDlp](92ci<kB`W,o;L&ZZ~>
+q>UH$\GuF+nc/VAh#IC,p](7Gci<kB`W,o;L&ZZ~>
+q>UG?\GuF+nc/VGh#IC2p](7Mci<kB`W,o;L&ZZ~>
+q>UHT]DhlKq>g$bs23Xls24U2s237a!5n[6`;ff:L&ZZ~>
+q>UH$]Dhj`q>g$bs"<+,s"='Gs";_!!&"-K`;ff:L&ZZ~>
+q>UG?]Dhjfq>g$bs"rO2s"sKMs"r.'!&XQQ`;ff:L&ZZ~>
+q>UHT]Dqa.MZ<PR_Z0T8L&ZZ~>
+q>UH$]Dqa.MZ<PR_Z0T8L&ZZ~>
+q>UG?]Dqa.MZ<PR_Z0T8L&ZZ~>
+q>UHT]`7j/MZ<PR_>jK7L&ZZ~>
+q>UH$]`7j/MZ<PR_>jK7L&ZZ~>
+q>UG?]`7j/MZ<PR_>jK7L&ZZ~>
+q>UHTmJd@?:_3dW\,61/FXdP.?g[jm!5JF3!2o8bqZ)KQqZ+G3rW%ZPJ,~>
+q>UH$mJd@?:_3dW\,61/FXdP.?g[jm!5JF3!2o8bqZ)KQqZ+G3rW%ZPJ,~>
+q>UG?mJd@?:_3dW\,61/FXdP.?g[jm!5JF3!2o8bqZ)KQqZ+G3rW%ZPJ,~>
+q>UHTmf*L>'oCQ%^XE#Z"\,TO`[XOYrrTq8ec+_3p[A.Z!/ggR!5AL4!/:H'~>
+q>UH$mf*L>'oCQ%^XE#Z"\,TO`[XOYrrTq8ec+_3p[A.Z!/ggR!5AL4!/:H'~>
+q>UG?mf*L>'oCQ%^XE#Z"\,TO`[XOYrrTq8ec+_3p[A.Z!/ggR!5AL4!/:H'~>
+q>UHTmf*;PM=UZOXo\=ts1\R"n,NF*!<;orMZ<PR^&S'3L&ZZ~>
+q>UH$mf*;PM=UZOXo\=ts1\R"n,ND?!<;orMZ<PR^&S'3L&ZZ~>
+q>UG?mf*;PM=UZOXo\=ts1\R"n,NDE!<;orMZ<PR^&S'3L&ZZ~>
+q>UHTn,EXY!2DXh.?4?$rsG;*rVuo4!$2_.Saud\_tsFkrrBt6!5/@2!/:H'~>
+q>UH$n,EXY!2DXh.?4?$rsG;*rVuo4!$2_.Saud\0)GX+rr=\K!5/@2!/:H'~>
+q>UG?n,EXY!2DXh.?4?$rsG;*rVuo4!$2_.Saud\2#@91rr=nQ!5/@2!/:H'~>
+q>UHTrr;t+rr;t+qu6oB!%+r$RgaoDrrV[5FoMCFfU:(5LB`_/s8)eRs8)f-s8E"Ps*t~>
+q>UH$rr;smrr;smqu6oB!%+r$RgaoDrrV[5FoMCFfU:(5LB`_/s8)eRs8)f-s8E"Ps*t~>
+q>UG?rr;s8rr;s8qu6oB!%+r$RgaoDrrV[5FoMCFfU:(5LB`_/s8)eRs8)f-s8E"Ps*t~>
+q>UQWs8QO,rrQX/@K-9,@Jp-,`W3RKrrJ#kq>UQl6U(;@rrI]dp&FjgMZ<PR\c;X/L&ZZ~>
+q>UQ's8PjnrrPsq:B(7n:Ak+n`W3RKrrJ#kq>UQl6U(;@rrI]dp&FjgMZ<PR\c;X/L&ZZ~>
+q>UPBs8Nu9rrO)<)?0X9)>sL9`W3RKrrJ#kq>UQl6U(;@rrI]dp&FjgMZ<PR\c;X/L&ZZ~>
+q>UHTqu6_+s'bp,!+Gg*!oF"@rr3&2!;66h"8bnNnbE+c\H)<ss8)eQs8)f+s8E"Ps*t~>
+q>UH$qu6^ms%`Rn!)EIl!oF"@rr3&2!;66h"8bnNnbE+c\H)<ss8)eQs8)f+s8E"Ps*t~>
+q>UG?qu6^8ru(h9!#b_7!oF"@rr3&2!;66h"8bnNnbE+c\H)<ss8)eQs8)f+s8E"Ps*t~>
+s8W"*!WV3Ys8QO,s8HI(rrW0?^&J$4NtV?i"8u@Qm.^M\L_BI^qZ+G3s23+]qZ+))rW&eps23ms
+J,~>
+s8W!l!WTM)s8Pjns8GdjrrW0?^&J$4NtV?i"8u@Qm.^M\L_BI^qZ+G3s";RrqZ+))rW&eps"<@3
+J,~>
+s8W!7!WRHDs8Nu9s8Eo5rrW0?^&J$4NtV?i"8u@Qm.^M\L_BI^qZ+G3s"r"#qZ+))rW&eps"rd9
+J,~>
+q>UHTrr2t,rVlk+rr2t,qu6kd,eW-8%tOQW!b3+oroXUes8S"bhqaJ&K_tfL_tsGJs8U!^s8)f(
+s8E"ps8U!ss*t~>
+q>UH$rr2snrVljmrr2snqu6kd,eW-8%tOQW!b3+oroXUes8S"bhqaJ&K_tfL0)GX_s8O^ss8)f(
+s8E"ps8O_3s*t~>
+q>UG?rr2s9rVlj8rr2s9qu6kd,eW-8%tOQW!b3+oroXUes8S"bhqaJ&K_tfL2#@9es8Oq$s8)f(
+s8E"ps8Oq9s*t~>
+q>UQWs8QO*rr?L,rr?L(rsP#9"WiEss8Th6li6h^$1IooHm&Xu0:)V7rrBt6!/gdV_tsG@s8E"P
+s*t~>
+q>UQ's8Pjlrr>gnrr>gjrsP#9"WiEss8Th6li6h^$1IooHm&Xu0:)V7rr=\K!/gdV0)GXUs8E"P
+s*t~>
+q>UPBs8Nu7rr<r9rr<r5rsP#9"WiEss8Th6li6h^$1IooHm&Xu0:)V7rr=nQ!/gdV2#@9[s8E"P
+s*t~>
+q>UNVs8W"*s8W(,nc&Z^/,ec5qZ)NRqZ*r%rW%ZPJ,~>
+q>UN&s8W!ls8W'nnc&Z^/,ec5qZ)NRqZ*r%rW%ZPJ,~>
+q>UMAs8W!7s8W'9nc&Z^/,ec5qZ)NRqZ*r%rW%ZPJ,~>
+q>UHTjo5?\Yj;>d!/^aQ!3uS'!/:H'~>
+q>UH$jo5?\Yj;>d!/^aQ!3uS'!/:H'~>
+q>UG?jo5?\Yj;>d!/^aQ!3uS'!/:H'~>
+q>UHTcN!bAU]:A3l2UV\[f?BFrVuis[f?BFdf4g~>
+q>UH$cN!bAU]:?Hl2UV\[f?@[rVuis[f?@[df4g~>
+q>UG?cN!bAU]:?Nl2UV\[f?@arVuis[f?@adf4g~>
+q>UHTd/WqBUAt82li6h^[/^0DrVuis[f?BFdf4g~>
+q>UH$d/WqBUAt6Gli6h^[/^.YrVuis[f?@[df4g~>
+q>UG?d/WqBUAt6Mli6h^[/^._rVuis[f?@adf4g~>
+q>UHTe,THcqZ)KQqZ*burW%ZPJ,~>
+q>UH$e,TG#qZ)KQqZ*burW%ZPJ,~>
+q>UG?e,TG)qZ)KQqZ*burW%ZPJ,~>
+q>UHTe,KEcqZ)NR!5n[6XT/8"L&ZZ~>
+q>UH$e,KD#qZ)NR!&"-KXT/8"L&ZZ~>
+q>UG?e,KD)qZ)NR!&XQQXT/8"L&ZZ~>
+q>UHTeGoCGM?!GQWrN%uL&ZZ~>
+q>UH$eGoCGM?!GQWrN%uL&ZZ~>
+q>UG?eGoCGM?!GQWrN%uL&ZZ~>
+q>UHTec5LHM?!GQWW2qtL&ZZ~>
+q>UH$ec5LHM?!GQWW2qtL&ZZ~>
+q>UG?ec5LHM?!GQWW2qtL&ZZ~>
+q>UHTf)PUIMZ<MQg].;kd/X(FRfEE*mf.e~>
+q>UH$f)PUIMZ<MQg].:+d/X(FRfEC?mf.e~>
+q>UG?f)PUIMZ<MQg].:1d/X(FRfECEmf.e~>
+q>UHTgAh2jqZ)KQqZ,=Ls234`rW&Des24:)J,~>
+q>UH$gAh1*qZ)KQqZ,=Ls";[urW&Des"<a>J,~>
+q>UG?gAh10qZ)KQqZ,=Ls"r+&rW&Des"s0DJ,~>
+q>UHTgA_/jqZ)KQqZ*JmrW%ZPJ,~>
+q>UH$gA_.*qZ)KQqZ*JmrW%ZPJ,~>
+q>UG?gA_.0qZ)KQqZ*JmrW%ZPJ,~>
+q>UHTg].*MMZ<PRU]:;nL&ZZ~>
+q>UH$g].*MMZ<PRU]:;nL&ZZ~>
+q>UG?g].*MMZ<PRU]:;nL&ZZ~>
+q>UHTh#I6OM?!GQUAt2mL&ZZ~>
+q>UH$h#I6OM?!GQUAt2mL&ZZ~>
+q>UG?h#I6OM?!GQUAt2mL&ZZ~>
+q>UHTi;`hp!<;or[f?BFf)PUIaoDCYg].6QL&ZZ~>
+q>UH$i;`g0!<;or[f?@[f)PUIaoDAng].6QL&ZZ~>
+q>UG?i;`g6!<;or[f?@af)PUIaoDAtg].6QL&ZZ~>
+q>UHTi;WepqZ+#'s23LhqZ+\:s23UkrW%ZPJ,~>
+q>UH$i;Wd0qZ+#'s";t(qZ+\:s"<(+rW%ZPJ,~>
+q>UG?i;Wd6qZ+#'s"rC.qZ+\:s"rL1rW%ZPJ,~>
+q>UHTirB%rqZ)KQqZ*5frW%ZPJ,~>
+q>UH$irB$2qZ)KQqZ*5frW%ZPJ,~>
+q>UG?irB$8qZ)KQqZ*5frW%ZPJ,~>
+q>UHTir9"rqZ)KQqZ*2erW%ZPJ,~>
+q>UH$ir9!2qZ)KQqZ*2erW%ZPJ,~>
+q>UG?ir9!8qZ)KQqZ*2erW%ZPJ,~>
+q>UHTj8\uVM?!GQS,`HfL&ZZ~>
+q>UH$j8\uVM?!GQS,`HfL&ZZ~>
+q>UG?j8\uVM?!GQS,`HfL&ZZ~>
+q>UHTjT#)WM?!GQRfE?eL&ZZ~>
+q>UH$jT#)WM?!GQRfE?eL&ZZ~>
+q>UG?jT#)WM?!GQRfE?eL&ZZ~>
+q>UHTjo>2XM?!GQRK*6dL&ZZ~>
+q>UH$jo>2XM?!GQRK*6dL&ZZ~>
+q>UG?jo>2XM?!GQRK*6dL&ZZ~>
+q>UHTkPtDZM?!GQQiI$bL&ZZ~>
+q>UH$kPtDZM?!GQQiI$bL&ZZ~>
+q>UG?kPtDZM?!GQQiI$bL&ZZ~>
+q>UHTlMpn%qZ)KQqZ)r^rW%ZPJ,~>
+q>UH$lMpl:qZ)KQqZ)r^rW%ZPJ,~>
+q>UG?lMpl@qZ)KQqZ)r^rW%ZPJ,~>
+q>UHTlMp\\MuWgpqZ)o]rW%ZPJ,~>
+q>UH$lMp\\MuWf0qZ)o]rW%ZPJ,~>
+q>UG?lMp\\MuWf6qZ)o]rW%ZPJ,~>
+q>UHTli6h^M?!GQPQ1U^L&ZZ~>
+q>UH$li6h^M?!GQPQ1U^L&ZZ~>
+q>UG?li6h^M?!GQPQ1U^L&ZZ~>
+q>UHTm/Qq_g&M)irr<#9\GuF+YQ+X?k5YD\L&ZZ~>
+q>UH$m/Qq_g&M()rr<!N\GuF+YQ+VTk5YD\L&ZZ~>
+q>UG?m/Qq_g&M(/rr<!T\GuF+YQ+VZk5YD\L&ZZ~>
+q>UHTmf3.afDklgrr<#9\c;O,Y5eO>k5YD\L&ZZ~>
+q>UH$mf3.afDkk'rr<!N\c;O,Y5eMSk5YD\L&ZZ~>
+q>UG?mf3.afDkk-rr<!T\c;O,Y5eMYk5YD\L&ZZ~>
+q>UHTo)Ja-!<;orM?!GQO8o1ZL&ZZ~>
+q>UH$o)J_B!<;orM?!GQO8o1ZL&ZZ~>
+q>UG?o)J_H!<;orM?!GQO8o1ZL&ZZ~>
+q>UHTo)Ja-qZ)KQqZ)ZVrW%ZPJ,~>
+q>UH$o)J_BqZ)KQqZ)ZVrW%ZPJ,~>
+q>UG?o)J_HqZ)KQqZ)ZVrW%ZPJ,~>
+q>UHTo)JReM>mRnqZ)WUrW%ZPJ,~>
+q>UH$o)JReM>mQ.qZ)WUrW%ZPJ,~>
+q>UG?o)JReM>mQ4qZ)WUrW%ZPJ,~>
+q>UHToDe[fM?!GQMuWbVL&ZZ~>
+q>UH$oDe[fM?!GQMuWbVL&ZZ~>
+q>UG?oDe[fM?!GQMuWbVL&ZZ~>
+q>UHTpAY-1q>fp_s21K/qZ)NRrW("=s22\QJ,~>
+q>UH$pAY+Fq>fp_s"9rDqZ)NRrW("=s";.fJ,~>
+q>UG?pAY+Lq>fp_s"pAJqZ)NRrW("=s"qRlJ,~>
+q>UHTpAb!ili7"&T`=lhM?!PTa8c1W_>f#~>
+q>UH$pAb!ili6u;T`=lhM?!PTa8c/l_>f#~>
+q>UG?pAb!ili6uAT`=lhM?!PTa8c/r_>f#~>
+q>UHTrr;t+rVu`pM?!GQL]@>RL&ZZ~>
+q>UH$rr;smrVu`pM?!GQL]@>RL&ZZ~>
+q>UG?rr;s8rVu`pM?!GQL]@>RL&ZZ~>
+q>UQWs8QO,rrHR.qZ)HPqZ)BNrW%ZPJ,~>
+q>UQ's8PjnrrGmpqZ)HPqZ)BNrW%ZPJ,~>
+q>UPBs8Nu9rrF#;qZ)HPqZ)BNrW%ZPJ,~>
+q>UHTqu6Y)qZ)KQq>c6LrW%ZPJ,~>
+q>UH$qu6XkqZ)KQq>c6LrW%ZPJ,~>
+q>UG?qu6X6qZ)KQq>c6LrW%ZPJ,~>
+s8W"*!WV3Ys8QO)!/^aQ!/(=N!/:H'~>
+s8W!l!WTM)s8Pjk!/^aQ!/(=N!/:H'~>
+s8W!7!WRHDs8Nu6!/^aQ!/(=N!/:H'~>
+q>UHTrr2t,qZ$V)M?!GQK)bfML&ZZ~>
+q>UH$rr2snqZ$UkM?!GQK)bfML&ZZ~>
+q>UG?rr2s9qZ$U6M?!GQK)bfML&ZZ~>
+q>UQWs8QO)!!3+.MuWYSJc>`MrW%ZPJ,~>
+q>UQ's8Pjk!!3*pMuWYSJc>`MrW%ZPJ,~>
+q>UPBs8Nu6!!3*;MuWYSJc>`MrW%ZPJ,~>
+q>UQW_uF0C!;p8cs8)eIs8W,u!/:H'~>
+q>UQ'0)n]E!;oTPs8)eIs8W,u!/:H'~>
+q>UPB2#eHk!;m^ps8)eIs8W,u!/:H'~>
+q>UQW_uKc9!;?ErFXdP.?g[^i"a)9u'4:/+rrmNp"VY81YQ+J"JcG`LrW%ZPJ,~>
+q>UQ'0)ttN!;?ErFXdP.?g[^i"a)9u'4:/+rrmNp"VY81YQ+J"JcG`LrW%ZPJ,~>
+q>UPB2#mUT!;?ErFXdP.?g[^i"a)9u'4:/+rrmNp"VY81YQ+J"JcG`LrW%ZPJ,~>
+q>UHTnG`Y]XPh)J8G`>i7]bOf.S0R="\,TO`[XNas8)eIs8;or!/:H'~>
+q>UH$nG`Y]XPh)J8G`>i7]bOf.S0R="\,TO`[XNas8)eIs8;or!/:H'~>
+q>UG?nG`Y]XPh)J8G`>i7]bOf.S0R="\,TO`[XNas8)eIs8;or!/:H'~>
+q>UHTm/I-i!VlZos24d7!j2S!qu6`#!Vl6cs22eTqZ)3Iqu?Wqmf3=)Rf@m~>
+q>UH$m/I-i!VlZos"=6L!j2S!qu6`#!Vl6cs";7iqZ)3Iqu?Wqmf3;>Rf@m~>
+q>UG?m/I-i!VlZos"sZR!j2S!qu6`#!Vl6cs"q[oqZ)3Iqu?Wqmf3;DRf@m~>
+q>UHTm/I-X%/p2*s24d7!hBbuqu6_g%/obss22hUqZ)3IqZ$Npmf3=)Rf@m~>
+q>UH$m/I-X%/p2*s"=6L!hBbuqu6_g%/obss";:jqZ)3IqZ$Npmf3;>Rf@m~>
+q>UG?m/I-X%/p2*s"sZR!hBbuqu6_g%/obss"q^pqZ)3IqZ$Npmf3;DRf@m~>
+q>UHTmJd7W+a*PZ!q7@Uqu6`e+a(3mqZ)3Iq#C<nL&ZZ~>
+q>UH$mJd7W+a*PZ!q7@Uqu6`e+a(3mqZ)3Iq#C<nL&ZZ~>
+q>UG?mJd7W+a*PZ!q7@Uqu6`e+a(3mqZ)3Iq#C<nL&ZZ~>
+q>UHTmf*Ca6U(;?rr`$`55>'U"8G5IppU5"!.k1Es8E"Ps*t~>
+q>UH$mf*Ca6U(;?rr`$`55>'U"8G5IppU5"!.k1Es8E"Ps*t~>
+q>UG?mf*Ca6U(;?rr`$`55>'U"8G5IppU5"!.k1Es8E"Ps*t~>
+q>UHTn,ELe:c%Y:rr`-p1\(DC"8bnNn[AJp!.k1Ds8E"Ps*t~>
+q>UH$n,ELe:c%Y:rr`-p1\(DC"8bnNn[AJp!.k1Ds8E"Ps*t~>
+q>UG?n,ELe:c%Y:rr`-p1\(DC"8bnNn[AJp!.k1Ds8E"Ps*t~>
+q>UHTnG`Uh=Y&k6rr`4&/+!36"8u@Qm'm#l!.k1Bs8E"Ps*t~>
+q>UH$nG`Uh=Y&k6rr`4&/+!36"8u@Qm'm#l!.k1Bs8E"Ps*t~>
+q>UG?nG`Uh=Y&k6rr`4&/+!36"8u@Qm'm#l!.k1Bs8E"Ps*t~>
+q>UHTnG`Q"):/<F!<2lq!b3+oroXIas8QRHci3)-rk&4-!.k1As8E"Ps*t~>
+q>UH$nG`Q"):/<F!<2lq!b3+oroXIas8QRHci3)-rk&4-!.k1As8E"Ps*t~>
+q>UG?nG`Q"):/<F!<2lq!b3+oroXIas8QRHci3)-rk&4-!.k1As8E"Ps*t~>
+q>UHTnGi@c#4MTl^B!U"qZ$]ds8Vrr!:RT#qZ)3Io)J[hL&ZZ~>
+q>UH$nGi@c#4MTl^B!U"qZ$]ds8Vrr!:RT#qZ)3Io)J[hL&ZZ~>
+q>UG?nGi@c#4MTl^B!U"qZ$]ds8Vrr!:RT#qZ)3Io)J[hL&ZZ~>
+q>UHTkPkUT/,cUMqZ)3InGiIfL&ZZ~>
+q>UH$kPkUT/,cUMqZ)3InGiIfL&ZZ~>
+q>UG?kPkUT/,cUMqZ)3InGiIfL&ZZ~>
+q>UHTkPkQ^Yc[s&!.k1=s8E"Ps*t~>
+q>UH$kPkQ^Yc[s&!.k1=s8E"Ps*t~>
+q>UG?kPkQ^Yc[s&!.k1=s8E"Ps*t~>
+q>UHTP5kCZJcG0<rW%ZPJ,~>
+q>UH$P5kCZJcG0<rW%ZPJ,~>
+q>UG?P5kCZJcG0<rW%ZPJ,~>
+q>UHTPlLU\JcG*:rW%ZPJ,~>
+q>UH$PlLU\JcG*:rW%ZPJ,~>
+q>UG?PlLU\JcG*:rW%ZPJ,~>
+q>UHTQ2g^]JcG'9rW%ZPJ,~>
+q>UH$Q2g^]JcG'9rW%ZPJ,~>
+q>UG?Q2g^]JcG'9rW%ZPJ,~>
+q>UHTQN-g^JcG$8rW%ZPJ,~>
+q>UH$QN-g^JcG$8rW%ZPJ,~>
+q>UG?QN-g^JcG$8rW%ZPJ,~>
+q>UHTR/d$`JcFs6rW%ZPJ,~>
+q>UH$R/d$`JcFs6rW%ZPJ,~>
+q>UG?R/d$`JcFs6rW%ZPJ,~>
+q>UHTRK*-aJcFp5rW%ZPJ,~>
+q>UH$RK*-aJcFp5rW%ZPJ,~>
+q>UG?RK*-aJcFp5rW%ZPJ,~>
+q>UHTSH&W,qZ,XUs20WlrW(dSs24g8s22,AJ,~>
+q>UH$SH&UAqZ,XUs"9*,rW(dSs"=9Ms":SVJ,~>
+q>UG?SH&UGqZ,XUs"oN2rW(dSs"s]Ss"q"\J,~>
+q>UHTSH&Hdi;`hpL]@>Rh>dMmrVuo8Z2]=~>
+q>UH$SH&Hdi;`g0L]@>Rh>dL-rVumMZ2]=~>
+q>UG?SH&Hdi;`g6L]@>Rh>dL3rVumSZ2]=~>
+q>UHTScAQeJcFd1rW%ZPJ,~>
+q>UH$ScAQeJcFd1rW%ZPJ,~>
+q>UG?ScAQeJcFd1rW%ZPJ,~>
+q>UHTTE"`fJcFa0rW%ZPJ,~>
+q>UH$TE"`fJcFa0rW%ZPJ,~>
+q>UG?TE"`fJcFa0rW%ZPJ,~>
+q>UHTT`=lhJcF[.rW%ZPJ,~>
+q>UH$T`=lhJcF[.rW%ZPJ,~>
+q>UG?T`=lhJcF[.rW%ZPJ,~>
+q>UHTU&XuiJcFX-rW%ZPJ,~>
+q>UH$U&XuiJcFX-rW%ZPJ,~>
+q>UG?U&XuiJcFX-rW%ZPJ,~>
+q>UHTV#LG4qZ)3Ih>dHSL&ZZ~>
+q>UH$V#LEIqZ)3Ih>dHSL&ZZ~>
+q>UG?V#LEOqZ)3Ih>dHSL&ZZ~>
+q>UHTV#U;lJcFO*rW%ZPJ,~>
+q>UH$V#U;lJcFO*rW%ZPJ,~>
+q>UG?V#U;lJcFO*rW%ZPJ,~>
+q>UHTV>pDmJcFL)rW%ZPJ,~>
+q>UH$V>pDmJcFL)rW%ZPJ,~>
+q>UG?V>pDmJcFL)rW%ZPJ,~>
+q>UHTVuQVoJcFF'rW%ZPJ,~>
+q>UH$VuQVoJcFF'rW%ZPJ,~>
+q>UG?VuQVoJcFF'rW%ZPJ,~>
+q>UHTW;l_pJcFC&rW%ZPJ,~>
+q>UH$W;l_pJcFC&rW%ZPJ,~>
+q>UG?W;l_pJcFC&rW%ZPJ,~>
+q>UHTWW2hqJcF@%rW%ZPJ,~>
+q>UH$WW2hqJcF@%rW%ZPJ,~>
+q>UG?WW2hqJcF@%rW%ZPJ,~>
+q>UHTX8i%sJcF:#rW%ZPJ,~>
+q>UH$X8i%sJcF:#rW%ZPJ,~>
+q>UG?X8i%sJcF:#rW%ZPJ,~>
+q>UHTrVlk+qu6Y)\GuF+JcF7"rW%ZPJ,~>
+q>UH$rVljmqu6Xk\GuF+JcF7"rW%ZPJ,~>
+q>UG?rVlj8qu6X6\GuF+JcF7"rW%ZPJ,~>
+q>UHTrr<",r;Ze*\c;O,JcF4!rW%ZPJ,~>
+q>UH$rr<!nr;Zdl\c;O,JcF4!rW%ZPJ,~>
+q>UG?rr<!9r;Zd7\c;O,JcF4!rW%ZPJ,~>
+q>UWYs8QO-@K$3-@K0cJs8)eIs3^lG!/:H'~>
+q>UW)s8Pjo:At1o:B+)$s8)eIs3^lG!/:H'~>
+q>UVDs8Nu:)?'R:)?1Sds8)eIs3^lG!/:H'~>
+s8W"*!WV3Yrr?L,rrZ^0s'`S?qZ)3Id/X(FL&ZZ~>
+s8W!l!WTM)rr>gnrrZ$rs%^6,qZ)3Id/X(FL&ZZ~>
+s8W!7!WRHDrr<r9rrX/=ru&KLqZ)3Id/X(FL&ZZ~>
+q>UHTrVlk+rr;n)^An'1JcF'rrW%ZPJ,~>
+q>UH$rVljmrr;mk^An'1JcF'rrW%ZPJ,~>
+q>UG?rVlj8rr;m6^An'1JcF'rrW%ZPJ,~>
+q>UHTrVlk+qu6Y)^]402JcF!prW%ZPJ,~>
+q>UH$rVljmqu6Xk^]402JcF!prW%ZPJ,~>
+q>UG?rVlj8qu6X6^]402JcF!prW%ZPJ,~>
+q>UNVs8W"*rVlk+_#O93JcEsorW%ZPJ,~>
+q>UN&s8W!lrVljm_#O93JcEsorW%ZPJ,~>
+q>UMAs8W!7rVlj8_#O93JcEsorW%ZPJ,~>
+q>UHT[K$+(JcEpnrW%ZPJ,~>
+q>UH$[K$+(JcEpnrW%ZPJ,~>
+q>UG?[K$+(JcEpnrW%ZPJ,~>
+q>UHT\,Z=*JcEjlrW%ZPJ,~>
+q>UH$\,Z=*JcEjlrW%ZPJ,~>
+q>UG?\,Z=*JcEjlrW%ZPJ,~>
+q>UHT\GuF+JcEgkrW%ZPJ,~>
+q>UH$\GuF+JcEgkrW%ZPJ,~>
+q>UG?\GuF+JcEgkrW%ZPJ,~>
+q>UHT\c;O,JcEdjrW%ZPJ,~>
+q>UH$\c;O,JcEdjrW%ZPJ,~>
+q>UG?\c;O,JcEdjrW%ZPJ,~>
+q>UHT]Dqa.JcE^hrW%ZPJ,~>
+q>UH$]Dqa.JcE^hrW%ZPJ,~>
+q>UG?]Dqa.JcE^hrW%ZPJ,~>
+q>UHT]`7j/JcE[grW%ZPJ,~>
+q>UH$]`7j/JcE[grW%ZPJ,~>
+q>UG?]`7j/JcE[grW%ZPJ,~>
+q>UHT^An$0JcEXfrW%ZPJ,~>
+q>UH$^An$0JcEXfrW%ZPJ,~>
+q>UG?^An$0JcEXfrW%ZPJ,~>
+q>UHT^]402jT#7tJcF[.rW)!Ys23"Zs23^nJ,~>
+q>UH$^]402jT#64JcF[.rW)!Ys";Ios"<1.J,~>
+q>UG?^]402jT#6:JcF[.rW)!Ys"qmus"rU4J,~>
+q>UHT_#O93j8].sJcF[.rW)!Ys23"Zs23^nJ,~>
+q>UH$_#O93j8]-3JcF[.rW)!Ys";Ios"<1.J,~>
+q>UG?_#O93j8]-9JcF[.rW)!Ys"qmus"rU4J,~>
+q>UHT_uB_SqZ)3I^An04L&ZZ~>
+q>UH$_uB]hqZ)3I^An04L&ZZ~>
+q>UG?_uB]nqZ)3I^An04L&ZZ~>
+q>UHT_uKT6JcEF`rW%ZPJ,~>
+q>UH$_uKT6JcEF`rW%ZPJ,~>
+q>UG?_uKT6JcEF`rW%ZPJ,~>
+q>UHT`;f]7JcEC_rW%ZPJ,~>
+q>UH$`;f]7JcEC_rW%ZPJ,~>
+q>UG?`;f]7JcEC_rW%ZPJ,~>
+q>UHT`rGo9JcE=]rW%ZPJ,~>
+q>UH$`rGo9JcE=]rW%ZPJ,~>
+q>UG?`rGo9JcE=]rW%ZPJ,~>
+q>UHTa8c#:JcE:\rW%ZPJ,~>
+q>UH$a8c#:JcE:\rW%ZPJ,~>
+q>UG?a8c#:JcE:\rW%ZPJ,~>
+q>UHTaT),;JcE7[rW%ZPJ,~>
+q>UH$aT),;JcE7[rW%ZPJ,~>
+q>UG?aT),;JcE7[rW%ZPJ,~>
+q>UHTbPqR[qZ)3I[f?=,L&ZZ~>
+q>UH$bPqPpqZ)3I[f?=,L&ZZ~>
+q>UG?bPqQ!qZ)3I[f?=,L&ZZ~>
+q>UHTbQ%G>JcE.XrW%ZPJ,~>
+q>UH$bQ%G>JcE.XrW%ZPJ,~>
+q>UG?bQ%G>JcE.XrW%ZPJ,~>
+q>UHTbl@P?JcE+WrW%ZPJ,~>
+q>UH$bl@P?JcE+WrW%ZPJ,~>
+q>UG?bl@P?JcE+WrW%ZPJ,~>
+q>UHTcN!bAJcE%UrW%ZPJ,~>
+q>UH$cN!bAJcE%UrW%ZPJ,~>
+q>UG?cN!bAJcE%UrW%ZPJ,~>
+q>UHTci<kBJcE"TrW%ZPJ,~>
+q>UH$ci<kBJcE"TrW%ZPJ,~>
+q>UG?ci<kBJcE"TrW%ZPJ,~>
+q>UHTd/WtCJcDtSrW%ZPJ,~>
+q>UH$d/WtCJcDtSrW%ZPJ,~>
+q>UG?d/WtCJcDtSrW%ZPJ,~>
+q>UHTe,KEcqZ)3IY5eJ$L&ZZ~>
+q>UH$e,KD#qZ)3IY5eJ$L&ZZ~>
+q>UG?e,KD)qZ)3IY5eJ$L&ZZ~>
+q>UHTe,T:FJcDkPrW%ZPJ,~>
+q>UH$e,T:FJcDkPrW%ZPJ,~>
+q>UG?e,T:FJcDkPrW%ZPJ,~>
+q>UHTeGoCGJcDhOrW%ZPJ,~>
+q>UH$eGoCGJcDhOrW%ZPJ,~>
+q>UG?eGoCGJcDhOrW%ZPJ,~>
+q>UHTf)PUIJcDbMrW%ZPJ,~>
+q>UH$f)PUIJcDbMrW%ZPJ,~>
+q>UG?f)PUIJcDbMrW%ZPJ,~>
+q>UHTfDk^JJcD_LrW%ZPJ,~>
+q>UH$fDk^JJcD_LrW%ZPJ,~>
+q>UG?fDk^JJcD_LrW%ZPJ,~>
+q>UHTf`1gKJcD\KrW%ZPJ,~>
+q>UH$f`1gKJcD\KrW%ZPJ,~>
+q>UG?f`1gKJcD\KrW%ZPJ,~>
+q>UHTgAh$MJcDVIrW%ZPJ,~>
+q>UH$gAh$MJcDVIrW%ZPJ,~>
+q>UG?gAh$MJcDVIrW%ZPJ,~>
+q>UHTg].-NJcDSHrW%ZPJ,~>
+q>UH$g].-NJcDSHrW%ZPJ,~>
+q>UG?g].-NJcDSHrW%ZPJ,~>
+q>UHTh#I6OJcDPGrW%ZPJ,~>
+q>UH$h#I6OJcDPGrW%ZPJ,~>
+q>UG?h#I6OJcDPGrW%ZPJ,~>
+q>UHThZ*HQJcDJErW%ZPJ,~>
+q>UH$hZ*HQJcDJErW%ZPJ,~>
+q>UG?hZ*HQJcDJErW%ZPJ,~>
+q>UHThuEQRJcDGDrW%ZPJ,~>
+q>UH$huEQRJcDGDrW%ZPJ,~>
+q>UG?huEQRJcDGDrW%ZPJ,~>
+q>UNVs8W"*kl:JZJcDDCrW%ZPJ,~>
+q>UN&s8W!lkl:JZJcDDCrW%ZPJ,~>
+q>UMAs8W!7kl:JZJcDDCrW%ZPJ,~>
+q>UHTqu6Y)l2UV\JcD>ArW%ZPJ,~>
+q>UH$qu6Xkl2UV\JcD>ArW%ZPJ,~>
+q>UG?qu6X6l2UV\JcD>ArW%ZPJ,~>
+q>UHTr;Qb*l2UV\JcD;@rW%ZPJ,~>
+q>UH$r;Qall2UV\JcD;@rW%ZPJ,~>
+q>UG?r;Qa7l2UV\JcD;@rW%ZPJ,~>
+s8W"*!WV3Xrr?Kns8)eIs5a4[_n,mI!<<*!_sIF'_k@$[~>
+s8W!l!WTM(rr>g[s8)eIs5a4[0"V)^!<<*!0'rW</ti5p~>
+s8W!7!WRHCrr<r&s8)eIs5a4[1qN_d!<<*!2!k8B1nal!~>
+q>UHTrVlk+li6h^JcFd1s22GJrW)uus244's21N0J,~>
+q>UH$rVljmli6h^JcFd1s":n_rW)uus"<[<s"9uEJ,~>
+q>UG?rVlj8li6h^JcFd1s"q=erW)uus"s*Bs"pDKJ,~>
+q>UHTrr2t,li6h^JcD/<rW%ZPJ,~>
+q>UH$rr2snli6h^JcD/<rW%ZPJ,~>
+q>UG?rr2s9li6h^JcD/<rW%ZPJ,~>
+q>UHTrr2t,mJm%`JcD):rW%ZPJ,~>
+q>UH$rr2snmJm%`JcD):rW%ZPJ,~>
+q>UG?rr2s9mJm%`JcD):rW%ZPJ,~>
+q>UHTlMp_]JcD&9rW%ZPJ,~>
+q>UH$lMp_]JcD&9rW%ZPJ,~>
+q>UG?lMp_]JcD&9rW%ZPJ,~>
+q>UHTli6h^JcD#8rW%ZPJ,~>
+q>UH$li6h^JcD#8rW%ZPJ,~>
+q>UG?li6h^JcD#8rW%ZPJ,~>
+q>UHTmJm%`JcCr6rW%ZPJ,~>
+q>UH$mJm%`JcCr6rW%ZPJ,~>
+q>UG?mJm%`JcCr6rW%ZPJ,~>
+q>UHTmf3.aJcCo5rW%ZPJ,~>
+q>UH$mf3.aJcCo5rW%ZPJ,~>
+q>UG?mf3.aJcCo5rW%ZPJ,~>
+q>UHTn,N7bJcCl4rW%ZPJ,~>
+q>UH$n,N7bJcCl4rW%ZPJ,~>
+q>UG?n,N7bJcCl4rW%ZPJ,~>
+q>UHTo)A^-qZ)3IO8o1ZL&ZZ~>
+q>UH$o)A\BqZ)3IO8o1ZL&ZZ~>
+q>UG?o)A\HqZ)3IO8o1ZL&ZZ~>
+q>UHTo)JReJcCc1rW%ZPJ,~>
+q>UH$o)JReJcCc1rW%ZPJ,~>
+q>UG?o)JReJcCc1rW%ZPJ,~>
+q>UHToDe[fJcC`0rW%ZPJ,~>
+q>UH$oDe[fJcC`0rW%ZPJ,~>
+q>UG?oDe[fJcC`0rW%ZPJ,~>
+q>UHTp&FmhJcCZ.rW%ZPJ,~>
+q>UH$p&FmhJcCZ.rW%ZPJ,~>
+q>UG?p&FmhJcCZ.rW%ZPJ,~>
+q>UHTpAb!iJcCW-rW%ZPJ,~>
+q>UH$pAb!iJcCW-rW%ZPJ,~>
+q>UG?pAb!iJcCW-rW%ZPJ,~>
+q>UHTp](*jJcCT,rW%ZPJ,~>
+q>UH$p](*jJcCT,rW%ZPJ,~>
+q>UG?p](*jJcCT,rW%ZPJ,~>
+q>UHTqYpQ5qZ)3IL]@>RL&ZZ~>
+q>UH$qYpOJqZ)3IL]@>RL&ZZ~>
+q>UG?qYpOPqZ)3IL]@>RL&ZZ~>
+q>UHTqZ$Em[K$9EJcF7"rW(CHs23gqs23LhJ,~>
+q>UH$qZ$Em[K$7ZJcF7"rW(CHs"<:1s";t(J,~>
+q>UG?qZ$Em[K$7`JcF7"rW(CHs"r^7s"rC.J,~>
+q>UHTqu?Nn[/^0DJcF7"rW(CHs23gqs23LhJ,~>
+q>UH$qu?Nn[/^.YJcF7"rW(CHs"<:1s";t(J,~>
+q>UG?qu?Nn[/^._JcF7"rW(CHs"r^7s"rC.J,~>
+q>UHTrVu`pJcCB&rW%ZPJ,~>
+q>UH$rVu`pJcCB&rW%ZPJ,~>
+q>UG?rVu`pJcCB&rW%ZPJ,~>
+q>UHTrr;iqJcC?%rW%ZPJ,~>
+q>UH$rr;iqJcC?%rW%ZPJ,~>
+q>UG?rr;iqJcC?%rW%ZPJ,~>
+q>UNVs8VrrJcC<$rW%ZPJ,~>
+q>UN&s8VrrJcC<$rW%ZPJ,~>
+q>UMAs8VrrJcC<$rW%ZPJ,~>
+q>UH4qZ)3IJcGcMrW%ZPJ,~>
+q>UFIqZ)3IJcGcMrW%ZPJ,~>
+q>UFOqZ)3IJcGcMrW%ZPJ,~>
+q>^<lJcC<$rr;rtL&ZZ~>
+q>^<lJcC<$rr;rtL&ZZ~>
+q>^<lJcC<$rr;rtL&ZZ~>
+q>^?mJcC<$rVuisL&ZZ~>
+q>^?mJcC<$rVuisL&ZZ~>
+q>^?mJcC<$rVuisL&ZZ~>
+q>^EoJcC<$qu?WqL&ZZ~>
+q>^EoJcC<$qu?WqL&ZZ~>
+q>^EoJcC<$qu?WqL&ZZ~>
+q>UHTJcC<$q>^EoL&ZZ~>
+q>UH$JcC<$q>^EoL&ZZ~>
+q>UG?JcC<$q>^EoL&ZZ~>
+q>UHTJcC<$q>^EoL&ZZ~>
+q>UH$JcC<$q>^EoL&ZZ~>
+q>UG?JcC<$q>^EoL&ZZ~>
+q>UHTli7"&bQ%U[JcEjlrW)cos20otJ,~>
+q>UH$li6u;bQ%SpJcEjlrW)cos"9B4J,~>
+q>UG?li6uAbQ%T!JcEjlrW)cos"of:J,~>
+q>UHTli7"&bQ%U[JcEjlrW)cos20otJ,~>
+q>UH$li6u;bQ%SpJcEjlrW)cos"9B4J,~>
+q>UG?li6uAbQ%T!JcEjlrW)cos"of:J,~>
+JcC<$nGiIfL&ZZ~>
+JcC<$nGiIfL&ZZ~>
+JcC<$nGiIfL&ZZ~>
+qYpP(i;`gcjSo3grVuk*kPkNjrVuk*l2U`kr;Qb*l2UZirr2t,kl:Qhrr<",k5PEirr;t+l2U__
+rr;t+l2UZirVlk+kPtQjrVlk+k5YHirVun+nc++~>
+qYpOji;`gPjSo3TrVujlkPkNWrVujll2U`Xr;Qall2UZVrr2snkl:QUrr<!nk5PEVrr;sml2U__
+rr;sml2UZVrVljmkPtQWrVljmk5YHVrVummnc++~>
+qYpO5i;`fpjSo2trVuj7kPkN"rVuj7l2U`#r;Qa7l2UZ!rr2s9kl:Purr<!9k5PE!rr;s8l2U__
+rr;s8l2UZ!rVlj8kPtQ"rVlj8k5YH!rVum8nc++~>
+qu6_+s'ape!+Fpfs'bp,!+Gm,!+G-ls'bp,!+Gm,!+G3n!+Gm,!+Gm,s'b$h"_%H2@K0ctrrZ^0
+s'b$hs'bs-!+Gm,!+G0mrW)uu!+Gm,!+G0m!+Ga(s'b-k!+Gg*!b)+;kl1Wkr;Qb*n,In~>
+qu6^ms%_SR!)DSSs%`Rn!)EOn!)DeYs%`Rn!)EOn!)Dk[!)EOn!)EOns%_\U"]#*t:B+)NrrZ$r
+s%_\Us%`Uo!)EOn!)DhZrW)uu!)EOn!)DhZ!)ECjs%_eX!)EIl!`&bjkl1WXr;Qaln,In~>
+qu6^8ru'hr!#ahsru(h9!#be9!#b&$ru(h9!#be9!#b,&!#be9!#be9ru'qu"W@@?)?1T9rrX/=
+ru'quru(k:!#be9!#b)%rW)uu!#be9!#b)%!#bY5ru(&#!#b_7!ZD"Ukl1W#r;Qa7n,In~>
+r;Qb*rr2t,jSo3gj8T0hs'bd(!+G0m!b)+;rr2t,rr2t,kPk]os8QO-@HRRl@K6@9rr2t,kPkWm
+s8QNhrrQX/@Jg')@I!ml!<<'!@K-9,@I!jp@K0bErr3%.s'b0l!+Gg*!+Gm,!+G0m!+Gg*!+G<q
+J,~>
+r;Qalrr2snjSo3Tj8T0Us%`Fj!)DhZ!`&bjrr2snrr2snkPk]\s8Pjo:?MQY:B1>hrr2snkPkWZ
+s8PjUrrPsq:Ab%k:?qlY!<<'!:B(7n:?qi]:B+'arr3$ps%_hY!)EIl!)EOn!)DhZ!)EIl!)Dt^
+J,~>
+r;Qa7rr2s9jSo2tj8T/uru(\5!#b)%!ZD"Urr2s9rr2s9kPk]'s8Nu:)<Ur$)?9^Srr2s9kPkW%
+s8NturrO)<)>jF6)=%8$!<<'!)?0X9)=%5()?1Qlrr3$;ru()$!#b_7!#be9!#b)%!#b_7!#b5)
+J,~>
+r;Qb*rr2t,jSo<js']?srr?L*s8QNjrr?L+s8HHjs8QO-rrZ^0s'b*js'bs-!+Gm,!+G*ks'bs-
+"(D4<@Hmdo@K6@9rVun+lMpb^s8W(,l2Ucls8N72s'bs-@Hmdr@K0bEs8QO,rr?Kmrs<-6@:B39
+@K0bEnc++~>
+r;Qalrr2snjSo<Ws%Z>Mrr>gls8PjWrr>gms8GdWs8PjorrZ$rs%_bWs%`Uo!)EOn!)DbXs%`Uo
+"&Akk:?hc\:B1>hrVummlMpb^s8W'nl2UcYs8N6ts%`Uo:?hc_:B+'as8Pjnrr>gZrs;I#:/:ih
+:B+'anc++~>
+r;Qa7rr2s9jSo<"rtu^8rr<r7s8Nu"rr<r8s8Eo"s8Nu:rrX/=ru(#"ru(k:!#be9!#b##ru(k:
+!u_+V)<q/')?9^SrVum8lMpb^s8W'9l2Uc$s8N6?ru(k:)<q/*)?1Qls8Nu9rr<r%rs9SC)&`JS
+)?1Qlnc++~>
+r;Qb*rr2t,jT#6gs8N(-jo5<hrVlk+jo5<hrr2t,rr2t,lMgimrVue(k5PKks'bp,!+G$i#%@O?
+@K6@9lMpcjs8N(-kl:P\!WQU-rr?KirrHR.r*emjs'bs-!b)+;rr2t,lMplms8N:3s']@9s'bKu
+J,~>
+r;Qalrr2snjT#6Ts8N'ojo5<UrVljmjo5<Urr2snrr2snlMgiZrVudjk5PKXs%`Rn!)D\V##>1n
+:B1>hlMpcWs8N'okl:P\!WPporr>gVrrGmpr(cPWs%`Uo!`&bjrr2snlMplZs8N9us%Z>hs%`.b
+J,~>
+r;Qa7rr2s9jT#5ts8N':jo5;urVlj8jo5;urr2s9rr2s9lMgi%rVud5k5PK#ru(h9!#ar!"r[FY
+)?9^SlMpc"s8N':kl:P\!WO&:rr<r!rrF#;r#+f"ru(k:!ZD"Urr2s9lMpl%s8N9@rtu^Sru(D-
+J,~>
+qu6_+s'bm+!+G*k!+Gm,!+G!h!+Gm,!+Fsg!+Gm,!+Gm,!+G3n!+G^'!+G-l!+Gm,"_%H2@K0d#
+rr?L,rrQX/@K-9,@H[Xm@K6@9kPtG[!WQU-rr?Kmrr?L,rr?L+rr?Klrr?L,rrlj2s'bq9l2L`l
+rr3%.s'bp,!+GO"!<E.M~>
+qu6^ms%`Om!)DbX!)EOn!)DYU!)EOn!)DVT!)EOn!)EOn!)Dk[!)E@i!)DeY!)EOn"]#*t:B+)R
+rr>gnrrPsq:B(7n:?VWZ:B1>hkPtG[!WPporr>gZrr>gnrr>gmrr>gYrr>gnrrl0ts%`Shl2L`Y
+rr3$ps%`Rn!)E1d!<E.M~>
+qu6^8ru(e8!#b##!#be9!#anu!#be9!#akt!#be9!#be9!#b,&!#bV4!#b&$!#be9"W@@?)?1T=
+rr<r9rrO)<)?0X9)<_#%)?9^SkPtG[!WO&:rr<r%rr<r9rr<r8rr<r$rr<r9rrj;?ru(hSl2L`$
+rr3$;ru(h9!#bG/!<E.M~>
+qYpP(rVlq-s'b-kraFshr*]U*r*emjr*fX*raG*lr*fR(!+G*kraGd*!+G'jraGg+raFsh!b)-/
+r*epkquHcsraG$jraGa)!+G*kraGd*!+G'jraGg+raGI!!WXVJJ,~>
+qYpOjrVlpos%_eXr_DVUr([7lr(cPWr(d:lr_DbYr(d4j!)DbXr_EFl!)D_Wr_EImr_DVU!`&dq
+r(cSXquHcsr_D\Wr_ECk!)DbXr_EFl!)D_Wr_EImr_E+c!WXVJJ,~>
+qYpO5rVlp:ru(&#rYakur##M7r#+f"r#,P7rYb#$r#,J5!#b##rYb\7!#au"rYb_8rYaku!ZD%<
+r#+i#quHcsrYar"rYbY6!#b##rYb\7!#au"rYb_8rYbA.!WXVJJ,~>
+pAY,$rr2t,JcC<$quDWS!rs_(s*t~>
+pAY+frr2snJcC<$quDWS!rs_(s*t~>
+pAY+1rr2s9JcC<$quDWS!rs_(s*t~>
+s5X#crVlk+rr3"-s30Nrs2sBps2j<os2sBps2j<os5;r3rr`<Lh#ID)~>
+s0MVurVljmrr3!os3.hBs2q\@s2hV?s2q\@s2hV?s5:6Xrr`<Lh#ID)~>
+s*=M[rVlj8rr3!:s3,c]s2oW[s2fQZs2oW[s2fQZs581srr`<Lh#ID)~>
+q>UP*s8QO,rr?Kjrr?Kcrr?Kcrr?Kdrr?Kcrr?Kcrr?Kcrr?Kis8U"9rr?Kcrr?Kcrr?Kcrr?L"
+rriBMh#@BSJ,~>
+q>UOls8Pjnrr>gWrr>gPrr>gPrr>gQrr>gPrr>gPrr>gPrr>gVs8O_Nrr>gPrr>gPrr>gPrr>gd
+rriBMh#@BSJ,~>
+q>UO7s8Nu9rr<r"rr<qprr<qprr<qqrr<qprr<qprr<qprr<r!s8OqTrr<qprr<qprr<qprr<r/
+rriBMh#@BSJ,~>
+q>UG'rr3%.s'b'i!+Fgc!+Fgc!+Fjd!+Fgc!+Fgc!+Fgc!+Fjd!+Fgc!+Fgc!+Fgc!+GR#"op%+
+rr=GHJ,~>
+q>UFirr3$ps%__V!)DJP!)DJP!)DMQ!)DJP!)DJP!)DJP!)DMQ!)DJP!)DJP!)DJP!)E4e"op%+
+rr=GHJ,~>
+q>UF4rr3$;ru'u!!#a_p!#a_p!#abq!#a_p!#a_p!#a_p!#abq!#a_p!#a_p!#a_p!#bJ0"op%+
+rr=GHJ,~>
+q>UG'rVlk+jo5<hi;Wdci;WdciVrmdi;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;WdcpAY?t-f"_%
+-f"`P~>
+q>UFirVljmjo5<Ui;WdPi;WdPiVrmQi;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPpAY?t-f"_%
+-f"`P~>
+q>UF4rVlj8jo5;ui;Wcpi;WcpiVrlqi;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;WcppAY?t-f"_%
+-f"`P~>
+q>UG'i;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;Wdcp\tL!-f"_%-f"b%
+J,~>
+q>UFii;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPp\tL!-f"_%-f"b%
+J,~>
+q>UF4i;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;Wcpp\tL!-f"_%-f"b%
+J,~>
+q>UG'i;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;WdciVrmdi;Wdci;Wdci;Wdcq#:X#-f"_%-f"_%
+s*t~>
+q>UFii;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPiVrmQi;WdPi;WdPi;WdPq#:X#-f"_%-f"_%
+s*t~>
+q>UF4i;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;WcpiVrlqi;Wcpi;Wcpi;Wcpq#:X#-f"_%-f"_%
+s*t~>
+q>UHTJcC<$L&VJ[-f"_%-f"_%-i\\~>
+q>UH$JcC<$L&VJ[-f"_%-f"_%-i\\~>
+q>UG?JcC<$L&VJ[-f"_%-f"_%-i\\~>
+q>UHTJcC<$LAqV]-f"_%-f"_%-f"`P~>
+q>UH$JcC<$LAqV]-f"_%-f"_%-f"`P~>
+q>UG?JcC<$LAqV]-f"_%-f"_%-f"`P~>
+q>UHTJcC<$JcGTHJ,~>
+q>UH$JcC<$JcGTHJ,~>
+q>UG?JcC<$JcGTHJ,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
--- axiom-20170501.orig/books/Makefile.pamphlet
+++ axiom-20170501/books/Makefile.pamphlet
@@ -78,13 +78,13 @@ COOKBOOK=${PDF}/cookbook
 \getchunk{cookbook}
 \getchunk{sourcecode}
 
-PROVE=${PROOFS}/acl2.lisp ${PROOFS}/coq.lisp
+PROVE=${PROOFS}/acl2.lisp ${PROOFS}/coq.v
 
 OTHER=  ${PDF}/refcard.pdf     ${PDF}/endpaper.pdf    ${PDF}/rosetta.pdf
 
 all: announce tanglecopy ${PDF}/axiom.bib ${PROVE} ${OTHER} ${COOKPAGES} \
-     ${BOOKPDF} ${PDF}/toc.pdf spadedit axbook 
-	@(cd ${PDF} ; ${RM} *.out *.toc *.sty *.def *.png *.bbl *.blg)
+     ${BOOKPDF} ${PDF}/toc.pdf ${OUT1}/SPADEDIT axbook 
+	@(cd ${PDF} ; ${RM} *.out *.sty *.def *.png *.bbl *.blg)
 
 tanglecopy:
 	@ echo ==================================
@@ -119,9 +119,9 @@ ${PROOFS}/acl2.lisp:
 	    ( cd ${PROOFS} ; echo '(ld "acl2.lisp")' | acl2 >acl2.output ) ; \
 	   fi ; 
 
-${PROOFS}/coq.lisp:
+${PROOFS}/coq.v:
 	@ echo ===========================================
-	@ echo making ${PROOFS}/coq.lisp
+	@ echo making ${PROOFS}/coq.v
 	@ echo ===========================================
 	@ ${BOOKS}/tanglec ${BOOKS}/bookvol10.2.pamphlet coq >${PROOFS}/coq.v
 	@ ${BOOKS}/tanglec ${BOOKS}/bookvol10.3.pamphlet coq >>${PROOFS}/coq.v
@@ -186,7 +186,7 @@ ${COOKBOOK}/%.pdf: ${COOKIN}/%.pamphlet
 	  ${RM} $*.ilg $*.ind *.bbl *.blg *.sty)
 
 
-${PDF}/%.pdf: ${IN}/%.pamphlet ${PDF}/axiom.bib ${PDF}/axiom.bst 
+${PDF}/%.pdf ${PDF}/%.toc: ${IN}/%.pamphlet ${PDF}/axiom.bib ${PDF}/axiom.bst 
 	@ echo ===========================================
 	@ echo making ${PDF}/$*.pdf from ${IN}/$*.pamphlet
 	@ echo ===========================================
@@ -196,22 +196,22 @@ ${PDF}/%.pdf: ${IN}/%.pamphlet ${PDF}/ax
 	  cp ${IN}/bookheader.tex ${PDF} ; \
 	  cp -pr ${IN}/ps ${PDF} ; \
 	  ${RM} $*.toc ; \
-	  touch signatures.tex ; \
+	  touch signatures.$*.tex ; \
 	  touch $*.sigs ; \
 	  if [ -z "${NOISE}" ] ; then \
 	    ${LATEX} $*.pamphlet ; \
-	    cp signatures.tex $*.sigs ; \
+	    cp signatures.$*.tex $*.sigs ; \
 	    ${MAKEINDEX} $*.idx  1>/dev/null 2>/dev/null ; \
 	    ${BIBTEX} $*.aux ; \
 	    ${LATEX} $*.pamphlet >/dev/null ; \
 	    ${LATEX} $*.pamphlet >/dev/null ; \
 	    ${DVIPDFM} $*.dvi 2>/dev/null ; \
 	    ${RM} $*.aux $*.dvi $*.log $*.ps $*.idx $*.tex $*.pamphlet ; \
-	    ${RM} $*.ilg $*.ind *.sigs signatures.tex ; \
+	    ${RM} $*.ilg $*.ind *.sigs signatures.$*.tex ; \
 	    ${RM} bookheader.tex ; \
 	  else \
-	    ${LATEX} $*.pamphlet >${TMP}/trace ; \
-	    cp signatures.tex $*.sigs ; \
+	    ${LATEX} $*.pamphlet >${TMP}/trace.$* ; \
+	    cp signatures.$*.tex $*.sigs ; \
 	    ${MAKEINDEX} $*.idx  1>/dev/null 2>/dev/null ; \
 	    ${BIBTEX} $*.aux  1>/dev/null 2>/dev/null ; \
 	    ${LATEX} $*.pamphlet >${TMP}/trace ; \
@@ -219,7 +219,7 @@ ${PDF}/%.pdf: ${IN}/%.pamphlet ${PDF}/ax
 	    ${DVIPDFM} $*.dvi 2>${TMP}/trace ; \
 	    ${RM} $*.aux $*.dvi $*.log $*.ps $*.idx $*.tex $*.pamphlet ; \
 	    ${RM} $*.ilg $*.ind ; \
-	    ${RM} $*.ilg $*.ind *.sigs signatures.tex ; \
+	    ${RM} $*.ilg $*.ind *.sigs signatures.$*.tex ; \
 	    ${RM} bookheader.tex ; \
 	  fi ; \
 	  ${RM} $*.aux $*.dvi $*.log $*.ps $*.idx $*.tex $*.pamphlet ; \
@@ -259,7 +259,7 @@ The sed patterns to match and remove the
             -e 's/{subsection.[A-Z]*.[0-9]*.[0-9]*}//' \
 \end{chunk}
 \begin{chunk}{*}
-${PDF}/toc.pdf: ${BOOKPDF}
+${PDF}/toc.pdf: ${BOOKPDF} $(patsubst %.pdf,%.toc,$(BOOKPDF))
 	@echo b3 making ${PDF}/toc.pdf
 	@ cp ${BOOKS}/ps/axiomfront.ps ${PDF}
 	@ cp ${BOOKS}/ps/bluebayou.ps ${PDF}
@@ -430,11 +430,16 @@ ${PDF}/toc.pdf: ${BOOKPDF}
 
 \end{chunk}
 \begin{chunk}{*}
-spadedit:
-	@echo b4 making spadedit from ${BOOKS}/bookvol5 to ${OUT1}
-	@${BOOKS}/tanglec ${BOOKS}/bookvol5.pamphlet spadedit \
-            >${OUT1}/SPADEDIT
-	@chmod +x ${OUT1}/SPADEDIT
+${OUT1}/SPADEDIT: ${BOOKS}/bookvol5.pamphlet
+	@echo b4 making $@ from $^
+	@${BOOKS}/tanglec $< spadedit >$@
+	@chmod +x $@
+		  
+#spadedit:
+#	@echo b4 making spadedit from ${BOOKS}/bookvol5 to ${OUT1}
+#	@${BOOKS}/tanglec ${BOOKS}/bookvol5.pamphlet spadedit \
+#            >${OUT1}/SPADEDIT
+#	@chmod +x ${OUT1}/SPADEDIT
 
 \end{chunk}
 \section{Combined Bibliography}
--- axiom-20170501.orig/books/bookvol10.pamphlet
+++ axiom-20170501/books/bookvol10.pamphlet
@@ -780,10 +780,10 @@ LAYER1=\
   ${OUT}/RESLATC.o  ${OUT}/RETRACT.o  ${OUT}/RETRACT-.o ${OUT}/RMODULE.o  \
   ${OUT}/SEGBIND2.o ${OUT}/SEGCAT.o   ${OUT}/SETCATD.o  \
   ${OUT}/SEXCAT.o   ${OUT}/SGROUP.o   \
-  ${OUT}/SGROUP-.o  ${OUT}/SPACEC.o   ${OUT}/SPLNODE.o  ${OUT}/STEP.o     \
+  ${OUT}/SGROUP-.o  ${OUT}/SPACEC.o   ${OUT}/STEP.o     \
   ${OUT}/STNSR.o    \
   ${OUT}/STREAM1.o  ${OUT}/STREAM2.o  ${OUT}/STREAM3.o  ${OUT}/SUCH.o     \
-  ${OUT}/TEX1.o     ${OUT}/UDVO.o     ${OUT}/YSTREAM.o 
+  ${OUT}/TEX1.o     ${OUT}/YSTREAM.o 
 
 \end{chunk}
 \begin{chunk}{layerpic}
@@ -1256,19 +1256,19 @@ LAYER2=\
   ${OUT}/BLQT.o     ${OUT}/BMODULE.o  ${OUT}/CACHSET.o  \
   ${OUT}/CHARNZ.o   ${OUT}/CHARZ.o    ${OUT}/DVARCAT.o  ${OUT}/DVARCAT-.o \
   ${OUT}/ELEMFUN.o  ${OUT}/ELEMFUN-.o ${OUT}/ESTOOLS2.o ${OUT}/EVALAB.o   \
-  ${OUT}/EVALAB-.o  ${OUT}/FAMONC.o   ${OUT}/FCOMP.o    ${OUT}/FEVALAB.o  \
-  ${OUT}/FEVALAB-.o ${OUT}/FMC.o      ${OUT}/FMFUN.o    ${OUT}/FORTFN.o   \
+  ${OUT}/EVALAB-.o  ${OUT}/FAMONC.o   ${OUT}/FCOMP.o    \
+  ${OUT}/FMC.o      ${OUT}/FMFUN.o    ${OUT}/FORTFN.o   \
   ${OUT}/FPATMAB.o  ${OUT}/FVC.o      ${OUT}/FVFUN.o    ${OUT}/GROUP.o    \
   ${OUT}/GROUP-.o   ${OUT}/IDPAG.o    ${OUT}/IDPAM.o    ${OUT}/IDPO.o     \
-  ${OUT}/INCRMAPS.o ${OUT}/INTRET.o   ${OUT}/IXAGG.o    ${OUT}/IXAGG-.o   \
+  ${OUT}/INCRMAPS.o ${OUT}/INTRET.o   \
   ${OUT}/KERNEL2.o  ${OUT}/LALG.o     ${OUT}/LALG-.o    ${OUT}/LINEXP.o   \
   ${OUT}/MODMONOM.o ${OUT}/MONADWU.o  ${OUT}/MONADWU-.o ${OUT}/MRF2.o     \
   ${OUT}/NARNG.o    ${OUT}/NARNG-.o   ${OUT}/NSUP2.o    ${OUT}/OASGP.o    \
-  ${OUT}/ODVAR.o    ${OUT}/OPQUERY.o  ${OUT}/ORDFIN.o   ${OUT}/ORDMON.o   \
-  ${OUT}/PATMATCH.o ${OUT}/PERMCAT.o  ${OUT}/PDRING.o   ${OUT}/PDRING-.o  \
+  ${OUT}/OPQUERY.o  ${OUT}/ORDFIN.o   ${OUT}/ORDMON.o   \
+  ${OUT}/PATMATCH.o ${OUT}/PDRING.o   ${OUT}/PDRING-.o  \
   ${OUT}/PLACESC.o  ${OUT}/PRSPCAT.o  \
-  ${OUT}/SDVAR.o    ${OUT}/SEGXCAT.o  ${OUT}/SUP2.o     ${OUT}/TRIGCAT.o  \
-  ${OUT}/TRIGCAT-.o ${OUT}/ULS2.o     ${OUT}/UP2.o 
+  ${OUT}/SEGXCAT.o  ${OUT}/SPLNODE.o  ${OUT}/SUP2.o     ${OUT}/TRIGCAT.o  \
+  ${OUT}/TRIGCAT-.o ${OUT}/UDVO.o     ${OUT}/ULS2.o     ${OUT}/UP2.o 
 
 \end{chunk}
 \begin{chunk}{layerpic}
@@ -1711,12 +1711,11 @@ LAYER3=\
   ${OUT}/AUTOMOR.o  ${OUT}/BGAGG.o   ${OUT}/BGAGG-.o   ${OUT}/BRAGG.o    \
   ${OUT}/BRAGG-.o   ${OUT}/CARTEN2.o ${OUT}/CHARPOL.o  ${OUT}/COMPLEX2.o \
   ${OUT}/DIFEXT.o   ${OUT}/DIFEXT-.o ${OUT}/DLAGG.o    ${OUT}/DSTRCAT.o  \
-  ${OUT}/ELAGG.o    \
-  ${OUT}/ELAGG-.o   ${OUT}/ES1.o     ${OUT}/ES2.o      ${OUT}/GRMOD.o    \
-  ${OUT}/GRMOD-.o   ${OUT}/HYPCAT.o  ${OUT}/HYPCAT-.o  ${OUT}/LORER.o    \
+  ${OUT}/ES1.o     ${OUT}/ES2.o      ${OUT}/FEVALAB.o  ${OUT}/FEVALAB-.o ${OUT}/GRMOD.o    \
+  ${OUT}/GRMOD-.o   ${OUT}/HYPCAT.o  ${OUT}/HYPCAT-.o  ${OUT}/IXAGG.o   ${OUT}/IXAGG-.o   ${OUT}/LORER.o    \
   ${OUT}/MKCHSET.o  \
   ${OUT}/MODRING.o  ${OUT}/MODULE.o  ${OUT}/MODULE-.o  ${OUT}/NASRING.o  \
-  ${OUT}/NASRING-.o ${OUT}/OAMON.o   ${OUT}/SORTPAK.o  ${OUT}/ZMOD.o 
+  ${OUT}/NASRING-.o ${OUT}/OAMON.o   ${OUT}/ODVAR.o    ${OUT}/PERMCAT.o  ${OUT}/SDVAR.o   ${OUT}/ZMOD.o 
 
 \end{chunk}
 
@@ -1955,9 +1954,10 @@ Used by next layer: ALGEBRA ALGEBRA- BTC
 
 LAYER4=\
   ${OUT}/ALGEBRA.o ${OUT}/ALGEBRA-.o ${OUT}/BTCAT.o  ${OUT}/BTCAT-.o \
-  ${OUT}/FMCAT.o   ${OUT}/IDPOAM.o   ${OUT}/IFAMON.o ${OUT}/GRALG.o  \
-  ${OUT}/GRALG-.o  ${OUT}/NAALG.o    ${OUT}/NAALG-.o ${OUT}/OCAMON.o \
-  ${OUT}/PRQAGG.o  ${OUT}/QUAGG.o    ${OUT}/SKAGG.o  
+  ${OUT}/ELAGG.o    \
+  ${OUT}/ELAGG-.o  ${OUT}/FMCAT.o   ${OUT}/IDPOAM.o   ${OUT}/IFAMON.o ${OUT}/GRALG.o  \
+  ${OUT}/GRALG-.o  ${OUT}/NAALG.o    ${OUT}/NAALG-.o  ${OUT}/OCAMON.o \
+  ${OUT}/PRQAGG.o  ${OUT}/QUAGG.o    ${OUT}/SKAGG.o   ${OUT}/SORTPAK.o  
 
 \end{chunk}
 \begin{chunk}{layerpic}
@@ -2062,7 +2062,7 @@ LAYER5=\
   ${OUT}/DQAGG.o   ${OUT}/FACTFUNC.o ${OUT}/FMTC.o     ${OUT}/FR2.o      \
   ${OUT}/FRAC2.o   ${OUT}/FRUTIL.o   ${OUT}/ITAYLOR.o  ${OUT}/MLO.o      \
   ${OUT}/NEWTON.o  ${OUT}/OAGROUP.o  ${OUT}/OAMONS.o   ${OUT}/OP.o       \
-  ${OUT}/PID.o     ${OUT}/RANDSRC.o  ${OUT}/UNISEG2.o  ${OUT}/XALG.o     
+  ${OUT}/PID.o     ${OUT}/RANDSRC.o  ${OUT}/XALG.o     
 
 \end{chunk}
 \begin{chunk}{layerpic}
@@ -2230,7 +2230,7 @@ LAYER6=\
   ${OUT}/LA.o       ${OUT}/MAPPKG4.o  ${OUT}/OMLO.o    ${OUT}/ORTHPOL.o  \
   ${OUT}/PRODUCT.o  ${OUT}/PADICCT.o  ${OUT}/PMPRED.o  ${OUT}/PMASS.o   \
   ${OUT}/PTFUNC2.o  ${OUT}/RADCAT.o   ${OUT}/RADCAT-.o ${OUT}/RATRET.o  \
-  ${OUT}/RADUTIL.o  ${OUT}/UPXS2.o    ${OUT}/XFALG.o   ${OUT}/ZLINDEP.o 
+  ${OUT}/RADUTIL.o  ${OUT}/UNISEG2.o  ${OUT}/UPXS2.o    ${OUT}/XFALG.o   ${OUT}/ZLINDEP.o 
 
 \end{chunk}
 \begin{chunk}{layerpic}
@@ -2739,7 +2739,7 @@ LAYER7=\
   ${OUT}/BTREE.o    ${OUT}/CRAPACK.o  ${OUT}/DEQUEUE.o  ${OUT}/DIRRING.o  \
   ${OUT}/DIV.o      ${OUT}/DLIST.o    \
   ${OUT}/DRAWCX.o   ${OUT}/DRAWPT.o   ${OUT}/D01GBFA.o  ${OUT}/D02EJFA.o  \
-  ${OUT}/D03FAFA.o  ${OUT}/FAMR.o     ${OUT}/FAMR-.o    ${OUT}/FIELD.o    \
+  ${OUT}/D03FAFA.o  ${OUT}/FAMR.o     ${OUT}/FAMR-.o        \
   ${OUT}/FLASORT.o  \
   ${OUT}/FLAGG2.o   ${OUT}/FGROUP.o   ${OUT}/FM.o       ${OUT}/FM1.o      \
   ${OUT}/FPC.o      ${OUT}/FPC-.o     ${OUT}/FMONOID.o  ${OUT}/INDE.o     \
@@ -4179,9 +4179,9 @@ LAYER8=\
   ${OUT}/MATSTOR.o  ${OUT}/ORESUP.o   ${OUT}/OREPCTO.o  ${OUT}/OREUP.o    \
   ${OUT}/PACFFC.o   \
   ${OUT}/PLOT3D.o   ${OUT}/POLYVEC.o \
-  ${OUT}/PR.o       ${OUT}/PREASSOC.o ${OUT}/PRIMARR2.o \
+  ${OUT}/PR.o       ${OUT}/PRIMARR2.o \
   ${OUT}/PROJSP.o   \
-  ${OUT}/REDORDER.o ${OUT}/SRAGG.o    ${OUT}/SRAGG-.o   ${OUT}/STREAM.o   \
+  ${OUT}/SRAGG.o    ${OUT}/SRAGG-.o   ${OUT}/STREAM.o   \
   ${OUT}/SYMPOLY.o  ${OUT}/TS.o       ${OUT}/TUPLE.o    ${OUT}/UPSCAT.o   \
   ${OUT}/UPSCAT-.o  ${OUT}/U8VEC.o    ${OUT}/U16VEC.o   ${OUT}/U32VEC.o   \
   ${OUT}/VECTCAT.o  ${OUT}/VECTCAT-.o ${OUT}/XDPOLY.o   \
@@ -4980,7 +4980,7 @@ LAYER9=\
   ${OUT}/IVECTOR.o  ${OUT}/LOCPOWC.o  \
   ${OUT}/LODO1.o    ${OUT}/LODO2.o    ${OUT}/LPOLY.o   \
   ${OUT}/LSMP.o     ${OUT}/LSMP1.o    ${OUT}/MAMA.o     ${OUT}/MATCAT2.o  \
-  ${OUT}/PROJPL.o   ${OUT}/PTCAT.o    ${OUT}/STRICAT.o  ${OUT}/TRIMAT.o  \
+  ${OUT}/PREASSOC.o ${OUT}/PROJPL.o   ${OUT}/PTCAT.o    ${OUT}/REDORDER.o ${OUT}/STRICAT.o  ${OUT}/TRIMAT.o  \
   ${OUT}/U8MAT.o    ${OUT}/U16MAT.o   ${OUT}/U32MAT.o 
 
 \end{chunk}
@@ -10785,8 +10785,8 @@ Used by next layer: ALIST
 
 LAYER15=\
   ${OUT}/ALIST.o   ${OUT}/EQTBL.o   ${OUT}/GSTBL.o   ${OUT}/HASHTBL.o \
-  ${OUT}/INTABL.o  ${OUT}/INTFTBL.o ${OUT}/INTPACK.o ${OUT}/IPF.o     \
-  ${OUT}/KAFILE.o  ${OUT}/PATRES.o  ${OUT}/PDEPACK.o ${OUT}/STBL.o    \
+  ${OUT}/INTABL.o  ${OUT}/INTFTBL.o ${OUT}/IPF.o     \
+  ${OUT}/KAFILE.o  ${OUT}/PATRES.o  ${OUT}/STBL.o    \
   ${OUT}/STRTBL.o  ${OUT}/TABLE.o   ${OUT}/TBCMPPK.o  
 
 \end{chunk}
@@ -11018,7 +11018,7 @@ LAYER16=\
   ${OUT}/FS-.o      ${OUT}/FST.o      ${OUT}/FUNCTION.o ${OUT}/GDMP.o     \
   ${OUT}/GOPT.o     ${OUT}/GOPT0.o    ${OUT}/HACKPI.o   ${OUT}/IDEAL.o    \
   ${OUT}/INFCLCT.o  \
-  ${OUT}/INFORM.o   ${OUT}/INFORM1.o  ${OUT}/IPRNTPK.o  ${OUT}/IR.o       \
+  ${OUT}/INFORM.o   ${OUT}/INFORM1.o  ${OUT}/INTPACK.o  ${OUT}/IPRNTPK.o  ${OUT}/IR.o       \
   ${OUT}/ISUPS.o    ${OUT}/KERNEL.o   ${OUT}/LIB.o      ${OUT}/LMDICT.o   \
   ${OUT}/LODO.o     ${OUT}/LODOOPS.o  ${OUT}/MATRIX.o   ${OUT}/MKFLCFN.o  \
   ${OUT}/MSET.o     ${OUT}/M3D.o      ${OUT}/NAGC02.o   ${OUT}/NAGC05.o   \
@@ -11029,7 +11029,7 @@ LAYER16=\
   ${OUT}/OC.o       ${OUT}/OC-.o      ${OUT}/ODEPACK.o  ${OUT}/ODERAT.o   \
   ${OUT}/OMERR.o    ${OUT}/OMERRK.o   ${OUT}/OPTPACK.o  ${OUT}/OSI.o      \
   ${OUT}/OVAR.o     ${OUT}/PACOFF.o   ${OUT}/PACRAT.o  \
-  ${OUT}/PATTERN.o  ${OUT}/PLCS.o     ${OUT}/PMKERNEL.o ${OUT}/PMSYM.o    \
+  ${OUT}/PATTERN.o  ${OUT}/PDEPACK.o  ${OUT}/PLCS.o     ${OUT}/PMKERNEL.o ${OUT}/PMSYM.o    \
   ${OUT}/POLY.o     ${OUT}/PRIMELT.o  ${OUT}/QALGSET2.o ${OUT}/QEQUAT.o   \
   ${OUT}/QUATCAT.o  ${OUT}/QUATCAT-.o ${OUT}/RECLOS.o   ${OUT}/REP1.o     \
   ${OUT}/RESULT.o   ${OUT}/RFFACT.o   ${OUT}/RMATRIX.o  ${OUT}/ROMAN.o    \
@@ -13072,7 +13072,7 @@ LAYER17=\
   ${OUT}/CINTSLPE.o ${OUT}/COMBF.o    ${OUT}/COMPFACT.o ${OUT}/COMPLEX.o  \
   ${OUT}/COMPLPAT.o ${OUT}/CMPLXRT.o  ${OUT}/CPMATCH.o  ${OUT}/CRFP.o     \
   ${OUT}/CTRIGMNP.o ${OUT}/D01WGTS.o  ${OUT}/D02AGNT.o  ${OUT}/D03EEFA.o  \
-  ${OUT}/DBLRESP.o  ${OUT}/D01AGNT.o  ${OUT}/DERHAM.o   ${OUT}/DFSFUN.o   \
+  ${OUT}/DBLRESP.o  ${OUT}/D01AGNT.o  ${OUT}/DFSFUN.o   \
   ${OUT}/DRAWCURV.o ${OUT}/DTP.o      \
   ${OUT}/D01TRNS.o  ${OUT}/E04NAFA.o  ${OUT}/EF.o       \
   ${OUT}/EFSTRUC.o  ${OUT}/ELFUTS.o   ${OUT}/ESTOOLS.o  ${OUT}/EXPEXPAN.o \
@@ -13100,9 +13100,9 @@ LAYER17=\
   ${OUT}/PSETPK.o   \
   ${OUT}/QUAT.o     ${OUT}/QUATCT2.o  ${OUT}/RADFF.o    ${OUT}/RDEEF.o    \
   ${OUT}/RDEEFS.o   ${OUT}/RDIV.o     ${OUT}/RSETCAT.o  ${OUT}/RSETCAT-.o \
-  ${OUT}/RSETGCD.o  ${OUT}/RULE.o     ${OUT}/RULESET.o  ${OUT}/SD.o       \
+  ${OUT}/RULE.o     ${OUT}/RULESET.o  ${OUT}/SD.o       \
   ${OUT}/SIGNEF.o   ${OUT}/SIMPAN.o   ${OUT}/SFORT.o    ${OUT}/SOLVESER.o \
-  ${OUT}/SOLVETRA.o ${OUT}/SUMFS.o    ${OUT}/SUTS.o     ${OUT}/TOOLSIGN.o \
+  ${OUT}/SUMFS.o    ${OUT}/SUTS.o     ${OUT}/TOOLSIGN.o \
   ${OUT}/TRIGMNIP.o ${OUT}/TRMANIP.o  ${OUT}/UFPS.o     ${OUT}/ULSCCAT.o  \
   ${OUT}/ULSCCAT-.o ${OUT}/UPXSSING.o ${OUT}/UTSODE.o   ${OUT}/UTSODETL.o \
   ${OUT}/UTSSOL.o   ${OUT}/UTS2.o     ${OUT}/WUTSET.o  
@@ -15850,7 +15850,7 @@ Used in next layer: EXPRSOL SFRTCAT CELL
 
 LAYER18=\
   ${OUT}/CAD.o \
-  ${OUT}/DEFINTEF.o ${OUT}/DEFINTRF.o ${OUT}/DFINTTLS.o ${OUT}/EFULS.o    \
+  ${OUT}/DEFINTEF.o ${OUT}/DEFINTRF.o ${OUT}/DERHAM.o   ${OUT}/DFINTTLS.o ${OUT}/EFULS.o    \
   ${OUT}/ESCONT.o   ${OUT}/EXPR.o     ${OUT}/EXPRSOL.o  ${OUT}/EXPR2UPS.o \
   ${OUT}/FACTEXT.o  \
   ${OUT}/FDIV.o     ${OUT}/FSCINT.o   ${OUT}/FSINT.o    ${OUT}/FS2EXPXP.o \
@@ -15860,8 +15860,8 @@ LAYER18=\
   ${OUT}/NODE1.o    ${OUT}/NOTTING.o \
   ${OUT}/NTSCAT.o   ${OUT}/ODECONST.o ${OUT}/ODEEF.o    \
   ${OUT}/ODEINT.o   ${OUT}/QCMPACK.o  ${OUT}/REGSET.o   ${OUT}/REP.o      \
-  ${OUT}/RGCHAIN.o  ${OUT}/RSDCMPK.o  ${OUT}/SFRTCAT.o  ${OUT}/SOLVERAD.o \
-  ${OUT}/SULS.o     ${OUT}/SUPXS.o    ${OUT}/UFPS1.o    ${OUT}/ULS.o      \
+  ${OUT}/RGCHAIN.o  ${OUT}/RSDCMPK.o  ${OUT}/RSETGCD.o  ${OUT}/SFRTCAT.o  ${OUT}/SOLVERAD.o \
+  ${OUT}/SOLVETRA.o ${OUT}/SULS.o     ${OUT}/SUPXS.o    ${OUT}/UFPS1.o    ${OUT}/ULS.o      \
   ${OUT}/ULSCONS.o  ${OUT}/UPXS.o     ${OUT}/UPXSCONS.o ${OUT}/UTS.o      \
   ${OUT}/UTSZ.o 
 
@@ -17524,7 +17524,7 @@ ${OUT}/%.o: ${MID}/%.nrlib/code.o
 \end{chunk}
 \begin{chunk}{genericnrlibfiles}
 
-.PRECIOUS: ${MID}/%.nrlib/code.o
+.PRECIOUS: ${MID}/%.nrlib/code.o ${MID}/%-.nrlib/code.o
 ${MID}/%.nrlib/code.o: %.spad
 	@ echo sa07 compiling $^ $@
 	@ if [ -z "${NOISE}" ] ; then \
@@ -17800,136 +17800,207 @@ layer0bootstrap: $(LAYER0BOOTSTRAP)
 	@ echo ==========================================
 	@ echo === algebra bootstrap complete bookvol10
 	@ echo ==========================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER0COPY)): layer23done
 
-layer0copy: layer24done $(LAYER0COPY)
+layer0copy: $(LAYER0COPY)
 	@ echo =======================================
 	@ echo === layer  0 copy complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER0)): layer0bootstrap
 
-layer0done: layer0bootstrap $(LAYER0)
+layer0done: $(LAYER0)
 	@ echo =======================================
 	@ echo === layer  0 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer1done: layer0done $(LAYER1)
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER1)): layer0done
+
+layer1done: $(LAYER1)
 	@ echo =======================================
 	@ echo === layer  1 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer2done: layer1done $(LAYER2)
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER2)): layer1done
+
+layer2done: $(LAYER2)
 	@ echo =======================================
 	@ echo === layer  2 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer3done: layer2done $(LAYER3)
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER3)): layer2done
+
+layer3done: $(LAYER3)
 	@ echo =======================================
 	@ echo === layer  3 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER4)): layer3done
 
-layer4done: layer3done $(LAYER4)
+layer4done: $(LAYER4)
 	@ echo =======================================
 	@ echo === layer  4 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER5)): layer4done
 
-layer5done: layer4done $(LAYER5)
+layer5done: $(LAYER5)
 	@ echo =======================================
 	@ echo === layer  5 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER6)): layer5done
 
-layer6done: layer5done $(LAYER6)
+layer6done: $(LAYER6)
 	@ echo =======================================
 	@ echo === layer  6 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER7)): layer6done
 
-layer7done: layer6done $(LAYER7)
+layer7done: $(LAYER7)
 	@ echo =======================================
 	@ echo === layer  7 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer8done: layer7done $(LAYER8)
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER8)): layer7done
+
+layer8done: $(LAYER8)
 	@ echo =======================================
 	@ echo === layer  8 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer9done: layer8done $(LAYER9)
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER9)): layer8done
+
+layer9done: $(LAYER9)
 	@ echo =======================================
 	@ echo === layer 9 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer10done: layer9done $(LAYER10)
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER10)): layer9done
+
+layer10done: $(LAYER10)
 	@ echo =======================================
 	@ echo === layer 10 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER11)): layer10done
 
-layer11done: layer10done $(LAYER11)
+layer11done: $(LAYER11)
 	@ echo =======================================
 	@ echo === layer 11 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER12)): layer11done
 
-layer12done: layer11done $(LAYER12)
+layer12done: $(LAYER12)
 	@ echo =======================================
 	@ echo === layer 12 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER13)): layer12done
 
-layer13done: layer12done $(LAYER13)
+layer13done: $(LAYER13)
 	@ echo =======================================
 	@ echo === layer 13 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER14)): layer13done
 
-layer14done: layer13done $(LAYER14)
+layer14done: $(LAYER14)
 	@ echo =======================================
 	@ echo === layer 14 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer15done: layer14done $(LAYER15)
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER15)): layer14done
+
+layer15done: $(LAYER15)
 	@ echo =======================================
 	@ echo === layer 15 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer16done: layer15done $(LAYER16)
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER16)): layer15done
+
+layer16done: $(LAYER16)
 	@ echo =======================================
 	@ echo === layer 16 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer17done: layer16done $(LAYER17)
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER17)): layer16done
+
+layer17done: $(LAYER17)
 	@ echo =======================================
 	@ echo === layer 17 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER18)): layer17done
 
-layer18done: layer17done $(LAYER18)
+layer18done: $(LAYER18)
 	@ echo =======================================
 	@ echo === layer 18 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER19)): layer18done
 
-layer19done: layer18done $(LAYER19)
+layer19done: $(LAYER19)
 	@ echo =======================================
 	@ echo === layer 19 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER20)): layer19done
 
-layer20done: layer19done $(LAYER20)
+layer20done: $(LAYER20)
 	@ echo =======================================
 	@ echo === layer 20 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
+
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER21)): layer20done
 
-layer21done: layer20done $(LAYER21)
+layer21done: $(LAYER21)
 	@ echo =======================================
 	@ echo === layer 21 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer22done: layer21done $(LAYER22)
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER22)): layer21done
+
+layer22done: $(LAYER22)
 	@ echo =======================================
 	@ echo === layer 22 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
-layer23done: layer22done $(LAYER23)
-	@ echo =======================================
-	@ echo === layer 23 of 24 complete bookvol10
-	@ echo =======================================
+$(patsubst $(OUT)/%.o,%.spad,$(LAYER23)): layer22done
 
-layer24done: layer23done $(LAYER24)
+layer23done: $(LAYER23)
 	@ echo =======================================
-	@ echo === layer 24 of 24 complete bookvol10
+	@ echo === layer 23 of 24 complete bookvol10
 	@ echo =======================================
+	@ touch $@
 
 \end{chunk}
 \subsection{Regression testing}
@@ -19265,7 +19336,7 @@ everything: lib db cmd gloss
 	@ echo SPAD= ${SPAD} SRC= ${SRC} INT= ${INT}
 	@ echo OBJ= ${OBJ} MNT= ${MNT} O=${O} LISP=${LISP} BYE=${BYE}
 
-src:	announce layer24done
+src:	announce layer0copy
 	@ echo sa23 Finished uilding nrlibS from spad sources
 
 announce:
@@ -19279,7 +19350,8 @@ announce:
 \getchunk{stages}
 
 clean:
-	@rm -f fasthelp fastinput fasthtml
+	@rm -f fasthelp fastinput fasthtml layer*done layer0bootstrap layer0copy
+	@rm -rf $(MID)/*.nrlib $(MID)/*.o $(OUT)/*.o *.spad
 	@echo sa24 src/algebra cleaned
 
 \end{chunk}
--- axiom-20170501.orig/books/bookvol5.pamphlet
+++ axiom-20170501/books/bookvol5.pamphlet
@@ -50425,7 +50425,7 @@ occupies two positions in the real array
 \defun{vec2list}{vec2list}
 \begin{chunk}{defun vec2list 0}
 (defun vec2list (vec)
- (coerce vec 'list))
+ (coerce vec 'cl::list))
 
 \end{chunk}
 
--- axiom-20170501.orig/src/Makefile.pamphlet
+++ axiom-20170501/src/Makefile.pamphlet
@@ -129,13 +129,21 @@ against the macros that exist in that fi
 function buildHtMacroTable (htcheck.boot)
 
 \begin{chunk}{interpdir}
-interpdir: ${SRC}/interp/Makefile
+interp/bookvol%.pamphlet: ${SPD}/books/bookvol%.pamphlet
+	@cp $< $@
+
+${MNT}/${SYS}/doc/util.ht: ${BOOKS}/bookvol7.1.pamphlet
+	@(cd $(@D); ${BOOKS}/tanglec $< util.ht >$@)
+	
+interpdir: ${SRC}/interp/Makefile \
+	   interp/bookvol5.pamphlet interp/bookvol9.pamphlet interp/bookvol10.5.pamphlet \
+	   ${MNT}/${SYS}/doc/util.ht
 	@echo 25 making ${SRC}/interp
-	@cp ${SPD}/books/bookvol5.pamphlet interp
-	@cp ${SPD}/books/bookvol9.pamphlet interp
-	@cp ${SPD}/books/bookvol10.5.pamphlet interp
-	@(cd ${MNT}/${SYS}/doc ; \
-          ${BOOKS}/tanglec ${BOOKS}/bookvol7.1.pamphlet util.ht >util.ht )
+#	@cp ${SPD}/books/bookvol5.pamphlet interp
+#	@cp ${SPD}/books/bookvol9.pamphlet interp
+#	@cp ${SPD}/books/bookvol10.5.pamphlet interp
+#	@(cd ${MNT}/${SYS}/doc ; \
+#          ${BOOKS}/tanglec ${BOOKS}/bookvol7.1.pamphlet util.ht >util.ht )
 	@(cd interp ; ${ENV} ${MAKE} )
 
 ${SRC}/interp/Makefile: ${SRC}/interp/Makefile.pamphlet
@@ -173,7 +181,7 @@ test input files are compared against kn
 that nothing has been broken in the process of fixing bugs.
 
 \begin{chunk}{inputdir}
-inputdir: ${SRC}/input/Makefile
+inputdir: etcdir ${SRC}/input/Makefile
 	@echo 33 making ${SRC}/input
 	@(cd input ; ${ENV} ${MAKE} )
 #	@(cd input ; ${ENV} ${MAKE} -j 10)
@@ -204,7 +212,7 @@ The asq \cite{2} command, contained in t
 for finding detailed information about domains, packages, and
 categories from the shell without running Axiom.
 \begin{chunk}{etcdir}
-etcdir: ${SRC}/etc/Makefile
+etcdir: algebradir ${SRC}/etc/Makefile
 	@echo 37 making ${SRC}/etc
 	@(cd etc ; ${ENV} ${MAKE} )
 
@@ -317,7 +325,7 @@ and bookvol10.3 (Packages) to the src/al
 
 \subsection{Volume 10: Axiom Algebra book}
 \begin{chunk}{algebradir}
-algebradir: ${SRC}/algebra/Makefile ${SPD}/books/bookvol10.pamphlet \
+algebradir: interpdir ${SRC}/algebra/Makefile ${SPD}/books/bookvol10.pamphlet \
             ${SPD}/books/bookvol7.1.pamphlet
 	@echo 29 making ${SRC}/algebra
 	@(cd algebra ; ${ENV} ${MAKE} )
@@ -372,7 +380,7 @@ all of the lower level directories.
 
 \getchunk{environment}
 
-all: announce ${DIRS}
+all: announce ${DIRS} #sharedir algebradir etcdir
 	@echo 49 finished ${SRC}
 
 announce:
--- axiom-20170501.orig/src/interp/Makefile.pamphlet
+++ axiom-20170501/src/interp/Makefile.pamphlet
@@ -830,7 +830,7 @@ ${OUT}/%.lisp: ${IN}/%.lisp.pamphlet
           echo '(tangle "${IN}/$*.lisp.pamphlet" "*" "$*.lisp")' \
         | ${OBJ}/${SYS}/bin/lisp ) 1>/dev/null 
 
-${OUT}/%.o: ${MID}/%.lisp
+${OUT}/%.o: ${MID}/%.lisp ${DEPSYS}
 	@ echo siOUTfromMID making ${OUT}/$*.o from ${MID}/$*.lisp
 	@ if [ -z "${NOISE}" ] ; then \
 	   (cd ${MID} ; \
@@ -851,7 +851,7 @@ ${AUTO}/%.${O}: ${OUT}/%.${O}
 	@ echo siAUTOfromOUT making ${AUTO}/$*.${O} from ${OUT}/$*.${O}
 	@ cp ${OUT}/$*.${O} ${AUTO}
 
-${OUT}/%.${O}: ${MID}/%.${LISP}
+${OUT}/%.${O}: ${MID}/%.${LISP} ${DEPSYS}
 	@ echo si123 making ${OUT}/$*.${O} from ${MID}/$*.${LISP}
 	@  if [ -z "${NOISE}" ] ; then \
 	 (cd ${MID} ; \
--- /dev/null
+++ axiom-20170501/src/interp/bookvol5.lsp
@@ -0,0 +1,30198 @@
+(setq *print-array* nil)
+(setq *print-circle* nil)
+(setq *print-pretty* nil)
+
+(in-package "BOOT")
+(defvar |$PatternVariableList|
+  '(*1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11 *12 *13 *14 *15 *16 *17 *18 *19 *20
+    *21 *22 *23 *24 *25 *26 *27 *28 *29 *30 *31 *32 *33 *34 *35 *36 *37 *38
+    *39 *40 *41 *42 *43 *44 *45 *46 *47 *48 *49 *50))
+
+(defvar |$FormalMapVariableList|
+  '(|#1| |#2| |#3| |#4| |#5| |#6| |#7| |#8| |#9| |#10|
+    |#11| |#12| |#13| |#14| |#15| |#16| |#17| |#18| |#19| |#20|
+    |#21| |#22| |#23| |#24| |#25| |#26| |#27| |#28| |#29| |#30|
+    |#31| |#32| |#33| |#34| |#35| |#36| |#37| |#38| |#39| |#40|
+    |#41| |#42| |#43| |#44| |#45| |#46| |#47| |#48| |#49| |#50|))
+
+(defvar |$interpreterFrameRing| nil "The ring of all frames")
+
+(defvar |$interpreterFrameName| '|initial|)
+
+(defvar |$InteractiveFrame| nil)
+
+(defvar $IOindex 1 "The current Axiom prompt number")
+
+(defvar |$msgAlist| nil) 
+
+(defvar |$testingErrorPrefix| "Daly Bug")
+
+(defvar |$msgdbPrims|
+ '(|%b| |%d| |%l| |%i| |%u| %U |%n| |%x| |%ce| |%rj| "%U" "%b" "%d"
+   "%l" "%i" "%u" "%U" "%n" "%x" "%ce" "%rj"))
+
+(defvar |$msgdbPunct|
+  '(|.| |,| ! |:| |;| ? ] |)| "." "," "!" ":" ";" "?" "]" ")"))
+
+(defvar |$msgdbNoBlanksBeforeGroup|
+ `(" " | | "%" % ,@|$msgdbPrims| ,@|$msgdbPunct|))
+
+(defvar |$msgdbNoBlanksAfterGroup|
+ `(" " | | "%" % ,@|$msgdbPrims| [ |(| "[" "("))
+
+(defvar |$HiFiAccess| nil "Is the history function on?")
+
+(defvar |$HistList| nil "A circular list of history elements")
+
+(defvar |$HistListLen| 0 "The length of the circular history list")
+
+(defvar |$HistLIstAct| 0 "The number of un-doable steps")
+
+(defvar |$internalHistoryTable| nil)
+
+(defvar |$HistRecord| nil)
+
+(defvar |$historyFileType| nil)
+
+(defvar |$frameRecord| nil "a list of value changes") 
+
+(defvar |$previousBindings| nil "a copy of Interactive Frame info for undo") 
+
+(defvar |$reportundo| nil "t means we report the steps undo takes")
+
+(defvar |$breakCondition| nil)
+
+(defvar |$constructors| nil)
+
+(defvar |$constructors| nil)
+
+(defvar |$countList| nil "A list of traced functions to count")
+
+(defvar |$depthAlist| nil)
+
+(defvar |$domains| nil)
+
+(defvar |$domainTraceNameAssoc| nil)
+
+(defvar |$doNotAddEmptyModeIfTrue| nil)
+
+(defvar |$embeddedFunctions| nil)
+
+(defvar |$fromSpadTrace| nil)
+
+(defvar |$lastUntraced| nil)
+
+(defvar |$letAssoc| nil)
+
+(defvar |$mapSubNameAlist| nil)
+
+(defvar |$mathTrace| nil)
+
+(defvar |$mathTraceList| nil "A list of functions with math trace output")
+
+(defvar |$monitorArgs| nil)
+
+(defvar |$monitorCaller| nil)
+
+(defvar |$monitorDepth| 0)
+
+(defvar |$monitorFunDepth| nil)
+
+(defvar |$monitorName| nil)
+
+(defvar |$monitorPretty| nil)
+
+(defvar |$monitorValue| nil)
+
+(defvar |$optionAlist| nil) 
+
+(defvar |$options| nil) 
+
+(defvar |$OutputForm| nil) 
+
+(defvar |$packages| nil)
+
+(defvar |$QuickLet| nil)
+
+(defvar |$reportSpadtrace| nil) 
+
+(defvar |$spaceList| nil "A list of traced functions to calculate space used")
+
+(defvar |$streamCount| t)
+
+(defvar |$timerList| nil "A list of traced functions to time")
+
+(defvar |$tracedMapSignatures| nil) 
+
+(defvar |$traceDomains| t)
+
+(defvar |$traceErrorStack| t)
+
+(defvar |$TraceFlag| t)
+
+(defvar $traceletflag nil)
+
+(defvar |$traceletFunctions| nil)
+
+(defvar |$traceNames| nil "The names of traced domains and packages")
+
+(defvar |$traceNoisely| nil) 
+
+(defvar |$traceOptionList|
+ '(|after| |before| |break| |cond| |count| |depth| |local| |mathprint| 
+   |nonquietly| |nt| |of| |only| |ops| |restore| |timer| |varbreak| 
+   |vars| |within|))
+
+(defvar |$tracedSpadModemap| nil)
+
+(defvar |$traceSize| nil "size limit of output during tracing")
+
+(defvar |$traceStream| *standard-output*)
+
+(defvar |$localExposureDataDefault|
+  (vector
+    ;;These groups will be exposed 
+   (list '|basic| '|categories| '|naglink| '|anna|)
+    ;;These constructors will be explicitly exposed
+   (list )
+    ;;These constructors will be explicitly hidden
+   (list )))
+
+(defvar |$globalExposureGroupAlist|
+ '(
+ ;;define the groups |basic| |naglink| |anna| |categories| |Hidden| |defaults|
+  (|basic| 
+   (|AffineAlgebraicSetComputeWithGroebnerBasis| . AFALGGRO)
+   (|AffineAlgebraicSetComputeWithResultant| . AFALGRES)
+   (|AffinePlane| . AFFPL)
+   (|AffinePlaneOverPseudoAlgebraicClosureOfFiniteField| . AFFPLPS)
+   (|AffineSpace| . AFFSP)
+   (|AlgebraicManipulations| . ALGMANIP)
+   (|AlgebraicNumber| . AN)
+   (|AlgFactor| . ALGFACT)
+   (|AlgebraicMultFact| . ALGMFACT)
+   (|AlgebraPackage| . ALGPKG)
+   (|AlgebraGivenByStructuralConstants| . ALGSC)
+   (|Any| . ANY)
+   (|AnyFunctions1| . ANY1)
+   (|ApplicationProgramInterface| . API)
+   (|ArrayStack| . ASTACK)
+   (|AssociatedJordanAlgebra| . JORDAN)
+   (|AssociatedLieAlgebra| . LIE)
+   (|AttachPredicates| . PMPRED)
+   (|AxiomServer| . AXSERV)
+   (|BalancedBinaryTree| . BBTREE)
+   (|BasicStochasticDifferential| . BSD)
+   (|BasicOperator| . BOP)
+   (|BasicOperatorFunctions1| . BOP1)
+   (|Bezier| . BEZIER)
+   (|BinaryExpansion| . BINARY)
+   (|BinaryFile| . BINFILE)
+   (|BinarySearchTree| . BSTREE)
+   (|BinaryTournament| . BTOURN)
+   (|BinaryTree| . BTREE)
+   (|Bits| . BITS)
+   (|BlasLevelOne| . BLAS1)
+   (|BlowUpPackage| . BLUPPACK)
+   (|BlowUpWithHamburgerNoether| . BLHN)
+   (|BlowUpWithQuadTrans| . BLQT)
+   (|Boolean| . BOOLEAN)
+   (|CardinalNumber| . CARD)
+   (|CartesianTensor| . CARTEN)
+   (|CartesianTensorFunctions2| . CARTEN2)
+   (|Cell| .  CELL)
+   (|Character| . CHAR)
+   (|CharacterClass| . CCLASS)
+   (|CharacteristicPolynomialPackage| . CHARPOL)
+   (|CliffordAlgebra| . CLIF)
+   (|Color| . COLOR)
+   (|CommonDenominator| . CDEN)
+   (|Commutator| . COMM)
+   (|Complex| . COMPLEX)
+   (|ComplexDoubleFloatMatrix| . CDFMAT)
+   (|ComplexDoubleFloatVector| . CDFVEC)
+   (|ComplexFactorization| . COMPFACT)
+   (|ComplexFunctions2| . COMPLEX2)
+   (|ComplexRootPackage| . CMPLXRT)
+   (|ComplexTrigonometricManipulations| . CTRIGMNP)
+   (|ContinuedFraction| . CONTFRAC)
+   (|CoordinateSystems| . COORDSYS)
+   (|CRApackage| . CRAPACK)
+   (|CycleIndicators| . CYCLES)
+   (|CylindricalAlgebraicDecompositionPackage| . CAD)
+   (|CylindricalAlgebraicDecompositionUtilities| . CADU)
+   (|Database| . DBASE)
+   (|DataList| . DLIST)
+   (|DecimalExpansion| . DECIMAL)
+   (|DenavitHartenbergMatrix| . DHMATRIX)
+   (|Dequeue| . DEQUEUE)
+   (|DesingTree| . DSTREE)
+   (|DesingTreePackage| . DTP)
+   (|DiophantineSolutionPackage| . DIOSP)
+   (|DirichletRing| . DIRRING)
+   (|DirectProductFunctions2| . DIRPROD2)
+   (|DisplayPackage| . DISPLAY)
+   (|DistinctDegreeFactorize| . DDFACT)
+   (|Divisor| . DIV)
+   (|DoubleFloat| . DFLOAT)
+   (|DoubleFloatMatrix| . DFMAT)
+   (|DoubleFloatVector| . DFVEC)
+   (|DoubleFloatSpecialFunctions| . DFSFUN)
+   (|DrawComplex| . DRAWCX)
+   (|DrawNumericHack| . DRAWHACK)
+   (|DrawOption| . DROPT)
+   (|EigenPackage| . EP)
+   (|ElementaryFunctionDefiniteIntegration| . DEFINTEF)
+   (|ElementaryFunctionLODESolver| . LODEEF)
+   (|ElementaryFunctionODESolver| . ODEEF)
+   (|ElementaryFunctionSign| . SIGNEF)
+   (|ElementaryFunctionStructurePackage| . EFSTRUC)
+   (|Equation| . EQ)
+   (|EquationFunctions2| . EQ2)
+   (|ErrorFunctions| . ERROR)
+   (|EuclideanGroebnerBasisPackage| . GBEUCLID)
+   (|Exit| . EXIT)
+   (|Export3D| . EXP3D)
+   (|Expression| . EXPR)
+   (|ExpressionFunctions2| . EXPR2)
+   (|ExpressionSolve| . EXPRSOL)
+   (|ExpressionSpaceFunctions2| . ES2)
+   (|ExpressionSpaceODESolver| . EXPRODE)
+   (|ExpressionToOpenMath| . OMEXPR)
+   (|ExpressionToUnivariatePowerSeries| . EXPR2UPS)
+   (|Factored| . FR)
+   (|FactoredFunctions2| . FR2)
+  (|FactorisationOverPseudoAlgebraicClosureOfAlgExtOfRationalNumber| . FACTEXT)
+   (|FactorisationOverPseudoAlgebraicClosureOfRationalNumber| . FACTRN)
+   (|File| . FILE)
+   (|FileName| . FNAME)
+   (|FiniteAbelianMonoidRingFunctions2| . FAMR2)
+   (|FiniteDivisorFunctions2| . FDIV2)
+   (|FiniteField| . FF)
+   (|FiniteFieldFactorization| . FFFACTOR)
+   (|FiniteFieldFactorizationWithSizeParseBySideEffect| . FFFACTSE)
+   (|FiniteFieldCyclicGroup| . FFCG)
+   (|FiniteFieldPolynomialPackage2| . FFPOLY2)
+   (|FiniteFieldNormalBasis| . FFNB)
+   (|FiniteFieldHomomorphisms| . FFHOM)
+   (|FiniteFieldSquareFreeDecomposition| . FFSQFR)
+   (|FiniteLinearAggregateFunctions2| . FLAGG2)
+   (|FiniteLinearAggregateSort| . FLASORT)
+   (|FiniteSetAggregateFunctions2| . FSAGG2)
+   (|FlexibleArray| . FARRAY)
+   (|Float| . FLOAT)
+   (|FloatingRealPackage| . FLOATRP)
+   (|FloatingComplexPackage| . FLOATCP)
+   (|FloatSpecialFunctions| . FSFUN)
+   (|FourierSeries| . FSERIES)
+   (|Fraction| . FRAC)
+   (|FractionalIdealFunctions2| . FRIDEAL2)
+   (|FractionFreeFastGaussian| . FFFG)
+   (|FractionFreeFastGaussianFractions| . FFFGF)
+   (|FractionFunctions2| . FRAC2)
+   (|FreeNilpotentLie| . FNLA)
+   (|FullPartialFractionExpansion| . FPARFRAC)
+   (|FunctionFieldCategoryFunctions2| . FFCAT2)
+   (|FunctionSpaceAssertions| . PMASSFS)
+   (|FunctionSpaceAttachPredicates| . PMPREDFS)
+   (|FunctionSpaceComplexIntegration| . FSCINT)
+   (|FunctionSpaceFunctions2| . FS2)
+   (|FunctionSpaceIntegration| . FSINT)
+   (|FunctionSpacePrimitiveElement| . FSPRMELT)
+   (|FunctionSpaceSum| . SUMFS)
+   (|GaussianFactorizationPackage| . GAUSSFAC)
+   (|GeneralPackageForAlgebraicFunctionField| . GPAFF)
+   (|GeneralUnivariatePowerSeries| . GSERIES)
+   (|GenerateUnivariatePowerSeries| . GENUPS)
+   (|Graphviz| . GRAPHVIZ)
+   (|GnuDraw| . GDRAW)
+   (|GraphicsDefaults| . GRDEF)
+   (|GroebnerPackage| . GB)
+   (|GroebnerFactorizationPackage| . GBF)
+   (|Guess| . GUESS)
+   (|GuessAlgebraicNumber| . GUESSAN)
+   (|GuessFinite| . GUESSF)
+   (|GuessFiniteFunctions| . GUESSF1)
+   (|GuessInteger| . GUESSINT)
+   (|GuessOption| . GOPT)
+   (|GuessPolynomial| . GUESSP)
+   (|GuessUnivariatePolynomial| . GUESSUP)
+   (|HallBasis| . HB)
+   (|Heap| . HEAP)
+   (|HexadecimalExpansion| . HEXADEC)
+   (|HTMLFormat| . HTMLFORM)
+   (|IdealDecompositionPackage| . IDECOMP)
+   (|IndexCard| . ICARD)
+   (|InfClsPt| . ICP)
+   (|InfiniteProductCharacteristicZero| . INFPROD0)
+   (|InfiniteProductFiniteField| . INPRODFF)
+   (|InfiniteProductPrimeField| . INPRODPF)
+   (|InfiniteTuple| . ITUPLE)
+   (|InfiniteTupleFunctions2| . ITFUN2)
+   (|InfiniteTupleFunctions3| . ITFUN3)
+   (|InfinitlyClosePoint| . INFCLSPT)
+   (|InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField| . INFCLSPS)
+   (|Infinity| . INFINITY)
+   (|Integer| . INT)
+   (|IntegerCombinatoricFunctions| . COMBINAT)
+   (|IntegerLinearDependence| . ZLINDEP)
+   (|IntegerNumberTheoryFunctions| . INTHEORY)
+   (|IntegerPrimesPackage| . PRIMES)
+   (|IntegerRetractions| . INTRET)
+   (|IntegerRoots| . IROOT)
+   (|IntegrationResultFunctions2| . IR2)
+   (|IntegrationResultRFToFunction| . IRRF2F)
+   (|IntegrationResultToFunction| . IR2F)
+   (|InterfaceGroebnerPackage| . INTERGB)
+   (|InterpolateFormsPackage| . INTFRSP)
+   (|IntersectionDivisorPackage| . INTDIVP)
+   (|Interval| . INTRVL)
+   (|InventorDataSink| . IVDATA)
+   (|InventorViewPort| . IVVIEW)
+   (|InventorRenderPackage| . IVREND)
+   (|InverseLaplaceTransform| . INVLAPLA)
+   (|IrrRepSymNatPackage| . IRSN)
+   (|KernelFunctions2| . KERNEL2)
+   (|KeyedAccessFile| . KAFILE)
+   (|LaplaceTransform| . LAPLACE)
+   (|LazardMorenoSolvingPackage| . LAZM3PK)
+   (|Library| . LIB)
+   (|LieSquareMatrix| . LSQM)
+   (|LinearOrdinaryDifferentialOperator| . LODO)
+   (|LinearSystemMatrixPackage| . LSMP)
+   (|LinearSystemMatrixPackage1| . LSMP1)
+   (|LinearSystemFromPowerSeriesPackage| . LISYSER)
+   (|LinearSystemPolynomialPackage| . LSPP)
+   (|List| . LIST)
+   (|LinesOpPack| . LOP)
+   (|ListFunctions2| . LIST2)
+   (|ListFunctions3| . LIST3)
+   (|ListToMap| . LIST2MAP)
+   (|LocalParametrizationOfSimplePointPackage| . LPARSPT)
+   (|MakeFloatCompiledFunction| . MKFLCFN)
+   (|MakeFunction| . MKFUNC)
+   (|MakeRecord| . MKRECORD)
+   (|MappingPackage1| . MAPPKG1)
+   (|MappingPackage2| . MAPPKG2)
+   (|MappingPackage3| . MAPPKG3)
+   (|MappingPackage4| . MAPPKG4)
+   (|MathMLFormat| . MMLFORM)
+   (|Matrix| . MATRIX)
+   (|MatrixCategoryFunctions2| . MATCAT2)
+   (|MatrixCommonDenominator| . MCDEN)
+   (|MatrixLinearAlgebraFunctions| . MATLIN)
+   (|MatrixManipulation| . MAMA)
+   (|MergeThing| . MTHING)
+   (|ModularDistinctDegreeFactorizer| . MDDFACT)
+   (|ModuleOperator| . MODOP)
+   (|MonoidRingFunctions2| . MRF2)
+   (|MoreSystemCommands| . MSYSCMD)
+   (|MPolyCatFunctions2| . MPC2)
+   (|MPolyCatRationalFunctionFactorizer| . MPRFF)
+   (|Multiset| . MSET)
+   (|MultivariateFactorize| . MULTFACT)
+   (|MultivariatePolynomial| . MPOLY)
+   (|MultFiniteFactorize| . MFINFACT)
+   (|MyUnivariatePolynomial| . MYUP)
+   (|MyExpression| . MYEXPR)
+   (|NeitherSparseOrDensePowerSeries| . NSDPS)
+   (|NewtonPolygon| . NPOLYGON)
+   (|NoneFunctions1| . NONE1)
+   (|NonNegativeInteger| . NNI)
+   (|NottinghamGroup| . NOTTING)
+   (|NormalizationPackage| . NORMPK)
+   (|NormInMonogenicAlgebra| . NORMMA)
+   (|NumberTheoreticPolynomialFunctions| . NTPOLFN)
+   (|Numeric| . NUMERIC)
+   (|NumericalOrdinaryDifferentialEquations| . NUMODE)
+   (|NumericalQuadrature| . NUMQUAD)
+   (|NumericComplexEigenPackage| . NCEP)
+   (|NumericRealEigenPackage| . NREP)
+   (|NumericContinuedFraction| . NCNTFRAC)
+   (|Octonion| . OCT)
+   (|OctonionCategoryFunctions2| . OCTCT2)
+   (|OneDimensionalArray| . ARRAY1)
+   (|OneDimensionalArrayFunctions2| . ARRAY12)
+   (|OnePointCompletion| . ONECOMP)
+   (|OnePointCompletionFunctions2| . ONECOMP2)
+   (|OpenMathConnection| . OMCONN)
+   (|OpenMathDevice| . OMDEV)
+   (|OpenMathEncoding| . OMENC)
+   (|OpenMathError| . OMERR)
+   (|OpenMathErrorKind| . OMERRK)
+   (|OpenMathPackage| . OMPKG)
+   (|OpenMathServerPackage| . OMSERVER)
+   (|OperationsQuery| . OPQUERY)
+   (|OrderedCompletion| . ORDCOMP)
+   (|OrderedCompletionFunctions2| . ORDCOMP2)
+   (|OrdinaryDifferentialRing| . ODR)
+   (|OrdSetInts| . OSI)
+   (|OrthogonalPolynomialFunctions| . ORTHPOL)
+   (|OutputPackage| . OUT)
+   (|PackageForAlgebraicFunctionField| . PAFF)
+   (|PackageForAlgebraicFunctionFieldOverFiniteField| . PAFFFF)
+   (|PackageForPoly| . PFORP)
+   (|PadeApproximantPackage| . PADEPAC)
+   (|Palette| . PALETTE)
+   (|PartialFraction| . PFR)
+   (|PatternFunctions2| . PATTERN2)
+   (|ParametricPlaneCurve| . PARPCURV)
+   (|ParametricSpaceCurve| . PARSCURV)
+   (|ParametricSurface| . PARSURF)
+   (|ParametricPlaneCurveFunctions2| . PARPC2)
+   (|ParametricSpaceCurveFunctions2| . PARSC2)
+   (|ParametricSurfaceFunctions2| . PARSU2)
+   (|ParametrizationPackage| . PARAMP)
+   (|PartitionsAndPermutations| . PARTPERM)
+   (|PatternMatch| . PATMATCH)
+   (|PatternMatchAssertions| . PMASS)
+   (|PatternMatchResultFunctions2| . PATRES2)
+   (|PendantTree| . PENDTREE)
+   (|Permanent| . PERMAN)
+   (|PermutationGroupExamples| . PGE)
+   (|PermutationGroup| . PERMGRP)
+   (|Permutation| . PERM)
+   (|Pi| . HACKPI)
+   (|PiCoercions| . PICOERCE)
+   (|Places| . PLACES)
+   (|PlacesOverPseudoAlgebraicClosureOfFiniteField| . PLACESPS)
+   (|Plcs| . PLCS)
+   (|PointFunctions2| . PTFUNC2)
+   (|PolyGroebner| . PGROEB)
+   (|Polynomial| . POLY)
+   (|PolynomialAN2Expression| . PAN2EXPR)
+   (|PolynomialComposition| . PCOMP)
+   (|PolynomialDecomposition| . PDECOMP)
+   (|PolynomialFunctions2| . POLY2)
+   (|PolynomialIdeals| . IDEAL)
+   (|PolynomialPackageForCurve| . PLPKCRV)
+   (|PolynomialToUnivariatePolynomial| . POLY2UP)
+   (|PositiveInteger| . PI)
+   (|PowerSeriesLimitPackage| . LIMITPS)
+   (|PrimeField| . PF)
+   (|PrimitiveArrayFunctions2| . PRIMARR2)
+   (|PrintPackage| . PRINT)
+   (|ProjectiveAlgebraicSetPackage| . PRJALGPK)
+   (|ProjectivePlane| . PROJPL)
+   (|ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField| . PROJPLPS)
+   (|ProjectiveSpace| . PROJSP)
+   (|PseudoAlgebraicClosureOfAlgExtOfRationalNumber| . PACEXT)
+   (|QuadraticForm| . QFORM)
+   (|QuasiComponentPackage| . QCMPACK)
+   (|Quaternion| . QUAT)
+   (|QuaternionCategoryFunctions2| . QUATCT2)
+   (|QueryEquation| . QEQUAT)
+   (|Queue| . QUEUE)
+   (|QuotientFieldCategoryFunctions2| . QFCAT2)
+   (|RadicalEigenPackage| . REP)
+   (|RadicalSolvePackage| . SOLVERAD)
+   (|RadixExpansion| . RADIX)
+   (|RadixUtilities| . RADUTIL)
+   (|RandomNumberSource| . RANDSRC)
+   (|RationalFunction| . RF)
+   (|RationalFunctionDefiniteIntegration| . DEFINTRF)
+   (|RationalFunctionFactor| . RFFACT)
+   (|RationalFunctionFactorizer| . RFFACTOR)
+   (|RationalFunctionIntegration| . INTRF)
+   (|RationalFunctionLimitPackage| . LIMITRF)
+   (|RationalFunctionSign| . SIGNRF)
+   (|RationalFunctionSum| . SUMRF)
+   (|RationalRetractions| . RATRET)
+   (|RealClosure| . RECLOS)
+   (|RealPolynomialUtilitiesPackage| . POLUTIL)
+   (|RealZeroPackage| . REAL0)
+   (|RealZeroPackageQ| . REAL0Q)
+   (|RecurrenceOperator| . RECOP)
+   (|RectangularMatrixCategoryFunctions2| . RMCAT2)
+   (|RegularSetDecompositionPackage| . RSDCMPK)
+   (|RegularTriangularSet| . REGSET)
+   (|RegularTriangularSetGcdPackage| . RSETGCD)
+   (|RepresentationPackage1| . REP1)
+   (|RepresentationPackage2| . REP2)
+   (|ResolveLatticeCompletion| . RESLATC)
+   (|RewriteRule| . RULE)
+   (|RightOpenIntervalRootCharacterization| . ROIRC) 
+   (|RomanNumeral| . ROMAN)
+   (|RootsFindingPackage| . RFP)
+   (|Ruleset| . RULESET)
+   (|ScriptFormulaFormat| . FORMULA)
+   (|ScriptFormulaFormat1| . FORMULA1)
+   (|Segment| . SEG)
+   (|SegmentBinding| . SEGBIND)
+   (|SegmentBindingFunctions2| . SEGBIND2)
+   (|SegmentFunctions2| . SEG2)
+   (|Set| . SET)
+   (|SimpleAlgebraicExtensionAlgFactor| . SAEFACT)
+   (|SimpleCell| . SCELL)
+   (|SimplifyAlgebraicNumberConvertPackage| . SIMPAN)
+   (|SingleInteger| . SINT)
+   (|SmithNormalForm| . SMITH)
+   (|SparseEchelonMatrix| . SEM)
+   (|SparseUnivariatePolynomialExpressions| . SUPEXPR)
+   (|SparseUnivariatePolynomialFunctions2| . SUP2)
+   (|SpecialOutputPackage| . SPECOUT)
+   (|SquareFreeRegularSetDecompositionPackage| . SRDCMPK)
+   (|SquareFreeRegularTriangularSet| . SREGSET)
+   (|SquareFreeRegularTriangularSetGcdPackage| . SFRGCD)
+   (|SquareFreeQuasiComponentPackage| . SFQCMPK)
+   (|Stack| . STACK)
+   (|Stream| . STREAM)
+   (|StreamFunctions1| . STREAM1)
+   (|StreamFunctions2| . STREAM2)
+   (|StreamFunctions3| . STREAM3)
+   (|StreamTensor| . STNSR)
+   (|StochasticDifferential| . SD)
+   (|String| . STRING)
+   (|SturmHabichtPackage| . SHP)
+   (|Symbol| . SYMBOL)
+   (|SymmetricGroupCombinatoricFunctions| . SGCF)
+   (|SystemSolvePackage| . SYSSOLP)
+   (|SAERationalFunctionAlgFactor| . SAERFFC)
+   (|Tableau| . TABLEAU)
+   (|TaylorSeries| . TS)
+   (|TaylorSolve| . UTSSOL)
+   (|TexFormat| . TEX)
+   (|TexFormat1| . TEX1)
+   (|TextFile| . TEXTFILE)
+   (|ThreeDimensionalViewport| . VIEW3D)
+   (|ThreeSpace| . SPACE3)
+   (|Timer|  . TIMER)
+   (|TopLevelDrawFunctions| . DRAW)
+   (|TopLevelDrawFunctionsForAlgebraicCurves| . DRAWCURV)
+   (|TopLevelDrawFunctionsForCompiledFunctions| . DRAWCFUN)
+   (|TopLevelDrawFunctionsForPoints| .  DRAWPT )
+   (|TopLevelThreeSpace| . TOPSP)
+   (|TranscendentalManipulations| . TRMANIP)
+   (|TransSolvePackage| . SOLVETRA)
+   (|Tree| . TREE)
+   (|TrigonometricManipulations| . TRIGMNIP)
+   (|UnivariateLaurentSeriesFunctions2| . ULS2)
+   (|UnivariateFormalPowerSeries| . UFPS)
+   (|UnivariateFormalPowerSeriesFunctions| . UFPS1)
+   (|UnivariatePolynomial| . UP)
+   (|UnivariatePolynomialCategoryFunctions2| . UPOLYC2)
+   (|UnivariatePolynomialCommonDenominator| . UPCDEN)
+   (|UnivariatePolynomialFunctions2| . UP2)
+   (|UnivariatePolynomialMultiplicationPackage| . UPMP)
+   (|UnivariateTaylorSeriesCZero| . UTSZ)
+   (|UnivariatePuiseuxSeriesFunctions2| . UPXS2)
+   (|UnivariateTaylorSeriesFunctions2| . UTS2)
+   (|UniversalSegment| . UNISEG)
+   (|UniversalSegmentFunctions2| . UNISEG2)
+   (|UserDefinedVariableOrdering| . UDVO)
+   (|U8Matrix| . U8MAT)
+   (|U16Matrix| . U16MAT)
+   (|U32Matrix| . U32MAT)
+   (|U8Vector| . U8VEC)
+   (|U16Vector| . U16VEC)
+   (|U32Vector| . U32VEC)
+   (|U32VectorPolynomialOperations| . POLYVEC)
+   (|Vector| . VECTOR)
+   (|VectorFunctions2| . VECTOR2)
+   (|ViewDefaultsPackage| . VIEWDEF)
+   (|Void| . VOID)
+   (|WuWenTsunTriangularSet| . WUTSET))
+ (|naglink|
+   (|Asp1| . ASP1)
+   (|Asp4| . ASP4)
+   (|Asp6| . ASP6)
+   (|Asp7| . ASP7)
+   (|Asp8| . ASP8)
+   (|Asp9| . ASP9)
+   (|Asp10| . ASP10)
+   (|Asp12| . ASP12)
+   (|Asp19| . ASP19)
+   (|Asp20| . ASP20)
+   (|Asp24| . ASP24)
+   (|Asp27| . ASP27)
+   (|Asp28| . ASP28)
+   (|Asp29| . ASP29)
+   (|Asp30| . ASP30)
+   (|Asp31| . ASP31)
+   (|Asp33| . ASP33)
+   (|Asp34| . ASP34)
+   (|Asp35| . ASP35)
+   (|Asp41| . ASP41)
+   (|Asp42| . ASP42)
+   (|Asp49| . ASP49)
+   (|Asp50| . ASP50)
+   (|Asp55| . ASP55)
+   (|Asp73| . ASP73)
+   (|Asp74| . ASP74)
+   (|Asp77| . ASP77)
+   (|Asp78| . ASP78)
+   (|Asp80| . ASP80)
+   (|FortranCode| . FC)
+   (|FortranCodePackage1| . FCPAK1)
+   (|FortranExpression| . FEXPR)
+   (|FortranMachineTypeCategory| . FMTC)
+   (|FortranMatrixCategory| . FMC)
+   (|FortranMatrixFunctionCategory| . FMFUN)
+   (|FortranOutputStackPackage| . FOP)
+   (|FortranPackage| . FORT)
+   (|FortranProgramCategory| . FORTCAT)
+   (|FortranProgram| . FORTRAN)
+   (|FortranFunctionCategory| . FORTFN)
+   (|FortranScalarType| . FST)
+   (|FortranType| . FT)
+   (|FortranTemplate| . FTEM)
+   (|FortranVectorFunctionCategory| . FVFUN)
+   (|FortranVectorCategory| . FVC)
+   (|MachineComplex| . MCMPLX)
+   (|MachineFloat| . MFLOAT)
+   (|MachineInteger| . MINT)
+   (|MultiVariableCalculusFunctions| . MCALCFN)
+   (|NagDiscreteFourierTransformInterfacePackage| . NAGDIS)
+   (|NagEigenInterfacePackage| . NAGEIG)
+   (|NAGLinkSupportPackage| . NAGSP)
+   (|NagOptimisationInterfacePackage| . NAGOPT)
+   (|NagQuadratureInterfacePackage| . NAGQUA)
+   (|NagResultChecks| . NAGRES)
+   (|NagSpecialFunctionsInterfacePackage| . NAGSPE)
+   (|NagPolynomialRootsPackage| . NAGC02)
+   (|NagRootFindingPackage| . NAGC05)
+   (|NagSeriesSummationPackage| . NAGC06)
+   (|NagIntegrationPackage| . NAGD01)
+   (|NagOrdinaryDifferentialEquationsPackage| . NAGD02)
+   (|NagPartialDifferentialEquationsPackage| . NAGD03)
+   (|NagInterpolationPackage| . NAGE01)
+   (|NagFittingPackage| . NAGE02)
+   (|NagOptimisationPackage| . NAGE04)
+   (|NagMatrixOperationsPackage| . NAGF01)
+   (|NagEigenPackage| . NAGF02)
+   (|NagLinearEquationSolvingPackage| . NAGF04)
+   (|NagLapack| . NAGF07)
+   (|NagSpecialFunctionsPackage| . NAGS)
+   (|PackedHermitianSequence| . PACKED)
+   (|Result| . RESULT)
+   (|SimpleFortranProgram| . SFORT)
+   (|Switch| . SWITCH)
+   (|SymbolTable| . SYMTAB)
+   (|TemplateUtilities| . TEMUTL)
+   (|TheSymbolTable| . SYMS)
+   (|ThreeDimensionalMatrix| . M3D))
+ (|anna|
+   (|AnnaNumericalIntegrationPackage| . INTPACK)
+   (|AnnaNumericalOptimizationPackage| . OPTPACK)
+   (|AnnaOrdinaryDifferentialEquationPackage| . ODEPACK)
+   (|AnnaPartialDifferentialEquationPackage| . PDEPACK)
+   (|AttributeButtons| . ATTRBUT)
+   (|BasicFunctions| . BFUNCT)
+   (|d01ajfAnnaType| . D01AJFA)
+   (|d01akfAnnaType| . D01AKFA)
+   (|d01alfAnnaType| . D01ALFA)
+   (|d01amfAnnaType| . D01AMFA)
+   (|d01anfAnnaType| . D01ANFA)
+   (|d01apfAnnaType| . D01APFA)
+   (|d01aqfAnnaType| . D01AQFA)
+   (|d01asfAnnaType| . D01ASFA)
+   (|d01fcfAnnaType| . D01FCFA)
+   (|d01gbfAnnaType| . D01GBFA)
+   (|d01AgentsPackage| . D01AGNT)
+   (|d01TransformFunctionType| . D01TRNS)
+   (|d01WeightsPackage| . D01WGTS)
+   (|d02AgentsPackage| . D02AGNT)
+   (|d02bbfAnnaType| . D02BBFA)
+   (|d02bhfAnnaType| . D02BHFA)
+   (|d02cjfAnnaType| . D02CJFA)
+   (|d02ejfAnnaType| . D02EJFA)
+   (|d03AgentsPackage| . D03AGNT)
+   (|d03eefAnnaType| . D03EEFA)
+   (|d03fafAnnaType| . D03FAFA)
+   (|e04AgentsPackage| . E04AGNT)
+   (|e04dgfAnnaType| . E04DGFA)
+   (|e04fdfAnnaType| . E04FDFA)
+   (|e04gcfAnnaType| . E04GCFA)
+   (|e04jafAnnaType| . E04JAFA)
+   (|e04mbfAnnaType| . E04MBFA)
+   (|e04nafAnnaType| . E04NAFA)
+   (|e04ucfAnnaType| . E04UCFA)
+   (|ExpertSystemContinuityPackage| . ESCONT)
+   (|ExpertSystemContinuityPackage1| . ESCONT1)
+   (|ExpertSystemToolsPackage| . ESTOOLS)
+   (|ExpertSystemToolsPackage1| . ESTOOLS1)
+   (|ExpertSystemToolsPackage2| . ESTOOLS2)
+   (|NumericalIntegrationCategory| . NUMINT)
+   (|NumericalIntegrationProblem| . NIPROB)
+   (|NumericalODEProblem| . ODEPROB)
+   (|NumericalOptimizationCategory| . OPTCAT)
+   (|NumericalOptimizationProblem| . OPTPROB)
+   (|NumericalPDEProblem| . PDEPROB)
+   (|ODEIntensityFunctionsTable| . ODEIFTBL)
+   (|IntegrationFunctionsTable| . INTFTBL)
+   (|OrdinaryDifferentialEquationsSolverCategory| . ODECAT)
+   (|PartialDifferentialEquationsSolverCategory| . PDECAT)
+   (|RoutinesTable| . ROUTINE))
+ (|categories| 
+   (|AbelianGroup| . ABELGRP)
+   (|AbelianMonoid| . ABELMON)
+   (|AbelianMonoidRing| . AMR)
+   (|AbelianSemiGroup| . ABELSG)
+   (|AdditiveValuationAttribute| . ATADDVA)
+   (|AffineSpaceCategory| . AFSPCAT)
+   (|Aggregate| . AGG)
+   (|Algebra| . ALGEBRA)
+   (|AlgebraicallyClosedField| . ACF)
+   (|AlgebraicallyClosedFunctionSpace| . ACFS)
+   (|ApproximateAttribute| . ATAPPRO)
+   (|ArbitraryExponentAttribute| . ATARBEX)
+   (|ArbitraryPrecisionAttribute| . ATARBPR)
+   (|ArcHyperbolicFunctionCategory| . AHYP)
+   (|ArcTrigonometricFunctionCategory| . ATRIG)
+   (|AssociationListAggregate| . ALAGG)
+   (|AttributeRegistry| . ATTREG)
+   (|BagAggregate| . BGAGG)
+   (|BasicType| . BASTYPE)
+   (|BiModule| . BMODULE)
+   (|BinaryRecursiveAggregate| . BRAGG)
+   (|BinaryTreeCategory| . BTCAT)
+   (|BitAggregate| . BTAGG)
+   (|BlowUpMethodCategory| . BLMETCT)
+   (|CachableSet| . CACHSET)
+   (|CancellationAbelianMonoid| . CABMON)
+   (|CanonicalAttribute| . ATCANON)
+   (|CanonicalClosedAttribute| . ATCANCL)
+   (|CanonicalUnitNormalAttribute| . ATCUNOR)
+   (|CentralAttribute| . ATCENRL)
+   (|CharacteristicNonZero| . CHARNZ)
+   (|CharacteristicZero| . CHARZ)
+   (|CoercibleTo| . KOERCE)
+   (|Collection| . CLAGG)
+   (|CombinatorialFunctionCategory| . CFCAT)
+   (|CombinatorialOpsCategory| . COMBOPC)
+   (|CommutativeRing| . COMRING)
+   (|CommutativeStarAttribute| . ATCS)
+   (|Comparable| . COMPAR)
+   (|ComplexCategory| . COMPCAT)
+   (|ConvertibleTo| . KONVERT)
+   (|DequeueAggregate| . DQAGG)
+   (|DesingTreeCategory| . DSTRCAT)
+   (|Dictionary| . DIAGG)
+   (|DictionaryOperations| . DIOPS)
+   (|DifferentialExtension| . DIFEXT)
+   (|DifferentialPolynomialCategory| . DPOLCAT)
+   (|DifferentialRing| . DIFRING)
+   (|DifferentialVariableCategory| . DVARCAT)
+   (|DirectProductCategory| . DIRPCAT)
+   (|DivisionRing| . DIVRING)
+   (|DivisorCategory| . DIVCAT)
+   (|DoublyLinkedAggregate| . DLAGG)
+   (|ElementaryFunctionCategory| . ELEMFUN)
+   (|Eltable| . ELTAB)
+   (|EltableAggregate| . ELTAGG)
+   (|EntireRing| . ENTIRER)
+   (|EuclideanDomain| . EUCDOM)
+   (|Evalable| . EVALAB)
+   (|ExpressionSpace| . ES)
+   (|ExtensibleLinearAggregate| . ELAGG)
+   (|ExtensionField| . XF)
+   (|Field| . FIELD)
+   (|FieldOfPrimeCharacteristic| . FPC)
+   (|Finite| . FINITE)
+   (|FileCategory| . FILECAT)
+   (|FileNameCategory| . FNCAT)
+   (|FiniteAbelianMonoidRing| . FAMR)
+   (|FiniteAggregateAttribute| . ATFINAG)
+   (|FiniteAlgebraicExtensionField| . FAXF)
+   (|FiniteDivisorCategory| . FDIVCAT)
+   (|FiniteFieldCategory| . FFIELDC)
+   (|FiniteLinearAggregate| . FLAGG)
+   (|FiniteRankNonAssociativeAlgebra| . FINAALG)
+   (|FiniteRankAlgebra| . FINRALG)
+   (|FiniteSetAggregate| . FSAGG)
+   (|FloatingPointSystem| . FPS)
+   (|FramedAlgebra| . FRAMALG)
+   (|FramedNonAssociativeAlgebra| . FRNAALG)
+   (|FramedNonAssociativeAlgebraFunctions2| . FRNAAF2)
+   (|FreeAbelianMonoidCategory| . FAMONC)
+   (|FreeLieAlgebra| . FLALG)
+   (|FreeModuleCat| . FMCAT)
+   (|FullyEvalableOver| . FEVALAB)
+   (|FullyLinearlyExplicitRingOver| . FLINEXP)
+   (|FullyPatternMatchable| . FPATMAB)
+   (|FullyRetractableTo| . FRETRCT)
+   (|FunctionFieldCategory| . FFCAT)
+   (|FunctionSpace| . FS)
+   (|GcdDomain| . GCDDOM)
+   (|GradedAlgebra| . GRALG)
+   (|GradedModule| . GRMOD)
+   (|Group| . GROUP)
+   (|HomogeneousAggregate| . HOAGG)
+   (|HyperbolicFunctionCategory| . HYPCAT)
+   (|IndexedAggregate| . IXAGG)
+   (|IndexedDirectProductCategory| . IDPC)
+   (|InfinitlyClosePointCategory| . INFCLCT)
+   (|InnerEvalable| . IEVALAB)
+   (|IntegerNumberSystem| . INS)
+   (|IntegralDomain| . INTDOM)
+   (|IntervalCategory| . INTCAT)
+   (|KeyedDictionary| . KDAGG)
+   (|JacobiIdentityAttribute| . ATJACID)
+   (|LazyRepresentativeAttribute| . ATLR)
+   (|LazyStreamAggregate| . LZSTAGG)
+   (|LeftAlgebra| . LALG)
+   (|LeftModule| . LMODULE)
+   (|LeftOreRing| . LORER)
+   (|LeftUnitaryAttribute| . ATLUNIT)
+   (|LieAlgebra| . LIECAT)
+   (|LinearAggregate| . LNAGG)
+   (|LinearlyExplicitRingOver| . LINEXP)
+   (|LinearOrdinaryDifferentialOperatorCategory| . LODOCAT)
+   (|LiouvillianFunctionCategory| . LFCAT)
+   (|ListAggregate| . LSAGG)
+   (|LocalPowerSeriesCategory| . LOCPOWC)
+   (|Logic| . LOGIC)
+   (|ModularAlgebraicGcdOperations| . MAGCDOC)
+   (|MatrixCategory| . MATCAT)
+   (|Module| . MODULE)
+   (|Monad| . MONAD)
+   (|MonadWithUnit| . MONADWU)
+   (|Monoid| . MONOID)
+   (|MonogenicAlgebra| . MONOGEN)
+   (|MonogenicLinearOperator| . MLO)
+   (|MultiDictionary| . MDAGG)
+   (|MultiplicativeValuationAttribute| . ATMULVA)
+   (|MultisetAggregate| . MSETAGG)
+   (|MultivariateTaylorSeriesCategory| . MTSCAT)
+   (|NonAssociativeAlgebra| . NAALG)
+   (|NonAssociativeRing| . NASRING)
+   (|NonAssociativeRng| . NARNG)
+   (|NormalizedTriangularSetCategory| . NTSCAT)
+   (|NotherianAttribute| . ATNOTHR)
+   (|NullSquareAttribute| . ATNULSQ)
+   (|NoZeroDivisorsAttribute| . ATNZDIV)
+   (|Object| . OBJECT)
+   (|OctonionCategory| . OC)
+   (|OneDimensionalArrayAggregate| . A1AGG)
+   (|OpenMath| . OM)
+   (|OrderedAbelianGroup| . OAGROUP)
+   (|OrderedAbelianMonoid| . OAMON)
+   (|OrderedAbelianMonoidSup| . OAMONS)
+   (|OrderedAbelianSemiGroup| . OASGP)
+   (|OrderedCancellationAbelianMonoid| . OCAMON)
+   (|OrderedFinite| . ORDFIN)
+   (|OrderedIntegralDomain| . OINTDOM)
+   (|OrderedMonoid| . ORDMON)
+   (|OrderedMultisetAggregate| . OMSAGG)
+   (|OrderedRing| . ORDRING)
+   (|OrderedSet| . ORDSET)
+   (|PAdicIntegerCategory| . PADICCT)
+   (|PartialDifferentialRing| . PDRING)
+   (|PartiallyOrderedSetAttribute| . ATPOSET)
+   (|PartialTranscendentalFunctions| . PTRANFN)
+   (|Patternable| . PATAB)
+   (|PatternMatchable| . PATMAB)
+   (|PermutationCategory| . PERMCAT)
+   (|PlacesCategory| . PLACESC)
+   (|PlottablePlaneCurveCategory| . PPCURVE)
+   (|PlottableSpaceCurveCategory| . PSCURVE)
+   (|PointCategory| . PTCAT)
+   (|PolynomialCategory| . POLYCAT)
+   (|PolynomialFactorizationExplicit| . PFECAT)
+   (|PolynomialSetCategory| . PSETCAT)
+   (|PowerSeriesCategory| . PSCAT)
+   (|PrimitiveFunctionCategory| . PRIMCAT)
+   (|PrincipalIdealDomain| . PID)
+   (|PriorityQueueAggregate| . PRQAGG)
+   (|ProjectiveSpaceCategory| . PRSPCAT)
+   (|PseudoAlgebraicClosureofAlgExtOfRationalNumberCategory| . PACEXTC)
+   (|PseudoAlgebraicClosureOfFiniteField| . PACOFF)
+   (|PseudoAlgebraicClosureOfFiniteFieldCategory| . PACFFC)
+   (|PseudoAlgebraicClosureOfPerfectFieldCategory| . PACPERC)
+   (|PseudoAlgebraicClosureOfRationalNumber| . PACRAT)
+   (|PseudoAlgebraicClosureOfRationalNumberCategory| . PACRATC)
+   (|QuaternionCategory| . QUATCAT)
+   (|QueueAggregate| . QUAGG)
+   (|QuotientFieldCategory| . QFCAT)
+   (|RadicalCategory| . RADCAT)
+   (|RealClosedField| . RCFIELD)
+   (|RealConstant| . REAL)
+   (|RealNumberSystem| . RNS)
+   (|RealRootCharacterizationCategory| . RRCC)
+   (|RectangularMatrixCategory| . RMATCAT)
+   (|RecursiveAggregate| . RCAGG)
+   (|RecursivePolynomialCategory| . RPOLCAT)
+   (|RegularChain| . RGCHAIN)
+   (|RegularTriangularSetCategory| . RSETCAT)
+   (|RetractableTo| . RETRACT)
+   (|RightModule| . RMODULE)
+   (|Ring| . RING)
+   (|RightUnitaryAttribute| . ATRUNIT)
+   (|Rng| . RNG)
+   (|SegmentCategory| . SEGCAT)
+   (|SegmentExpansionCategory| . SEGXCAT)
+   (|SemiGroup| . SGROUP)
+   (|SetAggregate| . SETAGG)
+   (|SetCategory| . SETCAT)
+   (|SetCategoryWithDegree| . SETCATD)
+   (|SExpressionCategory| . SEXCAT)
+   (|ShallowlyMutableAttribute| . ATSHMUT)
+   (|SpecialFunctionCategory| . SPFCAT)
+   (|SquareFreeNormalizedTriangularSetCategory| . SNTSCAT)
+   (|SquareFreeRegularTriangularSetCategory| . SFRTCAT)
+   (|SquareMatrixCategory| . SMATCAT)
+   (|StackAggregate| . SKAGG)
+   (|StepThrough| . STEP)
+   (|StreamAggregate| . STAGG)
+   (|StringAggregate| . SRAGG)
+   (|StringCategory| . STRICAT)
+   (|StructuralConstantsPackage| . SCPKG)
+   (|TableAggregate| . TBAGG)
+   (|ThreeSpaceCategory| . SPACEC)
+   (|TranscendentalFunctionCategory| . TRANFUN)
+   (|TriangularSetCategory| . TSETCAT)
+   (|TrigonometricFunctionCategory| . TRIGCAT)
+   (|TwoDimensionalArrayCategory| . ARR2CAT)
+   (|Type| . TYPE)
+   (|UnaryRecursiveAggregate| . URAGG)
+   (|UniqueFactorizationDomain| . UFD)
+   (|UnitsKnownAttribute| . ATUNIKN)
+   (|UnivariateLaurentSeriesCategory| . ULSCAT)
+   (|UnivariateLaurentSeriesConstructorCategory| . ULSCCAT)
+   (|UnivariatePolynomialCategory| . UPOLYC)
+   (|UnivariatePowerSeriesCategory| . UPSCAT)
+   (|UnivariatePuiseuxSeriesCategory| . UPXSCAT)
+   (|UnivariatePuiseuxSeriesConstructorCategory| . UPXSCCA)
+   (|UnivariateSkewPolynomialCategory| . OREPCAT)
+   (|UnivariateTaylorSeriesCategory| . UTSCAT)
+   (|VectorCategory| . VECTCAT)
+   (|VectorSpace| . VSPACE)
+   (|XAlgebra| . XALG)
+   (|XFreeAlgebra| . XFALG)
+   (|XPolynomialsCat| . XPOLYC)
+   (|ZeroDimensionalSolvePackage| . ZDSOLVE))
+ (|Hidden| 
+   (|AlgebraicFunction| . AF)
+   (|AlgebraicFunctionField| . ALGFF)
+   (|AlgebraicHermiteIntegration| . INTHERAL)
+   (|AlgebraicIntegrate| . INTALG)
+   (|AlgebraicIntegration| . INTAF)
+   (|AnonymousFunction| . ANON)
+   (|AntiSymm| . ANTISYM)
+   (|ApplyRules| . APPRULE)
+   (|ApplyUnivariateSkewPolynomial| . APPLYORE)
+   (|ArrayStack| . ASTACK)
+   (|AssociatedEquations| . ASSOCEQ)
+   (|AssociationList| . ALIST)
+   (|Automorphism| . AUTOMOR)
+   (|BalancedFactorisation| . BALFACT)
+   (|BalancedPAdicInteger| . BPADIC)
+   (|BalancedPAdicRational| . BPADICRT)
+   (|BezoutMatrix| . BEZOUT)
+   (|BoundIntegerRoots| . BOUNDZRO)
+   (|BrillhartTests| . BRILL)
+   (|ChangeOfVariable| . CHVAR)
+   (|CharacteristicPolynomialInMonogenicalAlgebra| . CPIMA)
+   (|ChineseRemainderToolsForIntegralBases| . IBACHIN)
+   (|CoerceVectorMatrixPackage| . CVMP)
+   (|CombinatorialFunction| . COMBF)
+   (|CommonOperators| . COMMONOP)
+   (|CommuteUnivariatePolynomialCategory| . COMMUPC)
+   (|ComplexIntegerSolveLinearPolynomialEquation| . CINTSLPE)
+   (|ComplexPattern| . COMPLPAT)
+   (|ComplexPatternMatch| . CPMATCH)
+   (|ComplexRootFindingPackage| . CRFP)
+   (|ConstantLODE| . ODECONST)
+   (|CyclicStreamTools| . CSTTOOLS)
+   (|CyclotomicPolynomialPackage| . CYCLOTOM)
+   (|DefiniteIntegrationTools| . DFINTTLS)
+   (|DegreeReductionPackage| . DEGRED)
+   (|DeRhamComplex| . DERHAM)
+   (|DifferentialSparseMultivariatePolynomial| . DSMP)
+   (|DirectProduct| . DIRPROD)
+   (|DirectProductMatrixModule| . DPMM)
+   (|DirectProductModule| . DPMO)
+   (|DiscreteLogarithmPackage| . DLP)
+   (|DistributedMultivariatePolynomial| . DMP)
+   (|DoubleResultantPackage| . DBLRESP)
+   (|DrawOptionFunctions0| . DROPT0)
+   (|DrawOptionFunctions1| . DROPT1)
+   (|ElementaryFunction| . EF)
+   (|ElementaryFunctionsUnivariateLaurentSeries| . EFULS)
+   (|ElementaryFunctionsUnivariatePuiseuxSeries| . EFUPXS)
+   (|ElementaryIntegration| . INTEF)
+   (|ElementaryRischDE| . RDEEF)
+   (|ElementaryRischDESystem| . RDEEFS)
+   (|EllipticFunctionsUnivariateTaylorSeries| . ELFUTS)
+   (|EqTable| . EQTBL)
+   (|EuclideanModularRing| . EMR)
+   (|EvaluateCycleIndicators| . EVALCYC)
+   (|ExponentialExpansion| . EXPEXPAN)
+   (|ExponentialOfUnivariatePuiseuxSeries| . EXPUPXS)
+   (|ExpressionSpaceFunctions1| . ES1)
+   (|ExpressionTubePlot| . EXPRTUBE)
+   (|ExtAlgBasis| . EAB)
+   (|FactoredFunctions| . FACTFUNC)
+   (|FactoredFunctionUtilities| . FRUTIL)
+   (|FactoringUtilities| . FACUTIL)
+   (|FGLMIfCanPackage| . FGLMICPK)
+   (|FindOrderFinite| . FORDER)
+   (|FiniteDivisor| . FDIV)
+   (|FiniteFieldCyclicGroupExtension| . FFCGX)
+   (|FiniteFieldCyclicGroupExtensionByPolynomial| . FFCGP)
+   (|FiniteFieldExtension| . FFX)
+   (|FiniteFieldExtensionByPolynomial| . FFP)
+   (|FiniteFieldFunctions| . FFF)
+   (|FiniteFieldNormalBasisExtension| . FFNBX)
+   (|FiniteFieldNormalBasisExtensionByPolynomial| . FFNBP)
+   (|FiniteFieldPolynomialPackage| . FFPOLY)
+   (|FiniteFieldSolveLinearPolynomialEquation| . FFSLPE)
+   (|FormalFraction| . FORMAL)
+   (|FourierComponent| . FCOMP)
+   (|FractionalIdeal| . FRIDEAL)
+   (|FramedModule| . FRMOD)
+   (|FreeAbelianGroup| . FAGROUP)
+   (|FreeAbelianMonoid| . FAMONOID)
+   (|FreeGroup| . FGROUP)
+   (|FreeModule| . FM)
+   (|FreeModule1| . FM1)
+   (|FreeMonoid| . FMONOID)
+   (|FunctionalSpecialFunction| . FSPECF)
+   (|FunctionCalled| . FUNCTION)
+   (|FunctionFieldIntegralBasis| . FFINTBAS)
+   (|FunctionSpaceReduce| . FSRED)
+   (|FunctionSpaceToUnivariatePowerSeries| . FS2UPS)
+   (|FunctionSpaceToExponentialExpansion| . FS2EXPXP)
+   (|FunctionSpaceUnivariatePolynomialFactor| . FSUPFACT)
+   (|GaloisGroupFactorizationUtilities| . GALFACTU)
+   (|GaloisGroupFactorizer| . GALFACT)
+   (|GaloisGroupPolynomialUtilities| . GALPOLYU)
+   (|GaloisGroupUtilities| . GALUTIL)
+   (|GeneralHenselPackage| . GHENSEL)
+   (|GeneralDistributedMultivariatePolynomial| . GDMP)
+   (|GeneralPolynomialGcdPackage| . GENPGCD)
+   (|GeneralSparseTable| . GSTBL)
+   (|GenericNonAssociativeAlgebra| . GCNAALG)
+   (|GenExEuclid| . GENEEZ)
+   (|GeneralizedMultivariateFactorize| . GENMFACT)
+   (|GeneralModulePolynomial| . GMODPOL)
+   (|GeneralPolynomialSet| . GPOLSET)
+   (|GeneralTriangularSet| . GTSET)
+   (|GenUFactorize| . GENUFACT)
+   (|GenusZeroIntegration| . INTG0)
+   (|GosperSummationMethod| . GOSPER)
+   (|GraphImage| . GRIMAGE)
+   (|GrayCode| . GRAY)
+   (|GroebnerInternalPackage| . GBINTERN)
+   (|GroebnerSolve| . GROEBSOL)
+   (|GuessOptionFunctions0| . GOPT0)
+   (|HashTable| . HASHTBL)
+   (|Heap| . HEAP)
+   (|HeuGcd| . HEUGCD)
+   (|HomogeneousDistributedMultivariatePolynomial| . HDMP)
+   (|HyperellipticFiniteDivisor| . HELLFDIV)
+   (|IncrementingMaps| . INCRMAPS)
+   (|IndexedBits| . IBITS)
+   (|IndexedDirectProductAbelianGroup| . IDPAG)
+   (|IndexedDirectProductAbelianMonoid| . IDPAM)
+   (|IndexedDirectProductObject| . IDPO)
+   (|IndexedDirectProductOrderedAbelianMonoid| . IDPOAM)
+   (|IndexedDirectProductOrderedAbelianMonoidSup| . IDPOAMS)
+   (|IndexedExponents| . INDE)
+   (|IndexedFlexibleArray| . IFARRAY)
+   (|IndexedList| . ILIST)
+   (|IndexedMatrix| . IMATRIX)
+   (|IndexedOneDimensionalArray| . IARRAY1)
+   (|IndexedString| . ISTRING)
+   (|IndexedTwoDimensionalArray| . IARRAY2)
+   (|IndexedVector| . IVECTOR)
+   (|InnerAlgFactor| . IALGFACT)
+   (|InnerAlgebraicNumber| . IAN)
+   (|InnerCommonDenominator| . ICDEN)
+   (|InnerFiniteField| . IFF)
+   (|InnerFreeAbelianMonoid| . IFAMON)
+   (|InnerIndexedTwoDimensionalArray| . IIARRAY2)
+   (|InnerMatrixLinearAlgebraFunctions| . IMATLIN)
+   (|InnerMatrixQuotientFieldFunctions| . IMATQF)
+   (|InnerModularGcd| . INMODGCD)
+   (|InnerMultFact| . INNMFACT)
+   (|InnerNormalBasisFieldFunctions| . INBFF)
+   (|InnerNumericEigenPackage| . INEP)
+   (|InnerNumericFloatSolvePackage| . INFSP)
+   (|InnerPAdicInteger| . IPADIC)
+   (|InnerPolySign| . INPSIGN)
+   (|InnerPolySum| . ISUMP)
+   (|InnerPrimeField| . IPF)
+   (|InnerSparseUnivariatePowerSeries| . ISUPS)
+   (|InnerTable| . INTABL)
+   (|InnerTaylorSeries| . ITAYLOR)
+   (|InnerTrigonometricManipulations| . ITRIGMNP)
+   (|InputForm| . INFORM)
+   (|InputFormFunctions1| . INFORM1)
+   (|IntegerBits| . INTBIT)
+   (|IntegerFactorizationPackage| . INTFACT)
+   (|IntegerMod| . ZMOD)
+   (|IntegerSolveLinearPolynomialEquation| . INTSLPE)
+   (|IntegralBasisPolynomialTools| . IBPTOOLS)
+   (|IntegralBasisTools| . IBATOOL)
+   (|IntegrationResult| . IR)
+   (|IntegrationTools| . INTTOOLS)
+   (|InternalPrintPackage| . IPRNTPK)
+   (|InternalRationalUnivariateRepresentationPackage| . IRURPK)
+   (|IrredPolyOverFiniteField| . IRREDFFX)
+   (|Kernel| . KERNEL)
+   (|Kovacic| . KOVACIC)
+   (|LaurentPolynomial| . LAUPOL)
+   (|LeadingCoefDetermination| . LEADCDET)
+   (|LexTriangularPackage| . LEXTRIPK)
+   (|LieExponentials| . LEXP)
+   (|LiePolynomial| . LPOLY)
+   (|LinearDependence| . LINDEP)
+   (|LinearOrdinaryDifferentialOperatorFactorizer| . LODOF)
+   (|LinearOrdinaryDifferentialOperator1| . LODO1)
+   (|LinearOrdinaryDifferentialOperator2| . LODO2)
+   (|LinearOrdinaryDifferentialOperatorsOps| . LODOOPS)
+   (|LinearPolynomialEquationByFractions| . LPEFRAC)
+   (|LinGroebnerPackage| . LGROBP)
+   (|LiouvillianFunction| . LF)
+   (|ListMonoidOps| . LMOPS)
+   (|ListMultiDictionary| . LMDICT)
+   (|LocalAlgebra| . LA)
+   (|Localize| . LO)
+   (|LyndonWord| . LWORD)
+   (|Magma| . MAGMA)
+   (|MakeBinaryCompiledFunction| . MKBCFUNC)
+   (|MakeCachableSet| . MKCHSET)
+   (|MakeUnaryCompiledFunction| . MKUCFUNC)
+   (|MappingPackageInternalHacks1| . MAPHACK1)
+   (|MappingPackageInternalHacks2| . MAPHACK2)
+   (|MappingPackageInternalHacks3| . MAPHACK3)
+   (|MeshCreationRoutinesForThreeDimensions| . MESH)
+   (|ModMonic| . MODMON)
+   (|ModularField| . MODFIELD)
+   (|ModularHermitianRowReduction| . MHROWRED)
+   (|ModularRing| . MODRING)
+   (|ModuleMonomial| . MODMONOM)
+   (|MoebiusTransform| . MOEBIUS)
+   (|MonoidRing| . MRING)
+   (|MonomialExtensionTools| . MONOTOOL)
+   (|MPolyCatPolyFactorizer| . MPCPF)
+   (|MPolyCatFunctions3| . MPC3)
+   (|MRationalFactorize| . MRATFAC)
+   (|MultipleMap| . MMAP)
+   (|MultivariateLifting| . MLIFT)
+   (|MultivariateSquareFree| . MULTSQFR)
+   (|HomogeneousDirectProduct| . HDP)
+   (|NewSparseMultivariatePolynomial| . NSMP)
+   (|NewSparseUnivariatePolynomial| . NSUP)
+   (|NewSparseUnivariatePolynomialFunctions2| . NSUP2)
+   (|NonCommutativeOperatorDivision| . NCODIV)
+   (|NewtonInterpolation| . NEWTON)
+   (|None| . NONE)
+   (|NonLinearFirstOrderODESolver| . NODE1)
+   (|NonLinearSolvePackage| . NLINSOL)
+   (|NormRetractPackage| . NORMRETR)
+   (|NPCoef| . NPCOEF)
+   (|NumberFormats| . NUMFMT)
+   (|NumberFieldIntegralBasis| . NFINTBAS)
+   (|NumericTubePlot| . NUMTUBE)
+   (|ODEIntegration| . ODEINT)
+   (|ODETools| . ODETOOLS)
+   (|Operator| . OP)
+   (|OppositeMonogenicLinearOperator| . OMLO)
+   (|OrderedDirectProduct| . ODP)
+   (|OrderedFreeMonoid| . OFMONOID)
+   (|OrderedVariableList| . OVAR)
+   (|OrderingFunctions| . ORDFUNS)
+   (|OrderlyDifferentialPolynomial| . ODPOL)
+   (|OrderlyDifferentialVariable| . ODVAR)
+   (|OrdinaryWeightedPolynomials| . OWP)
+   (|OutputForm| . OUTFORM)
+   (|PadeApproximants| . PADE)
+   (|PAdicInteger| . PADIC)
+   (|PAdicRational| . PADICRAT)
+   (|PAdicRationalConstructor| . PADICRC)
+   (|PAdicWildFunctionFieldIntegralBasis| . PWFFINTB)
+   (|ParadoxicalCombinatorsForStreams| . YSTREAM)
+   (|ParametricLinearEquations| . PLEQN)
+   (|PartialFractionPackage| . PFRPAC)
+   (|Partition| . PRTITION)
+   (|Pattern| . PATTERN)
+   (|PatternFunctions1| . PATTERN1)
+   (|PatternMatchFunctionSpace| . PMFS)
+   (|PatternMatchIntegerNumberSystem| . PMINS)
+   (|PatternMatchIntegration| . INTPM)
+   (|PatternMatchKernel| . PMKERNEL)
+   (|PatternMatchListAggregate| . PMLSAGG)
+   (|PatternMatchListResult| . PATLRES)
+   (|PatternMatchPolynomialCategory| . PMPLCAT)
+   (|PatternMatchPushDown| . PMDOWN)
+   (|PatternMatchQuotientFieldCategory| . PMQFCAT)
+   (|PatternMatchResult| . PATRES)
+   (|PatternMatchSymbol| . PMSYM)
+   (|PatternMatchTools| . PMTOOLS)
+   (|PlaneAlgebraicCurvePlot| . ACPLOT)
+   (|Plot| . PLOT)
+   (|PlotFunctions1| . PLOT1)
+   (|PlotTools| . PLOTTOOL)
+   (|Plot3D| . PLOT3D)
+   (|PoincareBirkhoffWittLyndonBasis| . PBWLB)
+   (|Point| . POINT)
+   (|PointsOfFiniteOrder| . PFO)
+   (|PointsOfFiniteOrderRational| . PFOQ)
+   (|PointsOfFiniteOrderTools| . PFOTOOLS)
+   (|PointPackage| . PTPACK)
+   (|PolToPol| . POLTOPOL)
+   (|PolynomialCategoryLifting| . POLYLIFT)
+   (|PolynomialCategoryQuotientFunctions| . POLYCATQ)
+   (|PolynomialFactorizationByRecursion| . PFBR)
+   (|PolynomialFactorizationByRecursionUnivariate| . PFBRU)
+   (|PolynomialGcdPackage| . PGCD)
+   (|PolynomialInterpolation| . PINTERP)
+   (|PolynomialInterpolationAlgorithms| . PINTERPA)
+   (|PolynomialNumberTheoryFunctions| . PNTHEORY)
+   (|PolynomialRing| . PR)
+   (|PolynomialRoots| . POLYROOT)
+   (|PolynomialSetUtilitiesPackage| . PSETPK)
+   (|PolynomialSolveByFormulas| . SOLVEFOR)
+   (|PolynomialSquareFree| . PSQFR)
+   (|PrecomputedAssociatedEquations| . PREASSOC)
+   (|PrimitiveArray| . PRIMARR)
+   (|PrimitiveElement| . PRIMELT)
+   (|PrimitiveRatDE| . ODEPRIM)
+   (|PrimitiveRatRicDE| . ODEPRRIC)
+   (|Product| . PRODUCT)
+   (|PseudoRemainderSequence| . PRS)
+   (|PseudoLinearNormalForm| . PSEUDLIN)
+   (|PureAlgebraicIntegration| . INTPAF)
+   (|PureAlgebraicLODE| . ODEPAL)
+   (|PushVariables| . PUSHVAR)
+   (|QuasiAlgebraicSet| . QALGSET)
+   (|QuasiAlgebraicSet2| . QALGSET2)
+   (|RadicalFunctionField| . RADFF)
+   (|RandomDistributions| . RDIST)
+   (|RandomFloatDistributions| . RFDIST)
+   (|RandomIntegerDistributions| . RIDIST)
+   (|RationalFactorize| . RATFACT)
+   (|RationalIntegration| . INTRAT)
+   (|RationalInterpolation| . RINTERP)
+   (|RationalLODE| . ODERAT)
+   (|RationalRicDE| . ODERTRIC)
+   (|RationalUnivariateRepresentationPackage| . RURPK)
+   (|RealSolvePackage| . REALSOLV)
+   (|RectangularMatrix| . RMATRIX)
+   (|ReducedDivisor| . RDIV)
+   (|ReduceLODE| . ODERED)
+   (|ReductionOfOrder| . REDORDER)
+   (|Reference| . REF)
+   (|RepeatedDoubling| . REPDB)
+   (|RepeatedSquaring| . REPSQ)
+   (|ResidueRing| . RESRING)
+   (|RetractSolvePackage| . RETSOL)
+   (|RuleCalled| . RULECOLD)
+   (|SetOfMIntegersInOneToN| . SETMN)
+   (|SExpression| . SEX)
+   (|SExpressionOf| . SEXOF)
+   (|SequentialDifferentialPolynomial| . SDPOL)
+   (|SequentialDifferentialVariable| . SDVAR)
+   (|SimpleAlgebraicExtension| . SAE)
+   (|SingletonAsOrderedSet| . SAOS)
+   (|SortedCache| . SCACHE)
+   (|SortPackage| . SORTPAK)
+   (|SparseMultivariatePolynomial| . SMP)
+   (|SparseMultivariateTaylorSeries| . SMTS)
+   (|SparseTable| . STBL)
+   (|SparseUnivariatePolynomial| . SUP)
+   (|SparseUnivariateSkewPolynomial| . ORESUP)
+   (|SparseUnivariateLaurentSeries| . SULS)
+   (|SparseUnivariatePuiseuxSeries| . SUPXS)
+   (|SparseUnivariateTaylorSeries| . SUTS)
+   (|SplitHomogeneousDirectProduct| . SHDP)
+   (|SplittingNode| . SPLNODE)
+   (|SplittingTree| . SPLTREE)
+   (|SquareMatrix| . SQMATRIX)
+   (|Stack| . STACK)
+   (|StorageEfficientMatrixOperations| . MATSTOR)
+   (|StreamInfiniteProduct| . STINPROD)
+   (|StreamTaylorSeriesOperations| . STTAYLOR)
+   (|StreamTranscendentalFunctions| . STTF)
+   (|StreamTranscendentalFunctionsNonCommutative| . STTFNC)
+   (|StringTable| . STRTBL)
+   (|SubResultantPackage| . SUBRESP)
+   (|SubSpace| . SUBSPACE)
+   (|SubSpaceComponentProperty| . COMPPROP)
+   (|SuchThat| . SUCH)
+   (|SupFractionFactorizer| . SUPFRACF)
+   (|SymmetricFunctions| . SYMFUNC)
+   (|SymmetricPolynomial| . SYMPOLY)
+   (|SystemODESolver| . ODESYS)
+   (|Table| . TABLE)
+   (|TableauxBumpers| . TABLBUMP)
+   (|TabulatedComputationPackage| . TBCMPPK)
+   (|TangentExpansions| . TANEXP)
+   (|ToolsForSign| . TOOLSIGN)
+   (|TranscendentalHermiteIntegration| . INTHERTR)
+   (|TranscendentalIntegration| . INTTR)
+   (|TranscendentalRischDE| . RDETR)
+   (|TranscendentalRischDESystem| . RDETRS)
+   (|TransSolvePackageService| . SOLVESER)
+   (|TriangularMatrixOperations| . TRIMAT)
+   (|TubePlot| . TUBE)
+   (|TubePlotTools| . TUBETOOL)
+   (|Tuple| . TUPLE)
+   (|TwoDimensionalArray| . ARRAY2)
+   (|TwoDimensionalPlotClipping| . CLIP)
+   (|TwoDimensionalViewport| . VIEW2D)
+   (|TwoFactorize| . TWOFACT)
+   (|UnivariateFactorize| . UNIFACT)
+   (|UnivariateLaurentSeries| . ULS)
+   (|UnivariateLaurentSeriesConstructor| . ULSCONS)
+   (|UnivariatePolynomialDecompositionPackage| . UPDECOMP)
+   (|UnivariatePolynomialDivisionPackage| . UPDIVP)
+   (|UnivariatePolynomialSquareFree| . UPSQFREE)
+   (|UnivariatePuiseuxSeries| . UPXS)
+   (|UnivariatePuiseuxSeriesConstructor| . UPXSCONS)
+   (|UnivariatePuiseuxSeriesWithExponentialSingularity| . UPXSSING)
+   (|UnivariateSkewPolynomial| . OREUP)
+   (|UnivariateSkewPolynomialCategoryOps| . OREPCTO)
+   (|UnivariateTaylorSeries| . UTS)
+   (|UnivariateTaylorSeriesODESolver| . UTSODE)
+   (|UserDefinedPartialOrdering| . UDPO)
+   (|UTSodetools| . UTSODETL)
+   (|Variable| . VARIABLE)
+   (|ViewportPackage| . VIEW)
+   (|WeierstrassPreparation| . WEIER)
+   (|WeightedPolynomials| . WP)
+   (|WildFunctionFieldIntegralBasis| . WFFINTBS)
+   (|XDistributedPolynomial| . XDPOLY)
+   (|XExponentialPackage| . XEXPPKG)
+   (|XPBWPolynomial| . XPBWPOLY)
+   (|XPolynomial| . XPOLY)
+   (|XPolynomialRing| . XPR)
+   (|XRecursivePolynomial| . XRPOLY))
+ (|defaults| 
+   (|AbelianGroup&| . ABELGRP-)
+   (|AbelianMonoid&| . ABELMON-)
+   (|AbelianMonoidRing&| . AMR-)
+   (|AbelianSemiGroup&| . ABELSG-)
+   (|Aggregate&| . AGG-)
+   (|Algebra&| . ALGEBRA-)
+   (|AlgebraicallyClosedField&| . ACF-)
+   (|AlgebraicallyClosedFunctionSpace&| . ACFS-)
+   (|ArcTrigonometricFunctionCategory&| . ATRIG-)
+   (|BagAggregate&| . BGAGG-)
+   (|BasicType&| . BASTYPE-)
+   (|BinaryRecursiveAggregate&| . BRAGG-)
+   (|BinaryTreeCategory&| . BTCAT-)
+   (|BitAggregate&| . BTAGG-)
+   (|Collection&| . CLAGG-)
+   (|ComplexCategory&| . COMPCAT-)
+   (|Dictionary&| . DIAGG-)
+   (|DictionaryOperations&| . DIOPS-)
+   (|DifferentialExtension&| . DIFEXT-)
+   (|DifferentialPolynomialCategory&| . DPOLCAT-)
+   (|DifferentialRing&| . DIFRING-)
+   (|DifferentialVariableCategory&| . DVARCAT-)
+   (|DirectProductCategory&| . DIRPCAT-)
+   (|DivisionRing&| . DIVRING-)
+   (|ElementaryFunctionCategory&| . ELEMFUN-)
+   (|EltableAggregate&| . ELTAGG-)
+   (|EuclideanDomain&| . EUCDOM-)
+   (|Evalable&| . EVALAB-)
+   (|ExpressionSpace&| . ES-)
+   (|ExtensibleLinearAggregate&| . ELAGG-)
+   (|ExtensionField&| . XF-)
+   (|Field&| . FIELD-)
+   (|FieldOfPrimeCharacteristic&| . FPC-)
+   (|FiniteAbelianMonoidRing&| . FAMR-)
+   (|FiniteAlgebraicExtensionField&| . FAXF-)
+   (|FiniteDivisorCategory&| . FDIVCAT-)
+   (|FiniteFieldCategory&| . FFIELDC-)
+   (|FiniteLinearAggregate&| . FLAGG-)
+   (|FiniteSetAggregate&| . FSAGG-)
+   (|FiniteRankAlgebra&| . FINRALG-)
+   (|FiniteRankNonAssociativeAlgebra&| . FINAALG-)
+   (|FloatingPointSystem&| . FPS-)
+   (|FramedAlgebra&| . FRAMALG-)
+   (|FramedNonAssociativeAlgebra&| . FRNAALG-)
+   (|FullyEvalableOver&| . FEVALAB-)
+   (|FullyLinearlyExplicitRingOver&| . FLINEXP-)
+   (|FullyRetractableTo&| . FRETRCT-)
+   (|FunctionFieldCategory&| . FFCAT-)
+   (|FunctionSpace&| . FS-)
+   (|GcdDomain&| . GCDDOM-)
+   (|GradedAlgebra&| . GRALG-)
+   (|GradedModule&| . GRMOD-)
+   (|Group&| . GROUP-)
+   (|HomogeneousAggregate&| . HOAGG-)
+   (|HyperbolicFunctionCategory&| . HYPCAT-)
+   (|IndexedAggregate&| . IXAGG-)
+   (|InnerEvalable&| . IEVALAB-)
+   (|IntegerNumberSystem&| . INS-)
+   (|IntegralDomain&| . INTDOM-)
+   (|KeyedDictionary&| . KDAGG-)
+   (|LazyStreamAggregate&| . LZSTAGG-)
+   (|LeftAlgebra&| . LALG-)
+   (|LieAlgebra&| . LIECAT-)
+   (|LinearAggregate&| . LNAGG-)
+   (|ListAggregate&| . LSAGG-)
+   (|Logic&| . LOGIC-)
+   (|LinearOrdinaryDifferentialOperatorCategory&| . LODOCAT-)
+   (|MatrixCategory&| . MATCAT-)
+   (|Module&| . MODULE-)
+   (|Monad&| . MONAD-)
+   (|MonadWithUnit&| . MONADWU-)
+   (|Monoid&| . MONOID-)
+   (|MonogenicAlgebra&| . MONOGEN-)
+   (|NonAssociativeAlgebra&| . NAALG-)
+   (|NonAssociativeRing&| . NASRING-)
+   (|NonAssociativeRng&| . NARNG-)
+   (|OctonionCategory&| . OC-)
+   (|OneDimensionalArrayAggregate&| . A1AGG-)
+   (|OrderedRing&| . ORDRING-)
+   (|OrderedSet&| . ORDSET-)
+   (|PartialDifferentialRing&| . PDRING-)
+   (|PolynomialCategory&| . POLYCAT-)
+   (|PolynomialFactorizationExplicit&| . PFECAT-)
+   (|PolynomialSetCategory&| . PSETCAT-)
+   (|PowerSeriesCategory&| . PSCAT-)
+   (|QuaternionCategory&| . QUATCAT-)
+   (|QuotientFieldCategory&| . QFCAT-)
+   (|RadicalCategory&| . RADCAT-)
+   (|RealClosedField&| . RCFIELD-)
+   (|RealNumberSystem&| . RNS-)
+   (|RealRootCharacterizationCategory&| . RRCC-)
+   (|RectangularMatrixCategory&| . RMATCAT-)
+   (|RecursiveAggregate&| . RCAGG-)
+   (|RecursivePolynomialCategory&| . RPOLCAT-)
+   (|RegularTriangularSetCategory&| . RSETCAT-)
+   (|RetractableTo&| . RETRACT-)
+   (|Ring&| . RING-)
+   (|SemiGroup&| . SGROUP-)
+   (|SetAggregate&| . SETAGG-)
+   (|SetCategory&| . SETCAT-)
+   (|SquareMatrixCategory&| . SMATCAT-)
+   (|StreamAggregate&| . STAGG-)
+   (|StringAggregate&| . SRAGG-)
+   (|TableAggregate&| . TBAGG-)
+   (|TranscendentalFunctionCategory&| . TRANFUN-)
+   (|TriangularSetCategory&| . TSETCAT-)
+   (|TrigonometricFunctionCategory&| . TRIGCAT-)
+   (|TwoDimensionalArrayCategory&| . ARR2CAT-)
+   (|UnaryRecursiveAggregate&| . URAGG-)
+   (|UniqueFactorizationDomain&| . UFD-)
+   (|UnivariateLaurentSeriesConstructorCategory&| . ULSCCAT-)
+   (|UnivariatePolynomialCategory&| . UPOLYC-)
+   (|UnivariatePowerSeriesCategory&| . UPSCAT-)
+   (|UnivariatePuiseuxSeriesConstructorCategory&| . UPXSCCA-)
+   (|UnivariateSkewPolynomialCategory&| . OREPCAT-)
+   (|UnivariateTaylorSeriesCategory&| . UTSCAT-)
+   (|VectorCategory&| . VECTCAT-)
+   (|VectorSpace&| . VSPACE-))))
+
+(defvar creditlist '(
+"An alphabetical listing of contributors to AXIOM:"
+"Michael Albaugh        Cyril Alberga          Roy Adler"
+"Christian Aistleitner  Richard Anderson       George Andrews"
+"S.J. Atkins            Jeremy Avigad          Henry Baker"
+"Martin Baker           Stephen Balzac         Yurij Baransky"
+"David R. Barton        Thomas Baruchel        Gerald Baumgartner"
+"Gilbert Baumslag       Michael Becker         Nelson H. F. Beebe"
+"Jay Belanger           David Bindel           Fred Blair"
+"Vladimir Bondarenko    Mark Botch             Raoul Bourquin"
+"Alexandre Bouyer       Karen Braman           Wolfgang Brehm"
+"Peter A. Broadbery     Martin Brock           Manuel Bronstein"
+"Stephen Buchwald       Florian Bundschuh      Luanne Burns"
+"William Burge          Ralph Byers            Quentin Carpent"
+"Pierre Casteran        Robert Cavines         Bruce Char"
+"Ondrej Certik          Tzu-Yi Chen            Bobby Cheng"
+"Cheekai Chin           David V. Chudnovsky    Gregory V. Chudnovsky"
+"Mark Clements          James Cloos            Jia Zhao Cong"
+"Josh Cohen             Christophe Conil       Don Coppersmith"
+"George Corliss         Robert Corless         Gary Cornell"
+"Meino Cramer           Jeremy Du Croz         David Cyganski"
+"Nathaniel Daly         Timothy Daly Sr.       Timothy Daly Jr."
+"James H. Davenport     David Day              James Demmel"
+"Didier Deshommes       Michael Dewar          Inderjit Dhillon"
+"Jack Dongarra          Jean Della Dora        Gabriel Dos Reis"
+"Claire DiCrescendo     Sam Dooley             Zlatko Drmac"
+"Lionel Ducos           Iain Duff              Lee Duhem"
+"Martin Dunstan         Brian Dupee            Dominique Duval"
+"Robert Edwards         Heow Eide-Goodman      Lars Erickson"
+"Mark Fahey             Richard Fateman        Bertfried Fauser"
+"Stuart Feldman         John Fletcher          Brian Ford"
+"Albrecht Fortenbacher  George Frances         Constantine Frangos"
+"Timothy Freeman        Korrinn Fu             Marc Gaetano"
+"Rudiger Gebauer        Van de Geijn           Kathy Gerber"
+"Patricia Gianni        Gustavo Goertkin       Samantha Goldrich"
+"Holger Gollan          Teresa Gomez-Diaz      Laureano Gonzalez-Vega"
+"Stephen Gortler        Johannes Grabmeier     Matt Grayson"
+"Klaus Ebbe Grue        James Griesmer         Vladimir Grinberg"
+"Oswald Gschnitzer      Ming Gu                Jocelyn Guidry"
+"Gaetan Hache           Steve Hague            Satoshi Hamaguchi"
+"Sven Hammarling        Mike Hansen            Richard Hanson"
+"Richard Harke          Bill Hart              Vilya Harvey"
+"Martin Hassner         Arthur S. Hathaway     Dan Hatton"
+"Waldek Hebisch         Karl Hegbloom          Ralf Hemmecke"
+"Henderson              Antoine Hersen         Nicholas J. Higham"
+"Roger House            Gernot Hueber          Pietro Iglio"
+"Alejandro Jakubi       Richard Jenks          Bo Kagstrom"
+"William Kahan          Kyriakos Kalorkoti     Kai Kaminski"
+"Grant Keady            Wilfrid Kendall        Tony Kennedy"
+"David Kincaid          Ted Kosan              Paul Kosinski"
+"Igor Kozachenko        Fred Krogh             Klaus Kusche"
+"Bernhard Kutzler       Tim Lahey              Larry Lambe"
+"Kaj Laurson            Charles Lawson         George L. Legendre"
+"Franz Lehner           Frederic Lehobey       Michel Levaud"
+"Howard Levy            J. Lewis               Ren-Cang Li"
+"Rudiger Loos           Craig Lucas            Michael Lucks"
+"Richard Luczak         Camm Maguire           Francois Maltey"
+"Osni Marques           Alasdair McAndrew      Bob McElrath"
+"Michael McGettrick     Edi Meier              Ian Meikle"
+"David Mentre           Victor S. Miller       Gerard Milmeister"
+"Mohammed Mobarak       H. Michael Moeller     Michael Monagan"
+"Marc Moreno-Maza       Scott Morrison         Joel Moses"
+"Mark Murray            William Naylor         Patrice Naudin"
+"C. Andrew Neff         John Nelder            Godfrey Nolan"
+"Arthur Norman          Jinzhong Niu           Michael O'Connor"
+"Summat Oemrawsingh     Kostas Oikonomou       Humberto Ortiz-Zuazaga"
+"Julian A. Padget       Bill Page              David Parnas"
+"Susan Pelzel           Michel Petitot         Didier Pinchon"
+"Ayal Pinkus            Frederick H. Pitts     Jose Alfredo Portes"
+"E. Quintana-Orti       Gregorio Quintana-Orti Beresford Parlett"
+"A. Petitet             Peter Poromaa          Claude Quitte"
+"Arthur C. Ralfs        Norman Ramsey          Anatoly Raportirenko"
+"Guilherme Reis         Huan Ren               Albert D. Rich"
+"Michael Richardson     Jason Riedy            Renaud Rioboo"
+"Jean Rivlin            Nicolas Robidoux       Simon Robinson"
+"Raymond Rogers         Michael Rothstein      Martin Rubey"
+"Jeff Rutter            Philip Santas          Alfred Scheerhorn"
+"William Schelter       Gerhard Schneider      Martin Schoenert"
+"Marshall Schor         Frithjof Schulze       Fritz Schwarz"
+"Steven Segletes        V. Sima                Nick Simicich"
+"William Sit            Elena Smirnova         Jacob Nyffeler Smith"
+"Matthieu Sozeau        Ken Stanley            Jonathan Steinbach"
+"Fabio Stumbo           Christine Sundaresan   Robert Sutor"
+"Moss E. Sweedler       Eugene Surowitz        Max Tegmark"
+"T. Doug Telford        James Thatcher         Laurent Thery"
+"Balbir Thomas          Mike Thomas            Dylan Thurston"
+"Francoise Tisseur      Steve Toleque          Raymond Toy"
+"Barry Trager           Themos T. Tsikas       Gregory Vanuxem"
+"Kresimir Veselic       Christof Voemel        Bernhard Wall"
+"Stephen Watt           Andreas Weber          Jaap Weel"
+"Juergen Weiss          M. Weller              Mark Wegman"
+"James Wen              Thorsten Werther       Michael Wester"
+"R. Clint Whaley        James T. Wheeler       John M. Wiley"
+"Berhard Will           Clifton J. Williamson  Stephen Wilson"
+"Shmuel Winograd        Robert Wisbauer        Sandra Wityak"
+"Waldemar Wiwianka      Knut Wolf              Yanyang Xiao"
+"Liu Xiaojun            Clifford Yapp          David Yun"
+"Qian Yun               Vadim Zhytnikov        Richard Zippel"
+"Evelyn Zoernack        Bruno Zuercher         Dan Zwillinger"
+))
+
+(defvar $current-directory nil)
+
+(defvar $directory-list nil)
+
+(defvar |$InitialModemapFrame| '((nil)))
+
+(defvar $library-directory-list '("/algebra/"))
+
+(defvar |$msgDatabaseName| nil)
+
+(defvar $openServerIfTrue nil)
+
+(defvar $relative-directory-list
+  '("/../../src/input/"
+    "/doc/msgs/"
+    "/../../src/algebra/"
+    "/../../src/interp/"  ; for lisp  files (helps fd)
+    "/doc/spadhelp/" ))
+
+(defvar $relative-library-directory-list '("/algebra/"))
+
+(defvar $spadroot nil)
+
+(defvar $SpadServer nil "t means Axiom acts as a remote server")
+
+(defvar $SpadServerName "/tmp/.d" "the name of the spad server socket")
+
+(defvar |$localVars| ())        ;checked by isType
+
+(defvar |$PrintCompilerMessageIfTrue| nil)
+
+(defvar |$quitTag| system::*quit-tag*)
+
+(defvar curinstream (make-synonym-stream '*standard-input*))
+
+(defvar curoutstream (make-synonym-stream '*standard-output*))
+
+(defvar errorinstream (make-synonym-stream '*terminal-io*))
+
+(defvar erroroutstream (make-synonym-stream '*terminal-io*))
+
+(defvar *eof* nil)
+
+(defvar *whitespace*
+ '(#\Space #\Newline #\Tab #\Page #\Linefeed #\Return #\Backspace)
+ "A list of characters used by string-trim considered as whitespace")
+
+(defvar |$InteractiveMode| (list (list nil)) "top level environment")
+
+(defvar |$env| nil "checked in isDomainValuedVariable")
+
+(defvar |$e| nil "the environment?")
+
+(defvar $boot nil)
+
+(defvar $newspad nil)
+
+(defvar |$intTopLevel| '|top_level|)
+
+(defvar |$intRestart| '|restart|)
+
+(defvar |$ncMsgList| nil)
+
+(defvar |$newcompErrorCount| 0)
+
+(defvar |$nopos| (list '|noposition|))
+
+(defvar |$intCoerceFailure| '|coerceFailure|)
+
+(defvar |$intSpadReader| 'SPAD_READER)
+
+(defvar |$currentLine| "" "A list of the input line history")
+
+(defvar |$frameAlist| nil) 
+
+(defvar |$frameNumber| 0) 
+
+(defvar |$currentFrameNum| 0) 
+
+(defvar |$EndServerSession| nil) 
+
+(defvar |$NeedToSignalSessionManager| nil) 
+
+(defvar |$sockBufferLength| 9217) 
+
+(defvar |$QuietCommand| nil "If true, produce no top level output") 
+
+(defvar |$interpOnly| nil)
+
+(defvar |$minivectorNames| nil)
+
+(defvar |$domPvar| nil)
+
+(defvar |$compilingMap| ())
+
+(setq |$instantRecord| (make-hash-table :test #'eq))
+
+(defvar |$ProcessInteractiveValue| nil "If true, no output or record") 
+
+(defvar |$HTCompanionWindowID| nil)
+
+(defvar |$genValue| nil "evaluate generated code if true")
+
+(defvar |$ThrowAwayMode| '|$ThrowAwayMode| "interp constant")
+
+(defvar |$runTestFlag| nil)
+
+(defvar |$mkTestFlag| nil)  
+
+(defvar |Top| 1 "used in incLude1 for parsing")
+
+(defvar |IfSkipToEnd| 10 "used in incLude1 for parsing")
+
+(defvar |IfKeepPart| 11 "used in incLude1 for parsing")
+
+(defvar |IfSkipPart| 12 "used in incLude1 for parsing")
+
+(defvar |ElseifSkipToEnd| 20 "used in incLude1 for parsing")
+
+(defvar |ElseifKeepPart| 21 "used in incLude1 for parsing")
+
+(defvar |ElseifSkipPart| 22 "used in incLude1 for parsing")
+
+(defvar |ElseSkipToEnd| 30 "used in incLude1 for parsing")
+
+(defvar |ElseKeepPart| 31 "used in incLude1 for parsing")
+
+(defvar |$pfMacros| nil)
+
+(defvar |StreamNil| (list '|nullstream|))
+
+(defvar |$npTokToNames| (list '~ '|#| '[] '{} '|[\|\|]| '|{\|\|}|))
+
+(defvar *npPParg* nil "rewrite npPP without flets, using global scoping")
+
+(defvar |$preLength| 11)
+
+(defvar |$imPrGuys| (list '|imPr|))
+
+(defvar |$toWhereGuys| (list '|fileOnly| '|screenOnly|))
+
+(defvar |$attrCats| (list '|$imPrGuys| '|$toWhereGuys| '|$repGuys|))
+
+(defvar |$imPrTagGuys| (list '|unimple| '|bug| '|debug| '|say| '|warn|))
+
+(defvar |$repGuys| (list '|noRep| '|rep|))
+
+(defvar |$EmptyMode| '|$EmptyMode|)
+
+(defvar |$AnonymousFunction| '(|AnonymousFunction|))
+
+(defvar |$Any|   '(|Any|))
+
+(defvar |$BFtag| '|:BF:|)
+
+(defvar |$Boolean| '(|Boolean|))
+
+(defvar |$Category| '(|Category|))
+
+(defvar |$Domain| '(|Domain|))
+
+(defvar |$Exit|  '(|Exit|))
+
+(defvar |$Expression| '(|OutputForm|))
+
+(defvar |$OutputForm| '(|OutputForm|))
+
+(defvar |$BigFloat| '(|Float|))
+
+(defvar |$Float| '(|Float|))
+
+(defvar |$DoubleFloat| '(|DoubleFloat|))
+
+(defvar |$FontTable| '(|FontTable|))
+
+(defvar |$Integer| '(|Integer|))
+
+(defvar |$ComplexInteger| (LIST '|Complex| |$Integer|))
+
+(defvar |$Mode| '(|Mode|))
+
+(defvar |$NegativeInteger| '(|NegativeInteger|))
+
+(defvar |$NonNegativeInteger| '(|NonNegativeInteger|))
+
+(defvar |$NonPositiveInteger| '(|NonPositiveInteger|))
+
+(defvar |$PositiveInteger| '(|PositiveInteger|))
+
+(defvar |$RationalNumber| '(|Fraction| (|Integer|)))
+
+(defvar |$String| '(|String|))
+
+(defvar |$StringCategory| '(|StringCategory|))
+
+(defvar |$Symbol| '(|Symbol|))
+
+(defvar |$Void|  '(|Void|))
+
+(defvar |$QuotientField| '|Fraction|)
+
+(defvar |$FunctionalExpression| '|Expression|)
+
+(defvar |$defaultFunctionTargets| '(()))
+
+(defvar |$SmallInteger| '(|SingleInteger|))
+
+(defvar |$SingleFloat| '(|SingleFloat|))
+
+(defvar |$DoubleFloat| '(|DoubleFloat|))
+
+(defvar |$SingleInteger| '(|SingleInteger|))
+
+(defvar |coerceConvertMmSelection;AL| (make-hash-table :test #'equal))
+
+(defvar |$systemCommands| nil)
+
+(defvar $syscommands nil)
+
+(defvar |$noParseCommands| nil)
+
+(defvar $oldline nil "used to output command lines")
+
+(defvar |$tokenCommands| nil)
+
+(defvar |$InitialCommandSynonymAlist| nil)
+
+(defvar |$CommandSynonymAlist| nil)
+
+(defvar |$clearOptions| '(|modes| |operations| |properties| |types| |values|))
+
+(defvar |$clearExcept| nil)
+
+(defvar |$functionTable| nil)
+
+(defvar /editfile nil)
+
+(defvar $describeOptions '(|category| |domain| |package|))
+
+(defvar |$displayOptions| 
+ '(|abbreviations| |all| |macros| |modes| |names| |operations| 
+   |properties| |types| |values|))
+
+(defvar |$oldHistoryFileName| '|last| "vm/370 filename name component")
+
+(defvar |$historyFileType| '|axh|     "vm/370 filename type component")
+
+(defvar |$historyDirectory| 'A        "vm/370 filename disk component")
+
+(defvar |$useInternalHistoryTable| t  "t means keep history in core")
+
+(defvar underbar "_")
+
+(defvar |$NonNullStream| "NonNullStream")
+
+(defvar |$NullStream| "NullStream")
+
+(defvar *all-tests-ran* nil "true implies that all tests ran")
+
+(defvar *ok* nil "did we mark this test as always ok?")
+
+(defvar *ThisIsARunningSystem* nil "Are we restarting a running system?")
+
+(defvar |$BreakMode| '|nobreak| "execute break processing on error")
+
+(defvar $lambdatype nil "show type information for #1 syntax")
+
+(defvar output-library nil)
+
+(defvar input-libraries nil)
+
+(defvar $dalymode nil "Interpret leading open paren as lisp")
+
+(defvar |$cacheAlist| nil) 
+
+(defvar |$compileDontDefineFunctions| t
+   "compile, don't just define function bodies")
+
+(defvar |$compileRecurrence| t "specially compile recurrence relations")
+
+(defvar |$fortInts2Floats| t "where sensible, coerce integers to reals")
+
+(defvar |$fortIndent| 6 "the number of characters indented")
+
+(defvar |$fortLength| 72 "the number of characters on a line")
+
+(defvar |$printFortranDecs| t "print type and dimension lines")
+
+(defvar |$defaultFortranType| 'real "default generic type for FORTRAN object")
+
+(defvar |$fortranPrecision| '|double| "precision of generated FORTRAN objects")
+
+(defvar |$useIntrinsicFunctions| nil
+   "whether to use INTRINSIC FORTRAN functions")
+
+(defvar |$maximumFortranExpressionLength| 1320
+  "character limit for FORTRAN expressions")
+
+(defvar |$fortranSegment| t "split long FORTRAN expressions")
+
+(defvar |$fortranOptimizationLevel| 0 "FORTRAN optimisation level")
+
+(defvar |$fortranArrayStartingIndex| 1 "starting index for FORTRAN arrays")
+
+(defvar |$fortranTmpDir| "/tmp/" "set location of temporary data files ")
+
+(defvar |$fortranDirectory| "./" "set location of generated FORTRAN files ")
+
+(defvar |$fortranLibraries| "-lxlf" 
+  "linker arguments (e.g. libraries to search)")
+
+(defvar |$fullScreenSysVars| nil "use full screen for this facility")
+
+(defvar |$historyDisplayWidth| 120 "screen width for history output")
+
+(defvar |$useFullScreenHelp| t "use fullscreen facility, if possible")
+
+(defvar |$HiFiAccess| t "save workspace values in a history file")
+
+(defvar |$printAnyIfTrue| t
+   "print the internal type of objects of domain Any")
+
+(defvar |$printLoadMsgs| nil "print file auto-load messages")
+
+(defvar |$reportBottomUpFlag| nil "display bottom up modemap selection")
+
+(defvar |$reportCoerceIfTrue| nil "display datatype coercion messages")
+
+(defvar |$displayDroppedMap| nil "display old map defn when replaced")
+
+(defvar |$giveExposureWarning| nil "warning for unexposed functions")
+
+(defvar |$printMsgsToFile| nil "print msgs also to SPADMSG LISTING")
+
+(defvar |$frameMessages| nil "display messages about frames")
+
+(defvar |$highlightAllowed| nil "use highlighting in system messages")
+
+(defvar |$reportInstantiations| nil "present instantiation summary")
+
+(defvar |$reportEachInstantiation| nil "present instantiation info")
+
+(defvar |$reportInterpOnly| t "say when function code is interpreted")
+
+(defvar |$nagMessages| t "show NAGLink messages")
+
+(defvar |$displayMsgNumber| nil "display message number with message")
+
+(defvar |$inputPromptType| '|step| "set type of input prompt to display")
+
+(defvar |$displaySetValue| nil "show )set setting after assignment")
+
+(defvar |$displayStartMsgs| t "display messages on start-up")
+
+(defvar |$printStatisticsSummaryIfTrue| nil
+     "print statistics after computation")
+
+(defvar |$testingSystem| nil "print system testing header")
+
+(defvar |$printTimeIfTrue| nil "print timings after computation")
+
+(defvar |$printTypeIfTrue| t "print type after computation")
+
+(defvar |$printVoidIfTrue| nil "print Void value when it occurs")
+
+(defvar |$nagHost| "localhost" "internet address of host for NAGLink")
+
+(defvar |$fortPersistence| 1 "number of (fortran) functions to remember")
+
+(defvar |$nagEnforceDouble| t "enforce DOUBLE PRECISION ASPs")
+
+(defvar |$abbreviateTypes| nil "abbreviate type names")
+
+(defvar |$algebraFormat| t "display output in algebraic form ")
+
+(defvar |$algebraOutputFile| "CONSOLE" 
+  "where algebra printing goes (enter {\em console} or a pathname)?")
+
+(defvar |$algebraOutputStream| *standard-output*)
+ 
+(defvar |$fortranFormat| nil "create output in FORTRAN format ")
+
+(defvar |$fortranOutputFile| "CONSOLE" 
+   "where FORTRAN output goes (enter {\em console} or a a pathname)")
+
+(defvar |$fractionDisplayType| '|vertical| "how fractions are formatted")
+
+(defvar |$htmlFormat| nil "create output in HTML format ")
+
+(defvar |$htmlOutputFile| "CONSOLE" 
+   "where HTML output goes (enter {\em console} or a pathname)")
+
+(defvar $margin 3)
+
+(defvar $linelength 77 "line length of output displays")
+
+(defvar |$mathmlFormat| nil "create output in MathML format ")
+
+(defvar |$mathmlOutputFile| "CONSOLE" 
+   "where MathML output goes (enter {\em console} or a pathname)")
+
+(defvar |$openMathFormat| nil "create output in OpenMath format ")
+
+(defvar |$openMathOutputFile| "CONSOLE"
+  "where TeX output goes (enter {\em console} or a pathname)")
+
+(defvar |$formulaFormat| nil "display output in SCRIPT format")
+
+(defvar |$formulaOutputFile| "CONSOLE"
+    "where script output goes (enter {\em console} or a a pathname)")
+
+(defvar |$linearFormatScripts| nil "show subscripts,... linearly")
+
+(defvar |$useEditorForShowOutput| nil "view output of )show in editor")
+
+(defvar |$texFormat| nil "create output in TeX format ")
+
+(defvar |$texOutputFile| "CONSOLE" 
+    "where TeX output goes (enter {\em console} or a pathname)")
+
+(defvar |$quitCommandType| '|unprotected| "protected or unprotected quit")
+
+(defvar |$streamCount| 10 
+    "number of initial stream elements you want calculated")
+
+(defvar |$streamsShowAll| nil "display all stream elements computed")
+
+(defvar |$reportCompilation| nil "show gen. LISP for functions when compiled")
+
+(defvar |$reportOptimization| nil "show optimized LISP code")
+
+(defvar $prettyprint t "prettyprint BOOT func's as they compile")
+
+(defvar |$UserLevel| '|development| "operation access level of system user")
+
+(defvar |$setOptions| '(
+  (|breakmode|
+   "execute break processing on error"
+   |interpreter|
+   LITERALS
+   |$BreakMode|
+   (|nobreak| |break| |query| |resume| |fastlinks| |quit|)
+   |nobreak|)         ; needed to avoid possible startup looping
+   (|compiler|
+    "Library compiler options"
+    |interpreter|
+    TREE
+    |novar|
+    (
+      (|output|
+       "library in which to place compiled code "
+       |interpreter|
+       FUNCTION
+       |setOutputLibrary|
+       NIL
+       |htSetOutputLibrary|
+       )
+      (|input|
+       "controls libraries from which to load compiled code"
+       |interpreter|
+       FUNCTION
+       |setInputLibrary|
+       NIL
+       |htSetInputLibrary|)
+    ))
+   (|debug|
+    "debug options"
+    |interpreter|
+    TREE
+    |novar|
+    (
+      (|lambdatype|
+       "show type information for #1 syntax"
+       |interpreter|
+       LITERALS
+       $lambdatype
+       (|on| |off|)
+       |off|)
+      (|dalymode|
+       "Interpret leading open paren as lisp"
+       |interpreter|
+       LITERALS
+       $dalymode
+       (|on| |off|)
+       |off|)
+    ))
+  (|expose|
+   "control interpreter constructor exposure"
+   |interpreter|
+   FUNCTION
+   |setExpose|
+   NIL
+   |htSetExpose|)
+  (|functions|
+   "some interpreter function options"
+   |interpreter|
+   TREE
+   |novar|
+   (
+     (|cache|
+      "number of function results to cache"
+      |interpreter|
+      FUNCTION
+      |setFunctionsCache|
+      NIL
+      |htSetCache|)
+     (|compile|
+      "compile, don't just define function bodies"
+      |interpreter|
+      LITERALS
+      |$compileDontDefineFunctions|
+      (|on| |off|)
+      |on|)
+     (|recurrence|
+      "specially compile recurrence relations"
+      |interpreter|
+      LITERALS
+      |$compileRecurrence|
+      (|on| |off|)
+      |on|)
+  ))
+
+  (|fortran|
+   "view and set options for FORTRAN output"
+   |interpreter|
+   TREE
+   |novar|
+    (
+     (|ints2floats|
+      "where sensible, coerce integers to reals"
+      |interpreter|
+      LITERALS
+      |$fortInts2Floats|
+      (|on| |off|)
+      |on|)
+     (|fortindent|
+      "the number of characters indented"
+      |interpreter|
+      INTEGER
+      |$fortIndent|
+      (0 NIL)
+      6)
+     (|fortlength|
+      "the number of characters on a line"
+      |interpreter|
+      INTEGER
+      |$fortLength|
+      (1 NIL)
+      72)
+     (|typedecs|
+      "print type and dimension lines"
+      |interpreter|
+      LITERALS
+      |$printFortranDecs|
+      (|on| |off|)
+      |on|)
+     (|defaulttype|
+      "default generic type for FORTRAN object"
+      |interpreter|
+      LITERALS
+      |$defaultFortranType|
+      (REAL INTEGER COMPLEX LOGICAL CHARACTER)
+      REAL)
+      (|precision|
+      "precision of generated FORTRAN objects"
+       |interpreter|
+       LITERALS
+       |$fortranPrecision|
+       (|single| |double|)
+       |double|)
+      (|intrinsic|
+       "whether to use INTRINSIC FORTRAN functions"
+       |interpreter|
+       LITERALS
+       |$useIntrinsicFunctions|
+       (|on| |off|)
+       |off|)
+      (|explength|
+       "character limit for FORTRAN expressions"
+       |interpreter|
+       INTEGER
+       |$maximumFortranExpressionLength|
+       (0 NIL)
+       1320)
+      (|segment|
+       "split long FORTRAN expressions"
+       |interpreter|
+       LITERALS
+       |$fortranSegment|
+       (|on| |off|)
+       |on|)
+      (|optlevel|
+       "FORTRAN optimisation level"
+       |interpreter|
+       INTEGER
+       |$fortranOptimizationLevel|
+       (0 2)
+       0)
+      (|startindex|
+       "starting index for FORTRAN arrays"
+       |interpreter|
+       INTEGER
+       |$fortranArrayStartingIndex|
+       (0 1)
+       1)
+      (|calling|
+      "options for external FORTRAN calls"
+      |interpreter|
+      TREE
+      |novar|
+      (
+        (|tempfile|
+         "set location of temporary data files "
+         |interpreter|
+         FUNCTION
+         |setFortTmpDir|
+         (("enter directory name for which you have write-permission "
+           DIRECTORY
+           |$fortranTmpDir|
+           |chkDirectory|
+           "/tmp/"))
+         NIL)
+        (|directory|
+         "set location of generated FORTRAN files "
+         |interpreter|
+         FUNCTION
+         |setFortDir|
+         (("enter directory name for which you have write-permission "
+           DIRECTORY
+           |$fortranDirectory|
+           |chkDirectory|
+           "./"))
+         NIL)
+        (|linker|
+         "linker arguments (e.g. libraries to search) "
+         |interpreter|
+         FUNCTION
+         |setLinkerArgs|
+         (("enter linker arguments "
+           STRING
+           |$fortranLibraries|
+           |chkDirectory|
+           "-lxlf"))
+         NIL
+         )
+       )
+      )
+
+  ))
+
+  (|hyperdoc|
+   "options in using HyperDoc"
+   |interpreter|
+   TREE
+   |novar|
+   (
+     (|fullscreen|
+      "use full screen for this facility"
+      |interpreter|
+      LITERALS
+      |$fullScreenSysVars|
+      (|on| |off|)
+      |off|)
+     (|mathwidth|
+      "screen width for history output"
+      |interpreter|
+      INTEGER
+      |$historyDisplayWidth|
+      (0 NIL)
+      120)
+   ))
+  (|help|
+   "view and set some help options"
+   |interpreter|
+   TREE
+   |novar|
+   (
+    (|fullscreen|
+     "use fullscreen facility, if possible"
+     |interpreter|
+     LITERALS
+     |$useFullScreenHelp|
+     (|on| |off|)
+     |on|)
+   ))
+
+  (|history|
+   "save workspace values in a history file"
+   |interpreter|
+   LITERALS
+   |$HiFiAccess|
+   (|on| |off|)
+   |on|)
+  (|messages|
+   "show messages for various system features"
+   |interpreter|
+   TREE
+   |novar|
+   (
+     (|any|
+      "print the internal type of objects of domain Any"
+      |interpreter|
+      LITERALS
+      |$printAnyIfTrue|
+      (|on| |off|)
+      |on|)
+     (|autoload|
+      "print file auto-load messages"
+      |interpreter|
+      LITERALS
+      |$printLoadMsgs|
+      (|on| |off|)
+      |on|)
+
+     (|bottomup|
+      "display bottom up modemap selection"
+      |development|
+      LITERALS
+      |$reportBottomUpFlag|
+      (|on| |off|)
+      |off|)
+
+     (|coercion|
+      "display datatype coercion messages"
+      |development|
+      LITERALS
+      |$reportCoerceIfTrue|
+      (|on| |off|)
+      |off|)
+
+     (|dropmap|
+      "display old map defn when replaced"
+      |interpreter|
+      LITERALS
+      |$displayDroppedMap|
+      (|on| |off|)
+      |off|)
+
+     (|expose|
+      "warning for unexposed functions"
+      |interpreter|
+      LITERALS
+      |$giveExposureWarning|
+      (|on| |off|)
+      |off|)
+
+     (|file|
+      "print msgs also to SPADMSG LISTING"
+      |development|
+      LITERALS
+      |$printMsgsToFile|
+      (|on| |off|)
+      |off|)
+
+     (|frame|
+      "display messages about frames"
+      |interpreter|
+      LITERALS
+      |$frameMessages|
+      (|on| |off|)
+      |off|)
+
+     (|highlighting|
+      "use highlighting in system messages"
+      |interpreter|
+      LITERALS
+      |$highlightAllowed|
+      (|on| |off|)
+      |off|)
+
+     (|instant|
+      "present instantiation summary"
+      |development|
+      LITERALS
+      |$reportInstantiations|
+      (|on| |off|)
+      |off|)
+
+     (|insteach|
+      "present instantiation info"
+      |development|
+      LITERALS
+      |$reportEachInstantiation|
+      (|on| |off|)
+      |off|)
+
+     (|interponly|
+      "say when function code is interpreted"
+      |interpreter|
+      LITERALS
+      |$reportInterpOnly|
+      (|on| |off|)
+      |on|)
+
+     (|naglink|
+      "show NAGLink messages"
+      |interpreter|
+      LITERALS
+      |$nagMessages|
+      (|on| |off|)
+      |on|)
+
+     (|number|
+      "display message number with message"
+      |interpreter|
+      LITERALS
+      |$displayMsgNumber|
+      (|on| |off|)
+      |off|)
+
+     (|prompt|
+      "set type of input prompt to display"
+      |interpreter|
+      LITERALS
+      |$inputPromptType|
+      (|none| |frame| |plain| |step| |verbose|)
+      |step|)
+
+     (|selection|
+      "display function selection msgs"
+      |interpreter|
+      LITERALS
+      |$reportBottomUpFlag|
+      (|on| |off|)
+      |off|)
+
+     (|set|
+      "show )set setting after assignment"
+      |interpreter|
+      LITERALS
+      |$displaySetValue|
+      (|on| |off|)
+      |off|)
+
+     (|startup|
+      "display messages on start-up"
+      |interpreter|
+      LITERALS
+      |$displayStartMsgs|
+      (|on| |off|)
+      |on|)
+
+     (|summary|
+      "print statistics after computation"
+      |interpreter|
+      LITERALS
+      |$printStatisticsSummaryIfTrue|
+      (|on| |off|)
+      |off|)
+
+     (|testing|
+      "print system testing header"
+      |development|
+      LITERALS
+      |$testingSystem|
+      (|on| |off|)
+      |off|)
+
+     (|time|
+      "print timings after computation"
+      |interpreter|
+      LITERALS
+      |$printTimeIfTrue|
+      (|on| |off| |long|)
+      |off|)
+
+     (|type|
+      "print type after computation"
+      |interpreter|
+      LITERALS
+      |$printTypeIfTrue|
+      (|on| |off|)
+      |on|)
+
+     (|void|
+      "print Void value when it occurs"
+      |interpreter|
+      LITERALS
+      |$printVoidIfTrue|
+      (|on| |off|)
+      |off|)
+
+   ))
+
+  (|naglink|
+   "options for NAGLink"
+   |interpreter|
+   TREE
+   |novar|
+   (
+     (|host|
+      "internet address of host for NAGLink "
+      |interpreter|
+      FUNCTION
+      |setNagHost|
+      (("enter host name"
+        DIRECTORY
+        |$nagHost|
+        |chkDirectory|
+        "localhost"))
+      NIL)
+
+     (|persistence|
+      "number of (fortran) functions to remember "
+      |interpreter|
+      FUNCTION
+      |setFortPers|
+      (("Requested remote storage (for asps):"
+       INTEGER
+       |$fortPersistence|
+       (0 NIL)
+       10))
+      NIL)
+
+     (|messages|
+      "show NAGLink messages"
+      |interpreter|
+      LITERALS
+      |$nagMessages|
+      (|on| |off|)
+       |on|)
+
+     (|double|
+      "enforce DOUBLE PRECISION ASPs"
+      |interpreter|
+      LITERALS
+      |$nagEnforceDouble|
+      (|on| |off|)
+      |on|)
+
+   ))
+
+  (|output|
+   "view and set some output options"
+   |interpreter|
+   TREE
+   |novar|
+    (
+     (|abbreviate|
+      "abbreviate type names"
+      |interpreter|
+      LITERALS
+      |$abbreviateTypes|
+      (|on| |off|)
+      |off|)
+
+     (|algebra|
+      "display output in algebraic form "
+      |interpreter|
+      FUNCTION
+      |setOutputAlgebra|
+      (("display output in algebraic form "
+        LITERALS
+        |$algebraFormat|
+        (|off| |on|)
+        |on|)
+       (break $algebraFormat)
+       ("where algebra printing goes (enter {\em console} or a pathname)?"
+        FILENAME
+        |$algebraOutputFile|
+        |chkOutputFileName|
+        "console"))
+      NIL)
+
+     (|characters|
+      "choose special output character set "
+      |interpreter|
+      FUNCTION
+      |setOutputCharacters|
+      NIL
+      |htSetOutputCharacters|)
+
+     (|fortran|
+      "create output in FORTRAN format "
+      |interpreter|
+      FUNCTION
+      |setOutputFortran|
+      (("create output in FORTRAN format "
+        LITERALS
+        |$fortranFormat|
+        (|off| |on|)
+        |off|)
+       (|break| |$fortranFormat|)
+       ("where FORTRAN output goes (enter {\em console} or a a pathname)"
+        FILENAME
+        |$fortranOutputFile|
+        |chkOutputFileName|
+        "console"))
+      NIL)
+
+     (|fraction|
+      "how fractions are formatted"
+      |interpreter|
+      LITERALS
+      |$fractionDisplayType|
+      (|vertical| |horizontal|)
+      |vertical|)
+
+     (|html|
+      "create output in HTML style "
+      |interpreter|
+      FUNCTION
+      |setOutputHtml|
+      (("create output in HTML format "
+        LITERALS
+        |$htmlFormat|
+        (|off| |on|)
+        |off|)
+       (|break| |$htmlFormat|)
+       ("where HTML output goes (enter {\em console} or a pathname)"
+        FILENAME
+        |$htmlOutputFile|
+        |chkOutputFileName|
+        "console"))
+      NIL)
+
+     (|length|
+      "line length of output displays"
+      |interpreter|
+      INTEGER
+      $LINELENGTH
+      (10 245)
+      77)
+
+     (|mathml|
+      "create output in MathML style "
+      |interpreter|
+      FUNCTION
+      |setOutputMathml|
+      (("create output in MathML format "
+        LITERALS
+        |$mathmlFormat|
+        (|off| |on|)
+        |off|)
+       (|break| |$mathmlFormat|)
+       ("where MathML output goes (enter {\em console} or a pathname)"
+        FILENAME
+        |$mathmlOutputFile|
+        |chkOutputFileName|
+        "console"))
+      NIL)
+
+     (|openmath|
+      "create output in OpenMath style "
+      |interpreter|
+      FUNCTION
+      |setOutputOpenMath|
+      (("create output in OpenMath format "
+        LITERALS
+        |$openMathFormat|
+        (|off| |on|)
+        |off|)
+       (|break| |$openMathFormat|)
+       ("where TeX output goes (enter {\em console} or a pathname)"
+        FILENAME
+        |$openMathOutputFile|
+        |chkOutputFileName|
+        "console"))
+      NIL)
+
+     (|script|
+      "display output in SCRIPT formula format "
+      |interpreter|
+      FUNCTION
+      |setOutputFormula|
+      (("display output in SCRIPT format "
+        LITERALS
+        |$formulaFormat|
+        (|off| |on|)
+        |off|)
+       (|break| |$formulaFormat|)
+       ("where script output goes (enter {\em console} or a a pathname)"
+        FILENAME
+        |$formulaOutputFile|
+        |chkOutputFileName|
+        "console"))
+      NIL)
+
+     (|scripts|
+      "show subscripts,... linearly"
+      |interpreter|
+      LITERALS
+      |$linearFormatScripts|
+      (|on| |off|)
+      |off|)
+
+     (|showeditor|
+      "view output of )show in editor"
+      |interpreter|
+      LITERALS
+      |$useEditorForShowOutput|
+      (|on| |off|)
+      |off|)
+
+     (|tex|
+      "create output in TeX style "
+      |interpreter|
+      FUNCTION
+      |setOutputTex|
+      (("create output in TeX format "
+        LITERALS
+        |$texFormat|
+        (|off| |on|)
+        |off|)
+       (|break| |$texFormat|)
+       ("where TeX output goes (enter {\em console} or a pathname)"
+        FILENAME
+        |$texOutputFile|
+        |chkOutputFileName|
+        "console"))
+      NIL)
+
+ ))
+
+  (|quit|
+   "protected or unprotected quit"
+   |interpreter|
+   LITERALS
+   |$quitCommandType|
+   (|protected| |unprotected|)
+   |unprotected|)
+
+  (|streams|
+   "set some options for working with streams"
+   |interpreter|
+   TREE
+   |novar|
+   (
+     (|calculate|
+      "specify number of elements to calculate "
+      |interpreter|
+      FUNCTION
+      |setStreamsCalculate|
+      (("number of initial stream elements you want calculated "
+       INTEGER
+       |$streamCount|
+       (0 NIL)
+       10))
+      NIL)
+
+    (|showall|
+     "display all stream elements computed"
+     |interpreter|
+     LITERALS
+     |$streamsShowAll|
+     (|on| |off|)
+     |off|)
+
+  ))
+
+  (|system|
+   "set some system development variables"
+   |development|
+   TREE
+   |novar|
+   (
+     (|functioncode|
+      "show gen. LISP for functions when compiled"
+      |development|
+      LITERALS
+      |$reportCompilation|
+      (|on| |off|)
+      |off|)
+
+     (|optimization|
+      "show optimized LISP code"
+      |development|
+      LITERALS
+      |$reportOptimization|
+      (|on| |off|)
+      |off|)
+
+     (|prettyprint|
+      "prettyprint BOOT func's as they compile"
+      |development|
+      LITERALS
+      $prettyprint
+      (|on| |off|)
+      |on|)
+
+   ))
+
+  (|userlevel|
+   "operation access level of system user"
+   |interpreter|
+   LITERALS
+   |$UserLevel|
+   (|interpreter| |compiler| |development|)
+   |development|)
+
+ ))
+
+(defvar |$setOptionNames| (mapcar #'car |$setOptions|))
+
+(defvar |$noEvalTypeMsg| nil)
+
+(defvar |$whatOptions| '(|operations| |categories| |domains| |packages| 
+                         |commands| |synonyms| |things|))
+
+(defvar boot-line-stack nil "List of lines returned from preparse")
+
+(defvar in-stream t "Current input stream.")
+
+(defvar out-stream t "Current output stream.")
+
+(defvar file-closed nil  "Way to stop EOF tests for console input.")
+
+(defvar echo-meta nil "T if you want a listing of what has been read.")
+
+(defvar |$noSubsumption| t)
+
+(defvar |$envHashTable| nil) 
+
+(defparameter line-handler 'next-META-line "Who grabs lines for us.")
+
+(defvar $spad_errors (vector 0 0 0))
+
+(defvar xtokenreader 'spadtok)
+
+(defvar |$defaultSpecialCharacters| (list
+ (int-char 28)    ; upper left corner
+ (int-char 27)    ; upper right corner
+ (int-char 30)    ; lower left corner
+ (int-char 31)    ; lower right corner
+ (int-char 79)    ; vertical bar
+ (int-char 45)    ; horizontal bar
+ (int-char 144)   ; APL quad
+ (int-char 173)   ; left bracket
+ (int-char 189)   ; right bracket
+ (int-char 192)   ; left brace
+ (int-char 208)   ; right brace
+ (int-char 59)    ; top    box tee
+ (int-char 62)    ; bottom box tee
+ (int-char 63)    ; right  box tee
+ (int-char 61)    ; left   box tee
+ (int-char 44)    ; center box tee
+ (int-char 224))) ; back slash
+
+(defvar |$plainSpecialCharacters0| (list
+ (int-char 78)     ; upper left corner   (+)
+ (int-char 78)     ; upper right corner  (+)
+ (int-char 78)     ; lower left corner   (+)
+ (int-char 78)     ; lower right corner  (+)
+ (int-char 79)     ; vertical bar
+ (int-char 96)     ; horizontal bar      (-)
+ (int-char 111)    ; APL quad            (?)
+ (int-char 173)    ; left bracket
+ (int-char 189)    ; right bracket
+ (int-char 192)    ; left brace
+ (int-char 208)    ; right brace
+ (int-char 78)     ; top    box tee      (+)
+ (int-char 78)     ; bottom box tee      (+)
+ (int-char 78)     ; right  box tee      (+)
+ (int-char 78)     ; left   box tee      (+)
+ (int-char 78)     ; center box tee      (+)
+ (int-char 224)))  ; back slash
+
+(defvar |$plainSpecialCharacters1| (list
+ (int-char 107)    ; upper left corner   (,)
+ (int-char 107)    ; upper right corner  (,)
+ (int-char 125)    ; lower left corner   (')
+ (int-char 125)    ; lower right corner  (')
+ (int-char 79)     ; vertical bar
+ (int-char 96)     ; horizontal bar      (-)
+ (int-char 111)    ; APL quad            (?)
+ (int-char 173)    ; left bracket
+ (int-char 189)    ; right bracket
+ (int-char 192)    ; left brace
+ (int-char 208)    ; right brace
+ (int-char 78)     ; top    box tee      (+)
+ (int-char 78)     ; bottom box tee      (+)
+ (int-char 78)     ; right  box tee      (+)
+ (int-char 78)     ; left   box tee      (+)
+ (int-char 78)     ; center box tee      (+)
+ (int-char 224)))  ; back slash
+
+(defvar |$plainSpecialCharacters2| (list
+ (int-char 79)     ; upper left corner   (|)
+ (int-char 79)     ; upper right corner  (|)
+ (int-char 79)     ; lower left corner   (|)
+ (int-char 79)     ; lower right corner  (|)
+ (int-char 79)     ; vertical bar
+ (int-char 96)     ; horizontal bar      (-)
+ (int-char 111)    ; APL quad            (?)
+ (int-char 173)    ; left bracket
+ (int-char 189)    ; right bracket
+ (int-char 192)    ; left brace
+ (int-char 208)    ; right brace
+ (int-char 78)     ; top    box tee      (+)
+ (int-char 78)     ; bottom box tee      (+)
+ (int-char 78)     ; right  box tee      (+)
+ (int-char 78)     ; left   box tee      (+)
+ (int-char 78)     ; center box tee      (+)
+ (int-char 224)))  ; back slash
+
+(defvar |$plainSpecialCharacters3| (list
+ (int-char 96)     ; upper left corner   (-)
+ (int-char 96)     ; upper right corner  (-)
+ (int-char 96)     ; lower left corner   (-)
+ (int-char 96)     ; lower right corner  (-)
+ (int-char 79)     ; vertical bar
+ (int-char 96)     ; horizontal bar      (-)
+ (int-char 111)    ; APL quad            (?)
+ (int-char 173)    ; left bracket
+ (int-char 189)    ; right bracket
+ (int-char 192)    ; left brace
+ (int-char 208)    ; right brace
+ (int-char 78)     ; top    box tee      (+)
+ (int-char 78)     ; bottom box tee      (+)
+ (int-char 78)     ; right  box tee      (+)
+ (int-char 78)     ; left   box tee      (+)
+ (int-char 78)     ; center box tee      (+)
+ (int-char 224)))  ; back slash
+
+(defvar |$plainRTspecialCharacters| (list
+ (QUOTE +)       ; upper left corner   (+)
+ (QUOTE +)       ; upper right corner  (+)
+ (QUOTE +)       ; lower left corner   (+)
+ (QUOTE +)       ; lower right corner  (+)
+ (QUOTE |\||)    ; vertical bar
+ (QUOTE -)       ; horizontal bar      (-)
+ (QUOTE ?)       ; APL quad            (?)
+ (QUOTE [)       ; left bracket
+ (QUOTE ])       ; right bracket
+ (QUOTE {)       ; left brace
+ (QUOTE })       ; right brace
+ (QUOTE +)       ; top    box tee      (+)
+ (QUOTE +)       ; bottom box tee      (+)
+ (QUOTE +)       ; right  box tee      (+)
+ (QUOTE +)       ; left   box tee      (+)
+ (QUOTE +)       ; center box tee      (+)
+ (QUOTE |\\|)))  ; back slash
+
+(defvar |$RTspecialCharacters| (list
+ (intern (string (code-char 218))) ;-- upper left corner   (+)
+ (intern (string (code-char 191))) ;-- upper right corner  (+)
+ (intern (string (code-char 192))) ;-- lower left corner   (+)
+ (intern (string (code-char 217))) ;-- lower right corner  (+)
+ (intern (string (code-char 179))) ;-- vertical bar
+ (intern (string (code-char 196))) ;-- horizontal bar      (-)
+ (list (code-char #x1d) (code-char #xe2))
+                                   ;-- APL quad            (?)
+ (QUOTE [)                         ;-- left bracket
+ (QUOTE ])                         ;-- right bracket
+ (QUOTE {)                         ;-- left brace
+ (QUOTE })                         ;-- right brace
+ (intern (string (code-char 194))) ;-- top    box tee      (+)
+ (intern (string (code-char 193))) ;-- bottom box tee      (+)
+ (intern (string (code-char 180))) ;-- right  box tee      (+)
+ (intern (string (code-char 195))) ;-- left   box tee      (+)
+ (intern (string (code-char 197))) ;-- center box tee      (+)
+ (QUOTE |\\|)))                    ;-- back slash
+
+(defvar |$specialCharacters| |$RTspecialCharacters|)
+
+(defvar |$specialCharacterAlist| 
+ '((|ulc| . 0) 
+   (|urc| . 1)
+   (|llc| . 2)
+   (|lrc| . 3)
+   (|vbar| . 4)
+   (|hbar| . 5)
+   (|quad| . 6)
+   (|lbrk| . 7)
+   (|rbrk| . 8)
+   (|lbrc| . 9)
+   (|rbrc| . 10)
+   (|ttee| . 11)
+   (|btee| . 12)
+   (|rtee| . 13)
+   (|ltee| . 14)
+   (|ctee| . 15)
+   (|bslash| . 16)))
+
+(defstruct database
+ abbreviation               ; interp.
+ ancestors                  ; interp.
+ constructor                ; interp.
+ constructorcategory        ; interp.
+ constructorkind            ; interp.
+ constructormodemap         ; interp.
+ cosig                      ; interp.
+ defaultdomain              ; interp.
+ modemaps                   ; interp.
+ niladic                    ; interp.
+ object                     ; interp.
+ operationalist             ; interp.
+ documentation              ; browse.
+ constructorform            ; browse.
+ attributes                 ; browse.
+ predicates                 ; browse.
+ sourcefile                 ; browse.
+ parents                    ; browse.
+ users                      ; browse.
+ dependents                 ; browse.
+ spare                      ; superstition
+ ) ; database structure
+
+(defvar *defaultdomain-list* '(
+  (|MultisetAggregate| |Multiset|)
+  (|FunctionSpace| |Expression|)
+  (|AlgebraicallyClosedFunctionSpace| |Expression|)
+  (|ThreeSpaceCategory| |ThreeSpace|)
+  (|DequeueAggregate| |Dequeue|)
+  (|ComplexCategory| |Complex|)
+  (|LazyStreamAggregate| |Stream|)
+  (|AssociationListAggregate| |AssociationList|)
+  (|QuaternionCategory| |Quaternion|)
+  (|PriorityQueueAggregate| |Heap|)
+  (|PointCategory| |Point|)
+  (|PlottableSpaceCurveCategory| |Plot3D|)
+  (|PermutationCategory| |Permutation|)
+  (|StringCategory| |String|)
+  (|FileNameCategory| |FileName|)
+  (|OctonionCategory| |Octonion|)))
+
+(defvar *operation-hash* nil "given an operation name, what are its modemaps?")
+
+(defvar *hasCategory-hash* nil "answers x has y category questions")
+
+(defvar *miss* nil "print out cache misses on getdatabase calls")
+
+(defvar *interp-stream* nil "an open stream to the interpreter database")
+
+(defvar *interp-stream-stamp* 0 "*interp-stream* (position . time)")
+
+(defvar *operation-stream* nil "the stream to operation.daase")
+
+(defvar *operation-stream-stamp* 0 "*operation-stream* (position . time)")
+
+(defvar *browse-stream* nil "an open stream to the browser database")
+
+(defvar *browse-stream-stamp* 0 "*browse-stream* (position . time)")
+
+(defvar *category-stream* nil "an open stream to the category table")
+
+(defvar *category-stream-stamp* 0 "*category-stream* (position . time)")
+
+(defvar *allconstructors* nil "a list of all the constructors in the system")
+
+(defvar *allOperations* nil "a list of all the operations in the system")
+
+(defvar *sourcefiles* nil)
+
+(defvar |$PsiAsymptoticBern|
+  (vector 0.0 0.16666666666666669   (- 0.033333333333333333)
+              0.023809523809523812  (- 0.033333333333333333)
+              0.07575757575757576   (- 0.2531135531135531)
+              1.1666666666666672    (- 7.0921568627450986)
+             54.971177944862163   (- 529.12424242424242)
+           6192.123188405797    (- 86580.253113553103)
+        1425517.166666667           (- 2.729823106781609E7)
+              6.015808739006424E8   (- 1.5116315767092161E10)
+              4.2961464306116675E11 (- 1.371165520508833E13)
+              4.8833231897359325E14 (- 1.9296579341940072E16)
+              8.4169304757368269E17 (- 4.0338071854059463E19)))
+
+(defvar *read-place-holder* (make-symbol "%.EOF")
+   "default value returned by read and read-line at end-of-file")
+
+(defvar |$numericFailure| (cons 1 "failed")) 
+
+(defvar |$oldBreakMode| nil "the old value of the $BreakMode variable")
+
+(defvar *monitor-domains* nil "a list of domains to report")
+
+(defvar *monitor-nrlibs* nil "a list of nrlibs that have been traced")
+
+(defvar *monitor-table* nil "a table of all of the monitored data")
+
+(defstruct monitor-data name count monitorp sourcefile)
+
+(defstruct libstream  mode dirname (indextable nil)  (indexstream nil))
+
+(defvar |$htMacroTable| (make-hash-table :test #'equal))
+
+(defvar |$primitiveHtCommands|
+  '(("\\ContinueButton" . 1)
+    ("\\andexample" . 1)
+    ("\\autobutt" . 0)
+    ("\\autobuttons" . 0)
+    ("\\begin" . 1)
+    ("\\beginscroll" . 0)
+    ("\\bound" . 1)
+    ("\\fbox" . 1)
+    ("\\centerline" . 1)
+    ("\\downlink" . 2)
+    ("\\em" . 0)
+    ("\\end" . 1)
+    ("\\endscroll" . 0)
+    ("\\example" . 1)
+    ("\\free" . 1)
+    ("\\graphpaste" . 1)
+    ("\\helppage" . 1)
+    ("\\htbmdir" . 0)
+    ("\\htbmfile" . 1)
+    ("\\indent" . 1)
+    ("\\inputbitmap" . 1)
+    ("\\inputstring" . 3)
+    ("\\item" . 0)
+    ("\\keyword" . 1)
+    ("\\link" . 2)
+    ("\\lispdownlink" . 2)
+    ("\\lispmemolink" . 2)
+    ("\\lispwindowlink" . 2)
+    ("\\menudownlink" . 2)
+    ("\\menuitemstyle" . 1)
+    ("\\menulink" . 2)
+    ("\\menulispdownlink" . 2)
+    ("\\menulispmemolink" . 2)
+    ("\\menulispwindowlink" . 2)
+    ("\\menumemolink" . 2)
+    ("\\menuwindowlink" . 2)
+    ("\\newline" . 0)
+    ("\\radioboxes" . 3)
+    ("\\space" . 1)
+    ("\\spadcommand" . 1)
+    ("\\stringvalue" . 1)
+    ("\\tab" . 1)
+    ("\\table" . 1)
+    ("\\vspace" . 1)
+    ("\\windowlink" . 2)))
+
+(defvar |$newPage| nil "The new page being built")
+
+(defvar |$activePageList| nil) 
+
+(setq |$systemType| nil) 
+
+(defvar |$numberOfEquations| 0) 
+
+(defvar |$solutionMethod| nil) 
+
+(defvar |$bcParseOnly| t)
+
+(defvar |$htLineList| nil) 
+
+(defvar |$curPage| nil) 
+
+(defvar |$funnyQuote| #\Rubout) 
+
+(defvar |$funnyBacks| #\\200) 
+
+(defvar |$historyDisplayWidth| 120) 
+
+(defvar |$newline| #\Newline)
+
+(defvar |$dbDelimiters| (list #\space #\( #\) ))
+
+(defvar message1 (concatenate 'string
+ "{\\sf Record(a:A,b:B)} is used to create the class of pairs of objects "
+ "made up of a value of type {\\em A} selected by the symbol {\\em a} and "
+ "a value of type {\\em B} selected by the symbol {\\em b}. "
+ "In general, the {\\sf Record} constructor can take any number of arguments "
+ "and thus can be used to create aggregates of heterogeneous components of "
+ "arbitrary size selectable by name. "
+ "{\\sf Record} is a primitive domain of Axiom which cannot be "
+ "defined in the Axiom language."))
+
+(defvar message2 (concatenate 'string
+"{\\sf Union(A,B)} denotes the class of objects which are which are either "
+"members of domain {\\em A} or of domain {\\em B}. The {\\sf Union} "
+"constructor can take any number of arguments. "
+"For an alternate form of {\\sf Union} with \"tags\", see "
+"\\downlink{Union(a:A,b:B)}{DomainUnion}. {\\sf Union} is a primitive "
+"domain of Axiom which cannot be defined in the Axiom language."))
+
+(defvar message3 (concatenate 'string
+ "{\\sf Union(a:A,b:B)} denotes the class of objects which are either "
+"members of domain {\\em A} or of domain {\\em B}. "
+"The symbols {\\em a} and {\\em b} are called \"tags\" and are used to "
+"identify the two \"branches\" of the union. "
+"The {\\sf Union} constructor can take any number of arguments and has an "
+"alternate form without {\\em tags} "
+"(see \\downlink{Union(A,B)}{UntaggedUnion}). "
+"This tagged {\\sf Union} type is necessary, for example, to disambiguate "
+"two branches of a union where {\\em A} and {\\em B} denote the same type. "
+"{\\sf Union} is a primitive domain of Axiom which cannot be "
+"defined in the Axiom language."))
+
+(defvar message4 (concatenate 'string
+"{\\sf Mapping(T,S,...)} denotes the class of objects which are mappings from "
+"a source domain ({\\em S,...}) into a target domain {\\em T}. The "
+"{\\sf Mapping} constructor can take any number of arguments."
+" All but the first argument is regarded as part of a source tuple for the "
+"mapping. For example, {\\sf Mapping(T,A,B)} denotes the class of mappings "
+"from {\\em (A,B)} into {\\em T}. "
+"{\\sf Mapping} is a primitive domain of Axiom which cannot be defined in "
+"the Axiom language."))
+
+(defvar message5 (concatenate 'string
+"{\\em Enumeration(a1, a2 ,..., aN)} creates an object which is exactly one "
+"of the N symbols {\\em a1}, {\\em a2}, ..., or {\\em aN}, N > 0. "
+" The {\\em Enumeration} can constructor can take any number of symbols as "
+"arguments."))
+
+
+;;; level 0 macros
+
+(defmacro bit-to-truth (b) `(eq ,b 1))
+
+(defmacro bvec-elt (bv i) `(sbit ,bv ,i))
+
+(defmacro cdancols (v)
+ `(truncate 
+    (array-dimension (the (simple-array double-float (* *)) ,v) 1) 2))
+
+(defmacro cdanrows (v)
+    `(array-dimension (the (simple-array double-float (* *)) ,v) 0))
+
+(defmacro cdaref2 (ov oi oj)
+   (let ((v (gensym))
+         (i (gensym))
+         (j (gensym)))
+   `(let ((,v ,ov)
+          (,i ,oi)
+          (,j ,oj))
+        (cons
+            (aref (the (simple-array double-float (* *)) ,v) ,i (* 2 ,j))
+            (aref (the (simple-array double-float (* *)) ,v)
+                  ,i (+ (* 2 ,j) 1))))))
+
+(defmacro CDELT(ov oi)
+   (let ((v (gensym))
+         (i (gensym)))
+   `(let ((,v ,ov)
+          (,i ,oi))
+      (cons
+          (aref (the (simple-array double-float (*)) ,v) (* 2 ,i))
+          (aref (the (simple-array double-float (*)) ,v) (+ (* 2 ,i) 1))))))
+
+(defmacro cdlen(v)
+  `(truncate (length (the (simple-array double-float (*)) ,v)) 2))
+
+(defmacro cdsetaref2 (ov oi oj os)
+   (let ((v (gensym))
+         (i (gensym))
+         (j (gensym))
+         (s (gensym)))
+   `(let ((,v ,ov)
+          (,i ,oi)
+          (,j ,oj)
+          (,s ,os))
+         (setf (aref (the (simple-array double-float (* *)) ,v) ,i (* 2 ,j))
+               (car ,s))
+         (setf (aref (the (simple-array double-float (* *)) ,v)
+                     ,i (+ (* 2 ,j) 1))
+               (cdr ,s))
+         ,s)))
+
+(defmacro cdsetelt(ov oi os)
+   (let ((v (gensym))
+         (i (gensym))
+         (s (gensym)))
+   `(let ((,v ,ov)
+          (,i ,oi)
+          (,s ,os))
+        (setf (aref (the (simple-array double-float (*)) ,v) (* 2 ,i))
+           (car ,s))
+        (setf (aref (the (simple-array double-float (*)) ,v) (+ (* 2 ,i) 1))
+           (cdr ,s))
+        ,s)))
+
+(defmacro dancols (v)
+  `(array-dimension (the (simple-array double-float (* *)) ,v) 1))
+
+(defmacro danrows (v)
+  `(array-dimension (the (simple-array double-float (* *)) ,v) 0))
+
+(defmacro daref2 (v i j)
+ `(aref (the (simple-array double-float (* *)) ,v) ,i ,j))
+
+(defmacro delt (v i)
+ `(aref (the (simple-array double-float (*)) ,v) ,i))
+
+(defmacro DFAcos (x)
+ `(acos (the double-float ,x)))
+
+(defmacro DFAcosh (x)
+ `(acosh (the double-float ,x)))
+
+(defmacro DFAdd (x y) 
+ `(the double-float (+ (the double-float ,x) (the double-float ,y))))
+
+(defmacro DFAsin (x)
+ `(asin (the double-float ,x)))
+
+(defmacro DFAsinh (x)
+ `(the double-float (asinh (the double-float ,x))))
+
+(defmacro DFAtan (x)
+ `(the double-float (atan (the double-float ,x))))
+
+(defmacro DFAtan2 (y x)
+ `(the double-float (atan (the double-float ,x) (the double-float ,y))))
+
+(defmacro DFAtanh (x)
+ `(atanh (the double-float ,x)))
+
+(defmacro DFCos (x)
+ `(the double-float (cos (the double-float ,x))))
+
+(defmacro DFCosh (x)
+ `(the double-float (cosh (the double-float ,x))))
+
+(defmacro DFDivide (x y) 
+ `(the double-float (/ (the double-float ,x) (the double-float ,y))))
+
+(defmacro DFEql (x y) 
+ `(eql (the double-float ,x) (the double-float ,y)))
+
+(defmacro DFExp (x)
+ `(the double-float (exp (the double-float ,x))))
+
+(defmacro DFExpt (x p)
+ `(expt (the double-float ,x) (the double-float ,p)))
+
+(defmacro DFIntegerDivide (x i) 
+ `(the double-float (/ (the double-float ,x) (the integer ,i))))
+
+(defmacro DFIntegerExpt (x i)
+ `(the double-float (expt (the double-float ,x) (the integer ,i))))
+
+(defmacro DFIntegerMultiply (i y) 
+ `(the double-float (* (the integer ,i) (the double-float ,y))))
+
+(defmacro DFLessThan (x y) 
+ `(< (the double-float ,x) (the double-float ,y)))
+
+(defmacro DFLog (x b)
+ `(log (the double-float ,x) (the fixnum ,b)))
+
+(defmacro DFLogE (x)
+ `(log (the double-float ,x)))
+
+(defmacro DFMax (x y) 
+ `(the double-float (max (the double-float ,x) (the double-float ,y))))
+
+(defmacro DFMin (x y) 
+ `(the double-float (min (the double-float ,x) (the double-float ,y))))
+
+(defmacro DFMinusp (x)
+ `(minusp (the double-float ,x)))
+
+(defmacro DFMultiply (x y) 
+ `(the double-float (* (the double-float ,x) (the double-float ,y))))
+
+(defmacro DFSin (x)
+ `(the double-float (sin (the double-float ,x))))
+
+(defmacro DFSinh (x)
+ `(the double-float (sinh (the double-float ,x))))
+
+(defmacro DFSqrt (x)
+ `(sqrt (the double-float ,x)))
+
+(defmacro DFSubtract (x y) 
+ `(the double-float (- (the double-float ,x) (the double-float ,y))))
+
+(defmacro DFTan (x)
+ `(the double-float (tan (the double-float ,x))))
+
+(defmacro DFTanh (x)
+ `(the double-float (tanh (the double-float ,x))))
+
+(defmacro DFUnaryMinus (x)
+ `(the double-float (- (the double-float ,x))))
+
+(defmacro DFZerop (x)
+ `(zerop (the double-float ,x)))
+
+(defmacro dlen (v)
+ `(length (the (simple-array double-float (*)) ,v)))
+
+(defmacro dsetaref2 (v i j s)
+  `(setf (aref (the (simple-array double-float (* *)) ,v) ,i ,j) ,s))
+
+(defmacro dsetelt (v i s)
+ `(setf (aref (the (simple-array double-float (*)) ,v) ,i) ,s))
+
+(defmacro |idChar?| (x)
+ `(or (alphanumericp ,x) (member ,x '(#\? #\% #\' #\!) :test #'char=)))
+
+(defmacro identp (x) 
+ (if (atom x)
+  `(and ,x (symbolp ,x))
+   (let ((xx (gensym)))
+    `(let ((,xx ,x))
+      (and ,xx (symbolp ,xx))))))
+
+(defmacro FloatError (formatstring arg)
+  `(error (format nil ,formatstring ,arg)))
+
+(defmacro fracpart (x)
+ `(cadr (multiple-value-list (floor ,x))))
+
+(defmacro frameExposureData (frame)
+ `(tenth ,frame))
+
+(defmacro frameHiFiAccess (frame)
+ `(fourth ,frame))
+
+(defmacro frameHistListAct (frame)
+ `(seventh ,frame))
+
+(defmacro frameHistList (frame)
+ `(fifth ,frame))
+
+(defmacro frameHistListLen (frame)
+ `(sixth ,frame))
+
+(defmacro frameHistoryTable (frame)
+ `(ninth ,frame))
+
+(defmacro frameHistRecord (frame)
+ `(eighth ,frame))
+
+(defmacro frameInteractive (frame)
+ `(second ,frame))
+
+(defmacro frameIOIndex (frame)
+ `(third ,frame))
+
+(defmacro frameName (frame)
+ `(first ,frame)) 
+
+(defmacro |getMsgArgL| (msg)
+ `(elt ,msg 3))
+
+(defmacro |getMsgKey| (msg)
+ `(elt ,msg 2))
+
+(defmacro |getMsgPosTagOb| (msg)
+ `(elt ,msg 1))
+
+(defmacro |getMsgPrefix| (msg)
+ `(elt ,msg 4))
+
+(defmacro |getMsgPrefix?| (msg)
+ `(let ((pre (|getMsgPrefix| ,msg)))
+   (unless (eq pre '|noPre|) pre)))
+
+(defmacro |getMsgTag| (msg)
+ `(|ncTag| ,msg))
+
+(defmacro |getMsgTag?| (msg)
+ `(ifcar (member (|getMsgTag| ,msg)
+         (list '|line| '|old| '|error| '|warn| '|bug|
+               '|unimple| '|remark| '|stat| '|say| '|debug|))))
+
+(defmacro |getMsgText| (msg) 
+ `(elt ,msg 5))
+
+(defmacro |hashCode?| (x)
+ `(integerp ,x)) 
+
+(defmacro make-cdouble-matrix (n m)
+ `(make-array (list ,n (* 2 ,m)) :element-type 'double-float))
+
+(defmacro make-cdouble-vector (n)
+   `(make-array (list (* 2 ,n)) :element-type 'double-float))
+
+(defmacro make-double-matrix (n m)
+   `(make-array (list ,n ,m) :element-type 'double-float))
+
+(defmacro make-double-matrix1 (n m s)
+ `(make-array (list ,n ,m) :element-type 'double-float :initial-element ,s))
+
+(defmacro make-double-vector (n)
+ `(make-array (list ,n) :element-type 'double-float))
+
+(defmacro make-double-vector1 (n s)
+ `(make-array (list ,n) :element-type 'double-float :initial-element ,s))
+
+(defmacro qcsize (x)
+ `(the fixnum (length (the simple-string ,x))))
+
+(defmacro qsabsval (x)
+  `(the fixnum (abs (the fixnum ,x))))
+
+(defmacro qsadd1 (x)
+ `(the fixnum (1+ (the fixnum ,x))))
+
+(defmacro qsdifference (x y)
+ `(the fixnum (- (the fixnum ,x) (the fixnum ,y))))
+
+(defmacro qsgreaterp (a b)
+ `(> (the fixnum ,a) (the fixnum ,b)))
+
+(defmacro qslessp (a b)
+ `(< (the fixnum ,a) (the fixnum ,b)))
+
+(defmacro qsmax (x y)
+ `(the fixnum (max (the fixnum ,x) (the fixnum ,y))))
+
+(defmacro qsmin (x y)
+ `(the fixnum (min (the fixnum ,x) (the fixnum ,y))))
+
+(defmacro qsminus (x)
+ `(the fixnum (minus (the fixnum ,x))))
+
+(defmacro qsoddp (x)
+ `(oddp (the fixnum ,x)))
+
+(defmacro qsplus (x y)
+ `(the fixnum (+ (the fixnum ,x) (the fixnum ,y))))
+
+(defmacro qssub1 (x)
+ `(the fixnum (1- (the fixnum ,x))))
+
+(defmacro qstimes (x y)
+ `(the fixnum (* (the fixnum ,x) (the fixnum ,y))))
+
+(defmacro qszerop (x)
+ `(zerop (the fixnum ,x)))
+
+(defmacro |setMsgPrefix| (msg val) 
+ `(setf (elt ,msg 4) ,val))
+
+(defmacro |setMsgText| (msg val)
+  `(setf (elt ,msg 5) ,val))
+
+(defmacro |spadConstant| (dollar n)
+ `(spadcall (svref ,dollar (the fixnum ,n))))
+
+
+;;; above level 0 macros
+
+(defmacro ancolsU8 (v)
+ `(array-dimension (the (simple-array (unsigned-byte 8) (* *)) ,v) 1))
+
+(defmacro ancolsU16 (v)
+ `(array-dimension (the (simple-array (unsigned-byte 16) (* *)) ,v) 1))
+
+(defmacro ancolsU32 (v)
+ `(array-dimension (the (simple-array (unsigned-byte 32) (* *)) ,v) 1))
+
+(defmacro anrowsU8 (v)
+ `(array-dimension (the (simple-array (unsigned-byte 8) (* *)) ,v) 0))
+
+(defmacro anrowsU16 (v)
+ `(array-dimension (the (simple-array (unsigned-byte 16) (* *)) ,v) 0))
+
+(defmacro anrowsU32 (v)
+ `(array-dimension (the (simple-array (unsigned-byte 32) (* *)) ,v) 0))
+
+(defmacro aref2U8 (v i j)
+ `(aref (the (simple-array (unsigned-byte 8) (* *)) ,v) ,i ,j))
+
+(defmacro aref2U16 (v i j)
+ `(aref (the (simple-array (unsigned-byte 16) (* *)) ,v) ,i ,j))
+
+(defmacro aref2U32 (v i j)
+ `(aref (the (simple-array (unsigned-byte 32) (* *)) ,v) ,i ,j))
+
+(defmacro assq (a b)
+ `(assoc ,a ,b :test #'eq))
+(defmacro bvec-setelt (bv i x) `(setf (sbit ,bv ,i) ,x))
+
+(defmacro bvec-size (bv) `(size ,bv))
+
+(defmacro eltU8 (v i)
+ `(aref (the (simple-array (unsigned-byte 8) (*)) ,v) ,i))
+
+(defmacro eltU16 (v i)
+ `(aref (the (simple-array (unsigned-byte 16) (*)) ,v) ,i))
+
+(defmacro eltU32 (v i)
+ `(aref (the (simple-array (unsigned-byte 32) (*)) ,v) ,i))
+
+(defmacro |funfind| (&whole t0 &rest notused)
+ (declare (ignore notused))
+ (let (t1 t0)
+  (cons '|funfind,LAM| (wrap (cdr t1) '(quote quote)))))
+
+(defmacro HGET (table key &rest default)
+   `(gethash ,key ,table ,@default))
+
+(defmacro |leader?| (msg) 
+ `(eq (|getMsgTag| ,msg) '|leader|))
+
+(defmacro |line?| (msg) 
+ `(eq (|getMsgTag| ,msg) '|line|))
+
+(defmacro makeMatrixU8 (n m)
+ `(make-array (list ,n ,m) :element-type '(unsigned-byte 8)
+                           :initial-element 0))
+
+(defmacro makeMatrix1U8 (n m s)
+ `(make-array (list ,n ,m) :element-type '(unsigned-byte 8)
+                           :initial-element ,s))
+
+(defmacro makeMatrixU16 (n m)
+ `(make-array (list ,n ,m) :element-type '(unsigned-byte 16)
+                           :initial-element 0))
+
+(defmacro makeMatrix1U16 (n m s)
+ `(make-array (list ,n ,m) :element-type '(unsigned-byte 16)
+                           :initial-element ,s))
+
+(defmacro makeMatrixU32 (n m)
+ `(make-array (list ,n ,m) :element-type '(unsigned-byte 32)
+                           :initial-element 0))
+
+(defmacro makeMatrix1U32 (n m s)
+ `(make-array (list ,n ,m) :element-type '(unsigned-byte 32)
+                           :initial-element ,s))
+
+(defmacro mkObj (val mode)
+ `(cons ,mode ,val)) 
+
+(defmacro mkObjCode (val mode)
+ `(cons 'cons (cons (mkq ,mode) (cons ,val nil)))) 
+
+(defmacro mkObjWrap (val mode)
+ `(cons ,mode (|wrap| ,val))) 
+
+(defmacro |objCodeVal| (obj)
+ `(caddr ,obj)) 
+
+(defmacro |objCodeMode| (obj)
+ `(cadr ,obj)) 
+
+(defmacro |objMode| (obj)
+ `(car ,obj)) 
+
+(defmacro |objSetMode| (obj mode)
+ `(rplaca ,obj ,mode)) 
+
+(defmacro |objSetVal| (obj val)
+ `(rplacd ,obj ,val)) 
+
+(defmacro |objVal| (obj)
+ `(cdr ,obj)) 
+
+(defmacro |objValUnwrap| (obj)
+ `(|unwrap| (cdr ,obj))) 
+
+(defmacro qsDot26432 (a1 b1 a2 b2)
+  `(qsMulAdd6432 ,a1 ,b1 (qsMul6432 ,a2 ,b2)))
+
+(defmacro qsDot2Mod6432 (a1 b1 a2 b2 p)
+  `(qsMod6432 (qsDot26432 ,a1 ,b1 ,a2 ,b2) ,p))
+
+(defmacro qsMod6432 (x p)
+  `(the (unsigned-byte 32)
+     (rem (the (unsigned-byte 64) ,x) (the (unsigned-byte 32) ,p))))
+
+(defmacro qsMulAdd6432 (x y z)
+  `(the (unsigned-byte 64)
+     (+ (the (unsigned-byte 64)
+          (* (the (unsigned-byte 32) ,x)
+             (the (unsigned-byte 32) ,y)))
+        (the (unsigned-byte 64) ,z))))
+
+(defmacro qsMulAddMod6432 (x y z p)
+  `(qsMod6432 (qsMulAdd6432 ,x ,y ,z) ,p))
+
+(defmacro qsMul6432 (x y)
+  `(the (unsigned-byte 64)
+     (* (the (unsigned-byte 32) ,x)
+        (the (unsigned-byte 32) ,y))))
+
+(defmacro qsMulMod32 (x y &optional z)
+  (declare (ignore z))
+  `(the (unsigned-byte 64)
+     (* (the (unsigned-byte 32) ,x)
+        (the (unsigned-byte 32) ,y))))
+
+(defmacro qvlenU8 (v)
+ `(length (the (simple-array (unsigned-byte 8) (*)) ,v)))
+
+(defmacro qvlenU16 (v)
+ `(length (the (simple-array (unsigned-byte 16) (*)) ,v)))
+
+(defmacro qvlenU32 (v)
+ `(length (the (simple-array (unsigned-byte 32) (*)) ,v)))
+
+(defmacro |Rest| ()
+ "used in incLude1 for parsing; s is not used."
+ '(|incLude| eb (cdr ss) lno ufos states))
+
+(defmacro |startsId?| (x)
+ `(or (alpha-char-p ,x) (member ,x '(#\? #\% #\!) :test #'char=)))
+
+(defmacro setAref2U8 (v i j s)
+ `(setf (aref (the (simple-array (unsigned-byte 8) (* *)) ,v) ,i ,j), s))
+
+(defmacro setAref2U16 (v i j s)
+ `(setf (aref (the (simple-array (unsigned-byte 16) (* *)) ,v) ,i ,j), s))
+
+(defmacro setAref2U32 (v i j s)
+ `(setf (aref (the (simple-array (unsigned-byte 32) (* *)) ,v) ,i ,j), s))
+
+(defmacro seteltU8 (v i s)
+ `(setf (aref (the (simple-array (unsigned-byte 8) (*)) ,v) ,i), s))
+
+(defmacro seteltU16 (v i s)
+ `(setf (aref (the (simple-array (unsigned-byte 16) (*)) ,v) ,i), s))
+
+(defmacro seteltU32 (v i s)
+ `(setf (aref (the (simple-array (unsigned-byte 32) (*)) ,v) ,i), s))
+
+(defmacro |toScreen?| (msg) 
+ `(not (eq (|getMsgToWhere| ,msg) '|fileOnly|)))
+
+(defmacro |trapNumericErrors| (form)
+ `(let ((|$oldBreakMode| |$BreakMode|) (|$BreakMode| '|trapNumerics|) (val))
+  (declare (special |$BreakMode| |$numericFailure| |$oldBreakMode|))
+   (setq val (catch '|trapNumerics| ,form))
+   (if (eq val |$numericFailure|) val (cons 0 val))))
+
+(defmacro truth-to-bit (x) `(cond (,x 1) ('else 0)))
+
+(defmacro while (condition &rest body)
+ `(loop (if (not ,condition) (return t)) ,@body))
+
+(defmacro whileWithResult (condition result &rest body)
+ `(loop (if (not ,condition) ,@result) ,@body))
+
+
+;;; layer 0 (all common lisp)
+
+(defun acot (a)
+  (if (> a 0.0)
+    (if (> a 1.0)
+       (atan (/ 1.0 a))
+       (- (/ pi 2.0) (atan a)))
+    (if (< a -1.0)
+       (- pi (atan (/ -1.0 a)))
+       (+ (/ pi 2.0) (atan (- a))))))
+
+(defun acoth (x) (atanh (/ 1 x)))
+
+(defun acsc (x) (asin (/ 1 x)))
+
+(defun acsch (x) (asinh (/ 1 x)))
+
+(defun asec (x) (acos (/ 1 x)))
+
+(defun asech (x) (acosh (/ 1 x)))
+
+(defun axiomVersion ()
+ (declare (special *build-version* *yearweek*))
+  (concatenate 'string "Axiom " *build-version* " built on " *yearweek*))
+
+
+(defun |basicStringize| (s)
+  (cond
+    ((stringp s)
+     (cond
+       ((equal s "\\$") "\\%")
+       ((equal s "{\\em $}") "{\\em \\%}")
+       (t s)))
+    ((eq s '$) "\\%")
+    (t (princ-to-string s))))
+
+(defun BesselasymptA (mu zsqr zfth)
+  (* (/ (- mu 1) (* 16.0 zsqr))
+     (+ (+ 1 (/ (- mu 13.0) (* 8.0 zsqr)))
+        (/ (+ (- (* mu mu) (* 53.0 mu)) 412.0)
+           (* 48.0 zfth)))))
+
+(defun BesselasymptB (mu z zsqr zfth)
+ (let ((musqr (* mu mu)))
+   (+ z
+      (* (/ (- mu 1.0) (* 8.0 z))
+         (+ (+ (+ 1.0 (/ (- mu 25.0) (* 48.0 zsqr)))
+               (/ (+ (- musqr (* 114.0 mu)) 1073.0) (* 640.0 zfth)))
+            (/ (- (+ (- (* (* 5.0 mu) musqr) (* 1535.0 musqr))
+                     (* 54703.0 mu))
+                  375733.0)
+               (* (* 128.0 zsqr) zfth)))))))
+
+(defun BesselIBackRecur (largev argm v z type n)
+ (declare (ignore largev))
+ (let (v1 pn ct1 xm m m1 val w m2 z2 start zero two one)
+  (setq one 1.0)
+  (setq two 2.0)
+  (setq zero 0.0)
+  (setq start (expt 10.0 (- 40)))
+  (setq z2 (/ two z))
+  (setq m2 (+ n 3))
+  (setq w (make-array (+ m2 1)))
+  (setf (aref w m2) zero)
+  (if (string= type "I")
+    (setq val one)
+    (setq val (- one)))
+  (setq m1 (+ n 2))
+  (setf (aref w m1) start)
+  (setq m (+ n 1))
+  (setq xm (float m))
+  (setq ct1 (* z2 (+ xm v)))
+  ; initialize
+  (loop for m from (+ n 1) downto 1 by 1 do
+    (setf (aref w m) (+ (* (aref w (+ m 1)) ct1) (* val (aref w (+ m 2)))))
+    (setq ct1 (- ct1 z2)))
+  (setq m (+ 1 (floor (/ n 2))))
+  (setq m2 (- (+ m m) 1))
+  (cond
+    ((eql v 0)
+     (setq pn (aref w (+ m2 2)))
+     (loop for m2 from (- (* 2 m) 1) downto 3 by 2 do
+       (setq pn (- (aref w m2) (* val pn))))
+     (setq pn (- (aref w 1) (* val (+ pn pn)))))
+    ('T (setq v1 (- v one)) (setq xm (float m))
+     (setq ct1 (+ (+ v xm) xm))
+     (setq pn (* ct1 (aref w (+ m2 2))))
+     (loop for m2 from (- (+ m m) 1) downto 3 by 2 do
+       (setq ct1 (- ct1 two))
+       (setq pn (- (* ct1 (aref w m2)) (* (/ (* val pn) xm) (+ v1 xm))))
+       (setq xm (- xm one)))
+     (setq pn (- (aref w 1) (* val pn)))))
+  (setq m1 (+ n 2))
+  (loop for m from 1 to m1 do
+    (setf (aref w m) (/ (aref w m) pn)))
+  (aref w (+ argm 1))))
+
+(defun |BooleanEquality| (x y) (if x y (null y)))
+
+(defun bvec-and (bv1 bv2) (bit-and  bv1 bv2))
+
+(defun bvec-concat (bv1 bv2) (concatenate '(vector bit) bv1 bv2))
+
+(defun bvec-copy (bv) (copy-seq bv))
+
+(defun bvec-equal (bv1 bv2) (equal bv1 bv2))
+
+(defun bvec-greater (bv1 bv2)
+  (let ((pos (mismatch bv1 bv2)))
+    (cond ((or (null pos) (>= pos (length bv1))) nil)
+          ((< pos (length bv2)) (> (bit bv1 pos) (bit bv2 pos)))
+          ((find 1 bv1 :start pos) t)
+          (t nil))))
+
+(defun bvec-make-full (n x) 
+ (make-array (list n) :element-type 'bit :initial-element x))
+
+(defun bvec-nand (bv1 bv2) (bit-nand bv1 bv2))
+
+(defun bvec-nor (bv1 bv2) (bit-nor  bv1 bv2))
+
+(defun bvec-not (bv) (bit-not  bv))
+
+(defun bvec-or (bv1 bv2) (bit-ior  bv1 bv2))
+
+(defun bvec-xor (bv1 bv2) (bit-xor  bv1 bv2))
+
+
+(defun cgammaAdjust (z)
+ (if (< (imagpart z) 0.0)
+  (+ z (complex 0.0 (* 2.0 Pi)))
+  z))
+
+(defun cgammaBernsum (z)
+ (let (l zsquaredinv zterm sum)
+  (setq sum (/ (log (* 2.0 Pi)) 2.0))
+  (setq zterm z)
+  (setq zsquaredinv (/ 1.0 (* z z)))
+  (setq l
+   (list 0.083333333333333315 (- 0.0027777777777777779)
+         7.9365079365079376E-4 (- 5.9523809523809529E-4)
+         8.4175084175084182E-4 (- 0.0019175269175269176)
+         0.0064102564102564109))
+  (loop for el in l do
+    (setq zterm (* zterm zsquaredinv))
+    (setq sum (+ sum (* el zterm))))
+  sum))
+
+(defun cgammaG (real imag)
+  (- (+ (log (* 2 Pi)) (* Pi imag))
+     (* (* (complex 0.0 1.0) Pi) (- real 0.5))));))
+
+(defun cgammat (x)
+ (max 0.10000000000000001 (min 10.0 (- (* 10.0 (sqrt 2.0)) (abs x)))))
+
+(defun chebf01coefmake (c w n)
+ (let (p sum rho divfac c1 x1 arr ncount z1 a1 a2 a3 n2 n1 start four)
+  (setq four 4.0)
+  (setq start (expt 10.0 (- 200)))
+  (setq n1 (+ n 1))
+  (setq n2 (+ n 2))
+  (setq a3 0.0)
+  (setq a2 0.0)
+  (setq a1 start)      ; arbitrary starting value
+  (setq z1 (/ four w))
+  (setq ncount n1)
+  (setq arr (make-array n2))
+  (setf (aref arr ncount) start) ; start off
+  (setq x1 n2)
+  (setq c1 (- 1.0 c))
+  (loop for ncount from n downto 0 do
+    (setq divfac (/ 1.0 x1))
+    (setq x1 (- x1 1.0))
+    (setf (aref arr ncount)
+      (* x1
+       (- (+ (* (+ divfac (* z1 (- x1 c1))) a1)
+             (* (+ (/ 1.0 x1) (* z1 (+ (+ x1 c1) 1.0))) a2))
+          (* divfac a3))))
+    (setq a3 a2)
+    (setq a2 a1)
+    (setq a1 (aref arr ncount)))
+  (setf (aref arr 0) (/ (aref arr 0) 2.0))
+  ; compute scale factor
+  (setq rho (aref arr 0))
+  (setq sum rho)
+  (setq p 1.0)
+  (loop for i from 1 to n1 do
+   (setq rho (- rho (* p (aref arr i))))
+   (setq sum (+ sum (aref arr i)))
+   (setq p (- p)))
+  (loop for l from 0 to n1 do
+   (setf (aref arr l) (/ (aref arr l) rho)))
+  (setq sum (/ sum rho))
+  (list sum arr)))
+
+(defun chebstarevalarr (coefarr x n)
+ (let (c y temp b)
+  (setq b 0)
+  (setq temp 0)
+  (setq y (* 2 (- (* 2 x) 1)))
+  (loop for i from (+ n 1) downto 0 do
+    (setq c b)
+    (setq b temp)
+    (setq temp (+ (- (* y b) c) (aref coefarr i))))
+   (- temp (/ (* y b) 2))))
+
+(defun cleanupLine (line)
+ (do ((mark (search "{}" line) (search "{}" line)))
+  ((null mark))
+  (setq line
+   (concatenate 'string (subseq line 0 mark) (subseq line (+ mark 2)))))
+ (do ((mark (search "\\" line) (search "\\" line)))
+  ((null mark))
+  (setq line
+   (concatenate 'string (subseq line 0 mark) (subseq line (+ mark 1)))))
+ ; split out \spad{...}
+ (do ((mark (search "spad{" line) (search "spad{" line)))
+  ((null mark))
+  (let (left point mid right)
+   (setq left (subseq line 0 mark))
+   (setq point (search "}" line :start2 mark))
+   (setq mid (subseq line (+ mark 5) point))
+   (setq right (subseq line (+ point 1)))
+   (setq line (concatenate 'string left mid right))))
+ ; split out \spadtype{...}
+ (do ((mark (search "spadtype{" line) (search "spadtype{" line)))
+  ((null mark))
+  (let (left point mid right)
+   (setq left (subseq line 0 mark))
+   (setq point (search "}" line :start2 mark))
+   (setq mid (subseq line (+ mark 9) point))
+   (setq right (subseq line (+ point 1)))
+   (setq line (concatenate 'string left mid right))))
+ line)
+
+(defun |clearMacroTable| ()
+  (declare (special |$pfMacros|))
+  (setq |$pfMacros| nil))
+
+(defun concat (a b &rest l)
+ (if (bit-vector-p a)
+   (if l 
+     (apply #'concatenate 'bit-vector a b l)
+     (concatenate 'bit-vector a b))
+   (if l 
+     (apply #'system:string-concatenate a b l)
+     (system:string-concatenate a b))))
+
+(defun |concatWithBlanks| (r)
+ (if (consp r)
+  (format nil "~{~a~^ ~}" r)
+  ""))
+
+(defun cot (a)
+  (if (or (> a 1000.0) (< a -1000.0))
+    (/ (cos a) (sin a))
+    (/ 1.0 (tan a))))
+
+(defun cotdiffeval (n z skipit)
+ (let (s sq v t2 t1 m a)
+  (setq a (make-array (+ n 2)))
+  (setf (aref a 0) 0.0)
+  (setf (aref a 1) 1.0)
+  (loop for i from 2 to n do 
+    (setf (aref a i) 0.0))
+  (loop for r from 1 to n do
+    (setq m (mod (+ r 1) 2))
+    (loop for k from m to (+ z 1) by 2 do
+      (if (< k 1)
+        (setq t1 0)
+        (setq t1 (- (* (aref a (- k 1)) (- k 1)))))
+      (if (< r k)
+        (setq t2 0)
+        (setq t2 (- (* (aref a (+ k 1)) (+ k 1)))))
+      (setf (aref a k) (+ t1 t2))))
+  ; evaluate d^N/dX^N cot(z) via Horner-like rule
+  (setq v (cot z))
+  (setq sq (* v v))
+  (setq s (aref a (+ n 1)))
+  (loop for i from (- n 1) downto 0 by 2 do
+    (setq s (+ (* s sq) (aref a i))))
+  (setq m (mod n 2))
+  (when (eql m 0) (setq s (* s v)))
+  (if (eql skipit 1)
+   (if (eql m 0) 0 (aref a 0))
+   s)))
+
+(defun coth (x) (* (cosh x) (csch x)))
+
+(defun |createCurrentInterpreterFrame| ()
+ "Collecting up the Environment into a Frame"
+ (declare (special |$interpreterFrameName| |$InteractiveFrame| |$IOindex| 
+   |$HiFiAccess| |$HistList| |$HistListLen| |$HistListAct| |$HistRecord| 
+   |$internalHistoryTable| |$localExposureData|))
+ (list 
+   |$interpreterFrameName| 
+   |$InteractiveFrame| 
+   |$IOindex| 
+   |$HiFiAccess| 
+   |$HistList| 
+   |$HistListLen| 
+   |$HistListAct| 
+   |$HistRecord| 
+   |$internalHistoryTable| 
+   |$localExposureData|)) 
+
+(defun |credits| ()
+ (declare (special credits))
+ (mapcar #'(lambda (x) (princ x) (terpri)) creditlist))
+
+(defun csc (x) (/ 1 (sin x)))
+
+(defun csch (x) (/ 1 (sinh x)))
+
+(defun c-to-s (c)
+ (cons (realpart c) (imagpart c)))
+
+
+(defun |dbKind| (line)
+ (elt line 0))
+
+(defun |dbRead| (n)
+  (with-open-file 
+     (instream (concat (getenviron "AXIOM") "/algebra/libdb.text"))
+   (file-position instream n)
+   (read-line instream)))
+
+(defun delasc (key alist)
+ (remove key alist :key #'car))
+
+(defun |Delay| (function arguments)
+ (cons '|nonnullstream| (cons function arguments)))
+
+(defun |desiredMsg| (erMsgKey &rest optCatFlag)
+ (declare (ignore erMsgKey))
+ (cond
+  ((null (null optCatFlag)) (car optCatFlag))
+  (t t)))
+
+(defun |DirToString| (d)
+  (cond
+    ((equal d '(:absolute)) "/")
+    ((null d) "")
+    ('t (string-right-trim "/" (namestring (make-pathname :directory d)))) ))
+
+(defun |displayFrameNames| ()
+ "Display the Frame Names"
+ (declare (special |$interpreterFrameRing|))
+ (format t "   The names of the existing frames are:~%")
+ (format t "~{            ~a ~%~^~}" (|frameNames|))
+ (format t "      The current frame is the first one listed.~%"))
+
+(defun divide2 (x y)
+ (multiple-value-call #'cons (truncate x y)))
+
+(defun |dqAppend| (x y)
+ (cond
+  ((null x) y)
+  ((null y) x)
+  (t 
+   (rplacd (cdr x) (car y))
+   (rplacd x (cdr y)) x)))
+
+(defun |dqToList| (s)
+ (when s (car s)))
+
+(defun |dqUnit| (s)
+ (let (a)
+  (setq a (list s))
+  (cons a a)))
+
+
+(defun embed2 (name newDef oldDef)
+ (declare (special |$embeddedFunctions|))
+  (setf (symbol-function name) newDef)
+  (push (list name newDef oldDef) |$embeddedFunctions|)
+  name)
+
+(defun |emptyInterpreterFrame| (name)
+ "Create a new, empty Interpreter Frame"
+ (declare (special |$HiFiAccess| |$HistList| |$HistListLen| |$HistListAct| 
+   |$HistRecord| |$localExposureDataDefault|))
+ (list name                                 ; frame name
+   (list (list nil))                        ; environment
+   1                                        ; $IOindex
+   |$HiFiAccess|                        
+   |$HistList| 
+   |$HistListLen| 
+   |$HistListAct| 
+   |$HistRecord| 
+   nil                                      ; $internalHistoryTable
+   (copy-seq |$localExposureDataDefault|))) ; $localExposureData
+
+(defun endedp (oneline)
+ (and (>= (length oneline) 3) (string= (subseq oneline 0 3) "--E")))
+
+(defun |evalSharpOne| (x |#1|)
+ (declare (special |#1|))
+ (eval `(let() (declare (special |#1|)) ,x)))
+
+
+(defun |fin| ()
+ (setq *eof* t)
+ (throw 'spad_reader nil))
+
+(defun |findFrameInRing| (name)
+ "Find a Frame in the Frame Ring by Name"
+  (declare (special |$interpreterFrameRing|))
+  (dolist (frame |$interpreterFrameRing|)
+    (when (eq (frameName frame) name) (return frame))))
+
+(defun flatten (x)
+ (labels (
+  (rec (x acc)
+   (cond
+    ((null x) acc)
+    ((atom x) (cons x acc))
+    (t (rec (car x) (rec (cdr x) acc))))))
+  (rec x nil)))
+
+(defun flattenOperationAlist (opAlist)
+ (let (res)
+  (loop for t1 in opAlist do
+   (setq res
+    (append res (loop for mm in (cdr t1) collect (cons (car t1) mm)))))
+  res))
+
+(defun |fnameExists?| (f)
+  (if (probe-file (namestring f)) 't nil))
+
+(defun |fnameName| (f)
+  (let ((s (pathname-name f)))
+    (if s s "") ))
+
+(defun |fnameReadable?| (f)
+ (let ((s (open f :direction :input :if-does-not-exist nil)))
+  (cond (s (close s) t) (t nil)) ))
+
+(defun |fnameType| (f)
+  (let ((s (pathname-type f)))
+    (if s s "") ))
+
+(defun |frameNames| () 
+ "Creating a List of all of the Frame Names"
+ (declare (special |$interpreterFrameRing|))
+ (mapcar #'(lambda (f) (frameName f)) |$interpreterFrameRing|))
+
+(defun |From| (pos) (list 'from pos))
+
+(defun |FromTo| (pos1 pos2) (list 'fromto pos1 pos2))
+
+
+(defun get-current-directory ()
+ "Get the current directory"
+  (namestring (truename "")))
+
+(defun getenviron (var)
+ "Get the value of an evironment variable"
+ #+allegro (sys::getenv (string var))
+ #+clisp (ext:getenv (string var))
+ #+(or cmu scl)
+  (cdr 
+   (assoc (string var) ext:*environment-list* :test #'equalp :key #'string))
+ #+(or kcl akcl gcl) (si::getenv (string var))
+ #+lispworks (lw:environment-variable (string var))
+ #+lucid (lcl:environment-variable (string var))
+ #+mcl (ccl::getenv var)
+ #+sbcl (sb-ext:posix-getenv var)
+ )
+
+(defun getl (op prop)
+ (when (and op (symbolp op)) (get op prop)))
+(defun |getLinePos| (line) (car line))
+
+(defun |getLineText| (line) (cdr line))
+
+(defun |getMsgKey?| (msg)
+ (let ((val (|getMsgKey| msg)))
+  (when (identp val) val)))
+
+(defun |getParserMacroNames| ()
+ (declare (special |$pfMacros|))
+ (remove-duplicates (mapcar #'car |$pfMacros|)))
+
+(defun |getPreStL| (optPre)
+ (let (spses extraPlaces)
+ (declare (special |$preLength|))
+  (cond
+   ((null optPre) (list "  "))
+   (t
+    (setq spses
+     (cond
+      ((< 0 (setq extraPlaces (- (- |$preLength| (size optPre)) 3)))
+       (make-string extraPlaces))
+      (t "")))
+    (list optPre spses ":")))))
+
+(defun getspoolname (stream)
+ (let (line point)
+  (setq line (read-line stream))
+  (setq point (position #\. line))
+  (if (or (null point) 
+      (< (length line) 30)
+      (not (string= (subseq line (+ point 1) (+ point 7)) "output")))
+    nil
+  (subseq line 20 point))))
+
+
+(defun |hasCorrectTarget| (m sig)
+ (let (tar)
+  (setq tar (second sig))
+  (cond
+   ((eq (caar sig) '|TypeEquivalence|) nil)
+   ((equal m tar) t)
+   ((and (eq (car tar) '|Union|) 
+         (eq (third tar) '|failed|))
+    (equal (second tar) m))
+   ((and (eq (car tar) '|Union|) 
+         (eq (second tar) '|failed|)
+         (equal (third tar) m))))))
+
+(defun |hasOptArgs?| (argSex)
+ (let (rhs  lhs opt nonOpt tmp1 tmp2)
+ (dolist (arg argSex)
+  (cond
+   ((and (consp arg)
+         (eq (car arg) 'optarg)
+         (progn
+          (setq tmp1 (cdr arg))
+          (and (consp tmp1)
+               (progn
+                (setq lhs (car tmp1))
+                (setq tmp2 (cdr tmp1))
+                (and (consp tmp2)
+                     (eq (cdr tmp2) nil)
+                     (progn
+                      (setq rhs (car tmp2))
+                      t))))))
+     (setq opt (cons (list lhs rhs) opt)))
+    (t (setq nonOpt (cons arg nonOpt)))))
+ (when opt
+  (nconc (nreverse nonOpt) (list (cons '|construct| (nreverse opt)))))))
+
+(defun horner (l x)
+ (let ((result 0))
+  (loop for el in l do (setq result (+ (* x result) el)))
+  result))
+
+(defun |htpAddToPageDescription| (htPage pageDescrip)
+ (let (newDescript)
+  (setq newDescript
+   (if (stringp pageDescrip)
+    (cons pageDescrip (elt htPage 7))
+    (nconc (nreverse (copy-list pageDescrip)) (elt htPage 7))))
+  (setf (elt htPage 7) newDescript)))
+  
+(defun |htpMakeEmptyPage| (&rest args)
+  (let (name val (propList (car args)) (options (cdr args)))
+  (declare (special |$activePageList|))
+   (setq name (or (car options) (gentemp)))
+   (setq |$activePageList| (cons name |$activePageList|))
+   (set name (setq val (vector name nil nil nil nil nil propList nil)))
+   val))
+
+(defun |htSayStandard| (&rest args)
+ (|htSayBind| (car args) (cdr args)))
+
+
+(defun ignorep (oneline)
+ (and (>= (length oneline) 3) (string= (subseq oneline 0 3) "--I")))
+
+(defun |incActive?| (fn ufos)
+ (member fn ufos))
+
+(defun |incCommand?| (s)
+  "does this start with a close paren?"
+  (and (< 0 (length s)) (equal (elt s 0) #\) )))
+
+(defun |incDrop| (n b)
+ (if (>= n (length b)) 
+  '||
+  (substring b n nil)))
+
+(defun |incHandleMessage| (x)
+ "Message handling for the source includer"
+ (let ((msgtype (elt (elt x 1) 1))
+       (pos (car (elt x 0)))
+       (key (car (elt (elt x 1) 0)))
+       (args (cadr (elt (elt x 1) 0))))
+       
+ (cond
+  ((eq msgtype '|none|)    0)
+  ((eq msgtype '|error|)   (|ncSoftError| pos key args))
+  ((eq msgtype '|warning|) (|ncSoftError| pos key args))
+  ((eq msgtype '|say|)     (|ncSoftError| pos key args))
+  (t                       (|ncBug| key args)))))
+
+(defun |inclmsgConsole| ()
+ (list "Including source lines from console.  Type )fin when done." nil))
+
+(defun |inclmsgFinSkipped| ()
+ (list 
+  (format nil 
+   "A )fin command was skipped ~
+   (along with everything else) in a false branch of an )if...)endif.")
+  nil))
+
+(defun |inclmsgPrematureEOF| (ufo)
+ (list 
+  (format nil
+   "File %1f ended where at least one )endif was still needed.
+    An appropriate number of )endif lines has been assumed.")
+  (list (|theorigin| ufo))))
+
+(defun |inclmsgCmdBug| ()
+ (list "Unexpected command in source inclusion." nil))
+
+(defun |inclmsgIfBug| ()
+  (list "Unexpected state in )if...)endif." nil))
+
+(defun |incPrefix?| (prefix start whole)
+ (let (good)
+  (cond
+   ((< (- (length whole) start) (length prefix)) nil)
+   (t
+    (setq good t)
+    ((lambda (Var i j)
+      (loop
+       (cond
+        ((or (> i Var) (not good)) (return nil))
+        (t (setq good (equal (elt prefix i) (elt whole j)))))
+       (setq i (+ i 1))
+       (setq j (+ j 1))))
+      (- (length prefix) 1) 0 start)
+    good))))
+
+(defun init-memory-config (&key
+                           (cons 500)
+                           (fixnum 200)
+                           (symbol 500)
+                           (package 8)
+                           (array 400)
+                           (string 500)
+                           (cfun 100)
+                           (cpages 3000)
+                           (rpages 1000)
+                           (hole 2000) )
+  ;; initialize AKCL memory allocation parameters
+  #+:nil
+  (progn
+    (system:allocate 'cons cons)
+    (system:allocate 'fixnum fixnum)
+    (system:allocate 'symbol symbol)
+    (system:allocate 'package package)
+    (system:allocate 'array array)
+    (system:allocate 'string string)
+    (system:allocate 'cfun cfun)
+    (system:allocate-contiguous-pages cpages)
+    (system:allocate-relocatable-pages rpages)
+    (system:set-hole-size hole))
+  #-:nil
+  nil)
+
+(defun |insertPos| (newPos posList)
+ (let (pos top bot done)
+ (setq bot (cons 0 posList))
+ (do () (done)
+  (setq top (cons (car bot) top))
+  (setq bot (cdr bot))
+  (setq pos (car bot))
+  (setq done
+   (cond
+    ((< pos newPos) nil)
+    ((equal pos newPos) t)
+    ((< newPos pos)
+     (setq top (cons newPos top))
+     t))))
+ (cons (cdr (reverse top)) bot)))
+
+(defun integer-decode-float-denominator (x)
+ (multiple-value-bind (mantissa exponent sign) (integer-decode-float x)
+  (declare (ignore mantissa sign)) (expt 2 (abs exponent))))
+
+(defun integer-decode-float-exponent (x)
+ (multiple-value-bind (mantissa exponent sign) (integer-decode-float x)
+  (declare (ignore mantissa sign)) exponent))
+
+(defun integer-decode-float-sign (x)
+ (multiple-value-bind (mantissa exponent sign) (integer-decode-float x)
+  (declare (ignore mantissa exponent)) sign))
+
+(defun integer-decode-float-numerator (x)
+ (integer-decode-float x))
+
+(defun |intloopPrefix?| (prefix whole)
+ "Does the string start with this prefix?"
+ (let ((newprefix (string-left-trim '(#\space) prefix))
+       (newwhole  (string-left-trim '(#\space) whole)))
+  (when (<= (length newprefix) (length newwhole))
+   (when (string= newprefix newwhole :end2 (length prefix))
+    newwhole))))
+
+(defun |isIntegerString| (tok)
+ (multiple-value-bind (int len) (parse-integer tok :junk-allowed t)
+  (when (and int (= len (length tok))) int)))
+
+(defun |isWrapped| (x)
+  (or (and (consp x) (eq (qcar x) 'wrapped)) 
+      (numberp x)
+      (floatp x) 
+      (stringp x)))
+
+
+(defun |keyword| (st)
+ (hget |scanKeyTable| st))
+
+(defun |keyword?| (st)
+ (null (null (hget |scanKeyTable| st))))
+
+
+(defun lastcount (oneline)
+ (let ((n :done) (m :done) next somemore isof)
+ (when (and (>= (length oneline) 3) (string= (subseq oneline 0 3) "--S"))
+  (setq somemore (string-trim " " (subseq oneline 3)))
+  (when somemore
+   (multiple-value-setq (n next) (read-from-string somemore nil :done))
+   (when (integerp n)
+    (setq somemore (string-trim " " (subseq somemore next)))
+    (multiple-value-setq (isof next) (read-from-string somemore nil :done))
+    (when (string= isof "OF")
+     (setq somemore (string-trim " " (subseq somemore next)))
+     (multiple-value-setq (m next) (read-from-string somemore nil :done))))))
+  (and (integerp m) (integerp n) (= m n))))
+
+(defun |lfcomment| (x)
+ (list '|comment| x))
+
+(defun |lferror| (x)
+ (list '|error| x))
+
+(defun |lffloat| (a w e)
+ (list '|float| (concat a "." w "e" e)))
+
+(defun |lfid| (x)
+ (list '|id| (intern x "BOOT")))
+
+(defun |lfinteger| (x)
+ (list '|integer| x))
+
+(defun |lfnegcomment| (x)
+ (list '|negcomment| x))
+
+(defun |lfrinteger| (r x)
+ (list '|integer| (concat r (concat "r" x))))
+
+(defun |lfspaces| (x)
+ (list '|spaces| x))
+
+(defun |lfstring| (x)
+ (if (eql (length x) 1)
+  (list '|char| x)
+  (list '|string| x)))
+
+(defun |libdbTrim| (s)
+  (string-trim '(#\space #\tab #\newline) (substitute #\space #\newline s)))
+
+(defun limitedPrint1 (form stream)
+ (let ((*print-level* 4) (*print-length* 4))
+  (prin1 form stream) 
+  (terpri stream)))
+
+(defun |lnCreate| (extraBlanks string globalNum &rest optFileStuff)
+ (let ((localNum (first optFileStuff))
+       (filename (second optFileStuff)))
+  (unless localNum (setq localNum 0))
+  (list extraBlanks string globalNum localNum filename)))
+
+(defun |lnExtraBlanks| (lineObject) (elt lineObject 0))
+
+(defun |lnFileName?| (lineObject)
+ (let (filename)
+  (when (consp (setq filename (elt lineObject 4))) filename)))
+
+(defun |lnGlobalNum| (lineObject) (elt lineObject 2))
+
+(defun |lnImmediate?| (lineObject) (null (|lnFileName?| lineObject)))
+
+(defun |lnLocalNum| (lineObject) (elt lineObject 3))
+
+(defun |lnPlaceOfOrigin| (lineObject) (elt lineObject 4))
+
+(defun |lnSetGlobalNum| (lineObject num)
+ (setf (elt lineObject 2) num))
+
+(defun |lnString| (lineObject) (elt lineObject 1))
+
+(defun logH (real imag z)
+ (declare (ignore z))
+ (let (part1 part2 twopiz2 z1bar)
+   (setq z1bar (cadr (multiple-value-list (floor real))))
+   (setq twopiz2 (* 2.0 (* Pi imag)))
+   (setq part2
+     (* (exp twopiz2)
+       (+ (* 2.0 (expt (sin (* Pi z1bar)) 2))
+          (* (sin (* 2.0 (* Pi z1bar))) (complex 0.0 1.0)))))
+   ;--- part1 is another way of saying 1 - exp(2*Pi*z1bar)
+   (setq part1 (- (* (tanh (* Pi imag)) (+ 1.0 (exp twopiz2)))))
+   (log (+ part1 part2))))
+
+(defun logS (real imag z n zpn)
+ (let ((sum 0.0))
+  (dotimes (k n)
+   (if (< (+ real k) (- 5.0 (* 0.60000000000000009 imag)))
+    (setq sum (+ sum (log (/ (+ z k) zpn)))))
+    (setq sum (+ sum (log (- 1.0 (/ (- n k) zpn))))))
+  sum))
+
+
+(defun |mac0Define| (sy state body)
+ (declare (special |$pfMacros|))
+  (setq |$pfMacros| (cons (list sy state body) |$pfMacros|)))
+
+(defun |mac0InfiniteExpansion,name| (b)
+ (let (st sy got)
+  (setq got (|mac0GetName| b))
+  (cond
+   ((null got) "???")
+   (t
+    (setq sy (car got))
+    (setq st (cadr got))
+    (if (eq st '|mlambda|) 
+     (concat (pname sy) "(...)")
+     (pname sy))))))
+
+(defun make-absolute-filename (name)
+ "Prepend the absolute path to a filename"
+ (declare (special $spadroot))
+ (concatenate 'string $spadroot name))
+
+(defun |makeByteWordVec2| (maxelement initialvalue)
+  (let ((n (cond ((null initialvalue) 7) ('t maxelement))))
+    (make-array (length initialvalue)
+      :element-type (list 'mod (1+ n))
+      :initial-contents initialvalue)))
+
+(defun |makeInitialModemapFrame| ()
+  "Make the initial modemap frame"
+  (declare (special |$InitialModemapFrame|)) 
+  (copy |$InitialModemapFrame|)) 
+
+(defun manexp (u)
+  (multiple-value-bind (f e s) 
+    (decode-float u)
+    (cons (* s f) e)))
+
+(defun markUnique (x)
+ (let (u)
+  (setq u (car x))
+  (rplaca x '(|$unique|))
+  (rplacd x (cons u (cdr x)))
+  (cdr x)))
+
+(defun |member| (item sequence)
+ (cond
+   ((symbolp item) (member item sequence :test #'eq))
+   ((stringp item) (member item sequence :test #'equal))
+   ((and (atom item) (not (arrayp item))) (member item sequence))
+   (t (member item sequence :test #'equalp))))
+
+(defun |mkObjFn| (val mode)
+ (cons mode val)) 
+
+(defun monitor-add (name &optional sourcefile)
+ "add a function to be monitored"
+ (declare (special *monitor-table*))
+ (unless (fboundp name) (load sourcefile))
+ (when (gethash name *monitor-table*) 
+  (monitor-delete name))
+ (eval `(trace (,name :cond (progn (monitor-incr ',name) nil))))
+ (setf (gethash name *monitor-table*)
+  (make-monitor-data 
+     :name name :count 0 :monitorp t :sourcefile sourcefile)))
+
+(defun monitor-apropos (str)
+  "given a string, find all monitored symbols containing the string
+   the search is case-insensitive. returns a list of monitor-data items"
+ (let (result)
+  (maphash 
+   #'(lambda (k v)
+      (when
+       (search (string-upcase str) 
+               (string-upcase (symbol-name k)) 
+               :test #'string=)
+        (push v result)))
+   *monitor-table*)
+ result))
+
+(defun monitor-autoload ()
+ "traces autoload of algebra to monitor corresponding source files"
+ (trace (vmlisp::loadvol 
+          :entrycond nil
+          :exitcond (progn (monitor-dirname system::arglist) nil))))
+
+(defun monitor-checkpoint (file)
+ "save the *monitor-table* in loadable form"
+ (let ((*print-package* t))
+  (declare (special *print-package* *monitor-table*))
+  (with-open-file (out file :direction :output)
+   (format out "(in-package \"BOOT\")~%")
+   (format out "(monitor-inittable)~%")
+   (dolist (data (monitor-results))
+    (format out "(monitor-add '~s ~s)~%"
+     (monitor-data-name data)
+     (monitor-data-sourcefile data))
+    (format out "(setf (gethash '~s *monitor-table*) 
+                  (make-monitor-data :name '~s :count ~s :monitorp ~s
+                                     :sourcefile ~s))~%"
+     (monitor-data-name data)
+     (monitor-data-name data)
+     (monitor-data-count data)
+     (monitor-data-monitorp data)
+     (monitor-data-sourcefile data))))))
+
+(defun monitor-decr (fn)
+ "decr the count of fn by 1"
+ (let (data)
+  (declare (special *monitor-table*))
+  (setq data (gethash fn *monitor-table*))
+  (if data 
+   (decf (monitor-data-count data))  ;; change table entry by side-effect
+   (warn "~s is monitored but not in table..do (untrace ~s)~%" fn fn))))
+
+(defun monitor-delete (fn)
+ "Remove a function being monitored"
+ (declare (special *monitor-table*))
+ (eval `(untrace ,fn))
+ (remhash fn *monitor-table*))
+
+(defun monitor-dirname (args)
+  "expects a list of 1 libstream (loadvol's arglist) and monitors the source"
+ (let (name)
+ (declare (special *monitor-nrlibs*))
+  (setq name (libstream-dirname (car args)))
+  (setq name (file-namestring name))
+  (setq name (concatenate 'string "/spad/int/algebra/" name "/code.lsp"))
+  (when (probe-file name)
+   (push name *monitor-nrlibs*)
+   (monitor-file name))))
+
+(defun monitor-disable (&optional fn)
+ "disable all (optionally one) function for monitoring"
+ (declare (special *monitor-table*))
+ (if fn
+  (progn
+   (eval `(untrace ,fn))   
+   (setf (monitor-data-monitorp (gethash fn *monitor-table*)) nil))
+  (maphash 
+   #'(lambda (key value)
+      (declare (ignore value))
+      (eval `(untrace ,key))
+      (setf (monitor-data-monitorp (gethash key *monitor-table*)) nil))
+   *monitor-table*)))
+
+(defun monitor-enable (&optional fn)
+ "enable all (or optionally one) function for monitoring"
+ (declare (special *monitor-table*))
+ (if fn 
+  (progn
+   (eval `(trace (,fn :cond (progn (monitor-incr ',fn) nil))))
+   (setf (monitor-data-monitorp (gethash fn *monitor-table*)) t))
+  (maphash 
+   #'(lambda (key value)
+      (declare (ignore value))
+      (eval `(trace (,key :cond (progn (monitor-incr ',key) nil))))
+      (setf (monitor-data-monitorp (gethash key *monitor-table*)) t))
+   *monitor-table*)))
+
+(defun monitor-end ()
+ "End the monitoring process. we cannot restart"
+ (declare (special *monitor-table*))
+ (maphash 
+  #'(lambda (key value)
+     (declare (ignore value))
+     (eval `(untrace ,key)))
+   *monitor-table*))
+
+(defun monitor-exposedp (fn)
+ "exposed functions have more than 1 semicolon. given a symbol, count them"
+   (> (count #\; (symbol-name fn)) 1))
+
+(defun monitor-file (file)
+ "hang a monitor call on all of the defuns in a file"
+ (let (expr (package "BOOT"))
+  (format t "monitoring ~s~%" file)
+  (with-open-file (in file)
+   (catch 'done
+    (loop
+     (setq expr (read in nil 'done))
+     (when (eq expr 'done) (throw 'done nil))
+     (if (and (consp expr) (eq (car expr) 'in-package))
+      (if (and (consp (second expr)) (eq (first (second expr)) 'quote))
+       (setq package (string (second (second expr))))
+       (setq package (second expr)))
+      (when (and (consp expr) (eq (car expr) 'defun))
+       (monitor-add (intern (string (second expr)) package) file))))))))
+
+(defun monitor-help ()
+ (format t "~%
+;;; MONITOR                                                                
+;;;                                                                        
+;;; This file contains a set of function for monitoring the execution      
+;;; of the functions in a file. It constructs a hash table that contains   
+;;; the function name as the key and monitor-data structures as the value  
+;;;                                                                        
+;;; The technique is to use a :cond parameter on trace to call the         
+;;; monitor-incr function to incr the count every time a function is called
+;;;                                                                        
+;;; *monitor-table*                                HASH TABLE              
+;;;    is the monitor table containing the hash entries                    
+;;; *monitor-nrlibs*                               LIST of STRING
+;;;    list of nrlib filenames that are monitored
+;;; *monitor-domains*                              LIST of STRING
+;;;    list of domains to monitor-report (default is all exposed domains)
+;;; monitor-data                                   STRUCTURE               
+;;;    is the defstruct name of records in the table                       
+;;;    name is the first field and is the name of the monitored function   
+;;;    count contains a count of times the function was called             
+;;;    monitorp is a flag that skips counting if nil, counts otherwise     
+;;;    sourcefile is the name of the file that contains the source code    
+;;;                                                                        
+;;;  ***** SETUP, SHUTDOWN ****                                            
+;;;                                                                        
+;;; monitor-inittable ()                           FUNCTION                
+;;;    creates the hashtable and sets *monitor-table*                      
+;;;    note that it is called every time this file is loaded               
+;;; monitor-end ()                                 FUNCTION                
+;;;    unhooks all of the trace hooks                                      
+;;;                                                                        
+;;;  ***** TRACE, UNTRACE *****                                            
+;;;                                                                        
+;;; monitor-add (name &optional sourcefile)        FUNCTION                
+;;;    sets up the trace and adds the function to the table                
+;;; monitor-delete (fn)                            FUNCTION                
+;;;    untraces a function and removes it from the table                   
+;;; monitor-enable (&optional fn)                  FUNCTION                
+;;;    starts tracing for all (or optionally one) functions that           
+;;;    are in the table                                                    
+;;; monitor-disable (&optional fn)                 FUNCTION                
+;;;    stops tracing for all (or optionally one) functions that            
+;;;    are in the table                                                    
+;;;                                                                        
+;;; ***** COUNTING, RECORDING  *****                                       
+;;;                                                                        
+;;; monitor-reset (&optional fn)                   FUNCTION                
+;;;    reset the table count for the table (or optionally, for a function) 
+;;; monitor-incr (fn)                              FUNCTION                
+;;;    increments the count information for a function                     
+;;;    it is called by trace to increment the count                        
+;;; monitor-decr (fn)                              FUNCTION                
+;;;    decrements the count information for a function                     
+;;; monitor-info (fn)                              FUNCTION                
+;;;    returns the monitor-data structure for a function                   
+;;;                                                                        
+;;; ***** FILE IO *****                                                    
+;;;                                                                        
+;;; monitor-write (items file)                     FUNCTION                
+;;;    writes a list of symbols or structures to a file                    
+;;; monitor-file (file)                            FUNCTION                
+;;;    will read a file, scan for defuns, monitor each defun               
+;;;    NOTE: monitor-file assumes that the file has been loaded            
+;;;                                                                        
+;;; ***** RESULTS *****                                                    
+;;;                                                                        
+;;; monitor-results ()                             FUNCTION                
+;;;    returns a list of the monitor-data structures                       
+;;; monitor-untested ()                            FUNCTION                
+;;;    returns a list of files that have zero counts                       
+;;; monitor-tested (&optional delete)              FUNCTION                
+;;;    returns a list of files that have nonzero counts                    
+;;;    optionally calling monitor-delete on those functions
+;;;
+;;; ***** CHECKPOINT/RESTORE *****
+;;;
+;;; monitor-checkpoint (file)                     FUNCTION
+;;;    save the *monitor-table* in a loadable form
+;;; monitor-restore (file)                        FUNCTION
+;;;   restore a checkpointed file so that everything is monitored
+;;;
+;;; ***** ALGEBRA *****
+;;;
+;;; monitor-autoload ()                           FUNCTION
+;;;   traces autoload of algebra to monitor corresponding source files
+;;;   NOTE: this requires the /spad/int/algebra directory
+;;; monitor-dirname (args)                        FUNCTION
+;;;   expects a list of 1 libstream (loadvol's arglist) and monitors the source
+;;;   this is a function called by monitor-autoload 
+;;; monitor-nrlib (nrlib)                         FUNCTION
+;;;   takes an nrlib name as a string (eg POLY) and returns a list of 
+;;;   monitor-data structures from that source file
+;;; monitor-report ()                             FUNCTION
+;;;   generate a report of the monitored activity for domains in 
+;;;   *monitor-domains*
+;;; monitor-spadfile (name)                       FUNCTION
+;;;   given a spad file, report all nrlibs it creates
+;;;   this adds each nrlib name to *monitor-domains* but does not
+;;;   trace the functions from those domains
+;;; monitor-percent ()                            FUNCTION
+;;;   ratio of (functions executed)/(functions traced)
+;;; monitor-apropos (str)                         FUNCTION
+;;;   given a string, find all monitored symbols containing the string
+;;;   the search is case-insensitive. returns a list of monitor-data items
+") nil)
+
+
+(defun monitor-incr (fn)
+ "incr the count of fn by 1"
+ (let (data)
+  (declare (special *monitor-table*))
+  (setq data (gethash fn *monitor-table*))
+  (if data 
+   (incf (monitor-data-count data))  ;; change table entry by side-effect
+   (warn "~s is monitored but not in table..do (untrace ~s)~%" fn fn))))
+
+(defun monitor-info (fn)
+ "return the monitor information for a function"
+ (declare (special *monitor-table*))
+ (gethash fn *monitor-table*))
+
+(defun monitor-inittable ()
+ "initialize the monitor statistics hashtable"
+ (declare (special *monitor-table*))
+ (setq *monitor-table* (make-hash-table)))
+
+(defun monitor-libname (item)
+  "given a monitor-data item, extract the nrlib name"
+  (pathname-name (car (last
+   (pathname-directory (monitor-data-sourcefile item))))))
+
+(defun monitor-nrlib (nrlib)
+ "takes an nrlib name as a string (eg POLY) and returns a list of 
+  monitor-data structures from that source file"
+ (let (result)
+ (declare (special *monitor-table*))
+  (maphash 
+   #'(lambda (k v)
+      (declare (ignore k))
+      (when (string= nrlib 
+             (pathname-name (car (last
+                (pathname-directory (monitor-data-sourcefile v))))))
+       (push v result)))
+   *monitor-table*)
+ result))
+
+(defun monitor-parse (expr)
+  (let (point1 point2)
+   (setq point1 (position #\space expr :test #'char=))
+   (setq point1 (position #\space expr :start point1 :test-not #'char=))
+   (setq point1 (position #\space expr :start point1 :test #'char=))
+   (setq point1 (position #\space expr :start point1 :test-not #'char=))
+   (setq point2 (position #\space expr :start point1 :test #'char=))
+   (subseq expr point1 point2)))
+
+(defun monitor-percent ()
+ "Print percent of functions tested"
+ (let (nonzero total)
+ (declare (special *monitor-table*))
+  (setq nonzero 0)
+  (setq total 0)
+  (maphash 
+   #'(lambda (k v)
+      (declare (ignore k))
+      (when (> (monitor-data-count v) 0) (incf nonzero))
+      (incf total))
+   *monitor-table*)
+   (format t "~d of ~d (~d percent) tested~%" nonzero total 
+     (round (/ (* 100.0 nonzero) total)))))
+
+(defun monitor-readinterp ()
+  "read interp.exposed to initialize *monitor-domains* to exposed domains.
+   this is the default action. adding or deleting domains from the list
+   will change the report results"
+  (let (skip expr name)
+   (declare (special *monitor-domains*))
+   (setq *monitor-domains* nil)
+   (with-open-file (in "/spad/src/algebra/interp.exposed")
+    (read-line in)
+    (read-line in)
+    (read-line in)
+    (read-line in)
+    (catch 'done
+     (loop
+      (setq expr (read-line in nil "done"))
+      (when (string= expr "done") (throw 'done nil))
+      (cond
+       ((string= expr "basic") (setq skip nil))
+       ((string= expr "categories") (setq skip t))
+       ((string= expr "hidden") (setq skip t))
+       ((string= expr "defaults") (setq skip nil)))
+      (when (and (not skip) (> (length expr) 58))
+       (setq name (subseq expr 58 (length expr)))
+       (setq name (string-right-trim '(#\space) name))
+       (when (> (length name) 0)
+        (push name *monitor-domains*))))))))
+
+(defun monitor-report ()
+ "generate a report of the monitored activity for domains in *monitor-domains*"
+ (let (nrlibs nonzero total)
+ (declare (special *monitor-domains*))
+  (unless *monitor-domains* (monitor-readinterp))
+  (setq nonzero 0)
+  (setq total 0)
+  (maphash 
+   #'(lambda (k v)
+      (declare (ignore k))
+      (let (nextlib point)
+       (when (> (monitor-data-count v) 0) (incf nonzero))
+       (incf total)
+       (setq nextlib (monitor-libname v))
+       (setq point (member nextlib nrlibs :test #'string= :key #'car))
+       (if point
+         (setf (cdr (first point)) (cons v (cdr (first point))))
+         (push (cons nextlib (list v)) nrlibs))))
+   *monitor-table*)
+  (format t "~d of ~d (~d percent) tested~%" nonzero total 
+    (round (/ (* 100.0 nonzero) total)))
+  (setq nrlibs (sort nrlibs #'string< :key #'car))
+  (dolist (pair nrlibs)
+   (let ((exposedcount 0) (testcount 0))
+    (when (member (car pair) *monitor-domains* :test #'string=)
+     (format t "for library ~s~%" (car pair))
+     (dolist (item (sort (cdr pair)  #'> :key #'monitor-data-count))
+      (when (monitor-exposedp (monitor-data-name item))
+       (incf exposedcount)
+       (when (> (monitor-data-count item) 0) (incf testcount))
+       (format t "~5d ~s~%" 
+         (monitor-data-count item) 
+         (monitor-data-name item))))
+      (if (= exposedcount testcount)
+       (format t "~a has all exposed functions tested~%" (car pair))
+       (format t "Daly bug:~a has untested exposed functions~%" (car pair))))))
+ nil))
+
+(defun monitor-reset (&optional fn)
+ "reset the table count for the table (or a function)"
+ (declare (special *monitor-table*))
+ (if fn
+  (setf (monitor-data-count (gethash fn *monitor-table*)) 0)
+  (maphash 
+   #'(lambda (key value)
+      (declare (ignore value))
+      (setf (monitor-data-count (gethash key *monitor-table*)) 0))
+   *monitor-table*)))
+
+(defun monitor-restore (file)
+ "restore a checkpointed file"
+ (load file))
+
+(defun monitor-results ()
+ "return a list of the monitor-data structures"
+ (let (result)
+ (declare (special *monitor-table*))
+  (maphash 
+  #'(lambda (key value)
+     (declare (ignore key))
+     (push value result))
+   *monitor-table*)
+  (mapcar #'(lambda (x) (pprint x)) 
+   (sort result #'string-lessp :key #'monitor-data-name))))
+
+(defun monitor-spadfile (name)
+ "given a spad file, report all nrlibs it creates"
+ (let (expr)
+ (declare (special *monitor-domains*))
+  (with-open-file (in name)
+   (catch 'done
+    (loop
+     (setq expr (read-line in nil 'done))
+     (when (eq expr 'done) (throw 'done nil))
+     (when (and (> (length expr) 4) (string= (subseq expr 0 4) ")abb"))
+      (setq *monitor-domains* 
+       (adjoin (monitor-parse expr) *monitor-domains* :test #'string=))))))))
+
+(defun monitor-tested (&optional delete)
+ "return a list of functions with non-zero counts, optionally deleting them"
+ (let (result)
+ (declare (special *monitor-table*))
+  (maphash 
+   #'(lambda (key value)
+      (when (and (monitor-data-monitorp value) 
+                 (> (monitor-data-count value) 0))
+       (when delete (monitor-delete key))
+       (push key result)))
+    *monitor-table*)
+ (sort result #'string-lessp)))
+
+(defun monitor-untested ()
+ "return a list of the functions with zero count fields"
+ (let (result)
+  (declare (special *monitor-table*))
+  (maphash 
+   #'(lambda (key value)
+      (if (and (monitor-data-monitorp value) (= (monitor-data-count value) 0))
+       (push key result)))
+    *monitor-table*)
+ (sort result #'string-lessp )))
+
+(defun monitor-write (items file)
+ "write out a list of symbols or structures to a file"
+ (with-open-file (out file :direction :output)
+  (dolist (item items)
+    (if (symbolp item)
+     (format out "~s~%" item)
+     (format out "~s~50t~s~100t~s~%"
+       (monitor-data-sourcefile item)
+       (monitor-data-name item)
+       (monitor-data-count item))))))
+
+
+(defun |ncError| ()
+ (throw '|SpadCompileItem| '|ncError|))
+
+(defun |ncloopEscaped| (x)
+ (let ((l (length x)))
+  (dotimes (i l)
+   (when (char= (char x (- l i 1)) #\_) (return t))
+   (unless (char= (char x (- l i 1)) #\space) (return nil)))))
+
+(defun |ncloopPrefix?| (prefix whole)
+ (when (eql (search prefix whole) 0)
+  (subseq whole (length prefix))))
+
+(defun |ncloopPrintLines| (lines)
+ ((lambda (Var4 line)
+  (loop
+   (cond
+    ((or (atom Var4) (progn (setq line (car Var4)) nil))
+      (return nil))
+    (t (write-line (cdr line))))
+   (setq Var4 (cdr Var4))))
+  lines nil)
+ (write-line " "))
+
+(defun |nonBlank| (str)
+ (let (value)
+  ((lambda (Var3 i)
+   (loop
+    (cond
+     ((> i Var3) (return nil))
+     (t
+      (cond
+       ((not (equal (elt str i) #\Space))
+         (identity (progn (setq value t) (return value)))))))
+    (setq i (+ i 1))))
+   (maxindex str) 0)
+  value))
+
+(defun |npAnyNo| (fn)
+ (do () ((not (apply fn nil)))) ; while apply do...
+ t) 
+
+(defun |npboot| (str)
+ (declare (ignore str))
+ (format t "The )boot command is no longer supported~%"))
+
+(defun |npEqPeek| (s)
+ (declare (special |$ttok| |$stok|))
+  (and (eq (caar |$stok|) '|key|) (eq s |$ttok|)))
+
+(defun |nplisp| (str)
+ (declare (special |$ans|))
+  (setq |$ans| (eval (read-from-string str)))
+  (format t "~&Value = ~S~%" |$ans|))
+
+(defun |npPop1| ()
+ (declare (special |$stack|))
+ (pop |$stack|))
+
+(defun |npPop2| ()
+ (let (a) 
+ (declare (special |$stack|))
+  (setq a (cadr |$stack|))
+  (rplacd |$stack| (cddr |$stack|))
+  a))
+
+(defun |npPop3| () 
+ (let (a)
+ (declare (special |$stack|))
+  (setq a (caddr |$stack|))
+  (rplacd (cdr |$stack|) (cdddr |$stack|)) a))
+
+(defun |npPush| (x)
+ (declare (special |$stack|))
+  (push x |$stack|))
+
+
+(defun |objEnv| (obj)
+ (declare (special $NE) (ignore obj))
+ $NE) 
+
+(defun |objModeFn| (obj)
+ (car obj)) 
+
+(defun |objValFn| (obj)
+ (cdr obj)) 
+
+(defun |opTran| (op)
+ (cond
+  ((equal op '|..|) 'segment)
+  ((eq op '[]) '|construct|)
+  ((eq op '{}) '|braceFromCurly|)
+  ((eq op 'is) '|is|)
+  (t op)))
+
+
+(defun |pfAndLeft| (pf)
+ (cadr pf))
+
+(defun |pfAndRight| (pf)
+ (caddr pf))
+
+(defun |pfAppend| (list)
+ (apply #'append list))
+
+(defun |pfApplicationArg| (pf)
+ (caddr pf))
+
+(defun |pfApplicationOp| (pf)
+ (cadr pf))
+
+(defun |pfAssignLhsItems| (pf)
+ (cadr pf))
+
+(defun |pf0AssignLhsItems| (pf)
+ (|pfParts| (|pfAssignLhsItems| pf)))
+
+(defun |pfAssignRhs| (pf)
+ (caddr pf))
+
+(defun |pfBreakFrom| (pf)
+ (cadr pf))
+
+(defun |pfCoercetoExpr| (pf)
+ (cadr pf))
+
+(defun |pfCoercetoType| (pf)
+ (caddr pf))
+
+(defun |pfCollectBody| (pf)
+ (cadr pf))
+
+(defun |pfCollectIterators| (pf)
+ (caddr pf))
+
+(defun |pfDefinitionLhsItems| (pf)
+ (cadr pf))
+
+(defun |pfDefinitionRhs| (pf)
+ (caddr pf))
+
+(defun |pfDoBody| (pf)
+ (cadr pf))
+
+(defun |pfExitCond| (pf)
+ (cadr pf))
+
+(defun |pfExitExpr| (pf)
+ (caddr pf))
+
+(defun |pfFirst| (form)
+ (cadr form))
+
+(defun |pfFreeItems| (pf)
+ (cadr pf))
+
+(defun |pfForinLhs| (pf)
+ (cadr pf))
+
+(defun |pfForinWhole| (pf)
+ (caddr pf))
+
+(defun |pfFromdomDomain| (pf)
+ (caddr pf))
+
+(defun |pfFromdomWhat| (pf)
+ (cadr pf))
+
+(defun |pfIfCond| (pf)
+ (cadr pf))
+
+(defun |pfIfElse| (pf)
+ (cadddr pf))
+
+(defun |pfIfThen| (pf)
+ (caddr pf))
+
+(defun |pfLambdaArgs| (pf)
+ (cadr pf))
+
+(defun |pfLambdaBody| (pf)
+ (cadddr pf))
+
+(defun |pfLambdaRets| (pf)
+ (caddr pf))
+
+(defun |pfLiteral?| (form)
+ (member (|pfAbSynOp| form)
+  '(|integer| |symbol| |expression| |one| |zero| |char| |string| |float|)))
+
+(defun |pfLocalItems| (pf)
+ (cadr pf))
+
+(defun |pfLoopIterators| (pf)
+ (cadr pf))
+
+(defun |pfMacroLhs| (pf)
+ (cadr pf))
+
+(defun |pfMacroRhs| (pf)
+ (caddr pf))
+
+(defun |pfMLambdaArgs| (pf)
+ (cadr pf))
+
+(defun |pfMLambdaBody| (pf)
+ (caddr pf))
+
+(defun |pfNotArg| (pf)
+ (cadr pf))
+
+(defun |pfNovalueExpr| (pf)
+ (cadr pf))
+
+(defun |pfOrLeft| (pf)
+ (cadr pf))
+
+(defun |pfOrRight| (pf)
+ (caddr pf))
+
+(defun |pfParts| (form)
+ (cdr form))
+
+(defun |pfPile| (part)
+ part)
+
+(defun |pfPretendExpr| (pf)
+ (cadr pf))
+
+(defun |pfPretendType| (pf)
+ (caddr pf))
+
+(defun |pfRestrictExpr| (pf)
+ (cadr pf))
+
+(defun |pfRestrictType| (pf)
+ (caddr pf))
+
+(defun |pfReturnExpr| (pf)
+ (cadr pf))
+
+(defun |pfRuleLhsItems| (pf)
+ (cadr pf))
+
+(defun |pfRuleRhs| (pf)
+ (caddr pf))
+
+(defun |pfSecond| (form)
+ (caddr form))
+
+(defun |pfSequenceArgs| (pf)
+ (cadr pf))
+
+(defun |pfSuchthatCond| (pf)
+ (cadr pf))
+
+(defun |pfTaggedExpr| (pf)
+ (caddr pf))
+
+(defun |pfTaggedTag| (pf)
+ (cadr pf))
+
+(defun |pfTree| (x y)
+ (cons x y))
+
+(defun |pfTypedId| (pf)
+ (cadr pf))
+
+(defun |pfTypedType| (pf)
+ (caddr pf))
+
+(defun |pfTupleParts| (pf)
+ (cadr pf))
+
+(defun |pfWhereContext| (pf)
+ (cadr pf))
+
+(defun |pfWhereExpr| (pf)
+ (caddr pf))
+
+(defun |pfWhileCond| (pf)
+ (cadr pf))
+
+(defun placep (item)
+ (declare (special *read-place-holder*))
+ (eq item *read-place-holder*))
+
+(defun |pmDontQuote?| (sy)
+ (member sy
+  '(+ - * ** ^ / |log| |exp| |pi| |sqrt| |ei| |li| |erf| |ci|
+      |si| |dilog| |sin| |cos| |tan| |cot| |sec| |csc| |asin|
+      |acos| |atan| |acot| |asec| |acsc| |sinh| |cosh| |tanh|
+      |coth| |sech| |csch| |asinh| |acosh| |atanh| |acoth|
+      |asech| |acsc|)))
+
+(defun pname (x)
+  (cond ((symbolp x) (symbol-name x))
+        ((characterp x) (string x))
+        (t nil)))
+
+(defun |poCharPosn| (posn)
+ (cdr posn))
+
+(defun |poGetLineObject| (posn)
+ (car posn))
+
+(defun |poNopos?| (posn)
+ (equal posn (list '|noposition|)))
+
+(defun |poNoPosition| ()
+ (declare (special |$nopos|))
+ |$nopos|)
+
+(defun |poNoPosition?| (pos)
+ (eqcar pos '|noposition|))
+
+(defun |printAsTeX| (x)
+ (declare (special |$texOutputStream|)) 
+ (princ x |$texOutputStream|)) 
+
+(defun PsiAsymptoticOrder (n x nterms)
+  (loop for k from 0 to nterms 
+   sum (/ 1.0 (expt (+ x (float k)) (+ n 1)))))
+
+(defun PsiEps (n x)
+  (if (eql n 0)
+    (- (log x))
+    (/ 1.0 (* (float n) (expt x n)))))
+
+(defun PsiIntpart (x)
+ (if (minusp x)
+  (- (PsiIntpart (- x)))
+  (floor x)))
+
+
+(defun qenum (cvec ind)
+ (char-code (char cvec ind)))
+
+(defun qeset (cvec ind charnum)
+  (setf (char cvec ind) (code-char charnum)))
+
+(defun qsquotient (a b)
+ (the fixnum (truncate (the fixnum a) (the fixnum b))))
+
+(defun qsremainder (a b)
+ (the fixnum (rem (the fixnum a) (the fixnum b))))
+
+(defun quotient2 (x y)
+ (values (truncate x y)))
+
+
+(defun |random| () (random (expt 2 26)))
+
+(defun |rdigit?| (x)
+ (strpos x "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 0 nil))
+
+#+abcl 
+(defun reclaim () "Call the garbage collector" (ext::gc))
+#+:allegro
+(defun reclaim () "Call the garbage collector" (excl::gc t))
+#+:CCL
+(defun reclaim () "Call the garbage collector" (gc))
+#+clisp
+(defun reclaim () 
+ "Call the garbage collector" 
+ (#+lisp=cl ext::gc #-lisp=cl lisp::gc))
+#+(or :cmulisp :cmu)
+(defun reclaim () "Call the garbage collector" (ext:gc))
+#+cormanlisp
+(defun reclaim () "Call the garbage collector" (cl::gc))
+#+(OR IBCL KCL GCL)
+(defun reclaim () "Call the garbage collector" (si::gbc t))
+#+lispworks 
+(defun reclaim () "Call the garbage collector" (hcl::normal-gc))
+#+Lucid
+(defun reclaim () "Call the garbage collector" (lcl::gc))
+#+sbcl
+(defun reclaim () "Call the garbage collector" (sb-ext::gc))
+
+(setf (symbol-function 'remainder2) #'rem)
+
+(defun |remLine| (positionList) (list (ifcar positionList)))
+
+(defun removeOption (op options)
+ (loop for optentry in options 
+  when (not (equal (car optentry) op))
+  collect optentry))
+
+(defun |rep| (c n)
+ (if (< 0 n)
+  (make-string n :initial-element (character c))
+  ""))
+
+(defun |resetStackLimits| () 
+ "Reset the stack limits"
+ (system:reset-stack-limits))
+
+(defun resultp (oneline)
+ (and (>= (length oneline) 3) (string= (subseq oneline 0 3) "--R")))
+
+
+(defun |sameUnionBranch| (uArg m)
+ (let (t1 t2 t3)
+ (cond
+  ((and (consp uArg) 
+        (eq (qcar uArg) '|:|)
+        (progn
+         (setq t1 (qcdr uArg))
+         (and (consp t1)
+              (progn
+               (setq t2 (qcdr t1))
+               (and (consp t2)
+                    (eq (qcdr t2) nil)
+                    (progn (setq t3 (qcar t2)) t))))))
+   (equal t3 m))
+  (t (equal uArg m)))))
+
+(defun |satisfiesUserLevel| (x)
+ (declare (special |$UserLevel|))
+ (cond
+  ((eq x '|interpreter|) t)
+  ((eq |$UserLevel| '|interpreter|) nil)
+  ((eq x '|compiler|) t)
+  ((eq |$UserLevel| '|compiler|) nil)
+  (t t)))
+
+(defun |scanCloser?| (w)
+ (declare (special |scanCloser|))
+ (member (|keyword| w) |scanCloser|))
+
+(defun sec (x) (/ 1 (cos x)))
+
+(defun sech (x) (/ 1 (cosh x)))
+
+(defun |setCurrentLine| (s)
+ (declare (special |$currentLine|))
+ (cond 
+  ((null |$currentLine|) (setq |$currentLine| s))
+  ((and (stringp |$currentLine|) (stringp s))
+    (setq |$currentLine| (list |$currentLine| s)))
+  ((not (consp |$currentLine|)) (setq |$currentLine| (cons |$currentLine| s)))
+  ((stringp s) (rplacd (last |$currentLine|) (cons s nil)))
+  (t (rplacd (last |$currentLine|) s)))
+ |$currentLine|)
+
+(defun set-restart-hook ()
+  "Set the restart hook"
+  #+KCL (setq system::*top-level-hook* 'restart)
+  #+Lucid (setq boot::restart-hook 'restart)
+  'restart
+ )
+
+(defun |showMsgPos?| (msg)
+ (declare (special |$erMsgToss|))
+ (or |$erMsgToss| (and (null (|msgImPr?| msg)) (null (|leader?| msg)))))
+
+(defun smallEnoughCount (x n m)
+ (cond
+  ((null (< n m)) n)
+  ((simple-vector-p x)
+   (loop for i from 0 to (1- (length x)) while (< n m)
+      do (setq n (smallEnoughCount (elt x i) (+ n 1) m)))
+   n)
+  ((atom x) n)
+  (t
+   (setq n (smallEnoughCount (car x) (+ n 1) m))
+   (if (null (< n m)) n (smallEnoughCount (cdr x) n m)))))
+
+(defun |startsComment?| ()
+ (let (www)
+ (declare (special |$ln| |$sz| |$n|))
+  (cond
+   ((< |$n| |$sz|)
+    (cond
+     ((= (char-code (char |$ln| |$n|)) (char-code #\+))
+       (setq www (+ |$n| 1))
+       (cond
+        ((not (< www |$sz|)) nil)
+        (t (= (char-code (char |$ln| www)) (char-code #\+)))))
+     (t nil)))
+   (t nil))))
+
+(defun s-to-c (c)
+ (complex (car c) (cdr c)))
+
+(defun |StreamNull| (delay)
+ (let (parsepair)
+  (cond
+   ((or (null delay) (eqcar delay '|nullstream|)) t)
+   (t
+    ((lambda nil
+     (loop
+      (cond
+       ((not (eqcar delay '|nonnullstream|)) (return nil))
+       (t
+        (setq parsepair (apply (cadr delay) (cddr delay)))
+        (rplaca delay (car parsepair))
+        (rplacd delay (cdr parsepair)))))))
+      (eqcar delay '|nullstream|)))))
+
+(defun |stringize| (s)
+  (if (stringp s) s (princ-to-string s)))
+
+(defun |stringPrefix?| (pref str)
+ (let (lp)
+  (cond
+   ((null (and (stringp pref) (stringp str))) nil)
+   ((eql (setq lp (length pref)) 0) t)
+   ((> lp (length str)) nil)
+   (t (every #'char= pref str)))))
+
+(defun |stripLisp| (str)
+ (if (string= (subseq str 0 4) "lisp")
+  (subseq str 4)
+  str))
+
+(defun |stripSpaces| (str)
+ (string-trim '(#\space) str))
+
+(defun substring (cvec start length)
+  (if length 
+   (subseq (string cvec) start (+ start length))
+   (subseq (string cvec) start)))
+
+
+(defun |theid| (a) (list #'identity a))
+
+(defun |thefname| (x) (list #'|pfname| x))
+
+(defun |theorigin| (x) (list #'|porigin| x))
+
+(defun |tokPart| (x) (cdr x))
+
+(defun |To| (pos) (list 'to pos))
+
+(defun |Top?| (|st|)
+ "used in incLude1 for parsing"
+ (eql (quotient |st| 10) 0))
+
+(defun |trademark| ()
+ (format t "The term Axiom, in the field of computer algebra software, ~%")
+ (format t "along with AXIOM and associated images are common-law ~%")
+ (format t "trademarks. While the software license allows copies, the ~%")
+ (format t "trademarks may only be used when referring to this project ~%"))
+
+
+(defun /untrace-reduce (x)
+ (if (atom x) x (first x))) 
+
+
+(defun vec2list (vec)
+ (coerce vec 'list))
+
+(defun vmread (&optional (st *standard-input*) (eofval *read-place-holder*))
+  (read st nil eofval))
+
+
+(defun |zeroOneTran| (sex)
+ (nsubst '|$EmptyMode| '? sex))
+
+
+;;; above level 0
+
+(defun |abbQuery| (x)
+ (let (abb)
+  (cond
+   ((setq abb (getdatabase x 'abbreviation))
+    (|sayKeyedMsg| "%1 abbreviates %2 %3"
+     (list abb (getdatabase x 'constructorkind) x)))
+   ((setq abb (getdatabase x 'constructor))
+    (|sayKeyedMsg| "%1 abbreviates %2 %3"
+      (list x (getdatabase abb 'constructorkind) abb)))
+   (t
+     (|sayKeyedMsg|
+      "%1 is neither a constructor name nor a constructor abbreviation."
+      (list x))))))
+
+(defun |abbreviations| (l)
+ (|abbreviationsSpad2Cmd| l)) 
+
+(defun |abbreviationsSpad2Cmd| (arg)
+ (let (abopts quiet opt key type constructor t2 a b al)
+  (declare (special |$options|))
+  (if (null arg) 
+   (|helpSpad2Cmd| '(|abbreviations|))
+   (progn
+    (setq abopts '(|query| |domain| |category| |package| |remove|))
+    (setq quiet nil)
+    (do ((t0 |$options| (cdr t0)) (t1 nil))
+        ((or (atom t0) 
+             (progn (setq t1 (car t0)) nil)
+             (progn (progn (setq opt (car t1)) t1) nil))
+          nil)
+      (setq opt (|selectOptionLC| opt '(|quiet|) '|optionError|))
+      (when (eq opt '|quiet|) (setq quiet t)))
+    (when
+     (and (consp arg) 
+           (progn 
+            (setq opt (qcar arg))
+            (setq al (qcdr arg))
+            t))
+       (setq key (|opOf| (car al)))
+       (setq type (|selectOptionLC| opt abopts '|optionError|))
+       (cond
+        ((eq type '|query|)
+         (cond 
+          ((null al) (|listConstructorAbbreviations|))
+          ((setq constructor (|abbreviation?| key))
+            (|abbQuery| constructor))
+          (t (|abbQuery| key))))
+        ((eq type '|remove|)
+         (deldatabase key 'abbreviation))
+        ((oddp (size al))
+         (|sayKeyedMsg| 
+          (format nil 
+           "%1 must be followed by an alternating list of abbreviation(s) ~
+            and name(s). Issue )abbrev ? for more information.")
+          (list type)))
+        (t
+         (do () (nil nil)
+          (seq 
+           (exit 
+            (cond
+             ((null al) (return '|fromLoop|))
+             (t
+               (setq t2 al)
+               (setq a (car t2))
+               (setq b (cadr t2))
+               (setq al (cddr t2))
+               (|mkUserConstructorAbbreviation| b a type)
+               (setdatabase b 'abbreviation a)
+               (setdatabase b 'constructorkind type))))))
+         (unless quiet
+           (|sayKeyedMsg| "%1 abbreviates % %2 %3 %"
+            (list a type (|opOf| b)))))))))))
+
+(defun |absolutelyCanCoerceByCheating| (t1 t2)
+ (let (let1 let2)
+  (declare (special |$Integer| |$SingleInteger|))
+  (cond
+   ((|isEqualOrSubDomain| t1 t2) t)
+   ((and (equal t1 |$SingleInteger|) (equal t2 |$Integer|)) t)
+   ((or (atom t1) (atom t2)) nil)
+   (t
+    (setq let1 (|deconstructT| t1))
+    (setq let2 (|deconstructT| t2))
+    (cond
+     ((and (equal (car let1) '(|Stream|))
+           (equal (car let2) '(|InfiniteTuple|)))
+       (cond
+        ((nequal (|#| (cdr let1)) (|#| (cdr let2))) nil)
+        (t
+         (every #'identity 
+          (loop for x1 in (cdr let1) for x2 in (cdr let2) collect
+           (|absolutelyCanCoerceByCheating| x1 x2))))))
+     ((nequal (car let1) (car let2)) nil)
+     ((nequal (|#| (cdr let1)) (|#| (cdr let2))) nil)
+     (t
+      (every #'identity 
+       (loop for x1 in (cdr let1) for x2 in (cdr let2) collect
+        (|absolutelyCanCoerceByCheating| x1 x2)))))))))
+
+(defun |addBinding| (var proplist e)
+ (let (tailContour tailEnv tmp1 curContour lx)
+ (declare (special |$InteractiveMode| |$envHashTable|))
+  (setq curContour (caar e))
+  (setq tailContour (cdar e))
+  (setq tailEnv (cdr e))
+  (cond
+   ((eq proplist (|getProplist| var e)) e)
+   (t
+    (when |$envHashTable|
+      (do ((prop proplist (cdr prop)) (u nil))
+          ((or (atom prop)
+               (progn (setq u (car prop)) nil))
+            nil)
+        (hput |$envHashTable| (list var (car u)) t)))
+    (cond
+     (|$InteractiveMode| (|addBindingInteractive| var proplist e))
+     (t
+      (when (and (consp curContour)
+                 (progn
+                  (setq tmp1 (qcar curContour))
+                  (and (consp tmp1) (equal (qcar tmp1) var))))
+        (setq curContour (cdr curContour)))
+      (setq lx (cons var proplist))
+      (cons (cons (cons lx curContour) tailContour) tailEnv)))))))
+
+(defun |addBindingInteractive| (var proplist e)
+ (let ((curContour (caar e)) u)
+  (cond
+   ((setq u (assq var curContour)) (rplacd u proplist) e)
+   (t (rplac (caar e) (cons (cons var proplist) curContour)) e))))
+
+(defun |addInputLibrary| (lib)
+ "Add the input library to the list"
+ (declare (special input-libraries))
+  (|dropInputLibrary| lib)
+  (push (truename lib) input-libraries))
+
+(defun |addNewInterpreterFrame| (name)
+ "Add a New Interpreter Frame"
+ (declare (special |$interpreterFrameRing|))
+ (if (null name)
+   (|throwKeyedMsg| "You must provide a name for the new frame." nil)
+   (progn
+     (|updateCurrentInterpreterFrame|)
+     (dolist (f |$interpreterFrameRing|)
+       (when (eq name (frameName f)) ; existing frame with same name
+         (|throwKeyedMsg| 
+          (format nil
+            " You cannot use the name %1 for a new frame because an existing ~
+              frame already has that name.")
+          (list name))))
+     (|initHistList|)
+     (setq |$interpreterFrameRing|
+       (cons (|emptyInterpreterFrame| name) |$interpreterFrameRing|))
+     (|updateFromCurrentInterpreterFrame|)
+     ($erase (|histFileName|)))))
+
+(defun addoperations (constructor oldmaps)
+ "add ops from a )library domain to *operation-hash*"
+ (declare (special *operation-hash*))
+ (dolist (map oldmaps) ; out with the old
+  (let (oldop op)
+   (setq op (car map))
+   (setq oldop (getdatabase op 'operation))
+   (setq oldop (lisp::delete (cdr map) oldop :test #'equal))
+   (setf (gethash op *operation-hash*) oldop)))
+ (dolist (map (getdatabase constructor 'modemaps)) ; in with the new
+  (let (op newmap)
+   (setq op (car map))
+   (setq newmap (getdatabase op 'operation))
+   (setf (gethash op *operation-hash*) (cons (cdr map) newmap)))))
+
+(defun |addTraceItem| (|d|)
+ (declare (special |$constructors| |$domains| |$packages|))
+ (cond
+  ((|constructor?| |d|)
+    (setq |$constructors| (cons |d| |$constructors|)))
+  ((|isDomainOrPackage| |d|)
+    (setq |$packages| (cons (|devaluate| |d|) |$packages|))))) 
+
+(defun |algCoerceInteractive| (p source target)
+ (let (|$useConvertForCoercions| u)
+ (declare (special |$useConvertForCoercions|))
+  (setq |$useConvertForCoercions| t)
+  (setq source (|devaluate| source))
+  (setq target (|devaluate| target))
+  (setq u (|coerceInteractive| (mkObjWrap p source) target))
+  (if u
+   (|objValUnwrap| u)
+   (|error| (list "can't convert" p "of mode" source "to mode" target)))))
+
+(defun |algEqual| (object1 object2 domain)
+ (declare (special |$Boolean|))
+ (spadcall object1 object2 
+  (|compiledLookupCheck| '= (list |$Boolean| '$ '$) (|evalDomain| domain))))
+
+(defun |allConstructors| ()
+ (declare (special *allconstructors*))
+ *allconstructors*)
+
+(defun |allOperations| ()
+ (declare (special *allOperations* *operation-hash*))
+ (unless *allOperations*
+  (maphash #'(lambda (k v) (declare (ignore v)) (push k *allOperations*))
+    *operation-hash*))
+ *allOperations*)
+
+(defun |alqlGetOrigin| (x)
+ (let (field k)
+  (setq field (|dbPart| x 5 1))
+  (setq k (|charPosition| #\( field 2))
+  (substring field 1 (1- k))))
+
+(defun |alqlGetParams| (x)
+ (let (field k)
+  (setq field (|dbPart| x 5 1))
+  (setq k (|charPosition| #\( field 2))
+  (substring field k nil)))
+
+(defun |alqlGetKindString| (x)
+ (if (or (char= (elt x 0) #\a) (char= (elt x 0) #\o))
+  (substring (|dbPart| x 5 1) 0 1)
+  (substring x 0 1)))
+
+(defun |alreadyOpened?| (msg) (null (|msgImPr?| msg)))
+
+(defun |apropos| (arg)
+ "Display all operation names containing the fragment"
+ (prog (ops)
+  (return
+   (seq
+    (progn
+     (setq ops
+      (cond 
+       ((null arg) (|allOperations|))
+       (t
+         (|filterListOfStrings|
+          (prog (t0)
+           (setq t0 nil)
+           (return
+            (do ((t1 arg (cdr t1)) (p nil))
+                ((or (atom t1) (progn (setq p (car t1)) nil))
+                  (nreverse0 t0))
+            (seq (exit (setq t0 (cons (downcase (princ-to-string p)) t0)))))))
+          (|allOperations|)))))
+     (cond
+      (ops
+       (|sayMessage| "Operations whose names satisfy the above pattern(s):")
+       (|sayAsManyPerLineAsPossible| (msort ops))
+       (|sayKeyedMsg| 
+        (format nil
+         "%l To get more information about an operation such as %1, issue ~
+         the command )display op %1")
+         (cons (car ops) nil)))
+      (t
+       (|sayMessage| "   There are no operations containing those patterns")
+       nil))))))) 
+
+(defun |assertCond| (s info)
+ (let (word)
+ (declare (special |$inclAssertions| *whitespace*))
+  (setq word 
+   (|MakeSymbol| (string-trim *whitespace* (|incCommandTail| s info))))
+  (unless (member word |$inclAssertions|)
+    (setq |$inclAssertions| (cons word |$inclAssertions|)))))
+
+(defun |augmentHasArgs| (alist conform)
+ (let (conname args n name p result pred)
+  (setq conname (|opOf| conform))
+  (setq args (ifcdr conform))
+  (cond 
+   (args
+    (setq n (|#| args))
+    (dolist (item alist (nreverse0 result))
+     (setq name (car item))
+     (setq p (cdr item))
+     (setq pred
+      (if (consp (|extractHasArgs| p))
+       p
+       (|quickAnd| p
+        (cons '|hasArgs| 
+         (take n (ifcdr (|getConstructorForm| (|opOf| name))))))))
+     (setq result (cons (cons name pred) result))))
+  (t alist))))
+
+(defun augmentTraceNames (arg)
+ (let (mml res)
+ (declare (special |$InteractiveFrame|))
+ (loop for traceName in arg do
+  (if (setq mml (|get| tracename '|localModemap| |$InteractiveFrame|))
+   (setq res (append (loop for mm in mml collect (cadr mm)))) res)
+   (setq res (cons tracename res)))
+ res))
+
+
+(defun |basicLookup| (op sig domain dollar)
+ (let (hashPercent box dispatch lookupFun hashSig val boxval)
+ (declare (special |$hashSeg| |$hashOpSet| |$hashOpApply| |$hashOp0|
+                   |$hashOp1|))
+  (cond
+   ((simple-vector-p domain)
+    (if (|isNewWorldDomain| domain)
+      (|oldCompLookup| op sig domain dollar)
+      (|lookupInDomainVector| op sig domain dollar)))
+  (t
+   (setq hashPercent
+    (if (simple-vector-p dollar)
+     (|hashType| (elt dollar 0) 0)
+     (|hashType| dollar 0)))
+   (setq box (cons nil nil))
+   (cond
+    ((null (simple-vector-p (setq dispatch (car domain))))
+      (|error| '|bad domain format|))
+    (t 
+      (setq lookupFun (elt dispatch 3))
+      (cond
+        ((eql (elt dispatch 0) 0)
+          (setq hashSig
+           (cond
+            ((|hashCode?| sig) sig)
+            ((|opIsHasCat| op) (|hashType| sig hashPercent))
+            (t (|hashType| (cons '|Mapping| sig) hashPercent))))
+          (when (symbolp op)
+           (cond
+             ((eq op '|Zero|)   (setq op |$hashOp0|))
+             ((eq op '|One|)    (setq op |$hashOp1|))
+             ((eq op '|elt|)    (setq op |$hashOpApply|))
+             ((eq op '|setelt|) (setq op |$hashOpSet|))
+             (t                 (setq op (|hashString| (symbol-name op))))))
+          (cond
+           ((setq val
+              (car
+                (spadcall (cdr domain) dollar op hashSig box nil lookupFun)))
+             val)
+           ((|hashCode?| sig) nil)
+           ((or (> (|#| sig) 1) (|opIsHasCat| op)) nil)
+           ((setq boxval
+            (spadcall (cdr dollar) dollar op
+                      (|hashType| (car sig) hashPercent)
+                      box nil lookupFun))
+             (cons #'identity (car boxval)))
+           (t nil)))
+        ((|opIsHasCat| op) (|HasCategory| domain sig))
+        (t
+         (when (|hashCode?| op)
+          (cond
+           ((eql op |$hashOp1|)     (setq op '|One|))
+           ((eql op |$hashOp0|)     (setq op '|Zero|))
+           ((eql op |$hashOpApply|) (setq op '|elt|))
+           ((eql op |$hashOpSet|)   (setq op '|setelt|))
+           ((eql op |$hashSeg|)     (setq op 'segment))))
+         (cond
+          ((and (|hashCode?| sig) (eql sig hashPercent))
+            (spadcall
+             (car (spadcall (cdr dollar) dollar op '($) box nil lookupFun))))
+          (t
+           (car 
+            (spadcall (cdr dollar) dollar op sig box nil lookupFun))))))))))))
+
+(defun |basicLookupCheckDefaults| (op sig domain dollar)
+ (declare (ignore domain))
+ (let (box dispatch lookupFun hashPercent hashSig)
+ (declare (special |$lookupDefaults|))
+  (setq box (cons nil nil))
+  (cond
+   ((null (simple-vector-p (setq dispatch (car dollar))))
+     (|error| '|bad domain format|))
+   (t
+     (setq lookupFun (elt dispatch 3))
+     (cond
+      ((eql (elt dispatch 0) 0)
+        (setq hashPercent
+         (if (simple-vector-p dollar)
+           (|hashType| (elt dollar 0) 0)
+           (|hashType| dollar 0)))
+        (setq hashSig
+         (if (|hashCode?| sig) 
+          sig
+          (|hashType| (cons '|Mapping| sig) hashPercent)))
+        (when (symbolp op) (setq op (|hashString| (symbol-name op))))
+        (car (spadcall (cdr dollar) dollar op hashSig
+                        box (null |$lookupDefaults|) lookupFun)))
+      (t
+        (car (spadcall (cdr dollar) dollar op sig box
+                       (null |$lookupDefaults|) lookupFun))))))))
+
+(defun |bcComplexLimit| (a b)
+ (declare (special |$EmptyMode|) (ignore a b))
+ (|htInitPage| "Complex Limit Basic Command" nil)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| S (|String|)) (|isDomain| F (|Float|))
+        (|isDomain| SY (|Symbol|)))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em function} you want to compute the limit of:")
+    (|text| . "\\newline\\tab{2} ")
+    (|bcStrings| (40 "sin(a*x)/tan(b*x)" |expression| EM))
+    (|text| . "\\blankline ") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the name of the {\\em variable}: ")
+    (|text| . "\\tab{37}") (|bcStrings| (5 |x| |variable| SY))
+    (|text| . "\\blankline ") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Compute the limit at")
+    (|radioButtons| |location|
+      ("A finite point:"
+         ((|text| . "\\newline\\space{0}Real part:\\space{3}")
+          (|bcStrings| (20 0 |real| F))
+          (|text| . "\\newline Complex part:")
+          (|bcStrings| (20 0 |complex| F)))
+         |finitePoint|)
+      ("Complex infinity" "" |complexInfinity|))
+    (|doneButton| "Continue" |bcComplexLimitGen|)))
+ (|htShowPage|))
+
+(defun |bcComplexLimitGen| (htPage)
+ (let (fun var p real comp complexPart loc varPart)
+  (setq fun (|htpLabelInputString| htPage '|expression|))
+  (setq var (|htpLabelInputString| htPage '|variable|))
+  (setq loc
+   (cond
+    ((eq (setq p (|htpButtonValue| htPage '|location|)) '|finitePoint|)
+      (setq real (|htpLabelInputString| htPage '|real|))
+      (setq comp (|htpLabelInputString| htPage '|complex|))
+      (setq complexPart
+        (cond
+          ((string= comp "0") "")
+          ((string= comp "1") "%i")
+          (t (concat comp "*%i"))))
+      (cond
+       ((string= real "0") (if (string= complexPart "") '|0| complexPart))
+       ((string= complexPart "") real)
+       (t (concat real " + " complexPart))))
+    (t "%infinity")))
+  (setq varPart (concat var " = " loc))
+  (|bcFinish| "complexLimit" fun varPart)))
+
+(defun |bcCreateVariableString| (i)
+  (format nil "x~a" i))
+
+(defun |bcDefiniteIntegrate| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| '|Definite Integration Basic Command| NIL)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| S (|String|)) (|isDomain| SY (|Symbol|)))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em function} you would like to integrate:")
+    (|text| . "\\newline\\tab{2} ")
+    (|bcStrings| (45 "1/(x**2 + 6)" |integrand| EM))
+    (|text| . "\\blankline") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em variable of integration}:")
+    (|text| . "\\tab{37}") (|bcStrings| (10 |x| |symbol| SY))
+    (|text| . "\\blankline") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "\\newline Enter {\\em lower limit}:")
+    (|radioButtons| |fromButton|
+      ("" "Minus infinity" |minusInfinity|)
+      (""
+         ((|text| . "A finite point:\\tab{15}")
+          (|bcStrings| (10 0 |from| EM . |bcOptional|)))
+         |fromPoint|))
+    (|text| . "\\blankline") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "\\indent{2}\\newline Enter {\\em upper limit}:")
+    (|radioButtons| |toButton|
+        ("" "Plus infinity" |plusInfinity|)
+        (""
+         ((|text| "A finite point:\\tab{15}")
+          (|bcStrings| (10 |y| |to| EM . |bcOptional|)))
+         |toPoint|))
+     (|doneButton| "Continue" |bcDefiniteIntegrateGen|)))
+ (|htShowPage|))
+
+(defun |bcDefiniteIntegrateGen| (htPage)
+ (let (integrand var lowerLimit upperLimit varpart)
+  (setq integrand (|htpLabelInputString| htPage '|integrand|))
+  (setq var (|htpLabelInputString| htPage '|symbol|))
+  (setq lowerLimit
+   (if (eq (|htpButtonValue| htPage '|fromButton|) '|fromPoint|)
+    (|htpLabelInputString| htPage '|from|)
+    "%minusInfinity"))
+  (setq upperLimit
+   (if (eq (|htpButtonValue| htPage '|toButton|) '|toPoint|)
+    (|htpLabelInputString| htPage '|to|)
+    "%plusInfinity"))
+  (setq varpart (concat var " = " lowerLimit ".." upperLimit))
+  (|bcGen| (concat "integrate(" integrand "," varpart ")"))))
+
+(defun |bcDifferentiate| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| '|Differentiate Basic Command| nil)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| S (|String|)) (|isDomain| SY (|Symbol|)))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em function} you want to differentiate:")
+    (|text| . "\\newline\\tab{2} ")
+    (|bcStrings| (55 "sin(x*y)" |diffand| EM))
+    (|text| . "\\blankline") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| .
+"\\newline List the {\\em variables} you want to differentiate with respect to?")
+    (|text| . "\\newline\\tab{2} ")
+    (|bcStrings| (55 "x y" |variables| S . |quoteString|))
+    (|text| . "\\blankline") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| .
+"\\newline List the number of {\\em times} you want to differentiate with respect to each variable (leave blank if once for each)")
+    (|text| . "\\newline\\tab{2} ")
+    (|bcStrings| (55 "1 2" |times| S . |quoteString|))))
+ (|htMakeDoneButton| "Continue" '|bcDifferentiateGen|)
+ (|htShowPage|))
+
+(defun |bcDifferentiateGen| (htPage)
+ (let (mand varlist indexList varpart indexpart lastPart)
+  (setq mand (|htpLabelInputString| htPage '|diffand|))
+  (setq varlist
+    (|bcString2WordList| (|htpLabelInputString| htPage '|variables|)))
+  (setq indexList
+    (|bcString2WordList| (|htpLabelInputString| htPage '|times|)))
+  (setq varpart
+    (if (> (|#| varlist) 1)
+      (|bcwords2liststring| varlist)
+      (car varlist)))
+  (setq indexpart
+   (cond
+     ((null indexList) nil)
+     ((null (cdr indexList)) (car indexList))
+     ((= (|#| indexList) (|#| varlist)) (|bcwords2liststring| indexList))
+     (t (|bcError|
+"You must say how many times you want to differentiate with respect to each variable---or leave that entry blank"))))
+  (setq lastPart (if indexpart (concat "," indexpart ")") ")"))
+  (|bcGen| (concat "differentiate(" mand "," varpart lastPart))))
+
+(defun |bcDraw| ()
+ (|htInitPage| "Draw Basic Command" NIL)
+ (|bcHt| "What would you like to draw?")
+ (|bcHt| "\\newline\\centerline{{\\em Two Dimensional Plots}}\\newline")
+ (|bcHt| "\\lispdownlink{A function of one variable}{(|bcDraw2Dfun|)}")
+ (|bcHt| "\\space{2}y = f(x)\\newline")
+ (|bcHt| "\\lispdownlink{A parametrically defined curve}{(|bcDraw2Dpar|)}")
+ (|bcHt| "\\space{2}(x(t), y(t))\\newline")
+ (|bcHt| 
+  "\\lispdownlink{A solution to a polynomial equation}{(|bcDraw2DSolve|)}")
+ (|bcHt| "\\space{2} p(x,y) = 0\\newline")
+ (|bcHt| "\\vspace{1}\\newline ")
+ (|bcHt| "\\centerline{{\\em Three Dimensional Surfaces}}\\newline\\newline")
+ (|bcHt| "\\lispdownlink{A function of two variables}{(|bcDraw3Dfun|)}")
+ (|bcHt| "\\space{2} z = f(x,y)\\newline")
+ (|bcHt| "\\lispdownlink{A parametrically defined tube}{(|bcDraw3Dpar|)}")
+ (|bcHt| "\\space{2}(x(t), y(t), z(t))\\newline")
+ (|bcHt| "\\lispdownlink{A parameterically defined surface}{(|bcDraw3Dpar1|)}")
+ (|bcHt| "\\space{2}(x(u,v), y(u,v), z(u,v))\\newline")
+ (|htShowPage|))
+
+(defun |bcDrawIt| (ind a b)
+  (concat ind "=" a ".." b))
+
+(defun |bcDrawIt2| (ind a b)
+ (concat "{}" ind "=" a "{}.." b "{}"))
+
+(defun |bcDraw2Dfun| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Draw Basic Command" NIL)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+         (|isDomain| F (|Float|)) (|isDomain| SY (|Symbol|)))
+     (|text| "\\centerline{Drawing {\\em y = f(x)}}\\newline "
+        "\\centerline{where {\\em y} is the dependent variable and}\\newline "
+"\\centerline{where {\\em x} is the independent variable}\\vspace{1}\\newline "
+"\\menuitemstyle{}\\tab{2}What {\\em function} f would you like to draw?\\newline\\tab{2}")
+     (|bcStrings| (55 "x*cos(x)" |function| EM))
+     (|text| .
+"\\vspace{1}\\newline\\menuitemstyle{}\\tab{2}Enter {\\em dependent} variable:")
+     (|bcStrings| (6 |y| |dependent| SY))
+     (|text| . "\\newline\\vspace{1}\\newline ")
+     (|text| . 
+"\\menuitemstyle{}\\tab{2}Enter {\\em independent} variable and {\\em range}:\\newline\\tab{2} ")
+     (|text| . "{\\em Variable:}") (|bcStrings| (6 |x| |ind| SY))
+     (|text| . "ranges {\\em from:}")
+     (|bcStrings| (9 0 |from1| F)) (|text| . "{\\em to:}")
+     (|bcStrings| (9 30 |to1| F))
+     (|text| "\\indent{0}\\vspace{1}\\newline\\menuitemstyle{}\\tab{2} "
+             "Optionally enter a {\\em title} for your curve:")
+     (|bcStrings| (15 "y = x*cos(x)" |title| S))
+     (|text| . "\\indent{0}")
+     (|doneButton| "Continue" |bcDraw2DfunGen|) (|text| . "{}")))
+ (|htShowPage|))
+
+(defun |bcDraw2DfunGen| (htPage)
+ (let (fun dep ind from1 to1 title titlePart)
+  (setq fun   (|htpLabelInputString| htPage '|function|))
+  (setq dep   (|htpLabelInputString| htPage '|dependent|))
+  (setq ind   (|htpLabelInputString| htPage '|ind|))
+  (setq from1 (|htpLabelInputString| htPage '|from1|))
+  (setq to1   (|htpLabelInputString| htPage '|to1|))
+  (setq title (|htpLabelInputString| htPage '|title|))
+  (cond
+   ((not (string-equal title ""))
+     (setq titlePart (concat "{}" "title ==\"" title "\""))
+     (|bcFinish| "draw" fun (|bcDrawIt2| ind from1 to1) titlePart))
+   (t
+     (|bcFinish| "draw" fun (|bcDrawIt2| ind from1 to1))))))
+
+(defun |bcDraw2Dpar| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Draw Basic Command" NIL)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| F (|Float|)) (|isDomain| SY (|Symbol|)))
+    (|text| "\\centerline{Drawing a parametrically defined curve:}\\newline "
+            "\\centerline{{\\em ( f1(t), f2(t) )}}\\newline "
+            "\\centerline{in terms of two functions {\\em f1} and {\\em f2}}"
+       "\\centerline{and an independent variable {\\em t}}\\vspace{1}\\newline"
+            "\\menuitemstyle{}\\tab{2}Enter the two {\\em functions:}")
+    (|text| . "\\newline\\tab{2}{\\em Function 1:}")
+    (|bcStrings| (44 "-9*sin(4*t/5)" |function1| EM))
+    (|text| . "\\newline\\tab{2}{\\em Function 2:}")
+    (|bcStrings| (44 "8*sin(t)" |function2| EM))
+    (|text| . 
+"\\vspace{1}\\newline\\menuitemstyle{}\\tab{2}Enter {\\em independent} variable and range:\\newline\\tab{2} ")
+    (|text| . "{\\em Variable:}") (|bcStrings| (6 |t| |ind| SY))
+    (|text| . "ranges {\\em from:}")
+    (|bcStrings| (9 "-5*\\%pi" |from1| F))
+    (|text| . "{\\em to:}") (|bcStrings| (9 "5*\\%pi" |to1| F))
+    (|text| "\\vspace{1}\\newline\\menuitemstyle{}\\tab{2}"
+            "Optionally enter a {\\em title} for your curve:")
+    (|bcStrings| (15 "Lissajous" |title| S))
+    (|text| . "\\indent{0}")
+    (|doneButton| "Continue" |bcDraw2DparGen|)))
+ (|htShowPage|))
+
+(defun |bcDraw2DparGen| (htPage)
+ (let (fun1 fun2 ind from1 to1 title curvePart titlePart)
+  (setq fun1  (|htpLabelInputString| htPage '|function1|))
+  (setq fun2  (|htpLabelInputString| htPage '|function2|))
+  (setq ind   (|htpLabelInputString| htPage '|ind|))
+  (setq from1 (|htpLabelInputString| htPage '|from1|))
+  (setq to1   (|htpLabelInputString| htPage '|to1|))
+  (setq title (|htpLabelInputString| htPage '|title|))
+  (setq curvePart (concat "curve(" "{}" fun1 ",{}" fun2 ")"))
+  (cond
+   ((not (string-equal title ""))
+     (setq titlePart (concat "{}" "title ==\"" title "\""))
+     (|bcFinish| "draw" curvePart (|bcDrawIt2| ind from1 to1) titlePart))
+    (t
+     (|bcFinish| "draw" curvePart (|bcDrawIt2| ind from1 to1))))))
+
+(defun |bcDraw2DSolve| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Draw Basic Command" nil)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| F (|Float|)) (|isDomain| SY (|Symbol|)))
+    (|text| "\\centerline{Plotting the solution to {\\em p(x,y) = 0}, where} "
+"\\centerline{{\\em p} is a polynomial in two variables {\\em x} and {\\em y}}"
+"\\vspace{1}\\newline\\menuitemstyle{}\\tab{2}Enter the {\\em polynomial} p:"
+            "\\newline\\tab{2}")
+    (|bcStrings| (40 "y**2+7*x*y-(x**3+16*x)" |function| EM))
+    (|text| .
+    "\\vspace{1}\\newline\\menuitemstyle{}\\tab{2}Enter the {\\em variables}:")
+    (|text| . "\\newline\\tab{2}{\\em Variable 1:} ")
+    (|bcStrings| (4 |x| |independent1| SY))
+    (|text| . "ranges {\\em from:}")
+    (|bcStrings| (9 -15 |from1| F)) (|text| . "{\\em to:}")
+    (|bcStrings| (9 10 |to1| F))
+    (|text| . "\\newline\\tab{2}{\\em Variable 2:} ")
+    (|bcStrings| (4 |y| |independent2| SY))
+    (|text| . "ranges {\\em from:}")
+    (|bcStrings| (9 -10 |from2| F)) (|text| . "{\\em to:}")
+    (|bcStrings| (9 50 |to2| F))
+    (|text| "\\indent{0}\\vspace{1}\\newline\\menuitemstyle{}\\tab{2} "
+            "Optionally enter a {\\em title} for your curve:")
+    (|bcStrings| (15 "" |title| S)) (|text| . "\\indent{0}")))
+ (|htMakeDoneButton| "Continue" '|bcDraw2DSolveGen|)
+ (|htShowPage|))
+
+(defun |bcDraw2DSolveGen| (htPage)
+ (let (fun ind1 from1 to1 ind2 from2 to2 title clipPart titlePart)
+  (setq fun   (|htpLabelInputString| htPage '|function|))
+  (setq ind1  (|htpLabelInputString| htPage '|independent1|))
+  (setq from1 (|htpLabelInputString| htPage '|from1|))
+  (setq to1   (|htpLabelInputString| htPage '|to1|))
+  (setq ind2  (|htpLabelInputString| htPage '|independent2|))
+  (setq from2 (|htpLabelInputString| htPage '|from2|))
+  (setq to2   (|htpLabelInputString| htPage '|to2|))
+  (setq title (|htpLabelInputString| htPage '|title|))
+  (setq clipPart (concat "{}" "range==[{}"
+                     from1 ".." to1 '|,{}|
+                     from2 ".." to2 "]"))
+  (cond
+   ((not (string-equal title ""))
+    (setq titlePart (concat "{}" "title ==\"" title "\""))
+    (|bcFinish| "draw" (concat fun " = 0 ") ind1 ind2 clipPart titlePart))
+   (t
+     (|bcFinish| "draw" (concat fun " = 0 ") ind1 ind2 clipPart)))))
+
+(defun |bcDraw3Dfun| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Three Dimensional Draw Basic Command" nil)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| F (|Float|)) (|isDomain| SY (|Symbol|)))
+    (|text| "\\centerline{Drawing {\\em z = f(x,y)}}\\newline "
+        "\\centerline{where {\\em z} is the dependent variable and}\\newline "
+"\\centerline{where {\\em x, y} are the independent variables}\\vspace{1}\\newline\\menuitemstyle{}\\tab{2} "
+        "What {\\em function} f which you like to draw?\\newline\\tab{2}")
+    (|bcStrings| (55 "exp(cos(x-y)-sin(x*y))-2" |function| EM))
+    (|text| . 
+       "\\newline\\menuitemstyle{}\\tab{2}Enter {\\em dependent} variable:")
+    (|bcStrings| (6 |z| |dependent| SY))
+    (|text| "\\vspace{1}\\newline\\menuitemstyle{}\\tab{2}"
+            "Enter {\\em independent} variables and ranges:\\newline\\tab{2} "
+            "{\\em Variable:}")
+    (|bcStrings| (6 |x| |independent1| SY))
+    (|text| . "ranges {\\em from:}")
+    (|bcStrings| (9 -5 |from1| F)) (|text| . "{\\em to:}")
+    (|bcStrings| (9 5 |to1| F))
+    (|text| . "\\newline\\tab{2}{\\em Variable:}")
+    (|bcStrings| (6 |y| |independent2| SY))
+    (|text| . "ranges {\\em from:}")
+    (|bcStrings| (9 -5 |from2| F)) (|text| . "{\\em to:}")
+    (|bcStrings| (9 5 |to2| F))
+    (|text| "\\indent{0}\\vspace{1}\\newline\\menuitemstyle{}\\tab{2} "
+            "Optionally enter a {\\em title} for your surface:")
+    (|bcStrings| (15 "" |title| S)) (|text| . "\\indent{0}")
+    (|doneButton| "Continue" |bcDraw3DfunGen|)))
+ (|htShowPage|))
+
+(defun |bcDraw3DfunGen| (htPage)
+ (let (fun dep ind1 from1 to1 ind2 from2 to2 title titlePart)
+  (setq fun   (|htpLabelInputString| htPage '|function|))
+  (setq dep   (|htpLabelInputString| htPage '|dependent|))
+  (setq ind1  (|htpLabelInputString| htPage '|independent1|))
+  (setq from1 (|htpLabelInputString| htPage '|from1|))
+  (setq to1   (|htpLabelInputString| htPage '|to1|))
+  (setq ind2  (|htpLabelInputString| htPage '|independent2|))
+  (setq from2 (|htpLabelInputString| htPage '|from2|))
+  (setq to2   (|htpLabelInputString| htPage '|to2|))
+  (setq title (|htpLabelInputString| htPage '|title|))
+  (cond
+    ((not (string-equal title ""))
+      (setq titlePart (concat "{}" "title ==\"" title "\""))
+      (|bcFinish| "draw" fun
+         (|bcDrawIt2| ind1 from1 to1)
+         (|bcDrawIt2| ind2 from2 to2) titlePart))
+    (t
+      (|bcFinish| "draw" fun
+         (|bcDrawIt2| ind1 from1 to1)
+         (|bcDrawIt2| ind2 from2 to2))))))
+
+(defun |bcDraw3Dpar| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Draw Basic Command" NIL)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| F (|Float|)) (|isDomain| SY (|Symbol|)))
+    (|text| "\\centerline{Drawing a parametrically defined curve:"
+            "{\\em ( f1(t), f2(t), f3(t) )}}\\newline "
+"\\centerline{in terms of three functions {\\em f1}, {\\em f2}, and {\\em f3}}\\newline "
+"\\centerline{and an independent variable {\\em t}}\\vspace{1}\\newline\\menuitemstyle{}\\tab{2} "
+            "Enter the three {\\em functions} of the independent variable:")
+    (|text| . "\\newline\\tab{2}{\\em Function f1:}")
+    (|bcStrings| (42 "1.3*cos(2*t)*cos(4*t) + sin(4*t)*cos(t)" |function1| EM))
+    (|text| . "\\newline\\tab{2}{\\em Function f2:}")
+    (|bcStrings| (42 "1.3*sin(2*t)*cos(4*t) - sin(4*t)*sin(t)" |function2| EM))
+    (|text| . "\\newline\\tab{2}{\\em Function f3:}")
+    (|bcStrings| (42 "2.5*cos(4*t)" |function3| EM))
+    (|text| . 
+"\\vspace{1}\\newline\\menuitemstyle{}\\tab{2}Enter {\\em independent} variable and range:\\newline\\tab{2} ")
+    (|text| . "{\\em Variable:}") (|bcStrings| (6 |t| |ind| SY))
+    (|text| . "ranges {\\em from:}")
+    (|bcStrings| (9 0 |from1| F)) (|text| "{\\em to:}")
+    (|bcStrings| (9 "4*\\%pi" |to1| F))
+    (|text| "\\indent{0}\\vspace{1}\\newline\\menuitemstyle{}\\tab{2} "
+            "Optionally enter a {\\em title} for your surface:")
+    (|bcStrings| (15 "knot" |title| S)) (|text| . "\\indent{0}")
+    (|doneButton| "Continue" |bcDraw3DparGen|)))
+ (|htShowPage|))
+
+(defun |bcDraw3DparGen| (htPage)
+ (let (fun1 fun2 fun3 ind from1 to1 title curvePart tubePart titlePart)
+  (setq fun1  (|htpLabelInputString| htPage '|function1|))
+  (setq fun2  (|htpLabelInputString| htPage '|function2|))
+  (setq fun3  (|htpLabelInputString| htPage '|function3|))
+  (setq ind   (|htpLabelInputString| htPage '|ind|))
+  (setq from1 (|htpLabelInputString| htPage '|from1|))
+  (setq to1   (|htpLabelInputString| htPage '|to1|))
+  (setq title (|htpLabelInputString| htPage '|title|))
+  (setq curvePart (concat "curve(" "{}" fun1 ",{}" fun2 ",{}" fun3 ")"))
+  (setq tubePart "{}tubeRadius==.25,{}tubePoints==16")
+  (cond
+    ((not (string-equal title ""))
+      (setq titlePart (concat "{}" "title ==\"" title "\""))
+      (|bcFinish| "draw" curvePart
+         (|bcDrawIt2| ind from1 to1) tubePart titlePart))
+    (t
+      (|bcFinish| "draw" curvePart
+         (|bcDrawIt2| ind from1 to1) tubePart)))))
+
+(defun |bcDraw3Dpar1| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Draw Basic Command" NIL)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| F (|Float|)) (|isDomain| SY (|Symbol|)))
+    (|text| "\\centerline{Drawing a parametrically defined surface:}\\newline "
+            "\\centerline{{\\em ( f1(u,v), f2(u,v), f3(u,v) )}}\\newline "
+"\\centerline{in terms of three functions {\\em f1}, {\\em f2}, and {\\em f3}}\\newline "
+"\\centerline{and two independent variables {\\em u} and {\\em v}}\\vspace{1}\\newline\\menuitemstyle{}\\tab{2}"
+            "Enter the three {\\em functions} of the independent variables:")
+    (|text| . "\\newline\\tab{2}")
+    (|text| . "{\\em Function f1:}")
+    (|bcStrings| (43 "u*sin(v)" |function1| EM))
+    (|text| . "\\newline\\tab{2}")
+    (|text| . "{\\em Function f2:}")
+    (|bcStrings| (43 "v*cos(u)" |function2| EM))
+    (|text| . "\\newline\\tab{2}")
+    (|text| . "{\\em Function f3:}")
+    (|bcStrings| (43 "u*cos(v)" |function3| EM))
+    (|text| .
+"\\newline\\menuitemstyle{}\\tab{2}Enter independent {\\em variables} and ranges:")
+    (|text| . "\\newline\\tab{2}")
+    (|text| . "{\\em Variable 1:}")
+    (|bcStrings| (5 |u| |ind1| SY))
+    (|text| . "ranges {\\em from:}")
+    (|bcStrings| (9 "-\\%pi" |from1| F)) (|text| . "{\\em to:}")
+    (|bcStrings| (9 "\\%pi" |to1| F))
+    (|text| . "\\newline\\tab{2}")
+    (|text| . "{\\em Variable 2:}")
+    (|bcStrings| (5 |v| |ind2| SY))
+    (|text| . "ranges {\\em from:}")
+    (|bcStrings| (9 "-\\%pi/2" |from2| F))
+    (|text| . "{\\em to:}") (|bcStrings| (9 "\\%pi/2" |to2| F))
+    (|text| "\\indent{0}\\newline\\menuitemstyle{}\\tab{2} "
+            "Optionally enter a {\\em title} for your surface:")
+    (|bcStrings| (15 "surface" |title| S))
+    (|text| . "\\indent{0}")))
+ (|htMakeDoneButton| "Continue" '|bcDraw3Dpar1Gen|)
+ (|htShowPage|))
+
+(defun |bcDraw3Dpar1Gen| (htPage)
+ (let (fun1 fun2 fun3 ind1 from1 to1 ind2 from2 to2
+       title r1 r2 surfacePart titlePart)
+   (setq fun1  (|htpLabelInputString| htPage '|function1|))
+   (setq fun2  (|htpLabelInputString| htPage '|function2|))
+   (setq fun3  (|htpLabelInputString| htPage '|function3|))
+   (setq ind1  (|htpLabelInputString| htPage '|ind1|))
+   (setq from1 (|htpLabelInputString| htPage '|from1|))
+   (setq to1   (|htpLabelInputString| htPage '|to1|))
+   (setq ind2  (|htpLabelInputString| htPage '|ind2|))
+   (setq from2 (|htpLabelInputString| htPage '|from2|))
+   (setq to2   (|htpLabelInputString| htPage '|to2|))
+   (setq title (|htpLabelInputString| htPage '|title|))
+   (setq r1 (|bcDrawIt2| ind1 from1 to1))
+   (setq r2 (|bcDrawIt2| ind2 from2 to2))
+   (setq surfacePart (concat "surface(" "{}" fun1 ",{}" fun2 ",{}" fun3 ")"))
+   (cond
+     ((not (string= title ""))
+       (setq titlePart (concat "{}" "title ==\"" title "\""))
+       (|bcFinish| "draw" surfacePart r1 r2 titlePart))
+     (t (|bcFinish| "draw" surfacePart r1 r2)))))
+
+(defun |bcError| (string)
+  (|sayBrightlyNT| "NOTE: ")
+  (|sayBrightly| string))
+
+(defun |bcFindString| (s i n char)
+ (position char s :start i :end n))
+
+(defun |bcFinish| (&rest t1)
+  (|bcGen| (|bcMkFunction| (car t1) (cadr t1) (cddr t1))))
+
+(defun |bcGen| (command)
+ (let (string)
+  (|htInitPage| "Basic Command" nil)
+  (setq string
+    (if (< (length command) 50)
+       (concat "{\\centerline{\\tt " command " }}")
+       (concat "{\\tt " command " }")))
+  (|htMakePage|
+    (list 
+     '(|text| 
+   "{Here is the Axiom command you could have issued to compute this result:}" 
+        "\\vspace{2}\\newline ")
+       (cons '|text| string) ))
+  (|htMakeDoitButton| "Do It" command)
+  (|htShowPage|)))
+
+(defun |bcGenEquations| (alist)
+ (let (right left y eqnlist)
+  (setq y alist)
+  (loop while y do
+    (setq right (elt (car y) 1))
+    (setq y (cdr y))
+    (setq left (elt (car y) 1))
+    (setq y (cdr y))
+    (setq eqnlist (cons (concat left " = " right) eqnlist)))
+  (if (cdr eqnlist)
+    (|bcwords2liststring| eqnlist)
+    (car eqnlist))))
+
+(defun |bcGenExplicitMatrix| (htPage)
+ (let (fun)
+  (|htpSetProperty| htPage '|matrix| (|htpInputAreaAlist| htPage))
+  (if (setq fun (|htpProperty| htPage '|exitFunction|))
+    (funcall fun htPage)
+    (|bcGen| (|bcMatrixGen| htPage)))))
+
+(defun |bcHt| (line)
+ (let (text)
+  (declare (special |$newPage| |$htLineList| |$curPage|))
+   (cond
+     (|$newPage|
+      (setq text
+       (cond
+        ((consp line) (list (cons '|text| line)))
+        ((stringp line) line)
+        (t (list (cons '|text| (list line))))))
+      (|htpAddToPageDescription| |$curPage| text))
+     ((consp line)
+       (setq |$htLineList|
+        (nconc (nreverse (|mapStringize| (copy-list line))) |$htLineList|)))
+     (t
+      (setq |$htLineList| (cons (|basicStringize| line) |$htLineList|))))))
+
+(defun |bchtMakeButton| (htCommand message func)
+  (prog (id type)
+  (declare (special |$curPage|))
+    (return
+      (SEQ (progn
+             (|bcHt| (cons htCommand
+                           (cons "{"
+                                 (cons message
+                                       (cons "}{(|htDoneButton| '|"
+                                        (cons func
+                                         (cons "| (progn "
+                                          nil)))))))
+             (DO ((G167004 (|htpInputAreaAlist| |$curPage|)
+                      (cdr G167004))
+                  (G166992 nil))
+                 ((or (atom G167004)
+                      (progn (setq G166992 (car G167004)) nil)
+                      (progn
+                        (progn
+                          (setq id (car G166992))
+                          (setq type (car (cddddr G166992)))
+                          G166992)
+                        nil))
+                  nil)
+               (SEQ (EXIT (progn
+                            (|bcHt| (cons "(|htpSetLabelInputString| "
+                                     (cons (|htpName| |$curPage|)
+                                      (cons "'|"
+                                       (cons id
+                                        (cons "| " nil))))))
+                            (cond
+                              ((eq type '|string|)
+                               (|bcHt| (cons
+                                        "\"\\stringvalue{"
+                                        (cons id
+                                         (cons "}\"" nil)))))
+                              (t
+                               (|bcHt| (cons
+                                        "\"\\boxvalue{"
+                                        (cons id
+                                         (cons "}\"" nil))))))
+                            (|bcHt| ") ")))))
+             (|bcHt| (cons (|htpName| |$curPage|)
+                           (cons "))} " nil))))))))
+
+(defun |bcIndefiniteIntegrate| ()
+ (declare (special |$EmptyMode|))
+  (|htInitPage| '|Indefinite Integration Basic Command| nil)
+  (|htMakePage|
+    '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+          (|isDomain| S (|String|)) (|isDomain| SY (|Symbol|)))
+      (|text| . "\\newline ")
+      (|text| . "\\menuitemstyle{}\\tab{2}")
+      (|text| . "Enter the {\\em function} you would like to integrate:")
+      (|text| . "\\newline\\tab{2} ")
+      (|bcStrings| (45 "1/(x**2 + 6)" |integrand| EM))
+      (|text| . "\\blankline") (|text| . "\\newline ")
+      (|text| . "\\menuitemstyle{}\\tab{2}")
+      (|text| . "Enter the {\\em variable of integration}:")
+      (|text| . "\\tab{37}") (|bcStrings| (10 |x| |symbol| SY))
+      (|doneButton| "Continue" |bcIndefiniteIntegrateGen|)))
+  (|htShowPage|))
+
+(defun |bcIndefiniteIntegrateGen| (htPage)
+ (let (integrand var)
+  (setq integrand (|htpLabelInputString| htPage '|integrand|))
+  (setq var (|htpLabelInputString| htPage '|symbol|))
+  (|bcGen| (concat "integrate(" integrand "," var ")"))))
+
+(defun |bcInputEquations| (htPage solutionMethod)
+(labels (
+ (f (i n linearp)
+  (let (spacer prefix lnam rnam var)
+   (setq spacer (cond ((> i 99) 0) ((> i 9) 1) (t 2)))
+   (setq prefix
+       (concat "\\newline\\tab{2}{\\em Equation " (princ-to-string i) ":}"))
+   (setq prefix (concat prefix "\\space{" (princ-to-string spacer) "}"))
+   (setq lnam (intern (concat "l" (princ-to-string i))))
+   (setq rnam (intern (concat "r" (princ-to-string i))))
+   (setq var (if linearp
+                  (|bcMakeLinearEquations| i n)
+                  (|bcMakeEquations| i n)))
+   (cons 
+     (cons '|text| prefix)
+     (list (list '|bcStrings| (list 30 var lnam 'p))
+          '(|text| . " = ")
+           (list '|bcStrings| (list 5 '|0| rnam 'p)))))))
+ (let (numEqs linearPred labelList equationPart page)
+ (declare (special |$EmptyMode| |$bcParseOnly|))
+  (setq numEqs
+   (cond
+    ((eq (|htpProperty| htPage '|systemType|) '|onePolynomial|) 1)
+    (|$bcParseOnly| 
+      (parse-integer (|htpLabelInputString| htPage '|numberOfEquations|)))
+     (t
+      (|objValUnwrap| (|htpLabelSpadValue| htPage '|numberOfEquations|)))))
+  (setq linearPred (eq (|htpProperty| htPage '|systemType|) '|linear|))
+  (setq labelList
+   (cond
+     ((eql numEqs 1)
+      '((|bcStrings| (42 "x^2+1" l1 p)) (|text| . " = ")
+         (|bcStrings| (6 0 r1 P))))
+     (t
+      (loop for i from 1 to numEqs 
+       append (f i numEqs linearPred)))))
+  (setq equationPart
+   (cons '(|domainConditions|
+             (|isDomain| P (|Polynomial| |$EmptyMode|))
+             (|isDomain| S (|String|))
+             (|isDomain| PI (|PositiveInteger|)))
+          labelList))
+  (setq page (|htInitPage| "Solve Basic Command" (|htpPropertyList| htPage)))
+  (|htpSetProperty| page '|numberOfEquations| numEqs)
+  (|htpSetProperty| page '|solutionMethod| solutionMethod)
+  (|htSay| "\\newline\\menuitemstyle{}\\tab{2}")
+  (|htSay| (if (eql numEqs 1)
+                "Enter the {\\em Equation}:"
+                "Enter the {\\em Equations}:"))
+  (|htSay| "\\newline\\tab{2}")
+  (|htMakePage| equationPart)
+  (|bcHt| "\\blankline ")
+  (|htSay| "\\newline\\menuitemstyle{}\\tab{2}")
+  (|htMakePage|
+    (if (eql numEqs 1)
+     '((|text| . "Enter the {\\em unknown} (leave blank if implied): ")
+       (|text| . "\\tab{48}")
+       (|bcStrings| (6 "x" unknowns S . |quoteString|)))
+     (list
+      '(|text| . "Enter the unknowns (leave blank if implied):")
+      '(|text| . "\\tab{44}")
+       (list '|bcStrings| 
+                  (list 10 (|bcMakeUnknowns| numEqs) '|unknowns| 'p)))))
+  (|htMakeDoneButton| "Continue" '|bcInputEquationsEnd|)
+  (|htShowPage|))))
+
+(defun |bcInputEquationsEnd| (htPage)
+ (let (fun)
+  (if (setq fun (|htpProperty| htPage '|exitFunction|))
+    (funcall fun htPage)
+    (|systemError| nil))))
+
+(defun |bcInputExplicitMatrix| (htPage junk)
+ (declare (ignore junk))
+ (let (nrows ncols cond wrows wcols rowpart colpart prefix k name 
+       labelList page t1 t2)
+  (declare (special |$EmptyMode| |$bcParseOnly|))
+  (setq nrows
+    (if (null |$bcParseOnly|)
+      (|objValUnwrap| (|htpLabelSpadValue| htPage '|rows|))
+      (parse-integer  (|htpLabelInputString| htPage '|rows|))))
+  (setq ncols
+    (if (null |$bcParseOnly|)
+       (|objValUnwrap| (|htpLabelSpadValue| htPage '|cols|))
+       (parse-integer  (|htpLabelInputString| htPage '|cols|))))
+  (setq k 0)
+  (setq wrows (|#| (princ-to-string nrows)))
+  (setq wcols (|#| (princ-to-string ncols)))
+  (setq labelList
+    (do ((i 1 (1+ i))) ((> i nrows) t1)
+      (setq t2 nil)
+      (setq t1
+       (append t1
+         (do ((j 1 (1+ j))) ((> j ncols) (nreverse0 t2))
+          (setq t2
+           (cons
+            (progn
+             (setq rowpart (concat "{\\em Row" (|htStringPad| i wrows)))
+             (setq colpart (concat ", Column" (|htStringPad| j wcols) 
+                                    ":}\\space{2}"))
+             (setq prefix (concat rowpart colpart))
+             (setq name (intern (princ-to-string (setq k (1+ k)))))
+             (list prefix "" 30 0 name 'P))
+            t2)))))))
+  (setq labelList
+   (list
+     (list '|domainConditions| 
+           '(|isDomain| P (|Polynomial| |$EmptyMode|))
+            cond)
+      (cons '|inputStrings| labelList)))
+  (setq page (|htInitPage| "Solve Basic Command" (|htpPropertyList| htPage)))
+  (|bcHt| "Enter the entries of the matrix:")
+  (|htMakePage| labelList)
+  (|htMakeDoneButton| "Continue" '|bcGenExplicitMatrix|)
+  (|htpSetProperty| page '|nrows| nrows)
+  (|htpSetProperty| page '|ncols| ncols)
+  (|htShowPage|)))
+
+(defun |bcInputMatrixByFormula| (htPage junk)
+ (declare (ignore junk))
+ (let (page nrows ncols)
+  (declare (special |$bcParseOnly|))
+  (setq page (|htInitPage| "Basic Matrix Command" (|htpPropertyList| htPage)))
+  (|htMakePage|
+    '((|domainConditions| (|isDomain| S (|Symbol|))
+                  (|isDomain| FE (|Expression| (|Integer|))))
+      (|text| . "\\menuitemstyle{}\\tab{2}")
+      (|text| . "Enter the {\\em row variable}: ")
+      (|text| . "\\tab{36}") (|bcStrings| (6 |i| |rowVar| S))
+      (|text| . "\\blankline ") (|text| . "\\newline ")
+      (|text| . "\\menuitemstyle{}\\tab{2}")
+      (|text| . "Enter the {\\em column variable}: ")
+      (|text| . "\\tab{36}") (|bcStrings| (6 |j| |colVar| S))
+      (|text| . "\\blankline ") (|text| . "\\newline ")
+      (|text| . "\\menuitemstyle{}\\tab{2}")
+      (|text| . "Enter the general {\\em formula} for the entries:")
+      (|text| . "\\newline\\tab{2} ")
+      (|bcStrings| (40 "1/(x - i - j - 1)" |formula| FE))))
+  (|htMakeDoneButton| "Continue" '|bcInputMatrixByFormulaGen|)
+  (setq nrows
+    (if (null |$bcParseOnly|)
+      (|objValUnwrap| (|htpLabelSpadValue| htPage '|rows|))
+      (parse-integer  (|htpLabelInputString| htPage '|rows|))))
+  (setq ncols
+    (if (null |$bcParseOnly|)
+      (|objValUnwrap| (|htpLabelSpadValue| htPage '|cols|))
+      (parse-integer  (|htpLabelInputString| htPage '|cols|))))
+  (|htpSetProperty| page '|nrows| nrows)
+  (|htpSetProperty| page '|ncols| ncols)
+  (|htShowPage|)))
+
+(defun |bcInputMatrixByFormulaGen| (htPage)
+ (let (fun formula rowVar colVar nrows ncols)
+  (cond
+   ((setq fun (|htpProperty| htPage '|exitFunction|))
+     (funcall fun htPage))
+   (t
+     (setq formula (|htpLabelInputString| htPage '|formula|))
+     (setq rowVar (|htpLabelInputString| htPage '|rowVar|))
+     (setq colVar (|htpLabelInputString| htPage '|colVar|))
+     (setq nrows (|htpProperty| htPage '|nrows|))
+     (setq ncols (|htpProperty| htPage '|ncols|))
+     (|bcGen| (concat "matrix([[" formula
+                           " for " colVar
+                           " in 1.." (princ-to-string ncols)
+                           "] for " rowVar
+                           " in 1.." (princ-to-string nrows)
+                           "])"))))))
+
+(defun |bcInputSolveInfo| (htPage)
+ (let (page)
+  (setq page (|htInitPage| "Solve Basic Command" (|htpPropertyList| htPage)))
+  (|htpSetProperty| page '|numberOfEquations|
+     (|htpProperty| htPage '|numberOfEquations|))
+  (|htpSetProperty| page '|inputArea| (|htpInputAreaAlist| htPage))
+  (|htMakePage|
+    '((|domainConditions| (|isDomain| PI (|PositiveInteger|)))
+      (|text| . "What would you like?")
+      (|text| . "\\beginmenu") (|text| . "\\item ")
+      (|bcLinks|
+        ("\\menuitemstyle{Exact Solutions}" "" |bcSolveEquations| |exact|))
+      (|text| . "\\indentrel{18}\\tab{0} ")
+      (|text| .
+     "Solutions expressed in terms of {\\em roots} of irreducible polynomials")
+      (|text| . "\\indentrel{-18}")
+      (|text| . "\\item ")
+      (|bcLinks|
+        ("\\menuitemstyle{Numeric Solutions}" ""
+           |bcSolveEquationsNumerically| |numeric|))
+      (|text| . "\\indentrel{18}\\tab{0} ")
+      (|text| .
+  "Solutions expressed in terms of approximate real or complex {\\em numbers}")
+      (|text| . "\\indentrel{-18}")
+      (|text| . "\\item ")
+      (|bcLinks|
+        ("\\menuitemstyle{Radical Solutions}" "" |bcSolveEquations| |radical|))
+      (|text| . "\\indentrel{18}\\tab{0} ")
+      (|text| .
+          "Solutions expressed in terms of {\\em radicals} if it is possible")
+      (|text| . "\\indentrel{-18}")
+      (|text| . "\\endmenu")))
+  (|htShowPage|)))
+
+(defun |bcIssueHt| (line)
+  (cond ((consp line) (|htMakePage1| line)) (t (|iht| line))))
+
+(defun |bcLaurentSeries| (a b)
+ (declare (special |$EmptyMode|) (ignore a b))
+ (|htInitPage| "Laurent Series Basic Command" NIL)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| EEM (|Expression| |$EmptyMode|))
+        (|isDomain| S (|String|)) (|isDomain| I (|Integer|))
+        (|isDomain| PI (|PositiveInteger|))
+        (|isDomain| SY (|Symbol|)))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the formula for the general coefficient of the series")
+    (|text| . "\\newline\\tab{2} ")
+    (|bcStrings| (55 "(-1)**(n - 1)/(n + 2)" |formula| EM))
+    (|text| . "\\vspace{1}\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em index variable} for your formula")
+    (|text| . "\\tab{49}") (|bcStrings| (8 |n| |index| SY))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em power series variable}")
+    (|text| . "\\tab{49}") (|bcStrings| (8 |x| |variable| SY))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em point} about which you want to expand")
+    (|text| . "\\tab{49}") 
+    (|bcStrings| (8 0 |point| F))
+    (|text| . "\\blankline")
+    (|text| . 
+"\\newline For Laurent Series, the exponent of the power series variable ranges from an {\\em initial value}, an arbitrary integer value, to plus infinity; the {\\em step size} is any positive integer.")
+    (|text| . "\\blankline")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em initial value} of the index (an integer)")
+    (|text| . "\\tab{49}") (|bcStrings| (8 "-1" |min| I))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em step size} (a positive integer)")
+    (|text| . "\\tab{49}") (|bcStrings| (8 "1" |step| PI))
+    (|doneButton| "Continue" |bcLaurentSeriesGen|)))
+ (|htShowPage|))
+
+(defun |bcLaurentSeriesGen| (htPage)
+ (|bcSeriesGen| htPage))
+
+(defun |bcLimit| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Limit Basic Command" NIL)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| S (|String|)) (|isDomain| SY (|Symbol|)))
+    (|text| . "What kind of limit do you want to compute? ")
+    (|text| . "\\blankline ") 
+    (|text| . "\\beginmenu")
+    (|text| . "\\item ")
+    (|bcLinks| ("\\menuitemstyle{A real limit?}" "" |bcRealLimit| |real|))
+    (|text| . "\\indentrel{17}\\tab{0}")
+    (|text| .
+"The limit as the variable approaches a {\\em real} value along the real axis")
+    (|text| . "\\indentrel{-17}") (|text| . "\\item ")
+    (|text| . "\\blankline ")
+    (|bcLinks|
+      ("\\menuitemstyle{A complex limit?}" "" |bcComplexLimit| |complex|))
+    (|text| . "\\indentrel{17}\\tab{0}")
+    (|text| .
+"The limit as the variable approaches a {\\em complex} value along any path in the complex plane")
+    (|text| . "\\indentrel{-17}") 
+    (|text| . "\\endmenu")))
+ (|htShowPage|))
+
+(defun |bcLinearExtractMatrix| (htPage)
+  (reverse (|htpInputAreaAlist| htPage)))
+
+(defun |bcLinearMatrixGen| (htPage key)
+ (let (matform vector vecform form)
+  (setq matform (|bcMatrixGen| htPage))
+   (cond
+    ((eq key '|homo|)
+      (|bcFinish| "nullSpace" matform))
+    (t
+     (setq vector
+      (loop for x in (reverse (|htpInputAreaAlist| htpage))
+        collect (elt x 1)))
+     (setq vecform (|bcVectorGen| vector))
+     (setq form (|bcMkFunction| "solve" matform (cons vecform nil)))
+     (|bcGen| (if (eq key '|particular|) 
+                (concat form ".particular")
+                form))))))
+
+(defun |bcLinearSolve| (p nn)
+ (declare (ignore p nn))
+ (|htInitPage| "Basic Solve Command" NIL)
+ (|htMakePage|
+  '((|text| . "How do you want to enter the equations?")
+    (|text| . "\\beginmenu") 
+    (|text| . "\\item ")
+    (|text| . "\\newline ")
+    (|bcLinks|
+       ("\\menuitemstyle{Directly as equations}" ""
+          |bcLinearSolveEqns| |equations|))
+    (|text| . "\\item ") 
+    (|text| . "\\newline ")
+    (|bcLinks|
+       ("\\menuitemstyle{In matrix form}" ""
+          |bcLinearSolveMatrix| |matrix|))
+    (|text| . "\\indentrel{16}\\tab{0}")
+    (|text| .
+" \\spad{AX = B}, where \\spad{A} is a matrix of coefficients and \\spad{B} is a vector")
+    (|text| . "\\indentrel{-16}\\item ") 
+    (|text| . "\\endmenu")))
+ (|htShowPage|))
+
+(defun |bcLinearSolveEqns| (htPage p)
+ (declare (ignore htPage p))
+  (|htInitPage| "Basic Solve Command" nil)
+  (|htMakePage|
+    '((|domainConditions| (|isDomain| PI (|PositiveInteger|)))
+      (|inputStrings|
+        ("Enter the {\\em number} of equations:" "" 5 2
+           |numberOfEquations| PI))))
+  (|htMakeDoneButton| "Continue" '|bcLinearSolveEqns1|)
+  (|htShowPage|))
+
+(defun |bcLinearSolveEqns1| (htPage)
+ (|htpSetProperty| htPage '|systemType| '|linear|)
+ (|htpSetProperty| htPage '|exitFunction| '|bcLinearSolveEqnsGen|)
+ (|bcInputEquations| htPage '|exact|))
+
+(defun |bcLinearSolveEqnsGen| (htPage)
+ (let (vars varlist varString alist eqnString)
+  (setq alist (|htpInputAreaAlist| htPage))
+  (when (setq vars (|htpLabelInputString| htPage '|unknowns|))
+    (setq varlist (|bcString2WordList| vars))
+    (setq varString
+      (if (cdr varlist) (|bcwords2liststring| varlist) (car varlist)))
+    (setq alist (cdr alist)))
+  (setq eqnString (|bcGenEquations| alist))
+  (|bcFinish| "solve" eqnString varString)))
+
+(defun |bcLinearSolveMatrix| (htPage junk)
+ (declare (ignore htPage junk))
+ (|bcReadMatrix| '|bcLinearSolveMatrix1|))
+
+(defun |bcLinearSolveMatrix1| (htPage)
+ (let (page)
+  (setq page 
+    (|htInitPage| "Linear Solve Basic Command" (|htpPropertyList| htPage)))
+  (|htpSetProperty| page '|matrix| (|bcLinearExtractMatrix| htPage))
+  (|htMakePage|
+   '((|text| . "The right side vector B is:")
+     (|lispLinks|
+       ("Zero:" "the system is homogeneous" |bcLinearSolveMatrixHomo| |homo|)
+       ("Not zero:" "the system is not homogeneous"
+                  |bcLinearSolveMatrixInhomo| |nothomo|))))
+  (|htShowPage|)))
+
+(defun |bcLinearSolveMatrixHomo| (htPage key)
+ (declare (ignore key))
+ (|bcLinearMatrixGen| htPage '|homo|))
+
+(defun |bcLinearSolveMatrixInhomo| (htPage junk)
+ (declare (ignore junk))
+ (labels (
+  (f (i)
+   (let (spacer prefix name)
+    (setq spacer (cond ((> i 99) 0) ((> i 9) 1) (t 2)))
+    (setq prefix (concat "{\\em Coefficient " (princ-to-string i) ":}"))
+    (unless (eql spacer 0)
+       (setq prefix (concat prefix "\\space{" (princ-to-string spacer) "}")))
+    (setq name (intern (concat "c" (princ-to-string i))))
+    (list prefix '|| 30 0  name 'p ))))
+ (let (nrows ncols labelList page)
+ (declare (special |$EmptyMode|))
+   (setq nrows (|htpProperty| htPage '|nrows|))
+   (setq ncols (|htpProperty| htPage '|ncols|))
+   (setq labelList (loop for i from 1 to ncols collect (f i)))
+   (setq page
+     (|htInitPage| "Linear Solve Basic Command" (|htpPropertyList| htPage)))
+   (|htpSetProperty| page '|matrix| (|htpProperty| htPage '|matrix|))
+   (|htpSetProperty| page '|nrows| nrows)
+   (|htpSetProperty| page '|ncols| ncols)
+   (|htMakePage|
+     (list
+       '(|domainConditions| (|isDomain| P (|Polynomial| |$EmptyMode|)))
+       '(|text| . "Enter the right side vector B:")
+       (cons 
+         (cons '|inputStrings| labelList)
+         (list
+           '(|text| . "\\vspace{1}\\newline Do you want:")
+           '(|lispLinks|
+              ("All the solutions?" "" |bcLinearSolveMatrixInhomoGen| |all|)
+              ("A particular solution?" ""
+                 |bcLinearSolveMatrixInhomoGen| |particular|))
+             ))))
+   (|htShowPage|))))
+
+(defun |bcLinearSolveMatrixInhomoGen| (htPage key)
+  (|bcLinearMatrixGen| htPage key))
+
+(defun |bcMatrix| () (|bcReadMatrix| nil))
+
+(defun |bcMatrixGen| (htPage)
+ (let (nrows ncols formula rowVar colVar mat k matform matstring)
+  (setq nrows (|htpProperty| htPage '|nrows|))
+  (setq ncols (|htpProperty| htPage '|ncols|))
+  (setq mat (|htpProperty| htPage '|matrix|))
+  (cond
+    ((setq formula (lassoc '|formula| mat))
+      (setq formula (elt formula 0))
+      (setq rowVar (elt (lassoc '|rowVar| mat) 0))
+      (setq colVar (elt (lassoc '|colVar| mat) 0))
+      (concat "matrix([[" formula
+                         " for " colVar
+                         " in 1.." (princ-to-string ncols)
+                         "] for " rowVar
+                         " in 1.." (princ-to-string nrows)
+                         "])"))
+    ((setq mat (|htpProperty| htPage '|matrix|))
+      (setq mat (reverse mat))
+      (setq k (- 1))
+      (setq matform
+       (loop for i from 0 to (1- nrows)
+         collect (loop for j from 0 to (1- ncols)
+                   collect (elt (elt mat (incf k)) 1))))
+      (setq matstring
+       (|bcwords2liststring|
+        (loop for t1 in matform collect (|bcwords2liststring| t1))))
+      (concat "matrix(" matstring ")"))
+    (t (|systemError| nil)))))
+
+(defun |bcMakeEquations| (i number)
+ (if (eql number 1)
+   (concat (|bcCreateVariableString| 1) '|^2+1|))
+   (progn
+     (|bcCreateVariableString| i)
+     (concat 
+      (concat (apply 'concat
+       (let (t1)
+        (do ((j 1 (1+ j))) ((> j number) (nreverse0 t1))
+         (setq t1 (cons (concat (|bcCreateVariableString| j) '+) t1)))))
+       '|1|)
+      (concat '-2* (concat (|bcCreateVariableString| i) '|^2|)))))
+
+(defun |bcMakeLinearEquations| (i number)
+ (cond
+  ((eql number 1) (|bcCreateVariableString| 1))
+  ((eql number 2)
+    (cond
+     ((eql i 1)
+      (concat (|bcCreateVariableString| 1)
+               (concat '+ (|bcCreateVariableString| 2))))
+     (t
+      (concat (|bcCreateVariableString| 1)
+               (concat '- (|bcCreateVariableString| 2))))))
+  (t
+   (concat
+    (concat 
+     (apply 'concat
+      (let (t1)
+       (do ((j 1 (1+ j))) ((> j number) (nreverse0 t1))
+        (setq t1 (cons (concat (|bcCreateVariableString| j) '+) t1)))))
+     '|1|)
+    (concat '-2* (|bcCreateVariableString| i))))))
+
+(defun |bcMakeUnknowns| (number)
+ (format nil "~{~A~^~}" 
+   (loop for i from 1 to number collect (format nil "x~a " i))))
+
+(defun |bcMkFunction| (name arg args)
+ (let (str)
+  (setq str
+   (let ((result ""))
+    (concatenate 'string arg
+     (dolist (i args result)
+      (when i
+       (setq result (concatenate 'string result
+                     (concatenate 'string "," i))))))))
+  (concatenate 'string name "(" str ")")))
+
+(defun |bcNotReady| (htPage)
+ (declare (ignore htPage))
+ (|htInitPage| "Basic Command" NIL)
+ (|htMakePage|
+  '((|text| . "{\\centerline{\\em This facility will soon be available}}")))
+ (|htShowPage|))
+
+(defun |bcOptional| (s)
+ (if (string-equal s "") "2" s))
+
+(defun |bcProduct| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Product Basic Command" NIL)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| S (|String|)) (|isDomain| SY (|Symbol|)))
+    (|text| . 
+       "Enter the {\\em function} you would like to compute the product of:")
+    (|inputStrings| ("" "" 45 "i**2" |mand| EM))
+    (|text| . "\\vspace{1}\\newline")
+    (|inputStrings|
+        ("Enter the {\\em index of the product}:" "" 5 |i| |index| SY))
+        (|text| . "\\vspace{1}\\newline Enter the limits of the index:")
+        (|inputStrings|
+           ("\\newline{\\em From:}" "" 10 "1" |first| EM)
+           ("{\\em To:}\\space{2}" "" 10 "n" |last| EM))
+    (|doneButton| "Continue" |bcProductGen|)))
+ (|htShowPage|))
+
+(defun |bcProductGen| (htPage)
+ (let (mand index car last)
+  (setq mand  (|htpLabelInputString| htPage '|mand|))
+  (setq index (|htpLabelInputString| htPage '|index|))
+  (setq car   (|htpLabelInputString| htPage '|first|))
+  (setq last  (|htpLabelInputString| htPage '|last|))
+  (|bcGen| (concat "product(" mand "," index "," car "," last ")"))))
+
+(defun |bcPuiseuxSeries| (a b)
+ (declare (special |$EmptyMode|) (ignore a b))
+ (|htInitPage| "Puiseux Series Basic Command" nil)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| EEM (|Expression| |$EmptyMode|))
+        (|isDomain| S (|String|)) (|isDomain| I (|Integer|))
+        (|isDomain| PI (|PositiveInteger|))
+        (|isDOmain| RN (|Fraction| (|Integer|)))
+        (|isDomain| SY (|Symbol|)))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . 
+      "Enter the {\\em formula} for the general coefficient of the series")
+    (|text| . "\\newline\\tab{2} ")
+    (|bcStrings| (55 "(-1)**((3*n - 4)/6)/factorial(n - 1/3)" |formula| EM))
+    (|text| . "\\vspace{1}\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em index variable} for your formula")
+    (|text| . "\\tab{49}") (|bcStrings| (8 |n| |index| SY))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em power series variable}")
+    (|text| . "\\tab{49}") (|bcStrings| (8 |x| |variable| SY))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em point} about which you want to expand")
+    (|text| . "\\tab{49}") (|bcStrings| (8 0 |point| F))
+    (|text| . "\\blankline ")
+    (|text| .
+"For Puiseux Series, the exponent of the power series variable ranges from an {\\em initial value}, an arbitary rational number, to plus infinity; the {\\em step size} is an any positive rational number.")
+    (|text| . "\\blankline ") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em initial value} of index (a rational number)")
+    (|text| . "\\tab{51}") (|bcStrings| (6 "4/3" |min| RN))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em step size} (a positive rational number)")
+    (|text| . "\\tab{51}") (|bcStrings| (6 "2" |step| RN))
+    (|doneButton| "Continue" |bcPuiseuxSeriesGen|)))
+ (|htShowPage|))
+
+(defun |bcPuiseuxSeriesGen| (htPage)
+ (|bcSeriesGen| htPage))
+
+(defun |bcReadMatrix| (exitFunctionOrNil)
+ (let (page)
+  (setq page (|htInitPage| "Matrix Basic Command" nil))
+  (|htpSetProperty| page '|exitFunction| exitFunctionOrNil)
+  (|htMakePage|
+    '((|domainConditions| (|isDomain| PI (|PositiveInteger|)))
+      (|text| . "Enter the size of the matrix:")
+      (|inputStrings|
+                  ("Number of {\\em rows}:\\space{3}" "" 5 2 |rows| PI)
+                  ("Number of {\\em columns}: " "" 5 2 |cols| PI))
+      (|text| . "\\blankline ")
+      (|text| . "How would you like to enter the matrix?")
+      (|text| . "\\beginmenu")
+      (|text| . "\\item ")
+      (|bcLinks|
+                  ("\\menuitemstyle{By entering individual entries}" ""
+                   |bcInputExplicitMatrix| |explicit|))
+      (|text| . "\\item ")
+      (|bcLinks|
+                  ("\\menuitemstyle{By formula}" ""
+                   |bcInputMatrixByFormula| |formula|))
+      (|text| . "\\endmenu")))
+  (|htShowPage|)))
+
+(defun |bcRealLimit| (a b)
+ (declare (special |$EmptyMode|) (ignore a b))
+ (|htInitPage| "Real Limit Basic Command" NIL)
+ (|htMakePage|
+   '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| S (|String|)) (|isDomain| F (|Float|))
+        (|isDomain| SY (|Symbol|)))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em function} you want to compute the limit of:")
+    (|text| . "\\newline\\tab{2} ")
+    (|bcStrings| (45 "x*sin(1/x)" |expression| EM))
+    (|text| . "\\blankline") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the name of the {\\em variable}: ")
+    (|text| . "\\tab{41}") 
+    (|bcStrings| (6 |x| |variable| SY))
+    (|text| . "\\blankline") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Compute the limit at")
+    (|radioButtons| |location|
+      ("A finite point:"
+         ((|text| . "\\tab{33}") (|bcStrings| (6 0 |point| F))) |finitePoint|)
+      ("Plus infinity" "" |plusInfinity|)
+      ("Minus infinity" "" |minusInfinity|))
+    (|doneButton| "Continue" |bcRealLimitGen|)))
+ (|htShowPage|))
+
+(defun |bcRealLimitGen| (htPage)
+ (let (|p| |fun| |var| |loc| |page|)
+  (cond
+   ((not (eq (setq |p| (|htpButtonValue| htPage '|location|)) '|finitePoint|))
+     (setq |fun| (|htpLabelInputString| htPage '|expression|))
+     (setq |var| (|htpLabelInputString| htPage '|variable|))
+     (setq |loc| 
+       (if (eq |p| '|plusInfinity|) "%plusInfinity" "%minusInfinity"))
+     (|bcFinish| "limit" |fun| (concat |var| " = " |loc|)))
+   (t
+     (setq |page| (|htInitPage| "Real Limit Basic Command" nil))
+     (|htMakePage|
+       '((|text| . "Compute the limit")
+         (|lispLinks|
+          ("\\menuitemstyle{From both directions}" "" |bcRealLimitGen1| |both|)
+          ("\\menuitemstyle{From the right}" "" |bcRealLimitGen1| |right|)
+          ("\\menuitemstyle{From the left}" "" |bcRealLimitGen1| |left|))))
+     (|htpSetProperty| |page| '|fun|
+        (|htpLabelInputString| htPage '|expression|))
+     (|htpSetProperty| |page| '|var|
+        (|htpLabelInputString| htPage '|variable|))
+     (|htpSetProperty| |page| '|loc|
+        (|htpLabelInputString| htPage '|point|))
+     (|htShowPage|)))))
+
+(defun |bcRealLimitGen1| (htPage key)
+ (let (direction fun var loc varPart)
+  (setq direction
+   (cond
+    ((eq key '|right|) "\"right\"")
+    ((eq key '|left|) "\"left\"")
+    (t nil)))
+  (setq fun (|htpProperty| htPage '|fun|))
+  (setq var (|htpProperty| htPage '|var|))
+  (setq loc (|htpProperty| htPage '|loc|))
+  (setq varPart (concat var " = " loc))
+  (|bcFinish| "limit" fun varPart direction)))
+
+(defun |bcSadFaces| ()
+        "\\space{1}{\\em\\htbitmap{error}\\htbitmap{error}\\htbitmap{error}}")
+
+(defun |bcSeries| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Series Basic Command" nil)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| S (|String|)) (|isDomain| SY (|Symbol|)))
+    (|text| . "Create a series by: ") (|text| . "\\beginmenu")
+    (|text| . "\\item ")
+    (|bcLinks| ("\\menuitemstyle{Expansion}" "" |bcSeriesExpansion| nil))
+    (|text| . "\\tab{11}Expand a function in a series around a point")
+    (|text| . "\\item ")
+    (|bcLinks| ("\\menuitemstyle{Formula}" "" |bcSeriesByFormula| nil))
+    (|text| . "\\tab{11}Give a formula for the {\\em i}'th coefficient")
+    (|text| . "\\endmenu")))
+ (|htShowPage|))
+
+(defun |bcSeriesByFormula| (a b)
+ (declare (ignore a b))
+ (|htInitPage| "Power Series Basic Command" NIL)
+ (|htMakePage|
+  '((|text| . "Select the kind of power series you want to create:")
+    (|text| . "\\beginmenu") (|text| . "\\item ")
+    (|bcLinks|
+      ("\\menuitemstyle{Taylor Series}" "" |bcTaylorSeries| |taylor|))
+    (|text| . 
+"\\newline Series where the exponent ranges over the integers from a {\\em non-negative integer} value to plus infinity by an arbitrary {\\em positive integer} step size")
+    (|text| . "\\item ")
+    (|bcLinks|
+      ("\\menuitemstyle{Laurent Series}" "" |bcLaurentSeries| |laurent|))
+    (|text| .
+"\\newline Series where the exponent ranges from an arbitrary {\\em integer} value to plus infinity by an arbitrary {\\em positive integer} step size")
+    (|text| . "\\item ")
+    (|bcLinks|
+      ("\\menuitemstyle{Puiseux Series}" "" |bcPuiseuxSeries| |puiseux|))
+    (|text| .
+"\\newline Series where the exponent ranges from an arbitrary {\\em rational value} to plus infinity by an arbitrary {\\em positive rational number} step size")
+    (|text| . "\\endmenu")))
+ (|htShowPage|))
+
+(defun |bcSeriesByFormulaGen| (htPage) 
+; (declare (ignore htPage))
+ (|bcNotReady| htPage))
+
+(defun |bcSeriesExpansion| (a b)
+ (declare (ignore a b))
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Series Expansion Basic Command" nil)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| EEM (|Expression| |$EmptyMode|))
+        (|isDomain| S (|String|)) (|isDomain| SY (|Symbol|)))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em function} you want to expand in a power series")
+    (|text| . "\\newline\\tab{2} ")
+    (|bcStrings| (55 "log(cot(x))" |function| EM))
+    (|text| . "\\blankline ")
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em power series variable}")
+    (|text| . "\\tab{49}")
+    (|bcStrings| (8 |x| |variable| SY))
+    (|text| . "\\blankline ")
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em point} about which you want to expand")
+    (|text| . "\\tab{49}")
+    (|bcStrings| (8 "\\%pi/2" |point| EM))))
+ (|htMakeDoneButton| "Continue" '|bcSeriesExpansionGen|)
+ (|htShowPage|))
+
+(defun |bcSeriesExpansionGen| (htPage)
+ (let (fun var point terms)
+  (setq fun (|htpLabelInputString| htPage '|function|))
+  (setq var (|htpLabelInputString| htPage '|variable|))
+  (setq point (|htpLabelInputString| htPage '|point|))
+  (setq terms (|htpLabelInputString| htPage '|numberOfTerms|))
+  (|bcFinish| "series" fun (concat var " = " point))))
+
+(defun |bcSeriesGen| (htPage)
+ (let (step min formula index var point varPart minPart)
+  (setq step (|htpLabelInputString| htPage '|step|))
+  (setq min (|htpLabelInputString| htPage '|min|))
+  (setq formula (|htpLabelInputString| htPage '|formula|))
+  (setq index (|htpLabelInputString| htPage '|index|))
+  (setq var (|htpLabelInputString| htPage '|variable|))
+  (setq point (|htpLabelInputString| htPage '|point|))
+  (setq varPart (concat var " = " point))
+  (setq minPart (concat min ".."))
+  (|bcFinish| "series" (concat index " +-> " formula) varPart minPart step)))
+
+(defun |bcSolve| ()
+ (|htInitPage| "Solve Basic Command" nil)
+ (|htMakePage|
+  '((|text| . "What do you want to solve? ")
+    (|text| . "\\beginmenu") (|text| . "\\item ")
+    (|bcLinks|
+      ("\\menuitemstyle{A System Of Linear Equations}" ""
+         |bcLinearSolve| |linear|))
+    (|text| . "\\item ")
+    (|bcLinks|
+      ("\\menuitemstyle{A System of Polynomial Equations}" ""
+         |bcSystemSolve| |polynomial|))
+    (|text| . "\\item ")
+    (|bcLinks|
+      ("\\menuitemstyle{A Single Polynomial Equation}" ""
+         |bcSolveSingle| |onePolynomial|))
+     (|text| . "\\endmenu")))
+ (|htShowPage|))
+
+(defun |bcSolveEquations| (htPage solutionMethod)
+ (let (digits kind accString alist varpart r varlist varString eqnString name)
+  (when (eq solutionMethod '|numeric|)
+    (setq digits (|htpLabelInputString| htPage '|acc|))
+    (setq kind   (|htpButtonValue| htPage '|choice|))
+    (setq accString
+     (if (|member| kind '(|rf| |cf|))
+       (concat "1.e-" digits)
+       (concat "1/10**" digits))))
+  (setq alist   (|htpProperty| htPage '|inputArea|))
+  (setq varpart (cadar alist))
+  (setq r       (cdr alist))
+  (setq varlist (|bcString2WordList| varpart))
+  (setq varString
+   (if (cdr varlist)
+     (|bcwords2liststring| varlist)
+     (car varlist)))
+  (setq eqnString (|bcGenEquations| r))
+  (cond
+   ((eq solutionMethod '|numeric|)
+     (setq name (if (|member| kind '(|rf| |rr|)) "solve" "complexSolve"))
+     (|bcFinish| name eqnString accString))
+   (t
+     (setq name (if (eq solutionMethod '|radical|) "radicalSolve" "solve"))
+     (|bcFinish| name eqnString varString accString)))))
+
+(defun |bcSolveEquationsNumerically| (htPage p)
+ (declare (ignore p))
+  (|htInitPage| "Solve Basic Command" (|htpPropertyList| htPage))
+  (|htMakePage|
+   '((|text| . "What would you like?")
+     (|radioButtons| |choice|
+       ("Real roots expressed as rational numbers" "" |rr|)
+       ("Real roots expressed as floats" "" |rf|)
+       ("Complex roots expressed as rational numbers" "" |cr|)
+       ("Complex roots expressed as floats" "" |cf|))
+     (|text| . "\\vspace{1}\\newline")
+     (|inputStrings| ("Enter the number of desired {\\em digits} of accuracy"
+                   "" 5 20 |acc| PI))))
+  (|htMakeDoneButton| "Continue" '|bcSolveNumerically1|)
+  (|htShowPage|))
+
+(defun |bcSolveNumerically1| (htPage)
+  (|bcSolveEquations| htPage '|numeric|))
+
+(defun |bcSolveSingle| (htPage p)
+ (declare (ignore p))
+ (|htpSetProperty| htPage '|systemType| '|onePolynomial|)
+ (|htpSetProperty| htPage '|exitFunction| '|bcInputSolveInfo|)
+ (|bcInputEquations| htPage '|exact|))
+
+(defun |bcString2HyString| (s) s)
+
+(defun |bcString2HyString2| (s)
+ (if (and (stringp s) (char= (elt s 0) #\"))
+   (concatenate 'string "\\\"" s "\\\"")
+   s))
+
+(defun |bcString2WordList| (string)
+  (loop for i = 0 then (1+ j) 
+        as j = (position #\space string :start i) 
+        collect (subseq string i j) 
+        while j))
+
+(defun |bcSystemSolveEqns1| (htPage)
+ (|htpSetProperty| htPage '|systemType| '|polynomial|)
+ (|htpSetProperty| htPage '|exitFunction| '|bcInputSolveInfo|)
+ (|bcInputEquations| htPage '|exact|))
+
+(defun |bcSum| ()
+ (declare (special |$EmptyMode|))
+ (|htInitPage| '|Sum Basic Command| NIL)
+ (|htMakePage|
+   '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+         (|isDomain| S (|String|)) (|isDomain| SY (|Symbol|)))
+     (|text| . "\\newline ")
+     (|text| . "\\menuitemstyle{}\\tab{2}")
+     (|text| . "Enter the {\\em function} you would like to sum:")
+     (|text| . "\\newline\\tab{2} ")
+     (|bcStrings| (44 "i**3" |summand| EM))
+     (|text| . "\\blankline ") (|text| . "\\newline ")
+     (|text| . "\\menuitemstyle{}\\tab{2}")
+     (|text| . "Enter the {\\em summation index}:")
+     (|text| . "\\tab{36}") (|bcStrings| (10 |i| |index| SY))
+     (|text| . "\\blankline ") (|text| . "\\newline ")
+     (|text| . "\\menuitemstyle{}\\tab{2}")
+     (|text| . "Enter the limits of the sum:")
+     (|text| . "\\newline\\tab{10}{\\em From:}")
+     (|bcStrings| (10 1 |first| S))
+     (|text| . "\\tab{32}{\\em To:}") (|text| . "\\tab{36}")
+     (|bcStrings| (10 |n| |last| S))
+     (|doneButton| "Continue" |bcSumGen|)))
+ (|htShowPage|))
+
+(defun |bcSumGen| (htPage)
+ (let (mand index car last)
+  (setq mand  (|htpLabelInputString| htPage '|summand|))
+  (setq index (|htpLabelInputString| htPage '|index|))
+  (setq car   (|htpLabelInputString| htPage '|first|))
+  (setq last  (|htpLabelInputString| htPage '|last|))
+  (|bcGen| (concat "sum(" mand "," index " = " car ".." last ")"))))
+
+(defun |bcSystemSolve| (htPage p)
+ (declare (ignore htPage p))
+ (|htInitPage| "Basic Solve Command" NIL)
+ (|htMakePage|
+   '((|domainConditions| (|isDomain| PI (|PositiveInteger|)))
+     (|inputStrings|
+       ("Enter the {\\em number} of equations:" "" 5 2
+          |numberOfEquations| PI))))
+ (|htMakeDoneButton| "Continue" '|bcSystemSolveEqns1|)
+ (|htShowPage|))
+
+(defun |bcTaylorSeries| (a b)
+ (declare (ignore a b))
+ (declare (special |$EmptyMode|))
+ (|htInitPage| "Taylor Series Basic Command" NIL)
+ (|htMakePage|
+  '((|domainConditions| (|isDomain| EM |$EmptyMode|)
+        (|isDomain| EEM (|Expression| |$EmptyMode|))
+        (|isDomain| S (|String|)) (|isDomain| SY (|Symbol|)))
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the formula for the general coefficient of the series")
+    (|text| . "\\newline\\tab{2} ")
+    (|bcStrings| (55 "1/factorial(i)" |formula| EM))
+    (|text| . "\\blankline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em index variable} for your formula")
+    (|text| . "\\tab{49}") (|bcStrings| (8 |i| |index| SY))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em power series variable}")
+    (|text| . "\\tab{49}") (|bcStrings| (8 |x| |variable| SY))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em point} about which you want to expand")
+    (|text| . "\\tab{49}") (|bcStrings| (8 0 |point| EM))
+    (|text| . "\\blankline ")
+    (|text| .
+"For Taylor Series, the exponent of the power series variable ranges  from an {\\em initial value}, an arbitrary non-negative integer, to plus infinity; the {\\em step size} is any positive integer.")
+    (|text| . "\\blankline ") (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em initial value} of the index (an integer)")
+    (|text| . "\\tab{49}") (|bcStrings| (8 "0" |min| I))
+    (|text| . "\\newline ")
+    (|text| . "\\menuitemstyle{}\\tab{2}")
+    (|text| . "Enter the {\\em step size} (a positive integer)")
+    (|text| . "\\tab{49}") (|bcStrings| (8 "1" |step| PI))
+    (|doneButton| "Continue" |bcTaylorSeriesGen|)))
+ (|htShowPage|))
+
+(defun |bcTaylorSeriesGen| (htPage)
+ (|bcSeriesGen| htPage))
+
+(defun |bcUnixTable| (u)
+ (declare (special firstTime))
+ (let (filename)
+  (|htSay| "\\newline")
+  (|htBeginTable|)
+  (setq firstTime t)
+  (loop for x in u do
+    (|htSay| "{")
+    (setq filename (namestring ($findfile (princ-to-string x) "SPAD")))
+    (|htMakePage|
+     (list
+       (list '|text| "\\unixcommand{" (pathname-name x) 
+             "}{$AXIOM/lib/SPADEDIT " filename "} ")))
+    (|htSay| "}"))
+  (|htEndTable|)))
+
+(defun |bcVectorGen| (vec)
+ (|bcwords2liststring| vec))
+
+(defun |bcvspace| ()
+ (|bcHt| "\\vspace{1}\\newline "))
+
+(defun |bcwords2liststring| (words)
+ (format nil "[~{~A~^, ~}]" words))
+
+(defun |beforeAfter| (x u)
+  (prog (y r)
+    (return
+      (SEQ (cons (prog (G166514)
+                   (setq G166514 nil)
+                   (return
+                     (DO ((G166504 u (CDR G166504)))
+                         ((or (atom G166504)
+                              (progn
+                                (progn
+                                  (setq y (car G166504))
+                                  (setq r (cdr G166504))
+                                  G166504)
+                                nil)
+                              (null (NEQUAL x y)))
+                          (NREVERSE0 G166514))
+                       (SEQ (EXIT (setq G166514 (cons y G166514)))))))
+                 (cons r nil))))))
+
+(defun BesselI (v z)
+ (let ((b1 15.0))
+  (cond
+   ((and (zerop z) (floatp v) (not (< v 0.0)))
+     (if (zerop v) 1.0 0.0))
+   ; Transformations for negative integer orders
+   ((and (floatp v) (zerop (fracpart v)) (minusp v))
+     (BesselI (- v) z))
+   ; Halfplane transformations for Re(z)<0
+   ((< (realpart z) 0.0)
+     (* (BesselI v (- z)) (expt (- 1.0) v)))
+   ; Conjugation for complex order and real argument
+   ((and (< (realpart v) 0.0) (null (zerop (imagpart v))) (floatp z))
+     (conjugate (BesselI (conjugate v) z)))
+   ; We now know that Re(z)>= 0.0 (asymptotic argument case)
+   ((< b1 (abs z))
+     (FloatError "BesselI not implemented for ~S" (list v z)))
+   ((< b1 (abs v))
+     (FloatError "BesselI not implemented for ~S" (list v z)))
+   ; case of small argument and order
+   ((not (< (realpart v) 0.0))
+     (besselIback v z))
+   ((< (realpart v) 0.0)
+     (besselIcheb z v 50))
+   (t
+     (FloatError "BesselI not implemented for ~S" (list v z))))))
+
+(defun besselIback (v z)
+ (let (result vp1 tv n m lm rpv ipv)
+  (setq ipv (imagpart v))
+  (setq rpv (realpart v))
+  (setq lm (multiple-value-list (floor rpv)))
+  (setq m (car lm))                ; floor of real part of v
+  (setq n (* 2 (max 20 (+ m 10)))) ; how large the back recurrence should be
+  (setq tv (+ (cadr lm) (- v rpv))); fractional part of real part of v
+                                   ; plus imaginary part of v
+  (setq vp1 (+ tv 1.0))
+  (setq result (BesselIBackRecur v m tv z "I" n))
+  (setq result (* (/ result (cgammaImpl vp1)) (expt (/ z 2.0) tv)))))
+
+(defun besselIcheb (z v n)
+ (let (result arr sum tmp1 vp1 w arg)
+  (setq arg (/ (* z z) 4.0))
+  (setq w (* 2.0 arg))
+  (setq vp1 (+ v 1.0))
+  (setq tmp1 (chebf01coefmake vp1 w n))
+  (setq sum (car tmp1))
+  (setq arr (cadr tmp1))
+  (setq result
+    (* (/ (chebstarevalarr arr (/ arg w) n) (cgammaImpl vp1))
+       (expt (/ z 2.0) v)))))
+
+(defun BesselJ (v z)
+ (let (arr sum t1 vp1 w arg rz rv n b2 b1)
+  (setq b1 10)  ; Ad hoc boundaries for approximation
+  (setq b2 10)
+  (setq n 50)   ; number of terms in Chebychev series.
+  (cond
+   ; tests for negative integer order
+   ((or (and (floatp v) (zerop (fracpart v)) (minuspl v))
+        (and (complexp v) (zerop (imagpart v)) (zerop (fracpart (realpart v)))
+             (< (realpart v) 0.0)))
+     ; odd or even according to v (9.1.5 A&S)
+     ; $J_{-n}(z)=(-1)^{n} J_{n}(z)$
+     (* (BesselJ (- v) z) (expt (- 1.0) v)))
+   ((or (and (floatp z) (minusp z)) (and (complexp z) (< (realpart z) 0.0)))
+     ; negative argument (9.1.35 A&S) 
+     ; $J_{\nu}(z e^{m \pi i}) = e^{m \nu \pi i} J_{\nu}(z)$
+     (* (BesselJ v (- z)) (expt (- 1.0) v)))
+   ((and (zerop z)
+         (or (and (floatp v) (not (< v 0.0)))
+             (and (complexp v) (zerop (imagpart v)) 
+                  (not (< (realpart v) 0.0)))))
+     ; zero arg, pos. real order
+     (if (zerop v) 1.0 0.0))
+    (t
+      (setq rv (abs v))
+      (setq rz (abs z))
+      (cond
+       ((and (< b1 rz) (< (* b2 rv) rz))   ; asymptotic argument
+         (BesselJAsympt v z))
+       ((and (< b1 rv) (< (* b2 rz) rv))   ; asymptotic order
+         (BesselJAsymptOrder v z))
+       ((and (< rz b1) (< rv b1))          ; small order and argument
+          (setq arg (- (/ (* z z) 4.0)))
+          (setq w (* 2.0 arg))
+          (setq vp1 (+ v 1.0))
+          (setq t1 (chebf01coefmake vp1 w n))
+          (setq sum (car t1))
+          (setq arr (cadr t1))
+          ; if we get NaNs then half n
+          ((lambda ()
+             (loop
+              (cond
+               ((= sum sum) (return nil))
+               (t
+                 (setq n (floor (/ n 2)))
+                 (setq t1 (chebf01coefmake vp1 w n))
+                 (setq sum (car t1))
+                 (setq arr (cadr t1))
+                 t1)))))
+          ; now n is safe, can we increase it (we know that 2*n is bad)?
+          (* (/ (chebstarevalarr arr (/ arg w) n) (cgammaImpl vp1))
+             (expt (/ z 2.0) v)))
+      (t (BesselJRecur v z)))))))
+
+(defun BesselJAsympt (v z)
+ (let (zfth zsqr mu)
+   (setq mu (* (* 4.0 v) v))
+   (setq zsqr (* z z))
+   (setq zfth (* zsqr zsqr))
+   (* (* (sqrt (/ 2.0 (* Pi z))) (exp (BesselasymptA mu zsqr zfth)))
+      (cos (- (- (BesselasymptB mu z zsqr zfth)
+                 (/ (* Pi v) 2.0))
+              (/ Pi 4.0))))))
+
+(defun BesselJAsymptOrder (v z)
+ (let (ca8 ca4 ca2 ca tanhalpha alpha sechalpha)
+  (setq sechalpha (/ z v))
+  (setq alpha (acosh (/ 1.0 sechalpha)))
+  (setq tanhalpha (sqrt (- 1.0 (* sechalpha sechalpha))))
+  (setq ca (/ 1.0 tanhalpha))
+  (setq ca2 (* ca ca))
+  (setq ca4 (* ca2 ca2))
+  (setq ca8 (* ca4 ca4))
+  (* (/ (exp (- (* v (- alpha tanhalpha))))
+              (sqrt (* (* (* 2.0 Pi) v) tanhalpha)))
+     (+ (+ (+ (+ (+ (+ 1.0 (/ (* (horner '(-5.0 3.0) ca2) ca)
+                              (* v 24.0)))
+                    (/ (* (horner '(385.0 -462.0 81.0) ca2) ca2)
+                       (* (* 1152.0 v) v)))
+                 (/ (* (* (horner
+                            '(-425425.0 765765.0 -369603.0 30375.0)
+                            ca2)
+                          ca2)
+                       ca)
+                    (* (* (* 414720.0 v) v) v)))
+              (/ (* (horner
+                      '(1.85910725E8 -4.4618574E8 3.4992243E8 
+                        -9.4121676E7 4465125.0)
+                      ca2)
+                    ca4)
+                 (* (* (* (* 3.981312E7 v) v) v) v)))
+           (/ (* (* (horner
+                      '(-1.88699385875E11 5.66098157625E11
+                        -6.1413587235E11  2.84499769554E11
+                        -4.9286948607E10  1.519035525E9)
+                      ca2)
+                    ca4)
+                  ca)
+              (* (* (* (* (* 6.68860416E9 v) v) v) v) v)))
+        (/ (* (* (horner
+                   '(1.023694168371875E15 -3.6852990061387505E15
+                     5.104696716244125E15 -3.36903206826186E15
+                     1.050760774457901E15 -1.2757729835475E14
+                     2.757049477875E12)
+                   ca2)
+                 ca4)
+              ca2)
+           (* (* (* (* (* (* 4.8157949952E12 v) v) v) v) v) v))))))
+
+(defun BesselJRecur (v z)
+ (let (w m so)
+  ; boost order. Numerical.Recipes. suggest so:=v+sqrt(n.s.f.^2*v)
+  (setq so (* 15.0 z))
+  ; reduce order until non-zero
+  (loop while (not (zerop (abs (BesselJAsymptOrder so z)))) do
+    (setq so (/ so 2.0)))
+  (when (< (abs so) (abs z))
+    (setq so (+ v (* 18.0 (sqrt v)))))
+  (setq m (+ (floor (abs (- so v))) 1))
+  (setq w (make-array m))
+  (setf (aref w (- m 1)) (BesselJAsymptOrder (- (+ v m) 1) z))
+  (setf (aref w (- m 2)) (BesselJAsymptOrder (- (+ v m) 2) z))
+  (loop for i from (- m 3) downto 0 by 1 do
+    (setf (aref w i)
+      (- (/ (* (* 2.0 (+ (+ v i) 1.0)) (aref w (+ i 1))) z)
+         (aref w (+ i 2)))))
+  (aref w 0)))
+
+(defun bpitrace (binDef alias modemap options)
+  (trace3 (gensym) modemap (cons (list 'alias alias) options) binDef))
+
+(defun |bracketString| (string)
+  (CONCAT "[" string "]"))
+
+(defun |break| (msg)
+ (let (condition)
+  (declare (special /breakcondition))
+   (setq condition (|MONITOR,EVALTRAN| /breakcondition nil))
+   (when (eval condition) (|sayBrightly| msg))))
+
+; vars is "all" or a list of variables
+; $letAssoc ==> (.. (=fn .. (BREAK . all))) OR (.. (=fn .. (BREAK . vl)))
+(defun |breaklet| (fn binDef vars)
+ (let (|$QuickLet| pair fnEntry)
+  (declare (special |$QuickLet| |$letAssoc| |$traceletFunctions|))
+  (when (and binDef (|stupidIsSpadFunction| binDef))
+    (when (compiled-function-p binDef) (setq fn (bpiname binDef))))
+  (cond
+   ((eq fn '|Undef|) nil)
+   (t
+    (setq fnEntry (lassoc fn |$letAssoc|))
+    (setq vars
+     (if (setq pair (|assoc| 'break fnEntry))
+       (|union| vars (cdr pair))
+       vars))
+     (setq |$letAssoc|
+      (cond
+       ((null fnEntry)
+          (cons (cons fn (list (cons 'break vars))) |$letAssoc|))
+       (pair (rplacd pair vars) |$letAssoc|)))
+     (setq |$QuickLet| nil)
+     (when (and (null (member fn |$traceletFunctions|))
+                (null (|stupidIsSpadFunction| fn))
+                (null (gensymp fn)))
+        (setq |$traceletFunctions| (cons fn |$traceletFunctions|))
+        (|compileBoot| fn)
+        (setq |$traceletFunctions| (|delete| fn |$traceletFunctions|)))))))
+
+(defun brightprint (x)
+ (messageprint x))
+
+(defun brightprint-0 (x)
+ (messageprint-1 x))
+ 
+(defun |browse| (socket)
+ (let (axserv browser)
+  (if socket 
+    (setq socket (car socket))
+    (setq socket 8085))
+  (|set| '(|mes| |auto| |off|))
+  (|set| '(|out| |mathml| |on|))
+  (|loadLib| '|AxiomServer|)
+  (setq axserv (|AxiomServer|))
+  (setq browser 
+   (|AXSERV;axServer;IMV;2| socket
+    (cons #'|AXSERV;multiServ;SeV;3| axserv) axserv))))
+
+(defun browseopen ()
+ "open the constructor database and hash the keys"
+ (declare (special $spadroot *allconstructors* *browse-stream*
+                   *browse-stream-stamp*))
+ (let (constructors pos stamp dbstruct)
+  (setq *browse-stream* (open (DaaseName "browse.daase" nil)))
+  (setq stamp (read *browse-stream*))
+  (unless (equal stamp *browse-stream-stamp*)
+   (format t "   Re-reading browse.daase")
+   (setq *browse-stream-stamp* stamp)
+   (setq pos (car stamp))
+   (file-position *browse-stream* pos)
+   (setq constructors (read *browse-stream*))
+   (dolist (item constructors)
+    (unless (setq dbstruct (get (car item) 'database))
+     (format t "browseopen:~%")
+     (format t "the browse database contains a contructor ~a~%" item)
+     (format t "that is not in the interp.daase file. we cannot~%")
+     (format t "get the database structure for this constructor and~%")
+     (warn "will create a new one~%")
+     (setf (get (car item) 'database) (setq dbstruct (make-database)))
+     (setq *allconstructors* (adjoin item *allconstructors*)))
+    (setf (database-sourcefile dbstruct) (second item))
+    (setf (database-constructorform dbstruct) (third item))
+    (setf (database-documentation dbstruct) (fourth item))
+    (setf (database-attributes dbstruct) (fifth item))
+    (setf (database-predicates dbstruct) (sixth item))
+    (setf (database-parents dbstruct) (seventh item))))
+  (format t "~&")))
+
+(defun |buildHtMacroTable| ()
+ (let (fn)
+  (declare (special |$htMacroTable| |$primitiveHtCommands|))
+  (setq fn (concat (getenviron "AXIOM") "/doc/util.ht"))
+  (cond 
+   ((probe-file fn)
+    (with-open-file (instream fn)
+     (loop
+       for line = (read-line instream nil :eof)
+       until (eq line :eof)
+       do
+        (when 
+         (multiple-value-bind (command numOfArgs) (|getHtMacroItem| line)
+          (hput |$htMacroTable| command numOfArgs))))
+     (dolist (pair |$primitiveHtCommands|)
+      (hput |$htMacroTable| (car pair) (cdr pair)))))
+   (t (|sayBrightly| "Warning: macro table not found")))
+  |$htMacroTable|))
+
+(defun |buttonNames| (buttons)
+  (prog (buttonName)
+    (return
+      (SEQ (prog (G166645)
+             (setq G166645 nil)
+             (return
+               (DO ((G166651 buttons (cdr G166651))
+                    (G166637 nil))
+                   ((or (atom G166651)
+                        (progn (setq G166637 (car G166651)) nil)
+                        (progn
+                          (progn
+                            (setq buttonName (caddr G166637))
+                            G166637)
+                          nil))
+                    (NREVERSE0 G166645))
+                 (SEQ (EXIT (setq G166645
+                                  (cons buttonName G166645)))))))))))
+
+
+(defun canFuncall? (fn)
+ (if (identp fn)
+  (and (fboundp fn) (not (macro-function fn)))
+  (functionp fn)))
+
+(defun categoryopen ()
+ "open category.daase and hash the keys"
+ (declare (special $spadroot *hasCategory-hash* *category-stream*
+                   *category-stream-stamp*))
+ (let (pos keys stamp)
+  (setq *category-stream* (open (DaaseName "category.daase" nil)))
+  (setq stamp (read *category-stream*))
+  (unless (equal stamp *category-stream-stamp*)
+   (format t "   Re-reading category.daase")
+   (setq *category-stream-stamp* stamp)
+   (setq pos (car stamp))
+   (file-position *category-stream* pos)
+   (setq keys (read *category-stream*))
+   (setq *hasCategory-hash* (make-hash-table :test #'equal))
+   (dolist (item keys)
+    (setf (gethash (first item) *hasCategory-hash*) (second item))))
+  (format t "~&")))
+
+(defun |catchCoerceFailure| (fn x t1 t2)
+ (let (c)
+  (declare (special |$coerceFailure|))
+  (setq c (catch '|coerceFailure| (funcall fn x t1 t2)))
+  (if (equal c |$coerceFailure|)
+   (|throwKeyedMsgCannotCoerceWithValue| (|wrap| (|unwrap| x)) t1 t2)
+   c)))
+
+(defun cbesseli (v z)
+  (c-to-s (BesselI (s-to-c v) (s-to-c z)) ))
+
+(defun cbesselj (v z)
+  (c-to-s (BesselJ (s-to-c v) (s-to-c z)) ))
+
+(defun cgamma (z)
+  (c-to-s (cgammaImpl (s-to-c z)) ))
+
+(defun cgammaImpl (z)
+  (if (zerop (imagpart z))
+    (rgammaImpl (realpart z))
+    (exp (clngammaImpl (realpart z) (imagpart z) z))))
+
+(defun |changeHistListLen| (n)
+ (let (dif l) 
+ (declare (special |$HistListLen| |$HistList| |$HistListAct|))
+ (if (null (integerp n)) 
+   (|sayKeyedMsg| 
+    (format nil
+     "The argument n for )history )change n must be a nonnegative integer ~
+      and your argument, %1 , is not one.")
+     (list n)) ; only positive integers
+   (progn
+     (setq dif (- n |$HistListLen|))
+     (setq |$HistListLen| n) 
+     (setq l (cdr |$HistList|)) 
+     (cond 
+      ((> dif 0) 
+        (do ((i 1 (1+ i)))
+            ((> i dif) nil)
+           (setq l (cons nil l))))
+      ((minusp dif)
+        (do ((tmp0 (- dif)) 
+             (i 1 (1+ i)))
+            ((> i tmp0) nil)
+           (setq l (cdr l)))
+        (cond
+         ((> |$HistListAct| n) (setq |$HistListAct| n))
+         (t nil))))
+     (rplacd |$HistList| l) 
+     '|done|))))
+
+(defun |changeToNamedInterpreterFrame| (name)
+ "Change to the Named Interpreter Frame"
+ (let (frame)
+ (declare (special |$interpreterFrameRing|))
+   (|updateCurrentInterpreterFrame|)
+   (setq frame (|findFrameInRing| name))
+   (when frame
+     (setq |$interpreterFrameRing|
+       (cons frame (delete |$interpreterFrameRing| frame :test #'equal)))
+     (|updateFromCurrentInterpreterFrame|))))
+
+(defun |charDigitVal| (c)
+ (let (digits n)
+  (setq digits "0123456789")
+  (setq n (- 1)) 
+  (do ((tmp0 (- (|#| digits) 1)) (i 0 (1+ i)))
+      ((or (> i tmp0) (null (minusp n))) nil)
+   (if (char= c (elt digits i))
+    (setq n i)
+    nil))
+  (if (minusp n) 
+   (|error| "Character is not a digit")
+   n)))
+
+(defun chebf01 (c z)
+ (let (cc temp b p sum rho divfac c1 x1 arr
+       ncount z1 a1 a2 a3 n2 n1 start four w n)
+  (setq n 75)                       ; ad hoc decision
+  (setq w (* 2.0 z))
+  ; arr will be used to store the Cheb. series coefficients
+  (setq four 4.0)
+  (setq start (expt 10.0 -200))
+  (setq n1 (+ n 1))
+  (setq n2 (+ n 2))
+  (setq a3 0.0)
+  (setq a2 0.0)
+  (setq a1 start)                   ; arbitrary starting value
+  (setq z1 (/ four w))
+  (setq ncount n1)
+  (setq arr (make-array n2))
+  (setf (aref arr ncount) start)  ; start off
+  (setq x1 n2)
+  (setq c1 (- 1.0 c))
+  (loop for ncount from n downto 0 by 1 do
+    (setq divfac (/ 1.0 x1))
+    (setq x1 (- x1 1.0))
+    (setf (aref arr ncount)
+      (* x1 (- (+ (* (+ divfac (* z1 (- x1 c1))) a1)
+                  (* (+ (/ 1.0 x1) (* z1 (+ (+ x1 c1) 1.0))) a2))
+               (* divfac a3))))
+    (setq a3 a2)
+    (setq a2 a1)
+    (setq a1 (aref arr ncount)))
+  (setf (aref arr 0) (/ (aref arr 0) 2.0))
+  ; compute scale factor
+  (setq rho (aref arr 0))  
+  (setq sum rho)
+  (setq p 1.0)
+  (loop for i from 1 to n1 do
+    (setq rho (- rho (* p (aref arr i))))
+    (setq sum (+ sum (aref arr i)))
+    (setq p (- p)))
+  (loop for m from 0 to n1 do
+    (setf (aref arr m) (/ (aref arr m) rho)))
+  (setq sum (/ sum rho))
+  ; Now evaluate array at argument
+  (setq b 0.0)
+  (setq temp 0.0)
+  (loop for i from (+ n 1) downto 0 by 1 do
+    (setq cc b)
+    (setq b temp)
+    (setq temp (+ (- cc) (aref arr i))))
+  temp))
+
+(defun |checkCondition| (s1 string condList)
+  (prog (pred t2 t3 pvar t4 pattern val type data newType)
+    (return
+      (cond
+        ((and (consp condList) (eq (QCDR condList) nil)
+              (progn
+                (setq t2 (qcar condList))
+                (and (consp t2)
+                     (eq (QCAR t2) '|Satisfies|)
+                     (progn
+                       (setq t3 (QCDR t2))
+                       (and (consp t3)
+                            (progn
+                              (setq pvar (QCAR t3))
+                              (setq t4 (QCDR t3))
+                              (AND (consp t4)
+                                   (eq (QCDR t4) nil)
+                                   (progn
+                                     (setq pred (QCAR t4))
+                                     t))))))))
+         (setq val (funcall pred string))
+         (cond
+           ((stringp val) val)
+           (t (cons '(|String|) (|wrap| s1)))))
+        ((null (and (consp condList) (eq (qcdr condList) nil)
+                    (progn
+                      (setq t2 (qcar condList))
+                      (and (consp t2)
+                           (eq (qcar t2) '|isDomain|)
+                           (progn
+                             (setq t3 (QCDR t2))
+                             (and (consp t3)
+                                  (progn
+                                    (setq pvar (QCAR t3))
+                                    (setq t4
+                                     (QCDR t3))
+                                    (and (consp t4)
+                                     (eq (QCDR t4) nil)
+                                     (progn
+                                       (setq pattern
+                                        (QCAR t4))
+                                       t)))))))))
+         (|systemError|
+             "currently invalid domain condition"))
+        ((equal pattern '(|String|))
+         (cons '(|String|) (|wrap| s1)))
+        (t (setq val (|parseAndEval| string))
+         (cond
+           ((stringp val)
+            (cond
+              ((equal val "Syntax Error ")
+               "Error: Syntax Error ")
+              (t (|condErrorMsg| pattern))))
+           (t (setq type (car val))
+            (setq data (cdr val))
+            (setq newType
+                     (catch 'spad_reader
+                       (|resolveTM| type pattern)))
+            (cond
+              ((null newType) (|condErrorMsg| pattern))
+              (t (|coerceInt| val newType))))))))))
+
+(defun |checkFilter| (filter)
+  (setq filter (princ-to-string filter))
+  (if (string= filter "") 
+   "*"
+   (|trimString| filter)))
+
+(defun |chkAllNonNegativeInteger| (s)
+  (prog (u)
+    (return
+      (or (and (setq u (|ncParseFromString| s))
+               (|member| u '(|a| |al| |all| A AL ALL)) 'ALL)
+          (|chkNonNegativeInteger| s)
+                        "Please enter {\\em all} or a non-negative integer"))))
+
+(defun |chkDirectory| (s) s) 
+
+(defun |chkNameList| (x)
+  (prog (u parsedNames)
+    (return
+      (SEQ (progn
+             (setq u (|bcString2ListWords| x))
+             (setq parsedNames
+                      (prog (G167635)
+                        (setq G167635 nil)
+                        (return
+                          (DO ((G167640 u (CDR G167640))
+                               (x nil))
+                              ((or (atom G167640)
+                                   (progn
+                                     (setq x (car G167640))
+                                     nil))
+                               (NREVERSE0 G167635))
+                            (SEQ (EXIT (setq G167635
+                                        (cons (|ncParseFromString| x)
+                                         G167635))))))))
+             (cond
+               ((prog (G167646)
+                  (setq G167646 t)
+                  (return
+                    (DO ((G167652 nil (NULL G167646))
+                         (G167653 parsedNames (CDR G167653))
+                         (x nil))
+                        ((OR G167652 (ATOM G167653)
+                             (progn (setq x (car G167653)) nil))
+                         G167646)
+                      (SEQ (EXIT (setq G167646
+                                       (AND G167646 (identp x))))))))
+                parsedNames)
+               (t
+                "Please enter a list of identifiers separated by blanks")))))))
+
+(defun |chkNonNegativeInteger| (s)
+  (prog (u)
+    (return
+      (cond
+        ((and (setq u (|ncParseFromString| s)) (integerp u)
+              (>= u 0))
+         u)
+        (t "Please enter a non-negative integer")))))
+
+(defun |chkOutputFileName| (s)
+  (cond
+    ((|member| (|bcString2WordList| s) '(CONSOLE |console|))
+     '|console|)
+    (t (|chkDirectory| s))))
+
+(defun |chkPosInteger| (s)
+  (prog (u)
+    (return
+      (cond
+        ((and (setq u (|parseOnly| s)) (integerp u) (> u 0))
+         u)
+        (t "Please enter a positive integer")))))
+
+(defun |chkRange| (s)
+  (prog (u)
+  (declare (special |$htFinal| |$htInitial|))
+    (return
+      (cond
+        ((and (setq u (|ncParseFromString| s)) (integerp u)
+              (>= u |$htInitial|)
+              (or (null |$htFinal|) (<= u |$htFinal|)))
+         u)
+        ((null |$htFinal|)
+         (CONCAT "Please enter an integer greater than "
+                  (|stringize| (- |$htInitial| 1))))
+        (t
+         (CONCAT "Please enter an integer between "
+                  (|stringize| |$htInitial|) " and "
+                  (|stringize| |$htFinal|)))))))
+
+(defun chyper0f1 (a z)
+  (c-to-s (chebf01 (s-to-c a) (s-to-c z)) ))
+
+(defun cleanline (line)
+ (labels (
+   (replaceInLine (thing other line)
+    (do ((mark (search thing line) (search thing line)))
+        ((null mark) line)
+     (setq line
+      (concatenate 'string (subseq line 0 mark) other
+                           (subseq line (+ mark (length thing)))))))
+
+   (removeFromLine (thing line) (replaceInLine thing "" line))
+
+   (removeKeyword (str line)
+    (do ((mark (search str line) (search str line)))
+     ((null mark) line)
+     (let (left point mid right)
+      (setq left (subseq line 0 mark))
+      (setq point (search "}" line :start2 mark))
+      (setq mid (subseq line (+ mark (length str)) point))
+      (setq right (subseq line (+ point 1)))
+      (setq line (concatenate 'string left mid right)))))
+
+   (addSpaces (str line)
+    (do ((mark (search str line) (search str line)) (cnt))
+     ((null mark) line)
+     (let (left point mid right)
+      (setq left (subseq line 0 mark))
+      (setq point (search "}" line :start2 mark))
+      (setq mid (subseq line (+ mark (length str)) point))
+      (if (setq cnt (parse-integer mid :junk-allowed t))
+        (setq mid (make-string cnt :initial-element #\ ))
+        (setq mid ""))
+      (setq right (subseq line (+ point 1)))
+      (setq line (concatenate 'string left mid right)))))
+
+   (splitAtNewline (line) 
+    (do ((mark (search "~%" line) (search "~%" line)) (lines))
+        ((null mark) 
+          (push " " lines)
+          (push line lines)
+          (nreverse lines))
+      (push (subseq line 0 mark) lines)
+      (setq line (subseq line (+ mark 2)))))
+
+   (wrapOneLine (line margin result) 
+    (if (null line) 
+      (nreverse result)
+      (if (< (length line) margin)
+        (wrapOneLine nil margin (append (list line) result))
+        (let (oneline spill aspace)
+         (setq aspace (position #\space (subseq line 0 margin) :from-end t))
+         (setq oneline (string-trim '(#\space) (subseq line 0 aspace)))
+         (setq spill (string-trim '(#\space) (subseq line aspace)))
+         (wrapOneLine spill margin (append (list oneline) result))))))
+
+   (reflowParagraph (line) 
+    (let (lst1)
+     (setq lst1 (splitAtNewLine line))
+     (dolist (x lst1)
+      (mapcar #'(lambda(y) (format t "~a~%" y))
+       (wrapOneLine x 70 nil))))))
+
+ (setq line (removeFromLine "{}" line))
+ (setq line (replaceInLine "\\blankline" "~%~%" line))
+ (setq line (replaceInLine "\\br" "~%" line))
+ (setq line (removeFromLine "\\" line))
+ (dolist (str '("spad{" "spadtype{" "spadop{" "spadfun{" "spadatt{"
+                "axiom{" "axiomType{" "spadignore{" "axiomFun{"
+                "centerline{" "inputbitmap{" "axiomOp{" "spadgloss{"))
+  (setq line (removeKeyword str line)))
+ (setq line (replaceInLine "{e.g.}" "e.g." line))
+ (dolist (str '("tab{" "indented{" ))
+   (setq line (addSpaces str line)))
+  (reflowParagraph line)))
+
+(defun |clear| (l)
+ (|clearSpad2Cmd| l)) 
+
+(defun |clearCmdAll| ()
+  (declare (special |$frameRecord| |$previousBindings| |$variableNumberAlist|
+     |$InteractiveFrame| |$useInternalHistoryTable| |$internalHistoryTable|
+     |$frameMessages| |$interpreterFrameName| |$currentLine| |$traceNames|))
+  (|clearCmdSortedCaches|)
+  (setq |$frameRecord| nil)
+  (setq |$previousBindings| nil)
+  (setq |$variableNumberAlist| nil)
+  (|untraceMapSubNames| |$traceNames|)
+  (setq |$InteractiveFrame| (list (list nil)))
+  (|resetInCoreHist|)
+  (when |$useInternalHistoryTable| 
+    (setq |$internalHistoryTable| nil)
+   (|deleteFile| (|histFileName|)))
+  (setq |$IOindex| 1)
+  (|updateCurrentInterpreterFrame|)
+  (setq |$currentLine| ")clear all")
+  (|clearMacroTable|)
+  (when |$frameMessages|
+    (|sayKeyedMsg| 
+     (format nil
+       "All user variables and function definitions have been cleared in ~
+        the current frame ( %1 ).")
+      (list |$interpreterFrameName|))
+    (|sayKeyedMsg|
+      "All user variables and function definitions have been cleared." nil)))
+
+(defun |clearCmdCompletely| ()
+  (declare (special |$localExposureData| |$xdatabase| |$CatOfCatDatabase|
+    |$DomOfCatDatabase| |$JoinOfCatDatabase| |$JoinOfDomDatabase| 
+    |$attributeDb| |$functionTable| |$existingFiles| 
+    |$localExposureDataDefault|))
+  (|clearCmdAll|)
+  (setq |$localExposureData| (copy-seq |$localExposureDataDefault|))
+  (setq |$xdatabase| nil)
+  (setq |$CatOfCatDatabase| nil)
+  (setq |$DomOfCatDatabase| nil)
+  (setq |$JoinOfCatDatabase| nil)
+  (setq |$JoinOfDomDatabase| nil)
+  (setq |$attributeDb| nil)
+  (setq |$functionTable| nil)
+  (|sayKeyedMsg| "All )browse facility databases have been cleared." nil)
+  (|clearClams|)
+  (|clearConstructorCaches|)
+  (setq |$existingFiles| (make-hash-table :test #'equal))
+  (|sayKeyedMsg|
+    "Internally cached functions and constructors have been cleared." nil)
+  (reclaim)
+  (|sayKeyedMsg| ")clear completely is finished." nil))
+
+(defun |clearCmdExcept| (arg)
+ (let ((opt (car arg)) (vl (cdr arg)))
+ (declare (special |$clearOptions|))
+  (dolist (option |$clearOptions|)
+   (unless (|stringPrefix?| (|object2String| opt) (|object2String| option))
+    (|clearCmdParts| (cons option vl))))))
+
+(defun |clearCmdParts| (arg)
+ (let (|$e| (opt (car arg)) option pmacs imacs (vl (cdr arg)) p1 lm prop p2)
+ (declare (special |$e| |$InteractiveFrame| |$clearOptions|))
+  (setq option (|selectOptionLC| opt |$clearOptions| '|optionError|))
+  (setq option (intern (pname option)))
+  (setq option
+   (case option
+    (|types| '|mode|)
+    (|modes| '|mode|)
+    (|values| '|value|)
+    (t option)))
+  (if (null vl)
+   (|sayKeyedMsg| 
+    (format nil
+     "After the property you wish to clear you must give one or more ~
+      identifiers or specify all to clear that property from everything.")
+     nil)
+   (progn
+    (setq pmacs (|getParserMacroNames|))
+    (setq imacs (|getInterpMacroNames|))
+    (cond
+     ((boot-equal vl '(|all|))
+      (setq vl (assocleft (caar |$InteractiveFrame|)))
+      (setq vl (remdup (append vl pmacs)))))
+    (setq |$e| |$InteractiveFrame|)
+    (do ((t0 vl (cdr t0)) (x nil))
+        ((or (atom t0) (progn (setq x (car t0)) nil)) nil)
+      (|clearDependencies| x t)
+      (when (and (eq option '|properties|) (|member| x pmacs))
+        (|clearParserMacro| x))
+      (when (and (eq option '|properties|) 
+                 (|member| x imacs)
+                 (null (|member| x pmacs)))
+        (|sayMessage| (cons 
+         "   You cannot clear the definition of the system-defined macro "
+          (cons (|fixObjectForPrinting| x) 
+                (cons (intern "." "BOOT") nil)))))
+      (cond
+       ((setq p1 (|assoc| x (caar |$InteractiveFrame|)))
+        (cond
+         ((eq option '|properties|)
+          (cond
+           ((|isMap| x)
+            (seq
+             (cond
+              ((setq lm 
+                (|get| x '|localModemap| |$InteractiveFrame|))
+               (cond
+                ((consp lm)
+                (exit (|untraceMapSubNames| (cons (cadar lm) nil))))))
+              (t nil)))))
+          (dolist (p2 (cdr p1))
+            (setq prop (car p2))
+            (|recordOldValue| x prop (cdr p2))
+            (|recordNewValue| x prop nil))
+          (setf (caar |$InteractiveFrame|)
+           (|deleteAssoc| x (caar |$InteractiveFrame|))))
+         ((setq p2 (|assoc| option (cdr p1)))
+          (|recordOldValue| x option (cdr p2))
+          (|recordNewValue| x option nil)
+          (rplacd p2 nil))))))
+    nil))))
+
+(defun |clearCmdSortedCaches| ()
+ (let (|$lookupDefaults| domain pair)
+  (declare (special |$lookupDefaults| |$Void| |$ConstructorCache|))
+  (do ((t0 (hget |$ConstructorCache| '|SortedCache|) (cdr t0)) 
+       (t1 nil))
+      ((or (atom t0) 
+           (progn
+            (setq t1 (car t0)) 
+            (setq domain (cddr t1))
+            nil))
+         nil)
+    (setq pair (|compiledLookupCheck| '|clearCache| (list |$Void|) domain))
+    (spadcall pair))))
+
+(defun |clearFrame| ()
+ (declare (special |$frameRecord| |$previousBindings|))
+  (|clearCmdAll|)
+  (setq |$frameRecord| nil) 
+  (setq |$previousBindings| nil))
+
+(defun |clearParserMacro| (macro)
+ (declare (special |$pfMacros|))
+ (when (ifcdr (|assoc| macro |$pfMacros|))
+  (setq |$pfMacros| (remalist |$pfMacros| macro))))
+
+(defun |clearSpad2Cmd| (l)
+  (let (|$clearExcept| opt optlist arg)
+  (declare (special |$clearExcept| |$options| |$clearOptions|))
+  (cond 
+   (|$options|
+    (setq |$clearExcept|
+     (prog (t0)
+      (setq t0 t)
+      (return
+       (do ((t1 nil (null t0))
+            (t2 |$options| (cdr t2))
+            (t3 nil))
+           ((or t1 
+                (atom t2)
+                (progn (setq t3 (car t2)) nil)
+                (progn (progn (setq opt (car t3)) t3) nil))
+              t0)
+        (setq t0
+         (and t0 
+              (eq
+               (|selectOptionLC| opt '(|except|) '|optionError|)
+               '|except|)))))))))
+  (cond
+   ((null l)
+     (setq optlist
+      (prog (t4)
+       (setq t4 nil)
+       (return
+        (do ((t5 |$clearOptions| (cdr t5)) (x nil))
+            ((or (atom t5) (progn (setq x (car t5)) nil)) t4)
+         (setq t4 (append t4 `(|%l| "       " ,x)))))))
+     (|sayKeyedMsg|
+      (format nil
+       "Use )clear all to clear everything in the workspace.  Use )clear ~
+        completely to clear everything in the workspace and internal ~
+        tables.  Other )clear keyword arguments are %1 %l or abbreviations ~
+        thereof.  Issue )clear ? for more information.")
+       (list optlist)))
+   (t
+     (setq arg
+      (|selectOptionLC| (car l) '(|all| |completely| |scaches|) nil))
+     (cond
+      ((eq arg '|all|)        (|clearCmdAll|))
+      ((eq arg '|completely|) (|clearCmdCompletely|))
+      ((eq arg '|scaches|)    (|clearCmdSortedCaches|))
+      (|$clearExcept|         (|clearCmdExcept| l))
+      (t 
+       (|clearCmdParts| l)
+       (|updateCurrentInterpreterFrame|))))))) 
+
+(defun clngamma (z)
+  (c-to-s (lncgamma (s-to-c z)) ))
+
+(defun clngammacase1 (real imag z)
+ (- (PiMinusLogSinPi real imag z)
+    (clngammaImpl (- 1.0 real) (- imag) (- 1.0 z))))
+
+(defun clngammacase2 (real imag tz2 z)
+ (let (zpn n)
+  (setq n (float (ceiling (- tz2 real))))
+  (setq zpn (+ z n))
+  (- (+ (- (* (- z 0.5) (log zpn)) zpn) (cgammaBernsum zpn))
+     (cgammaAdjust (logS real imag z n zpn)))))
+
+(defun clngammacase3 (z)
+ (+ (- (* (- z 0.5) (log z)) z) (cgammaBernsum z)))
+
+(defun clngammacase23 (real imag z)
+ (let ((tz2 (cgammat imag)))
+  (if (< real tz2)
+    (clngammacase2 real imag tz2 z)
+    (clngammacase3 z))))
+
+(defun clngammaImpl (real imag z)
+  (cond
+   ((< real 0.0)
+     (if (< 0.0 imag)
+       (conjugate (clngammacase1 real (- imag) (complex real (- imag))))
+       (clngammacase1 real imag z)))
+   ((< imag 0.0)
+     (conjugate (clngammacase23 real (- imag) (complex real (- imag)))))
+   (t
+     (clngammacase23 real imag z))))
+
+(defun |close| (args)
+ (declare (ignore args))
+ (let (numClients opt fullopt quiet x)
+ (declare (special |$SpadServer| |$SessionManager| |$CloseClient|
+     |$currentFrameNum| |$options|))
+  (if (null |$SpadServer|) 
+   (|throwKeyedMsg| "You cannot close this Axiom session." nil))
+   (progn
+    (setq numClients (|queryClients|))
+    (cond
+     ((> numClients 1)
+       (|sockSendInt| |$SessionManager| |$CloseClient|)
+       (|sockSendInt| |$SessionManager| |$currentFrameNum|)
+       (|closeInterpreterFrame| nil))
+     (t
+      (do ((t0 |$options| (cdr t0)) (t1 nil))
+          ((or (atom t0) 
+               (progn (setq t1 (car t0)) nil)
+               (progn (progn (setq opt (car t1)) t1) nil))
+             nil)
+       (setq fullopt (|selectOptionLC| opt '(|quiet|) '|optionError|))
+       (unless quiet (setq quiet (eq fullopt '|quiet|))))
+      (cond
+       (quiet
+        (|sockSendInt| |$SessionManager| |$CloseClient|)
+        (|sockSendInt| |$SessionManager| |$currentFrameNum|)
+        (|closeInterpreterFrame| nil))
+       (t
+        (setq x
+         (upcase
+          (|queryUserKeyedMsg| 
+           "This is the last Axiom session.  Do you want to kill Axiom?"
+           nil)))
+        (when (member (string2id-n x 1) '(yes y)) (bye)))))))))
+
+(defun |closeInterpreterFrame| (name)
+ "Close an Interpreter Frame"
+ (declare (special |$interpreterFrameRing| |$interpreterFrameName|))
+ (let (ifr found)
+    (if (null (cdr |$interpreterFrameRing|))
+     (if (and name (not (equal name |$interpreterFrameName|)))
+       (|throwKeyedMsg| 
+        (format nil "There is only one frame active and therefore that ~
+         cannot be closed. Furthermore, the frame name you gave is not ~
+         the name of the current frame. The current frame is called %1.")
+          (cons |$interpreterFrameName| nil))
+       (|throwKeyedMsg|
+        (format nil "The current frame is the only active one. Issue ~
+                     )clear all to clear its contents.")
+        nil))
+     (progn
+       (if (null name)
+        (setq |$interpreterFrameRing| (cdr |$interpreterFrameRing|))
+        (progn
+          (setq found nil)
+          (setq ifr nil)
+          (dolist (f |$interpreterFrameRing|)
+            (if (or found (not (equal name (frameName f))))
+              (setq ifr (cons f ifr)))
+              (setq found t))
+          (if (null found) 
+           (|throwKeyedMsg|
+             "There is no frame called %1. Your command cannot be processed."
+            (cons name nil))
+           (progn
+             ($erase (|makeHistFileName| name))
+             (setq |$interpreterFrameRing| (nreverse ifr))))))
+       (|updateFromCurrentInterpreterFrame|)))))
+
+#+:gcl (defun compiler::cmpnote (&rest x) (declare (ignore x)))
+
+(defun |coerceBranch2Union| (object union)
+ (let (predList doms p val tag)
+  (setq doms (|orderUnionEntries| (cdr union)))
+  (setq predList (|mkPredList| doms))
+  (setq doms (|stripUnionTags| doms))
+  (setq p (|position| (|objMode| object) doms))
+  (cond
+   ((equal p (- 1))
+     (|keyedSystemError| "The type %1p is not branch of %2p"
+      (list (|objMode| object) union)))
+   (t
+    (setq val (|objVal| object))
+    (if (eq (car (setq tag (elt predlist p))) 'eqcar)
+     (mkObjWrap (cons (|removeQuote| (third tag)) (|unwrap| val)) union)
+     (mkObj val union))))))
+
+(defun |coerceByFunction| (t$ m2)
+ (let ($ m1 ud x tmp1 a tmp2 b funName mm dc tar args slot dcVector fun fn
+       d val env code)
+  (declare (special $ |$coerceFailure| |$Boolean|))
+  (setq x (|objVal| T$))
+  (cond
+   ((eq x '|$fromCoerceable$|) nil)
+   ((eq (car m2) '|Union|) nil)
+   (t
+    (setq m1 (|objMode| t$))
+    (cond
+     ((and (consp m2) (eq (qcar m2) '|Boolean|)
+           (consp m1) (eq (qcar m1) '|Equation|)
+           (PROGN
+            (setq tmp1 (cdr m1))
+            (and (consp tmp1) (eq (cdr tmp1) nil)
+                 (progn (setq ud (car tmp1)) t))))
+       (setq dcVector (|evalDomain| ud))
+       (setq fun
+        (cond
+         ((|isWrapped| x)
+          (|NRTcompiledLookup| '= (list |$Boolean| '$ '$) dcVector))
+         (t
+          (|NRTcompileEvalForm| '= (list |$Boolean| '$ '$) dcVector))))
+       (setq fn (car fun))
+       (setq d (cdr fun))
+       (cond
+        ((|isWrapped| x) 
+         (setq x (|unwrap| x))
+         (mkObjWrap (spadcall (car x) (cdr x) fun) m2))
+        ((null (and (consp x) (eq (car x) 'spadcall)
+               (progn
+                (setq tmp1 (cdr x))
+                (and (consp tmp1)
+                     (progn
+                      (setq a (car tmp1))
+                      (setq tmp2 (cdr tmp1))
+                      (and (consp tmp2)
+                           (progn
+                            (setq b (car tmp2)) t)))))))
+          (|keyedSystemError| "Generated code is incorrect for equation" nil))
+        (t
+         (setq code (list 'spadcall a b fun))
+         (mkObj code |$Boolean|))))
+     (t
+      (cond
+       ((null 
+         (setq mm (|coerceConvertMmSelection| (setq funName '|coerce|) m1 m2)))
+        (setq mm 
+         (|coerceConvertMmSelection| (setq funName '|convert|) m1 m2))))
+      (when mm
+        (setq dc (caar mm))
+        (setq tar (cadar mm))
+        (setq args (cddar mm))
+        (setq slot (cadr mm))
+        (setq dcVector (|evalDomain| dc))
+        (setq fun
+         (cond
+          ((|isWrapped| x) (|NRTcompiledLookup| funName slot dcVector))
+          (t (|NRTcompileEvalForm| funName slot dcVector))))
+        (setq fn (car fun))
+        (setq d (cdr fun))
+        (cond
+         ((equal fn #'|Undef|) nil)
+         ((|isWrapped| x)
+          (setq $ dcVector)
+          (setq val (catch '|coerceFailure| (spadcall (|unwrap| x) fun)))
+          (cond
+           ((equal val |$coerceFailure|) nil)
+           (t (mkObjWrap val m2))))
+         (t
+          (setq env fun)
+          (setq code (list '|failCheck| (list 'spadcall x env)))
+          (mkObj code m2))))))))))
+
+(defun |coerceByTable| (fn x t1 t2 isTotalCoerce)
+ (let (c)
+  (declare (special |$coerceFailure| |$OutputForm|))
+  (cond
+   ((equal t2 |$OutputForm|) nil)
+   ((|isWrapped| x)
+    (setq x (|unwrap| x))
+    (setq c (catch '|coerceFailure| (funcall fn x t1 t2)))
+    (unless (equal c |$coerceFailure|) (mkObjWrap c t2)))
+   (isTotalCoerce (mkObj (list fn x (mkq t1) (mkq t2)) t2))
+   (t
+    (mkObj (list '|catchCoerceFailure| (mkq fn) x (mkq t1) (mkq t2)) t2)))))
+
+(defun |coerceCommuteTest| (t1 t2)
+ (let (u1 u2)
+  (cond
+   ((null (|isLegitimateMode| t2 nil nil)) nil)
+   ((null (setq u1 (|underDomainOf| t1))) nil)
+   ((null (setq u2 (|underDomainOf| t2))) nil)
+   ((null (|underDomainOf| u1)) nil)
+   ((null (|underDomainOf| u2)) nil)
+   (t
+    (and (equal (car (|deconstructT| t1)) (car (|deconstructT| u2)))
+         (equal (car (|deconstructT| t2)) (car (|deconstructT| u1))))))))
+
+(defun |coerceConvertMmSelection| (&rest g1)
+ (labels (
+  (checktargets (funName m1 m2)
+   (let (|$declaredMode| |$reportBottomUpFlag|)
+   (declare (special |$declaredMode| |$reportBottomUpFlag|
+             |coerceConvertMmSelection;AL|))
+    (setq |$declaredMode| nil)
+    (setq |$reportBottomUpFlag| nil)
+    (car
+     (loop for x in (|selectMms1| funName m2 (list m1) (list m1) nil)
+      collect
+      (when (and (|hasCorrectTarget| m2 (car x)) (equal (caddar x) m1))
+       (cons (car x) (cons (cons (cadar x) (list (cadadr x))) (cddr x)))))))))
+ (let (g3)
+  (if (setq g3 (hget |coerceConvertMmSelection;AL| g1))
+    (|CDRwithIncrement| g3)
+    (cdr (hput |coerceConvertMmSelection;AL| g1
+          (cons 1 (apply #'checktargets g1))))))))
+
+(defun |coerceImmediateSubDomain| (val tSuper tSub pred)
+ (when (funcall (|getSubDomainPredicate| tSuper tSub pred) val nil)
+  (mkObj val tSub)))
+
+(defun |coerceInt| (triple t2)
+ (let (val newMode newVal)
+  (if (setq val (|coerceInt1| triple t2))
+    val
+    (when (eq (car (|objMode| triple)) '|Variable|)
+     (setq newMode (|getMinimalVarMode| (|unwrap| (|objVal| triple)) nil))
+     (setq newVal (|coerceInt| triple newMode))
+     (|coerceInt| newVal t2)))))
+
+(defun |coerceInt0| (triple t2)
+ (prog (val t1 s1 s2 let1 t1p valp ans x)
+  (declare (special |$OutputForm| |$Any| |$genValue|))
+  (return
+   (progn
+    (setq val (|objVal| triple))
+    (setq t1 (|objMode| triple))
+    (cond
+     ((eq val '|$fromCoerceable$|) (|canCoerceFrom| t1 t2))
+     ((equal t1 t2) triple)
+     (t
+      (cond
+       ((equal t2 |$OutputForm|) (setq s1 t1) (setq s2 t2))
+       (t
+        (setq s1 t1)
+        (setq s2 t2)
+        (when (equal s1 s2) (return (mkObj val t2)))))
+      (cond
+       ; handle case where we must generate code
+       ((and (null (|isWrapped| val))
+             (or
+              (null (eq (car t1) '|FunctionCalled|))
+              (null |$genValue|)))
+        (|intCodeGenCOERCE| triple t2))
+       ((and (equal t1 |$Any|) 
+             (nequal t2 |$OutputForm|)
+             (progn
+              (setq let1 (|unwrap| val))
+              (setq t1p (car let1))
+              (setq valp (cdr let1))
+              let1)
+             (setq ans (|coerceInt0| (mkObjWrap valp t1p) t2)))
+         ans)
+       (t
+        (unless (eq s1 t1) (setq triple (mkObj val s1)))
+        (when (setq x (|coerceInt| triple s2))
+         (cond
+          ((eq s2 t2) x)
+          (t 
+           (|objSetMode| x t2)
+           x)))))))))))
+
+(defun |coerceInt1| (triple t2)
+ (prog (|$useCoerceOrCroak| t1 sintp t1p valp s body vars tree val symNode 
+        mms ml oldName intName t3 triplep let1 arg tt ans)
+ (declare (special |$useCoerceOrCroak| |$Integer| |$QuotientField|
+                   |$e| |$genValue| |$Symbol| |$AnonymousFunction|
+                   |$OutputForm| |$String| |$Any| |$Void| |$SingleInteger|
+                   |$NonNegativeInteger| |$PositiveInteger| |$EmptyMode|))
+  (return
+   (seq 
+    (progn
+     (setq |$useCoerceOrCroak| t)
+     (cond
+      ((equal t2 |$EmptyMode|) nil)
+      (t 
+       (setq t1 (|objMode| triple))
+       (cond
+        ((equal t1 t2) triple)
+        (t
+         (setq val (|objVal| triple))
+         (cond
+          ((|absolutelyCanCoerceByCheating| t1 t2) (mkObj val t2))
+          ((|isSubDomain| t2 t1) (|coerceSubDomain| val t1 t2))
+          (t
+           (cond
+            ((equal t1 |$SingleInteger|)
+             (cond
+              ((or (equal t2 |$Integer|) (equal t2 |$SingleInteger|))
+                (return (mkObj val t2)))
+              (t
+               (setq sintp (typep val 'fixnum))
+               (cond
+                ((and sintp (equal t2 |$PositiveInteger|) (> val 0))
+                  (return (mkObj val t2)))
+                ((and sintp (equal t2 |$NonNegativeInteger|) (>= val 0))
+                  (return (mkObj val t2))))))))
+           (cond
+            ((and (equal t2 |$SingleInteger|)
+                  (|isEqualOrSubDomain| t1 |$Integer|)
+                  (integerp val))
+              (cond
+               ((typep val 'fixnum) (mkObj val t2))
+               (t nil)))
+            ((equal t2 |$Void|) (mkObj (|voidValue|) |$Void|))
+            ((equal t2 |$Any|) (mkObjWrap (cons t1 (|unwrap| val)) '(|Any|)))
+            ((and (equal t1 |$Any|)
+                  (nequal t2 |$OutputForm|)
+                  (progn
+                   (setq let1 (|unwrap| val))
+                   (setq t1p (car let1))
+                   (setq valp (cdr let1))
+                   let1)
+                  (setq ans (|coerceInt| (mkObjWrap valp t1p) t2)))
+                ans)
+              ; tagged union selectors
+            ((or (and (eq (car t1) '|Variable|) (equal (cadr t1) t2))
+                 (and (eq (car t2) '|Variable|) (equal (cadr t2) t1)))
+              (mkObj val t2))
+            ((stringp t2)
+                 (cond
+                  ((and (eq (first t1) '|Variable|)
+                        (equal t2 (pname (second t1))))
+                    (mkObjWrap t2 t2))
+                  (t
+                   (setq valp (|unwrap| val))
+                   (when (and (equal t2 valp)
+                              (or (equal valp t1) (equal t1 |$String|)))
+                    (mkObj val t2)))))
+            ((eq (first t1) '|Tuple|)
+              (|coerceInt1|
+               (mkObjWrap
+                (|asTupleAsList| (|unwrap| val))
+                (list '|List| (setq s (second t1))))
+               t2))
+            ((and (consp t1) (eq (qcar t1) '|Union|))
+              (|coerceIntFromUnion| triple t2))
+            ((and (consp t2) (eq (qcar t2) '|Union|))
+              (|coerceInt2Union| triple t2))
+            ((and (stringp t1) (equal t2 |$String|))
+              (mkObj val |$String|))
+            ((and (stringp t1) (eq (car t2) '|Variable|))
+              (when (equal t1 (pname (second t2))) (mkObjWrap (second t2) t2)))
+            ((and (stringp t1) (equal t1 (|unwrap| val)))
+              (when (equal t2 |$OutputForm|) (mkObj t1 |$OutputForm|)))
+            ((atom t1) nil)
+            (t
+             (cond
+              ((and (equal t1 |$AnonymousFunction|)
+                    (eq (car t2) '|Mapping|))
+                (setq |$useCoerceOrCroak| nil)
+                (setq let1 (|unwrap| val))
+                (setq vars (cadr let1))
+                (setq body (cddr let1))
+                (setq vars
+                 (cond
+                  ((atom vars) (cons vars nil))
+                  ((and (consp vars) (eq (qcar vars) '|Tuple|)) (cdr vars))
+                  (t vars)))
+                (cond
+                 ((nequal (|#| (cddr t2)) (|#| vars)) '|continue|)
+                 (t
+                  (setq tree
+                   (|mkAtree|
+                    (cons 'adef
+                     (cons vars
+                      (cons (cons (cadr t2) (cddr t2))
+                       (cons (loop for x in (cdr t2) collect nil)
+                        body))))))
+                  (cond
+                   ((eq
+                     (catch '|coerceOrCroaker| (|bottomUp| tree)) '|croaked|)
+                     nil)
+                   (t (return (|getValue| tree))))))))
+           (cond
+            ((and (equal t1 |$Symbol|) (eq (car t2) '|Mapping|))
+              (cond
+               ((null (setq mms
+                       (|selectMms1| (|unwrap| val) nil 
+                         (cddr t2) (cddr t2) (cadr t2))))
+                 nil)
+               (t
+                (cond
+                 ((nequal (cadaar mms) (cadr t2)) nil)
+                 (|$genValue|
+                  (mkObjWrap 
+                   (|getFunctionFromDomain|
+                    (|unwrap| val) (caaar mms) (cddaar mms)) t2))
+                 (t
+                  (mkObj
+                   (|NRTcompileEvalForm| 
+                      (|unwrap| val) (cdaar mms) (|evalDomain| (caaar mms)))
+                    t2))))))
+            ((and (eq (car t1) '|Variable|) (eq (car t2) '|Mapping|))
+              (setq mms 
+               (|selectMms1| (cadr t1) (cadr t2) (cddr t2) (cddr t2) nil))
+              (cond
+               ((and (null mms)
+                     (null 
+                      (setq mms 
+                       (|selectMms1| (cadr t1) (cadr t2) 
+                                     (cddr t2) (cddr t2) t))))
+                 nil)
+               (t
+                (cond
+                 ((nequal (cadaar mms) (cadr t2)) nil)
+                 ((eq (caaaar mms) '|_FreeFunction_|) 
+                   (mkObj (cdaaar mms) t2))
+                 (|$genValue|
+                   (mkObjWrap
+                    (|getFunctionFromDomain| (cadr t1) (caaar mms) 
+                                             (cddaar mms)) t2))
+                 (t
+                  (mkObj
+                    (|NRTcompileEvalForm| (cadr t1) (cdr (caar mms)) 
+                     (|evalDomain| (caaar mms)))
+                    t2))))))
+            ((and (eq (car t1) '|FunctionCalled|) (eq (qcar t2) '|Mapping|))
+              (setq symNode (|mkAtreeNode| (cadr t1)))
+              (|transferPropsToNode| (cadr t1) symNode)
+              (cond
+               ((null
+                 (setq mms
+                  (|selectLocalMms| symNode (cadr t1) (cddr t2) (cadr t2))))
+                 nil)
+               (t
+                (cond
+                 ((nequal (cadaar mms) (cadr t2)) nil)
+                 (t
+                  (setq ml (cons (cadr t2) (cddr t2)))
+                  (setq intName
+                   (when
+                    (some #'(lambda (mm)
+                             (setq oldName (second mm))
+                             (|compareTypeLists| (cdar mm) ml)) mms)
+                    (list oldName)))
+                  (cond
+                   ((null intName) nil)
+                   (t (mkObjWrap intName t2))))))))
+            ((eq (car t1) '|FunctionCalled|)
+              (setq t3 (|get| (second t1) '|mode| |$e|))
+              (when (and (eq (car t3) '|Mapping|)
+                         (setq triplep (|coerceInt| triple t3)))
+               (|coerceInt| triplep t2)))
+            ((and (eq (car t1) '|Variable|)
+                  (consp t2)
+                  (or (|isEqualOrSubDomain| t2 |$Integer|)
+                      (equal t2 (list |$QuotientField| |$Integer|))
+                      (member (car t2)
+                       '(|RationalNumber| |BigFloat|
+                         |NewFloat| |Float| |DoubleFloat|))))
+               nil)
+            (t
+             (setq ans
+              (or
+               (|coerceRetract| triple t2)
+               (|coerceIntTower| triple t2)
+               (progn
+                (setq arg (cdr (|deconstructT| t2)))
+                (and arg
+                 (progn
+                   (setq tt (|coerceInt| triple (|last| arg)))
+                   (and tt (|coerceByFunction| tt t2)))))))
+             (or ans
+                 (and (|isSubDomain| t1 |$Integer|)
+                      (|coerceInt| (mkObj val |$Integer|) t2))
+                 (|coerceIntAlgebraicConstant| triple t2)
+                 (|coerceIntX| val t1 t2)))))))))))))))))
+
+(defun |coerceIntX| (val t1 t2)
+ (let (t0)
+   (when (and (equal t1 '(|List| (|None|)))
+              (null (|unwrap| val))
+              (setq t0 (|underDomainOf| t2)))
+    (|coerceInt| (mkObjWrap val (list '|List| t0)) t2))))
+
+(defun |coerceIntAlgebraicConstant| (object t2)
+ (let (t1 val)
+  (setq t1 (|objMode| object))
+  (setq val (|objValUnwrap| object))
+  (cond
+   ((and (|ofCategory| t1 '(|Monoid|))
+         (|ofCategory| t2 '(|Monoid|))
+         (equal val (|getConstantFromDomain| '(|One|) t1)))
+     (mkObjWrap (|getConstantFromDomain| '(|One|) t2) t2))
+   ((and (|ofCategory| t1 '(|AbelianMonoid|))
+         (|ofCategory| t2 '(|AbelianMonoid|))
+         (equal val (|getConstantFromDomain| '(|Zero|) t1)))
+     (mkObjWrap (|getConstantFromDomain| '(|Zero|) t2) t2)))))
+
+(defun |coerceIntByMap| (triple t2)
+ (let (t1 top u1 u2 args mms fun code val)
+  (declare (special |$coerceFailure| |$reportBottomUpFlag|))
+  (setq t1 (|objMode| triple))
+  (cond
+   ((equal t2 t1) triple)
+   (t
+    (setq u2 (|deconstructT| t2)) ; compute t2 first because of Expression
+    (cond
+      ((eql 1 (|#| u2)) nil)      ; no under domain
+      (t
+       (setq u1 (|deconstructT| t1))
+       (cond
+        ((eql 1 (|#| u1)) nil)
+        ((nequal (caar u1) (caar u2)) nil) ; constructors not equal
+        ((null (|valueArgsEqual?| t1 t2)) nil)
+        (t
+         ; handle a couple of special cases for subdomains of Integer
+         (setq top (caar u1))
+         (setq u1 (|underDomainOf| t1))
+         (setq u2 (|underDomainOf| t2))
+         (cond
+          ((and (|member| top
+                  '(|List| |Vector| |Segment| |Stream| 
+                    |UniversalSegment| |Array|))
+                (|isSubDomain| u1 u2))
+            (mkObj (|objVal| triple) t2))
+          (t
+           (setq args (list (list '|Mapping| u2 u1) t1))
+           (when |$reportBottomUpFlag|
+            (|sayFunctionSelection| '|map| args t2 nil
+                                     "coercion facility (map)"))
+           (setq mms (|selectMms1| '|map| t2 args args nil))
+           (when |$reportBottomUpFlag|
+             (|sayFunctionSelectionResult| '|map| args mms))
+           (cond
+            ((null mms) nil)
+            (t
+             (setq fun 
+              (|compiledLookup| '|map| (cdaar mms) (|evalDomain| (caaar mms))))
+             (cond
+              ((null fun) nil)
+              (t
+               (cond
+                ((equal (car fun) #'|Undef|) nil)
+                (t
+                 ;  now compile a function to do the coercion
+                 (setq code
+                  (list 'spadcall
+                   (list 'cons 
+                    (list 'function  '|coerceIntByMapInner|) 
+                     (mkq (cons u1 u2)))
+                    (|wrapped2Quote| (|objVal| triple))
+                     (mkq fun)))
+                 ; and apply the function
+                 (setq val (catch '|coerceFailure| (|timedEvaluate| code)))
+                 (unless (equal val |$coerceFailure|)
+                  (mkObjWrap val t2))))))))))))))))))
+
+(defun |coerceIntByMapInner| (arg g1)
+ (|coerceOrThrowFailure| arg (car g1) (cdr g1)))
+
+(defun |coerceIntCommute| (obj target)
+ (let (source s t$ d fun u c)
+  (declare (special |$coerceFailure|))
+  (setq source (|objMode| obj))
+  (cond
+   ((null (|coerceCommuteTest| source target)) nil)
+   (t
+    (setq s (|underDomainOf| source))
+    (setq t$ (|underDomainOf| target))
+    (cond
+     ((equal source t$) nil)
+     ((setq d (car source))
+      (setq fun
+       (or (getl d '|coerceCommute|)
+            (intern (concat "commute" (princ-to-string d)))))
+      (cond
+       ((canFuncall? fun) 
+        (put d '|coerceCommute| fun)
+        (setq u (|objValUnwrap| obj))
+        (setq c (catch '|coerceFailure| (funcall fun u source s target t$)))
+        (cond
+         ((equal c |$coerceFailure|) nil)
+         ((eq u '|$fromCoerceable$|) c)
+         (t (mkObjWrap c target)))))))))))
+
+(defun |coerceInteractive| (triple t2)
+ (let (|$insideCoerceInteractive| t1 val expr2 result)
+  (declare (special |$insideCoerceInteractive| |$OutputForm|
+                    |$mapName| |$compilingMap| |$NoValueMode| |$EmptyMode|))
+   (setq t1 (|objMode| triple))
+   (setq val (|objVal| triple))
+   (cond
+    ((or (null t2) (equal t2 |$EmptyMode|)) nil)
+    ((equal t2 t1) triple)
+    ((equal t2 '|$NoValueMode|) (mkObj val t2))
+    (t
+     (when (eq (car t2) '|SubDomain|) (setq t2 (second t2)))
+     (cond
+      ((|member| t1
+        '((|Category|) (|Mode|) (|Domain|) (|SubDomain| (|Domain|))))
+       (when (equal t2 |$OutputForm|) (mkObj val t2)))
+      ((equal t1 '|$NoValueMode|)
+       (when |$compilingMap| (|clearDependentMaps| |$mapName| nil))
+       (|throwKeyedMsg|
+        (format nil
+          "You are trying to use something (probably a loop) in a ~
+           situation where a value is expected.  In particular, you ~
+           are trying to convert this to the type %1p . The following ~
+           information may help:  possible function name:  %2p")
+         (list t2 |$mapName|)))
+      (t
+       (setq |$insideCoerceInteractive| t)
+       (setq expr2 (equal t2 |$OutputForm|))
+       (cond
+        (expr2 (|startTimingProcess| '|print|))
+        (t (|startTimingProcess| '|coercion|)))
+       (setq result
+        (cond
+         ((and expr2 (equal t1 val)) (mkObj val |$OutputForm|))
+         ((and expr2 (eq (car t1) '|Variable|))
+           (mkObjWrap (second t1) |$OutputForm|))
+         (t (|coerceInt0| triple t2))))
+          (cond
+           (expr2 (|stopTimingProcess| '|print|))
+           (t (|stopTimingProcess| '|coercion|)))
+          result))))))
+
+(defun |coerceIntFromUnion| (object t2)
+  (|coerceInt| (|coerceUnion2Branch| object) t2))
+
+(defun |coerceIntPermute| (object t2)
+ (let (t1 towers ok)
+  (cond
+   ((|member| t2 '((|Integer|) (|OutputForm|))) nil)
+   (t
+     (setq t1 (|objMode| object))
+     (setq towers (|computeTTTranspositions| t1 t2))
+     ; At this point, CAR towers = t1 and last towers should be similar
+     ; to t2 in the sense that the components of t1 are in the same order
+     ; as in t2. If length towers = 2 and t2 = last towers, we quit to
+     ; avoid an infinte loop.
+     (cond
+      ((or (null towers) (null (cdr towers))) nil)
+      ((and (null (cddr towers)) (equal t2 (cadr towers))) nil)
+      (t
+       (setq ok t)
+       ;  do the coercions successively, quitting if any fail
+       (loop for tt in (cdr towers) while ok do
+         (unless (setq object (|coerceInt| object tt)) (setq ok nil)))
+       (when ok object)))))))
+
+(defun |coerceIntSpecial| (triple t2)
+ (let (x)
+  (when (and (eq (first t2) '|SimpleAlgebraicExtension|)
+             (equal (second t2) (|objMode| triple)))
+    (unless (setq x (|coerceInt| triple (third t2)))
+     (|coerceInt| x t2)))));)
+
+(defun |coerceIntTableOrFunction| (triple t2)
+ (let (t1 p tmp1)
+  (declare (special |$CoerceTable|))
+  (cond
+   ((null (|isValidType| t2)) nil)
+   ((null (|isLegitimateMode| t2 nil nil)) nil)
+   (t
+    (setq t1 (|objMode| triple))
+    (setq p (assq (car t1) |$CoerceTable|))
+    (cond
+     ((and p (setq tmp1 (assq (car t2) (cdr p))))
+      (cond
+       ((eq (third tmp1) '|Identity|) (mkObj (|objVal| triple) t2))
+       ((eq (second tmp1) '|total|)
+         (or (|coerceByTable| (third tmp1) (|objVal| triple) t1 t2 t)
+             (|coerceByFunction| triple t2)))
+       (t
+         (or (|coerceByTable| (third tmp1) (|objVal| triple) t1 t2 nil)
+             (|coerceByFunction| triple t2)))))
+     (t (|coerceByFunction| triple t2)))))))
+
+(defun |coerceIntTest| (t1 t2)
+ (let (p b)
+  (declare (special |$useConvertForCoercions| |$CoerceTable|))
+  (or (equal t1 t2)
+      (setq b
+       (and (setq p (assq (car t1) |$CoerceTable|))
+            (assq (car t2) (cdr p))))
+      (or b 
+          (|coerceConvertMmSelection| '|coerce| t1 t2)
+          (and |$useConvertForCoercions|
+               (|coerceConvertMmSelection| '|convert| t1 t2))))))
+
+(defun |coerceIntTower| (triple t2)
+ (let (t1 c1 arg1 tt c arg tl let1 c2 arg2 s x)
+  (cond
+   ((setq x (|coerceIntByMap| triple t2)) x)
+   ((setq x (|coerceIntCommute| triple t2)) x)
+   ((setq x (|coerceIntPermute| triple t2)) x)
+   ((setq x (|coerceIntSpecial| triple t2)) x)
+   ((setq x (|coerceIntTableOrFunction| triple t2)) x)
+   (t
+    (setq t1 (|objMode| triple))
+    (setq let1 (|deconstructT| t1))
+    (setq c1 (car let1))
+    (setq arg1 (cdr let1))
+    (and arg1
+         (progn
+          (setq tl nil)
+          (setq arg arg1)
+          (loop until (or x (not arg)) do
+           (setq tt (|last| arg))
+           (setq let1 (|deconstructT| tt))
+           (setq c (car let1))
+           (setq arg (cdr let1))
+           (setq tl (cons c (cons arg tl)))
+           (cond
+            ((setq x (and arg (|coerceIntTest| tt t2)))
+             (cond
+              ((cddr tl)
+                (setq s 
+                 (|constructT| c1 
+                  (|replaceLast| arg1 (|bubbleConstructor| tl))))
+                (cond
+                 ((null (|isValidType| s)) (setq x nil))
+                 ((setq x (or (|coerceIntByMap| triple s)
+                              (|coerceIntTableOrFunction| triple s)))
+                   (setq let1 (|deconstructT| (|last| s)))
+                   (setq c2 (car let1))
+                   (setq arg2 (cdr let1))
+                   (setq s (|bubbleConstructor| (list c2 arg2 c1 arg1)))
+                   (cond
+                    ((null (|isValidType| s)) (setq x nil))
+                    ((setq x (|coerceIntCommute| x s))
+                      (setq x (or (|coerceIntByMap| x t2)
+                                  (|coerceIntTableOrFunction| x t2))))))))
+              (t
+               (setq s (|bubbleConstructor| (list c arg c1 arg1)))
+               (cond
+                ((null (|isValidType| s)) (setq x nil))
+                ((setq x (|coerceIntCommute| triple s))
+                  (setq x (or (|coerceIntByMap| x t2)
+                              (|coerceIntTableOrFunction| x t2))))))))))
+          x))))))
+
+(defun |coerceInt2Union| (object union)
+ (let (unionDoms t1 val valp noCoerce)
+  (declare (special |$String|))
+  (setq unionDoms (|stripUnionTags| (cdr union)))
+  (setq t1 (|objMode| object))
+  (cond
+   ((|member| t1 unionDoms) (|coerceBranch2Union| object union))
+   (t
+    (setq val (|objVal| object))
+    (setq valp (|unwrap| val))
+    (cond
+     ((and (equal t1 |$String|) (|member| valp unionDoms))
+       (|coerceBranch2Union| (mkObj val valp) union))
+     (t
+      (setq noCoerce t)
+      (setq valp nil)
+      (loop for d in unionDoms while noCoerce do
+       (when (setq valp (|coerceInt| object d)) (setq noCoerce nil)))
+      (when valp (|coerceBranch2Union| valp union))))))))
+
+(defun |coerceOrRetract| (z m)
+ (prog (tp tt ans)
+  (return
+    (cond
+     ((setq tp (|coerceInteractive| z m)) tp)
+     (t 
+      (setq tt z) 
+      (setq ans nil)
+      (do () (nil nil)
+       (cond
+        (ans (return ans))
+        (t
+         (setq tt (|retract| tt))
+         (cond
+          ((eq tt '|failed|) (return ans))
+          (t (setq ans (|coerceInteractive| tt m)))))))
+      ans)))))
+
+(defun |coerceOrThrowFailure| (value t1 t2)
+ (let (result)
+  (or (setq result (|coerceOrRetract| (mkObjWrap value t1) t2))
+      (|coercionFailure|))
+  (|objValUnwrap| result)))
+
+(defun |coerceRetract| (object t2)
+ (let (val t1 fun c)
+  (declare (special |$coerceFailure| |$OutputForm| |$Symbol| |$Integer|
+           |$SingleInteger|))
+  (cond
+   ((eq (setq val (|objValUnwrap| object)) '|$fromCoerceable$|) nil)
+   (t
+    (setq t1 (|objMode| object))
+    (cond
+     ((equal t2 |$OutputForm|) nil)
+     ((and (|isEqualOrSubDomain| t1 |$Integer|)
+           (equal t2 |$SingleInteger|)
+           (typep val 'fixnum))
+        (mkObjWrap val t2))
+     ((equal t1 |$Integer|) nil)
+     ((equal t1 |$Symbol|) nil)
+     ((equal t1 |$OutputForm|) nil)
+     ((setq c (|retractByFunction| object t2)) c)
+     ((consp t1) 
+       (setq fun
+        (or (getl (car t1) '|retract|)
+            (intern (concat "retract" (princ-to-string (car t1))))))
+       (when (canFuncall? fun) 
+        (put (car t1) '|retract| fun)
+        (setq c (catch '|coerceFailure| (funcall fun object t2)))
+        (unless (equal c |$coerceFailure|) c))))))))
+
+(defun |coerceSpadArgs2E| (args)
+ (let ((|$streamCount| 0))
+  (declare (special |$streamCount| |$OutputForm| |$tracedSpadModemap|))
+  (do ((t1 '(|arg1| |arg2| |arg3| |arg4| |arg5| |arg6| |arg7| |arg8| 
+             |arg9| |arg10| |arg11| |arg12| |arg13| |arg14| |arg15| 
+             |arg16| |arg17| |arg18| |arg19|) (cdr t1))
+       (name nil)
+       (t2 args (cdr t2))
+       (arg nil)
+       (t3 (cdr |$tracedSpadModemap|) (cdr t3))
+       (type nil)
+       (t0 nil))
+      ((or (atom t1)
+           (progn (setq name (car t1)) nil)
+           (atom t2)
+           (progn (setq arg (car t2)) nil)
+           (atom t3)
+           (progn (setq type (car t3)) nil))
+        (nreverse0 t0))
+    (seq
+     (exit
+      (setq t0
+       (cons
+        (cons '=
+         (cons name
+          (cons (|objValUnwrap|
+            (|coerceInteractive| 
+             (mkObjWrap arg type)
+             |$OutputForm|)) nil)))
+         t0)))))))
+
+(defun |coerceSpadFunValue2E| (|value|)
+ (let (|$streamCount|)
+  (declare (special |$streamCount| |$tracedSpadModemap| |$OutputForm|))
+  (setq |$streamCount| 0)
+  (|objValUnwrap|
+   (|coerceInteractive|
+    (mkObjWrap |value| (car |$tracedSpadModemap|))
+    |$OutputForm|))))
+
+(defun |coerceSubDomain| (val tSuper tSub)
+ (let (super)
+  (unless (eq val '|$fromCoerceable$|)
+   (setq super (getdatabase (car tSub) 'superdomain))
+   (cond
+    ((equal (car super) tSuper)
+      (|coerceImmediateSubDomain| val tSuper tSub (second super)))
+    ((|coerceSubDomain| val tSuper (car super))
+      (|coerceImmediateSubDomain| val (car super) tSub (second super)))))))
+
+(defun |coerceTraceArgs2E| (tracename subname args)
+ (declare (ignore tracename))
+ (let (name)
+  (declare (special |$OutputForm| |$mathTraceList| |$tracedMapSignatures|))
+  (cond
+   ((member (setq name subname) |$mathTraceList|)
+     (if (spadsysnamep (pname name))
+      (|coerceSpadArgs2E| (reverse (cdr (reverse args))))
+      (do ((t1 '(|arg1| |arg2| |arg3| |arg4| |arg5| |arg6| |arg7| |arg8| 
+                 |arg9| |arg10| |arg11| |arg12| |arg13| |arg14| |arg15| 
+                 |arg16| |arg17| |arg18| |arg19|) (cdr t1))
+           (name nil)
+           (t2 args (cdr t2))
+           (arg nil)
+           (t3 (cdr (lassoc subname |$tracedMapSignatures|)) (cdr t3))
+           (type nil)
+           (t0 nil))
+          ((or (atom t1)
+               (progn (setq name (car t1)) nil)
+               (atom t2)
+               (progn (setq arg (car t2)) nil)
+               (atom t3)
+               (progn (setq type (car t3)) nil)) 
+             (nreverse0 t0))
+          (setq t0
+           (cons 
+            (list '= name 
+             (|objValUnwrap| 
+              (|coerceInteractive|
+               (mkObjWrap arg type) |$OutputForm|))) t0)))))
+   ((spadsysnamep (pname name)) (reverse (cdr (reverse args))))
+   (t args))))
+
+(defun |coerceTraceFunValue2E| (tracename subname |value|)
+ (let (name u)
+ (declare (special |$tracedMapSignatures| |$OutputForm| |$mathTraceList|))
+   (if (member (setq name subname) |$mathTraceList|)
+    (cond
+     ((spadsysnamep (pname tracename)) (|coerceSpadFunValue2E| |value|))
+     ((setq u (lassoc subname |$tracedMapSignatures|))
+       (|objValUnwrap|
+        (|coerceInteractive| (mkObjWrap |value| (car u)) |$OutputForm|)))
+     (t |value|))
+    |value|)))
+
+(defun |coerceUnion2Branch| (object)
+ (let (predList doms valp predicate targetType)
+  (setq doms (|orderUnionEntries| (cdr (|objMode| object))))
+  (setq predList (|mkPredList| doms))
+  (setq doms (|stripUnionTags| doms))
+  (setq valp (|objValUnwrap| object))
+  (loop for typ in doms for pred in predList while (not targetType) do
+   (when (|evalSharpOne| pred valp)
+    (setq predicate pred)
+    (setq targetType typ)))
+  (cond
+   ((null targetType)
+     (|keyedSystemError| "Cannot determine branch of Union." nil))
+   ((eq (car predicate) 'eqcar) (mkObjWrap (cdr valp) targetType))
+   (t (mkObj (|objVal| object) targetType)))))
+
+(defun |coercionFailure| ()
+  (declare (special |$coerceFailure|))
+  (throw '|coerceFailure| |$coerceFailure|))
+
+(defun |commandAmbiguityError| (kind x u)
+ (|sayKeyedMsg| 
+  "Your %1 is ambiguous. The following are abbreviated by %2 :"
+   (list kind x))
+ (dolist (a u) (|sayMSG| (cons "     " (|bright| a))))
+ (|terminateSystemCommand|))
+
+(defun |commandError| (x u)
+ (|commandErrorMessage| '|command| x u)) 
+
+(defun |commandErrorIfAmbiguous| (x u)
+ (declare (special $oldline line))
+ (when u
+   (setq $oldline line)
+   (|commandAmbiguityError| '|command| x u)))
+
+(defun |commandErrorMessage| (kind x u)
+ (declare (special $oldline line))
+  (setq $oldline line)
+  (if u
+   (|commandAmbiguityError| kind x u)
+   (progn
+    (|sayKeyedMsg| "No %1 begins with %2 ." (list kind x))
+    (|terminateSystemCommand|))))
+
+(defun |commandsForUserLevel| (arg)
+ (let (c)
+  (dolist (pair arg)
+   (when (|satisfiesUserLevel| (cdr pair))
+    (setq c (cons (car pair) c))))
+  (nreverse c)))
+
+(defun |commandUserLevelError| (x u)
+ (|userLevelErrorMessage| '|command| x u)) 
+
+(defun |compareposns| (a b)
+ (let (c d)
+  (setq c (|poGlobalLinePosn| a))
+  (setq d (|poGlobalLinePosn| b))
+  (if (equal c d) 
+   (not (< (|poCharPosn| a) (|poCharPosn| b)))
+   (not (< c d)))))
+
+(defun |compareTypeLists| (tl1 tl2)
+ (not 
+  (loop for t1 in tl1 for t2 in tl2
+   do (when (null (|isEqualOrSubDomain| t1 t2)) (return t)))))
+
+(defun |compileBoot| (fn)
+ (|/D,1| (list fn) '(/comp) nil nil)) 
+
+(defun |compiledLookup| (op sig dollar)
+ (setq dollar (|NRTevalDomain| dollar))
+ (|basicLookup| op sig dollar dollar))
+
+(defun |compiledLookupCheck| (op sig dollar)
+ (let (fn)
+  (setq fn (|compiledLookup| op sig dollar))
+  (cond
+    ((and (null fn) (eq op '^))
+      (setq fn (|compiledLookup| '** sig dollar)))
+    ((and (null fn) (eq op '**))
+      (setq fn (|compiledLookup| '^ sig dollar)))
+    (t nil))
+  (cond
+   ((null fn)
+    (|keyedSystemError| 
+      "The function %1 with signature %2 is missing from domain %3"
+      (list op (|formatSignature| sig) (elt dollar 0))))
+   (t fn))))
+
+(defun |computeDomainVariableAlist| ()
+  (prog (pvar)
+  (declare (special |$curPage|))
+    (return
+      (SEQ (prog (G166813)
+             (setq G166813 nil)
+             (return
+               (DO ((G166819 (|htpDomainPvarSubstList| |$curPage|)
+                        (cdr G166819))
+                    (G166805 NIL))
+                   ((or (atom G166819)
+                        (progn (setq G166805 (car G166819)) nil)
+                        (progn
+                          (progn
+                            (setq pvar (cdr G166805))
+                            G166805)
+                          NIL))
+                    (NREVERSE0 G166813))
+                 (SEQ (EXIT (setq G166813
+                                  (cons (cons pvar
+                                         (|pvarCondList| pvar))
+                                        G166813)))))))))))
+
+(defun |computeTTTranspositions| (t1 t2)
+ (labels (
+  (compress (z start len)
+   (cond
+    ((>= start len) z)
+    ((|member| start z) (compress z (1+ start) len))
+    (t
+     (compress
+      (loop for i in z collect (if (> start i) i (1- i))) start len)))))
+ (let (tl1 tl2 p2p n1 p2 perms tower tt towers)
+  ;  decompose t1 into its tower parts
+  (setq tl1 (|decomposeTypeIntoTower| t1))
+  (setq tl2 (|decomposeTypeIntoTower| t2))
+  (cond
+   ; if not at least 2 parts, don't bother working here
+   ((null (and (cdr tl1) (cdr tl2))) nil)
+   (t
+    ; determine the relative order of the parts of t1 in t2
+    (setq p2 (nreverse0 (loop for d1 in tl1 collect (position d1 tl2))))
+    (cond
+     ; something not present
+     ((|member| (- 1) p2) nil)
+     (t
+      ; if they are all ascending, this function will do nothing
+      (setq p2p (msort p2))
+      (cond
+       ((equal p2 p2p) nil)
+       ; if anything is repeated twice, leave
+       ((nequal p2p (msort (remdup p2p))) nil)
+       (t
+        ; create a list of permutations that transform the tower parts
+        ; of t1 into the order they are in in t2
+        (setq n1 (|#| tl1))
+        (setq p2 (list2vec (compress p2 0 (|#| (remdup tl1)))))
+        ; p2 now has the same position numbers as p1, we need to determine
+        ; a list of permutations that takes p1 into p2. 
+        (setq perms (|permuteToOrder| p2 (- n1 1) 0))
+        (setq towers (list tl1))
+        (setq tower (list2vec tl1))
+        (loop for perm in perms do
+         (setq tt (elt tower (car perm)))
+         (setf (elt tower (car perm)) (elt tower (cdr perm)))
+         (setf (elt tower (cdr perm)) tt)
+         (setq towers (cons (vec2list tower) towers)))
+        (setq towers (nreverse0
+         (loop for tower in towers collect (|reassembleTowerIntoType| tower))))
+        (unless (equal (car towers) t2) (setq towers (cons t2 towers)))
+        (nreverse towers))))))))))
+
+(defun |condErrorMsg| (type)
+  (prog (typeString)
+    (return
+      (progn
+        (setq typeString (|form2String| type))
+        (cond
+          ((consp typeString)
+           (setq typeString
+                    (apply #'CONCAT typeString))))
+        (CONCAT "Error: Could not make your input into a "
+                typeString)))))
+
+(defun |conLowerCaseConTran| (x)
+ (declare (special |$lowerCaseConTb|))
+ (cond
+  ((identp x) (or (ifcar (hget |$lowerCaseConTb| x)) x))
+  ((atom x) x)
+  (t (loop for y in x collect (|conLowerCaseConTran| y)))))
+
+(defun |conOpPage| (htPage conform)
+ (declare (ignore conform))
+ (let (updown domname)
+  (setq updown (|dbCompositeWithMap| htPage))
+  (cond
+   ((string= updown "DOWN")
+     (setq domname (|htpProperty| htPage '|domname|))
+     (|conOpPage1| (|dbExtractUnderlyingDomain| domname)
+                   (list (cons '|updomain| domname))))
+   (t 
+     (setq domname (|htpProperty| htPage '|updomain|))
+      (|conOpPage1| domname nil)))))
+
+(defun |conOpPage1| (&rest arg)
+ (let (bindingsAlist conname domname line parts name sig args isFile kind 
+       constring capitalKind signature sourceFileName emString heading page
+       selectedOperation options conform)
+  (declare (special |$Primitives|))
+  (setq conform (car arg))
+  (setq options (cdr arg))
+  (setq bindingsAlist (ifcar options))
+  (setq conname (|opOf| conform))
+  (cond
+   ((member conname |$Primitives|) (|dbSpecialOperations| conname))
+   (t
+    (setq domname (unless (atom conform) conform))
+    (setq line (|conPageFastPath| conname))
+    (setq parts (|dbXParts| line 7 1))
+    (setq kind (first parts))
+    (setq name (second parts))
+    (setq sig (fifth parts))
+    (setq args (sixth parts))
+    (setq isFile (null kind))
+    (setq kind (or kind "package"))
+    (rplaca parts kind)
+    (setq constring (concat name args))
+    (setq conform (|mkConform| kind name args))
+    (setq capitalKind (|capitalize| kind))
+    (setq signature (|ncParseFromString| sig))
+    (setq sourceFileName (|dbSourceFile| (intern name)))
+    (setq emString (list "{\\sf " constring "}"))
+    (setq heading (cons capitalKind (cons " " emString)))
+    (unless (|isExposedConstructor| conname)
+      (setq heading (cons "Unexposed " heading)))
+    (setq page (|htInitPage| heading nil))
+    (|htpSetProperty| page '|isFile| t)
+    (|htpSetProperty| page '|fromConOpPage1| t)
+    (|htpSetProperty| page '|parts| parts)
+    (|htpSetProperty| page '|heading| heading)
+    (|htpSetProperty| page '|kind| kind)
+    (|htpSetProperty| page '|domname| domname)
+    (|htpSetProperty| page '|conform| conform)
+    (|htpSetProperty| page '|signature| signature)
+    (when 
+     (setq selectedOperation (lassoc '|selectedOperation| (ifcdr options)))
+      (|htpSetProperty| page '|selectedOperation| selectedOperation))
+    (loop for item in bindingsAlist
+     collect (|htpSetProperty| page (car item) (cdr item)))
+    (|koPage| page "operation")))))
+
+(defun |conPage| (a &rest b)
+ (let (|$conArgstrings| form da pageName line)
+ (declare (special |$conArgstrings|))
+  ; the next 4 lines allow e.g. MATRIX INT ==> Matrix Integer (see kPage)
+  (setq form (if (atom a) (cons a b) a))
+  (setq |$conArgstrings| (loop for x in (ifcdr a) collect (|form2HtString| x)))
+  (cond ((null (atom a)) (setq a (car a))))
+  (setq da (downcase a))
+  (cond
+    ((setq pageName
+      (lassq da
+        '((|type| . |CategoryType|)
+          (|union| . |DomainUnion|)
+          (|record| . |DomainRecord|)
+          (|mapping| . |DomainMapping|)
+          (|enumeration| . |DomainEnumeration|))))
+       (|downlink| pageName))
+    ((setq line (|conPageFastPath| da)) ; lower case name of cons?
+      (|kPage| line form))
+    ((setq line (|conPageFastPath| (upcase a))) ; upper case an abbrev?
+      (|kPage| line form))
+    (t (|ySearch| a))))) ; slow search (include default packages)
+
+(defun |conPageChoose| (conname)
+ (let (cAlist)
+  (setq cAlist (list (cons (|getConstructorForm| conname) t)))
+  (|dbShowCons1| nil cAlist '|names|)))
+
+(defun |conPageConEntry| (entry)
+ (let (|$conname| |$conform| |$exposed?| |$doc| |$kind|)
+ (declare (special |$conname| |$conform| |$exposed?| |$doc| |$kind|))
+  (setq |$conname| nil)
+  (setq |$conform| nil)
+  (setq |$exposed?| nil)
+  (setq |$doc| nil)
+  (setq |$kind| nil)
+  (|buildLibdbConEntry| entry)))
+
+(defun |conPageFastPath| (x)
+ (let (s name entry lineNumber)
+ (declare (special |$lowerCaseConTb|))
+  (setq s (princ-to-string x))
+  (unless (> (|#| s) (|charPosition| #\* s 0)) ; quit if name has * in it
+    (setq name (cond ((stringp x) (intern x)) (t x)))
+    (setq entry (hget |$lowerCaseConTb| name))
+    (when entry
+      ;'dbLineNumbers property is set by function dbAugmentConstructorDataTable
+      (if (setq lineNumber (lassq '|dbLineNumber| (cddr entry)))
+        (|dbRead| lineNumber)
+        (|conPageConEntry| (car entry)))))))
+
+(defun |conSpecialString?| (&REST a1 &AUX options filter)
+ (let (secondTime t1 words parse form u)
+  (setq filter (car a1))
+  (setq options (cdr a1))
+  (setq secondtime (ifcar options))
+  (setq t1 (|string2Words| filter))
+  (setq parse
+   (cond
+    ((and (consp t1) (not (qcdr t1))) ; t1 is [s]
+      (setq words (|ncParseFromString| (qcar t1))))
+    ((every #'(lambda (x) (null (|member| x '("and" "or" "not")))) words)
+      (|ncParseFromString| filter))))
+  (cond
+   ((null parse) nil)
+   (t
+    (setq form (|conLowerCaseConTran| parse))
+    (cond
+     ((or (member (ifcar form) '(|and| |or| |not|)) (contained '* form)) nil)
+     ((equal filter "Mapping") nil)
+     ((setq u (|kisValidType| form)) u)
+     (secondTime nil)
+     (t
+      (setq u
+       (reduce #'concat
+        (loop for x in (|dbString2Words| filter) 
+              collect (|string2Constructor| x))
+	      :initial-value ""))
+      (|conSpecialString?| u t)))))))
+
+(defun |constoken| (ln lp b n)
+ (declare (ignore ln))
+ (let (a)
+  (setq a (cons (elt b 0) (elt b 1)))
+  (|ncPutQ| a '|posn| (cons lp n))
+  a))
+
+(defun |constructorSearch| (filter key kind)
+ (let (parse pageName name u line newkind page message)
+ (declare (special |$lowerCaseConTb|))
+  (cond
+   ((null filter) nil)
+   ((setq parse (|conSpecialString?| filter)) (|conPage| parse))
+   ((setq pageName
+     (lassoc (downcase filter)
+       '(("union" . |DomainUnion|)
+         ("record" . |DomainRecord|)
+         ("mapping" . |DomainMapping|)
+         ("enumeration" . |DomainEnumeration|))))
+         (|downlink| pageName))
+   (t
+    (setq name (if (stringp filter) (intern filter) filter))
+    (when (setq u (hget |$lowerCaseConTb| name))
+      (setq filter (princ-to-string (car u))))
+    (cond
+      ((setq line (|conPageFastPath| (downcase filter)))
+        (setq newkind
+         (case (|dbKind| line)
+          (#\p "package")
+          (#\d "domain")
+          (#\c "category")))
+        (cond
+         ((or (equal kind "constructor") (equal kind newkind))
+           (|kPage| line))
+         (t
+           (setq page (|htInitPage| "Query Page" nil))
+           (|htpSetProperty| page '|line| line)
+           (setq message
+             (list "{\\em " (|dbName| line) "} is not a {\\em " kind 
+                   "} but a {\\em " newkind 
+                   "}. Would you like to view it?\\vspace{1}" ))
+           (|htQuery| message '|grepConstructorSearch| 't)
+           (|htShowPage|))))
+      ((equal filter "*")
+        (|grepSearchQuery| kind
+          (list filter key kind '|constructorSearchGrep| )))
+      (t (|constructorSearchGrep| filter key kind)))))))
+
+(defun |constructSubst| (d)
+ (let (sl (i 0))
+  (setq sl (list (cons '$ d)))
+  (when (listp d) 
+   (dolist (x (cdr d))
+    (setq i (1+ i))
+    (setq sl (cons (cons (internl "#" (princ-to-string i)) x) sl))))
+  sl))
+
+(defun |containsVars| (arg)
+ (if (atom arg)
+  (|isPatternVar| arg)
+  (|containsVars1| arg)))
+
+(defun |containsVars1| (arg)
+ (let ((t1 (car arg)) (t2 (cdr arg)))
+  (if (atom t1)
+     (or (|isPatternVar| t1)
+         (if (atom t2) (|isPatternVar| t2) (|containsVars1| t2)))
+     (or (|containsVars1| t1)
+         (if (atom t2)  (|isPatternVar| t2) (|containsVars1| t2))))))
+
+(defun |copyright| ()
+ (obey (concat "cat " (getenviron "AXIOM") "/doc/spadhelp/copyright.help")))
+
+(defun |countCache| (n)
+ "Display a particular cache count"
+ (let (tmp1 l cachecountname)
+ (declare (special |$options| |$cacheAlist| |$cacheCount|))
+ (cond 
+  (|$options|
+   (cond
+    ((and (consp |$options|)
+          (eq (qcdr |$options|) nil)
+          (progn 
+           (setq tmp1 (qcar |$options|))
+           (and (consp tmp1)
+                (eq (qcar tmp1) '|vars|)
+                (progn (setq l (qcdr tmp1)) t))))
+     (dolist (x l)
+       (if (null (identp x))
+         (|sayKeyedMsg| "%1 is not a valid function name." (list x))
+         (progn
+          (setq |$cacheAlist| (|insertAlist| x n |$cacheAlist|))
+          (setq cachecountname (internl x ";COUNT"))
+          (set cachecountname n)
+          (|sayCacheCount| x n)))))
+    (t (|optionError| (caar |$options|) nil))))
+  (t
+   (|sayCacheCount| nil (setq |$cacheCount| n))))))
+
+(defun cpsi (n z)
+  (c-to-s (cPsiImpl n (s-to-c z)) ))
+
+(defun cPsiImpl (n z)
+ (prog (result m bound nterms conjresult y x)
+  (return
+   (progn
+    (setq x (realpart z))
+    (setq y (imagpart z))
+    (cond ((zerop y) (return (rPsiImpl n x)))) ; call real function if real
+    (when (< y 0.0) ; if imagpart(z) negative, take conjugate of conjugate
+      (setq conjresult (cPsiImpl n (complex x (- y))))
+      (return (complex (realpart conjresult) (- (imagpart conjresult)))))
+    (setq nterms 22)
+    (setq bound 10.0)
+    (cond
+      ((< x 0.0)
+        (FloatError "Psi implementation can't compute at ~S " (list n z)))
+      ((and (< 0.0 x) (< bound (abs z)))
+        (return (PsiXotic n (PsiAsymptotic n z))))
+      (t  ; use recursion formula
+       (setq m (ceiling (+ (- (sqrt (- (* bound bound) (* y y))) x) 1.0)))
+       (setq result (complex 0.0 0.0))
+       (loop for k from 0 to (- m 1) do
+         (setq result (+ result (/ 1.0 (expt (+ z (float k)) (+ n 1))))))
+       (return (PsiXotic n (+ result (PsiAsymptotic n (+ z m)))))))))))
+
+(defun |cSearch| (filter)
+  (|constructorSearch| (|checkFilter| filter) '|c| "category"))
+
+(defun c-to-r (c)
+ (let ((r (realpart c)) (i (imagpart c)))
+   (if (or (zerop i) (< (abs i) (* 1.0E-10 (abs r))))
+     r
+     (|error| "Result is not real.")) ))
+
+
+(defun DaaseName (name erase?)
+ (let (daase filename)
+  (declare (special $spadroot))
+  (if (setq daase (getenviron "DAASE"))
+   (progn
+    (setq filename  (concatenate 'string daase "/algebra/" name))
+    (format t "   Using local database ~a.." filename))
+   (setq filename (concatenate 'string $spadroot "/algebra/" name)))
+  (when erase? (system::system (concatenate 'string "rm -f " filename)))
+  filename))
+
+(defun |dbAddChain| (conform)
+ (let (u)
+  (when (setq u (|dbAddChainDomain| conform))
+   (unless (atom u)
+    (cons (cons u t) (|dbAddChain| u))))))
+
+(defun |dbAddChainDomain| (conform)
+ (let (name args template form)
+ (declare (special |$infovec|))
+  (setq name (car conform))
+  (setq args (cdr conform))
+  (setq |$infovec| (|dbInfovec| name))
+  (when |$infovec|
+   (setq template (elt |$infovec| 0))
+   (when (setq form (elt template 5))
+    (|dbSubConform| args (|kFormatSlotDomain| (|devaluate| form)))))))
+
+(defun |dbAddDocTable| (conform)
+ (let (conname storedArgs op alist op1 sig doc tmp)
+ (declare (special |$docTable|))
+  (setq conname (|opOf| conform))
+  (setq storedArgs (cdr (|getConstructorForm| conname)))
+  (setq tmp (sublislis (cons '$ (cdr conform)) (cons '% storedArgs)
+                       (getdatabase (|opOf| conform) 'documentation)))
+  (loop for item in tmp do
+   (setq op (car item))
+   (setq alist (cdr item))
+   (setq op1
+    (cond
+     ((eq op '(|Zero|)) 0)
+     ((eq op '(|One|)) 1)
+     (t op)))
+   (loop for item1 in alist do
+    (setq sig (first item1))
+    (setq doc (second item1))
+    (hput |$docTable| op1 (cons (cons conform alist)
+                                (hget |$docTable| op1)))))))
+
+(defun |dbCompositeWithMap| (htPage)
+ (let (domain opAlist)
+ (cond
+  ((|htpProperty| htPage '|updomain|) "UP")
+  (t
+   (setq domain (|htpProperty| htPage '|domname|))
+   (cond
+    ((null domain) nil)
+    (t
+     (setq opAlist (|htpProperty| htPage '|opAlist|))
+     (when 
+       (|dbExtractUnderlyingDomain| (|htpProperty| htPage '|domname|))
+       "DOWN")))))))
+
+(defun |dbConsExposureMessage| ()
+ (declare (special |$atLeastOneUnexposed|))
+  (when |$atLeastOneUnexposed|
+   (|htSay| "\\newline{}-------------\\newline{}{\\em *} = unexposed")))
+
+(defun |dbConsHeading| (htPage conlist view kind)
+ (let (thing place count rank modifier exposureWord firstWord prefix 
+       placepart connective heading)
+(declare (special |$exposedOnlyIfTrue|))
+ (setq thing (or (and htPage (|htpProperty| htPage '|thing|)) "constructor"))
+ (setq place
+  (when htPage
+   (or (|htpProperty| htPage '|domname|) (|htpProperty| htPage '|conform|))))
+ (setq count (|#| (remdup conlist)))
+ (cond
+  ((string= thing "benefactor")
+    (list (princ-to-string count) " Constructors Used by " 
+          (|form2HtString| place nil t) ))
+  (t
+   (setq modifier
+    (cond
+     ((string= thing "argument")
+       (setq rank (and htPage (|htpProperty| htPage '|rank|)))
+       (list " Possible " rank " "))
+     ((eq kind '|constructor|)
+       (list " "))
+     (t
+       (cons " " (|capitalize| (princ-to-string kind)) " "))))
+   (setq exposureWord (when |$exposedOnlyIfTrue| '(" Exposed ")))
+   (setq prefix
+    (cond
+     ((eql count 1)
+      (cons (princ-to-string count)
+       (append modifier (list (|capitalize| thing)))))
+     (t
+      (setq firstWord (if (eql count 0) "No "(princ-to-string count)))
+      (cons firstWord
+       (append exposureWord
+        (append modifier
+         (list (|capitalize| (|pluralize| thing)))))))))
+   (setq placepart
+    (when place (list " of {\\em " (|form2HtString| place nil t) '})))
+   (setq heading (append prefix placepart))
+   (setq connective
+    (if (|member| view '(|abbrs| |files| |kinds|)) " as " " with "))
+   (cond
+    ((and (nequal count 0)
+          (|member| view '(|abbrs| |files| |parameters| |conditions|)))
+     (setq heading
+      (append heading
+       (list " viewed" connective "{\\em " (princ-to-string view) "}")))))
+   heading))))
+
+(defun |dbConstructorDoc| (conform |$op| |$sig|)
+  (declare (special |$op| |$sig|))
+  (|dbConstructorDoc,fn| conform))
+
+(defun |dbConstructorDoc,hn| (sig)
+ (declare (special |$sig| |$args|))
+ (and (equal (|#| |$sig|) (|#| sig))
+      (equal |$sig| (sublislis |$args| |$FormalMapVariableList| sig))))
+
+(defun |dbConstructorDoc,gn| (arg)
+ (let (op alist)
+ (declare (special |$op|))
+  (setq op (car arg))
+  (setq alist (cdr arg))
+  (and |$op| 
+   (some #'identity 
+    (loop for item in alist when (|dbConstructorDoc,hn| (car item))
+     collect (or (cdr item) '("")))))))
+
+(defun |dbDocTable| (conform)
+ (let (|$docTable| table)
+ (declare (special |$docTable| |$docTableHash|))
+  (cond
+   ((setq table (hget |$docTableHash| conform))
+    table)
+   (t
+    (setq |$docTable| (make-hashtable 'id))
+    (loop for x in (|originsInOrder| conform) do (|dbAddDocTable| x))
+    (|dbAddDocTable| conform)
+    (hput |$docTableHash| conform |$docTable|)
+    |$docTable|))))
+
+(defun |dbExtractUnderlyingDomain| (domain)
+ (some #'identity 
+  (loop for x in (ifcdr domain) when (|isValidType| x) collect x)))
+
+(defun |dbGetDocTable| (op |$sig| docTable |$which| aux)
+ (declare (special |$sig| |$which|))
+ (let (doc origin s)
+ (declare (special |$conform| |$op|))
+  (when (and (null (integerp op)) (digitp (elt (setq s (princ-to-string op)) 0)))
+   (setq op (|string2Integer| s)))
+  (cond
+   ((and (consp aux) (consp (qcar aux)))
+     (setq doc (|dbConstructorDoc| (car aux) |$op| |$sig|))
+     (setq origin (if (qcdr aux) (cons '|ifp| aux) (car aux)))
+     (cons origin doc))
+   (t
+    (some #'identity 
+     (loop for x in (hget docTable op) 
+      collect (|dbGetDocTable,gn| x)))))))
+
+(defun |dbGetDocTable,gn| (u)
+ (let (code p comments)
+ (declare (special |$conform|))
+  (setq |$conform| (car u))
+  (when (atom |$conform|) (setq |$conform| (list |$conform|)))
+  (setq code (lastatom u))
+  (setq comments
+   (some #'identity
+    (loop for entry in (cdr u) 
+          when (setq p (|dbGetDocTable,hn| entry))
+          collect p)))
+  (when comments (cons |$conform| (cons (car comments) code)))))
+
+(defun |dbGetDocTable,hn| (arg)
+ (let (sig doc alteredSig pred)
+ (declare (special |$which| |$conform| |$sig| |$FormalMapVariableList|))
+  (setq sig (car arg))
+  (setq doc (cdr arg))
+  (if (string= |$which| "attribute")
+   (and (consp sig) (eq (qcar sig) '|attribute|) (equal (qcdr sig) |$sig|)
+        doc)
+   (progn
+    (setq pred 
+     (and 
+      (eql (|#| |$sig|) (|#| sig))
+      (setq alteredSig 
+       (sublislis (ifcdr |$conform|) |$FormalMapVariableList| sig))
+      (equal alteredSig |$sig|)))
+    (when (and pred doc
+           (and (consp doc) (eq (qcar doc) '|constant|)) (qcdr doc) doc)
+      '(""))))))
+
+(defun |dbMkEvalable| (form)
+ (let (op kind)
+  (setq op (car form))
+  (setq kind (getdatabase op 'constructorkind))
+  (if (eq kind '|category|) 
+   form
+   (|mkEvalable| form))))
+
+(defun |dbMkForm| (x)
+ (or (and (atom x) (cons x nil)) x))
+
+(defun |dbNonEmptyPattern| (pattern)
+  (cond
+    ((null pattern) "*")
+    (t (setq pattern (PRINC-TO-STRING pattern))
+     (cond ((> (|#| pattern) 0) pattern) (t "*")))))
+
+(defun |dbSearchOrder| (conform domname |$domain|)
+ (declare (special |$domain|))
+ (let (|$infovec| name u catpredvec catinfo catvec p pred pak catform res 
+       catforms t1)
+  (declare (special |$infovec| |$predvec|))
+  (setq conform (or domname conform))
+  (setq name (|opOf| conform))
+  (setq |$infovec| (|dbInfovec| name))
+  (when |$infovec|
+    (setq u (elt |$infovec| 3))
+    (setq |$predvec| 
+     (if |$domain| (elt |$domain| 3) (getdatabase name 'predicates)))
+  (setq catpredvec (car u))
+  (setq catinfo (cadr u))
+  (setq catvec (caddr u))
+  (setq catforms
+   (dotimes (i (maxindex catvec) (nreverse0 t1))
+     (cond
+      ((progn
+         (setq pred
+          (|simpCatPredicate|
+           (progn
+            (setq p
+             (sublislis (cdr conform) |$FormalMapVariableList|
+                        (|kTestPred| (elt catpredvec i))))
+            (if |$domain| (eval p) p))))
+         (when (and domname (contained '$ pred))
+           (setq pred (subst domname '$ pred :test #'equal)))
+         (and (setq pak (elt catinfo i)) pred))
+       (setq t1
+        (cons
+         (cons
+          (cond
+           ((and pak (null (identp pak)))
+             (|devaluate| pak))
+           (t
+             (setq catform (|kFormatSlotDomain| (elt catvec i)))
+             (setq res (|dbSubConform| (cdr conform)
+                                       (cons pak (cons '$ (cdr catform)))))
+             (when domname (setq res (subst domname '$ res :test #'equal)))
+             res))
+           pred)
+         t1))))))
+  (append (|dbAddChain| conform) catforms))))
+
+(defun |dbSelectCon| (htPage which index)
+ (declare (ignore which))
+ (|conPage| (|opOf| (car (elt (|htpProperty| htPage '|cAlist|) index)))))
+
+(defun |dbShowConditions| (htPage cAlist kind)
+ (let (conform conname article whichever lt1 consNoPred consPred singular 
+       plural)
+  (setq conform (|htpProperty| htPage '|conform|))
+  (setq conname (|opOf| conform))
+  (setq article (|htpProperty| htPage '|article|))
+  (setq whichever (|htpProperty| htPage '|whichever|))
+  (setq lt1 (|splitConTable| cAlist))
+  (setq consNoPred (car lt1))
+  (setq consPred (cdr lt1))
+  (setq singular (list kind " is"))
+  (setq plural (list (|pluralize| (princ-to-string kind)) " are"))
+  (|dbSayItems| (|#| consNoPred) singular plural " unconditional")
+  (|bcConPredTable| consNoPred conname)
+  (|htSayHrule|)
+  (|dbSayItems| (|#| consPred) singular plural " conditional")
+  (|bcConPredTable| consPred conname)))
+
+(defun |dbShowCons| (&rest args)
+ (let (cAlist filter abbrev? conname subject u options key htPage)
+  (declare (special |$exposedOnlyIfTrue|))
+  (setq htPage (first args))
+  (setq key (second args))
+  (setq options (cddr args))
+  (setq cAlist (|htpProperty| htPage '|cAlist|))
+  (cond
+   ((eq key '|filter|)
+     (setq filter
+      (|pmTransFilter| (or (ifcar options) (|dbGetInputString| htPage))))
+     (cond
+      ((and (consp filter) (eq (car filter) '|error|))
+        (|bcErrorPage| filter))
+      (t
+        (setq abbrev? (eq (|htpProperty| htPage '|exclusion|) '|abbrs|))
+        (setq u
+         (loop for x in cAlist
+           when (progn
+                 (setq conname (caar x))
+                 (setq subject (if abbrev? (|constructor?| conname) conname))
+                 (|superMatch?| filter (downcase (princ-to-string subject))))
+           collect x))
+        (cond
+         ((null u)
+           (|emptySearchPage| "constructor" filter))
+         (t
+           (setq htPage (|htInitPageNoScroll| (|htCopyProplist| htPage)))
+           (|htpSetProperty| htPage '|cAlist| u)
+           (|dbShowCons| htPage (|htpProperty| htPage '|exclusion|)))))))
+   (t
+    (when (member key '(|exposureOn| |exposureOff|))
+      (setq |$exposedOnlyIfTrue| (eq key '|exposureOn|))
+      (setq key (|htpProperty| htPage '|exclusion|)))
+    (|dbShowCons1| htPage cAlist key)))))
+
+(defun |dbShowCons1| (htPage cAlist key)
+ (let (|$conformsAreDomains| conlist kinds kind proplist page u flist result)
+ (declare (special |$conformsAreDomains| |$exposedOnlyIfTrue|))
+  (setq conlist
+   (remdup
+    (dolist (x cAlist result)
+     (push 
+      (if |$exposedOnlyIfTrue|
+       (|isExposedConstructor| (|opOf| (car x)))
+       (car x))
+      result))))
+  (cond
+   ((and (consp conlist) (eq (qcdr conlist) nil))
+    (|conPage|
+     (if (and htPage (|htpProperty| htPage '|domname|))
+      (car conlist)
+      (|opOf| (car conlist)))))
+   (t
+    (setq conlist (loop for x in conlist collect (|opOf| x)))
+    (setq kinds
+     (apply #'|union|
+      (loop for x in conlist collect (|dbConstructorKind| x))))
+    (setq kind
+     (if (and (consp kinds) (eq (qcdr kinds) nil))
+      (qcar kinds)
+      '|constructor|))
+    (setq proplist (when htPage (|htCopyProplist| htPage)))
+    (setq page
+     (|htInitPageNoScroll| proplist
+      (|dbConsHeading| htPage conlist key kind)))
+    (if (setq u (|htpProperty| page '|specialMessage|))
+     (apply (car u) (cdr u)))
+    (|htSayStandard| "\\beginscroll ")
+    (|htpSetProperty| page '|cAlist| cAlist)
+    (setq |$conformsAreDomains| (|htpProperty| page '|domname|))
+    (cond
+     ((eq key '|names|) (|bcNameConTable| conlist))
+     ((eq key '|abbrs|)
+      (|bcAbbTable|
+       (loop for con in conlist collect (|getCDTEntry| con t))))
+     ((eq key '|files|)
+      (setq flist
+       (loop for con in conlist collect (getdatabase con 'sourcefile)))
+      (|bcUnixTable|
+       (|listSort| #'glesseqp (remdup flist))))
+     ((eq key '|documentation|) (|dbShowConsDoc| page conlist))
+     (t
+      (when |$exposedOnlyIfTrue|
+       (setq cAlist
+        (loop for x in cAlist
+         when (|isExposedConstructor| (|opOf| (car x)))
+         collect x)))
+      (cond
+       ((eq key '|conditions|) (|dbShowConditions| page cAlist kind))
+       ((eq key '|parameters|)
+         (|bcConTable| (remdup (assocleft cAlist))))
+       ((eq key '|kinds|) (|dbShowConsKinds| cAlist)))))
+    (|dbConsExposureMessage|)
+    (|htSayStandard| '|\\endscroll |)
+    (|dbPresentCons| page kind key)
+    (|htShowPageNoScroll|)))))
+
+(defun |dbShowConsDoc| (htPage conlist)
+ (labels (
+  (fn (cAlist x)
+   (let ((index 0))
+    (loop while (not (equal (caaar cAlist) x))
+       do (setq index (1+ index))
+          (setq cAlist (cdr cAlist))
+          (unless cAlist (|systemError|)))
+    index)))
+ (let (cAlist)
+  (cond
+   ((null (cdr conlist))
+     (|dbShowConsDoc1| htPage 
+      (|getConstructorForm| (|opOf| (car conlist))) nil))
+   (t 
+     (setq cAlist (|htpProperty| htPage '|cAlist|))
+     (loop for x in (remdup conlist) do
+      (|dbShowConsDoc1| htPage 
+       (|getConstructorForm| x) (fn cAlist x))))))))
+
+(defun |dbShowConsDoc1| (htPage conform indexOrNil)
+ (let (conargs conname lt1 exposeFlag doc signature sig)
+ (declare (special |$TriangleVariableList| |$Primitives|))
+  (setq conname (car conform))
+  (setq conargs (cdr conform))
+  (cond
+   ((member conname |$Primitives|)
+    (setq conname (|htpProperty| htPage '|conname|))
+    (setq lt1 (getl conname '|documentation|))
+    (cond ((eq (caar lt1) '|constructor|) (caar lt1)))
+    (cond ((eq (caadar lt1) 'nil) (caadar lt1)))
+    (setq doc (car (cdadar lt1)))
+    (setq sig '((category domain) (|SetCategory|) (|SetCategory|)))
+    (|displayDomainOp| htPage "constructor"
+       conform conname sig t doc indexOrNil '|dbSelectCon| nil nil))
+   (t 
+    (setq exposeFlag (|isExposedConstructor| conname))
+    (setq doc (list (|getConstructorDocumentation| conname)))
+    (setq signature (|getConstructorSignature| conname))
+    (setq sig
+     (if (eq (getdatabase conname 'constructorkind) '|category|)
+        (sublislis conargs |$TriangleVariableList| signature)
+        (|sublisFormal| conargs signature)))
+    (|displayDomainOp| htPage "constructor" conform conname sig t doc 
+      indexOrNil '|dbSelectCon| (null exposeFlag) nil)))))
+
+(defun |dbShowConsKindsFilter| (htPage args)
+ (|htpSetProperty| htPage '|cAlist| (second args))
+ (|dbShowCons| htPage (|htpProperty| htPage '|exclusion|)))
+
+(defun |dbShowConstructorLines| (lines)
+ (let (cAlist)
+  (setq cAlist
+   (loop for line in lines
+    collect (cons (|getConstructorForm| (|intern| (|dbName| line))) t)))
+  (|dbShowCons1| nil (|listSort| #'glesseqp cAlist) '|names|)))
+
+(defun |dbSpecialDescription| (conname)
+ (let (conform heading page)
+ (declare (special |$conformsAreDomains|))
+  (setq conform (|getConstructorForm| conname))
+  (setq heading
+    (list "Description of Domain {\\sf " (|form2HtString| conform) "}"))
+  (setq page (|htInitPage| heading nil))
+  (|htpSetProperty| page '|conname| conname)
+  (setq |$conformsAreDomains| nil)
+  (|dbShowConsDoc1| page conform nil)
+  (|htShowPage|)))
+
+(defun |dbSpecialExpandIfNecessary| (conform opAlist)
+ (if (and (consp opAlist) (consp (qcar opAlist)) (consp (qcdar opAlist))
+          (consp (qcadar opAlist)) (cdr (qcdr (qcadar opAlist))))
+    opAlist
+    (dolist (item opAlist)
+     (dolist (pair (cdr item))
+      (rplacd pair (list t conform t (second pair))))))
+  opAlist)
+
+(defun |dbSpecialExports| (conname)
+ (let (conform page opAlist)
+  (setq conform (|getConstructorForm| conname))
+  (setq page
+   (|htInitPage| (list "Exports of {\\sf " (|form2HtString| conform) "}") nil))
+  (setq opAlist
+   (|dbSpecialExpandIfNecessary| conform 
+    (cdr (getl conname '|documentation|))))
+  (|kePageDisplay| page "operation" opAlist)
+  (|htShowPage|)))
+
+(defun |dbSpecialOperations| (conname)
+ (let (page conform opAlist fromHeading)
+  (setq page (|htInitPage| nil nil))
+  (setq conform (|getConstructorForm| conname))
+  (setq opAlist
+   (|dbSpecialExpandIfNecessary| conform
+    (cdr (getl conname '|documentation|))))
+  (setq fromHeading (list " from domain {\\sf " (|form2HtString| conform) "}"))
+  (|htpSetProperty| page '|fromHeading| fromHeading)
+  (|htpSetProperty| page '|conform| conform)
+  (|htpSetProperty| page '|opAlist| opAlist)
+  (|htpSetProperty| page '|noUsage| t)
+  (|htpSetProperty| page '|condition?| '|no|)
+  (|dbShowOp1| page opAlist "operation" '|names|)))
+
+(defun |dbString2Words| (z)
+  (loop
+   with i = 0
+   with pair = nil
+   do (setq pair (|dbWordFrom| z i))
+   while (and (consp pair) (= (length pair) 2)) ; dbWordFrom(l,i) is [w,i]]
+   do (setq i (second pair))
+   collect (first pair)))
+
+(defun |dbSubConform| (args u)
+ (let (n y)
+ (declare (special |$FormalMapVariableList|))
+  (cond
+   ((atom u)
+     (if (>= (setq n (|position| u |$FormalMapVariableList|)) 0)
+       (elt args n)
+       u))
+   ((and (consp u) (eq (car u) '|local|) (consp (cdr u)) (eq (cddr u) nil))
+     (setq y (cadr u))
+     (|dbSubConform| args y))
+   (t
+    (loop for x in u collect (|dbSubConform| args x))))))
+
+(defun |dbWordFrom| (z i)
+ (let (maxIndex c ch buf k g1)
+ (declare (special |$dbDelimiters|))
+  (setq maxIndex (maxindex z))
+  (loop while (and (>= maxIndex i) (char= (elt z i) #\space)) do (incf i))
+  (if (and (>= maxIndex i) (|member| (elt z i) |$dbDelimiters|))
+    (list (elt z i) (+ i 1))
+    (progn
+     (setq k 
+      (do ((g2 nil g1) (j i (+ j 1)))
+           ((or g2 (> j maxIndex)) g1)
+        (unless (|member| (elt z j) |$dbDelimiters|) (setq g1 (or g1 j)))))
+     (when k
+      (setq buf "")
+      (do ()
+          ((null (and (<= k maxIndex)
+                      (null (|member| (setq c (elt z k)) |$dbDelimiters|))))
+                  nil)
+       (setq ch (if (char= c #\_) (elt z (setq k (+ 1 k))) c))
+       (setq buf (concat buf ch))
+       (setq k (+ k 1)))
+      (list buf k))))))
+
+(defun |decideHowMuch| (pos oldPos)
+ (cond
+  ((or (and (|poNopos?| pos) (|poNopos?| oldPos))
+       (and (|poPosImmediate?| pos) (|poPosImmediate?| oldPos)))
+    'none)
+  ((or (|poNopos?| pos) (|poPosImmediate?| pos)) 'org)
+  ((or (|poNopos?| oldPos) (|poPosImmediate?| oldPos)) 'all)
+  ((not (equal (|poFileName| oldPos) (|poFileName| pos))) 'all)
+  ((not (equal (|poLinePosn| oldPos) (|poLinePosn| pos))) 'line)
+  (t 'none)))
+
+(defun |decomposeTypeIntoTower| (tt)
+ (let (rd)
+  (cond
+   ((atom tt) (list tt))
+   ((null (cdr (|deconstructT| tt))) (list tt))
+   (t
+    (setq rd (reverse tt))
+    (cons (reverse (cdr rd)) (|decomposeTypeIntoTower| (car rd)))))))
+
+(defun |defaultTargetFE| (&rest dom)
+ (let (a options)
+ (declare (special |$FunctionalExpression| |$Integer| |$Symbol|
+                   |$RationalNumber|))
+  (setq a (car dom))
+  (setq options (cdr dom))
+  (cond
+   ((or (and (consp a) (eq (qcar a) '|Variable|)
+             (consp (qcdr a)) (eq (qcddr a) nil))
+        (equal a |$RationalNumber|)
+        (member (qcar a) (list (qcar |$Symbol|) '|RationalRadicals| '|Pi|))
+        (equal a |$SingleInteger|)
+        (|isEqualOrSubDomain| a |$Integer|)
+        (equal a '(|AlgebraicNumber|)))
+     (if (ifcar options)
+      (list |$FunctionalExpression| (list '|Complex| |$Integer|))
+      (list |$FunctionalExpression| |$Integer|)))
+   ((and (consp a) (eq (qcar a) '|Complex|)
+         (consp (qcdr a)) (eq (qcddr a) nil))
+     (|defaultTargetFE| (qcadr a) t))
+   ((and (consp a) (consp (qcdr a)) (eq (qcddr a) nil)
+         (member (qcar a) '(|Polynomial| |RationalFunction| |Fraction|)))
+     (|defaultTargetFE| (qcadr a) (ifcar options)))
+   ((and (consp a) (equal (qcar a) |$FunctionalExpression|)
+         (consp (qcdr a)) (eq (qcddr a) nil))
+     a)
+   ((ifcar options)
+     (list |$FunctionalExpression| (list '|Complex| a)))
+   (t
+     (list |$FunctionalExpression| a)))))
+
+(defun defiostream (stream-alist buffer-size char-position)
+ (declare (ignore buffer-size))
+   (let ((mode (or (cdr (assoc 'mode stream-alist)) 'input))
+         (filename (cdr (assoc 'file stream-alist)))
+         (dev (cdr (assoc 'device stream-alist))))
+      (if (eq dev 'console) (make-synonym-stream '*terminal-io*)
+       (let ((strm (case mode
+                          ((output o) (open (make-filename filename)
+                                           :direction :output))
+                          ((input i) (open (makeInputFilename filename)
+                                           :direction :input)))))
+         (if (and (numberp char-position) (> char-position 0))
+           (file-position strm char-position))
+           strm))))
+
+(defun deldatabase (constructor key)
+  (when (symbolp constructor)
+   (case key
+    (abbreviation
+     (setf (get constructor 'abbreviationfor) nil)))))
+
+(defun |deleteFile| (arg) 
+ (declare (special $erase))
+ ($erase (|pathname| arg)))
+
+(defun |describe| (l)
+ (describeSpad2Cmd l)) 
+
+(defun |describeFortPersistence| ()
+ (declare (special |$fortPersistence|))
+ (|sayBrightly| (list
+ " )set naglink persistence "
+ "is used to tell the "
+ '|nagd|
+ '| daemon how  many ASP|
+ '|%l|
+ " source and object files to keep around in case you reuse them. This helps"
+ '|%l| " to avoid needless recompilations. The number specified should be a "
+ '|%l| " non-negative integer."
+ '|%l|
+ '|%l| " The current setting is "
+ |$fortPersistence|
+ )))
+
+(defun |describeInputLibraryArgs| ()
+ "Describe the set input library arguments"
+ (|sayBrightly| (list
+  " )set compile input add library "
+  "is used to tell AXIOM to add library to"
+  '|%l| " the front of the path used to find compile code."
+  '|%l|
+  " )set compile input drop library is used to tell AXIOM to remove library"
+  '|%l| " from this path.")))
+
+(defun |describeOutputLibraryArgs| ()
+ "Describe the set output library arguments"
+ (|sayBrightly| (list
+  " )set compile output library is used to tell the compiler where to place"
+  '|%l| "compiled code generated by the library compiler.  By default it goes"
+  '|%l| "in a file called user.lib in the current directory.")))
+
+(defun |describeSetFortDir| ()
+ (declare (special |$fortranDirectory|))
+ (|sayBrightly| (list
+  " )set fortran calling directory"
+  " is used to tell AXIOM where"
+  '|%l| " to place generated FORTRAN files. This must be the name "
+  '|%l| " of a valid existing directory to which you have permission "
+  '|%l| " to write (including the final slash)."
+  '|%l|
+  '|%l| " Syntax:"
+  '|%l| "   )set fortran calling directory DIRECTORYNAME"
+  '|%l|
+  '|%l| " The current setting is "
+  |$fortranDirectory|
+  )))
+
+(defun |describeSetFortTmpDir| ()
+ "Describe the set fortran calling tempfile"
+ (declare (special |$fortranTmpDir|))
+ (|sayBrightly| (list
+  " )set fortran calling tempfile"
+  " is used to tell AXIOM where"
+  '|%l| " to place intermediate FORTRAN data files . This must be the "
+  '|%l| " name of a valid existing directory to which you have permission "
+  '|%l| " to write (including the final slash)."
+  '|%l|
+  '|%l| " Syntax:"
+  '|%l| "   )set fortran calling tempfile DIRECTORYNAME"
+  '|%l|
+  '|%l| " The current setting is "
+  |$fortranTmpDir|
+  )))
+
+(defun |describeSetFunctionsCache| ()
+ "Describe the set functions cache"
+ (|sayBrightly| (list
+  " )set functions cache "
+  "is used to tell AXIOM how many"
+  '|%l| " values computed by interpreter functions should be saved.  This"
+  '|%l| " can save quite a bit of time in recursive functions, though one" 
+  '|%l| " must consider that the cached values will take up (perhaps"
+  '|%l| " valuable) room in the workspace."
+  '|%l|
+  '|%l| " The value given after "
+   "cache must either be the word all or a positive integer."
+  '|%l| " This may be followed by any number of function names whose cache"
+  '|%l| " sizes you wish to so set.  If no functions are given, the default" 
+  '|%l| " cache size is set."
+  '|%l|
+  '|%l|  " Examples:"
+  '|%l|  "   )set fun cache all         )set fun cache 10 f g Legendre")))
+
+(defun |describeSetLinkerArgs| ()
+ (declare (special |$fortranLibraries|))
+ (|sayBrightly| (list
+  " )set fortran calling linkerargs"
+  " is used to pass arguments to the linker"
+  '|%l| " when using "
+  "mkFort to create functions which call Fortran code."
+  '|%l| " For example, it might give a list of libraries to be searched,"
+  '|%l| " and their locations."
+  '|%l| " The string is passed verbatim, so must be the correct syntax for"
+  '|%l| " the particular linker being used."
+  '|%l|
+  '|%l| " Example: )set fortran calling linker \"-lxlf\""
+  '|%l|
+  '|%l| " The current setting is "
+  |$fortranLibraries|
+  )))
+
+(defun |describeSetNagHost| ()
+ (declare (special |$nagHost|))
+ (|sayBrightly| (list
+  " )set naglink host "
+  "is used to tell  AXIOM which  host to contact for"
+  '|%l| " a NAGLink request. An Internet address should be supplied. The host"
+  '|%l| " specified must be running the NAGLink daemon."
+  '|%l|
+  '|%l| " The current setting is "
+  |$nagHost|
+  )))
+
+(defun |describeSetOutputAlgebra| ()
+ (|sayBrightly| (list
+ " )set output algebra "
+ "is used to tell AXIOM to turn algebra-style output"
+ '|%l| "printing on and off, and where to place the output.  By default, the"
+ '|%l| "destination for the output is the screen but printing is turned off."
+ '|%l|
+ '|%l| "Syntax:   )set output algebra <arg>"
+ '|%l| "    where arg can be one of"
+ '|%l| "  on          turn algebra printing on (default state)"
+ '|%l| "  off         turn algebra printing off"
+ '|%l| "  console     send algebra output to screen (default state)"
+ '|%l| "  fp<.fe>     send algebra output to file with file prefix fp"
+ '|%l|
+  "              and file extension .fe. If not given, .fe defaults to .spout."
+ '|%l|
+ '|%l|
+ "If you wish to send the output to a file, you may need to issue this command"
+ '|%l| "twice: once with"
+ " on and once with the file name. For example, to send"
+ '|%l| "algebra output to the file polymer.spout, issue the two commands"
+ '|%l|
+ '|%l| "  )set output algebra on"
+ '|%l| "  )set output algebra polymer"
+ '|%l|
+ '|%l| "The output is placed in the directory from which you invoked AXIOM or"
+ '|%l| "the one you set with the )cd system command."
+ '|%l| "The current setting is: "
+ (|setOutputAlgebra| '|%display%|)
+ ))) 
+
+(defun |describeSetOutputFormula| ()
+ (|sayBrightly| (list
+ " )set output script "
+ "is used to tell AXIOM to turn IBM Script formula-style"
+ '|%l|
+ "output printing on and off, and where to place the output.  By default, the"
+ '|%l| "destination for the output is the screen but printing is turned off."
+ '|%l|
+ '|%l| "Syntax:   )set output script <arg>"
+ '|%l| "    where arg can be one of"
+ '|%l| "  on          turn IBM Script formula printing on"
+ '|%l| "  off         turn IBM Script formula printing off (default state)"
+ '|%l| "  console     send IBM Script formula output to screen (default state)"
+ '|%l|
+ "  fp<.fe>     send IBM Script formula output to file with file prefix fp"
+ '|%l|
+ "              and file extension .fe. If not given, .fe defaults to .sform."
+ '|%l|
+ '|%l| "If you wish to send the output to a file, you must issue this command"
+ '|%l| "twice: once with"
+ " on and once with the file name. For example, to send "
+ '|%l| "IBM Script formula output to the file polymer.sform,"
+ " issue the two commands"
+ '|%l|
+ '|%l| "  )set output script on"
+ '|%l| "  )set output script polymer"
+ '|%l|
+ '|%l| "The output is placed in the directory from which you invoked AXIOM or"
+ '|%l| "the one you set with the )cd system command."
+ '|%l| "The current setting is: "
+ (|setOutputFormula| '|%display%|)
+ )))
+
+(defun |describeSetOutputFortran| ()
+ (|sayBrightly| (list
+  " )set output fortran"
+  " is used to tell AXIOM to turn FORTRAN-style output "
+  '|%l| "printing on and off, and where to place the output.  By default, the"
+  '|%l| "destination for the output is the screen but printing is turned off."
+  '|%l|
+  '|%l| "Also See: )set fortran"
+  '|%l|
+  '|%l| "Syntax:   )set output fortran <arg>"
+  '|%l| "    where arg can be one of"
+  '|%l| "  on          turn FORTRAN printing on"
+  '|%l| "  off         turn FORTRAN printing off (default state)"
+  '|%l| "  console     send FORTRAN output to screen (default state)"
+  '|%l|
+  "  fp<.fe>     send FORTRAN output to file with file prefix fp and file"
+  '|%l| "              extension .fe. If not given, .fe defaults to .sfort."
+  '|%l|
+  '|%l| "If you wish to send the output to a file, you must issue this command"
+  '|%l| "twice: once with"
+  " on and once with the file name. For example, to send "
+  '|%l| "FORTRAN output to the file polymer.sfort, issue the two commands"
+  '|%l|
+  '|%l| "  )set output fortran on"
+  '|%l| "  )set output fortran polymer"
+  '|%l|
+  '|%l| "The output is placed in the directory from which you invoked AXIOM or"
+  '|%l| "the one you set with the )cd system command."
+  '|%l| "The current setting is: "
+  (|setOutputFortran| '|%display%|)
+  )))
+
+(defun |describeSetOutputHtml| ()
+ (|sayBrightly| (LIST
+ " )set output html "
+ "is used to tell AXIOM to turn HTML-style output"
+ '|%l| "printing on and off, and where to place the output.  By default, the"
+ '|%l| "destination for the output is the screen but printing is turned off."
+ '|%l|
+ '|%l| "Syntax:   )set output html <arg>"
+ '|%l| "    where arg can be one of"
+ '|%l| "  on          turn HTML printing on"
+ '|%l| "  off         turn HTML printing off (default state)"
+ '|%l| "  console     send HTML output to screen (default state)"
+ '|%l| "  fp<.fe>     send HTML output to file with file prefix fp and file"
+ '|%l| "              extension .fe. If not given, .fe defaults to .stex."
+ '|%l|
+ '|%l| "If you wish to send the output to a file, you must issue this command"
+ '|%l| "twice: once with "
+ "on and once with the file name. For example, to send"
+ '|%l| "HTML output to the file polymer.smml, issue the two commands"
+ '|%l|
+ '|%l| "  )set output html on"
+ '|%l| "  )set output html polymer"
+ '|%l|
+ '|%l| "The output is placed in the directory from which you invoked AXIOM or"
+ '|%l| "the one you set with the )cd system command."
+ '|%l| "The current setting is: "
+ (|setOutputHtml| '|%display%|)
+ )))
+
+(defun |describeSetOutputMathml| ()
+ (|sayBrightly| (LIST
+ " )set output mathml "
+ "is used to tell AXIOM to turn MathML-style output"
+ '|%l| "printing on and off, and where to place the output.  By default, the"
+ '|%l| "destination for the output is the screen but printing is turned off."
+ '|%l|
+ '|%l| "Syntax:   )set output mathml <arg>"
+ '|%l| "    where arg can be one of"
+ '|%l| "  on          turn MathML printing on"
+ '|%l| "  off         turn MathML printing off (default state)"
+ '|%l| "  console     send MathML output to screen (default state)"
+ '|%l| "  fp<.fe>     send MathML output to file with file prefix fp and file"
+ '|%l| "              extension .fe. If not given, .fe defaults to .stex."
+ '|%l|
+ '|%l| "If you wish to send the output to a file, you must issue this command"
+ '|%l| "twice: once with"
+ " on and once with the file name. For example, to send"
+ '|%l| "MathML output to the file polymer.smml, issue the two commands"
+ '|%l|
+ '|%l| "  )set output mathml on"
+ '|%l| "  )set output mathml polymer"
+ '|%l|
+ '|%l| "The output is placed in the directory from which you invoked AXIOM or"
+ '|%l| "the one you set with the )cd system command."
+ '|%l| "The current setting is: "
+ (|setOutputMathml| '|%display%|)
+ )))
+
+(defun |describeSetOutputOpenMath| ()
+ (|sayBrightly| (list
+ " )set output openmath "
+ "is used to tell AXIOM to turn OpenMath output"
+ '|%l| "printing on and off, and where to place the output.  By default, the"
+ '|%l| "destination for the output is the screen but printing is turned off."
+ '|%l|
+ '|%l| "Syntax:   )set output openmath <arg>"
+ '|%l| "    where arg can be one of"
+ '|%l| "  on          turn OpenMath printing on"
+ '|%l| "  off         turn OpenMath printing off (default state)"
+ '|%l| "  console     send OpenMath output to screen (default state)"
+ '|%l| 
+ "  fp<.fe>     send OpenMath output to file with file prefix fp and file"
+ '|%l| "              extension .fe. If not given, .fe defaults to .som."
+ '|%l|
+ '|%l| "If you wish to send the output to a file, you must issue this command"
+ '|%l| "twice: once with"
+ " on and once with the file name. For example, to send"
+ '|%l| "OpenMath output to the file polymer.som, issue the two commands"
+ '|%l|
+ '|%l| "  )set output openmath on"
+ '|%l| "  )set output openmath polymer"
+ '|%l|
+ '|%l| "The output is placed in the directory from which you invoked AXIOM or"
+ '|%l| "the one you set with the )cd system command."
+ '|%l| "The current setting is: "
+ (|setOutputOpenMath| '|%display%|)
+ )))
+
+(defun |describeSetOutputTex| ()
+ (|sayBrightly| (list
+ " )set output tex "
+ "is used to tell AXIOM to turn TeX-style output"
+ '|%l| "printing on and off, and where to place the output.  By default, the"
+ '|%l| "destination for the output is the screen but printing is turned off."
+ '|%l|
+ '|%l| "Syntax:   )set output tex <arg>"
+ '|%l| "    where arg can be one of"
+ '|%l| "  on          turn TeX printing on"
+ '|%l| "  off         turn TeX printing off (default state)"
+ '|%l| "  console     send TeX output to screen (default state)"
+ '|%l| "  fp<.fe>     send TeX output to file with file prefix fp and file"
+ '|%l| "              extension .fe. If not given, .fe defaults to .stex."
+ '|%l|
+ '|%l| "If you wish to send the output to a file, you must issue this command"
+ '|%l| "twice: once with"
+ " on and once with the file name. For example, to send"
+ '|%l| "TeX output to the file polymer.stex, issue the two commands"
+ '|%l|
+ '|%l| "  )set output tex on"
+ '|%l| "  )set output tex polymer"
+ '|%l|
+ '|%l| "The output is placed in the directory from which you invoked AXIOM or"
+ '|%l| "the one you set with the )cd system command."
+ '|%l| "The current setting is: "
+ (|setOutputTex| '|%display%|)
+ )))
+
+(defun |describeSetStreamsCalculate| ()
+ (declare (special |$streamCount|))
+ (|sayKeyedMsg|
+  (format nil
+   ")set streams calculate is used to tell Axiom how many elements of a ~
+    stream to calculate when a computation uses the stream. The value ~
+    given after calculate must either be the word all or a positive ~
+    integer.  %l %l The current setting is %1 .")
+   (list |$streamCount|))) 
+
+(defun describeSpad2Cmd (l)
+ (labels (
+  (fullname (arg)
+   "Convert abbreviations to the full constructor name"
+   (let ((abb (getdatabase arg 'abbreviation)))
+    (if abb arg (getdatabase arg 'constructor))))
+  (describeInternal (cdp internal?)
+   (if internal?
+    (progn
+     (unless (eq (getdatabase cdp 'constructorkind) '|category|) (|dc| cdp))
+     (showdatabase cdp))
+    (mapcar #'(lambda (x) (if (stringp x) (cleanline x)))
+     (flatten  (car (getdatabase (fullname cdp) 'documentation)))))))
+ (let ((|$e| |$EmptyEnvironment|) (opt (second l)))
+  (declare (special |$e| |$EmptyEnvironment| $describeOptions))
+  (if (and (consp l) (not (eq opt '?)))
+    (describeInternal (first l) (second l))
+   (|sayMessage|
+    (format nil "~&~a ~{~%    ~a~^ ~}~%    ~a" 
+     "  )describe keyword arguments are"
+     $describeOptions
+     "or abbreviations thereof"))))))
+
+(defun |dewritify| (ob)
+ (let (|$seen|)
+ (declare (special |$seen|))
+   (if (null (|ScanOrPairVec| #'(lambda (a) (eq a 'writified!!)) ob))
+    ob
+    (progn
+      (setq |$seen| (make-hash-table :test #'eq))
+      (|dewritify,dewritifyInner| ob)))))
+
+(defun |dewritify,dewritifyInner| (ob)
+ (prog (e type oname f vec name tmp1 signif expon sign fval qcar qcdr n nob)
+  (declare (special |$seen| |$NullStream| |$NonNullStream|))
+  (return
+   (seq
+    (when (null ob) 
+      (exit nil))
+    (when (setq e (hget |$seen| ob)) 
+      (exit e))
+    (when (and (consp ob) (eq (car ob) 'writified!!))
+     (exit
+      (seq
+       (setq type (elt ob 1))
+       (when (eq type 'self) 
+        (exit 'writified!!))
+       (when (eq type 'bpi)
+        (exit
+         (seq
+          (setq oname (elt ob 2))
+          (setq f 
+           (seq 
+            (when (integerp oname) (exit (eval (gensymmer oname))))
+            (exit (symbol-function oname))))
+          (when (null (compiled-function-p f))
+           (exit (|error| "A required BPI does not exist.")))
+          (when (and (> (|#| ob) 3) (not (equal (sxhash f) (elt ob 3))))
+           (exit (|error| "A required BPI has been redefined.")))
+          (hput |$seen| ob f)
+          (exit f))))
+       (when (eq type 'hashtable)
+        (exit
+         (seq
+          (setq nob (make-hash-table :test #'equal))
+          (hput |$seen| ob nob)
+          (hput |$seen| nob nob)
+          (do ((tmp0 (elt ob 3) (cdr tmp0))
+               (k nil)
+               (tmp1 (elt ob 4) (cdr tmp1))
+               (e nil))
+              ((or (atom tmp0) 
+                   (progn
+                    (setq k (car tmp0))
+                    nil) 
+                   (atom tmp1) 
+                   (progn
+                    (setq e (car tmp1))
+                    nil))
+                   nil)
+           (seq
+            (exit
+             (hput nob (|dewritify,dewritifyInner| k) 
+              (|dewritify,dewritifyInner| e)))))
+          (exit nob))))
+       (when (eq type 'devaluated)
+        (exit
+         (seq
+          (setq nob (eval (|dewritify,dewritifyInner| (elt ob 2))))
+          (hput |$seen| ob nob)
+          (hput |$seen| nob nob)
+          (exit nob))))
+       (when (eq type 'spadclosure)
+        (exit
+         (seq
+          (setq vec (|dewritify,dewritifyInner| (elt ob 2)))
+          (setq name (ELT ob 3))
+          (when (null (fboundp name))
+           (exit
+            (|error| 
+             (concat "undefined function: " (symbol-name name)))))
+          (setq nob (cons (symbol-function name) vec))
+          (hput |$seen| ob nob)
+          (hput |$seen| nob nob)
+          (exit nob))))
+       (when (eq type 'place) 
+        (exit
+         (seq
+          (setq nob (vmread (make-instream nil)))
+          (hput |$seen| ob nob)
+          (hput |$seen| nob nob)
+          (exit nob))))
+       (when (eq type 'readtable)
+        (exit (|error| "Cannot de-writify a read table.")))
+       (when (eq type 'nullstream)
+        (exit |$NullStream|))
+       (when (eq type 'nonnullstream) 
+        (exit |$NonNullStream|))
+       (when (eq type 'float) 
+        (exit
+         (seq
+          (progn
+           (setq tmp1 (cddr ob))
+           (setq fval (car tmp1))
+           (setq signif (cadr tmp1))
+           (setq expon (caddr tmp1))
+           (setq sign (cadddr tmp1))
+           tmp1)
+          (setq fval (scale-float (float signif fval) expon))
+          (when (minusp sign)
+           (exit (- fval)))
+          (exit fval))))
+       (exit (|error| "Unknown type to de-writify.")))))
+    (when (consp ob)
+     (exit
+      (seq
+       (setq qcar (qcar ob))
+       (setq qcdr (qcdr ob))
+       (setq nob (cons qcar qcdr))
+       (hput |$seen| ob nob)
+       (hput |$seen| nob nob)
+       (qrplaca nob (|dewritify,dewritifyInner| qcar))
+       (qrplacd nob (|dewritify,dewritifyInner| qcdr))
+       (exit nob))))
+    (when (simple-vector-p ob)
+     (exit
+      (seq
+       (setq n (qvmaxindex ob))
+       (setq nob (make-array (1+ n)))
+       (hput |$seen| ob nob)
+       (hput |$seen| nob nob)
+       (do ((i 0 (1+ i)))
+           ((> i n) nil)
+        (seq
+         (exit
+          (qsetvelt nob i 
+            (|dewritify,dewritifyInner| (qvelt ob i))))))
+       (exit nob))))
+    (exit ob))))) 
+
+(defun |diffAlist| (new old)
+ (prog (proplist oldPair oldProplist val oldPropval deltas prop name r acc res)
+  (return
+   (seq
+    (progn
+     (do ((tmp0 new (cdr tmp0)) (pair nil))
+         ((or (atom tmp0) 
+              (progn (setq pair (car tmp0)) nil)
+              (progn 
+               (progn 
+                (setq name (car pair))
+                (setq proplist (cdr pair))
+                pair) 
+               nil))
+             nil)
+      (seq
+       (exit
+        (cond
+         ((setq oldPair (assq name old))
+          (cond
+           ((null (setq oldProplist (cdr oldPair)))
+             (setq acc
+              (cons
+               (cons
+                 name 
+                 (prog (tmp1)
+                  (setq tmp1 nil)
+                  (return
+                   (do ((tmp2 proplist (cdr tmp2)) (tmp3 nil))
+                       ((or (atom tmp2) 
+                            (progn (setq tmp3 (car tmp2)) nil)
+                            (progn 
+                             (progn (setq prop (car tmp3)) tmp3)
+                             nil))
+                         (nreverse0 tmp1))
+                    (seq
+                     (exit
+                      (setq tmp1 (cons (cons prop nil) tmp1))))))))
+               acc)))
+           (t 
+             (setq deltas nil)
+             (do ((tmp4 proplist (cdr tmp4)) (|propval| nil))
+                 ((or (atom tmp4) 
+                      (progn (setq |propval| (car tmp4)) nil)
+                      (progn
+                       (progn
+                        (setq prop (car |propval|))
+                        (setq val (cdr |propval|))
+                        |propval|)
+                       nil))
+                   nil)
+              (seq
+               (exit
+                (cond
+                 ((null (setq oldPropval (|assoc| prop oldProplist)))
+                   (setq deltas (cons (cons prop nil) deltas)))
+                 ((eq (cdr oldPropval) val) '|skip|)
+                 (t (setq deltas (cons oldPropval deltas)))))))
+             (when deltas
+               (setq acc 
+                (cons (cons name (nreverse deltas)) acc))))))
+         (t
+           (setq acc
+            (cons
+             (cons
+              name
+              (prog (tmp5)
+               (setq tmp5 nil)
+               (return
+                (do ((tmp6 proplist (cdr tmp6)) (tmp7 nil))
+                    ((or (atom tmp6) 
+                         (progn (setq tmp7 (CAR tmp6)) nil)
+                         (progn
+                          (progn (setq prop (CAR tmp7)) tmp7)
+                          nil))
+                       (nreverse0 tmp5))
+                 (seq
+                  (exit
+                   (setq tmp5 (cons (cons prop nil) tmp5))))))))
+             acc)))))))
+     (seq
+      (do ((tmp8 old (cdr tmp8)) (oldPair nil))
+          ((or (atom tmp8) 
+               (progn (setq oldPair (car tmp8)) nil)
+               (progn
+                (progn
+                 (setq name (car oldPair))
+                 (setq r (cdr oldPair))
+                 oldPair)
+                nil))
+              nil)
+       (seq
+        (exit
+         (cond
+          ((and r (null (lassq name new)))
+            (exit 
+             (setq acc (cons oldPair acc))))))))
+      (setq res (nreverse acc))
+      (cond 
+       ((and (boundp '|$reportundo|) |$reportundo|)
+         (|reportUndo| res)))
+      (exit res))))))) 
+
+(defun |digit?| (x)
+ (digitp x))
+
+(defun digitp (x)
+  (or (and (symbolp x) (digitp (symbol-name x)))
+      (and (characterp x) (digit-char-p x))
+      (and (stringp x) (= (length x) 1) (digit-char-p (char x 0)))))
+
+(defun |disableHist| () 
+ "Disable history if an error occurred"
+ (declare (special |$HiFiAccess|))
+ (cond
+  ((null |$HiFiAccess|) 
+    (|histFileErase| (|histFileName|)))
+  (t nil))) 
+
+(defun |display| (l)
+ (displaySpad2Cmd l)) 
+
+(defun |displayCondition| (v condition giveVariableIfNil)
+ (let (varPart condPart)
+  (when giveVariableIfNil (setq varPart (cons '| of| (|bright| v))))
+  (setq condPart (or condition '|true|))
+  (|sayBrightly|
+   (|concat| '|   condition| varPart '|:  | (|pred2English| condPart)))))
+
+(defun |displayExposedConstructors| ()
+ "Display exposed constructors"
+ (declare (special |$localExposureData|))
+ (|sayKeyedMsg| 
+  "The following constructors are explicitly exposed in the current frame:"
+  nil)
+ (if  (null (elt |$localExposureData| 1))
+  (format t "~v:@<~a~>~%" (- $linelength 2) 
+    "there are no explicitly exposed constructors")
+  (dolist (c (elt |$localExposureData| 1))
+    (format t "~v:@<~a~>~%" (- $linelength 2) c))))
+
+(defun |displayExposedGroups| ()
+ "Display exposed groups"
+ (declare (special |$interpreterFrameName| |$localExposureData|))
+ (|sayKeyedMsg| 
+  (format nil "The following groups are explicitly exposed in the current ~
+               frame (called %1 ):")
+  (list |$interpreterFrameName|))
+ (if  (null (elt |$localExposureData| 0))
+  (format t "~v:@<~a~>~%" (- $linelength 2) " there are no exposed groups ")
+  (dolist (c (elt |$localExposureData| 0))
+     (format t "~v:@<~a~>~%" (- $linelength 2) c))))
+
+(defun |displayHiddenConstructors| ()
+ "Display hidden constructors"
+ (declare (special |$localExposureData|))
+ (|sayKeyedMsg|
+  "The following constructors are explicitly hidden in the current frame:"
+  nil)
+ (if (null (elt |$localExposureData| 2))
+  (format t "~v:@<~a~>~%" (- $linelength 2)
+      "there are no explicitly hidden constructors")
+   (dolist (c (elt |$localExposureData| 2))
+     (format t "~v:@<~a~>~%" (- $linelength 2) c))))
+
+(defun |displayMacro| (name)
+ (let (|$op| m body args)
+ (declare (special |$op|))
+  (setq m (|isInterpMacro| name))
+  (cond
+   ((null m)
+    (|sayBrightly|
+     (cons "  " (append (|bright| name) 
+                        (cons "is not an interpreter macro." nil)))))
+   (t
+    (setq |$op| (concat "macro " (|object2String| name)))
+    (setq args (car m))
+    (setq body (cdr m))
+    (setq args
+     (cond
+      ((null args) nil)
+      ((null (cdr args)) (car args))
+      (t (cons '|Tuple| args))))
+    (|mathprint| (cons 'map (cons (cons args body) nil)))))))
+
+(defun |displayMacros| (names)
+ (let (imacs pmacs macros first)
+  (setq imacs (|getInterpMacroNames|))
+  (setq pmacs (|getParserMacroNames|))
+  (if names
+    (setq macros names)
+    (setq macros (append imacs pmacs)))
+  (setq macros (remdup macros))
+  (cond
+   ((null macros) (|sayBrightly| "   There are no Axiom macros."))
+   (t
+     (setq first t)
+     (do ((t0 macros (cdr t0)) (macro nil))
+         ((or (atom t0) (progn (setq macro (car t0)) nil)) nil)
+      (seq
+       (exit
+        (cond
+         ((|member| macro pmacs)
+           (cond
+            (first (|sayBrightly|
+             (cons '|%l| (cons "User-defined macros:" nil))) (setq first nil)))
+           (|displayParserMacro| macro))
+         ((|member| macro imacs) '|iterate|)
+         (t (|sayBrightly|
+          (cons "   "
+            (cons macro
+              (cons " is not a known Axiom macro." nil)))))))))
+     (setq first t)
+     (do ((t1 macros (cdr t1)) (macro nil))
+         ((or (atom t1) (progn (setq macro (car t1)) nil)) nil)
+      (seq
+       (exit
+        (cond
+         ((|member| macro imacs)
+           (cond
+            ((|member| macro pmacs) '|iterate|)
+            (t 
+             (cond
+              (first
+               (|sayBrightly|
+                (cons '|%l|
+                 (cons "System-defined macros:" nil))) (setq first nil)))
+             (|displayMacro| macro))))
+         ((|member| macro pmacs) '|iterate|)))))
+     nil)))) 
+
+(defun |displayMode| (v mode giveVariableIfNil)
+ (let (varPart)
+  (when mode
+   (unless giveVariableIfNil
+    (setq varPart (cons '| of| (|bright| (|fixObjectForPrinting| v)))))
+   (|sayBrightly|
+    (|concat| '|   Declared type or mode| varPart '|:   |
+     (|prefix2String| mode))))))
+
+(defun |displayModemap| (v val giveVariableIfNil)
+ (labels (
+  (g (v mm giveVariableIfNil)
+   (let (local signature fn varPart prefix)
+    (setq local (caar mm))
+    (setq signature (cdar mm))
+    (setq fn (cadr mm))
+    (unless (eq local '|interpOnly|)
+     (setq varPart (unless giveVariableIfNil (cons " of" (|bright| v))))
+     (setq prefix
+      (cons '|   Compiled function type| (append varPart (cons '|: | nil))))
+     (|sayBrightly| (|concat| prefix (|formatSignature| signature)))))))
+  (mapcar #'(lambda (x) (g v x giveVariableIfNil)) val)))
+
+(defun |displayOperations| (l)
+ (if l
+  (dolist (op l) (|reportOpSymbol| op))
+  (if (yesanswer)
+   (dolist (op (|allOperations|)) (|reportOpSymbol| op))
+   (|sayKeyedMsg| 
+    (format nil
+     "Since you did not respond with y or yes the list of operations will ~
+      not be displayed.")
+     nil))))
+
+(defun |displayOperationsFromLisplib| (form)
+ (let (name argl kind opList opl ops)
+ (declare (special |$FormalMapVariableList| $linelength))
+  (setq name (car form))
+  (setq argl (cdr form))
+  (setq kind (getdatabase name 'constructorkind))
+  (setq opList (getdatabase name 'operationalist))
+  (when opList
+    (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " Operations ")
+    (setq opl
+     (remdup (msort (eqsubstlist argl |$FormalMapVariableList| opList))))
+    (setq ops nil)
+    (dolist (x opl)
+     (setq ops (append ops (|formatOperationAlistEntry| x))))
+    (|say2PerLine| ops))))
+
+(defun |displayParserMacro| (m)
+ (let ((m (assq m |$pfMacros|)))
+ (declare (special |$pfMacros|))
+  (when m (|pfPrintSrcLines| (caddr m)))))
+
+(defun |displayProperties| (option al)
+ (let (|$dependentAlist| |$dependeeAlist| tmp1 opt imacs pmacs macros vl pl 
+       tmp2 vone prop val propsSeen)
+ (declare (special |$dependentAlist| |$dependeeAlist| |$frameMessages|
+                    |$interpreterFrameName|))
+  (setq |$dependentAlist| nil)
+  (setq |$dependeeAlist| nil)
+  (setq tmp1 (or al (cons '|properties| nil)))
+  (setq opt (car tmp1))
+  (setq vl (cdr tmp1))
+  (setq imacs (|getInterpMacroNames|))
+  (setq pmacs (|getParserMacroNames|))
+  (setq macros (remdup (append imacs pmacs)))
+  (when (or 
+         (and (consp vl) (eq (qcdr vl) nil) (eq (qcar vl) '|all|))
+         (null vl))
+    (setq vl (msort (append (|getWorkspaceNames|) macros))))
+   (when |$frameMessages|
+    (|sayKeyedMsg| "The name of the current frame is %1 ."
+     (cons |$interpreterFrameName| nil)))
+   (cond
+    ((null vl)
+     (if (null |$frameMessages|) 
+      (|sayKeyedMsg| "The workspace is empty." nil))
+      (|sayKeyedMsg| "The current frame, %1 , is empty."
+       (cons |$interpreterFrameName| nil)))
+    (t 
+     (|interpFunctionDepAlists|)
+     (do ((G166440 vl (cdr G166440)) (v nil))
+         ((or (atom G166440) (progn (setq v (car G166440)) nil)) nil)
+       (seq (exit
+        (cond
+         ((|isInternalMapName| v) '|iterate|)
+         (t
+          (setq pl (|getIProplist| v))
+          (cond
+           ((eq option '|flags|) 
+            (|getAndSay| v '|flags|))
+           ((eq option '|value|) 
+            (|displayValue| v (|getI| v '|value|) nil))
+           ((eq option '|condition|)
+            (|displayCondition| v (|getI| v '|condition|) nil))
+           ((eq option '|mode|)
+            (|displayMode| v (|getI| v '|mode|) nil))
+           ((eq option '|type|)
+            (|displayType| v (|getI| v '|value|) nil))
+           ((eq option '|properties|)
+            (cond
+             ((eq v '|--flags--|)
+               nil)
+             ((and (consp pl)
+                   (progn
+                    (setq tmp2 (qcar pl))
+                    (and (consp tmp2) (eq (qcar tmp2) '|cacheInfo|))))
+               nil)
+             (t
+              (setq vone (|fixObjectForPrinting| v))
+              (|sayMSG|
+               (cons "Properties of"
+                (append (|bright| (|prefix2String| vone)) (cons ":" nil))))
+              (cond
+               ((null pl)
+                (cond
+                 ((|member| v pmacs)
+                  (|sayMSG| "   This is a user-defined macro.")
+                  (|displayParserMacro| v))
+                 ((|isInterpMacro| v)
+                  (|sayMSG| "   This is a system-defined macro.")
+                  (|displayMacro| v))
+                 (t
+                  (|sayMSG| "   none"))))
+               (t 
+                (setq propsSeen nil)
+                (do ((G166451 pl (cdr G166451)) (G166425 nil))
+                    ((or (atom G166451)
+                         (progn (setq G166425 (car G166451)) nil)
+                         (progn
+                          (progn
+                           (setq prop (car G166425))
+                           (setq val (cdr G166425))
+                           G166425)
+                          nil))
+                       nil)
+                 (seq (exit
+                  (cond
+                   ((and (null (member prop propsSeen)) val)
+                    (cond
+                     ((|member| prop 
+                       '(|alias| |generatedCode| IS-GENSYM 
+                         |mapBody| |localVars|))
+                       nil)
+                     ((eq prop '|condition|)
+                      (|displayCondition| prop val t))
+                     ((eq prop '|recursive|)
+                      (|sayMSG| "   This is recursive."))
+                     ((eq prop '|isInterpreterFunction|)
+                      (|sayMSG| "   This is an interpreter function.")
+                      (|displayProperties,sayFunctionDeps| v))
+                     ((eq prop '|isInterpreterRule|)
+                      (|sayMSG| "   This is an interpreter rule.")
+                      (|displayProperties,sayFunctionDeps| v))
+                     ((eq prop '|localModemap|)
+                      (|displayModemap| v val t))
+                     ((eq prop '|mode|)
+                      (|displayMode| prop val t))
+                     (t
+                      (when (eq prop '|value|)
+                        (exit
+                         (when val
+                           (exit (|displayValue| v val t)))))
+                       (|sayMSG| (list "   " prop ":  " val))
+                       (setq propsSeen (cons prop propsSeen))))))))))))))
+           (t
+            (|sayKeyedMsg| "There is nothing to display for option %1 ."
+             (cons option nil)))))))))
+     (|terminateSystemCommand|)))))
+
+(defun |displayProperties,sayFunctionDeps| (x)
+ (prog (dependents dependees msg)
+ (declare (special |$dependeeAlist| |$dependentAlist|))
+ (return
+  (seq
+   (if (setq dependents (getalist |$dependentAlist| x))
+    (seq 
+     (if (null (cdr dependents))
+      (exit 
+       (|sayMSG| (cons "   The following function or rule "
+                  (cons "depends on this:" (|bright| (car dependents)))))))
+     (|sayMSG| "   The following functions or rules depend on this:")
+     (setq msg (cons "     " nil))
+     (do ((G166397 dependents (cdr G166397)) (y nil))
+         ((or (atom G166397) (progn (setq y (car G166397)) nil)) nil)
+       (seq (exit (setq msg (cons " " (cons y msg))))))
+     (exit (|sayMSG| (append (nreverse msg) (cons '|%d| nil)))))
+    nil)
+   (exit 
+    (if (setq dependees (getalist |$dependeeAlist| x))
+     (seq
+      (if (null (cdr dependees))
+       (exit 
+        (|sayMSG| (cons "   This depends on the following function "
+                   (cons "or rule:" (|bright| (car dependees)))))))
+      (|sayMSG| "   This depends on the following functions or rules:")
+      (setq msg (cons "     " nil))
+      (do ((G166406 dependees (cdr G166406)) (y nil))
+          ((or (atom G166406) (progn (setq y (car G166406)) nil)) nil)
+        (seq (exit (setq msg (cons " " (cons y msg))))))
+      (exit (|sayMSG| (append (nreverse msg) (cons '|%d| nil)))))
+     nil))))))
+
+(defun |displaySetOptionInformation| (arg setdata)
+ "Display the set option information"
+ (let (current)
+ (declare (special $linelength))
+  (cond
+   ((eq (fourth setdata) 'tree)
+    (|displaySetVariableSettings| (sixth setdata) (first setdata)))
+   (t 
+     (format t "~v,,,'-:@<~a~>~%" (- $linelength 2)
+      (concat " The " (|object2String| arg) " Option "))
+    (|sayBrightly|
+     `(|%l| ,@(|bright| "Description:") ,(second setdata)))
+    (case (fourth setdata)
+     (function
+      (terpri)
+      (if (canFuncall? (fifth setdata))
+        (funcall (fifth setdata) '|%describe%|)
+        (|sayMSG| "   Function not implemented.")))
+     (integer
+      (|sayMessage| 
+        `(" The" ,@(|bright| arg) "option" 
+          " may be followed by an integer in the range" 
+          ,@(|bright| (elt (sixth setdata) 0)) "to" 
+          |%l| ,@(|bright| (elt (sixth setdata) 1)) "inclusive." 
+          " The current setting is" ,@(|bright| (|eval| (fifth setdata))))))
+     (string
+      (|sayMessage| 
+        `(" The" ,@(|bright| arg) "option" 
+          " is followed by a string enclosed in double quote marks." 
+          '|%l| " The current setting is" 
+          ,@(|bright| (list '|"| (|eval| (fifth setdata)) '|"|)))))
+     (literals
+       (|sayMessage|
+        `(" The" ,@(|bright| arg) "option"
+              " may be followed by any one of the following:"))
+       (setq current 
+        (|translateTrueFalse2YesNo| (|eval| (fifth setdata))))
+       (dolist (name (sixth setdata))
+         (if (boot-equal name current)
+           (|sayBrightly| `( " ->" ,@(|bright| (|object2String| name))))
+           (|sayBrightly| (list "    " (|object2String| name)))))
+       (|sayMessage| " The current setting is indicated.")))))))
+
+(defun |displaySetVariableSettings| (settree label)
+ "Display the set variable settings"
+ (let (setoption opt subtree subname)
+ (declare (special $linelength))
+  (if (eq label '||) 
+    (setq label ")set")
+    (setq label (concat "  " (|object2String| label) " ")))
+  (format t "~v:@<~a~>~%" (- $linelength 2)
+    (concat " Current Values of" label " Variables "))
+  (terpri)
+  (|sayBrightly| 
+   (list "Variable     " "Description                                "
+         "Current Value" ))
+  (say (|fillerSpaces| $linelength (|specialChar| '|hbar|)))
+  (setq subtree nil)
+  (dolist (setdata settree)
+   (when (|satisfiesUserLevel| (third setdata))
+     (setq setoption (|object2String| (first setdata)))
+     (setq setoption
+      (concat setoption
+       (|fillerSpaces| (- 13 (|#| setoption)) " ")
+       (second setdata)))
+     (setq setoption
+      (concat setoption
+       (|fillerSpaces| (- 55 (|#| setoption)) " ")))
+     (case (fourth setdata)
+      (function
+       (setq opt
+        (if (canFuncall? (fifth setdata))
+         (funcall (fifth setdata) '|%display%|)
+         "unimplemented"))
+       (cond
+        ((consp opt)
+         (setq opt
+          (do ((t2 opt (cdr t2)) t1 (o nil))
+              ((or (atom t2) (progn (setq o (car t2)) nil)) t1)
+           (setq t1 (append t1 (cons o (cons " " nil))))))))
+       (|sayBrightly| (|concat| setoption opt)))
+      (string
+       (setq opt (|object2String| (|eval| (fifth setdata))))
+       (|sayBrightly| `(,setoption ,@(|bright| opt))))
+      (integer
+       (setq opt (|object2String| (|eval| (fifth setdata))))
+       (|sayBrightly| `(,setoption ,@(|bright| opt))))
+      (literals
+       (setq opt (|object2String| 
+             (|translateTrueFalse2YesNo| (|eval| (fifth setdata)))))
+       (|sayBrightly| `(,setoption ,@(|bright| opt))))
+      (TREE
+         (|sayBrightly| `(,setoption ,@(|bright| "...")))
+         (setq subtree t)
+         (setq subname (|object2String| (first setdata)))))))
+  (terpri)
+  (when subtree
+     (|sayBrightly|
+      `("Variables with current values of" ,@(|bright| "...")
+            "have further sub-options. For example,"))
+     (|sayBrightly|
+      `("issue" ,@(|bright| ")set ") ,subname
+        " to see what the options are for" ,@(|bright| subname) "."
+        |%l| "For more information, issue" ,@(|bright| ")help set") ".")))))
+
+(defun displaySpad2Cmd (l)
+ (let ((|$e| |$EmptyEnvironment|) (opt (car l)) (vl (cdr l)) option)
+  (declare (special |$e| |$EmptyEnvironment| |$displayOptions|))
+  (if (and (consp l) (not (eq opt '?)))
+   (progn
+    (setq option (|selectOptionLC| opt |$displayOptions| '|optionError|))
+    (cond
+     ((eq option '|all|)
+       (setq l (list '|properties|))
+       (setq option '|properties|))
+     ((or (eq option '|modes|) (eq option '|types|))
+       (setq l (cons '|type| vl))
+       (setq option '|type|))
+     ((eq option '|values|)
+       (setq l (cons '|value| vl))
+       (setq option '|value|)))
+    (cond 
+     ((eq option '|abbreviations|)
+      (if (null vl)
+        (|listConstructorAbbreviations|)
+        (dolist (v vl) (|abbQuery| (|opOf| v)))))
+     ((eq option '|operations|) (|displayOperations| vl))
+     ((eq option '|macros|) (|displayMacros| vl))
+     ((eq option '|names|) (|displayWorkspaceNames|))
+     (t (|displayProperties| option l))))
+   (|sayMessage|
+    (append 
+      '("  )display keyword arguments are")
+      (mapcar #'(lambda (x) (format nil "~%     ~a" x)) |$displayOptions|)
+      (format nil "~%  or abbreviations thereof"))))))
+
+(defun |displayType| (|$op| u omitVariableNameIfTrue)
+ (declare (special |$op|) (ignore omitVariableNameIfTrue))
+ (let (type)
+  (if (null u)
+   (|sayMSG|
+    (list  "   Type of value of " (|fixObjectForPrinting| (pname |$op|))
+           ":  (none)"))
+   (progn
+    (setq type (|prefix2String| (|objMode| u)))
+    (when (atom type) (setq type (list type)))
+    (|sayMSG|
+     (|concat|
+      (cons "   Type of value of "
+       (cons (|fixObjectForPrinting| (pname |$op|))
+        (cons ": " type)))))
+     nil))))
+
+(defun |displayValue| (|$op| u omitVariableNameIfTrue)
+ (declare (special |$op|))
+ (let (expr op rhs label labmode)
+ (declare (special |$EmptyMode|))
+  (if (null u)
+   (|sayMSG|
+    (list '|   Value of | (|fixObjectForPrinting| (pname |$op|)) ":  (none)"))
+   (progn
+    (setq expr (|objValUnwrap| u))
+    (if (or (and (consp expr) (progn (setq op (qcar expr)) t) (eq op 'map))
+            (equal (|objMode| u) |$EmptyMode|))
+     (|displayRule| |$op| expr)
+     (progn
+       (cond
+        (omitVariableNameIfTrue
+          (setq rhs "):  ")
+          (setq label "Value (has type "))
+        (t
+         (setq rhs ":  ")
+         (setq label (concat "Value of " (pname |$op|) ": "))))
+      (setq labmode (|prefix2String| (|objMode| u)))
+      (when (atom labmode) (setq labmode (list labmode)))
+      (if (eq (getdatabase expr 'constructorkind) '|domain|)
+       (|sayMSG| (|concat| "   " label labmode rhs (|form2String| expr)))
+       (|mathprint|
+        (cons 'concat
+         (cons label
+          (append labmode
+           (cons rhs
+            (cons (|outputFormat| expr (|objMode| u)) nil)))))))
+       nil))))))
+
+(defun |displayWorkspaceNames| ()
+ (let (pmacs names imacs)
+  (setq imacs (|getInterpMacroNames|))
+  (setq pmacs (|getParserMacroNames|))
+  (|sayMessage| "Names of User-Defined Objects in the Workspace:")
+  (setq names (msort (append (|getWorkspaceNames|) pmacs)))
+  (if names
+   (|sayAsManyPerLineAsPossible| (mapcar #'|object2String| names))
+   (|sayBrightly| "   * None *"))
+  (setq imacs (setdifference imacs pmacs))
+  (when imacs
+   (|sayMessage| "Names of System-Defined Objects in the Workspace:")
+   (|sayAsManyPerLineAsPossible| (mapcar #'|object2String| imacs)))))
+
+(defun |doDoitButton| (htPage command)
+ (declare (ignore htPage))
+ (|executeInterpreterCommand| command))
+
+(defun |domainDescendantsOf| (conform domform)
+ (labels (
+  (catScreen (r alist)
+   (let (t1 item pred pred1 npred)
+    (dolist (x r)
+     (unless (and (consp x) (member (qcar x) '(attribute signature)))
+       (|systemError| x))
+     (setq alist
+      (dolist (anitem alist (nreverse0 t1))
+        (setq item (car anitem))
+        (setq pred (cdr anitem))
+        (when (and
+                (setq pred1 (|simpHasPred| (list '|has| item x)))
+                (setq npred (|quickAnd| pred1 pred)))
+              (setq t1 (cons (cons item npred) t1))))))
+    alist))
+  ; keep only those domains that appear in ALL parts of Join
+  (jfn (arg domlist)
+   (let (y r item pred u keepList alist)
+    (setq y (car arg))
+    (setq r (cdr arg))
+    (setq alist (|domainsOf| y (ifcar domlist)))
+    (dolist (x r)
+      (setq domlist (ifcdr domlist))
+      (when (and (consp x) (eq (qcar x) 'category) (consp (qcdr x)))
+        (setq alist (catScreen (cddr x) alist)))
+      (setq keepList nil)
+      (dolist (dom (|domainsOf| x (ifcar domlist)))
+        (setq item (car dom))
+        (setq pred (cdr dom))
+        (when (setq u (|assoc| item alist))
+          (setq keepList 
+           (cons (cons item (|quickAnd| (cdr u) pred)) keepList))))
+      (setq alist keepList))
+    (dolist (pair alist)
+      (rplacd pair (|simpHasPred| (cdr pair))))
+    (|listSort| #'glesseqp alist))))
+  (if (consp conform)
+    (cond
+      ((eq (qcar conform) '|Join|)
+        (jfn
+          (|delete| '(|Type| object) (qcdr conform))
+          (|delete| '(|Type| object) (ifcdr domform))))
+      ((eq (qcar conform) 'category) nil)
+      (t (|domainsOf| conform domform)))
+    (|domainsOf| conform domform))))
+
+(defun |domainToGenvar| (arg)
+ (let (|$doNotAddEmptyModeIfTrue| y g)
+ (declare (special |$doNotAddEmptyModeIfTrue|))
+  (setq |$doNotAddEmptyModeIfTrue| t)
+  (when
+   (and (setq y (|unabbrevAndLoad| arg))
+        (eq (getdatabase (|opOf| y) 'constructorkind) '|domain|))
+     (setq g (|genDomainTraceName| y))
+     (set g (|evalDomain| y))
+     g)))
+
+(defun |domArg| (type i subs y)
+ (let (p)
+  (declare (special |$FormalMapVariableList|))
+  (if (setq p (member (elt |$FormalMapVariableList| i) subs))
+   (elt y (- (|#| subs) (|#| p)))
+   type)))
+
+(defun |domArg2| (arg sl1 sl2)
+ (declare (special |$domPvar|))
+ (cond
+  ((|isSharpVar| arg) (|subCopy| arg sl1))
+  ((and (eq arg '$) |$domPvar|) |$domPvar|)
+  (t (|subCopy| arg sl2))))
+
+(defun |doSystemCommand| (string)
+ (let (line tok unab optionList)
+ (declare (special line |$tokenCommands| |$noParseCommands|))
+  (setq string (concat ")" (expand-tabs string)))
+  (setq line string)
+  (|processSynonyms|)
+  (setq string line)
+  (setq string (substring string 1 nil))
+  (cond
+   ((string= string "") nil)
+   (t
+    (setq tok (|getFirstWord| string))
+    (cond
+     (tok 
+      (setq unab (|unAbbreviateKeyword| tok))
+      (cond
+       ((|member| unab |$noParseCommands|)
+        (|handleNoParseCommands| unab string))
+       (t
+        (setq optionList (|splitIntoOptionBlocks| string))
+        (cond
+         ((|member| unab |$tokenCommands|)
+          (|handleTokensizeSystemCommands| unab optionList))
+         (t 
+          (|handleParsedSystemCommands| unab optionList)
+          nil)))))
+     (t nil))))))
+
+(defun downcase (l)
+  (cond ((stringp l) (string-downcase l))
+        ((identp l) (intern (string-downcase (symbol-name l))))
+        ((characterp l) (char-downcase L))
+        ((atom l) l)
+        (t (mapcar #'downcase l))))
+
+(defun |downlink| (page)
+ (|htInitPage| "Bridge" nil)
+ (|htSay| "\\replacepage{" page "}")
+ (|htShowPage|))
+
+(defun |dqConcat| (ld)
+ (cond
+  ((null ld) nil)
+  ((null (cdr ld)) (car ld))
+  (t (|dqAppend| (car ld) (|dqConcat| (cdr ld))))))
+
+(defun |dropInputLibrary| (lib) 
+ "Drop an input library from the list"
+ (declare (special input-libraries))
+ (setq input-libraries (delete (truename lib) input-libraries :test #'equal)))
+
+(defun |dSearch| (filter)
+  (|constructorSearch| (|checkFilter| filter) '|d| "domain"))
+
+(defun |dumbTokenize| (str)
+ (let (inString token (tokenStart 0) previousSpace tokenList)
+  (dotimes (i (1- (|#| str)))
+   (cond
+    ((char= (elt str i) #\") ; don't split strings
+     (setq inString (null inString))
+     (setq previousSpace nil))
+    ((and (char= (elt str i) #\space) (null inString))
+     (unless previousSpace
+       (setq token (|stripSpaces| (subseq str tokenStart i)))
+       (setq tokenList (cons token tokenList))
+       (setq tokenStart (1+ i))
+       (setq previousSpace t)))
+    (t
+     (setq previousSpace nil))))
+  (setq tokenList (cons (|stripSpaces| (subseq str tokenStart)) tokenList))
+  (nreverse tokenList)))
+
+
+(defun |edit| (l) (|editSpad2Cmd| l)) 
+
+(defun |editFile| (file)
+ (cond
+  ((member (intern "WIN32" (find-package 'keyword)) *features*)
+   (obey (concat "notepad " (|namestring| (|pathname| file)))))
+  (t
+   (obey
+    (concat "$AXIOM/lib/SPADEDIT " (|namestring| (|pathname| file)))))))
+
+(defun |editSpad2Cmd| (l)
+ (let (olddir filetypes ll rc)
+ (declare (special /editfile))
+    (setq l (cond ((null l) /editfile) (t (car l))))
+    (setq l (|pathname| l))
+    (setq olddir (|pathnameDirectory| l))
+    (setq filetypes
+     (cond 
+      ((|pathnameType| l) (list (|pathnameType| l)))
+      ((eq |$UserLevel| '|interpreter|) '("input" "INPUT" "spad" "SPAD"))
+      ((eq |$UserLevel| '|compiler|) '("input" "INPUT" "spad" "SPAD"))
+      (t '("input" "INPUT" "spad" "SPAD" "boot" "BOOT" 
+           "lisp" "LISP" "meta" "META"))))
+    (setq ll
+     (cond
+      ((string= olddir "")
+        (|pathname| ($findfile (|pathnameName| l) filetypes)))
+      (t l)))
+    (setq l (|pathname| ll))
+    (setq /editfile l)
+    (setq rc (|editFile| l))
+    (|updateSourceFiles| l)
+    rc))
+
+(defun |Else?| (|st|)
+ "used in incLude1 for parsing"
+ (eql (quotient |st| 10) 3))
+
+(defun |Elseif?| (|st|)
+ "used in incLude1 for parsing"
+ (eql (quotient |st| 10) 2))
+
+(defun embededFunction (name newDef oldDef)
+ (let (body op bv)
+  (setq newDef
+   (cond
+    ((null (consp newDef)) newDef)
+    (t
+      (setq body (cddr newDef))
+      (setq op (car newDef))
+      (if (and body (setq bv (cadr newDef))
+                    (or (eq op 'lambda) (eq op 'mlambda)))
+         (if (null (member name (flatBvList bv)))
+          (list op bv
+            (list
+              (cons 'lambda (cons (list name) body))
+              (list 'quote oldDef)))
+          newDef)
+        (break)))))
+  (coerce newDef 'function)))
+
+(defun |enPile| (x)
+ (|dqConcat|
+  (list
+   (|dqUnit| (|tokConstruct| '|key| 'settab (|firstTokPosn| x)))
+   x
+   (|dqUnit| (|tokConstruct| '|key| 'backtab (|lastTokPosn| x))))))
+
+(defun eofp (stream) (null (peek-char nil stream nil nil)))
+
+(defun |eqpileTree| (n s)
+ (let (hh t1 h tmp)
+  (cond
+   ((|npNull| s) (list nil n nil s))
+   (t
+    (setq tmp (list (car s) (cdr s)))
+    (setq h (car tmp))
+    (setq t1 (cadr tmp))
+    (setq hh (|pileColumn| (car h)))
+    (cond
+     ((equal hh n) (|pileForests| (car h) hh t1))
+     (t (list nil n nil s)))))))
+
+(defun |erMsgCompare| (ob1 ob2)
+ (|compareposns| (|getMsgPos| ob2) (|getMsgPos| ob1)))
+
+(defun |erMsgSep| (erMsgList)
+ (let (msgWOPos msgWPos)
+  (dolist (msg erMsgList)
+   (if (|poNopos?| (|getMsgPos| msg))
+    (setq msgWOPos (cons msg msgWOPos))
+    (setq msgWPos (cons msg msgWPos))))
+  (list msgWPos msgWOPos)))
+
+(defun |erMsgSort| (erMsgList)
+ (let (msgWOPos msgWPos tmp)
+  (setq tmp (|erMsgSep| erMsgList))
+  (setq msgWPos (car tmp))
+  (setq msgWOPos (cadr tmp))
+  (setq msgWPos (|listSort| #'|erMsgCompare| msgWPos))
+  (setq msgWOPos (reverse msgWOPos))
+  (append msgWPos msgWOPos)))
+
+(defun |evalCategory| (d c)
+  (or (|isPartialMode| d) (|ofCategory| d c)))
+
+(defun |evalDomain| (form)
+ (let (result)
+ (declare (special |$evalDomain|))
+  (when |$evalDomain|
+    (|sayMSG| (|concat| "   instantiating " (|prefix2String| form))))
+  (|startTimingProcess| '|instantiation|)
+  (setq result (|eval| (|mkEvalable| form)))
+  (|stopTimingProcess| '|instantiation|)
+  result))
+
+(defun |evaluateSignature| (sig)
+  (cond
+   ((and (consp sig) (eq (qcar sig) 'signature) (consp (qcdr sig))
+         (consp (qcdr (qcdr sig))) (eq (qcdr (qcdr (qcdr sig))) nil))
+    (cons 'signature (cons (qcar (qcdr sig))
+      (list
+       (loop for z in (qcar (qcdr (qcdr sig)))
+        collect (if (eq z '$) z (|evaluateType| z)))))))
+   (t sig)))
+
+(defun |evaluateType| (form)
+ (let (|$expandSegments| domain formp op argl)
+  (declare (special |$expandSegments| |$EmptyMode|))
+  (cond
+    ((setq domain (|isDomainValuedVariable| form)) domain)
+    ((equal form |$EmptyMode|) form)
+    ((eq form '?) |$EmptyMode|)
+    ((stringp form) form)
+    ((eq form '$) form)
+    (t
+     (setq |$expandSegments| nil)
+     (cond
+       ((and (consp form) (eq (qcar form) '|typeOf|) (consp (qcdr form)) 
+             (eq (qcdr (qcdr form)) nil))
+         (setq formp (|mkAtree| form))
+         (|bottomUp| formp)
+         (|objVal| (|getValue| formp)))
+       ((consp form)
+         (setq op (qcar form))
+         (setq argl (qcdr form))
+         (cond
+          ((eq op 'category)
+            (cond
+             ((consp argl)
+               (cons op
+                (cons (qcar argl)
+                 (loop for s in (qcdr argl)
+                  collect (|evaluateSignature| s)))))
+             (t form)))
+          ((|member| op '(|Join| |Mapping|))
+            (cons op
+             (loop for arg in argl
+              collect (|evaluateType| arg))))
+          ((eq op '|Union|)
+            (cond
+             ((and argl (consp (car argl)) (consp (qcdr (car argl)))
+                   (consp (qcdr (qcdr (car argl))))
+                   (eq (qcdr (qcdr (qcdr (car argl)))) nil)
+                   (|member| (qcar (car argl)) '(|:| |Declare|)))
+               (cons op
+                (loop for item in argl
+                 collect
+                  (list '|:| (second item) (|evaluateType| (third item))))))
+             (t
+              (cons op
+               (loop for arg in argl
+                collect (|evaluateType| arg))))))
+          ((eq op '|Record|)
+            (cons op
+             (loop for item in argl
+              collect
+               (list '|:| (second item) (|evaluateType| (third item))))))
+          ((eq op '|Enumeration|) form)
+          (t (|evaluateType1| form))))
+       ((|constructor?| form)
+         (if (atom form)
+           (|evaluateType| (list form))
+           (|throwEvalTypeMsg|
+            (format nil
+             "Although %1 is the name of a constructor, a full type must be ~
+              specified in the context you have used it.  Issue )show %2 ~
+              for more information.")
+             (list form form))))
+       (t (|throwEvalTypeMsg| "%1p is not a valid type." (list form))))))))
+
+(defun |evaluateType1| (form)
+ (let (op argl sig ml xp tree tmp1 m1 z1 zt zv v typeList (argnum 0))
+ (declare (special |$quadSymbol| |$EmptyMode|))
+  (setq op (car form))
+  (setq argl (cdr form))
+  (cond
+   ((|constructor?| op)
+     (cond
+      ((null (setq sig (|getConstructorSignature| form)))
+       (|throwEvalTypeMsg| 
+        "You cannot now use %1p in the context you have it." (list form)))
+      (t
+       (setq ml (cdr sig))
+       (setq ml (|replaceSharps| ml form))
+       (cond
+        ((not (eql (|#| argl) (|#| ml)))
+          (|throwEvalTypeMsg|
+           (format nil
+            "Although %1 is the name of a constructor, a full type must be ~
+             specified in the context you have used it.  Issue )show %2 ~
+             for more information.")
+          (list form form)))
+        (t
+         (loop for x in argl for m in ml 
+          do
+           (setq typeList
+            (cons
+             (cond
+              ((|categoryForm?| m)
+                (setq m (|evaluateType| (subst x '$ m)))
+                (if (|evalCategory| (setq xp (|evaluateType| x)) m)
+                   xp
+                   (|throwEvalTypeMsg| "%1p is not a valid type."
+                     (list form))))
+              (t
+               (setq m (|evaluateType| m))
+               (cond
+                ((and (eq (getdatabase (|opOf| m) 'constructorkind) '|domain|)
+                      (setq tree (|mkAtree| x))
+                      (|putTarget| tree m)
+                      (progn
+                       (setq tmp1 (|bottomUp| tree))
+                       (and (consp tmp1)
+                            (eq (qcdr tmp1) nil))))
+                  (setq m1 (qcar tmp1))
+                  (setq z1 (|getAndEvalConstructorArgument| tree))
+                  (setq zt (car z1))
+                  (setq zv (cdr z1))
+                  (if (setq v (|coerceOrRetract| z1 m))
+                    (|objValUnwrap| v)
+                    (|throwKeyedMsgCannotCoerceWithValue| zv zt m)))
+                (t
+                 (when (equal x |$EmptyMode|) (setq x |$quadSymbol|))
+                 (|throwEvalTypeMsg|
+                  "Cannot convert the %1 argument of %3p to the type %2p ."
+                  (list (|makeOrdinal| (incf argnum)) m form))))))
+             typeList)))
+       (cons op (nreverse typeList)))))))
+    (t (|throwEvalTypeMsg|
+         "Category, domain or package constructor %1 is not available."
+          (list op))))))
+
+(defun |executeInterpreterCommand| (command)
+  (princ command)
+  (terpri)
+  (|setCurrentLine| command)
+  (catch 'spad_reader (|parseAndInterpret| command))
+  (princ (mkprompt))
+  (finish-output))
+
+(defun |ExecuteInterpSystemCommand| (string)
+ (let (|$currentLine|)
+ (declare (special |$currentLine|))
+  (setq string (|intProcessSynonyms| string))
+  (setq |$currentLine| string)
+  (setq string (substring string 1 nil))
+  (unless (equal string "") (|doSystemCommand| string))))
+
+(defun |executeQuietCommand| ()
+ (let (|$QuietCommand| stringBuf)
+ (declare (special |$QuietCommand| |$MenuServer|))
+  (setq |$QuietCommand| t)
+  (setq stringBuf (make-string 512))
+  (|sockGetString| |$MenuServer| stringBuf 512)
+  (catch '|coerceFailure|
+   (catch '|top_level|
+    (catch 'spad_reader (|parseAndInterpret| stringBuf))))))
+
+(defun |explainLinear| (flag)
+ (cond
+  ((eq flag '|notHomogeneous|)
+     '("solve returns a particular solution and a basis for"
+       "the vector space of solutions for the homogeneous part."
+       "The particular solution is \"failed\" if one cannot be found."))
+  ((eq flag '|homogeneous|)
+     '("solve returns a basis for"
+       "the vector space of solutions for the homogeneous part"))
+  (t (|systemError| nil))))
+
+
+(defun |fetchOutput| (n)
+ (let (vec Alist val)
+  (cond
+   ((and (boot-equal n (- 1)) (setq val (|getI| '% '|value|)))
+     val)
+   (|$HiFiAccess|
+    (setq n
+     (cond
+      ((minusp n) (+ |$IOindex| n))
+      (t n)))
+    (cond
+     ((>= n |$IOindex|) 
+       (|throwKeyedMsg|
+        "You have not reached step %1, and so its value cannot be supplied."
+        (cons n nil)))
+     ((> 1 n)
+       (|throwKeyedMsg|
+        "Cannot supply value for step %1b because 1 is the first step."
+        (cons n nil))) ; only nonzero steps
+     (t
+       (setq vec (unwind-protect (|readHiFi| n) (|disableHist|)))
+       (cond
+        ((setq Alist (assq '% (cdr vec)))
+          (cond
+            ((setq val (cdr (assq '|value| (cdr Alist))))
+              val)
+            (t
+              (|throwKeyedMsg| "Step %1 has no value." (cons n nil)))))
+        (t (|throwKeyedMsg| "Step %1 has no value." (cons n nil)))))))
+   (t (|throwKeyedMsg| 
+       "The history facility is not on, so you cannot use %%."
+       nil))))) ; history not on
+
+(defun |fillerSpaces| (&rest arglist &aux charPart n)
+  (setq n (car arglist))
+  (setq charPart (cdr arglist))
+  (if (<= n 0) 
+   ""
+   (make-string n :initial-element (character (or (ifcar charPart) " ")))))
+
+(defun |filterAndFormatConstructors| (constrType label patterns)
+ (prog (l)
+ (declare (special $linelength))
+  (return
+   (progn
+    (format t "~v,,,'-:@< ~a ~>~%" (- $linelength 2) label)
+    (setq l
+     (|filterListOfStringsWithFn| patterns
+       (|whatConstructors| constrType)
+       #'cdr))
+    (cond (patterns
+     (cond
+      ((null l)
+       (|sayMessage|
+        (cons "   No "
+         (cons label
+          (cons " with names matching patterns:"
+           (cons '|%l|
+            (cons "    "
+              (append (|blankList| patterns) 
+               (cons " " nil)))))))))
+      (t
+        (|sayMessage|
+         (cons label
+          (cons " with names matching patterns:"
+           (cons '|%l|
+            (cons "    "
+              (append (|blankList| patterns)
+               (cons " " nil)))))))))))
+    (cond (l (|pp2Cols| l)))))))
+
+(defun |filterListOfStrings| (patterns names)
+ (let (result)
+ (if (or (null patterns) (null names))
+  names
+  (dolist (name (reverse names) result)
+   (when (|satisfiesRegularExpressions| name patterns)
+    (push name result))))))
+
+(defun |filterListOfStringsWithFn| (patterns names fn)
+ (let (result)
+ (if (or (null patterns) (null names))
+  names
+  (dolist (name (reverse names) result)
+   (when (|satisfiesRegularExpressions| (funcall fn name) patterns)
+    (push name result))))))
+
+(defun |finalExactRequest| (equations unknowns)
+ (let (tt)
+  (|sayBrightly| "Do you like:")
+  (|sayBrightly| "   (1) the solutions how they are displayed")
+  (|sayBrightly| "   (2) to get ????")
+  (|sayBrightly| "   (3) more information on the meaning of the output")
+  (setq tt (|bcQueryInteger| 1 3 t))
+  (cond
+    ((eql tt 1) (|sayBrightly| "Bye Bye"))
+    ((eql tt 2) (|moreExactSolution| equations unknowns))
+    ((eql tt 3) (|explainExact| equations unknowns)))))
+
+(defun findnexttest (stream)
+ (let (teststart result)
+  (do ((line (read-line stream nil 'done) (read-line stream nil 'done)))
+      ((or (eq line 'done) (endedp line))
+        (values (if line teststart) result))
+   (if teststart 
+    (push line result) 
+    (setq teststart (testnumberp line))))))
+
+(defun |firstTokPosn| (arg) (|tokPosn| (caar arg)))
+
+(defun |fixObjectForPrinting| (v)
+ (let (vp)
+ (declare (special |$msgdbPrims|))
+  (setq vp (|object2Identifier| v))
+  (cond
+   ((eq vp '%) "\\%")
+   ((|member| vp |$msgdbPrims|) (concat "\\" (pname vp)))
+   (t v))))
+
+(defun flatBvList (bvlist)
+ (let (tmp1)
+  (cond
+   ((varp bvlist) (list bvlist))
+   ((refvecp bvlist) (break))
+   ((null (consp bvlist)) nil)
+   ((eq '= (setq tmp1 (car bvlist)))
+     (flatBvList (cdr bvlist)))
+   ((varp tmp1) (cons tmp1 (flatBvList (cdr bvlist))))
+   ((and (null (consp tmp1)) (null (refvecp tmp1)))
+     (flatBvList (cdr bvlist)))
+   (t
+    (nconc (flatBvList tmp1) (flatBvList (cdr bvlist)))))))
+
+(defun |float2Sex| (num)
+ (let (exp frac bfForm fracPartString intPart dotIndex expPart mantPart eIndex)
+ (declare (special |$useBFasDefault|))
+  (setq eIndex (search "e" num))
+  (if eIndex
+   (setq mantPart (subseq num 0 eIndex))
+   (setq mantPart num))
+  (if eIndex
+   (setq expPart (read-from-string (subseq num (+ eIndex 1))))
+   (setq expPart 0))
+  (setq dotIndex (search "." mantPart))
+  (if dotIndex
+   (setq intPart (read-from-string (subseq mantPart 0 dotIndex)))
+   (setq intPart (read-from-string mantPart)))
+  (if dotIndex
+   (setq fracPartString (subseq mantPart (+ dotIndex 1)))
+   (setq fracPartString 0))
+  (setq bfForm
+   (make-float intPart (read-from-string fracPartString)
+                         (length fracPartString) expPart))
+  (if |$useBFasDefault|
+   (progn
+    (setq frac (cadr bfForm))
+    (setq exp (cddr bfForm))
+    (list (list '|$elt| (list '|Float|) '|float|) frac exp 10))
+   bfForm)))
+
+(defun |fnameDirectory| (f)
+  (|DirToString| (pathname-directory f)))
+
+(defun |fnameMake| (d n e)
+  (if (string= e "") (setq e nil))
+  (make-pathname :directory (|StringToDir| d) :name  n :type e))
+
+(defun |fnameNew| (d n e)
+  (if (not (|myWritable?| d))
+    nil
+    (do ((fn))
+        (nil)
+        (setq fn (|fnameMake| d (string (gensym n)) e))
+        (if (not (probe-file (namestring fn)))
+           (return-from |fnameNew| fn)) )))
+
+(defun |fnameWritable?| (f)
+  (|myWritable?| (namestring f)) )
+
+(defun |frame| (l)
+ "The top level frame command"
+ (|frameSpad2Cmd| l)) 
+
+(defun |frameEnvironment| (fname)
+ "Get Named Frame Environment (aka Interactive)"
+ (let ((frame (|findFrameInRing| fname)))
+  (if frame
+   (frameInteractive frame)
+   (list (list nil)))))
+
+(defun |frameSpad2Cmd| (args)
+ "The top level frame command handler"
+ (let (frameArgs arg a)
+  (declare (special |$options|))
+  (setq frameArgs '(|drop| |import| |last| |names| |new| |next|))
+  (cond
+   (|$options|
+    (|throwKeyedMsg| "The %1 system command takes arguments but no options."
+     (cons ")frame" nil)))
+   ((null args) (|helpSpad2Cmd| (cons '|frame| nil)))
+   (t
+     (setq arg (|selectOptionLC| (car args) frameArgs '|optionError|))
+     (setq args (cdr args))
+     (when (and (consp args) 
+            (eq (qcdr args) nil)
+            (progn (setq a (qcar args)) t))
+        (setq args a))
+     (when (atom args) (setq args (|object2Identifier| args)))
+     (case arg
+      (|drop|
+        (if (and args (consp args))
+          (|throwKeyedMsg| "%1 is not a valid frame name."
+             (cons args nil))
+          (|closeInterpreterFrame| args)))
+      (|import| (|importFromFrame| args))
+      (|last|   (|previousInterpreterFrame|))
+      (|names|  (|displayFrameNames|))
+      (|new|
+        (if (and args (consp args))
+          (|throwKeyedMsg| "%1 is not a valid frame name."
+             (cons args nil))
+          (|addNewInterpreterFrame| args)))
+      (|next| (|nextInterpreterFrame|))
+      (t nil))))))
+
+(defun |funfind,LAM| (functor opname)
+ (prog (ops tmp1)
+  (return
+   (seq
+    (progn
+     (setq ops (|isFunctor| functor))
+     (prog (t0)
+      (setq t0 nil)
+      (return
+       (do ((t1 ops (cdr t1)) (u nil))
+           ((or (atom t1) (progn (setq u (car t1)) nil)) (nreverse0 t0))
+        (seq
+         (exit
+          (cond
+           ((and (consp u)
+                 (progn
+                  (setq tmp1 (qcar u))
+                  (and (consp tmp1) (equal (qcar tmp1) opname))))
+             (setq t0 (cons u t0)))))))))))))) 
+
+
+(defun gammaRatapprox (x)
+ (let (restx intpartx lx prod reducedarg a n result)
+  (cond
+   ((and (not (< x 2)) (not (< 3 x)))
+     (setq result (gammaRatkernel x)))
+   ((< 3 x)
+     (setq n (- (floor x) 2))
+     (setq a (- (- x n) 2))
+     (setq reducedarg (+ 2 a))
+     (setq prod
+      (reduce #'* (loop for i from 0 to (- n 1) collect (+ reducedarg i))))
+     (setq result (* prod (gammaRatapprox reducedarg))))
+   ((and (< x 2) (< 0 x))
+    (setq n (- 2 (floor x)))
+    (setq a (- x (floor x)))
+    (setq reducedarg (+ 2 a))
+    (setq prod (reduce #'* (loop for i from 0 to (- n 1) collect (+ x i))))
+    (setq result (/ (gammaRatapprox reducedarg) prod)))
+   (t
+    (setq lx (multiple-value-list (floor x)))
+    (setq intpartx (+ (car lx) 1))
+    (setq restx (cadr lx))
+    (cond
+     ((zerop restx)
+       (FloatError "Gamma undefined for non-positive integers: ~D" x)
+       (setq result (/ 1.0 (complex 0.0))))
+     (t
+      (setq result
+       (/ Pi
+         (* (* (gammaRatapprox (- 1.0 x))
+               (expt (- 1.0) (+ intpartx 1)))
+            (sin (* restx Pi)))))))))
+  result))
+
+(defun gammaRatkernel (x)
+  (/
+   (horner
+    '(0.77807958561330059 6.1260674503360839 48.95434622790993 
+     222.11239616801177   893.58180452374972 2077.4597938941874
+     3786.0105034825724)
+     (- x 2))
+   (horner
+    '(1  -13.400414785781347 50.788475328895402 83.550058667919771 
+         -867.23098753110298 476.79386050368794 3786.0105034825719)
+     (- x 2.0))))
+
+(defun gammaStirling (x)
+  (exp (lnrgamma x)))
+
+(defun |gatherGlossLines| (results defstream)
+  (prog (n keyAndTick byteAddress line k pointer def x
+         j nextPointer xtralines acc)
+  (declare (special |$tick|))
+    (return
+      (SEQ (progn
+             (setq acc nil)
+             (DO ((G168098 results (cdr G168098))
+                  (keyline nil))
+                 ((or (atom G168098)
+                      (progn (setq keyline (car G168098)) nil))
+                  nil)
+               (SEQ (EXIT (progn
+                            (setq n
+                                     (|charPosition| |$tick| keyline
+                                      0))
+                            (setq keyAndTick
+                                     (SUBSTRING keyline 0
+                                      (1+ n)))
+                            (setq byteAddress
+                                     (|string2Integer|
+                                      (SUBSTRING keyline (1+ n)
+                                       nil)))
+                            (file-position defstream byteAddress)
+                            (setq line (readline defstream))
+                            (setq k
+                                     (|charPosition| |$tick| line 1))
+                            (setq pointer
+                                     (SUBSTRING line 0 k))
+                            (setq def
+                                     (SUBSTRING line (1+ k)
+                                      nil))
+                            (setq xtralines nil)
+                            (DO ()
+                                ((null (and (null (eofp defstream))
+                                        (setq x
+                                         (readline defstream))
+                                        (setq j
+                                         (|charPosition| |$tick| x 1))
+                                        (setq nextPointer
+                                         (SUBSTRING x 0 j))
+                                        (equal nextPointer
+                                         pointer)))
+                                 nil)
+                              (SEQ (EXIT
+                                    (setq xtralines
+                                     (cons
+                                      (SUBSTRING x (1+ j) nil)
+                                      xtralines)))))
+                            (setq acc
+                                     (cons
+                                      (CONCAT keyAndTick def
+                                       (prog (G168110)
+                                         (setq G168110 "")
+                                         (return
+                                           (DO
+                                            ((G168115
+                                              (NREVERSE xtralines)
+                                              (CDR G168115))
+                                             (G168081 nil))
+                                            ((OR (ATOM G168115)
+                                              (progn
+                                                (setq G168081
+                                                 (car G168115))
+                                                nil))
+                                             G168110)
+                                             (SEQ
+                                              (EXIT
+                                               (setq G168110
+                                                (CONCAT G168110
+                                                 G168081))))))))
+                                      acc))))))
+             (reverse acc))))))
+
+(defun |genDomainTraceName| (y)
+ (let (u g)
+ (declare (special |$domainTraceNameAssoc|))
+   (if (setq u (lassoc y |$domainTraceNameAssoc|)) 
+    u
+    (progn
+     (setq g (genvar))
+     (setq |$domainTraceNameAssoc| (cons (cons y g) |$domainTraceNameAssoc|))
+     g))))
+
+(defun |gensymInt| (g) 
+ (let (p n)
+  (if (null (gensymp g)) 
+   (|error| "Need a GENSYM")
+   (progn
+     (setq p (pname g))
+     (setq n 0)
+     (do ((tmp0 (- (|#| p) 1)) (i 2 (1+ i)))
+         ((> i tmp0) nil)
+       (setq n (+ (* 10 n) (|charDigitVal| (elt p i)))))
+     n))))
+
+(defun |getAliasIfTracedMapParameter| (x |currentFunction|)
+ (prog (|aliasList|)
+ (declare (special |$InteractiveFrame|))
+  (return
+   (seq
+    (cond
+     ((|isSharpVarWithNum| x)
+       (cond
+        ((setq |aliasList|
+           (|get| |currentFunction| 'alias |$InteractiveFrame|))
+         (exit
+          (elt |aliasList|
+           (-
+            (string2pint-n (substring (pname x) 1 nil) 1) 1))))))
+     (t x)))))) 
+
+(defun |getAndEvalConstructorArgument| (tree)
+ (let (triple)
+  (setq triple (|getValue| tree))
+  (cond
+   ((eq (|objMode| triple) '(|Domain|)) triple)
+   ((|isWrapped| (|objVal| triple)) triple)
+   ((|isLocalVar| (|objVal| triple))
+     (|compFailure| "   Local variable or parameter used in type"))
+   (t
+    (mkObjWrap (|timedEVALFUN| (|objVal| triple)) (|objMode| triple))))))
+
+(defun |getAndSay| (v prop)
+ (let (val)
+  (if (setq val (|getI| v prop))
+   (|sayMSG| (cons '|    | (cons val (cons '|%l| nil))))
+   (|sayMSG| (cons '|    none| (cons '|%l| nil))))))
+
+(defun |getBpiNameIfTracedMap| (name)
+ (prog (lmm bpiName)
+ (declare (special |$InteractiveFrame| |$traceNames|))
+  (return
+   (seq
+    (cond 
+     ((setq lmm (|get| name '|localModemap| |$InteractiveFrame|))
+       (cond
+        ((member (setq bpiName (cadar lmm)) |$traceNames|)
+           (exit bpiName))))
+     (t name)))))) 
+
+(defun |getBrowseDatabase| (kind)
+ (let (|$includeUnexposed?|)
+ (declare (special |$includeUnexposed?|))
+  (setq |$includeUnexposed?| t)
+  (when (|member| kind '("o" "k" "c" "d" "p"))
+   (|grepConstruct| "*" (intern kind)))))
+
+(defun |getConstantFromDomain| (form domainForm)
+ (let (key entryList)
+  (unless (|isPartialMode| domainForm)
+   (setq key (|opOf| form))
+   (setq entryList 
+    (lassoc key (|getOperationAlistFromLisplib| (car domainForm))))
+   (cond
+    ((null (eq (cdr entryList) nil))
+     (cond
+      ((eq key '|One|)  (|getConstantFromDomain| (list '|1|) domainForm))
+      ((eq key '|Zero|) (|getConstantFromDomain| (list '|0|) domainForm))
+      (t
+        (|throwKeyedMsg| "No such constant %1 in domain %2p ."
+         (list form domainForm)))))
+    (t
+     ; there should be exactly one item under this key of that form
+     (spadcall 
+      (|compiledLookupCheck| key (caar entryList)
+        (|evalDomain| domainForm))))))))
+
+(defun |getConstructorDocumentation| (conname)
+ (let (IT1)
+  (setq IT1 (lassoc '|constructor| (getdatabase conname 'documentation)))
+  (or 
+   (and (consp IT1) (consp (qcar IT1)) (null (qcaar IT1)) (consp (qcdar IT1)) 
+        (qcadar IT1))
+   "")))
+
+(defun getdatabase (constructor key)
+ (declare (special $spadroot) (special *miss*))
+ (when (eq *miss* t) (format t "getdatabase call: ~20a ~a~%" constructor key))
+ (let (data table stream ignore struct)
+  (declare (ignore ignore) 
+           (special *hascategory-hash* *operation-hash* 
+                    *browse-stream* *defaultdomain-list* *interp-stream*
+                    *category-stream* *hasCategory-hash* *operation-stream*))
+  (when (or (symbolp constructor)
+          (and (eq key 'hascategory) (consp constructor)))
+  (case key
+; note that abbreviation, constructorkind and cosig are heavy hitters
+; thus they occur first in the list of things to check
+   (abbreviation
+    (setq stream *interp-stream*)
+    (when (setq struct (get constructor 'database))
+      (setq data (database-abbreviation struct))))
+   (constructorkind
+    (setq stream *interp-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-constructorkind struct))))
+   (cosig
+    (setq stream *interp-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-cosig struct))))
+   (operation
+    (setq stream *operation-stream*)
+    (setq data (gethash constructor *operation-hash*)))
+   (constructormodemap
+    (setq stream *interp-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-constructormodemap struct))))
+   (constructorcategory
+    (setq stream *interp-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-constructorcategory struct))
+     (when (null data) ;domain or package then subfield of constructormodemap
+      (setq data (cadar (getdatabase constructor 'constructormodemap))))))
+   (operationalist
+    (setq stream *interp-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-operationalist struct))))
+   (modemaps
+    (setq stream *interp-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-modemaps struct))))
+   (hascategory
+    (setq table  *hasCategory-hash*)
+    (setq stream *category-stream*)
+    (setq data (gethash constructor table)))
+   (object
+    (setq stream *interp-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-object struct))))
+   (niladic
+    (setq stream *interp-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-niladic struct))))
+   (constructor?
+    (when (setq struct (get constructor 'database))
+      (setq data (when (database-operationalist struct) t))))
+   (superdomain ; only 2 superdomains in the world
+    (case constructor
+     (|NonNegativeInteger|
+      (setq data '((|Integer|) (IF (< |#1| 0) |false| |true|))))
+     (|PositiveInteger|
+      (setq data '((|NonNegativeInteger|) (< 0 |#1|))))))
+   (constructor
+    (when (setq data (get constructor 'abbreviationfor))))
+   (defaultdomain
+    (setq data (cadr (assoc constructor *defaultdomain-list*))))
+   (ancestors
+    (setq stream *interp-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-ancestors struct))))
+   (sourcefile
+    (setq stream *browse-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-sourcefile struct))))
+   (constructorform
+    (setq stream *browse-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-constructorform struct))))
+   (constructorargs
+    (setq data (cdr (getdatabase constructor 'constructorform))))
+   (attributes
+    (setq stream *browse-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-attributes struct))))
+   (predicates
+    (setq stream *browse-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-predicates struct))))
+   (documentation
+    (setq stream *browse-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-documentation struct))))
+   (parents
+    (setq stream *browse-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-parents struct))))
+   (users
+    (setq stream *browse-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-users struct))))
+   (dependents
+    (setq stream *browse-stream*)
+    (when (setq struct (get constructor 'database))
+     (setq data (database-dependents struct))))
+   (otherwise  (warn "~%(GETDATABASE ~a ~a) failed~%" constructor key)))
+  (when (numberp data)      ;fetch the real data
+   (when *miss* (format t "getdatabase miss: ~20a ~a~%" constructor key))
+   (file-position stream data)
+   (setq data (read stream))
+   (case key ; cache the result of the database read
+    (operation           (setf (gethash constructor *operation-hash*) data))
+    (hascategory         (setf (gethash constructor *hascategory-hash*) data))
+    (constructorkind     (setf (database-constructorkind struct) data))
+    (cosig               (setf (database-cosig struct) data))
+    (constructormodemap  (setf (database-constructormodemap struct) data))
+    (constructorcategory (setf (database-constructorcategory struct) data))
+    (operationalist      (setf (database-operationalist struct) data))
+    (modemaps            (setf (database-modemaps struct) data))
+    (object              (setf (database-object struct) data))
+    (niladic             (setf (database-niladic struct) data))
+    (abbreviation        (setf (database-abbreviation struct) data))
+    (constructor         (setf (database-constructor struct) data))
+    (ancestors           (setf (database-ancestors struct) data))
+    (constructorform     (setf (database-constructorform struct) data))
+    (attributes          (setf (database-attributes struct) data))
+    (predicates          (setf (database-predicates struct) data))
+    (documentation       (setf (database-documentation struct) data))
+    (parents             (setf (database-parents struct) data))
+    (users               (setf (database-users struct) data))
+    (dependents          (setf (database-dependents struct) data))
+    (sourcefile          (setf (database-sourcefile struct) data))))
+   (case key ; fixup the special cases
+    (sourcefile
+     (when (and data (string= (directory-namestring data) "")
+             (string= (pathname-type data) "spad"))
+      (setq data
+       (concatenate 'string $spadroot "/../../src/algebra/" data))))
+    (object                                ; fix up system object pathname
+     (if (consp data)
+       (setq data
+             (if (string= (directory-namestring (car data)) "")
+                 (concatenate 'string $spadroot "/algebra/" (car data) ".o")
+               (car data)))
+      (when (and data (string= (directory-namestring data) ""))
+       (setq data (concatenate 'string $spadroot "/algebra/" data ".o")))))))
+  data))
+
+(defun |getDependentsOfConstructor| (con)
+ (let (stream val)
+  (setq stream 
+   (|readLibPathFast| (|pathname| (list  '|dependents| 'database '|a|))))
+  (setq val (|rread| con stream nil))
+  (rshut stream)
+  val))
+
+(defun getDirectoryList (ft &aux (cd (namestring $current-directory)))
+ (declare (special $current-directory |$UserLevel| $library-directory-list
+                   $directory-list))
+ (if (member ft '("nrlib" "daase" "exposed") :test #'string=)
+   (if (eq |$UserLevel| '|development|)
+    (cons cd $library-directory-list)
+    $library-directory-list)
+   (adjoin cd 
+    (adjoin (namestring (user-homedir-pathname)) $directory-list 
+      :test #'string=) 
+    :test #'string=)))
+
+
+(defun |getFirstWord| (string)
+ (let (spaceIndex)
+  (setq spaceIndex (search " " string))
+  (if spaceIndex
+   (|stripSpaces| (subseq string 0 spaceIndex))
+   string)))
+
+(defun |getHtMacroItem| (line)
+ (let (k command m i j wall digitString)
+  (when (|stringPrefix?| "\\newcommand{" line)
+    (setq k (position #\} line :start 11))
+    (setq wall (position #\{ line :start k)) ; wall off the body of command
+    (setq command (substring line 12 (- k 12)))
+    (setq m (length line))
+    (setq i (position #\[ line :start k))
+    (if (and i (< i m) wall (< i wall))
+     (progn                 ; brackets. parse number of args
+      (setq j (position #\] line :start (+ i 1)))
+      (setq digitString (substring line (+ i 1) (- (- j i) 1)))
+      (when (every #'digitp digitString)
+       (values command (parse-integer digitString))))
+     (values command 0)))))  ; no brackets
+
+(defun |getMapSig| (mapname subname)
+ (let (lmms sig)
+ (declare (special |$InteractiveFrame|))
+  (when (setq lmms (|get| mapname '|localModemap| |$InteractiveFrame|))
+    (do ((t0 lmms (cdr t0)) (mm nil) (t1 nil sig))
+        ((or (atom t0) (progn (setq mm (car t0)) nil) t1) nil)
+      (when (equal (cadr mm) subname) (setq sig (cdar mm))))
+    sig)))
+
+(defun getMapSubNames (arg)
+ (let (lmm subs)
+ (declare (special |$traceNames| |$lastUntraced| |$InteractiveFrame|))
+  (setq subs nil)
+  (dolist (mapname arg)
+   (when (setq lmm (|get| mapname '|localModemap| |$InteractiveFrame|))
+     (setq subs
+      (append
+        (do ((t2 lmm (cdr t2)) (t1 nil) (|mm| nil))
+            ((or (atom t2)
+                 (progn (setq |mm| (CAR t2)) nil)) (nreverse0 t1))
+           (setq t1 (cons (cons mapname (cadr |mm|)) t1)))
+       subs))))
+  (|union| subs
+    (|getPreviousMapSubNames| 
+      (union |$traceNames| |$lastUntraced| :test #'eq)))))
+
+(defun |getMsgCatAttr| (msg cat)
+ (ifcdr (qassq cat (|ncAlist| msg))))
+
+(defun |getMsgFTTag?| (msg)
+ (ifcar (member (ifcar (|getMsgPosTagOb| msg)) (list 'from 'to 'fromto))))
+
+(defun |getMsgInfoFromKey| (msg)
+ (let (|$msgDatabaseName| attributes tmp msgText msgKey)
+ (declare (special |$msgDatabaseName|))
+  (setq |$msgDatabaseName| nil)
+  (setq msgText
+   (cond
+    ((setq msgKey (|getMsgKey?| msg))
+     msgKey)
+    (t (|getMsgKey| msg))))
+  (setq msgText (|segmentKeyedMsg| msgText))
+  (setq tmp (|removeAttributes| msgText))
+  (setq msgText (car tmp))
+  (setq attributes (cadr tmp))
+  (setq msgText (|substituteSegmentedMsg| msgText (|getMsgArgL| msg)))
+  (list msgText attributes)))
+
+(defun |getMsgPos| (msg)
+ (if (|getMsgFTTag?| msg)
+  (cadr (|getMsgPosTagOb| msg))
+  (|getMsgPosTagOb| msg)))
+
+(defun |getMsgPos2| (msg)
+ (if (|getMsgFTTag?| msg)
+  (caddr (|getMsgPosTagOb| msg))
+  (|ncBug| "not a from to" nil)))
+
+(defun |getMsgToWhere| (msg) (|getMsgCatAttr| msg '|$toWhereGuys|))
+
+(defun |getOperationAlistFromLisplib| (x)
+ (let (opalist consdb)
+  (setq opalist (getdatabase x 'operationalist))
+  (cond
+   ((null opalist) opalist)
+   ((eq (caar opalist) '|$unique|) (cdr opalist))
+   (t
+    (setq consdb '(nil t elt))
+    ((lambda (arg1 arg2)
+     (loop
+      (cond
+       ((or (atom arg1) (progn (setq arg2 (car arg1)) nil))
+         (return nil))
+       (t
+        (and (consp arg2)
+             ((lambda (items)
+              (loop
+               (cond
+                ((atom items) (return nil))
+                (t
+                 (cond
+                  ((consp (cdar items))
+                   (cond
+                    ((consp (cddar items))
+                      (cond
+                       ((and (consp (cdddar items))
+                             (eq (cdr (cdddar items)) nil)) nil)
+                       (t (rplacd (cddar items) (cddr consdb)))))
+                    (t (rplacd (cdar items) (cdr consdb)))))
+                  (t (rplacd (car items) consdb)))
+                 (rplaca items (car items))))
+               (setq items (cdr items))))
+              (cdr arg2)))))
+      (setq arg1 (cdr arg1))))
+     opalist nil)
+    (and opalist (markUnique opalist))))))
+
+(defun |getOplistForConstructorForm| (form)
+ (let (argl pairlis opAlist op signatureAlist result)
+ (declare (special |$FormalMapVariableList|))
+  (setq op (car form))
+  (setq argl (cdr form))
+  (setq pairlis
+   (loop for fv in |$FormalMapVariableList|
+         for arg in argl
+    collect (cons fv arg)))
+  (setq opAlist (|getOperationAlistFromLisplib| op))
+  (loop for item in opAlist do
+    (setq op (car item))
+    (setq signatureAlist (cdr item))
+    (setq result 
+     (append result 
+      (|getOplistWithUniqueSignatures| op pairlis signatureAlist))))
+  result))
+
+(defun |getOplistWithUniqueSignatures| (op pairlis signatureAlist)
+ (let (sig slotNumber pred kind alist)
+  (loop for item in signatureAlist 
+   when (not (eq (fourth item) '|Subsumed|))
+   do
+     (setq sig (first item))
+     (setq slotNumber (second item))
+     (setq pred (third item))
+     (setq kind (fourth item))
+     (setq alist
+      (|insertAlist| 
+       (sublis pairlis (list op sig))
+       (sublis pairlis (list pred (list kind  nil slotNumber)))
+       alist)))
+  alist))
+
+(defun getOption (opt l)
+ (let (y)
+  (when (setq y (|assoc| opt l))  (cdr y))))
+
+(defun |getPosStL| (msg)
+ (let (printedOrigin printedLineNum printedFileName fullPrintedPos howMuch 
+       msgPos)
+ (declare (special |$lastPos|))
+ (cond
+  ((null (|showMsgPos?| msg)) "")
+  (t
+   (setq msgPos (|getMsgPos| msg))
+   (setq howMuch
+    (if (|msgImPr?| msg) 
+     (|decideHowMuch| msgPos |$lastPos|)
+     (|listDecideHowMuch| msgPos |$lastPos|)))
+   (setq |$lastPos| msgPos)
+   (setq fullPrintedPos (|ppos| msgPos))
+   (setq printedFileName
+    (cons "%x2" (cons "[" (append (|remLine| fullPrintedPos) (cons "]" nil)))))
+   (setq printedLineNum
+    (cons "%x2" (cons "[" (append (|remFile| fullPrintedPos) (cons "]" nil)))))
+   (setq printedOrigin
+    (cons "%x2" (cons "[" (append fullPrintedPos (cons "]" nil)))))
+   (cond
+    ((eq howMuch 'org)
+     (cons "" (append printedOrigin (cons '|%l| nil))))
+    ((eq howMuch 'line)
+     (cons "" (append printedLineNum (cons '|%l| nil))))
+    ((eq howMuch 'file)
+     (cons "" (append printedFileName (cons '|%l| nil))))
+    ((eq howMuch 'all)
+     (cons ""
+      (append printedFileName
+       (cons '|%l|
+        (cons ""
+         (append printedLineNum
+          (cons '|%l| nil)))))))
+    (t ""))))))
+
+(defun |getPreviousMapSubNames| (Names)
+ (let (lmm subs)
+ (declare (special |$InteractiveFrame|))
+  (loop for mapName in (assocleft (caar |$InteractiveFrame|)) do
+   (when (setq lmm (|get| mapname '|localModemap| |$InteractiveFrame|))
+    (when (member (cadar lmm) Names)
+     (loop for mm in lmm do
+      (setq subs (cons (cons mapname (cadr mm)) subs))))))
+  subs))
+
+(defun |getProplist| (x e)
+ (let (u pl)
+ (declare (special |$CategoryFrame|))
+  (cond
+   ((null (atom x)) (|getProplist| (car x) e))
+   ((setq u (|search| x e)) u)
+   ((setq pl (|search| x |$CategoryFrame|)) pl))))
+
+(defun getRefvU8 (n x)
+  (make-array n :initial-element x :element-type '(unsigned-byte 8)))
+
+(defun getRefvU16 (n x)
+  (make-array n :initial-element x :element-type '(unsigned-byte 16)))
+
+(defun getRefvU32 (n x)
+  (make-array n :initial-element x :element-type '(unsigned-byte 32)))
+
+(defun |getStFromMsg| (msg)
+ (let (st posStL preStL)
+  (setq preStL (|getPreStL| (|getMsgPrefix?| msg)))
+  (cond
+   ((eq (|getMsgTag| msg) '|line|)
+     (cons ""
+       (cons "%x1" (append preStL (cons (|getMsgText| msg) nil)))))
+   (t
+    (setq posStL (|getPosStL| msg))
+    (setq st
+     (cons posStL
+       (cons " "
+        (append preStL
+         (cons (|tabbing| msg)
+          (|getMsgText| msg))))))))))
+
+(defun |getSubDomainPredicate| (tSuper tSub pred)
+ (let (|$env| name decl arg predp defn op predfn)
+  (declare (special |$env| |$superHash| |$Boolean| |$InteractiveFrame|))
+  (setq |$env| |$InteractiveFrame|)
+  (cond
+   ((setq predfn (hget |$superHash| (cons tSuper tSub))) predfn)
+   (t
+    (setq name (gensym))
+    (setq decl (list '|:| name (list '|Mapping| |$Boolean| tSuper)))
+    (|interpret| decl nil)
+    (setq arg (gensym))
+    (setq predp (msubst arg '|#1| pred))
+    (setq defn
+     (list 'def (list name arg) '(nil nil) '(nil nil) (|removeZeroOne| predp)))
+    (|interpret| defn nil)
+    (setq op (|mkAtree| name))
+    (|transferPropsToNode| name op)
+    (setq predfn (cadar (|selectLocalMms| op name (list tSuper) |$Boolean|)))
+    (hput |$superHash| (cons tSuper tSub) predfn)
+    predfn))))
+
+(defun |getSystemCommandLine| ()
+ (let (p line)
+ (declare (special |$currentLine|))
+  (setq p (strpos ")" |$currentLine| 0 nil))
+  (if p
+   (setq line (substring |$currentLine| p nil))
+   (setq line |$currentLine|))
+ (string-left-trim '(#\space) line)))
+
+(defun |getTraceOption| (arg)
+ (prog (l opts key a n)
+ (declare (special |$traceOptionList|))
+  (return
+   (seq
+    (progn
+     (setq key (car arg))
+     (setq l (cdr arg))
+     (setq key (|selectOptionLC| key |$traceOptionList| '|traceOptionError|))
+     (setq arg (cons key l))
+     (cond
+      ((member key '(|nonquietly| |timer| |nt|)) arg)
+      ((eq key '|break|)
+       (cond
+        ((null l) (cons '|break| (cons '|before| nil)))
+        (t
+          (setq opts
+           (loop for y in l collect 
+            (|selectOptionLC| y '(|before| |after|) nil)))
+          (cond
+           ((prog (t2)
+             (setq t2 t)
+             (return 
+              (do ((t3 nil (null t2)) (t4 opts (cdr t4)) (y nil))
+                  ((or t3 (atom t4) (progn (setq y (car t4)) nil)) t2)
+                 (seq
+                  (exit
+                   (setq t2 (and t2 (identp y))))))))
+              (cons '|break| opts))
+           (t
+            (|stackTraceOptionError| 
+             (cons
+              (format nil
+               "%1 The )trace option )break can only have one or both of ~
+               before and after as arguments.")
+              (cons nil nil))))))))
+      ((eq key '|restore|)
+       (cond
+        ((null l) arg)
+        (t 
+         (|stackTraceOptionError| 
+          (cons "%1 The )trace option %2 can have no arguments."
+           (cons (cons (concat ")" (|object2String| key)) nil) nil))))))
+      ((eq key '|only|) (cons '|only| (|transOnlyOption| l)))
+      ((eq key '|within|)
+        (cond
+         ((and (consp l) 
+               (eq (qcdr l) nil)
+               (progn (setq a (qcar l)) t)
+               (identp a))
+           arg)
+         (t 
+           (|stackTraceOptionError| 
+            (cons 
+             "%1 The )trace option %2 takes exactly one name as an argument."
+             (cons (cons ")within" nil) nil))))))
+      ((member key '(|cond| |before| |after|))
+        (setq key 
+         (cond 
+          ((eq key '|cond|) '|when|)
+          (t key)))
+        (cond
+         ((and (consp l) 
+               (eq (qcdr l) nil)
+               (progn (setq a (qcar l)) t))
+            (cons key l))
+         (t 
+          (|stackTraceOptionError|
+           (cons 
+         "%1 The )trace option %2 takes exactly one expression as an argument."
+            (cons
+             (cons (concat ")"
+              (|object2String| key)) nil) nil))))))
+      ((eq key '|depth|)
+        (cond 
+         ((and (consp l) 
+               (eq (qcdr l) nil)
+               (progn (setq n (qcar l)) t)
+               (integerp n))
+           arg)
+         (t 
+          (|stackTraceOptionError| 
+           (cons 
+            "%1 The )trace option %2 takes exactly one integer argument."
+            (cons (cons ")depth" nil) nil))))))
+      ((eq key '|count|)
+        (cond 
+         ((or (null l) 
+              (and (consp l) 
+                   (eq (qcdr l) nil)
+                   (progn (setq n (qcar l)) t)
+                   (integerp n)))
+            arg)
+         (t 
+          (|stackTraceOptionError|
+            (cons 
+             "%1 The )trace option %2 takes exactly one integer argument."
+             (cons (cons ")count" nil) nil))))))
+      ((eq key '|of|)
+        (cons '|of| (loop for y in l collect (|getTraceOption,hn| y))))
+      ((member key '(|local| ops vars))
+        (cond
+         ((or (null l)
+              (and (consp l) (eq (qcdr l) nil) (eq (qcar l) '|all|)))
+           (cons key '|all|))
+         ((|isListOfIdentifiersOrStrings| l) arg)
+         (t
+           (|stackTraceOptionError|
+            (cons
+             "%1 The )trace option %2 should be followed by a list of names."
+             (cons
+              (cons (concat ")" (|object2String| key)) nil) nil))))))
+      ((eq key '|varbreak|)
+        (cond
+         ((or (null l) 
+              (and (consp l) (eq (qcdr l) nil) (eq (qcar l) '|all|)))
+           (cons '|varbreak| '|all|))
+         ((|isListOfIdentifiers| l) arg)
+         (t
+           (|stackTraceOptionError|
+            (cons 
+      "%1 The )trace option %2 should be followed by a list of variable names."
+             (cons
+              (cons (concat ")" (|object2String| key)) nil) nil))))))
+      ((eq key '|mathprint|)
+        (cond
+         ((null l) arg)
+         (t
+           (|stackTraceOptionError|
+            (cons "%1 The )trace option %2 can have no arguments."
+             (cons
+              (cons (concat ")" (|object2String| key)) nil) nil))))))
+      (key (|throwKeyedMsg| "The %1 option is not implemented yet."
+            (cons key nil))))))))) 
+
+(defun |getTraceOption,hn| (x)
+ (let (g)
+  (cond
+   ((and (atom x) (null (upper-case-p (elt (stringimage x) 0))))
+     (cond
+      ((|isDomainOrPackage| (eval x)) x)
+      (t
+       (|stackTraceOptionError|
+        (cons
+         (format nil
+           "%1 The )trace option )of should be followed by the name of a ~
+           domain and %2 is not one.")
+          (list (list x)))))))
+   ((setq g (|domainToGenvar| x)) g)
+   (t (|stackTraceOptionError|
+       (cons
+        (format nil
+         "%1 The )trace option )of should be followed by the name of a ~
+          domain and %2 is not one.")
+         (list (list x))))))))
+
+(defun getTraceOptions (options)
+ (prog (|$traceErrorStack| optionlist temp1 key |parms|)
+  (declare (special |$traceErrorStack|))
+  (return
+   (seq
+    (progn
+     (setq |$traceErrorStack| nil)
+     (setq optionlist
+      (prog (t0) 
+       (setq t0 nil)
+       (return
+        (do ((t1 options (cdr t1)) (x nil))
+            ((or (atom t1) (progn (setq x (car t1)) nil)) (nreverse0 t0))
+         (seq
+          (exit
+           (setq t0 (cons (|getTraceOption| x) t0))))))))
+     (cond
+      (|$traceErrorStack|
+       (cond
+        ((null (cdr |$traceErrorStack|))
+          (setq temp1 (car |$traceErrorStack|))
+          (setq key (car temp1))
+          (setq |parms| (cadr temp1))
+          (|throwKeyedMsg| key (cons "" |parms|)))
+        (t
+          (|throwListOfKeyedMsgs| 
+           "There are %1 problems with your )trace system command:"
+           (cons (|#| |$traceErrorStack|) nil)
+           (nreverse |$traceErrorStack|)))))
+      (t optionlist))))))) 
+
+(defun |getUsersOfConstructor| (con)
+ (let (stream val)
+  (setq stream (|readLibPathFast| (|pathname| (list '|users| 'database '|a|))))
+  (setq val (|rread| con stream nil))
+  (rshut stream)
+  val))
+
+(defun |getWorkspaceNames| ()
+ (declare (special |$InteractiveFrame|))
+ (nmsort (loop for g2 in (caar |$InteractiveFrame|) collect (car g2))))
+
+
+(defun |handleNoParseCommands| (unab string)
+ (let (spaceindex funname)
+  (setq string (|stripSpaces| string))
+  (setq spaceindex (search " " string))
+  (cond
+   ((eq unab '|lisp|)
+    (if spaceindex
+     (|nplisp| (|stripLisp| string))
+     (|sayKeyedMsg| "Your argument list is not valid." nil)))
+   ((eq unab '|boot|)
+    (if spaceindex
+     (|npboot| (subseq string (1+ spaceindex)))
+     (|sayKeyedMsg| "Your argument list is not valid." nil)))
+   ((eq unab '|system|)
+    (if spaceindex
+      (|npsystem| unab string)
+      (|sayKeyedMsg| "Your argument list is not valid." nil)))
+   ((eq unab '|synonym|)
+    (if spaceindex
+     (|npsynonym| unab (subseq string (1+ spaceindex)))
+     (|npsynonym| unab "")))
+   ((null spaceindex)
+    (funcall unab))
+   ((|member| unab '(|quit| |fin| |pquit| |credits| |copyright| |trademark|))
+    (|sayKeyedMsg| "Your argument list is not valid." nil))
+   (t
+    (setq funname (intern (concat "np" (string unab))))
+    (funcall funname (subseq string (1+ spaceindex)))))))
+
+(defun |handleParsedSystemCommands| (unabr optionList)
+ (declare (ignore unabr))
+ (let (restOptionList parcmd trail)
+  (setq restOptionList (mapcar #'|dumbTokenize| (cdr optionList)))
+  (setq parcmd (|parseSystemCmd| (car optionList)))
+  (setq trail
+   (mapcar #'(lambda (opt)  
+              (mapcar #'(lambda (tok) (|tokTran| tok)) opt)) restOptionList))
+  (|systemCommand| (cons parcmd trail))))
+
+(defun |handleTokensizeSystemCommands| (unabr optionList)
+ (declare (ignore unabr))
+ (let (parcmd)
+  (setq optionList (mapcar #'(lambda (x) (|dumbTokenize| x)) optionList))
+  (setq parcmd 
+    (mapcar #'(lambda (opt) (mapcar #'(lambda (tok) (|tokTran| tok)) opt))
+     optionLIst))
+  (when parcmd (|systemCommand| parcmd))))
+
+(defun |hasAtt| (dom att sl)
+ (let (|$domPvar| fun atts u x cond s)
+ (declare (special |$domPvar|))
+  (cond
+   ((setq fun (car dom))
+    (cond
+     ((setq atts 
+        (|subCopy| (getdatabase fun 'attributes) (|constructSubst| dom)))
+       (cond
+        ((consp (setq u (|getInfovec| (car dom))))
+          (do ((next atts (cdr next))
+               (endtest nil (null (eq s '|failed|))))
+              ((or (atom next) endtest) nil)
+            (setq x (caar next))
+            (setq cond (cdar next))
+            (setq s (|unifyStruct| x att (copy sl)))
+            (cond
+             ((and (null (atom cond)) (null (eq s '|failed|)))
+               (setq s (|hasCatExpression| cond s)))))
+          s)
+        (t
+         (do ((next atts (cdr next))
+              (endtest nil (null (eq s '|failed|))))
+             ((or (atom next) endtest) nil)
+           (setq x (caar next))
+           (setq cond (cadar next))
+           (setq s (|unifyStruct| x att (copy sl)))
+           (cond
+            ((and (null (atom cond)) (null (eq s '|failed|)))
+              (setq s (|hasCatExpression| cond s)))))
+         s)))
+     (t '|failed|)))
+   (t '|failed|))))
+
+(defun |hasAttSig| (d x sl)
+  (loop for y in x
+   until (eq sl '|failed|)
+   do
+    (setq sl
+     (cond
+      ((and (consp y) (eq (qcar y) 'attribute) 
+            (consp (qcdr y)) (eq (qcddr y) nil))
+        (|hasAtt| d (qcadr y) sl))
+      ((and (consp y) (eq (qcar y) 'signature)
+            (consp (qcdr y)) (consp (qcddr y)) (eq (qcdddr y) nil))
+        (|hasSig| d (qcadr y) (qcaddr y) sl))
+      (t
+       (|keyedSystemError| 
+        "Unexpected error or improper call to system function %1: %2"
+        (list  "hasAttSig" "unexpected form of unnamed category"))))))
+  sl)
+
+(defun |hasCatExpression| (cond sl)
+ (let (y)
+  (cond
+   ((and (consp cond) (eq (qcar cond) 'or))
+    (when 
+     (let (result)
+       (loop for x in (qcdr cond)
+        do (setq result 
+            (or result 
+                (not (eq (setq y (|hasCatExpression| x sl)) '|failed|)))))
+        result)
+     y))
+   ((and (consp cond) (eq (qcar cond) 'and))
+    (when
+     (let ((result t))
+       (loop for x in (qcdr cond)
+        do (setq result
+            (and result 
+                 (not (eq (setq sl (|hasCatExpression| x sl)) '|failed|)))))
+       result)
+     sl))
+   ((and (consp cond) (eq (qcar cond) '|has|)
+         (consp (qcdr cond)) (consp (qcddr cond)) (eq (qcdddr cond) nil))
+     (|hasCate| (qcadr cond) (qcaddr cond) sl))
+   (t
+    (|keyedSystemError| 
+     "Unexpected error or improper call to system function %1: %2"
+     (list  "hasSig" "unexpected condition for attribute"))))))
+
+(defun |hasCate| (dom cat sl)
+ (let (nsl p s sl1)
+ (declare (special |$hope| |$Subst| |$EmptyMode|))
+  (cond
+   ((equal dom |$EmptyMode|) nil)
+   ((|isPatternVar| dom)
+    (cond
+     ((and (setq p (assq dom sl))
+           (not (eq (setq nsl (|hasCate| (cdr p) cat sl)) '|failed|)))
+       nsl)
+     ((or (setq p (assq dom |$Subst|)) (setq p (assq dom sl)))
+       (setq s (|hasCate1| (cdr p) cat sl dom))
+       (cond
+         ((null (eq s '|failed|)) s)
+         (t (|hasCateSpecial| dom (cdr p) cat sl))))
+     (t
+      (when (not (eq sl '|failed|)) (setq |$hope| t))
+      '|failed|)))
+   (t
+    (setq sl1
+     (loop for item in sl
+      when (null (|containsVariables| (cdr item)))
+      collect item))
+    (when sl1 (setq cat (|subCopy| cat sl1)))
+    (|hasCaty| dom cat sl)))))
+
+(defun |hasCateSpecial| (v dom cat sl)
+ (let (arg d domp nsl)
+ (declare (special |$Integer| |$QuotientField|))
+  (cond
+   ((and (consp dom) (eq (qcar dom) '|FactoredForm|)
+         (consp (qcdr dom)) (eq (qcddr dom) nil))
+     (setq arg (qcadr dom))
+     (when (|isSubDomain| arg |$Integer|) (setq arg |$Integer|))
+     (setq d (list '|FactoredRing| arg))
+     (setq sl (|hasCate| arg '(|Ring|) (|augmentSub| v d sl)))
+     (if (eq sl '|failed|)
+      '|failed|
+      (|hasCaty| d cat sl)))
+   ((or (eqcar cat '|Field|) (eqcar cat '|DivisionRing|))
+     (when (|isSubDomain| dom |$Integer|) (setq dom |$Integer|))
+     (setq d (list |$QuotientField| dom))
+     (|hasCaty| dom '(|IntegralDomain|) (|augmentSub| v d sl)))
+   ((and (consp cat) (eq (qcar cat) '|PolynomialCategory|)
+         (consp (qcdr cat)))
+     (setq domp (cons '|Polynomial| (list (qcadr cat))))
+     (and (or (|containsVars| (qcadr cat)) (|canCoerceFrom| dom domp))
+              (|hasCaty| domp cat (|augmentSub| v domp sl))))
+   ((|isSubDomain| dom |$Integer|)
+     (setq nsl (|hasCate| |$Integer| cat (|augmentSub| v |$Integer| sl)))
+     (if (eq nsl '|failed|) 
+      (|hasCateSpecialNew| v dom cat sl)
+      (|hasCaty| |$Integer| cat nsl)))
+   (t
+     (|hasCateSpecialNew| v dom cat sl)))))
+
+(defun |hasCateSpecialNew| (v dom cat sl)
+ (let (fe alg fefull d partialResult)
+ (declare (special |$RationalNumber| |$ComplexInteger| |$Integer|))
+  (setq fe
+   (|member| (qcar cat)
+    '(|ElementaryFunctionCategory|
+      |TrigonometricFunctionCategory|
+      |ArcTrigonometricFunctionCategory|
+      |HyperbolicFunctionCategory|
+      |ArcHyperbolicFunctionCategory|
+      |PrimitiveFunctionCategory|
+      |SpecialFunctionCategory| 
+      |Evalable|
+      |CombinatorialOpsCategory|
+      |TranscendentalFunctionCategory|
+      |AlgebraicallyClosedFunctionSpace|
+      |ExpressionSpace|
+      |LiouvillianFunctionCategory|
+      |FunctionSpace|)))
+  (setq alg
+   (|member| (qcar cat)
+    '(|RadicalCategory| 
+      |AlgebraicallyClosedField|)))
+  (setq fefull
+   (or fe alg (eqcar cat '|CombinatorialFunctionCategory|)))
+  (setq partialResult
+   (cond
+    ((or (eqcar dom '|Variable|) (eqcar dom '|Symbol|))
+      (cond
+       ((|member| (car cat)
+         '(|SemiGroup| 
+           |AbelianSemiGroup| 
+           |Monoid|
+           |AbelianGroup| 
+           |AbelianMonoid|
+           |PartialDifferentialRing| 
+           |Ring|
+           |InputForm|))
+         (setq d (list '|Polynomial| |$Integer|))
+         (|augmentSub| v d sl))
+       ((eqcar cat '|Group|)
+         (setq d (list '|Fraction| (list '|Polynomial| |$Integer|)))
+         (|augmentSub| v d sl))
+       (fefull
+        (setq d (|defaultTargetFE| dom))
+        (|augmentSub| v d sl))
+       (t '|failed|)))
+    ((|isEqualOrSubDomain| dom |$Integer|)
+      (cond
+       (fe
+         (setq d (|defaultTargetFE| |$Integer|))
+         (|augmentSub| v d sl))
+       (alg 
+         (setq d '(|AlgebraicNumber|))
+         (|augmentSub| v d sl))
+       (t '|failed|)))
+    ((equal (|underDomainOf| dom) |$ComplexInteger|)
+      (setq d (|defaultTargetFE| |$ComplexInteger|))
+      (|hasCaty| d cat (|augmentSub| v d sl)))
+    ((and (equal dom |$RationalNumber|) alg)
+      (setq d '(|AlgebraicNumber|))
+      (|augmentSub| v d sl))
+    (fefull 
+      (setq d (|defaultTargetFE| dom))
+      (|augmentSub| v d sl))
+    (t '|failed|)))
+  (if (eq partialResult '|failed|)
+    '|failed|
+    (|hasCaty| d cat partialResult))))
+
+(defun |hasCate1| (dom cat sl domPvar)
+ (let (|$domPvar|)
+ (declare (special |$domPvar|))
+  (setq |$domPvar| domPvar)
+  (|hasCate| dom cat sl)))
+
+(defun |hasCaty| (d cat sl)
+ (let (x y S z cond sp dom zp s1 ncond i)
+ (declare (special |$domPvar|))
+  (cond
+   ((and (consp cat) (eq (qcar cat) 'category) (consp (qcdr cat)))
+     (|hasAttSig| d (|subCopy| (qcddr cat) (|constructSubst| d)) sl))
+   ((and (consp cat) (eq (qcar cat) 'signature) (consp (qcdr cat))
+         (consp (qcddr cat)) (eq (qcdddr cat) nil))
+     (|hasSig| d (qcadr cat) (|subCopy| (qcaddr cat) (|constructSubst| d)) sl))
+   ((and (consp cat) (eq (qcar cat) 'attribute)
+         (consp (qcdr cat)) (eq (qcddr cat) nil))
+     (|hasAtt| d (|subCopy| (qcadr cat) (|constructSubst| d)) sl))
+   ((setq x (|hasCat| (|opOf| d) (|opOf| cat)))
+    (cond
+     ((setq y (ifcdr cat))
+       (setq s (|constructSubst| d))
+       (do ((next x (cdr next)) (endtest nil (null (eq s1 '|failed|))))
+           ((or (atom next) endtest) nil)
+         (setq z (caar next))
+         (setq cond (cdar next))
+         (setq sp
+          (loop for item in s
+           collect (cons (car item) (|mkDomPvar| (car item) (cdr item) z y))))
+         (when |$domPvar|
+           (setq i -1)
+           (setq dom
+            (cons (car d)
+             (loop for arg in (rest d)
+              collect (|domArg| arg (incf i) z y))))
+           (setq sl (|augmentSub| |$domPvar| dom (copy sl))))
+         (setq zp
+          (loop for a in z
+           collect (|domArg2| a s sp)))
+         (setq s1 (|unifyStruct| y zp (copy sl)))
+         (cond
+          ((null (eq s1 '|failed|))
+            (setq s1
+             (cond
+              ((atom cond) s1)
+              (t
+               (setq ncond (|subCopy| cond s))
+               (cond
+                ((and (consp ncond) (eq (qcar ncond) '|has|)
+                      (consp (qcdr ncond)) (equal (qcadr ncond) d)
+                      (consp (qcddr ncond)) (eq (qcdddr ncond) nil)
+                      (equal (qcaddr ncond) cat))
+                  '|failed|)
+                (t (|hasCaty1| ncond s1)))))))
+          (t nil)))
+        s1)
+     ((atom x) sl)
+     (t
+      (setq ncond (|subCopy| x (|constructSubst| d)))
+      (cond
+       ((and (consp ncond) (eq (qcar ncond) '|has|) (consp (qcdr ncond))
+             (equal (qcadr ncond) d) (consp (qcddr ncond))
+             (eq (qcdddr ncond) nil) (equal (qcaddr ncond) cat))
+         '|failed|)
+       (t (|hasCaty1| ncond sl))))))
+   (t '|failed|))))
+
+(defun |hasCaty1| (cond sl)
+ (let (|$domPvar| a s)
+ (declare (special |$domPvar|))
+  (setq |$domPvar| nil)
+   (cond
+    ((and (consp cond) (eq (qcar cond) '|has|)
+          (consp (qcdr cond)) (consp (qcddr cond)) (eq (qcdddr cond) nil))
+      (|hasCate| (qcadr cond) (qcaddr cond) sl))
+    ((and (consp cond) (EQ (qcar cond) 'and))
+     (loop for x in (qcdr cond) 
+      while (not (eq s '|failed|))
+      do
+       (setq s
+        (cond
+         ((and (consp x) (eq (qcar x) '|has|)
+               (consp (qcdr x)) (consp (qcddr x)) (eq (qcdr (qcddr x)) nil))
+           (|hasCate| (qcadr x) (qcaddr x) sl))
+         ((and (consp x) (eq (qcdr x) nil)
+                (consp (qcar x)) (eq (qcaar x) '|has|)
+                (consp (qcdar x)) (consp (qcddar x))
+                (eq (qcdr (qcddar x)) nil))
+           (|hasCate| a (qcaddar x) sl))
+         (t (|hasCaty1| x sl)))))
+     s)
+    ((and (consp cond) (eq (qcar cond) 'or))
+      (do ((next (qcdr cond) (cdr next)) (x nil)
+           (nextitem nil (null (eq s '|failed|))))
+          ((or (atom next)
+              (progn (setq x (car next)) nil)
+               nextitem)
+               nil)
+       (setq s
+        (cond
+         ((and (consp x) (eq (qcar x) '|has|)
+               (consp (qcdr x)) (consp (qcddr x)) (eq (qcdddr x) nil))
+           (|hasCate| (qcadr x) (qcaddr x) (copy sl)))
+         ((and (consp x) (eq (qcdr x) nil) (consp (qcar x))
+               (eq (qcaar x) '|has|) (consp (qcdar x)) (consp (qcddar x))
+               (eq (qcdddar x) nil))
+           (|hasCate| (qcadar x) (qcaddar x) (copy sl)))
+         (t (|hasCaty1| x (copy sl))))))
+     s)
+    (t
+     (|keyedSystemError| 
+      "Unexpected error or improper call to system function %1: %2"
+      (list  "hasCaty1" "unexpected condition from category table"))))))
+
+(defun |hashable| (dom)
+ (labels (
+  (|knownEqualPred| (dom)
+    (let ((fun (|compiledLookup| '= '((|Boolean|) $ $) dom)))
+     (if fun 
+      (get (bpiname (car fun)) '|SPADreplace|)
+      nil))))
+  (member (|knownEqualPred| dom) '(eq eql equal))))
+
+(defun |hasOption| (al opt)
+ (let ((optPname (pname opt)) found)
+  (loop for pair in al do
+    (when (|stringPrefix?| (pname (car pair)) optPname) (setq found pair))
+    until found)
+  found))
+
+(defun |hasPair| (key arg)
+ (prog (tmp1 a)
+  (return 
+   (cond
+    ((atom arg) nil)
+    ((and (consp arg)
+          (progn
+           (setq tmp1 (qcar arg))
+           (and (consp tmp1)
+                (equal (qcar tmp1) key)
+                (progn (setq a (qcdr tmp1)) t))))
+       a)
+    (t (|hasPair| key (cdr arg))))))) 
+
+(defun |hasSharpVar| (x)
+ (cond
+  ((and (atom x) (|isSharpVar| x)) t) 
+  ((atom x) nil)
+  (t (or (|hasSharpVar| (car x)) (|hasSharpVar| (cdr x))))))
+
+(defun |hasSig| (dom foo sig sl)
+ (let (|$domPvar| fun s0 p x cond s)
+ (declare (special |$domPvar|))
+  (cond
+   ((setq fun (|constructor?| (car dom)))
+     (setq s0 (|constructSubst| dom))
+     (cond
+      ((setq p (assq foo (|getOperationAlistFromLisplib| (car dom))))
+        (do ((next (cdr p) (cdr next))
+             (endtest nil (null (eq s '|failed|))))
+            ((or (atom next) endtest) nil)
+          (setq x (caar next))
+          (setq cond (caddar next))
+          (setq s
+           (cond
+            ((atom cond) (copy sl))
+            ((and (consp cond) (eq (qcar cond) '|has|)
+                  (consp (qcdr cond)) (consp (qcddr cond)) 
+                  (eq (qcdr (qcddr cond)) nil))
+              (|hasCate| (|subCopy| (qcadr cond) s0)
+                         (|subCopy| (qcaddr cond) s0)
+                         (copy sl)))
+            ((and (consp cond) 
+                  (or (eq (qcar cond) 'and) (eq (qcar cond) '|and|)))
+              (|hasSigAnd| (qcdr cond) s0 sl))
+            ((and (consp cond) 
+                  (or (eq (qcar cond) 'or) (eq (qcar cond) '|or|)))
+              (|hasSigOr| (qcdr cond) s0 sl))
+            (t
+             (|keyedSystemError| 
+              "Unexpected error or improper call to system function %1: %2"
+              (list "hasSig" "unexpected condition for signature")))))
+          (unless (eq s '|failed|)
+            (setq s (|unifyStruct| (|subCopy| x s0) sig s))))
+        s)
+      (t '|failed|)))
+   (t '|failed|))))
+
+(defun |hasSigAnd| (andCls s0 sl)
+ (let (sa dead)
+  (setq sa '|failed|)
+  (loop for cls in andCls
+   do
+    (when dead (return))
+    (setq sa
+     (cond
+      ((atom cls) (copy sl))
+      ((and (consp cls) (eq (qcar cls) '|has|) (consp (qcdr cls))
+            (consp (qcddr cls)) (eq (qcdddr cls) nil))
+        (|hasCate| (|subCopy| (qcadr cls) s0) 
+                   (|subCopy| (qcaddr cls) s0) 
+                   (copy sl)))
+      (t
+        (|keyedSystemError| 
+         "Unexpected error or improper call to system function %1: %2"
+         (list  "hasSigAnd" "unexpected condition for signature")))))
+    (when (eq sa '|failed|) (setq dead t)))
+  sa))
+
+(defun |hasSigOr| (orCls s0 sl)
+ (let (sa found)
+  (setq sa '|failed|)
+  (loop for cls in orCls 
+   until found
+   do
+    (setq sa
+     (cond
+      ((atom cls) (copy sl))
+      ((and (consp cls) (eq (qcar cls) '|has|) (consp (qcdr cls))
+            (consp (qcddr cls)) (eq (qcdddr cls) nil))
+        (|hasCate| (|subCopy| (qcadr cls) s0) 
+                   (|subCopy| (qcaddr cls) s0) 
+                   (copy sl)))
+      ((and (consp cls) 
+            (or (eq (qcar cls) 'and) (eq (qcar cls) '|and|)))
+        (|hasSigAnd| (qcdr cls) s0 sl))
+      (t
+       (|keyedSystemError| 
+        "Unexpected error or improper call to system function %1: %2"
+        (list  "hasSigOr" "unexpected condition for signature")))))
+    (unless (eq sa '|failed|) (setq found t)))
+  sa))
+
+(defun |help| (l)
+ "The top level help command"
+ (|helpSpad2Cmd| l)) 
+
+(defun |helpSpad2Cmd| (args)
+ "The top level help command handler"
+ (unless (|newHelpSpad2Cmd| args)
+  (|sayKeyedMsg| 
+   (format nil
+    "If the system command or synonym %1 exists, help information is not ~
+     available for it. Issue )what commands or )what synonyms to ~
+     determine is %1 is a valid name.")
+   (cons args nil))))
+
+(defun |histFileErase| (file)
+ (when (probe-file file) (delete-file file)))
+
+(defun |histFileName| () 
+ (declare (special |$interpreterFrameName|))
+ (|makeHistFileName| |$interpreterFrameName|)) 
+
+(defun |histInputFileName| (fn)
+ (declare (special |$interpreterFrameName| |$historyDirectory|))
+ (if (null fn)
+   (|makePathname| |$interpreterFrameName| 'input |$historyDirectory|)
+   (|makePathname| fn 'input |$historyDirectory|)))
+
+(defun |history| (l) 
+ "The top level history command"
+ (declare (special |$options|))
+ (if (or l (null |$options|)) 
+  (|sayKeyedMsg|
+   (format nil
+    "You have not used the correct syntax for the history command. ~
+     Issue )help history for more information.")
+    nil)
+  (|historySpad2Cmd|)))
+
+(defun |historySpad2Cmd| () 
+ "The top level history command handler"
+ (let (histOptions opts opt optargs x) 
+ (declare (special |$options| |$HiFiAccess| |$IOindex|))
+  (setq histOptions 
+    '(|on| |off| |yes| |no| |change| |reset| |restore| |write| 
+      |save| |show| |file| |memory|)) 
+  (setq opts 
+   (prog (tmp1) 
+     (setq tmp1 nil) 
+     (return 
+      (do ((tmp2 |$options| (cdr tmp2)) (tmp3 nil))
+          ((or (atom tmp2) 
+               (progn 
+                 (setq tmp3 (car tmp2)) 
+                 nil) 
+               (progn 
+                (progn 
+                 (setq opt (car tmp3)) 
+                 (setq optargs (cdr tmp3)) 
+                 tmp3) 
+                nil))
+             (nreverse0 tmp1))
+         (setq tmp1 
+          (cons 
+            (cons 
+              (|selectOptionLC| opt histOptions '|optionError|)
+              optargs)
+            tmp1))))))
+  (do ((tmp4 opts (cdr tmp4)) (tmp5 nil))
+      ((or (atom tmp4) 
+           (progn 
+             (setq tmp5 (car tmp4))
+              nil) 
+           (progn 
+            (progn 
+             (setq opt (car tmp5)) 
+             (setq optargs (cdr tmp5)) 
+             tmp5) 
+            nil))
+        nil)
+    (seq 
+     (exit 
+      (cond 
+       ((|member| opt '(|on| |yes|))
+          (cond 
+           (|$HiFiAccess| 
+             (|sayKeyedMsg| "The history facility is already on." nil))
+           ((eql |$IOindex| 1) 
+             (setq |$HiFiAccess| t)
+             (|initHistList|)
+             (|sayKeyedMsg| "The history facility is now on." nil))
+           (t 
+             (setq x ; really want to turn history on?
+               (upcase
+                (|queryUserKeyedMsg| 
+                 (format nil
+                  "Turning on the history facility will clear the contents ~
+                   of the workspace. Please enter y or yes if you really ~
+                   want to do this:")
+                  nil)))
+             (cond 
+              ((member (string2id-n x 1) '(Y YES)) 
+                (|histFileErase| (|histFileName|)) 
+                (setq |$HiFiAccess| t)
+                (setq |$options| nil) 
+                (|clearSpad2Cmd| '(|all|))
+                (|sayKeyedMsg| "The history facility is now on." nil)
+                (|initHistList|)) 
+              (t 
+                (|sayKeyedMsg| "The history facility is still off." nil))))))
+       ((|member| opt '(|off| |no|)) 
+         (cond 
+          ((null |$HiFiAccess|) 
+            (|sayKeyedMsg| "The history facility is already off." nil))
+          (t 
+            (setq |$HiFiAccess| nil) 
+            (|disableHist|) 
+            (|sayKeyedMsg| "The history facility is now off." nil))))
+       ((eq opt '|file|)    (|setHistoryCore| nil)) 
+       ((eq opt '|memory|)  (|setHistoryCore| t)) 
+       ((eq opt '|reset|)   (|resetInCoreHist|)) 
+       ((eq opt '|save|)    (|saveHistory| optargs)) 
+       ((eq opt '|show|)    (|showHistory| optargs)) 
+       ((eq opt '|change|)  (|changeHistListLen| (car optargs))) 
+       ((eq opt '|restore|) (|restoreHistory| optargs)) 
+       ((eq opt '|write|)   (|writeInputLines| optargs 1)))))) 
+  '|done|))
+
+(defun hkeys (table)
+ (let (keys)
+  (maphash
+   #'(lambda (key val) (declare (ignore val)) (push key keys)) table)
+   keys))
+
+(defun hput (table key value)
+ (setf (gethash key table) value))
+
+(defun |htAddHeading| (title)
+ (declare (special |$curPage|))
+ (|htNewPage| title)
+ |$curPage|)
+
+(defun |htAllOrNum| (val)
+  (|bcHt| (cond
+            ((eq val '|all|) "{\\em all")
+            ((eql val 0) "{\\em no")
+            (t
+             (CONCAT "the last {\\em "
+                      (|stringize| val))))))
+
+(defun |htBcLinks| (&rest a1)
+ (let (skipStateInfo? t1 message info func value options links)
+   (setq links (car a1))
+   (setq options (cdr a1))
+   (setq skipStateInfo? (ifcar options))
+   (setq t1 (|beforeAfter| '|options| links))
+   (setq links (car t1))
+   (setq options (cadr t1))
+   (do ((g1 links (CDR g1)) (g2 nil))
+        ((or (atom g1)
+             (progn (setq g2 (car g1)) nil)
+             (progn
+               (progn
+                 (setq message (car g2))
+                 (setq info (cadr g2))
+                 (setq func (caddr g2))
+                 (setq value (cdddr g2))
+                 g2)
+                nil))
+            nil)
+       (|htMakeButton| "\\lispdownlink" message
+          (|mkCurryFun| func value)  skipStateInfo?)
+       (|bcIssueHt| info))))
+
+(defun |htBcLispLinks| (links)
+  (prog (t1 options message info func value)
+    (return
+      (SEQ (progn
+             (setq t1 (|beforeAfter| '|options| links))
+             (setq links (car t1))
+             (setq options (cadr t1))
+             (DO ((G166487 links (cdr G166487)) (G166474 nil))
+                 ((or (atom G166487)
+                      (progn (setq G166474 (car G166487)) nil)
+                      (progn
+                        (progn
+                          (setq message (car G166474))
+                          (setq info (cadr G166474))
+                          (setq func (caddr G166474))
+                          (setq value (cdddr G166474))
+                          G166474)
+                        nil))
+                  nil)
+               (SEQ (EXIT (progn
+                            (|htMakeButton| "\\lisplink"
+                                message
+                                (|mkCurryFun| func value))
+                            (|bcIssueHt| info))))))))))
+
+(defun |htBcRadioButtons| (G166594)
+  (prog (groupName buttons boxesName message info buttonName defaultValue)
+  (declare (special |$curPage|))
+    (return
+      (SEQ (progn
+             (setq groupName (car G166594))
+             (setq buttons (cdr G166594))
+             (|htpSetRadioButtonAlist| |$curPage|
+                 (cons (cons groupName (|buttonNames| buttons))
+                       (|htpRadioButtonAlist| |$curPage|)))
+             (setq boxesName (gentemp))
+             (|iht| (cons "\\radioboxes{"
+                     (cons boxesName
+                      (cons "}{\\htbmfile{pick}}{\\htbmfile{unpick}} "
+                                      nil))))
+             (setq defaultValue "1")
+             (DO ((G166616 buttons (cdr G166616))
+                  (G166588 nil))
+                 ((or (atom G166616)
+                      (progn (setq G166588 (car G166616)) nil)
+                      (progn
+                        (progn
+                          (setq message (car G166588))
+                          (setq info (cadr G166588))
+                          (setq buttonName (caddr G166588))
+                          G166588)
+                        nil))
+                  nil)
+               (SEQ (EXIT (progn
+                            (cond
+                              ((null (LASSOC buttonName
+                                      (|htpInputAreaAlist| |$curPage|)))
+                               (|setUpDefault| buttonName
+                                   (cons '|button|
+                                    (cons defaultValue nil)))
+                               (setq defaultValue
+                                        "0")))
+                            (|iht| (cons
+                                    "{\\em\\radiobox["
+                                    (cons
+                                     (|htpLabelDefault| |$curPage|
+                                      buttonName)
+                                     (cons "]{"
+                                      (cons buttonName
+                                       (cons "}{"
+                                        (cons boxesName
+                                         (cons "}" nil))))))))
+                            (|bcIssueHt| message)
+                            (|iht| "\\space{}}")
+                            (|bcIssueHt| info))))))))))
+
+(defun |htCacheAddChoice| (htPage)
+  (prog (names page)
+  (declare (special |$valueList|))
+    (return
+      (SEQ (progn
+             (setq names
+                      (|bcString2WordList|
+                          (|htpLabelInputString| htPage '|names|)))
+             (setq |$valueList|
+                      (cons (|listOfStrings2String| names)
+                            |$valueList|))
+             (cond
+               ((null names) (|htCacheAddQuery|))
+               ((null (cdr names)) (|htCacheOne| names))
+               (t (setq page (|htInitPage| (|mkSetTitle|) nil))
+                (|htpSetProperty| page '|names| names)
+                (|htMakePage|
+                    '((|domainConditions|
+                          (|Satisfies| ALLPI chkAllPositiveInteger))
+                      (|text|
+  "For each function, enter below a {\\em cache length}, a positive integer. "
+  "This number tells how many past values will "
+  "be cached. "
+  "A cache length of {\\em 0} means the function won't be cached. "
+  "To cache all past values, "
+  "enter {\\em all}."
+  "\\vspace{1}\\newline "
+  "For each function name, enter {\\em all} or a positive integer:")))
+                (DO ((i 1 (QSADD1 i))
+                     (G167755 names (CDR G167755)) (name nil))
+                    ((or (atom G167755)
+                         (progn (setq name (car G167755)) nil))
+                     nil)
+                  (SEQ (EXIT (|htMakePage|
+                                 (cons (cons '|inputStrings|
+                                        (cons
+                                         (cons
+                                          (CONCAT "Function {\\em "
+                                           name
+                                           "} will cache")
+                                          (cons "values"
+                                           (cons 5
+                                            (cons 10
+                                             (cons
+                                              (|htMakeLabel|
+                                               "c" i)
+                                              (cons 'ALLPI nil))))))
+                                         nil))
+                                       nil)))))
+                (|htSetvarDoneButton| "Select to Set Values" '|htCacheSet|)
+                (|htShowPage|))))))))
+
+(defun |htCacheOne| (names)
+  (prog (page)
+    (return
+      (progn
+        (setq page (|htInitPage| (|mkSetTitle|) nil))
+        (|htpSetProperty| page '|names| names)
+        (|htMakePage|
+            '((|domainConditions|
+                  (|Satisfies| ALLPI |chkAllPositiveInteger|))
+              (|text| "Enter below a {\\em cache length}, a positive integer. "
+                      "This number tells how many past values will "
+                      "be cached. To cache all past values, "
+                      "enter {\\em all}." "\\vspace{1}\\newline ")
+              (|inputStrings|
+                  ("Enter {\\em all} or a positive integer:" "" 5 10
+                   |c1| ALLPI))))
+        (|htSetvarDoneButton| "Select to Set Value"
+            '|htCacheSet|)
+        (|htShowPage|)))))
+
+(defun |htCacheSet| (htPage)
+  (prog (names num n name val)
+  (declare (special |$cacheCount| |$cacheAlist|))
+    (return
+      (SEQ (progn
+             (setq names (|htpProperty| htPage '|names|))
+             (DO ((i 1 (QSADD1 i))
+                  (G167785 names (CDR G167785)) (name nil))
+                 ((or (atom G167785)
+                      (progn (setq name (car G167785)) nil))
+                  nil)
+               (SEQ (EXIT (progn
+                            (setq num
+                                     (|chkAllNonNegativeInteger|
+                                      (|htpLabelInputString| htPage
+                                       (|htMakeLabel| "c"
+                                        i))))
+                            (setq |$cacheAlist|
+                                     (ADDASSOC (intern name) num
+                                      |$cacheAlist|))))))
+             (cond
+               ((setq n (LASSOC '|all| |$cacheAlist|))
+                (setq |$cacheCount| n)
+                (setq |$cacheAlist|
+                         (|deleteAssoc| '|all| |$cacheAlist|))))
+             (|htInitPage| "Cache Summary" nil)
+             (|bcHt| "In general, interpreter functions ")
+             (|bcHt| (cond
+                       ((EQL |$cacheCount| 0)
+                        '|will {\\em not} be cached.|)
+                       (t (|bcHt| "cache ")
+                        (|htAllOrNum| |$cacheCount|)
+                        "} values.")))
+             (|bcHt| "\\vspace{1}\\newline ")
+             (cond
+               (|$cacheAlist|
+                   (DO ((G167801 |$cacheAlist| (cdr G167801))
+                        (G167774 nil))
+                       ((or (atom G167801)
+                            (progn
+                              (setq G167774 (car G167801))
+                              nil)
+                            (progn
+                              (progn
+                                (setq name (car G167774))
+                                (setq val (CDR G167774))
+                                G167774)
+                              nil))
+                        nil)
+                     (SEQ (EXIT (cond
+                                  ((NEQUAL val |$cacheCount|)
+                                   (progn
+                                     (|bcHt| "\\newline function {\\em ")
+                                     (|bcHt| (|stringize| name))
+                                     (|bcHt| "} will cache ")
+                                     (|htAllOrNum| val)
+                                     (|bcHt| "} values")))))))))
+             (|htProcessDoitButton|
+                 (cons "Press to Remove Page"
+                       (cons "" (cons '|htDoNothing| nil))))
+             (|htShowPage|))))))
+
+(defun |htCheckList| (checker value)
+  (prog (n t2 m)
+    (return
+      (progn
+        (cond
+          ((|member| value '(|y| |ye| |yes| Y YE YES))
+           (setq value '|yes|)))
+        (cond
+          ((|member| value '(|n| |no| N NO)) (setq value '|no|)))
+        (cond
+          ((and (consp checker)
+                (progn
+                  (setq n (qcar checker))
+                  (setq t2 (qcdr checker))
+                  (and (consp t2) (eq (QCDR t2) nil)
+                       (progn (setq m (QCAR t2)) t)))
+                (integerp n))
+           (cond
+             ((eql m (1+ n))
+              (cond ((|member| value checker) value) (t n)))
+             ((null m)
+              (cond
+                ((and (integerp value) (>= value n)) value)
+                (t n)))
+             ((integerp m)
+              (cond
+                ((and (integerp value) (>= value n)
+                      (<= value m))
+                 value)
+                (t n)))))
+          ((|member| value checker) value)
+          (t (car checker)))))))
+
+(defun |htCheck| (checker value)
+  (cond
+    ((consp checker) (|htCheckList| checker (|parseWord| value)))
+    (t (funcall checker value))))
+
+(defun |htDoneButton| (func htPage)
+  (cond
+    ((|typeCheckInputAreas| htPage) (|htMakeErrorPage| htPage))
+    ((null (fboundp func))
+     (|systemError| (cons "unknown function" (cons func nil))))
+    (t (funcall (symbol-function func) htPage))))
+
+(defun |htDoNothing| (htPage command)
+ (declare (ignore htPage command))
+ nil) 
+
+(defun |htEscapeString| (str)
+ (declare (special |$funnyBacks| |$funnyQuote|))
+  (setq str (substitute |$funnyQuote| #\" str))
+  (substitute |$funnyBacks| #\\ str))
+
+(defun |htFunctionSetLiteral| (htPage val)
+  (progn
+    (|htInitPage| "Set Command" nil)
+    (set (|htpProperty| htPage '|variable|)
+         (|translateYesNo2TrueFalse| val))
+    (|htSetFunCommandContinue| htPage val)))
+
+(defun |htGlossPage| (htPage pattern tryAgain?)
+  (prog (|$wildCard| |$key| filter grepForm results defstream
+         lines heading k tick)
+    (declare (special |$wildCard| |$key| |$tick|))
+    (return
+      (SEQ (progn
+             (setq |$wildCard| #\*)
+             (cond
+               ((equal pattern "*")
+                (|downlink| '|GlossaryPage|))
+               (t (setq filter (|pmTransFilter| pattern))
+                (setq grepForm (|mkGrepPattern| filter '|none|))
+                (setq |$key| '|none|)
+                (setq results (|applyGrep| grepForm '|gloss|))
+                (setq defstream
+                         (make-instream
+                             (CONCAT (getenviron "AXIOM")
+                              "/algebra/glossdef.text")))
+                (setq lines
+                         (|gatherGlossLines| results defstream))
+                (setq heading
+                         (cond
+                           ((equal pattern "")
+                            "Glossary")
+                           ((null lines)
+                            (cons "No glossary items match {\\em "
+                                  (cons pattern
+                                        (cons "}" nil))))
+                           (t
+                            (cons "Glossary items matching {\\em "
+                                  (cons pattern
+                                        (cons "}" nil))))))
+                (cond
+                  ((null lines)
+                   (cond
+                     ((and tryAgain? (> (|#| pattern) 0))
+                      (cond
+                        ((equal
+                             (elt pattern
+                                  (setq k (MAXINDEX pattern)))
+                             #\s)
+                         (|htGlossPage| htPage
+                             (SUBSTRING pattern 0 k) t))
+                        ((upper-case-p (elt pattern 0))
+                         (|htGlossPage| htPage (downcase pattern)
+                             nil))
+                        (t
+                         (|errorPage| htPage
+                             (cons "Sorry"
+                                   (cons nil
+                                    (cons
+                                     (cons "\\centerline{"
+                                      (append heading
+                                       (cons "}" nil)))
+                                     nil)))))))
+                     (t
+                      (|errorPage| htPage
+                          (cons "Sorry"
+                                (cons nil
+                                      (cons
+                                       (cons
+                                        "\\centerline{"
+                                        (append heading
+                                         (cons "}" nil)))
+                                       nil)))))))
+                  (t (|htInitPageNoScroll| nil heading)
+                   (|htSay| "\\beginscroll\\beginmenu")
+                   (DO ((G168058 lines (cdr G168058))
+                        (line nil))
+                       ((or (atom G168058)
+                            (progn (setq line (car G168058)) nil))
+                        nil)
+                     (SEQ (EXIT (progn
+                                  (setq tick
+                                           (|charPosition| |$tick|
+                                            line 1))
+                                  (|htSay|
+                                 "\\item{\\em \\menuitemstyle{}}\\tab{0}{\\em "
+                                           (|escapeString|
+                                            (SUBSTRING line 0 tick))
+                                           "} "
+                                           (SUBSTRING line
+                                            (1+ tick) nil))))))
+                   (|htSay| "\\endmenu ")
+                   (|htSay| "\\endscroll\\newline ")
+                   (|htMakePage|
+                       (cons (cons '|bcLinks|
+                                   (cons
+                                    (cons "Search"
+                                     (cons ""
+                                      (cons '|htGlossSearch|
+                                       (cons nil nil))))
+                                    nil))
+                             nil))
+                   (|htSay| " for glossary entry matching ")
+                   (|htMakePage|
+                       (cons (cons '|bcStrings|
+                                   (cons
+                                    (cons 24
+                                     (cons "*"
+                                      (cons '|filter| (cons 'em nil))))
+                                    nil))
+                             nil))
+                   (|htShowPageNoScroll|))))))))))
+
+(defun |htGlossSearch| (htPage junk)
+  (declare (ignore junk))
+  (|htGloss| (|htpLabelInputString| htPage '|filter|)))
+
+(defun |htGloss| (pattern)
+  (|htGlossPage| nil
+      (or (|dbNonEmptyPattern| pattern) "*") t))
+
+(defun |htGreekSearch| (filter)
+  (prog (ss s names matches nonmatches)
+    (return
+      (SEQ (progn
+             (setq ss (|dbNonEmptyPattern| filter))
+             (setq s (|pmTransFilter| ss))
+             (cond
+               ((and (consp s) (eq (QCAR s) '|error|))
+                (|bcErrorPage| s))
+               ((null s)
+                (|errorPage| nil
+                    (cons (cons "Missing search string"
+                                nil)
+                          (cons nil
+                                (cons
+       "\\vspace{2}\\centerline{To select one of the greek letters:}\\newline "
+                                      (cons
+ "\\centerline{{\\em first} enter a search key into the input area}\\newline "
+                                       (cons
+ "\\centerline{{\\em then } move the mouse cursor to the work {\\em search} and click}"
+                                        nil)))))))
+               (t (setq filter (|patternCheck| s))
+                (setq names
+                         '(|alpha| |beta| |gamma| |delta| |epsilon|
+                                   |zeta| |eta| |theta| |iota| |kappa|
+                                   |lambda| |mu| |nu| |pi|))
+                (DO ((G168149 names (CDR G168149)) (x nil))
+                    ((or (atom G168149)
+                         (progn (setq x (car G168149)) nil))
+                     nil)
+                  (cond
+                               ((|superMatch?| filter (PNAME x))
+                                (setq matches
+                                         (cons x matches)))
+                               (t
+                                (setq nonmatches
+                                         (cons x nonmatches)))))
+                (setq matches (nreverse matches))
+                (setq nonmatches (nreverse nonmatches))
+                (|htInitPage| "Greek Names" nil)
+                (cond
+                  ((null matches)
+                   (|htInitPage|
+                       (cons  "Greek names matching search string {\\em "
+                             (cons ss (cons "}" nil)))
+                       nil)
+ (|htSay| '|\\vspace{2}\\centerline{Sorry, but no greek letters match your search string}\\centerline{{\\em |
+                            ss
+                         '|}}\\centerline{Click on the up-arrow to try again}|)
+                   (|htShowPage|))
+                  (t
+                   (|htInitPage|
+                       (cons  "Greek letters matching search string {\\em "
+                             (cons ss (cons "}" nil)))
+                       nil)
+                   (cond
+                     (nonmatches
+                         (|htSay|
+                "The greek letters that {\\em match} your search string {\\em "
+                                  ss "}:"))
+                     (t
+                      (|htSay| "Your search string {\\em "
+                               ss
+                               '|} matches all of the greek letters:|)))
+                   (|htSay| "{\\em \\table{")
+                   (DO ((G168158 matches (CDR G168158))
+                        (x nil))
+                       ((or (atom G168158)
+                            (progn (setq x (car G168158)) nil))
+                        nil)
+                     (SEQ (EXIT (|htSay| "{" x
+                                         "}"))))
+                   (|htSay| "}}\\vspace{1}")
+                   (cond
+                     (nonmatches
+                         (|htSay|   
+"The greek letters that {\\em do not match} your search string:{\\em \\table{")
+                         (DO ((G168167 nonmatches (CDR G168167))
+                              (x nil))
+                             ((or (atom G168167)
+                                  (progn
+                                    (setq x (car G168167))
+                                    nil))
+                              nil)
+                           (SEQ (EXIT (|htSay| "{" x
+                                       "}"))))
+                         (|htSay| "}}")))
+                   (|htShowPage|))))))))))
+
+(defun |htInitPage| (title propList)
+ (declare (special |$curPage|))
+  (|htInitPageNoScroll| propList title)
+  (|htSayStandard| "\\beginscroll ")
+  |$curPage|)
+
+(defun |htInitPageNoScroll| (&rest args)
+ (let (title (propList (car args)) (options (cdr args)))
+ (declare (special |$atLeastOneUnexposed| |$curPage| |$newPage| |$htLineList|))
+  ; reset every time a new page is initialized
+  (setq |$atLeastOneUnexposed| nil)
+  (setq title (car options))
+  (setq |$curPage| (|htpMakeEmptyPage| propList))
+  (setq |$newPage| t)
+  (setq |$htLineList| nil)
+  (when title 
+    (|htSayStandard| (list "\\begin{page}{" (|htpName| |$curPage|) "}{" ))
+    (|htSay| title)
+    (|htSayStandard| "} "))
+  |$curPage|))
+
+(defun |htInputStrings| (strings)
+  (prog (mess1 numChars default stringName spadType filter mess2)
+  (declare (special |$curPage|))
+    (return
+      (SEQ (progn
+             (|iht| "\\newline\\indent{5}\\beginitems ")
+             (DO ((G166685 strings (cdr G166685))
+                  (G166665 nil))
+                 ((or (atom G166685)
+                      (progn (setq G166665 (car G166685)) nil)
+                      (progn
+                        (progn
+                          (setq mess1 (car G166665))
+                          (setq mess2 (cadr G166665))
+                          (setq numChars (caddr G166665))
+                          (setq default (cadddr G166665))
+                          (setq stringName
+                                   (car (cddddr G166665)))
+                          (setq spadType
+                                   (cadr (cddddr G166665)))
+                          (setq filter (cddr (cddddr G166665)))
+                          G166665)
+                        nil))
+                  nil)
+               (SEQ (EXIT (progn
+                            (cond
+                              ((null (LASSOC stringName
+                                      (|htpInputAreaAlist| |$curPage|)))
+                               (|setUpDefault| stringName
+                                   (cons '|string|
+                                    (cons default
+                                     (cons spadType
+                                      (cons filter nil)))))))
+                            (cond
+                              ((|htpLabelErrorMsg| |$curPage|
+                                   stringName)
+                               (|iht| (cons "\\centerline{{\\em "
+                                       (cons
+                                        (|htpLabelErrorMsg| |$curPage|
+                                         stringName)
+                                        (cons "}}" nil))))
+                               (setq mess2
+                                        (CONCAT mess2 (|bcSadFaces|)))
+                               (|htpSetLabelErrorMsg| |$curPage|
+                                   stringName nil)))
+                            (|iht| "\\item ")
+                            (|bcIssueHt| mess1)
+                            (|iht| (cons "\\inputstring{"
+                                    (cons stringName
+                                     (cons "}{"
+                                      (cons numChars
+                                       (cons "}{"
+                                        (cons
+                                         (|htpLabelDefault| |$curPage|
+                                          stringName)
+                                         (cons "} " nil))))))))
+                            (|bcIssueHt| mess2)))))
+             (|iht| "\\enditems\\indent{0}\\newline "))))))
+
+(defun |htKill| (htPage value)
+  (declare (ignore htPage))
+  (prog (string)
+  (declare (special |$path|))
+    (return
+      (progn
+        (|htInitPage| "System Command" nil)
+        (setq string
+                 (CONCAT "{\\em )set "
+                          (|listOfStrings2String|
+                              (cons value |$path|))
+                          "}"))
+        (|htMakePage|
+     (cons '(|text| "{Here is the AXIOM system command you could have issued:}"
+                           "\\vspace{2}\\newline\\centerline{\\tt")
+                  (cons (cons '|text| string) nil)))
+        (|htMakePage| '((|text| . "}\\vspace{1}\\newline\\rm")))
+        (|htSay| "\\vspace{2}{Select \\  \\UpButton{} \\  to go back.}")
+        (|htSay| "\\newline{Select \\  \\ExitButton{QuitPage} \\  to remove this window.}")
+        (|htProcessDoitButton|
+            (cons "Press to Remove Page"
+                  (cons "" (cons '|htDoNothing| nil))))
+        (|htShowPage|)))))
+
+(defun |htLispLinks| (&REST G166422 &AUX option links)
+  (setq links (car G166422))
+  (setq option (cdr G166422))
+  (prog (t1 options indent message info func value call)
+    (return
+      (SEQ (progn
+             (setq t1 (|beforeAfter| '|options| links))
+             (setq links (car t1))
+             (setq options (cadr t1))
+             (setq indent (or (LASSOC '|indent| options) 5))
+             (|iht| "\\newline\\indent{")
+             (|iht| (|stringize| indent))
+             (|iht| "}\\beginitems")
+             (DO ((G166403 links (CDR G166403)) (G166387 nil))
+                 ((or (atom G166403)
+                      (progn (setq G166387 (car G166403)) nil)
+                      (progn
+                        (progn
+                          (setq message (car G166387))
+                          (setq info (cadr G166387))
+                          (setq func (caddr G166387))
+                          (setq value (cdddr G166387))
+                          G166387)
+                        nil))
+                  nil)
+               (SEQ (EXIT (progn
+                            (|iht| "\\item[")
+                            (setq call
+                                     (cond
+                                       ((IFCAR option)
+                                        "\\lispmemolink")
+                                       (t
+                                        "\\lispdownlink")))
+                            (|htMakeButton| call message
+                                (|mkCurryFun| func value))
+                            (|iht| (cons "]\\space{}" nil))
+                            (|bcIssueHt| info)))))
+             (|iht| "\\enditems\\indent{0} "))))))
+
+(defun |htLispMemoLinks| (links) (|htLispLinks| links t))
+
+(defun |htMakeButton| (&rest arg)
+ (let (options func message htCommand)
+  (setq htCommand (car arg))
+  (setq message (cadr arg))
+  (setq func (caddr arg))
+  (setq options (cdddr arg))
+  (prog (skipStateInfo? id type)
+  (declare (special |$curPage|))
+    (return
+      (SEQ (progn
+             (setq skipStateInfo? (ifcar options))
+             (|iht| (cons htCommand (cons "{" nil)))
+             (|bcIssueHt| message)
+             (cond
+               (skipStateInfo?
+                   (|iht| (cons "}{(|htDoneButton| '|"
+                                (cons func
+                                      (cons "| "
+                                       (cons (|htpName| |$curPage|)
+                                        (cons ")}" nil)))))))
+               (t
+                (|iht| (cons "}{(|htDoneButton| '|"
+                             (cons func
+                                   (cons "| (progn " nil))))
+                (DO ((G166977 (|htpInputAreaAlist| |$curPage|)
+                         (CDR G166977))
+                     (G166965 nil))
+                    ((OR (ATOM G166977)
+                         (progn (setq G166965 (car G166977)) nil)
+                         (progn
+                           (progn
+                             (setq id (car G166965))
+                             (setq type (car (cddddr G166965)))
+                             G166965)
+                           nil))
+                     nil)
+                  (SEQ (EXIT (progn
+                               (|iht| (cons "(|htpSetLabelInputString| "
+                                       (cons (|htpName| |$curPage|)
+                                        (cons "'|"
+                                         (cons id
+                                          (cons "| " nil))))))
+                               (cond
+                                 ((eq type '|string|)
+                                  (|iht| (cons "\"\\stringvalue{"
+                                          (cons id
+                                           (cons "}\""
+                                            nil)))))
+                                 (t
+                                  (|iht| (cons
+                                          "\"\\boxvalue{"
+                                          (cons id
+                                           (cons "}\""
+                                            nil))))))
+                               (|iht| ") ")))))
+                (|iht| (cons (|htpName| |$curPage|)
+                             (cons "))}" nil)))))))))))
+
+(defun |htMakeDoitButton| (label command)
+ (declare (special |$curPage|))
+  (cond
+   ((equal label "Do It")
+    (|bcHt| 
+"\\newline\\vspace{1}\\centerline{\\lispcommand{\\DoItBitmap}{(|doDoitButton| "))
+    (t
+     (|bcHt| 
+      (list "\\newline\\vspace{1}\\centerline{\\lispcommand{\\box{" label
+         "}}{(|doDoitButton| "))))
+  (|bcHt| (|htpName| |$curPage|))
+  (|bcHt| (list " \"" (|htEscapeString| command) "\""))
+  (|bcHt| ")}}")
+  (|bcHt| "\\vspace{2}{Select \\  \\UpButton{} \\  to go back one page.}")
+  (|bcHt| 
+    "\\newline{Select \\  \\ExitButton{QuitPage} \\  to remove this window.}"))
+
+(defun |htMakeDoneButton| (message func)
+  (progn
+    (|bcHt| "\\newline\\vspace{1}\\centerline{")
+    (cond
+      ((equal message "Continue")
+       (|bchtMakeButton| "\\lispdownlink"
+           '|\\ContinueBitmap| func))
+      (t
+       (|bchtMakeButton| "\\lispdownlink"
+           (CONCAT "\\box{" message "}")
+           func)))
+    (|bcHt| "} ")))
+
+(defun |htMakeErrorPage| (htPage)
+  (prog (line)
+  (declare (special |$curPage| |$htLineList| |$newPage|))
+    (return
+      (progn
+        (setq |$newPage| nil)
+        (setq |$htLineList| nil)
+        (setq |$curPage| htPage)
+        (|htMakePage| (|htpPageDescription| htPage))
+        (setq line (apply #'CONCAT (NREVERSE |$htLineList|)))
+        (|issueHT| line)
+        (|endHTPage|)))))
+
+(defun |htMakeInputList| (stringList)
+  (prog (lastArg argList)
+    (return
+      (SEQ (progn
+             (setq lastArg (|last| stringList))
+             (setq argList nil)
+             (DO ((G167328 stringList (cdr G167328)) (arg nil))
+                 ((or (atom G167328)
+                      (progn (setq arg (car G167328)) nil)
+                      (null (NEQUAL arg lastArg)))
+                  nil)
+               (SEQ (EXIT (setq argList
+                                   (cons
+                                    (CONCAT arg ", ")
+                                    argList)))))
+             (setq argList (NREVERSE (cons lastArg argList)))
+             (|bracketString| (apply #'CONCAT argList)))))))
+
+(defun |htMakeLabel| (prefix i)
+  (intern (concat prefix (|stringize| i))))
+
+(defun |htMakePage| (itemList)
+  (declare (special |$curPage| |$newPage|))
+  (progn
+    (cond
+      (|$newPage| (|htpAddToPageDescription| |$curPage| itemList)))
+    (|htMakePage1| itemList)))
+
+(defun |htMakePage1| (itemList)
+ (let (itemType items)
+  (loop for u in itemList do
+   (setq itemType '|text|)
+   (setq items
+    (cond
+     ((stringp u) u)
+     ((atom u) (princ-to-string u))
+     ((stringp (car u)) u)
+     ((and (consp u) (eq (car u) '|text|)) (cdr u))
+     (t 
+      (setq itemType (car u)) ; look up the tag for the next description
+      (cdr u))))
+   (cond
+    ((eq itemType '|text|) (|iht| items))
+    ((eq itemType '|lispLinks|) (|htLispLinks| items))
+    ((eq itemType '|lispmemoLinks|) (|htLispMemoLinks| items))
+    ((eq itemType '|bcLinks|) (|htBcLinks| items))
+    ((eq itemType '|bcLinksNS|) (|htBcLinks| items t))
+    ((eq itemType '|bcLispLinks|) (|htBcLispLinks| items))
+    ((eq itemType '|radioButtons|) (|htRadioButtons| items))
+    ((eq itemType '|bcRadioButtons|) (|htBcRadioButtons| items))
+    ((eq itemType '|inputStrings|) (|htInputStrings| items))
+    ((eq itemType '|domainConditions|) (|htProcessDomainConditions| items))
+    ((eq itemType '|bcStrings|) (|htProcessBcStrings| items))
+    ((eq itemType '|toggleButtons|) (|htProcessToggleButtons| items))
+    ((eq itemType '|bcButtons|) (|htProcessBcButtons| items))
+    ((eq itemType '|doneButton|) (|htProcessDoneButton| items))
+    ((eq itemType '|doitButton|) (|htProcessDoitButton| items))
+    (t (|systemError| (list "unknown itemType" itemType)))))))
+
+(defun |htMakePathKey,fn| (a b)
+  (SEQ (if (null b) (EXIT a))
+       (EXIT (|htMakePathKey,fn|
+                 (CONCAT a "." (PNAME (car b)))
+                 (cdr b)))))
+
+(defun |htMakePathKey| (path)
+  (cond
+    ((null path) (|systemError| "path is not set"))
+    (t
+     (intern (|htMakePathKey,fn| (PNAME (car path)) (cdr path))))))
+
+(defun |htMakeTemplates,substLabel| (i template)
+  (SEQ (if (consp template)
+           (EXIT (intern (CONCAT (car template) (princ-to-string i)
+                                 (cdr template)))))
+       (EXIT template)))
+
+(defun |htMakeTemplates| (templateList numLabels)
+  (prog ()
+    (return
+      (SEQ (progn
+             (setq templateList
+                      (prog (G166895)
+                        (setq G166895 nil)
+                        (return
+                          (DO ((G166900 templateList
+                                   (CDR G166900))
+                               (template nil))
+                              ((or (atom G166900)
+                                   (progn
+                                     (setq template (car G166900))
+                                     nil))
+                               (NREVERSE0 G166895))
+                            (SEQ (EXIT (setq G166895
+                                        (cons
+                                         (|templateParts| template)
+                                         G166895))))))))
+             (prog (G166910)
+               (setq G166910 nil)
+               (return
+                 (DO ((i 1 (1+ i)))
+                     ((qsgreaterp i numLabels)
+                      (NREVERSE0 G166910))
+                   (SEQ (EXIT (setq G166910
+                                    (cons
+                                     (prog (G166922)
+                                       (setq G166922 nil)
+                                       (return
+                                         (DO
+                                          ((G166927 templateList
+                                            (CDR G166927))
+                                           (template nil))
+                                          ((or (atom G166927)
+                                            (progn
+                                              (setq template
+                                               (car G166927))
+                                              nil))
+                                           (NREVERSE0 G166922))
+                                           (SEQ
+                                            (EXIT
+                                             (setq G166922
+                                              (cons
+                                               (|htMakeTemplates,substLabel|
+                                                i template)
+                                               G166922)))))))
+                                     G166910))))))))))))
+
+(defun |htMarkTree| (tree n)
+  (SEQ (progn
+         (rplacd (last tree) n)
+         (SEQ (DO ((G167706 tree (cdr G167706)) (branch nil))
+                  ((OR (ATOM G167706)
+                       (progn (setq branch (car G167706)) nil))
+                   nil)
+                (SEQ (EXIT (cond
+                             ((eq (elt branch 3) 'tree)
+                              (EXIT (|htMarkTree| (elt branch 5)
+                                     (1+ n))))))))))))
+
+(defun |htMkName| (s n)
+ (concat s (princ-to-string n)))
+
+(defun |htpAddInputAreaProp| (htPage label prop)
+  (setf (elt htPage 5)
+    (cons 
+      (cons label (cons nil (cons nil (cons nil prop))))
+      (elt htPage 5))))
+
+(defun |htpButtonValue| (htPage groupName)
+  (prog ()
+    (return
+      (SEQ (DO ((G166092
+                    (LASSOC groupName
+                            (|htpRadioButtonAlist| htPage))
+                    (CDR G166092))
+                (|buttonName| nil))
+               ((OR (ATOM G166092)
+                    (progn (setq |buttonName| (car G166092)) nil))
+                NIL)
+             (SEQ (EXIT (COND
+                          ((BOOT-EQUAL
+                               (|stripSpaces|
+                                   (|htpLabelInputString| htPage
+                                    |buttonName|))
+                               "t")
+                           (EXIT (RETURN |buttonName|)))))))))))
+
+(defun |htpDestroyPage| (pageName)
+ (declare (special |$activePageList|))
+ (when (|member| pageName |$activePageList|)
+   (set pageName nil)
+   (setq |$activePageList| (delete pageName |$activePageList|))))
+
+(defun |htpDomainConditions| (htPage) (elt htPage 1)) 
+
+(defun |htpDomainPvarSubstList| (htPage) (elt htPage 3)) 
+
+(defun |htpDomainVariableAlist| (htPage) (elt htPage 2)) 
+
+(defun |htpInputAreaAlist| (htPage)
+ (elt htPage 5))
+
+(defun |htpLabelDefault| (htPage label)
+ (let (msg props)
+  (cond
+   ((setq msg (|htpLabelInputString| htPage label))
+      (cond
+       ((equal msg "t") 1)
+       ((equal msg "nil") 0)
+       (t msg)))
+   (t
+    (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+    (when props (elt props 4))))))
+
+(defun |htpLabelErrorMsg| (htPage label)
+ (let (props)
+  (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+  (when props (elt props 2))))
+
+(defun |htpLabelFilteredInputString| (htPage label)
+ (let (props)
+  (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+  (when props
+    (cond
+     ((and (> (|#| props) 5) (elt props 6))
+       (funcall (symbol-function (elt props 6)) (elt props 0)))
+     (t (|replacePercentByDollar| (elt props 0)))))))
+
+(defun |htpLabelFilter| (htPage label)
+ (let (props)
+  (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+  (when props (elt props 6))))
+
+(defun |htpLabelInputString| (htPage label)
+ (let (props s)
+  (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+  (when (and props (stringp (setq s (elt props 0))))
+    (if (equal s "") s (|trimString| s)))))
+
+(defun |htpLabelSpadType| (htPage label)
+ (let (props)
+  (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+  (when props (elt props 5))))
+
+(defun |htpLabelSpadValue| (htPage label)
+ (let (props)
+  (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+  (when props (elt props 1))))
+
+(defun |htpLabelType| (htPage label)
+ (let (props)
+  (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+  (when props (elt props 3))))
+
+(defun |htpName| (htPage) (elt htPage 0)) 
+
+(defun |htpPageDescription| (htPage)
+ (elt htPage 7)) 
+
+(defun |htpRadioButtonAlist| (htPage) (elt htPage 4)) 
+
+(defun |htpProperty| (htPage propName)
+  (lassoc propName (elt htPage 6)))
+(defun |htpPropertyList| (htPage)
+ (elt htPage 6))
+
+(defun |htProcessBcButtons| (buttons)
+  (prog (defaultValue buttonName k)
+  (declare (special |$curPage|))
+    (return
+      (SEQ (DO ((G166328 buttons (CDR G166328)) (G166317 nil))
+               ((OR (ATOM G166328)
+                    (progn (setq G166317 (car G166328)) nil)
+                    (progn
+                      (progn
+                        (setq defaultValue (car G166317))
+                        (setq buttonName (CADR G166317))
+                        G166317)
+                      nil))
+                nil)
+             (SEQ (EXIT (progn
+                          (cond
+                            ((NULL (LASSOC buttonName
+                                    (|htpInputAreaAlist| |$curPage|)))
+                             (|setUpDefault| buttonName
+                                 (cons '|button|
+                                       (cons defaultValue nil)))))
+                          (setq k
+                                   (|htpLabelDefault| |$curPage|
+                                    buttonName))
+                          (cond
+                            ((EQL k 0)
+                             (|iht| (cons "\\off{"
+                                     (cons buttonName
+                                      (cons "}" nil)))))
+                            ((EQL k 1)
+                             (|iht| (cons "\\on{"
+                                     (cons buttonName
+                                      (cons "}" nil)))))
+                            (t
+                             (|iht| (cons "\\inputbox["
+                                     (cons
+                                      (|htpLabelDefault| |$curPage|
+                                       buttonName)
+                                      (cons "]{"
+                                       (cons buttonName
+                                        (cons
+                                     "}{\\htbmfile{pick}}{\\htbmfile{unpick}}"
+                                         nil))))))))))))))))
+
+(defun |htProcessBcStrings| (strings)
+  (PROG (numChars default stringName spadType filter mess2)
+  (declare (special |$curPage|))
+    (return
+      (SEQ (DO ((g2 strings (CDR g2)) (G166343 nil))
+               ((or (atom g2)
+                    (progn (setq G166343 (CAR g2)) nil)
+                    (progn
+                      (progn
+                        (setq numChars (car G166343))
+                        (setq default (cadr G166343))
+                        (setq stringName (caddr G166343))
+                        (setq spadType (cadddr G166343))
+                        (setq filter (cddddr G166343))
+                        G166343)
+                      nil))
+                nil)
+             (SEQ (EXIT (progn
+                          (setq mess2 "")
+                          (cond
+                            ((null (LASSOC stringName
+                                    (|htpInputAreaAlist| |$curPage|)))
+                             (|setUpDefault| stringName
+                                 (cons '|string|
+                                       (cons default
+                                        (cons spadType
+                                         (cons filter nil)))))))
+                          (cond
+                            ((|htpLabelErrorMsg| |$curPage|
+                                 stringName)
+                             (|iht| (cons
+                                     "\\centerline{{\\em "
+                                     (cons
+                                      (|htpLabelErrorMsg| |$curPage|
+                                       stringName)
+                                      (cons "}}" nil))))
+                             (setq mess2
+                                      (concat mess2 (|bcSadFaces|)))
+                             (|htpSetLabelErrorMsg| |$curPage|
+                                 stringName nil)))
+                          (|iht| (cons "\\inputstring{"
+                                       (cons stringName
+                                        (cons "}{"
+                                         (cons numChars
+                                          (cons "}{"
+                                           (cons
+                                            (|htpLabelDefault|
+                                             |$curPage| stringName)
+                                            (cons "} "
+                                             (cons mess2 nil)))))))))))))))))
+
+(defun |htProcessDoitButton| (arg)
+ (let (label command func fun)
+  (setq label (car arg))
+  (setq command (cadr arg))
+  (setq func (caddr arg))
+  (setq fun (|mkCurryFun| func (cons command nil)))
+  (|iht| "\\newline\\vspace{1}\\centerline{")
+  (|htMakeButton| "\\lispcommand" (concat "\\box{" label "}") fun)
+  (|iht| "} ")
+  (|iht| "\\vspace{2}{Select \\  \\UpButton{} \\  to go back one page.}")
+  (|iht| 
+   "\\newline{Select \\  \\ExitButton{QuitPage} \\  to remove this window.}")))
+
+(defun |htProcessDomainConditions| (condList)
+ (declare (special |$curPage|))
+  (|htpSetDomainConditions| |$curPage| (|renamePatternVariables| condList))
+  (|htpSetDomainVariableAlist| |$curPage| (|computeDomainVariableAlist|)))
+
+(defun |htProcessDoneButton| (arg)
+ (let (label func)
+  (setq label (car arg))
+  (setq func (cadr arg))
+  (|iht| "\\newline\\vspace{1}\\centerline{")
+  (cond
+   ((equal label "Continue")
+     (|htMakeButton| "\\lispdownlink" '|\\ContinueBitmap| func))
+   ((equal label "Push to enter names")
+     (|htMakeButton| "\\lispdownlink" "\\ControlBitmap{clicktoset}" func))
+   (t
+     (|htMakeButton| "\\lispdownlink" (concat "\\box{" label "}") func)))
+  (|iht| "} ")))
+
+(defun |htProcessToggleButtons| (buttons)
+  (prog (message info defaultValue buttonName)
+  (declare (special |$curPage|))
+    (return
+      (SEQ (progn
+             (|iht| "\\newline\\indent{5}\\beginitems ")
+             (DO ((G166302 buttons (CDR G166302))
+                  (G166286 nil))
+                 ((OR (ATOM G166302)
+                      (progn (setq G166286 (car G166302)) nil)
+                      (progn
+                        (progn
+                          (setq message (car G166286))
+                          (setq info (CADR G166286))
+                          (setq defaultValue (CADDR G166286))
+                          (setq buttonName (CADDDR G166286))
+                          G166286)
+                        nil))
+                  nil)
+               (SEQ (EXIT (progn
+                            (cond
+                              ((NULL (LASSOC buttonName
+                                      (|htpInputAreaAlist| |$curPage|)))
+                               (|setUpDefault| buttonName
+                                   (cons '|button|
+                                    (cons defaultValue nil)))))
+                            (|iht| (cons
+                                      "\\item{\\em\\inputbox["
+                                    (cons
+                                     (|htpLabelDefault| |$curPage|
+                                      buttonName)
+                                     (cons "]{"
+                                      (cons buttonName
+                                       (cons
+                           "}{\\htbmfile{pick}}{\\htbmfile{unpick}}\\space{}"
+                                        nil))))))
+                            (|bcIssueHt| message)
+                            (|iht| "\\space{}}")
+                            (|bcIssueHt| info)))))
+             (|iht| "\\enditems\\indent{0} "))))))
+
+(defun |htpSetDomainConditions| (htPage val)
+  (setf (elt htPage 1) val))
+
+(defun |htpSetDomainPvarSubstList| (htPage val)
+  (setf (elt htPage 3) val))
+
+(defun |htpSetDomainVariableAlist| (htPage val)
+  (setf (elt htPage 2) val))
+
+(defun |htpSetInputAreaAlist| (htPage val)
+  (setf (elt htPage 5) val))
+
+(defun |htpSetLabelErrorMsg| (htPage label val)
+ (let (props)
+  (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+  (when props (setf (elt props 2) val))))
+
+(defun |htpSetLabelInputString| (htPage label val)
+ (let (props)
+  (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+  (when props (setf (elt props 0) (princ-to-string val)))))
+
+(defun |htpSetLabelSpadValue| (htPage label val)
+ (let (props)
+  (setq props (lassoc label (|htpInputAreaAlist| htPage)))
+  (when props (setf (elt props 1) val))))
+
+(defun |htpSetName| (htPage val) (setf (elt htPage 0) val)) 
+
+(defun |htpSetPageDescription| (htPage pageDescription)
+  (setf (elt htPage 7) pageDescription))
+
+(defun |htpSetProperty| (htPage propName val)
+ (let (pair)
+  (setq pair (|assoc| propName (elt htPage 6)))
+  (cond
+   (pair (rplacd pair val))
+   (t (setf (elt htPage 6) (cons (cons propName val) (elt htPage 6)))))))
+
+(defun |htpSetRadioButtonAlist| (htPage val)
+  (setf (elt htPage 4) val))
+
+(defun |htQuote| (s)
+  (|iht| "\"")
+  (|iht| s)
+  (|iht| "\""))
+
+(defun |htRadioButtons| (G166546)
+  (prog (groupName buttons boxesName message info buttonName defaultValue)
+  (declare (special |$curPage|))
+    (return
+      (SEQ (progn
+             (setq groupName (car G166546))
+             (setq buttons (cdr G166546))
+             (|htpSetRadioButtonAlist| |$curPage|
+                 (cons (cons groupName (|buttonNames| buttons))
+                       (|htpRadioButtonAlist| |$curPage|)))
+             (setq boxesName (gentemp))
+             (|iht| (cons "\\newline\\indent{5}\\radioboxes{"
+                     (cons boxesName
+                      (cons
+                        "}{\\htbmfile{pick}}{\\htbmfile{unpick}}\\beginitems "
+                                      nil))))
+             (setq defaultValue "1")
+             (DO ((G166568 buttons (cdr G166568))
+                  (G166540 nil))
+                 ((or (atom G166568)
+                      (progn (setq G166540 (car G166568)) nil)
+                      (progn
+                        (progn
+                          (setq message (car G166540))
+                          (setq info (cadr G166540))
+                          (setq buttonName (caddr G166540))
+                          G166540)
+                        nil))
+                  nil)
+               (SEQ (EXIT (progn
+                            (cond
+                              ((null (LASSOC buttonName
+                                      (|htpInputAreaAlist| |$curPage|)))
+                               (|setUpDefault| buttonName
+                                   (cons '|button|
+                                    (cons defaultValue nil)))
+                               (setq defaultValue
+                                        "0")))
+                            (|iht| (cons "\\item{\\em\\radiobox["
+                                    (cons
+                                     (|htpLabelDefault| |$curPage|
+                                      buttonName)
+                                     (cons "]{"
+                                      (cons buttonName
+                                       (cons "}{"
+                                        (cons boxesName
+                                         (cons
+                                          "}\\space{}"
+                                          nil))))))))
+                            (|bcIssueHt| message)
+                            (|iht| "\\space{}}")
+                            (|bcIssueHt| info)))))
+             (|iht| "\\enditems\\indent{0} "))))))
+
+(defun |htSay| (&rest args)
+  (|bcHt| (car args))
+  (loop for y in (cdr args) do (|bcHt| y)))
+
+(defun |htSayBind| (x options)
+ (|bcHt| x)
+ (loop for y in options do (|bcHt| y)))
+
+(defun |htSetCache| (&REST arg &AUX options htPage)
+ (declare (special |$valueList| |$path|))
+ (setq htPage (car arg))
+ (setq options (cdr arg))
+ (setq |$path| '(|functions| |cache|))
+ (setq htPage (|htInitPage| (|mkSetTitle|) nil))
+ (setq |$valueList| nil)
+ (|htMakePage|
+  '((|text| 
+    "Use this system command to cause the AXIOM interpreter to `remember' "
+    "past values of interpreter functions. "
+    "To remember a past value of a function, the interpreter "
+    "sets up a {\\em cache} for that function based on argument values. "
+    "When a value is cached for a given argument value, its value is gotten "
+    "from the cache and not recomputed. Caching can often save much "
+    "computing time, particularly with recursive functions or functions that "
+    "are expensive to compute and that are called repeatedly "
+    "with the same argument." "\\vspace{1}\\newline ")
+    (|domainConditions| (|Satisfies| S chkNameList))
+    (|text| 
+"Enter below a list of interpreter functions you would like specially cached. "
+    "Use the name {\\em all} to give a default setting for all "
+    "interpreter functions. " "\\vspace{1}\\newline "
+    "Enter {\\em all} or a list of names (separate names by blanks):")
+     (|inputStrings| ("" "" 60 "all" names S))
+     (|doneButton| "Push to enter names" |htCacheAddChoice|)))
+ (|htShowPage|))
+
+(defun |htSetExpose| (htPage)
+  (|htSetNotAvailable| htPage ")set expose"))
+
+(defun |htSetFunCommandContinue| (htPage value)
+ (let (parts continue)
+  (setq parts (|htpProperty| htPage '|parts|))
+  (setq continue
+   (cond
+    ((null parts) nil)
+    ((and (consp parts)
+          (consp (qcar parts)) (eq (qcaar parts) '|break|)
+          (consp (qcdar parts)) (eq (qcddar parts) nil))
+       (|eval| (qcadar parts)))
+    (t t)))
+  (cond
+   (continue 
+    (|htpSetProperty| htPage '|parts| (qcdr parts))
+      (|htShowFunctionPageContinued| htPage))
+   (t (|htKill| htPage value)))))
+
+(defun |htSetFunCommand| (htPage)
+ (let (variable checker value)
+  (setq variable (|htpProperty| htPage '|variable|))
+  (setq checker (|htpProperty| htPage '|checker|))
+  (setq value (|htCheck| checker (|htpLabelInputString| htPage '|value|)))
+  (set variable value)
+  (|htSetFunCommandContinue| htPage value)))
+
+(defun |htSetHistory| (htPage)
+ (let (msg data)
+  (setq msg
+ '|when the history facility is on (yes), results of computations are saved in memory|)
+  (setq data
+    (list '|history| msg '|history| 'literals '|$HiFiAccess| 
+           '(|on| |off| |yes| |no|)))
+  (|htShowLiteralsPage| htPage data)))
+
+(defun |htSetInputLibrary| (htPage)
+  (|htSetNotAvailable| htPage ")set compiler input"))
+
+(defun |htSetInteger| (htPage)
+  (prog (val)
+    (return
+      (progn
+        (|htInitPage| (|mkSetTitle|) nil)
+        (setq val
+                 (|chkRange| (|htpLabelInputString| htPage '|value|)))
+        (cond
+          ((null (integerp val))
+           (|errorPage| htPage
+               (cons "Value Error"
+                     (cons nil
+                           (cons "\\vspace{3}\\centerline{{\\em "
+                                 (cons val
+                                       (cons
+ "}}\\vspace{2}\\newline\\centerline{Click on \\UpBitmap{} to re-enter value}"
+                                        nil)))))))
+          (t (set (|htpProperty| htPage '|variable|) val)
+           (|htKill| htPage val)))))))
+
+(defun |htSetLinkerArgs| (htPage)
+  (|htSetNotAvailable| htPage ")set fortran calling linker"))
+
+(defun |htSetLiterals| (htPage name message variable values functionToCall)
+  (prog (page links)
+    (return
+      (SEQ (progn
+             (setq page
+                      (|htInitPage| "Set Command"
+                          (|htpPropertyList| htPage)))
+             (|htpSetProperty| page '|variable| variable)
+             (|bcHt| (cons "\\centerline{Set {\\em "
+                           (cons name
+                                 (cons "}}\\newline" nil))))
+             (|bcHt| (cons "{\\em Description: } "
+                           (cons message
+                                 (cons "\\newline\\vspace{1} "
+                                       nil))))
+             (|bcHt| "Select one of the following: \\newline\\tab{3} ")
+             (setq links
+                      (prog (g2)
+                        (setq g2 nil)
+                        (return
+                          (DO ((G167465 values (cdr G167465))
+                               (opt nil))
+                              ((or (atom G167465)
+                                   (progn
+                                     (setq opt (car G167465))
+                                     nil))
+                               (NREVERSE0 g2))
+                            (SEQ (EXIT (setq g2
+                                        (cons
+                                         (cons
+                                          (CONCAT ""
+                                           (PRINC-TO-STRING opt))
+                                          (cons "\\newline\\tab{3}"
+                                           (cons functionToCall
+                                            (cons opt nil))))
+                                         g2))))))))
+             (|htMakePage| (cons (cons '|bcLispLinks| links) nil))
+             (|bcHt| 
+              (cons 
+              '|\\indent{0}\\newline\\vspace{1} The current setting is: {\\em |
+                           (cons (|translateTrueFalse2YesNo|
+                                     (eval variable))
+                                 (cons "} " nil))))
+             (|htShowPage|))))))
+
+(defun |htSetLiteral| (htPage val)
+  (|htInitPage| "Set Command" nil)
+  (set (|htpProperty| htPage '|variable|) (|translateYesNo2TrueFalse| val))
+  (|htKill| htPage val))
+
+(defun |htSetNotAvailable| (htPage whatToType)
+ (let (page string)
+  (setq page
+    (|htInitPage| "Unavailable Set Command" (|htpPropertyList| htPage)))
+    (|htInitPage| "Unavailable System Command" nil)
+    (setq string (concat "{\\em " whatToType "}"))
+    (|htMakePage|
+            (cons '(|text| "\\vspace{1}\\newline"
+ "{Sorry, but this system command is not available through HyperDoc. Please directly issue this command in an AXIOM window for more information:}"
+                           "\\vspace{2}\\newline\\centerline{\\tt")
+                  (cons (cons '|text| string) nil)))
+    (|htMakePage| '((|text| . "}\\vspace{1}\\newline")))
+    (|htProcessDoitButton| (list "Press to Remove Page" "" '|htDoNothing| ))
+    (|htShowPage|)))
+
+(defun |htSetOutputCharacters| (htPage)
+  (|htSetNotAvailable| htPage ")set output characters"))
+
+(defun |htSetOutputLibrary| (htPage)
+  (|htSetNotAvailable| htPage ")set compiler output"))
+
+(defun |htSetSystemVariableKind| (htPage arg)
+ (let (variable name fun value)
+  (setq variable (car arg))
+  (setq name (cadr arg))
+  (setq fun (caddr arg))
+  (setq value (|htpLabelInputString| htPage name))
+  (when (and (stringp value) fun) (setq value (funcall fun value)))
+  (set variable value)
+  (|htSystemVariables|)))
+
+(defun |htSetSystemVariable| (htPage arg)
+ (declare (ignore htPage))
+ (let (name value)
+   (setq name (car arg))
+   (setq value (cadr arg))
+   (setq value
+    (cond
+     ((eq value '|on|) t)
+     ((eq value '|off|) nil)
+     (t value)))
+   (set name value)
+   (|htSystemVariables|)))
+
+(defun |htSetVars| ()
+ (declare (special |$setOptions| |$lastTree| |$path|))
+  (setq |$path| nil)
+  (setq |$lastTree| nil)
+  (when (nequal 0 (lastatom |$setOptions|)) (|htMarkTree| |$setOptions| 0))
+  (|htShowSetTree| |$setOptions|))
+
+(defun |htSetvarDoneButton| (message func)
+  (progn
+    (|bcHt| "\\newline\\vspace{1}\\centerline{")
+    (cond
+      ((OR (equal message "Select to Set Value")
+           (equal message "Select to Set Values"))
+       (|bchtMakeButton| "\\lisplink"
+           "\\ControlBitmap{clicktoset}" func))
+      (t
+       (|bchtMakeButton| "\\lisplink"
+           (CONCAT "\\fbox{" message "}")
+           func)))
+    (|bcHt| "} ")))
+
+(defun |htShowCount| (s)
+  (prog (m i count)
+    (return
+      (SEQ (progn
+             (setq m (|#| s))
+             (cond
+               ((> 8 m) (- m 1))
+               (t (setq i 0) (setq count 0)
+                (DO () ((NULL (> (- m 7) i)) nil)
+                  (SEQ (EXIT (cond
+                               ((and (equal (elt s i) #\{)
+                                     (equal (elt s (1+ i)) #\\)
+                                     (equal (elt s (+ i 2)) #\e)
+                                     (equal (elt s (+ i 3)) #\m))
+                                (setq i (+ i 6)))
+                               (t (setq i (1+ i))
+                                (setq count (1+ count)))))))
+                (+ count (- m i)))))))))
+
+(defun |htShowFunctionPageContinued| (htPage)
+  (prog (parts setData phrase kind variable checker
+         initValue restParts page currentValue)
+    (return
+      (progn
+        (setq parts (|htpProperty| htPage '|parts|))
+        (setq setData (|htpProperty| htPage '|setData|))
+        (setq phrase (caar parts))
+        (setq kind (cadar parts))
+        (setq variable (caddar parts))
+        (setq checker (car (cdddar parts)))
+        (setq initValue (cadr (cdddar parts)))
+        (setq restParts (cdr parts))
+        (|htpSetProperty| htPage '|variable| variable)
+        (|htpSetProperty| htPage '|checker| checker)
+        (|htpSetProperty| htPage '|parts| restParts)
+        (cond
+          ((eq kind 'literals)
+           (|htSetLiterals| htPage (elt setData 0) phrase
+               variable checker '|htFunctionSetLiteral|))
+          (t
+           (setq page
+                    (|htInitPage| (|mkSetTitle|)
+                        (|htpPropertyList| htPage)))
+           (|bcHt| (cons "\\centerline{Set {\\em "
+                         (cons (elt setData 0)
+                               (cons "}}\\newline" nil))))
+           (|bcHt| (cons "{\\em Description: } "
+                         (cons (elt setData 1)
+                               (cons "\\newline\\vspace{1} "
+                                     nil))))
+           (setq currentValue (eval variable))
+           (|htMakePage|
+               (cons (cons '|domainConditions|
+                           (cons (cons '|Satisfies|
+                                       (cons 'S (cons checker nil)))
+                                 nil))
+                     (cons (cons '|text| phrase)
+                           (cons (cons '|inputStrings|
+                                       (cons
+                                        (cons ""
+                                         (cons ""
+                                          (cons 60
+                                           (cons currentValue
+                                            (cons '|value|
+                                             (cons 'S nil))))))
+                                        nil))
+                                 nil))))
+           (|htSetvarDoneButton| "Select To Set Value" '|htSetFunCommand|)
+           (|htShowPage|)))))))
+
+(defun |htShowFunctionPage| (htPage setData)
+  (prog (fn)
+    (return
+      (cond
+        ((setq fn (elt setData 6)) (funcall fn htPage))
+        (t (|htpSetProperty| htPage '|setData| setData)
+         (|htpSetProperty| htPage '|parts| (elt setData 5))
+         (|htShowFunctionPageContinued| htPage))))))
+
+(defun |htShowIntegerPage| (htPage setData)
+  (prog (page message t1)
+  (declare (special |$htFinal| |$htInitial|))
+    (return
+      (progn
+        (setq page
+                 (|htInitPage| (|mkSetTitle|)
+                     (|htpPropertyList| htPage)))
+        (|htpSetProperty| page '|variable| (elt setData 4))
+        (|bcHt| (list "\\centerline{Set {\\em " (elt setData 0) "}}\\newline"))
+        (setq message (elt setData 1))
+        (|bcHt| (list "{\\em Description: } " message "\\newline\\vspace{1} "))
+        (setq t1 (elt setData 5))
+        (setq |$htInitial| (car t1))
+        (setq |$htFinal| (cadr t1))
+        (cond
+          ((equal |$htFinal| (+ |$htInitial| 1))
+           (|bcHt| "Enter the integer {\\em ")
+           (|bcHt| (|stringize| |$htInitial|))
+           (|bcHt| "} or {\\em ")
+           (|bcHt| (|stringize| |$htFinal|))
+           (|bcHt| "}:"))
+          ((null |$htFinal|)
+           (|bcHt| "Enter an integer greater than {\\em ")
+           (|bcHt| (|stringize| (- |$htInitial| 1)))
+           (|bcHt| "}:"))
+          (t (|bcHt| "Enter an integer between {\\em ")
+           (|bcHt| (|stringize| |$htInitial|))
+           (|bcHt| "} and {\\em ")
+           (|bcHt| (|stringize| |$htFinal|))
+           (|bcHt| "}:")))
+        (|htMakePage|
+            (cons '(|domainConditions| (|Satisfies| S chkRange))
+                  (cons (cons '|bcStrings|
+                     (list (list 5 (|eval| (elt setData 4)) '|value|  'S)))
+                        nil)))
+        (|htSetvarDoneButton| "Select to Set Value" '|htSetInteger|)
+        (|htShowPage|)))))
+
+(defun |htShowLiteralsPage| (htPage setData)
+  (|htSetLiterals| htPage (elt setData 0) (elt setData 1)
+      (elt setData 4) (elt setData 5) '|htSetLiteral|))
+
+(defun |htShowPage| ()
+  (|htSayStandard| "\\endscroll")
+  (|htShowPageNoScroll|))
+
+(defun |htShowPageNoScroll| ()
+ (let (line)
+ (declare (special |$htLineList| |$curPage| |$newPage|))
+   (|htSayStandard| "\\autobuttons")
+   (|htpSetPageDescription| |$curPage|
+     (nreverse (|htpPageDescription| |$curPage|)))
+   (setq |$newPage| nil)
+   (setq |$htLineList| nil)
+   (|htMakePage| (|htpPageDescription| |$curPage|))
+   (setq line (apply #'concat (nreverse |$htLineList|)))
+   (|issueHT| line)
+   (|endHTPage|)))
+
+(defun |htShowSetPage| (htPage branch)
+ (let (setTree setData st)
+ (declare (special |$path|))
+  (setq setTree (|htpProperty| htPage '|setTree|))
+  (setq |$path| (cons branch (take (- (lastatom setTree)) |$path|)))
+  (setq setData (|assoc| branch setTree))
+  (cond
+    ((null setData) (|systemError| "No Set Data"))
+    (t (setq st (elt setData 3))
+       (cond
+         ((eq st 'function) (|htShowFunctionPage| htPage setData))
+         ((eq st 'integer)  (|htShowIntegerPage| htPage setData))
+         ((eq st 'literals) (|htShowLiteralsPage| htPage setData))
+         ((eq st 'tree)     (|htShowSetTree| (elt setData 5)))
+         ((eq st 'string)   (|htSetNotAvailable| htPage ")set compiler"))
+         (t                 (|systemError| "Unknown data type")))))))
+
+(defun |htShowSetTreeValue| (setData)
+ (let (st)
+  (setq st (elt setData 3))
+  (cond
+   ((eq st 'function)
+     (|object2String| (funcall (elt setData 4) '|%display%|)))
+   ((eq st 'integer)
+     (|object2String| (|eval| (elt setData 4))))
+   ((eq st 'string)
+     (|object2String| (|eval| (elt setData 4))))
+   ((eq st 'literals)
+     (|object2String| (|translateTrueFalse2YesNo| (|eval| (elt setData 4)))))
+   ((eq st 'tree) "...")
+   (t (|systemError|)))))
+
+(defun |htShowSetTree| (setTree)
+  (prog (page okList maxWidth1 maxWidth2 tabset1 tabset2 label links)
+  (declare (special |$path|))
+    (return
+      (SEQ (progn
+             (setq |$path|
+                      (TAKE (- (LASTATOM setTree))
+                            |$path|))
+             (setq page (|htInitPage| (|mkSetTitle|) nil))
+             (|htpSetProperty| page '|setTree| setTree)
+             (setq links nil)
+             (setq maxWidth1 (setq maxWidth2 0))
+             (SEQ (DO ((G167379 setTree (cdr G167379))
+                       (setData nil))
+                      ((or (atom G167379)
+                           (progn
+                             (setq setData (car G167379))
+                             nil))
+                       nil)
+                    (SEQ (EXIT (cond
+                                 ((|satisfiesUserLevel|
+                                      (elt setData 2))
+                                  (EXIT (progn
+                                          (setq okList
+                                           (cons setData okList))
+                                          (setq maxWidth1
+                                           (max
+                                            (|#|
+                                             (PNAME (elt setData 0)))
+                                            maxWidth1))
+                                          (setq maxWidth2
+                                           (max
+                                            (|htShowCount|
+                                             (PRINC-TO-STRING
+                                              (elt setData 1)))
+                                            maxWidth2)))))))))
+                  (setq maxWidth1 (max 9 maxWidth1))
+                  (setq maxWidth2 (max 41 maxWidth2))
+                  (setq tabset1 (PRINC-TO-STRING maxWidth1))
+                  (setq tabset2
+                           (PRINC-TO-STRING
+                               (-
+                                   (+ maxWidth2 maxWidth1) 1)))
+                  (|htSay| "\\tab{2}\\newline Variable\\tab{"
+                           (PRINC-TO-STRING
+                               (+ maxWidth1
+                                     (quotient maxWidth2 3)))
+                           "}Description\\tab{"
+                           (PRINC-TO-STRING
+                               (+ (+ maxWidth2 maxWidth1) 2))
+                           "}Value\\newline\\beginitems ")
+                  (DO ((G167392 (reverse okList) (CDR G167392))
+                       (setData nil))
+                      ((or (atom G167392)
+                           (progn
+                             (setq setData (car G167392))
+                             nil))
+                       nil)
+                    (SEQ (EXIT (progn
+                                 (|htSay| "\\item")
+                                 (setq label
+                                          (CONCAT "\\menuitemstyle{"
+                                           (elt setData 0)
+                                           "}"))
+                                 (setq links
+                                          (cons label
+                                           (cons
+                                            (cons
+                                             (cons '|text|
+                                              (cons
+                                               "\\tab{"
+                                               (cons tabset1
+                                                (cons "}"
+                                                 (cons
+                                                  (elt setData 1)
+                                                  (cons "\\tab{"
+                                                   (cons tabset2
+                                                    (cons "}{\\em "
+                                                     (cons
+                                                      (|htShowSetTreeValue|
+                                                       setData)
+                                                      (cons
+                                                       "}"
+                                                       nil))))))))))
+                                             nil)
+                                            (cons '|htShowSetPage|
+                                             (cons (elt setData 0)
+                                              nil)))))
+                                 (|htMakePage|
+                                     (cons
+                                      (cons '|bcLispLinks|
+                                       (cons links
+                                        (cons '|options|
+                                         (cons '(|indent| . 0) nil))))
+                                      nil))))))
+                  (|htSay| "\\enditems") (|htShowPage|)))))))
+
+(defun |htStringPad| (n w)
+ (let (s ws)
+  (setq s (princ-to-string n))
+  (setq ws (|#| s))
+  (concat "\\space{" (princ-to-string (1+ (- w ws))) "}" s)))
+
+(defun |htsv| ()
+ (|startHTPage| 50)
+ (|htSetVars|))
+
+(defun |htSystemVariables,displayOptions| (name class variable val options)
+  (SEQ (if (eq class 'integer)
+           (EXIT (SEQ (|htMakePage|
+                          (cons (cons '|bcLispLinks|
+                                      (cons
+                                       (cons
+                                        (cons
+                                         (cons '|text|
+                                          (cons (elt options 0)
+                                           (cons "-"
+                                            (cons
+                                             (or (elt options 1)
+                                              "")
+                                             nil))))
+                                         nil)
+                                        (cons ""
+                                         (cons
+                                          '|htSetSystemVariableKind|
+                                          (cons
+                                           (cons variable
+                                            (cons name
+                                             (cons 'parse-integer nil)))
+                                           nil))))
+                                       nil))
+                                nil))
+                      (|htMakePage|
+                          '((|domainConditions|
+                                (|isDomain| INT (|Integer|)))))
+                      (EXIT (|htMakePage|
+       (list 
+         (cons '|bcStrings| (list (list 5 (princ-to-string val) name 'int)))))))))
+       (if (eq class 'string)
+           (EXIT (|htSay| "{\\em " val
+                          "}\\space{1}")))
+       (EXIT (DO ((G167913 options (cdr G167913)) (x nil))
+                 ((or (atom G167913)
+                      (progn (setq x (car G167913)) nil))
+                  nil)
+               (SEQ (if (or (or (equal val x)
+                                (and (eq val t)
+                                     (eq x '|on|)))
+                            (and (null val) (eq x '|off|)))
+                        (EXIT (|htSay| "{\\em " x
+                                       "}\\space{1}")))
+                    (EXIT (|htMakePage|
+                              (cons (cons '|bcLispLinks|
+                                     (cons
+                                      (cons x
+                                       (cons " "
+                                        (cons '|htSetSystemVariable|
+                                         (cons
+                                          (cons variable
+                                           (cons x nil))
+                                          nil))))
+                                      nil))
+                                    nil))))))))
+
+(defun |htSystemVariables,fn| (t1 al firstTime)
+  (declare (special |$heading|))
+  (SEQ (if (atom t1) (EXIT al))
+       (if firstTime (setq |$heading| (|opOf| (car t1))) nil)
+       (EXIT (|htSystemVariables,fn| (cdr t1)
+                 (|htSystemVariables,gn| (car t1) al) firstTime))))
+
+(defun |htSystemVariables,functionTail| (name class var valuesOrFunction)
+  (prog (val)
+    (return
+      (SEQ (setq val (|eval| var))
+           (if (atom valuesOrFunction)
+               (EXIT (SEQ (|htMakePage|
+                              '((|domainConditions|
+                                    (|isDomain| STR (|String|)))))
+                          (|htMakePage|
+                              (cons (cons '|bcLinks|
+                                     (cons
+                                      (cons "reset"
+                                       (cons ""
+                                        (cons
+                                         '|htSetSystemVariableKind|
+                                         (cons
+                                          (cons var
+                                           (cons name (cons nil nil)))
+                                          nil))))
+                                      nil))
+                                    nil))
+                          (EXIT (|htMakePage|
+                                    (cons
+                                     (cons '|bcStrings|
+                                      (cons
+                                       (cons 30
+                                        (cons (PRINC-TO-STRING val)
+                                         (cons name
+                                          (cons valuesOrFunction nil))))
+                                       nil))
+                                     nil))))))
+           (EXIT (|htSystemVariables,displayOptions| name class
+                     var val valuesOrFunction))))))
+
+(defun |htSystemVariables,gn| (t1 al)
+ (let (class key options)
+ (declare (special |$heading| |$levels|))
+   (setq class (caddr t1))
+   (setq key (cadddr t1))
+   (setq options (cadr (cddddr t1)))
+   (cond
+    ((null (member class |$levels|)) al)
+    ((or (or (eq key 'literals) (eq key 'integer))
+         (eq key 'string))
+      (cons (cons |$heading| t1) al))
+    ((eq key 'tree)
+      (|htSystemVariables,fn| options al nil))
+    ((eq key 'function)
+      (cons (cons |$heading| t1) al))
+    (t (|systemError| key)))))
+
+(defun |htSystemVariables| ()
+  (prog (|$levels| |$heading| classlevel table heading name
+         message key variable options func lastHeading
+         t1 msg class var valuesOrFunction val)
+    (DECLARE (SPECIAL |$levels| |$heading| |$setOptions| |$UserLevel|
+                      |$fullScreenSysVars|))
+    (return
+      (SEQ (cond
+             ((null |$fullScreenSysVars|) (|htSetVars|))
+             (t (setq classlevel |$UserLevel|)
+              (setq |$levels| '(|compiler| |development| |interpreter|))
+              (setq |$heading| nil)
+              (DO () ((NULL (NEQUAL classlevel (car |$levels|))) nil)
+                (SEQ (EXIT (setq |$levels| (cdr |$levels|)))))
+              (setq table
+                       (NREVERSE
+                           (|htSystemVariables,fn| |$setOptions| nil
+                               t)))
+              (|htInitPage| "System Variables" nil)
+              (|htSay| "\\beginmenu")
+              (setq lastHeading nil)
+              (DO ((G167961 table (cdr G167961)) (G167879 nil))
+                  ((or (atom G167961)
+                       (progn (setq G167879 (car G167961)) nil)
+                       (progn
+                         (progn
+                           (setq heading (car G167879))
+                           (setq name (cadr G167879))
+                           (setq message (caddr G167879))
+                           (setq key (car (cddddr G167879)))
+                           (setq variable (cadr (cddddr G167879)))
+                           (setq options (caddr (cddddr G167879)))
+                           (setq func (cadddr (cddddr G167879)))
+                           G167879)
+                         nil))
+                   nil)
+                (SEQ (EXIT (progn
+                             (|htSay| "\\newline\\item ")
+                             (cond
+                               ((equal heading lastHeading)
+                                (|htSay| "\\tab{8}"))
+                               (t
+                                (|htSay| heading
+                                         "\\tab{8}")
+                                (setq lastHeading heading)))
+                             (|htSay| "{\\em " name
+                                      '|}\\tab{22}| message)
+                             (|htSay| "\\tab{80}")
+                             (cond
+                               ((eq key 'function)
+                                (cond
+                                  ((null options)
+                                   (|htMakePage|
+                                    (cons
+                                     (cons '|bcLinks|
+                                      (cons
+                                       (cons "reset"
+                                        (cons ""
+                                         (cons func (cons nil nil))))
+                                       nil))
+                                     nil)))
+                                  (t
+                                   (setq t1 (car options))
+                                   (setq msg (car t1))
+                                   (setq class (cadr t1))
+                                   (setq var (caddr t1))
+                                   (setq valuesOrFunction (cadddr t1))
+                                   (|htSystemVariables,functionTail|
+                                    name class var valuesOrFunction)
+                                   (DO
+                                    ((G167971 (cdr options)
+                                      (cdr G167971))
+                                     (option nil))
+                                    ((or (atom G167971)
+                                      (progn
+                                        (setq option (car G167971))
+                                        nil))
+                                     nil)
+                                     (SEQ
+                                      (EXIT
+                                       (cond
+                                         ((and (consp option)
+                                           (eq (QCAR option)
+                                            '|break|))
+                                          '|skip|)
+                                         (t
+                                          (setq msg (car option))
+                                          (setq class (cadr option))
+                                          (setq var (caddr option))
+                                          (setq valuesOrFunction 
+                                            (cadddr option))
+                                          (|htSay| "\\newline\\tab{22}"
+                                           msg
+                                           "\\tab{80}")
+                                          (|htSystemVariables,functionTail|
+                                           name class var
+                                           valuesOrFunction)))))))))
+                               (t (setq val (|eval| variable))
+                                (|htSystemVariables,displayOptions|
+                                    name key variable val options)))))))
+              (|htSay| "\\endmenu") (|htShowPage|)))))))
+
+(defun |htTextSearch| (filter)
+  (prog (s lines matches nonmatches)
+    (return
+      (SEQ (progn
+             (setq s
+                      (|pmTransFilter| (|dbNonEmptyPattern| filter)))
+             (cond
+               ((and (consp s) (eq (QCAR s) '|error|))
+                (|bcErrorPage| s))
+               ((null s)
+                (|errorPage| nil
+                    (cons (cons "Missing search string"
+                                nil)
+                          (cons nil
+                                (cons
+       "\\vspace{2}\\centerline{To select one of the lines of text:}\\newline "
+                                      (cons
+  "\\centerline{{\\em first} enter a search key into the input area}\\newline "
+                                       (cons
+  "\\centerline{{\\em then } move the mouse cursor to the work {\\em search} and click}"
+                                        nil)))))))
+               (t (setq filter s)
+                (setq lines
+                         (cons
+             "{{\\em Fruit flies} *like* a {\\em banana and califlower ears.}}"
+                               (cons
+                               "{{\\em Sneak Sears Silas with Savings Snatch}}"
+                                     nil)))
+                (DO ((G168191 lines (cdr G168191)) (x nil))
+                    ((or (atom G168191)
+                         (progn (setq x (car G168191)) nil))
+                     nil)
+                  (SEQ (EXIT (cond
+                               ((|superMatch?| filter x)
+                                (setq matches
+                                         (cons x matches)))
+                               (t
+                                (setq nonmatches
+                                         (cons x nonmatches)))))))
+                (setq matches (NREVERSE matches))
+                (setq nonmatches (NREVERSE nonmatches))
+                (|htInitPage| "Text Matches" nil)
+                (cond
+                  ((null matches)
+                   (|htInitPage|
+                       (cons "Lines matching search string {\\em "
+                             (cons s (cons "}" nil)))
+                       nil)
+                   (|htSay| 
+'|\\vspace{2}\\centerline{Sorry, but no lines match your search string}\\centerline{{\\em |
+                            s
+                         '|}}\\centerline{Click on the up-arrow to try again}|)
+                   (|htShowPage|))
+                  (t
+                   (|htInitPage|
+                       (cons "Lines matching search string {\\em "
+                             (cons s (cons "}" nil)))
+                       nil)
+                   (cond
+                     (nonmatches
+                         (|htSay| "The lines that {\\em match} your search string {\\em "
+                                  s "}:"))
+                     (t
+                      (|htSay| "Your search string {\\em "
+                               s '|} matches both lines:|)))
+                   (|htSay| "{\\em \\table{")
+                   (DO ((G168200 matches (CDR G168200))
+                        (x nil))
+                       ((or (atom G168200)
+                            (progn (setq x (car G168200)) nil))
+                        nil)
+                     (SEQ (EXIT (|htSay| "{" x
+                                         "}"))))
+                   (|htSay| "}}\\vspace{1}")
+                   (cond
+                     (nonmatches
+                         (|htSay|
+       "The line that {\\em does not match} your search string:{\\em \\table{")
+                         (DO ((G168209 nonmatches (cdr G168209))
+                              (x nil))
+                             ((or (atom G168209)
+                                  (progn
+                                    (setq x (car G168209))
+                                    nil))
+                              nil)
+                           (SEQ (EXIT (|htSay| "{" x
+                                       "}"))))
+                         (|htSay| "}}")))
+                   (|htShowPage|))))))))))
+
+(defun |htTutorialSearch| (pattern)
+  (prog (s source target lines t1 name title)
+    (return
+      (SEQ (progn
+             (setq s
+                      (or (|dbNonEmptyPattern| pattern)
+                          (return
+                            (|errorPage| nil
+                                (cons "Empty search key"
+                                      (cons nil
+                                       (cons
+ "\\vspace{3}\\centerline{You must enter some search string"
+                                        nil)))))))
+             (setq s (|mkUnixPattern| s))
+             (setq source "$AXIOM/doc/hypertex/pages/ht.db")
+             (setq target "/tmp/temp.text.$SPADNUM")
+             (OBEY (CONCAT "$AXIOM/lib/hthits"
+                            " \"" s "\" "
+                            source " > " target))
+             (setq lines (|dbReadLines| '|temp|))
+             (|htInitPageNoScroll| nil
+                 (cons "Tutorial Pages mentioning {\\em "
+                       (cons pattern (cons "}" nil))))
+             (|htSay| "\\beginscroll\\table{")
+             (DO ((G168241 lines (cdr G168241)) (line nil))
+                 ((or (atom G168241)
+                      (progn (setq line (car G168241)) nil))
+                  nil)
+               (SEQ (EXIT (progn
+                            (setq t1 (|dbParts| line 3 0))
+                            (setq name (car t1))
+                            (setq title (cadr t1))
+                            (|htSay| (cons "{\\downlink{"
+                                      (cons title
+                                       (cons "}{"
+                                        (cons name
+                                         (cons "}}" nil))))))))))
+             (|htSay| "}")
+             (|htShowPage|))))))
+
+
+(defun |If?| (|st|)
+ "used in incLude1 for parsing"
+ (eql (quotient |st| 10) 1))
+
+(defun |ifCond| (s info)
+ (let (word)
+ (declare (special |$inclAssertions|))
+  (setq word 
+   (|MakeSymbol| (string-trim *whitespace* (|incCommandTail| s info))))
+  (member word |$inclAssertions|)))
+
+(defun |iht| (line)
+  (declare (special |$htLineList| |$newPage|))
+  (cond
+    (|$newPage| nil)
+    ((consp line)
+     (setq |$htLineList|
+       (nconc (nreverse (|mapStringize| (copy-list line))) |$htLineList|)))
+    (t
+     (setq |$htLineList| (cons (|basicStringize| line) |$htLineList|)))))
+
+(defun |importFromFrame| (args)
+ "Import items from another frame"
+ (prog (temp1 fname fenv x v props vars plist prop val m)
+ (declare (special |$interpreterFrameRing|))
+  (when (and args (atom args)) (setq args (cons args nil))) 
+  (if (null args)
+   (|throwKeyedMsg|
+    (format nil ")frame import must be followed by the frame name. The names~
+     of objects in that frame can then optionally follow the frame name.~
+     For example,~
+     %ceon )frame import calculus %ceoff ~
+     imports all objects in the calculus frame, and ~
+     %ceon )frame import calculus epsilon delta %ceoff ~
+     imports the objects named epsilon and delta from the ~
+     frame calculus. ~
+     Please note that if the current frame contained any information ~
+     about objects with these names, then that information would be ~
+     cleared before the import took place.")
+    nil)
+   (progn
+     (setq temp1 args)
+     (setq fname (car temp1))
+     (setq args (cdr temp1))
+     (cond
+      ((null (|member| fname (|frameNames|)))
+        (|throwKeyedMsg| 
+         (format nil " You cannot import anything from the frame %1 because ~
+                       that is not the name of an existing frame.")
+         (cons fname nil))) 
+      ((boot-equal fname (frameName (car |$interpreterFrameRing|)))
+        (|throwKeyedMsg| 
+         "You cannot import from the current frame (nor is there a need!)."
+         nil))
+      (t
+        (setq fenv (|frameEnvironment| fname))
+        (cond
+         ((null args)
+           (setq x
+             (upcase (|queryUserKeyedMsg|
+              (format nil "Do you really want to import everything from the ~
+                           frame %1? If so, please enter y or yes :")
+              (cons fname nil))))
+           (cond
+            ((member (string2id-n x 1) '(y yes))
+              (setq vars nil)
+              (do ((tmp0 (caar fenv) (cdr tmp0)) (tmp1 nil))
+                  ((or (atom tmp0) 
+                       (progn (setq tmp1 (car tmp0)) nil)
+                       (progn 
+                        (progn 
+                         (setq v (car tmp1))
+                         (setq props (cdr tmp1))
+                         tmp1)
+                        nil))
+                    nil)
+               (cond
+                ((eq v '|--macros|)
+                  (do ((tmp2 props (cdr tmp2))
+                       (tmp3 nil))
+                      ((or (atom tmp2) 
+                           (progn (setq tmp3 (car tmp2)) nil)
+                           (progn 
+                            (progn (setq m (car tmp3)) tmp3)
+                            nil))
+                         nil)
+                     (setq vars (cons m vars))))
+                (t (setq vars (cons v vars)))))
+              (|importFromFrame| (cons fname vars)))
+            (t
+              (|sayKeyedMsg| "AXIOM will not import everything from frame %1."
+               (cons fname nil)))))
+         (t
+          (do ((tmp4 args (cdr tmp4)) (v nil))
+              ((or (atom tmp4) (progn (setq v (car tmp4)) nil)) nil)
+           (seq
+            (exit
+             (progn
+              (setq plist (getalist (caar fenv) v))
+              (cond
+               (plist 
+                (|clearCmdParts| (cons '|propert| (cons v nil)))
+                (do ((tmp5 plist (cdr tmp5)) (tmp6 nil))
+                    ((or (atom tmp5)
+                         (progn (setq tmp6 (car tmp5)) nil)
+                         (progn 
+                          (progn 
+                           (setq prop (car tmp6))
+                           (setq val (cdr tmp6))
+                           tmp6)
+                          nil))
+                       nil)
+                 (seq
+                  (exit (|putHist| v prop val |$InteractiveFrame|)))))
+               ((setq m (|get| '|--macros--| v fenv))
+                 (|putHist| '|--macros--| v m |$InteractiveFrame|))
+               (t 
+                 (|sayKeyedMsg|
+                  (format nil "AXIOM cannot import %1 from frame %2 because ~
+                               it cannot be found.")
+                   (cons v (cons fname nil)))))))))
+          (|sayKeyedMsg|
+            (format nil "Import from frame %1 is complete. Please issue ~
+                         )display all if you wish to see the contents of ~
+                         the current frame.")
+            (cons fname nil))))))))))
+
+(defun |incAppend| (x y)
+ (|Delay| #'|incAppend1| (list x y)))
+
+(defun |incAppend1| (&rest z)
+ (let (y x)
+  (setq x (car z))
+  (setq y (cadr z))
+  (cond
+   ((|StreamNull| x) 
+    (cond ((|StreamNull| y) |StreamNil|) (t y)))
+   (t 
+    (cons (car x) (|incAppend| (cdr x) y))))))
+
+(defun |incBiteOff| (x)
+ "Return the next token"
+ (let (blank nonblank)
+  (setq x (string x))
+  (when (setq nonblank (position #\space x :test-not #'char=))
+    (setq blank (position #\space x :start nonblank))
+    (if blank
+     (list (subseq x nonblank blank) (subseq x blank))
+     (list (subseq x nonblank) "")))))
+
+(defun |incClassify| (s)
+ (let (p1 bad eb n i)
+  (declare (special |incCommands|))
+  (if (null (|incCommand?| s)) 
+   (list nil 0 "")
+   (progn
+    (setq i 1)
+    (setq n (length s))
+    ((lambda ()
+      (loop
+       (cond
+        ((not (and (< i n) (char= (elt s i) #\space)))
+         (return nil))
+        (t (setq i (1+ i)))))))
+    (cond
+     ((not (< i n)) (list t 0 "other"))
+     (t
+      (if (= i 1) 
+       (setq eb 0)
+       (setq eb i))
+      (setq bad t)
+      ((lambda (tmp1 p)
+        (loop
+         (cond
+          ((or (atom tmp1)
+               (progn (setq p (car tmp1)) nil)
+               (not bad))
+            (return nil))
+          (t
+           (cond
+            ((|incPrefix?| p i s)
+             (identity
+              (progn
+               (setq bad nil)
+               (setq p1 p)))))))
+         (setq tmp1 (cdr tmp1))))
+        |incCommands| nil)
+      (if bad 
+       (list t 0 "other")
+       (list t eb p1))))))))
+
+(defun |incCommandTail| (s info)
+ (let ((start (elt info 1)))
+  (when (= start 0) (setq start 1))
+  (|incDrop| (+ start (length (elt info 2)) 1) s)))
+
+(defun |incConsoleInput| ()
+  (|incRgen| (make-instream 0)))
+
+(defun |incFileInput| (fn)
+  (|incRgen| (make-instream fn)))
+
+(defun |incFileName| (x)
+ "Return the include filename"
+  (car (|incBiteOff| x)))
+
+(defun |incIgen| (int)
+ (|Delay| #'|incIgen1| (list int)))
+
+(defun |incIgen1| (&rest z)
+ (let (n)
+  (setq n (car z))
+  (setq n (+ n 1))
+  (cons n (|incIgen| n))))
+
+(defun |inclFname| (s info)
+ (|incFileName| (|incCommandTail| s info)))
+
+(defun incLine (extrablanks string globalnum localnum fileobj)
+ (incLine1 extrablanks string string globalnum localnum fileobj))
+
+(defun incLine1 (extrablanks string string1 globalnum localnum fileobj)
+ (cons
+  (cons (|lnCreate| extrablanks string globalnum localnum fileobj) 1) string1))
+
+(defun |inclmsgCannotRead| (fn)
+ (list "The )include file %1f exists, but cannot be read."
+   (list (|thefname| fn))))
+
+(defun |inclmsgFileCycle| (ufos fn)
+ (let (cycle f1 flist)
+  (setq flist
+   ((lambda (Var8 Var7 n)
+     (loop
+      (cond
+       ((or (atom Var7) (progn (setq n (car Var7)) nil))
+        (return (nreverse Var8)))
+       (t
+        (setq Var8 (cons (|porigin| n) Var8))))
+      (setq Var7 (cdr Var7))))
+    nil (reverse ufos) nil))
+  (setq f1 (|porigin| fn))
+  (setq cycle
+   (append
+    ((lambda (Var10 Var9 n)
+      (loop
+       (cond
+        ((or (atom Var9) (progn (setq n (car Var9)) nil))
+          (return (nreverse Var10)))
+        (t
+         (setq Var10 (append (reverse (list n "==>")) Var10))))
+       (setq Var9 (cdr Var9))))
+     nil flist nil)
+    (cons f1 nil)))
+  (list 
+   (format nil
+    "There is a cycle in the )include files: %i %l %1f %u %l. ~
+     The inner occurrence of %2f has not been included.")
+   (list (|theid| cycle) (|theid| f1)))))
+
+(defun |inclmsgPrematureFin| (ufo)
+ (list 
+  (format nil
+   "A )fin command has been given in %1f where at least one )endif ~
+    was still needed. ~
+    An appropriate number of )endif lines have been assumed.")
+   (list (|theorigin| ufo))))
+
+(defun |incLude| (eb ss ln ufos states) 
+ (|Delay| #'|incLude1| (list eb ss ln ufos states)))
+
+(defun |incLude1| (&rest z)
+ (let (pred s1 n tail head includee fn1 info str state lno states 
+       ufos ln ss eb)
+  (setq eb (car z))
+  (setq ss (cadr . (z)))
+  (setq ln (caddr . (z)))
+  (setq ufos (cadddr . (z)))
+  (setq states (car (cddddr . (z))))
+  (setq lno (+ ln 1))
+  (setq state (elt states 0))
+  (cond
+   ((|StreamNull| ss)
+     (cond
+      ((null (|Top?| state))
+       (cons (|xlPrematureEOF| eb ")--premature end" lno ufos)
+             |StreamNil|))
+      (t |StreamNil|)))
+   (t
+    (progn
+     (setq str (expand-tabs (car ss)))
+     (setq info (|incClassify| str))
+     (cond
+      ((null (elt info 0))
+       (cond
+        ((|Skipping?| state)
+         (cons (|xlSkip| eb str lno (elt ufos 0)) (|Rest|)))
+        (t
+         (cons (|xlOK| eb str lno (elt ufos 0)) (|Rest|)))))
+      ((equal (elt info 2) "other")
+       (cond
+        ((|Skipping?| state)
+         (cons (|xlSkip| eb str lno (elt ufos 0)) (|Rest|)))
+        (t
+         (cons
+          (|xlOK1| eb str (concat ")command" str) lno (elt ufos 0))
+          (|Rest|)))))
+      ((equal (elt info 2) "say")
+       (cond
+        ((|Skipping?| state)
+         (cons (|xlSkip| eb str lno (elt ufos 0)) (|Rest|)))
+        (t
+         (progn
+          (setq str (|incCommandTail| str info))
+          (cons (|xlSay| eb str lno ufos str)
+           (cons (|xlOK| eb str lno (ELT ufos 0)) (|Rest|)))))))
+      ((equal (elt info 2) "include")
+       (cond
+        ((|Skipping?| state)
+         (cons (|xlSkip| eb str lno (elt ufos 0)) (|Rest|)))
+        (t
+         (progn
+          (setq fn1 (|inclFname| str info))
+          (cond
+           ((null fn1)
+            (cons (|xlNoSuchFile| eb str lno ufos fn1) (|Rest|)))
+           ((null (probe-file fn1))
+            (cons (|xlCannotRead| eb str lno ufos fn1) (|Rest|)))
+           ((|incActive?| fn1 ufos)
+            (cons (|xlFileCycle| eb str lno ufos fn1) (|Rest|)))
+           (t
+            (progn
+             (setq includee
+              (|incLude| (+ eb (elt info 1))
+                         (|incFileInput| fn1)
+                         0
+                         (cons fn1 ufos)
+                         (cons |Top| states)))
+             (cons (|xlOK| eb str lno (elt ufos 0))
+                   (|incAppend| includee (|Rest|))))))))))
+      ((equal (elt info 2) "console")
+       (cond
+        ((|Skipping?| state)
+         (cons (|xlSkip| eb str lno (elt ufos 0)) (|Rest|)))
+        (t
+         (progn
+          (setq head
+           (|incLude| (+ eb (elt info 1))
+                      (|incConsoleInput|)
+                      0
+                      (cons "console" ufos)
+                      (cons |Top| states)))
+          (setq tail (|Rest|))
+          (setq n (|incNConsoles| ufos))
+          (cond
+           ((< 0 n)
+            (setq head
+             (cons (|xlConActive| eb str lno ufos n) head))
+            (setq tail
+             (cons (|xlConStill| eb str lno ufos n) tail))))
+          (setq head (cons (|xlConsole| eb str lno ufos) head))
+          (cons (|xlOK| eb str lno (elt ufos 0))
+                (|incAppend| head tail))))))
+      ((equal (elt info 2) "fin")
+       (cond
+        ((|Skipping?| state)
+         (cons (|xlSkippingFin| eb str lno ufos) (|Rest|)))
+        ((null (|Top?| state))
+         (cons (|xlPrematureFin| eb str lno ufos) |StreamNil|))
+        (t
+         (cons (|xlOK| eb str lno (elt ufos 0)) |StreamNil|))))
+      ((equal (elt info 2) "assert")
+       (cond
+        ((|Skipping?| state)
+         (cons (|xlSkippingFin| eb str lno ufos) (|Rest|)))
+        (t
+         (progn
+          (|assertCond| str info)
+          (cons (|xlOK| eb str lno (elt ufos 0))
+                (|incAppend| includee (|Rest|)))))))
+      ((equal (elt info 2) "if")
+       (progn
+        (setq s1
+         (cond
+          ((|Skipping?| state) |IfSkipToEnd|)
+          (t
+           (cond
+            ((|ifCond| str info) |IfKeepPart|)
+            (t |IfSkipPart|)))))
+        (cons (|xlOK| eb str lno (elt ufos 0))
+              (|incLude| eb (cdr ss) lno ufos (cons s1 states)))))
+      ((equal (elt info 2) "elseif")
+       (cond
+        ((and (null (|If?| state)) (null (|Elseif?| state)))
+         (cons (|xlIfSyntax| eb str lno ufos info states)
+               |StreamNil|))
+        (t
+         (cond
+          ((or (|SkipEnd?| state) 
+               (|KeepPart?| state)
+               (|SkipPart?| state))
+           (setq s1
+            (cond
+             ((|SkipPart?| state)
+              (setq pred (|ifCond| str info))
+              (cond
+               (pred |ElseifKeepPart|)
+               (t |ElseifSkipPart|)))
+             (t |ElseifSkipToEnd|)))
+           (cons (|xlOK| eb str lno (elt ufos 0))
+                 (|incLude| eb (cdr ss) lno ufos (cons s1 (cdr states)))))
+          (t
+           (cons (|xlIfBug| eb str lno ufos) |StreamNil|))))))
+      ((equal (elt info 2) "else")
+       (cond
+        ((and (null (|If?| state)) (null (|Elseif?| state)))
+         (cons (|xlIfSyntax| eb str lno ufos info states)
+               |StreamNil|))
+        (t
+         (cond
+          ((or (|SkipEnd?| state) 
+               (|KeepPart?| state) 
+               (|SkipPart?| state))
+            (setq s1
+             (cond ((|SkipPart?| state) |ElseKeepPart|) (t |ElseSkipToEnd|)))
+            (cons (|xlOK| eb str lno (elt ufos 0))
+                  (|incLude| eb (cdr ss) lno ufos (cons s1 (cdr states)))))
+          (t
+           (cons (|xlIfBug| eb str lno ufos) |StreamNil|))))))
+      ((equal (elt info 2) "endif")
+       (cond
+        ((|Top?| state)
+         (cons (|xlIfSyntax| eb str lno ufos info states)
+               |StreamNil|))
+        (t
+         (cons (|xlOK| eb str lno (elt ufos 0))
+               (|incLude| eb (cdr ss) lno ufos (cdr states))))))
+      (t (cons (|xlCmdBug| eb str lno ufos) |StreamNil|))))))))
+
+(defun |inclmsgConActive| (n)
+ (list 
+  (format nil 
+   "%1f other )console commands are currently active. ~
+    While this new )console command is reading input the others ~
+    will have to wait. !
+    Remember, each )console command will need a separate )fin.")
+  (list (|theid| n))))
+
+(defun |inclmsgConStill| (n)
+ (list 
+  (format nil 
+   "The current )console command has finished reading. ~
+    %1f are still active.  Remember, each will need a separate )fin.")
+   (list (|theid| n))))
+
+(defun |inclmsgIfSyntax| (ufo found context)
+ (setq found (concat ")" found))
+ (list 
+  (format nil
+   "Incorrect )if...)endif syntax.  A %1f was found %2f. ~
+    The processing of the source from %3f has been abandoned.")
+  (list (|theid| found) (|theid| context) (|theorigin| ufo))))
+
+(defun |inclmsgNoSuchFile| (fn)
+ (list "The )include file %1f does not exist." (list (|thefname| fn))))
+
+(defun |inclmsgSay| (str)
+ (list "%1f" (list (|theid| str))))
+
+(defun |incNConsoles| (ufos)
+ (let ((a (member "console" ufos)))
+  (if a
+   (+ 1 (|incNConsoles| (cdr a)))
+   0)))
+
+(defun |incRenumber| (ssx)
+ (|incZip| #'|incRenumberLine| ssx (|incIgen| 0)))
+
+(defun |incRenumberItem| (f i)
+ (let (l)
+  (setq l (caar f))
+  (|lnSetGlobalNum| l i) f))
+
+(defun |incRenumberLine| (xl gno)
+ (let (l)
+  (setq l (|incRenumberItem| (elt xl 0) gno))
+  (|incHandleMessage| xl)
+  l))
+
+(defun |incRgen| (s)
+ (|Delay| #'|incRgen1| (list s)))
+
+(defun |incRgen1| (&rest z)
+ (let (a s)
+ (declare (special |StreamNil|))
+  (setq s (car z))
+  (setq a (read-line s nil nil))
+  (if (null a)
+   (progn
+    (close s) 
+    |StreamNil|)
+   (cons a (|incRgen| s)))))
+
+(defun |incStream| (st fn)
+ (declare (special |Top|))
+ (|incRenumber| (|incLude| 0 (|incRgen| st) 0 (list fn) (list |Top|))))
+
+(defun |incString| (s)
+ (declare (special |Top|))
+ (|incRenumber| (|incLude| 0 (list s) 0 (list "strings") (list |Top|))))
+
+(defun |incZip| (function delay1 delay2)
+  (|Delay| #'|incZip1| (list function delay1 delay2)))
+
+(defun |incZip1| (&rest delayArg)
+ (let (function delay1 delay2)
+  (setq function (car delayArg))
+  (setq delay1 (cadr delayArg))
+  (setq delay2 (caddr delayArg))
+  (cond
+   ((|StreamNull| delay1) |StreamNil|)
+   ((|StreamNull| delay2) |StreamNil|)
+   (t 
+     (cons
+      (funcall function (car delay1) (car delay2))
+      (|incZip| function (cdr delay1) (cdr delay2)))))))
+
+(defun init-boot/spad-reader ()
+ (declare (special $spad_errors spaderrorstream *standard-output* 
+           xtokenreader line-handler meta-error-handler file-closed
+           boot-line-stack))
+  (setq $spad_errors (vector 0 0 0))
+  (setq spaderrorstream *standard-output*)
+  (setq xtokenreader 'get-BOOT-token)
+  (setq line-Handler 'next-BOOT-line)
+  (setq meta-error-handler 'spad-syntax-error)
+  (setq file-closed nil)
+  (next-lines-clear)
+  (ioclear))
+
+(defun |initHist| ()
+ (let (oldFile newFile)
+ (declare (special |$useInternalHistoryTable| |$HiFiAccess|))
+   (if |$useInternalHistoryTable| 
+     (|initHistList|)
+     (progn
+       (setq oldFile (|oldHistFileName|))
+       (setq newFile (|histFileName|))
+       (|histFileErase| oldFile)
+       (when (makeInputFilename newFile) (replaceFile oldFile newFile))
+       (setq |$HiFiAccess| t)
+       (|initHistList|)))))
+ 
+(defun |initHistList| () 
+ (let (li) 
+ (declare (special |$HistListLen| |$HistList| |$HistListAct| |$HistRecord|))
+   (setq |$HistListLen| 20) 
+   (setq |$HistList| (list nil)) 
+   (setq li |$HistList|) 
+   (do ((i 1 (1+ i))) 
+       ((> i |$HistListLen|) nil) 
+     (setq li (cons nil li)))
+   (rplacd |$HistList| li) 
+   (setq |$HistListAct| 0) 
+   (setq |$HistRecord| nil)))
+ 
+(defun initial-getdatabase ()
+ "fetch data we want in the saved system"
+ (let (hascategory constructormodemapAndoperationalist operation constr)
+ (format t "Initial getdatabase~%")
+ (setq hascategory '(
+  (|Equation| . |Ring|)
+  (|Expression| . |CoercibleTo|) (|Expression| . |CommutativeRing|)
+  (|Expression| . |IntegralDomain|) (|Expression| . |Ring|)
+  (|Float| . |RetractableTo|)
+  (|Fraction| . |Algebra|) (|Fraction| . |CoercibleTo|)
+  (|Fraction| . |OrderedSet|) (|Fraction| . |RetractableTo|)
+  (|Integer| . |Algebra|) (|Integer| . |CoercibleTo|)
+  (|Integer| . |ConvertibleTo|) (|Integer| . |LinearlyExplicitRingOver|)
+  (|Integer| . |RetractableTo|)
+  (|List| . |CoercibleTo|) (|List| . |FiniteLinearAggregate|)
+  (|List| . |OrderedSet|)
+  (|Polynomial| . |CoercibleTo|) (|Polynomial| . |CommutativeRing|)
+  (|Polynomial| . |ConvertibleTo|) (|Polynomial| . |OrderedSet|)
+  (|Polynomial| . |RetractableTo|)
+  (|Symbol| . |CoercibleTo|) (|Symbol| . |ConvertibleTo|)
+  (|Variable| . |CoercibleTo|)))
+ (dolist (pair hascategory) (getdatabase pair 'hascategory))
+ (setq constructormodemapAndoperationalist '(
+  |BasicOperator|  |Boolean|
+  |CardinalNumber| |Color|  |Complex|
+  |Database|
+  |Equation| |EquationFunctions2| |Expression|
+  |Float| |Fraction| |FractionFunctions2|
+  |Integer| |IntegralDomain|
+  |Kernel|
+  |List|
+  |Matrix| |MappingPackage1|
+  |Operator| |OutputForm|
+  |NonNegativeInteger|
+  |ParametricPlaneCurve| |ParametricSpaceCurve| |Point| |Polynomial|
+  |PolynomialFunctions2| |PositiveInteger|
+  |Ring|
+  |SetCategory| |SegmentBinding| |SegmentBindingFunctions2| |DoubleFloat|
+  |SparseMultivariatePolynomial| |SparseUnivariatePolynomial| |Segment|
+  |String| |Symbol|
+  |UniversalSegment|
+  |Variable|  |Vector|))
+ (dolist (con constructormodemapAndoperationalist)
+  (getdatabase con 'constructormodemap)
+  (getdatabase con 'operationalist))
+ (setq operation '(
+  |+| |-| |*| |/| |**| |coerce| |convert| |elt| |equation|
+  |float| |sin| |cos| |map| |SEGMENT|))
+ (dolist (op operation) (getdatabase op 'operation))
+ (setq constr '( ;these are sorted least-to-most freq. delete early ones first
+  |Factored| |SparseUnivariatePolynomialFunctions2| |TableAggregate&|
+  |RetractableTo&| |RecursiveAggregate&| |UserDefinedPartialOrdering|
+  |None| |UnivariatePolynomialCategoryFunctions2| |IntegerPrimesPackage|
+  |SetCategory&| |IndexedExponents| |QuotientFieldCategory&| |Polynomial|
+  |EltableAggregate&| |PartialDifferentialRing&| |Set|
+  |UnivariatePolynomialCategory&| |FlexibleArray|
+  |SparseMultivariatePolynomial| |PolynomialCategory&|
+  |DifferentialExtension&| |IndexedFlexibleArray| |AbelianMonoidRing&|
+  |FiniteAbelianMonoidRing&| |DivisionRing&| |FullyLinearlyExplicitRingOver&|
+  |IndexedVector| |IndexedOneDimensionalArray| |LocalAlgebra| |Localize|
+  |Boolean| |Field&| |Vector| |IndexedDirectProductObject| |Aggregate&|
+  |PolynomialRing| |FreeModule| |IndexedDirectProductAbelianGroup|
+  |IndexedDirectProductAbelianMonoid| |SingletonAsOrderedSet|
+  |SparseUnivariatePolynomial| |Fraction| |Collection&| |HomogeneousAggregate&|
+  |RepeatedSquaring| |IntegerNumberSystem&| |AbelianSemiGroup&|
+  |AssociationList| |OrderedRing&| |SemiGroup&| |Symbol|
+  |UniqueFactorizationDomain&| |EuclideanDomain&| |IndexedAggregate&|
+  |GcdDomain&| |IntegralDomain&| |DifferentialRing&| |Monoid&| |Reference|
+  |UnaryRecursiveAggregate&| |OrderedSet&| |AbelianGroup&| |Algebra&|
+  |Module&| |Ring&| |StringAggregate&| |AbelianMonoid&|
+  |ExtensibleLinearAggregate&| |PositiveInteger| |StreamAggregate&|
+  |IndexedString| |IndexedList| |ListAggregate&| |LinearAggregate&|
+  |Character| |String| |NonNegativeInteger| |SingleInteger|
+  |OneDimensionalArrayAggregate&| |FiniteLinearAggregate&| |PrimitiveArray|
+  |Integer| |List| |OutputForm|))
+ (dolist (con constr)
+  (let ((c (concatenate 'string
+             (getenviron "AXIOM") "/algebra/"
+             (string (getdatabase con 'abbreviation)) ".o")))
+    (format t "   preloading ~a.." c)
+    (if (probe-file c)
+     (progn
+      (put con 'loaded c)
+      (load c)
+      (format t "loaded.~%"))
+     (format t "skipped.~%"))))
+ (format t "~%")))
+
+(defun |initializeInterpreterFrameRing| ()
+ "Initializing the Interpreter Frame Ring"
+ (declare (special |$interpreterFrameName| |$interpreterFrameRing|))
+ (setq |$interpreterFrameName| '|initial|)
+ (setq |$interpreterFrameRing|
+   (list (|emptyInterpreterFrame| |$interpreterFrameName|)))
+ (|updateFromCurrentInterpreterFrame|)
+ nil) 
+
+(defun |initializeSetVariables| (settree) 
+ "Initialize the set variables"
+ (dolist (setdata settree)
+  (case (fourth setdata)
+   (function
+      (if (canFuncall? (fifth setdata))
+        (funcall (fifth setdata) '|%initialize%|)
+        (|sayMSG| (concatenate 'string "   Function not implemented. "
+         (package-name *package*) ":" (string (fifth setdata))))))
+   (integer (set (fifth setdata) (seventh setdata)))
+   (string  (set (fifth setdata) (seventh setdata)))
+   (literals
+       (set (fifth setdata) (|translateYesNo2TrueFalse| (seventh setdata))))
+   (tree  (|initializeSetVariables| (sixth setdata))))))
+
+(defun |initImPr| (msg)
+ (declare (special |$imPrTagGuys| |$erMsgToss|))
+ (when (or |$erMsgToss| (member (|getMsgTag| msg) |$imPrTagGuys|))
+   (|setMsgUnforcedAttr| msg '|$imPrGuys| '|imPr|)))
+
+(defun initroot (&optional (newroot (getenviron "AXIOM")))
+ "Set spadroot to be the AXIOM shell variable"
+  (declare (special $spadroot))
+  (reroot (or newroot $spadroot (error "setenv AXIOM or (setq $spadroot)"))))
+
+(defun |initToWhere| (msg)
+ (if (member '|trace| (|getMsgCatAttr| msg '|catless|))
+   (|setMsgUnforcedAttr| msg '|$toWhereGuys| '|screenOnly|)))
+
+(defun |insertAlist| (a b z)
+ (labels (
+  (fn (a b z)
+   (cond
+    ((null (cdr z)) (rplac (cdr z) (list (cons a b))))
+    ((equal a (elt (elt z 1) 0)) (rplac (cdr (elt z 1)) b))
+    ((?order (elt (elt z 1) 0) a) (rplac (cdr z) (cons (cons a b) (cdr z))))
+    (t (fn a b (cdr z))))))
+  (cond
+    ((null z) (list (cons a b)))
+    ((equal a (elt (elt z 0) 0)) (rplac (cdar z) b) z)
+    ((?order (elt (elt z 0) 0) a) (cons (cons a b) z))
+    (t (fn a b z) z))))
+
+(defun |insertpile| (s)
+ (let (stream a t1 h1 t2 h tmp1)
+  (cond
+   ((|npNull| s) (list nil 0 nil s))
+   (t
+    (setq tmp1 (list (car s) (cdr s)))
+    (setq h (car tmp1)) 
+    (setq t2 (cadr tmp1))
+    (cond
+     ((|pilePlusComment| h)
+       (setq tmp1 (|pilePlusComments| s))
+       (setq h1 (car tmp1))
+       (setq t1 (cadr tmp1))
+       (setq a (|pileTree| (- 1) t1))
+       (cons (list (|pileCforest|
+                       (append h1 (cons (elt a 2) nil))))
+             (elt a 3)))
+     (t
+      (setq stream (cadar s))
+      (setq a (|pileTree| -1 s))
+      (cons (list (list (elt a 2) stream)) (elt a 3))))))))
+
+(defun |InterpExecuteSpadSystemCommand| (string)
+ (declare (special |$intSpadReader| |$intCoerceFailure|))
+  (catch |$intCoerceFailure|
+   (catch |$intSpadReader|
+    (|ExecuteInterpSystemCommand| string))))
+
+(defun |interpFunctionDepAlists| ()
+ (let (|$e|)
+ (declare (special |$e| |$dependeeAlist| |$dependentAlist| 
+                   |$InteractiveFrame|))
+  (setq |$e| |$InteractiveFrame|)
+  (setq |$dependentAlist| (cons (cons nil nil) nil))
+  (setq |$dependeeAlist| (cons (cons nil nil) nil))
+  (mapcar #'(lambda (dep) 
+   (let (dependee dependent)
+    (setq dependee (first dep))
+    (setq dependent (second dep))
+    (setq |$dependentAlist| 
+     (putalist |$dependentAlist| dependee
+      (cons dependent (getalist |$dependentAlist| dependee))))
+    (setq |$dependeeAlist|
+     (putalist |$dependeeAlist| dependent
+      (cons dependee (getalist |$dependeeAlist| dependent)))))) 
+   (|getFlag| '|$dependencies|))))
+
+
+(defun interpopen ()
+ "open the interpreter database and hash the keys"
+ (declare (special $spadroot *allconstructors* *interp-stream*
+                   *interp-stream-stamp*))
+ (let (constructors pos stamp dbstruct)
+  (setq *interp-stream* (open (DaaseName "interp.daase" nil)))
+  (setq stamp (read *interp-stream*))
+  (unless (equal stamp *interp-stream-stamp*)
+   (format t "   Re-reading interp.daase")
+   (setq *interp-stream-stamp* stamp)
+   (setq pos (car stamp))
+   (file-position *interp-stream* pos)
+   (setq constructors (read *interp-stream*))
+   (dolist (item constructors)
+    (setq *allconstructors* (adjoin (first item) *allconstructors*))
+    (setq dbstruct (make-database))
+    (setf (get (car item) 'database) dbstruct)
+    (setf (database-operationalist dbstruct) (second item))
+    (setf (database-constructormodemap dbstruct) (third item))
+    (setf (database-modemaps dbstruct) (fourth item))
+    (setf (database-object dbstruct) (fifth item))
+    (setf (database-constructorcategory dbstruct) (sixth item))
+    (setf (database-niladic dbstruct) (seventh item))
+    (setf (database-abbreviation dbstruct) (eighth item))
+    (setf (get (eighth item) 'abbreviationfor) (first item)) ;invert
+    (setf (database-cosig dbstruct) (ninth item))
+    (setf (database-constructorkind dbstruct) (tenth item))
+    (setf (database-ancestors dbstruct) (nth 11 item))))
+  (format t "~&")))
+
+(defun |interpret| (&rest arg &aux restargs x)
+ (let (|$env| |$eval| |$genValue| posnForm)
+ (declare (special |$env| |$eval| |$genValue|))
+  (setq x (car arg))
+  (setq restargs (cdr arg))
+  (if (consp restargs)
+    (setq posnForm (car restargs))
+    (setq posnForm restargs))
+  (setq |$env| (list (list nil)))
+  (setq |$eval| t)      ; generate code -- don't just type analyze
+  (setq |$genValue| t)  ; evaluate all generated code
+  (|interpret1| x nil posnForm)))
+
+(defun |interpret1| (x rootMode posnForm)
+ (let (node modeSet newRootMode argVal val)
+ (declare (special |$genValue| |$eval|))
+  (setq node (|mkAtreeWithSrcPos| x posnForm))
+  (when rootMode (|putTarget| node rootMode))
+  (setq modeSet (|bottomUp| node))
+  (if (null |$eval|)
+   modeSet
+   (progn
+    (if (null rootMode)
+     (setq newRootMode (car modeSet))
+     (setq newRootMode rootMode))
+    (setq argVal (|getArgValue| node newRootMode))
+    (cond
+     ((and argVal (null |$genValue|))
+       (mkObj argVal newRootMode))
+     ((and argVal (setq val (|getValue| node)))
+       (|interpret2| val newRootMode posnForm))
+     (t
+       (|keyedSystemError|
+         "Interpreter code generation failed for expression %1s"
+         (list x))))))))
+
+(defun |interpret2| (object m1 posnForm)
+ (declare (ignore  posnForm))
+ (let (x m op ans)
+ (declare (special |$EmptyMode| |$ThrowAwayMode|))
+  (cond
+   ((equal m1 |$ThrowAwayMode|) object)
+   (t
+    (setq x (|objVal| object))
+    (setq m (|objMode| object))
+    (cond
+     ((equal m |$EmptyMode|)
+      (cond
+        ((and (consp x) 
+              (progn (setq op (qcar x)) t)
+              (|member| op '(map stream)))
+          (mkObj x m1))
+        ((equal m1 |$EmptyMode|)
+          (mkObj x m))
+        (t
+          (|systemErrorHere| "interpret2"))))
+     (m1
+      (if (setq ans (|coerceInteractive| object m1)) 
+       ans
+       (|throwKeyedMsgCannotCoerceWithValue| x m m1)))
+     (t object))))))
+
+(defun |interpretTopLevel| (x posnForm)
+ (let (savedTimerStack c)
+ (declare (special |$timedNameStack|))
+  (setq savedTimerStack (copy |$timedNameStack|))
+  (setq c (catch '|interpreter| (|interpret| x posnForm)))
+  (do ()
+      ((equal savedTimerStack |$timedNameStack|) nil)
+    (|stopTimingProcess| (|peekTimedName|)))
+  (if (eq c '|tryAgain|) 
+   (|interpretTopLevel| x posnForm)
+   c)))
+
+(defun |intInterpretPform| (pf)
+  (|processInteractive| (|zeroOneTran| (|pf2Sex| pf)) pf))
+
+(defun |intloop| () 
+ (prog (mode) 
+  (declare (special |$intTopLevel| |$intRestart|)) 
+   (return 
+    (progn 
+     (setq mode |$intRestart|) 
+     ((lambda () 
+       (loop 
+        (cond 
+         ((not (equal mode |$intRestart|))
+           (return nil))
+         (t
+           (progn 
+             (|resetStackLimits|) 
+             (setq mode 
+               (catch |$intTopLevel| 
+                 (|SpadInterpretStream| 1 
+                   (list 'tim  'daly '?) t)))))))))))))
+
+(defun |intloopEchoParse| (s)
+ (let (cudr lines stream dq t1)
+ (declare (special |$EchoLines| |$lines|))
+  (setq t1 (car s))
+  (setq dq (car t1))
+  (setq stream (cadr t1))
+  (setq t1 (|ncloopDQlines| dq |$lines|))
+  (setq lines (car t1))
+  (setq cudr (cadr t1))
+  (|setCurrentLine| (|mkLineList| lines))
+  (when |$EchoLines| (|ncloopPrintLines| lines))
+  (setq |$lines| cudr)
+  (cons (list (list lines (|npParse| (|dqToList| dq)))) (cdr s))))
+
+(defun |intloopInclude| (name n)
+  "Include a file into the stream"
+  (with-open-file (st name) (|intloopInclude0| st name n)))
+
+(defun |intloopInclude0| (|st| |name| |n|)
+ (let (|$lines|)
+ (declare (special |$lines|))
+  (setq |$lines| (|incStream| |st| |name|))
+  (|intloopProcess| |n| NIL 
+   (|next| #'|intloopEchoParse|
+    (|next| #'|insertpile|
+     (|next| #'|lineoftoks|
+      |$lines|))))))
+
+(defun |intnplisp| (s)
+ (declare (special |$currentLine|))
+ (setq |$currentLine| s)
+ (|nplisp| |$currentLine|))
+
+(defun |intloopProcess| (stepno interactive delay)
+ (let (ptree lines t1)
+ (declare (special |$systemCommandFunction|))
+  (cond
+   ((|StreamNull| delay) stepno)
+   (t
+    (setq t1 (car delay))
+    (setq lines (car t1))
+    (setq ptree (cadr t1))
+    (cond
+     ((|pfAbSynOp?| ptree '|command|)
+       (when interactive (|setCurrentLine| (|tokPart| ptree)))
+       (funcall |$systemCommandFunction| (|tokPart| ptree))
+       (|intloopProcess| stepno interactive (cdr delay)))
+     (t
+       (|intloopProcess|
+         (|intloopSpadProcess| stepno lines ptree interactive)
+         interactive (cdr delay))))))))
+
+(defun |intloopProcessString| (currentline stepno)
+ (|setCurrentLine| currentline)
+ (|intloopProcess| stepno t
+  (|next| #'|ncloopParse|
+   (|next| #'|lineoftoks| (|incString| currentline)))))
+
+(defun |intloopReadConsole| (prefix stepNumber) 
+ (declare (special $dalymode)) 
+ (let (newStepNo cmd pfx input) 
+   ; read the next line
+   (setq input (|serverReadLine| *standard-input*)) 
+   ; if we have lost *standard-input* then exit Axiom
+   (when (null (stringp input)) (|leaveScratchpad|)) 
+   ; if the input is a zero-length input, recurse
+   (when (eql (length input) 0) 
+     (princ (mkprompt)) 
+     (|intloopReadConsole| "" stepNumber))
+   ; if $dalymode is nonnil anything starting with '(' is a lisp expression
+   ; evaluate the expression in lisp and recurse
+   (when (and $dalymode (|intloopPrefix?| "(" input))
+     (|intnplisp| input) 
+     (princ (mkprompt)) 
+     (|intloopReadConsole| "" stepNumber))
+   ; if the input starts with ")fi" or ")fin" throw into lisp
+   (setq pfx (|intloopPrefix?| ")fi" input))
+   (when (and pfx (or (string= pfx ")fi") (string= pfx ")fin")))
+     (throw '|top_level| nil))
+   ; if the input starts with ')' it is a command; execute and recurse
+   (when (and (equal prefix "") (setq cmd (|intloopPrefix?| ")" input)))
+     (|setCurrentLine| cmd) 
+     (setq newStepNo (|ncloopCommand| cmd stepNumber)) 
+     (princ (mkprompt)) 
+     (|intloopReadConsole| "" newStepNo))
+   ; if the last non-blank character on the line is an underscore
+   ; we use the current accumulated input as a prefix and recurse.
+   ; this has the effect of concatenating the next line (minus the underscore)
+   (setq input (concat prefix input)) 
+   (when (|ncloopEscaped| input) 
+     (|intloopReadConsole| (subseq input 0 (- (length input) 1)) stepNumber))
+   ; if there are no special cases, process the current line and recurse
+   (setq newStepNo (|intloopProcessString| input stepNumber)) 
+   (princ (mkprompt)) 
+   (|intloopReadConsole| "" newStepNo)))
+
+(defun |intloopSpadProcess| (stepNo lines ptree interactive?)
+ (let (|$stepNo| result cc)
+ (declare (special |$stepNo| |$prevCarrier| |$intSpadReader| |flung|
+                   |$intCoerceFailure| |$ncMsgList| |$currentCarrier|
+                   |$NeedToSignalSessionManager|))
+  (setq |$stepNo| stepNo)
+  (setq |$currentCarrier| (setq cc (list '|carrier|)))
+  (|ncPutQ| cc '|stepNumber| stepNo)
+  (|ncPutQ| cc '|messages| |$ncMsgList|)
+  (|ncPutQ| cc '|lines| lines)
+  (setq |$ncMsgList| nil)
+  (setq result
+    (catch '|SpadCompileItem|
+     (catch |$intCoerceFailure|
+      (catch |$intSpadReader|
+       (|intloopSpadProcess,interp| cc ptree interactive?)))))
+  (setq |$NeedToSignalSessionManager| t)
+  (setq |$prevCarrier| |$currentCarrier|)
+  (cond
+    ((eq result '|ncEnd|) stepNo)
+    ((eq result '|ncError|) stepNo)
+    ((eq result '|ncEndItem|) stepNo)
+    (t (1+ stepNo)))))
+
+(defun |intloopSpadProcess,interp| (cc ptree interactive?)
+ (|ncConversationPhase| #'|phParse| (list cc ptree))
+ (|ncConversationPhase| #'|phMacro| (list cc))
+ (|ncConversationPhase| #'|phIntReportMsgs| (list cc interactive?))
+ (|ncConversationPhase| #'|phInterpret| (list cc))
+ (unless (eql (length (|ncEltQ| cc '|messages|)) 0) (|ncError|)))
+
+(defun |intProcessSynonyms| (str)
+ (let ((line str))
+ (declare (special line))
+  (|processSynonyms|)
+  line))
+
+(defun ioclear (&optional (in t) (out t))
+ (declare (special current-fragment current-line $boot $spad)
+          (ignore in out))
+  (setq current-fragment nil)
+  (line-clear current-line)
+  (token-install nil nil current-token nil)
+  (token-install nil nil next-token nil)
+  (token-install nil nil prior-token nil)
+  (reduce-stack-clear)
+  (if (or $boot $spad) (next-lines-clear))
+  nil)
+
+(defun iostat ()
+  "Tell me what the current state of the parsing world is."
+  (declare (special $boot $spad))
+  (if (line-past-end-p Current-Line)
+    (format t "~&The current line is empty.~%")
+    (progn
+     (format t "~&The current line is:~%~%")
+     (line-print current-line)))
+  (if (or $boot $spad) (next-lines-show))
+  (token-stack-show)
+  nil)
+
+(defun |isDomainOrPackage| (dom)
+ (and
+  (refvecp dom)
+  (> (|#| dom) 0)
+  (|isFunctor| (|opOf| (elt dom 0))))) 
+
+(defun |isDomainValuedVariable| (form)
+ (let (val)
+ (declare (special |$e| |$env| |$InteractiveFrame|))
+  (when (and (identp form)
+             (setq val
+               (or (|get| form '|value| |$InteractiveFrame|)
+                   (and (consp |$env|)  (|get| form '|value| |$env|))
+                   (and (consp |$e|)    (|get| form '|value| |$e|))))
+             (|member| (|objMode| val) '((|Domain|) (|SubDomain| (|Domain|)))))
+    (|objValUnwrap| val))))
+
+(defun |isEqualOrSubDomain| (d1 d2)
+  (or (equal d1 d2) 
+      (|isSubDomain| d1 d2)
+      (and (atom d1)
+           (or (and (consp d2) (eq (qcar d2) '|Variable|)
+                    (consp (qcdr d2)) (eq (qcddr d2) nil)
+                    (equal (qcadr d2) d1))
+               (and (consp d2) (eq (qcdr d2) nil)
+                        (equal (qcar d2) d1))))
+      (and (atom d2)
+           (or (and (consp d1) (eq (qcar d1) '|Variable|)
+                    (consp (qcdr d1)) (eq (qcddr d1) nil)
+                    (equal (qcadr d1) d2))
+               (and (consp d1) (eq (qcdr d1) nil)
+                    (equal (qcar d1) d2))))))
+
+(defun |isExposedConstructor| (name)
+ (let (x found)
+ (declare (special |$globalExposureGroupAlist| |$localExposureData|))
+  (cond
+    ((member name '(|Union| |Record| |Mapping|)) t)
+    ((member name (elt |$localExposureData| 2)) nil)
+    ((member name (elt |$localExposureData| 1)) t)
+    (t 
+     (loop for g in (elt |$localExposureData| 0) 
+      when (not found)
+      do
+        (setq x (getalist |$globalExposureGroupAlist| g))
+        (when (and x (getalist x name)) (setq found t)))
+     found))))
+
+(defun isGenvar (x)
+  (and (identp x)
+       (let ((y (symbol-name x)))
+         (and (char= #\$ (elt y 0)) (> (size y) 1) (digitp (elt y 1))))))
+ 
+(defun |isInterpOnlyMap| (map)
+ (let (x)
+ (declare (special |$InteractiveFrame|))
+  (when (setq x (|get| map '|localModemap| |$InteractiveFrame|))
+    (eq (caaar x) '|interpOnly|))))
+
+(defun |isListOfIdentifiers| (arg)
+ (prog () 
+  (return
+   (seq
+    (prog (t0)
+     (setq t0 t)
+     (return
+      (do ((t1 nil (null t0)) (t2 arg (cdr t2)) (x nil))
+          ((or t1 (atom t2) (progn (setq x (car t2)) nil)) t0)
+       (seq
+        (exit
+         (setq t0 (and t0 (identp x)))))))))))) 
+
+(defun |isListOfIdentifiersOrStrings| (arg)
+ (prog () 
+  (return
+   (seq
+    (prog (t0)
+     (setq t0 t)
+     (return
+      (do ((t1 nil (null t0)) (t2 arg (cdr t2)) (x nil))
+          ((or t1 (atom t2) (progn (setq x (car t2)) nil)) t0)
+       (seq
+        (exit
+         (setq t0 (and t0 (or (identp x) (stringp x))))))))))))) 
+
+(defun |isPartialMode| (m)
+ (declare (special |$EmptyMode|))
+ (contained |$EmptyMode| m))
+
+(defun |isPatternVar| (v)
+  (and (identp v)
+       (member v
+             '(** *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11 *12 *13 *14 *15
+                  *16 *17 *18 *19 *20))
+       t))
+
+(defun |isSharpVar| (x)
+ (and (symbolp x)
+      (eql (elt (symbol-name x) 0) #\#)))
+;      (integerp (parse-integer (symbol-name x) :start 1))))
+
+(defun |isSharpVarWithNum| (x)
+ (let (p n d ok c)
+  (cond
+   ((null (|isSharpVar| x)) nil)
+   ((> 2 (setq n (qcsize (setq p (pname x))))) nil)
+   (t
+    (setq ok t)
+    (setq c 0)
+    (do ((t1 (1- n)) (i 1 (1+ i)))
+         ((or (> i t1) (null ok)) nil)
+      (setq d (elt p i))
+      (when (setq ok (digitp d))
+        (setq c (+ (* 10 c) (dig2fix d)))))
+    (when ok c)))))
+
+(defun |isSubForRedundantMapName| (subname)
+ (let (mapname tail)
+ (declare (special |$mapSubNameAlist|))
+  (when (setq mapname (|rassocSub| subname |$mapSubNameAlist|))
+    (when (setq tail 
+           (member (cons mapname subname) |$mapSubNameAlist| :test #'equalp))
+      (member mapname (cdr (assocleft tail)))))))
+
+(defun |isSystemDirectory| (dir)
+ (declare (special $spadroot))
+ (every #'char= $spadroot dir))
+
+(defun |isTaggedUnion| (u)
+ (and (eq (car u) '|Union|) (eq (caadr u) '|:|)))
+
+(defun |isUncompiledMap| (x)
+ (let (y)
+ (declare (special |$InteractiveFrame|))
+  (when (setq y (|get| x '|value| |$InteractiveFrame|))
+    (and
+      (eq (caar y) 'map)
+      (null (|get| x '|localModemap| |$InteractiveFrame|))))))
+
+
+(defun |justifyMyType| (arg)
+ (let (len)
+ (declare (special $linelength))
+  (setq len (|#| arg))
+  (if (> len $linelength)
+   arg
+   (concat (|fillerSpaces| (- $linelength len)) arg))))
+
+
+(defun |kArgPage| (htPage arg)
+ (let (conform op args domname source n typeForm domTypeForm descendants rank)
+  (setq conform (|htpProperty| htPage '|conform|))
+  (setq op (car conform))
+  (setq args (cdr conform))
+  (setq domname (|htpProperty| htPage '|domname|))
+  (setq source (cddar (|getConstructorModemap| op)))
+  (setq n (|position| arg args))
+  (setq typeForm (|sublisFormal| args (elt source n)))
+  (setq domTypeForm (|mkDomTypeForm| typeForm conform domname))
+  (setq descendants (|domainDescendantsOf| typeForm domTypeForm))
+  (|htpSetProperty| htPage '|cAlist| descendants)
+  (setq rank
+    (unless (> n 4) (elt '(|First| |Second| |Third| |Fourth| |Fifth|) n)))
+  (|htpSetProperty| htPage '|rank| rank)
+  (|htpSetProperty| htPage '|thing| "argument")
+  (|dbShowCons| htPage '|names|)))
+
+(defun |kArgumentCheck| (domain? s)
+ (let (form)
+  (cond
+   ((string= s "") nil)
+   ((and domain? (setq form (|conSpecialString?| s)))
+    (if (null (ifcdr form))
+      (list (princ-to-string (|opOf| form)))
+      (|form2String| form)))
+   (t (list s)))))
+
+(defun |kcaPage| (htPage junk)
+ (declare (ignore junk))
+ (|kcaPage1| htPage "category" " an "
+      "ancestor" #'|ancestorsOf| nil))
+
+(defun |kcaPage1| (htPage kind article whichever fn isCatDescendants?)
+ (declare (ignore article))
+ (let (lt1 name nargs domname heading conform conname ancestors choice)
+  (setq lt1 (|htpProperty| htPage '|parts|))
+  (setq kind (first lt1))
+  (setq name (second lt1))
+  (setq nargs (third lt1))
+  (setq domname (|kDomainName| htPage kind name nargs))
+  (cond
+   ((and (consp domname) (eq (qcar domname) '|error|))
+     (|errorPage| htPage domname))
+   (t
+     (setq heading
+      (if (null domname) 
+        (|htpProperty| htPage '|heading|)
+        (list "{\\sf " (|form2HtString| domname nil t) "}")))
+     (when (and domname (null isCatDescendants?))
+       (|htpSetProperty| htPage '|domname| domname)
+       (|htpSetProperty| htPage '|heading| heading))
+     (setq conform (|htpProperty| htPage '|conform|))
+     (setq conname (|opOf| conform))
+     (setq ancestors (FUNCALL fn conform domname))
+     (unless (string= whichever "ancestor")
+       (setq ancestors (|augmentHasArgs| ancestors conform)))
+     (setq ancestors (|listSort| #'glesseqp ancestors))
+     (|htpSetProperty| htPage '|cAlist| ancestors)
+     (|htpSetProperty| htPage '|thing| whichever)
+     (setq choice '|names|)
+     (|dbShowCons| htPage choice)))))
+
+(defun |kccPage| (htPage junk)
+ (declare (ignore junk))
+ (let (lt1 kind name nargs domname heading conform conname page children)
+  (setq lt1 (|htpProperty| htPage '|parts|))
+  (setq kind (first lt1))
+  (setq name (second lt1))
+  (setq nargs (third lt1))
+  (setq domname (|kDomainName| htPage kind name nargs))
+  (cond
+   ((and (consp domname) (eq (qcar domname) '|error|))
+     (|errorPage| htPage domname))
+   (t
+     (setq heading
+      (if (null domname)
+        (|htpProperty| htPage '|heading|)
+        (list "{\\sf " (|form2HtString| domname nil t) "}")))
+     (when domname
+      (|htpSetProperty| htPage '|domname| domname)
+      (|htpSetProperty| htPage '|heading| heading))
+     (setq conform (|htpProperty| htPage '|conform|))
+     (setq conname (|opOf| conform))
+     (setq page
+       (|htInitPage| (cons "Children of " heading) (|htCopyProplist| htPage)))
+     (setq children (|augmentHasArgs| (|childrenOf| conform) conform))
+     (when domname
+      (setq children (|reduceAlistForDomain| children domname conform)))
+     (|htpSetProperty| htPage '|cAlist| children)
+     (|htpSetProperty| htPage '|thing| "child")
+     (|dbShowCons| htPage '|names|)))))
+
+(defun |kcdePage| (htPage junk)
+ (declare (ignore junk))
+ (let (lt1 kind name args conname constring conform pakname domlist cAlist)
+  (setq lt1 (|htpProperty| htPage '|parts|))
+  (setq kind (first lt1))
+  (setq name (second lt1))
+  (setq args (sixth lt1))
+  (setq conname (intern name))
+  (setq constring (concat name args))
+  (setq conform
+   (if (nequal kind "default package")
+    (|ncParseFromString| constring)
+    (cons (intern name) (cdr (|ncParseFromString| (concat #\d args))))))
+  (setq pakname (|opOf| conform))
+  (setq domlist (|getDependentsOfConstructor| pakname))
+  (setq cAlist
+    (loop for x in domList collect (cons (|getConstructorForm| x) t)))
+  (|htpSetProperty| htPage '|cAlist| cAlist)
+  (|htpSetProperty| htPage '|thing| "dependent")
+  (|dbShowCons| htPage '|names|)))
+
+(defun |kcdPage| (htPage junk)
+  (declare (ignore junk))
+  (|kcaPage1| htPage "category" " a "
+      "descendant" #'|descendantsOf| t))
+
+(defun |kcdoPage| (htPage junk)
+  (declare (ignore junk))
+  (|kcaPage1| htPage "domain" " a "
+      "descendant" #'|domainsOf| nil))
+
+(defun |kCheckArgumentNumbers| (tt)
+ (let (conname args cosig)
+  (setq conname (car tt))
+  (setq args (cdr tt))
+  (setq cosig (ifcdr (getdatabase conname 'cosig)))
+  (every #'identity 
+   (loop for domain? in cosig for x in args 
+    collect (if domain? (|kCheckArgumentNumbers| x) t)))))
+
+(defun |kcnPage| (htPage junk)
+ (declare (ignore junk))
+ (let (lt1 kind name nargs domname heading conform pakname domlist cAlist
+       conname)
+  (setq lt1 (|htpProperty| htPage '|parts|))
+  (setq kind (first lt1))
+  (setq name (second lt1))
+  (setq conname (intern name))
+  (setq nargs (third lt1))
+  (setq domname (|kDomainName| htPage kind name nargs))
+  (cond
+    ((and (consp domname) (eq (qcar domname) '|error|))
+      (|errorPage| htPage domname))
+    (t
+     (setq heading
+      (if (null domname)
+       (|htpProperty| htPage '|heading|)
+       (list "{\\sf " (|form2HtString| domname nil t) "}")))
+     (if domname
+       (|htpSetProperty| htPage '|domname| domname)
+       (|htpSetProperty| htPage '|heading| heading))
+     (setq conform (|htpProperty| htPage '|conform|))
+     (setq pakname
+      (if (string= kind "category")
+        (intern (concat (pname conname) #\&))
+        (|opOf| conform)))
+     (setq domlist (|getImports| pakname))
+     (when domname
+      (setq domlist
+       (sublislis (cons domname (cdr domname))
+                  (cons '$ (cdr conform)) domlist)))
+     (setq cAlist (loop for x in domList collect (cons x t)))
+     (|htpSetProperty| htPage '|cAlist| cAlist)
+     (|htpSetProperty| htPage '|thing| "benefactor")
+     (|dbShowCons| htPage '|names|)))))
+
+(defun |kcPage| (htPage junk)
+ (declare (ignore junk))
+ (let (lt1 kind name nargs xpart domname conform conname heading page message)
+  (declare (special |$defaultPackageNamesHT|))
+  (setq lt1 (|htpProperty| htPage '|parts|))
+  (setq kind (first lt1))
+  (setq name (second lt1))
+  (setq nargs (third lt1))
+  (setq xpart (fourth lt1))
+  (setq domname (|kDomainName| htPage kind name nargs))
+  (cond
+   ((and (consp domname) (eq (qcar domname) '|error|))
+     (|errorPage| htPage domname))
+   (t 
+     (setq conform (|htpProperty| htPage '|conform|))
+     (setq conname (|opOf| conform))
+     (setq heading
+      (if (null domname)
+        (|htpProperty| htPage '|heading|)
+        (list "{\\sf " (|form2HtString| domname nil t) "}")))
+     (setq page
+      (|htInitPage| (cons "Cross Reference for " heading)
+                    (|htCopyProplist| htPage)))
+     (when domname
+       (|htpSetProperty| htPage '|domname| domname)
+       (|htpSetProperty| htPage '|heading| heading))
+     (when (and (string= kind "category")
+                (|dbpHasDefaultCategory?| xpart))
+       (|htSay| "This category has default package ")
+       (|bcCon| (concat name #\&) ""))
+     (|htSayStandard| "\\newline") 
+     (|htBeginMenu| 3)
+     (|htSayStandard| "\\item ")
+     (setq message
+      (if (string= kind "category")
+        (list "Categories it directly extends")
+        (list "Categories the "
+         (if (string= kind "default package") "package" kind)
+          " belongs to by assertion")))
+     (|htMakePage|
+      (list
+       (list '|bcLinks|
+             (list "\\menuitemstyle{Parents}"
+             (list (list '|text| "\\tab{12}" message)) '|kcpPage| nil))))
+     (|satBreak|)
+     (setq message
+      (if (string= kind "category")
+       (list "All categories it is an extension of")
+       (list "All categories the " kind " belongs to")))
+     (|htMakePage|
+      (list
+       (list '|bcLinks|
+        (list "\\menuitemstyle{Ancestors}"
+         (list (list '|text| "\\tab{12}" message)) '|kcaPage| nil))))
+     (when (string= kind "category") 
+       (|satBreak|)
+       (|htMakePage|
+        (list
+         (list '|bcLinks|
+          (list "\\menuitemstyle{Children}"
+           (list (list '|text| "\\tab{12}" 
+                        "Categories which directly extend this category"))))))
+       (|satBreak|)
+       (|htMakePage|
+        (list
+         (list '|bcLinks|
+          (list "\\menuitemstyle{Descendants}"
+           (list (list '|text| "\\tab{12}" 
+                       "All categories which extend this category")))))))
+     (|satBreak|)
+     (setq message "Constructors mentioning this as an argument type")
+     (|htMakePage|
+       (list
+        (list '|bcLinks|
+         (list "\\menuitemstyle{Dependents}"
+          (list (list '|text| "\\tab{12}" message)) '|kcdePage| nil))))
+     (when (nequal kind "category")
+      (|satBreak|)
+      (|htMakePage|
+       (list
+        (list '|bcLinks|
+         (list "\\menuitemstyle{Lineage}"
+               "\\tab{12}Constructor hierarchy used for operation lookup"
+               '|ksPage| nil)))))
+      (when (string= kind "category")
+       (|satBreak|)
+       (|htMakePage|
+        (list
+         (list '|bcLinks|
+          (list "\\menuitemstyle{Domains}"
+           (list (list '|text| "\\tab{12}" 
+                       "All domains which are of this category"))
+            '|kcdoPage| nil)))))
+      (unless (string= kind "category")
+       (|satBreak|)
+       (|htMakePage|
+        (list
+         (list '|bcLinks|
+          (list "\\menuitemstyle{Clients}" "\\tab{12}Constructors"
+                '|kcuPage| nil))))
+        (if (hget |$defaultPackageNamesHT| conname)
+         (|htSay| " which {\\em may use} this default package")
+         (|htSay| " which {\\em use} this " kind)))
+     (when (or (nequal kind "category") (|dbpHasDefaultCategory?| xpart))
+      (|satBreak|)
+      (setq message
+       (if (string= kind "category")
+         (list "Constructors {\\em used by} its default package")
+         (list "Constructors {\\em used by} the " kind)))
+      (|htMakePage|
+       (list
+        (list '|bcLinks|
+         (list "\\menuitemstyle{Benefactors}"
+          (list (list '|text| "\\tab{12}" message) '|kcnPage| nil))))))
+     (when (|hasNewInfoAlist| conname)
+      (|satBreak|)
+      (setq message (list "Cross reference for capsule implementation"))
+      (|htMakePage|
+       (list
+        (list '|bcLinks|
+         (list "\\menuitemstyle{CapsuleInfo}"
+          (list (list '|text| "\\tab{12}" message)) '|kciPage| nil)))))
+     (|htEndMenu| 3) 
+     (|htShowPage|)))))
+
+(defun |kcpPage| (htPage junk)
+ (declare (ignore junk))
+ (let (lt1 kind name nargs domname heading conform conname page parents choice)
+  (setq lt1 (|htpProperty| htPage '|parts|))
+  (setq kind (first lt1))
+  (setq name (second lt1))
+  (setq nargs (third lt1))
+  (setq domname (|kDomainName| htPage kind name nargs))
+  (cond
+   ((and (consp domname) (eq (qcar domname) '|error|))
+     (|errorPage| htPage domname))
+   (t
+    (setq heading
+     (if (null domname)
+       (|htpProperty| htPage '|heading|)
+       (list "{\\sf " (|form2HtString| domname nil t) "}")))
+    (when domname
+      (|htpSetProperty| htPage '|domname| domname)
+      (|htpSetProperty| htPage '|heading| heading))
+    (setq conform (|htpProperty| htPage '|conform|))
+    (setq conname (|opOf| conform))
+    (setq page
+      (|htInitPage| (cons "Parents of " heading) (|htCopyProplist| htPage)))
+    (setq parents (|parentsOf| conname))
+    (when domname
+     (setq parents (sublislis (cdr domname) (cdr conform) parents)))
+    (|htpSetProperty| htPage '|cAlist| parents)
+    (|htpSetProperty| htPage '|thing| "parent")
+    (setq choice (if domname '|parameters| '|names|))
+    (|dbShowCons| htPage choice)))))
+
+(defun |kDomainName| (htPage kind name nargs)
+ (let (inputAreaList conname args n argTailPart argString typeForm 
+       evaluatedTypeForm)
+  (|htpSetProperty| htPage '|domname| nil)
+  (setq inputAreaList
+   (loop for i from 1 to nargs for var in |$PatternVariableList| 
+    collect (|htpLabelInputString| htPage var)))
+  (|htpSetProperty| htPage '|inputAreaList| inputAreaList)
+  (setq conname (intern name))
+  (setq args
+   (loop for x in inputAreaList 
+         for domain? in (cdr (getdatabase conname 'cosig))
+    collect (or (|kArgumentCheck| domain? x) nil)))
+  (when (some #'identity (loop for x in args collect (null x)))
+    (cond
+     ((> (setq n (apply #'+ (loop for x in args collect (if x 1 0)))) 0)
+      (list '|error| nil "\\centerline{You gave values for only {\\em "
+            n " } of the {\\em " (|#| args) "}}"
+            "\\centerline{parameters of {\\sf " name
+            "}}\\vspace{1}\\centerline{Please enter either {\\em all} or "
+            "{\\em none} of the type parameters}")
+       nil)
+     (t
+      (setq argString
+       (cond
+        ((null args) "()")
+        (t
+          (setq argTailPart
+           (apply #'concat
+            (loop for x in (ifcdr args) collect (apply #'concat (cons "," x)))))
+          (apply #'concat (list "(" (car args) argTailPart ")")))))
+      (setq typeForm
+       (or (catch 'spad_reader (|unabbrev| (|mkConform| kind name argString)))
+           (list '|error| '|invalidType| (concat name argString))))
+      (if (null (setq evaluatedTypeForm (|kisValidType| typeForm)))
+       (list  '|error| '|invalidType| (concat name argString))
+       (|dbMkEvalable| evaluatedTypeForm)))))))
+
+(defun |kdPageInfo| (name abbrev nargs conform signature file?)
+ (let (sourceFileName filename)
+  (|htSay| '|{\\sf | name "}")
+  (when (nequal abbrev name) (|bcHt| (list '| has abbreviation | abbrev)))
+  (when file? (|bcHt| (list " is a source file.")))
+  (cond
+    ((eql nargs 0)
+      (when (nequal abbrev name) (|bcHt| ".")))
+    (t
+     (when (nequal abbrev name) (|bcHt| " and"))
+     (|bcHt| 
+      (if (eql nargs 1)
+        " takes one argument:"
+        (list '| takes | (princ-to-string nargs) '| arguments:|)))))
+  (|htSayStandard| "\\indentrel{2}")
+  (when (> nargs 0) (|kPageArgs| conform signature))
+  (|htSayStandard| "\\indentrel{-2}")
+  (when (char= (elt name (1- (|#| name))) #\&)
+    (setq name (subseq name 0 (1- (|#| name)))))
+  (setq sourceFileName (getdatabase (intern name) 'sourcefile))
+  (setq filename (|extractFileNameFromPath| sourceFileName))
+  (when (nequal filename "")
+    (|htSayStandard| "\\newline{}")
+    (|htSay| "The source code for the constructor is found in "))
+  (|htMakePage|
+    (list (list '|text| "\\unixcommand{" filename "}{\\$AXIOM/lib/SPADEDIT " 
+                sourceFileName " " name "}")))
+  (when (nequal nargs 0) (|htSay| "."))))
+
+(defun |KeepPart?| (|st|)
+ "used in incLude1 for parsing"
+ (eql (remainder |st| 10) 1))
+
+(defun |kePage| (htPage junk)
+ (declare (ignore junk))
+ (let (|$conformsAreDomains| lt1 kind name nargs args constring domname
+        conform conname heading data conlist attrlist oplist prefix page)
+  (declare (special |$conformsAreDomains|))
+   (setq lt1 (|htpProperty| htPage '|parts|))
+   (setq kind (first lt1))
+   (setq name (second lt1))
+   (setq nargs (third lt1))
+   (setq args (sixth lt1))
+   (setq constring (concat name args))
+   (setq domname (|kDomainName| htPage kind name nargs))
+   (cond
+    ((and (consp domname) (eq (qcar domname) '|error|))
+      (|errorPage| htPage domname))
+    (t 
+      (|htpSetProperty| htPage '|domname| domname)
+      (setq |$conformsAreDomains| domname)
+      (setq conform (|mkConform| kind name args))
+      (setq conname (|opOf| conform))
+      (setq heading
+       (list (|capitalize| kind) " {\\sf "
+           (if domname (|form2HtString| domname nil t) constring) "}" ))
+      (setq data
+        (|sublisFormal|
+          (or (ifcdr domname) (cdr conform))
+          (|getConstructorExports| (or domname conform) t)))
+      (setq conlist (car data))
+      (setq attrlist (cadr data))
+      (setq oplist (cddr data))
+      (when domname
+       (dolist (x conlist)  (rplac (cdr x)  (|simpHasPred| (cdr x))))
+       (dolist (x attrlist) (rplac (cddr x) (|simpHasPred| (cddr x))))
+       (dolist (x oplist)   (rplac (cddr x) (|simpHasPred| (cddr x)))))
+      (setq prefix
+       (|pluralSay| (+ (+ (|#| conlist) (|#| attrlist)) (|#| oplist))
+                    "Export" "Exports"))
+      (setq page
+       (|htInitPage| (append prefix (cons " of " heading))
+                     (|htCopyProplist| htPage)))
+      (|htSayStandard| "\\beginmenu ")
+      (|htpSetProperty| page '|data| data)
+      (when conlist
+        (|htMakePage|
+          (list
+           (list '|bcLinks|
+            (list (|menuButton|) "" '|dbShowCons1| conlist '|names|))))
+        (|htSayStandard| "\\tab{2}")
+        (|htSay| "All attributes and operations from:")
+        (|bcConPredTable| conlist (|opOf| conform) (cdr conform)))
+      (when attrlist
+        (when conlist (|htBigSkip|))
+        (|kePageDisplay| page "attribute" (|kePageOpAlist| attrlist)))
+      (when oplist
+        (when (or conlist attrlist) (|htBigSkip|))
+        (|kePageDisplay| page "operation" (|kePageOpAlist| oplist)))
+      (|htSayStandard| " \\endmenu ")
+      (|htShowPage|)))))
+
+(defun |kePageDisplay| (htPage which opAlist)
+ (let (count total expandProperty data)
+  (setq count (|#| opAlist))
+  (cond
+   ((eql count 0) nil)
+   (t
+    (setq total
+     (apply #'+ (loop for entry in opAlist collect (|#| (cdr entry)))))
+    (if (string= which "operation")
+      (|htpSetProperty| htPage '|opAlist| opAlist)
+      (|htpSetProperty| htPage '|attrAlist| opAlist))
+    (setq expandProperty
+     (if (string= which "operation") 
+       '|expandOperations|
+       '|expandAttributes|))
+    (|htpSetProperty| htPage expandProperty '|lists|)
+    (|htMakePage|
+     (list
+      (list '|bcLinks| (list (|menuButton|) "" '|dbShowOps| which '|names|))))
+    (|htSayStandard| "\\tab{2}")
+    (unless (= count total)
+      (if (eql count 1)
+       (|htSay| "1 name for ")
+       (|htSay| (princ-to-string count) " names for ")))
+    (if (> total 1)
+      (|htSay| (princ-to-string total) " " (|pluralize| which) 
+               " are explicitly exported:")
+      (|htSay| "1 " which " is explicitly exported:"))
+    (setq data (|dbGatherData| htPage opAlist which '|names|))
+    (|dbShowOpItems| which data nil)))))
+
+(defun |kePageOpAlist| (oplist)
+ (let (op sig pred u opAlist)
+  (dolist (item oplist)
+    (setq op (car item))
+    (setq sig (cadr item))
+    (setq pred (cddr item))
+    (setq u (lassoc op opAlist))
+    (setq opAlist
+     (|insertAlist| (|zeroOneConvert| op)
+                    (cons (list sig pred) u)
+                    opAlist)))
+   opAlist))
+
+(defun |kiPage| (htPage junk)
+ (declare (ignore junk))
+ (let (lt1 kind name nargs args conform domname heading page)
+  (declare (special |$conformsAreDomains|))
+   (setq lt1 (|htpProperty| htPage '|parts|))
+   (setq kind (first lt1))
+   (setq name (second lt1))
+   (setq nargs (third lt1))
+   (setq args (sixth lt1))
+   (setq conform (|mkConform| kind name args))
+   (setq domname (|kDomainName| htPage kind name nargs))
+   (cond
+     ((and (consp domname) (eq (qcar domname) '|error|))
+           (|errorPage| htPage domname))
+     (t
+      (setq heading
+        (list "Description of " (|capitalize| kind) " {\\sf " name args "}"))
+      (setq page (|htInitPage| heading (|htCopyProplist| htPage)))
+      (setq |$conformsAreDomains| domname)
+      (|dbShowConsDoc1| htPage conform nil)
+      (|htShowPage|)))))
+
+(defun |kisValidType| (typeForm)
+ (let (|$ProcessInteractiveValue| |$noEvalTypeMsg| it1)
+ (declare (special |$ProcessInteractiveValue| |$noEvalTypeMsg|))
+  (setq |$ProcessInteractiveValue| t)
+  (setq |$noEvalTypeMsg| t)
+  (setq it1 (catch 'spad_reader (|processInteractive| typeForm nil)))
+  (when  (and (consp it1) (consp (qcar it1)))
+     (|member| (caar it1) '(domain |SubDomain|)))
+  (and (|kCheckArgumentNumbers| (qcdr it1)) (qcdr it1))))
+
+(defun |koaPageFilterByName| (htPage functionToCall)
+ (let (filter which opAlist)
+  (cond
+   ((string= (|htpLabelInputString| htPage '|filter|) "")
+    (|koaPageFilterByCategory| htPage functionToCall))
+   (t
+    (setq filter (|pmTransFilter| (|dbGetInputString| htPage)))
+    (setq which (|htpProperty| htPage '|which|))
+    (setq opAlist
+     (loop for x in (|htpProperty| htPage '|opAlist|)
+           when (|superMatch?| filter (downcase (princ-to-string (car x))))
+           collect x))
+    (|htpSetProperty| htPage '|opAlist| opAlist)
+    (funcall functionToCall htPage nil)))))
+
+(defun |koPage| (htPage which)
+ (let (lt1 kind name nargs args constring conname u IT1 domname headingString 
+       heading)
+  (setq lt1 (|htpProperty| htPage '|parts|))
+  (setq kind (first lt1))
+  (setq name (second lt1))
+  (setq nargs (third lt1))
+  (setq args (sixth lt1))
+  (setq constring (concat name args))
+  (setq conname (intern name))
+  (setq IT1 (setq u (|htpProperty| htPage '|domname|)))
+  (setq domname
+   (cond
+    ((and (consp IT1) (equal (qcar IT1) conname)
+      (or (eq (|htpProperty| htPage '|fromConOpPage1|) t)
+          (|koPageInputAreaUnchanged?| htPage nargs)))
+       u)
+    (t (|kDomainName| htPage kind name nargs))))
+  (cond
+   ((and (consp domname) (eq (qcar domname) '|error|))
+    (|errorPage| htPage domname))
+   (t 
+    (|htpSetProperty| htPage '|domname| domname)
+    (setq headingString (if domname (|form2HtString| domname nil t) constring))
+    (setq heading (list (|capitalize| kind) " {\\sf " headingString "}" ))
+    (|htpSetProperty| htPage '|which| which)
+    (|htpSetProperty| htPage '|heading| heading)
+    (|koPageAux| htPage which domname heading)))))
+
+(defun |koPageAux| (htPage which domname heading)
+ (let (conform selectedOperation opAlist)
+  (|htpSetProperty| htPage '|which| which)
+  (setq domname (|htpProperty| htPage '|domname|))
+  (setq conform (|htpProperty| htPage '|conform|))
+  (setq heading (|htpProperty| htPage '|heading|))
+  (setq opAlist
+   (cond
+    ((string= which "attribute") (|koAttrs| conform domname))
+    ((string= which "general operation") (|koOps| conform domname t))
+    (t (|koOps| conform domname))))
+  (cond
+   ((setq selectedOperation (|htpProperty| htPage '|selectedOperation|))
+    (setq opAlist
+     (list (or (|assoc| selectedOperation opAlist) (|systemError|))))))
+  (|dbShowOperationsFromConform| htPage which opAlist)))
+
+(defun |koPageAux1| (htPage opAlist)
+ (let (which)
+  (setq which (|htpProperty| htPage '|which|))
+  (|dbShowOperationsFromConform| htPage which opAlist)))
+
+(defun |koPageFromKKPage| (htPage ao)
+  (|koPageAux| htPage ao (|htpProperty| htPage '|domname|)
+      (|htpProperty| htPage '|heading|)))
+
+(defun |koPageInputAreaUnchanged?| (htPage nargs)
+ (equal
+  (loop for i from 1 to nargs 
+   collect
+   (|htpLabelInputString| htPage (intern (concat "*" (princ-to-string i)))))
+  (|htpProperty| htPage '|inputAreaList|)))
+
+(defun |ksPage| (htPage junk)
+ (declare (ignore junk))
+ (let (lt1 kind name nargs domname heading domain conform page u)
+  (setq lt1 (|htpProperty| htPage '|parts|))
+  (setq kind (first lt1))
+  (setq name (second lt1))
+  (setq nargs (third lt1))
+  (setq domname (|kDomainName| htPage kind name nargs))
+  (cond
+   ((and (consp domname) (eq (qcar domname) '|error|))
+     (|errorPage| htPage domname))
+   (t
+     (setq heading
+      (if (null domname)
+        (|htpProperty| htPage '|heading|)
+        (list "{\\sf " (|form2HtString| domname nil t) "}")))
+     (when domname
+       (|htpSetProperty| htPage '|domname| domname)
+       (|htpSetProperty| htPage '|heading| heading))
+     (setq domain (unless (string= kind "category") (eval domname)))
+     (setq conform (|htpProperty| htPage '|conform|))
+     (setq page
+      (|htInitPageNoScroll| (|htCopyProplist| htPage)
+        (cons "Search order for " heading)))
+     (|htSay| (concat 
+       "When an operation is not defined by the domain, the following "
+       "domains are searched in order for a \"default definition"))
+     (|htSayStandard| "\\beginscroll ")
+     (setq u (|dbSearchOrder| conform domname domain))
+     (|htpSetProperty| htPage '|cAlist| u)
+     (|htpSetProperty| htPage '|thing| "constructor")
+     (|dbShowCons| htPage '|names|)))))
+
+(defun |kcuPage| (htPage junk)
+ (declare (ignore junk))
+ (let (lt1 kind name args constring conform pakname domlist cAlist)
+   (setq lt1 (|htpProperty| htPage '|parts|))
+   (setq kind (first lt1))
+   (setq name (second lt1))
+   (setq args (sixth lt1))
+   (setq constring (concat name args))
+   (setq conform
+    (if (nequal kind "default package")
+      (|ncParseFromString| constring)
+      (cons (intern name)
+            (cdr (|ncParseFromString| (concat #\d args))))))
+   (setq pakname
+    (if (string= kind "category")
+      (intern (concat name #\&))
+      (|opOf| conform)))
+   (setq domlist (|getUsersOfConstructor| pakname))
+   (setq cAlist
+    (loop for x in domlist collect (cons (|getConstructorForm| x) t)))
+   (|htpSetProperty| htPage '|cAlist| cAlist)
+   (|htpSetProperty| htPage '|thing| "user")
+   (|dbShowCons| htPage '|names|)))
+
+(defun |kPage| (&rest a1)
+ (let (parts name nargs sig args form isFile kind 
+       conform conname capitalKind signature sourceFileName constrings 
+       emString heading page options line)
+  (declare (special |$conformsAreDomains| |$atLeastOneUnexposed|))
+   (setq line (car a1))
+   (setq options (cdr a1))
+   ; constructors Cname\#\E\sig \args   \abb \comments (C is C, D, P, X)
+   (setq parts (|dbXParts| line 7 1))
+   (setq kind (first parts))
+   (setq name (second parts))
+   (setq nargs (third parts))
+   (setq sig (fifth parts))
+   (setq args (sixth parts))
+   (setq form (ifcar options))
+   (setq isFile (null kind))
+   (setq kind (or kind "package"))
+   (rplaca parts kind)
+   (setq conform (|mkConform| kind name args))
+   (setq conname (|opOf| conform))
+   (setq capitalKind (|capitalize| kind))
+   (setq signature (|ncParseFromString| sig))
+   (setq sourceFileName (|dbSourceFile| (intern name)))
+   (setq constrings
+     (if (ifcdr form)
+      (|dbConformGenUnder| form)
+      (list (concat name args))))
+   (setq emString (cons "{\\sf " (append constrings (list "}"))))
+   (setq heading (cons capitalKind (cons " " emString)))
+   (unless (|isExposedConstructor| conname)
+     (setq heading (cons "Unexposed " heading)))
+   (setq page (|htInitPageNoScroll| NIL))
+   (|htAddHeading| heading)
+   (|htSayStandard| '|\\beginscroll |)
+   (|htpSetProperty| page '|isFile| t)
+   (|htpSetProperty| page '|parts| parts)
+   (|htpSetProperty| page '|heading| heading)
+   (|htpSetProperty| page '|kind| kind)
+   (|htpSetProperty| page '|conform| conform)
+   (|htpSetProperty| page '|signature| signature)
+   ; what follows is stuff from kiPage with domain = nil
+   (setq |$conformsAreDomains| nil)
+   (|dbShowConsDoc1| page conform nil)
+   (when (and (nequal kind '|category|) (> nargs 0))
+     (|addParameterTemplates| page conform))
+   (when |$atLeastOneUnexposed|
+     (|htSay| "\\newline{}{\\em *} = unexposed"))
+   (|htSayStandard| '|\\endscroll |)
+   (|kPageContextMenu| page)
+   (|htShowPageNoScroll|)))
+
+(defun |kSearch| (filter)
+  (|constructorSearch| (|checkFilter| filter) '|k| "constructor"))
+
+(defun |kTestPred| (n)
+ (declare (special |$predvec| |$domain|))
+ (cond
+   ((eql n 0) t)
+   (|$domain| (|testBitVector| |$predvec| n))
+   (t (|simpHasPred| (elt |$predvec| (1- n))))))
+
+
+(defun |lassocSub| (x subs)
+ (let (y) 
+  (if (setq y (lassq x subs)) 
+    y
+    x)))
+
+(defun |lastTokPosn| (arg) (|tokPosn| (cadr arg)))
+
+(defun |leaveScratchpad| () 
+ "Leave the Axiom interpreter"
+ (bye)) 
+
+(defun |lefts| (u)
+ (let (keys)
+  (setq keys (hkeys *hascategory-hash*))
+  (loop for x in keys when (equal (cdr x) u) collect x)))
+
+(defun |letPrint| (x |val| |currentFunction|)
+ (prog (y)
+ (declare (special |$letAssoc|))
+  (return
+   (progn
+    (cond ((and |$letAssoc| 
+                (or
+                 (setq y (lassoc |currentFunction| |$letAssoc|))
+                 (setq y (lassoc '|all| |$letAssoc|))))
+     (cond
+      ((and (or (eq y '|all|)
+                 (member x y))
+            (null 
+             (or (isgenvar x) (|isSharpVarWithNum| x) (gensymp x))))
+        (|sayBrightlyNT| (append (|bright| x) (cons '|: | nil)))
+        (prin1 (|shortenForPrinting| |val|))
+        (terpri)))
+     (cond
+      ((and (setq y (|hasPair| 'break y))
+            (or (eq y '|all|)
+                (and (member x y)
+                     (null (member (elt (pname x) 0) '($ |#|)))
+                     (null (gensymp x)))))
+       (|break|
+        (append 
+         (|bright| |currentFunction|)
+         (cons "breaks after"
+          (append
+           (|bright| x)
+           (cons ":= " (cons (|shortenForPrinting| |val|) nil)))))))
+      (t nil))))
+    |val|)))) 
+
+(defun |letPrint2| (x |printform| |currentFunction|)
+ (prog (|$BreakMode| |flag| y)
+  (declare (special |$BreakMode| |$letAssoc|))
+  (return
+   (progn
+    (setq |$BreakMode| nil)
+    (cond
+     ((and |$letAssoc| 
+           (or (setq y (lassoc |currentFunction| |$letAssoc|))
+               (setq y (lassoc '|all| |$letAssoc|))))
+      (cond
+       ((and
+          (or (eq y '|all|) (member x y))
+          (null (or (isgenvar x) (|isSharpVarWithNum| x) (gensymp x))))
+         (setq |$BreakMode| '|letPrint2|)
+         (setq |flag| nil)
+         (catch '|letPrint2| 
+          (|mathprint| (cons '= (cons x (cons |printform| nil)))) |flag|)
+         (cond 
+          ((eq |flag| '|letPrint2|) (|print| |printform|))
+          (t nil))))
+      (cond 
+       ((and 
+         (setq y (|hasPair| 'break y))
+         (or (eq y '|all|)
+             (and 
+              (member x y)
+              (null (member (elt (pname x) 0) '($ |#|)))
+              (null (gensymp x)))))
+        (|break|
+         (append
+          (|bright| |currentFunction|)
+          (cons "breaks after" 
+           (append (|bright| x) (cons '|:= | (cons |printform| nil)))))))
+       (t nil))))
+    x)))) 
+
+(defun |letPrint3| (x |xval| |printfn| |currentFunction|)
+ (prog (|$BreakMode| |flag| y)
+  (declare (special |$BreakMode| |$letAssoc|))
+  (return
+   (progn
+    (setq |$BreakMode| nil)
+    (cond
+     ((and |$letAssoc| 
+       (or (setq y (lassoc |currentFunction| |$letAssoc|))
+           (setq y (lassoc '|all| |$letAssoc|))))
+       (cond
+        ((and
+           (or (eq y '|all|) (member x y))
+           (null (or (isgenvar x) (|isSharpVarWithNum| x) (gensymp x))))
+          (setq |$BreakMode| '|letPrint2|)
+          (setq |flag| nil)
+          (catch '|letPrint2|
+           (|mathprint|
+            (cons '= (cons x (cons (spadcall |xval| |printfn|) nil))))
+           |flag|)
+          (cond
+           ((eq |flag| '|letPrint2|) (|print| |xval|))
+           (t nil))))
+       (cond
+        ((and
+          (setq y (|hasPair| 'break y))
+          (or
+           (eq y '|all|)
+           (and
+            (member x y)
+            (null (member (elt (pname x) 0) '($ |#|)))
+            (null (gensymp x)))))
+          (|break|
+           (append
+            (|bright| |currentFunction|)
+            (cons "breaks after"
+             (append (|bright| x) (cons ":= " (cons |xval| nil)))))))
+        (t nil))))
+    x)))) 
+
+(defun |lfkey| (x)
+ (list '|key| (|keyword| x)))
+
+(defun |libConstructorSig| (arg)
+ (labels (
+  (fn (x)
+   (cond
+    ((atom x) x)
+    ((and (consp x) (eq (qcar x) '|Join|) (consp (qcdr x)))
+      (list '|Join| (fn (qcadr x)) '|etc|))
+    ((and (consp x) (eq (qcar x) 'category))
+     '|etc|)
+    (t
+     (loop for y in x collect (fn y)))))
+  (g (x u i)
+   "does x appear in any but i-th element of u?"
+   (some #'identity
+    (loop for y in u for j from 1
+     when (not (= i j))
+     collect (contained x y)))))
+ (let (conname argl formals keys sig sigpart)
+ (declare (special |$TriangleVariableList|))
+  (setq conname (car arg))
+  (setq argl (cdr arg))
+  (setq sig (cdar (getdatabase conname 'constructormodemap)))
+  (setq formals (take (|#| argl) |$FormalMapVariableList|))
+  (setq sig (sublislis formals |$TriangleVariableList| sig))
+  (setq keys
+   (loop for f in formals for i from 1
+    collect (g f sig i)))
+  (setq sig
+   (fn (sublislis argl |$FormalMapVariableList| sig)))
+  (setq sig (cons (car sig)
+   (loop for a in argl for s in (cdr sig) for k in keys
+    collect (if k (list #\: a s) s))))
+  (setq sigpart (|form2LispString| (cons '|Mapping| sig)))
+  (unless (|ncParseFromString| sigpart)
+    (|sayBrightly| (list "Won't parse: " sigpart)))
+  sigpart)))
+
+(defun |library| (args)
+ (let (original-directory)
+ (declare (special |$options| |$newConlist|))
+  (setq original-directory (get-current-directory))
+  (setq |$newConlist| nil)
+  (localdatabase args |$options|)
+  (|extendLocalLibdb| |$newConlist|)
+  (system::chdir original-directory)
+  (tersyscommand)))
+
+(defun |license| (l)
+ (declare (ignore l))
+ (obey (concat "cat " (getenviron "AXIOM") "/doc/spadhelp/copyright.help")))
+
+(defun |linearFinalRequest| (nhh mat vect)
+ (declare (ignore mat vect))
+ (let (tt)
+  (|sayBrightly| "Do you want more information on the meaning of the output")
+  (|sayBrightly| "   (1) no ")
+  (|sayBrightly| "   (2) yes ")
+  (setq tt (|bcQueryInteger| 1 2 t))
+  (cond
+   ((eql tt 1) (|sayBrightly| "Bye Bye"))
+   ((eql tt 2) (|explainLinear| nhh)))))
+
+(defun |lineoftoks| (s)
+ (let (|$floatok| |$sz| |$n| |$linepos| |$ln| |$r| |$f| |b| |a| |toks|)
+ (declare (special |$floatok| |$f| |$sz| |$linepos| |$r| |$n| |$ln|))
+  (setq |$f| nil)
+  (setq |$r| nil)
+  (setq |$ln| nil)
+  (setq |$linepos| nil)
+  (setq |$n| nil)
+  (setq |$sz| nil)
+  (setq |$floatok| t)
+  (cond
+   ((null (|nextline| s)) (cons nil nil))
+   ((null (|scanIgnoreLine| |$ln| |$n|)) (cons nil |$r|))
+   (t
+    (setq |toks| nil)
+    (setq |a| (|incPrefix?| "command" 1 |$ln|))
+    (cond
+     (|a|
+      (setq |$ln| (substring |$ln| 8 nil))
+      (setq |b|
+       (|dqUnit| (|constoken| |$ln| |$linepos| (list '|command| |$ln|) 0)))
+      (cons (list (list |b| s)) |$r|))
+     (t
+      ((lambda ()
+        (loop
+         (cond
+          ((not (< |$n| |$sz|)) (return nil))
+          (t (setq |toks| (|dqAppend| |toks| (|scanToken|))))))))
+      (cond
+       ((null |toks|) (cons nil |$r|))
+       (t (cons (list (list |toks| s)) |$r|)))))))))
+
+(defun |linkGen| (command)
+ (|bcGen| command))
+
+(defun |listConstructorAbbreviations| ()
+ (let (x)
+  (setq x
+   (upcase
+     (|queryUserKeyedMsg|
+      (format nil
+       "You have requested that all abbreviations be displayed. As there are ~
+        several hundred abbreviations, please confirm your request by ~
+        typing y or yes and then pressing Enter :")
+       nil)))
+  (if (member (string2id-n x 1) '(Y YES))
+   (progn
+    (|whatSpad2Cmd| '(|categories|))
+    (|whatSpad2Cmd| '(|domains|))
+    (|whatSpad2Cmd| '(|packages|)))
+   (|sayKeyedMsg| 
+    (format nil
+     "Since you did not respond with y or yes the list of abbreviations ~
+      will not be displayed.")
+     nil))))
+
+(defun |listDecideHowMuch| (pos oldPos)
+ (cond
+  ((or (and (|poNopos?| pos) (|poNopos?| oldPos))
+       (and (|poPosImmediate?| pos) (|poPosImmediate?| oldPos)))
+    'none)
+  ((|poNopos?| pos) 'org)
+  ((|poNopos?| oldPos) 'none)
+  ((< (|poGlobalLinePosn| pos) (|poGlobalLinePosn| oldPos))
+   (if (|poPosImmediate?| pos) 'org 'line))
+  (t 'none)))
+
+(defun |listOfStrings2String| (u)
+ (cond
+  ((null u) "")
+  (t (concat (|listOfStrings2String| (cdr u)) " " (|stringize| (car u))))))
+
+(defun |listOutputter| (outputList)
+ (dolist (msg outputList)
+  (|msgOutputter| msg)))
+
+(defun lncgamma (z)
+ (clngammaImpl (realpart z) (imagpart z) z))
+
+(defun |lnFileName| (lineObject)
+ (let (fN)
+  (if (setq fN (|lnFileName?| lineObject))
+   fN
+   (|ncBug| "there is no file name in %1" (list lineObject)))))
+
+(defun |loadFunctor| (u)
+ (cond
+   ((null (atom u)) (|loadFunctor| (car u)))
+   (t
+     (|loadLibIfNotLoaded| u)
+     u)))
+
+(defun |loadLib| (cname)
+ (let (fullLibName systemdir? update? kind u sig coSig)
+ (declare (special |$CategoryFrame| |$InteractiveMode| |$printLoadMsgs|
+                   |$forceDatabaseUpdate|))
+  (|startTimingProcess| '|load|)
+  (when (setq fullLibName (getdatabase cname 'object))
+   (setq systemdir? (|isSystemDirectory| (|pathnameDirectory| fullLibName)))
+   (setq update? (or |$forceDatabaseUpdate| (null systemdir?)))
+   (cond
+    ((null update?) (|loadLibNoUpdate| cname cname fullLibName))
+    (t
+     (setq kind (getdatabase cname 'constructorkind))
+     (when |$printLoadMsgs|
+       (|sayKeyedMsg| "Loading %1 for %2 %3"
+        (list (|namestring| fullLibName) kind cname)))
+     (load fullLibName)
+     (|clearConstructorCache| cname)
+     (|updateDatabase| cname cname systemdir?)
+     (|installConstructor| cname kind)
+     (setq u (getdatabase cname 'constructormodemap))
+     (|updateCategoryTable| cname kind)
+     (setq coSig
+      (when u
+        (setq sig (cdar u))
+        (cons nil (loop for x in (cdr sig) collect (|categoryForm?| x)))))
+     (if (null (cdr (getdatabase cname 'constructorform)))
+       (setf (get cname 'niladic) t)
+       (remprop cname 'niladic))
+     (setf (get cname 'loaded) fullLibName)
+     (when |$InteractiveMode| (setq |$CategoryFrame| (list (list nil))))
+     (|stopTimingProcess| '|load|)
+     t)))))
+
+(defun |loadLibNoUpdate| (cname libName fullLibName)
+ (declare (ignore libName))
+ (let (kind)
+ (declare (special |$CategoryFrame| |$InteractiveMode| |$printLoadMsgs|))
+  (setq kind (getdatabase cname 'constructorkind))
+  (when |$printLoadMsgs|
+    (|sayKeyedMsg| "Loading %1 for %2 %3"
+     (list (|namestring| fullLibName) kind cname)))
+  (cond
+   ((equal (catch 'versioncheck (load fullLibName)) (- 1))
+     (princ "   wrong library version...recompile ")
+     (princ fullLibName)
+     (terpri)
+     (toplevel))
+   (t
+     (|clearConstructorCache| cname)
+     (|installConstructor| cname kind)
+     (setf (get cname 'loaded) fullLibName)
+     (when |$InteractiveMode| (setq |$CategoryFrame| (list (list nil))))
+     (|stopTimingProcess| '|load|)))
+  t))
+
+(defun localdatabase (filelist options &optional (make-database? nil))
+ "read a local filename and update the hash tables"
+ (labels (
+  (processOptions (options)
+   (let (only dir noexpose)
+    (when (setq only (assoc '|only| options))
+     (setq options (lisp::delete only options :test #'equal))
+     (setq only (cdr only)))
+    (when (setq dir (assoc '|dir| options))
+     (setq options (lisp::delete dir options :test #'equal))
+     (setq dir (second dir))
+     (when (null dir)
+      (|sayKeyedMsg| 
+       "Ignoring )dir because an explicit directory was not given after )dir."
+        nil)))
+    (when (setq noexpose (assoc '|noexpose| options))
+     (setq options (lisp::delete noexpose options :test #'equal))
+     (setq noexpose 't) )
+    (when options
+     (format t "   Ignoring unknown )library option: ~a~%" options))
+    (values only dir noexpose)))
+  (processDir (dirarg thisdir)
+   (let (allfiles)
+    (declare (special vmlisp::*index-filename*))
+    (system::chdir (string dirarg))
+    (setq allfiles (directory "*"))
+    (system::chdir thisdir)
+    (directory (concatenate 'string "*.nrlib/" vmlisp::*index-filename*)))))
+ (let (thisdir nrlibs object only dir key  (|$forceDatabaseUpdate| t) noexpose)
+  (declare (special |$forceDatabaseUpdate| vmlisp::*index-filename*
+                    |$ConstructorCache|))
+  (setq thisdir (namestring (truename ".")))
+  (setq noexpose nil)
+  (multiple-value-setq (only dir noexpose) (processOptions options))
+     ;don't force exposure during database build
+  (if make-database? (setq noexpose t))
+  (when dir (setq nrlibs (processDir dir thisdir)))
+  (dolist (file filelist)
+   (let* ((file (string file))
+          (filename (pathname-name file))
+          (namedir (directory-namestring file)))
+    (unless namedir (setq thisdir (concatenate 'string thisdir "/")))
+    (cond
+     ((setq file (probe-file
+       (concatenate 'string namedir filename ".nrlib/"
+                    vmlisp::*index-filename*)))
+      (push (namestring file) nrlibs))
+     ('else (format t "   )library cannot find the file ~a.~%" filename)))))
+  (dolist (file (nreverse nrlibs))
+   (setq key (pathname-name (first (last (pathname-directory file)))))
+   (setq object (concatenate 'string (directory-namestring file) "code"))
+   (localnrlib key file object make-database? noexpose))
+  (clrhash |$ConstructorCache|))))
+
+(defun localnrlib (key nrlib object make-database? noexpose)
+ "given a string pathname of an index.kaf and the object update the database"
+ (labels (
+  (fetchdata (alist in index)
+   (let (pos)
+    (setq pos (third (assoc index alist :test #'string=)))
+    (when pos
+     (file-position in pos)
+     (read in)))))
+ (let (alist kind (systemdir? nil) pos constructorform oldmaps abbrev dbstruct)
+  (declare (special *allOperations* *allconstructors*
+                    |$FormalMapVariableList|))
+  (with-open-file (in nrlib)
+   (file-position in (read in))
+   (setq alist (read in))
+   (setq pos (third (assoc "constructorForm" alist :test #'string=)))
+   (file-position in pos)
+   (setq constructorform (read in))
+   (setq key (car constructorform))
+   (setq oldmaps (getdatabase key 'modemaps))
+   (setq dbstruct (make-database))
+   (setq *allconstructors* (adjoin key *allconstructors*))
+   (setf (get key 'database) dbstruct) ; store the struct, side-effect it...
+   (setf (database-constructorform dbstruct) constructorform)
+   (setq *allOperations* nil)   ; force this to recompute
+   (setf (database-object dbstruct) object)
+   (setq abbrev
+     (intern (pathname-name (first (last (pathname-directory object))))))
+   (setf (database-abbreviation dbstruct) abbrev)
+   (setf (get abbrev 'abbreviationfor) key)
+   (setf (database-operationalist dbstruct) nil)
+   (setf (database-operationalist dbstruct)
+    (fetchdata alist in "operationAlist"))
+   (setf (database-constructormodemap dbstruct)
+    (fetchdata alist in "constructorModemap"))
+   (setf (database-modemaps dbstruct) (fetchdata alist in "modemaps"))
+   (setf (database-sourcefile dbstruct) (fetchdata alist in "sourceFile"))
+   (when make-database?
+    (setf (database-sourcefile dbstruct)
+     (file-namestring  (database-sourcefile dbstruct))))
+   (setf (database-constructorkind dbstruct)
+    (setq kind (fetchdata alist in "constructorKind")))
+   (setf (database-constructorcategory dbstruct)
+    (fetchdata alist in "constructorCategory"))
+   (setf (database-documentation dbstruct)
+    (fetchdata alist in "documentation"))
+   (setf (database-attributes dbstruct)
+    (fetchdata alist in "attributes"))
+   (setf (database-predicates dbstruct)
+    (fetchdata alist in "predicates"))
+   (setf (database-niladic dbstruct)
+    (when (fetchdata alist in "NILADIC") t))
+  (addoperations key oldmaps)
+  (unless make-database?
+   (if (eq kind '|category|)
+    (setf (database-ancestors dbstruct)
+     (sublislis |$FormalMapVariableList|
+      (cdr constructorform) (fetchdata alist in "ancestors"))))
+   (|updateDatabase| key key systemdir?) ;makes many hashtables???
+   (|installConstructor| key kind) ;used to be key cname ...
+   (|updateCategoryTable| key kind)
+   (if |$InteractiveMode| (setq |$CategoryFrame| |$EmptyEnvironment|)))
+  (setf (database-cosig dbstruct)
+    (cons nil (mapcar #'|categoryForm?|
+     (cddar (database-constructormodemap dbstruct)))))
+  (remprop key 'loaded)
+  (if (null noexpose) (|setExposeAddConstr| (cons key nil)))
+  (setf (symbol-function key) ; sets the autoload property for cname
+    #'(lambda (&rest args)
+     (unless (get key 'loaded)
+      (|startTimingProcess| '|load|)
+      (|loadLibNoUpdate| key key object)) ; used to be cname key
+     (apply key args)))
+  (|sayKeyedMsg| "%1 will be automatically loaded when needed from %2"
+   (list key object))))))
+
+(defun |lookupInDomainVector| (op sig domain dollar)
+ (if (consp domain)
+   (|basicLookupCheckDefaults| op sig domain domain)
+   (spadcall op sig dollar (elt domain 1))))
+
+(defun |loopIters2Sex| (iterList)
+ (let (j incr i var sex result tmp1 tmp2 tmp3 tmp4 tmp5 tmp6 tmp7 tmp8)
+  (dolist (iter iterList (nreverse result))
+   (setq sex (|pf2Sex1| iter))
+   (cond
+    ((and (consp sex) 
+          (eq (car sex) 'in)
+          (progn
+           (setq tmp1 (cdr sex))
+           (and (consp tmp1)
+                (progn
+                 (setq var (car tmp1))
+                 (setq tmp2 (cdr tmp1))
+                 (and (consp tmp2)
+                      (eq (cdr tmp2) nil)
+                      (progn
+                       (setq tmp3 (car tmp2))
+                       (and (consp tmp3)
+                            (eq (car tmp3) 'segment)
+                            (progn
+                             (setq tmp4 (cdr tmp3))
+                             (and (consp tmp4)
+                                  (progn
+                                   (setq i (car tmp4))
+                                   (setq tmp5 (cdr tmp4))
+                                   (and (consp tmp5)
+                                        (eq (cdr tmp5) nil)
+                                        (progn
+                                         (setq tmp6 (car tmp5))
+                                         (and (consp tmp6)
+                                              (eq (car tmp6) 'by)
+                                              (progn
+                                               (setq tmp7 (cdr tmp6))
+                                               (and (consp tmp7)
+                                                    (eq (cdr tmp7) nil)
+                                                    (progn
+                                                     (setq incr (car tmp7))
+                                                     t))))))))))))))))
+      (setq result (cons (list 'step var i incr) result)))
+     ((and (consp sex) 
+           (eq (car sex) 'in)
+           (progn
+            (setq tmp1 (cdr sex))
+            (and (consp tmp1)
+                 (progn
+                  (setq var (car tmp1))
+                  (setq tmp2 (cdr tmp1))
+                  (and (consp tmp2)
+                       (eq (cdr tmp2) nil)
+                       (progn
+                        (setq tmp3 (car tmp2))
+                        (and (consp tmp3)
+                             (eq (car tmp3) 'by)
+                             (progn
+                              (setq tmp4 (cdr tmp3))
+                              (and (consp tmp4)
+                               (progn
+                                (setq tmp5 (car tmp4))
+                                (and (consp tmp5)
+                                     (eq (car tmp5) 'segment)
+                                     (progn
+                                      (setq tmp6 (cdr tmp5))
+                                      (and (consp tmp6)
+                                           (progn
+                                            (setq i (car tmp6))
+                                            (setq tmp7 (cdr tmp6))
+                                            (and (consp tmp7)
+                                                 (eq (cdr tmp7) nil)
+                                                 (progn
+                                                  (setq j (car tmp7))
+                                                  t)))))))
+                               (progn
+                                (setq tmp8 (cdr tmp4))
+                                (and (consp tmp8)
+                                     (eq (cdr tmp8) nil)
+                                     (progn
+                                      (setq incr (car tmp8))
+                                      t))))))))))))
+      (setq result (cons (list 'step var i incr j) result)))
+     ((and (consp sex) 
+           (eq (car sex) 'in)
+           (progn
+            (setq tmp1 (cdr sex))
+            (and (consp tmp1)
+                 (progn
+                  (setq var (car tmp1))
+                  (setq tmp2 (cdr tmp1))
+                  (and (consp tmp2)
+                       (eq (cdr tmp2) nil)
+                       (progn
+                        (setq tmp3 (car tmp2))
+                        (and (consp tmp3)
+                             (eq (car tmp3) 'segment)
+                             (progn
+                              (setq tmp4 (cdr tmp3))
+                              (and (consp tmp4)
+                                   (progn
+                                    (setq i (car tmp4))
+                                    (setq tmp5 (cdr tmp4))
+                                    (and (consp tmp5)
+                                         (eq (cdr tmp5) nil)
+                                         (progn
+                                          (setq j (car tmp5))
+                                          t))))))))))))
+      (setq result (cons (list 'step var i 1 j) result)))
+     (t (setq result (cons sex result)))))))
+
+(defun lotsof (&rest items)
+  (setq items (copy-list items))
+  (nconc items items))
+
+(defun lnrgamma (x)
+ (if (< 20 x)
+   (lnrgammaRatapprox x)
+   (log (gammaRatapprox x))))
+
+(defun lnrgammaRatapprox (x)
+ "(x-.5)*log(x) - x + log(sqrt(2.0*Pi)) + phiRatapprox(x)"
+  (+ (+ (- (* (- x 0.5) (log x)) x)
+        (log (sqrt (* 2.0 Pi))))
+     (phiRatapprox x)))
+
+(defun |ltrace| (arg) (|trace| arg)) 
+
+
+(defun |macApplication| (pf)
+ (let (args op)
+ (declare (special |$pfMacros|))
+  (setq pf (|pfMapParts| #'|macExpand| pf))
+  (setq op (|pfApplicationOp| pf))
+  (cond
+   ((null (|pfMLambda?| op)) pf)
+   (t
+    (setq args (|pf0ApplicationArgs| pf))
+    (|mac0MLambdaApply| op args pf |$pfMacros|)))))
+
+(defun |macExpand| (pf)
+ (cond
+  ((|pfWhere?| pf)       (|macWhere| pf))
+  ((|pfLambda?| pf)      (|macLambda| pf))
+  ((|pfMacro?| pf)       (|macMacro| pf))
+  ((|pfId?| pf)          (|macId| pf))
+  ((|pfApplication?| pf) (|macApplication| pf))
+  (t                     (|pfMapParts| #'|macExpand| pf))))
+
+(defun |macId| (pf)
+ (let (body state got sy)
+ (declare (special |$posActive| |$macActive|))
+  (setq sy (|pfIdSymbol| pf))
+  (cond
+   ((null (setq got (|mac0Get| sy))) pf)
+   (t
+    (setq state (car got))
+    (setq body (cadr got))
+    (cond
+     ((eq state '|mparam|) body)
+     ((eq state '|mlambda|) (|pfCopyWithPos| body (|pfSourcePosition| pf)))
+     (t
+      (|pfCopyWithPos|
+       (|mac0ExpandBody| body pf |$macActive| |$posActive|)
+       (|pfSourcePosition| pf))))))))
+
+(defun |macLambda| (pf)
+ (declare (special |$pfMacros|))
+ (|macLambda,mac| pf |$pfMacros|))
+
+(defun |macLambda,mac| (pf |$pfMacros|)
+ (declare (special |$pfMacros|))
+ (|pfMapParts| #'|macExpand| pf))
+
+(defun |macLambdaParameterHandling| (replist pform)
+ (let (parlist symlist result)
+  (cond
+   ((|pfLeaf?| pform) nil)
+   ((|pfLambda?| pform) ; remove ( identifier . replacement ) from assoclist
+    (setq parlist (mapcar #'|pfTypedId| (|pf0LambdaArgs| pform)))
+    (setq symlist (mapcar #'|pfIdSymbol| parlist))
+    (dolist (par symlist)
+     (setq replist
+      (let ((pr (assoc par replist :test #'equal)))
+       (when pr (remove par replist :test #'equal)))))
+    replist)
+   ((|pfMLambda?| pform) ;construct assoclist ( identifier . replacement )
+    (setq parlist (|pf0MLambdaArgs| pform)) ; extract parameter list
+    (dolist (par parlist (nreverse result))
+     (push
+      (cons (|pfIdSymbol| par)
+            (|pfLeaf| (|pfAbSynOp| par) (gensym) (|pfLeafPosition| par)))
+       result)))
+   (t
+    (dolist (p (|pfParts| pform)) 
+     (|macLambdaParameterHandling| replist p))))))
+
+(defun |macMacro| (pf)
+ (let (sy rhs lhs)
+  (setq lhs (|pfMacroLhs| pf))
+  (setq rhs (|pfMacroRhs| pf))
+  (cond
+   ((null (|pfId?| lhs))
+    (|ncSoftError| (|pfSourcePosition| lhs) 
+     "%1 is improper for macro definition.  Ignored."
+     (list (|%pform| lhs)))
+    pf)
+   (t
+    (setq sy (|pfIdSymbol| lhs))
+    (|mac0Define| sy
+     (cond
+      ((|pfMLambda?| rhs) '|mlambda|)
+      (t '|mbody|))
+     (|macSubstituteOuter| rhs))
+     (cond
+      ((|pfNothing?| rhs) pf)
+      (t (|pfMacro| lhs (|pfNothing|))))))))
+
+(defun |macSubstituteId| (replist pform)
+ (let (ex)
+  (setq ex (assoc (|pfIdSymbol| pform) replist :test #'eq))
+  (cond
+    (ex 
+     (rplaca pform (cadr ex))
+     (rplacd pform (cddr ex))
+     pform)
+    (t pform))))
+
+(defun |macSubstituteOuter| (pform)
+ (|mac0SubstituteOuter| (|macLambdaParameterHandling| nil pform) pform))
+
+(defun |macroExpanded| (pf)
+ (let (|$posActive| |$macActive|)
+ (declare (special |$posActive| |$macActive|))
+  (setq |$macActive| nil)
+  (setq |$posActive| nil)
+  (|macExpand| pf)))
+
+(defun |macWhere| (pf)
+ (declare (special |$pfMacros|))
+ (|macWhere,mac| pf |$pfMacros|))
+
+(defun |macWhere,mac| (pf |$pfMacros|)
+ (declare (special |$pfMacros|))
+ (|pfMapParts| #'|macExpand| pf))
+
+(defun |mac0ExpandBody| (body opf |$macActive| |$posActive|)
+ (declare (special |$macActive| |$posActive|))
+ (let (posn pf)
+  (cond
+   ((member body |$macActive|)
+    (setq pf (cadr |$posActive|))
+    (setq posn (|pfSourcePosition| pf))
+    (|mac0InfiniteExpansion| posn body |$macActive|))
+   (t
+    (setq |$macActive| (cons body |$macActive|))
+    (setq |$posActive| (cons opf |$posActive|))
+    (|macExpand| body)))))
+
+(defun |mac0Get| (sy)
+ (declare (special |$pfMacros|))
+ (ifcdr (assoc sy |$pfMacros|)))
+
+(defun |mac0GetName| (body)
+ (let (bd tmp1 st tmp2 sy name)
+ (declare (special |$pfMacros|))
+ ; for [sy,st,bd] in $pfMacros while not name repeat
+  ((lambda (macros tmplist)
+   (loop
+    (cond
+     ((or (atom macros)
+          (progn (setq tmplist (car macros)) nil)
+          name)
+       (return nil))
+     (t
+      (and (consp tmplist)
+           (progn
+            (setq sy (car tmplist))
+            (setq tmp2 (cdr tmplist))
+            (and (consp tmp2)
+                 (progn
+                  (setq st (car tmp2))
+                  (setq tmp1 (cdr tmp2))
+                  (and (consp tmp1)
+                       (eq (cdr tmp1) nil)
+                       (progn
+                        (setq bd (car tmp1))
+                        t)))))
+           (progn
+            (when (eq st '|mlambda|) (setq bd (|pfMLambdaBody| bd)))
+            (when (eq bd body) (setq name (list sy st)))))))
+           (setq macros (cdr macros))))
+         |$pfMacros| nil)
+        name))
+
+(defun |mac0InfiniteExpansion| (posn body active)
+ (let (rnames fname tmp1 blist result)
+  (setq blist (cons body active))
+  (setq tmp1 (mapcar #'|mac0InfiniteExpansion,name| blist))
+  (setq fname (car tmp1)) ;[fname, :rnames] := [name b for b in blist] 
+  (setq rnames (cdr tmp1))
+  (|ncSoftError| posn
+   "noRep Cycle in macro expansion: %l %1y %2 %l.  Left as: %3f"
+   (list
+    (dolist (n (reverse rnames) (nreverse result))
+      (setq result (append (reverse (list n "==>")) result)))
+    fname (|%pform| body)))
+  body))
+
+(defun |mac0MLambdaApply| (mlambda args opf |$pfMacros|)
+ (declare (special |$pfMacros|))
+ (let (pos body params)
+ (declare (special |$posActive| |$macActive|))
+  (setq params (|pf0MLambdaArgs| mlambda))
+  (setq body (|pfMLambdaBody| mlambda))
+  (cond
+   ((not (eql (length args) (length params)))
+    (setq pos (|pfSourcePosition| opf))
+    (|ncHardError| pos "Expected %1 arguments, but received %2."
+      (list (length params) (length args))))
+   (t
+    ((lambda (parms p arrgs a) ; for p in params for a in args repeat
+     (loop
+      (cond
+       ((or (atom parms)
+            (progn (setq p (car parms)) nil)
+            (atom arrgs)
+            (progn (setq a (CAR arrgs)) nil))
+         (return nil))
+       (t
+        (cond
+         ((null (|pfId?| p))
+          (setq pos (|pfSourcePosition| opf))
+          (|ncHardError| pos "Macro parameter %1f is not an id." 
+            (list (|%pform| p))))
+         (t
+          (|mac0Define| (|pfIdSymbol| p) '|mparam| a)))))
+      (setq parms (cdr parms))
+      (setq arrgs (cdr arrgs))))
+     params nil args nil)
+    (|mac0ExpandBody| body opf |$macActive| |$posActive|)))))
+
+(defun |mac0SubstituteOuter| (replist pform)
+ (let (tmplist)
+  (cond
+   ((|pfId?| pform) (|macSubstituteId| replist pform))
+   ((|pfLeaf?| pform) pform)
+   ((|pfLambda?| pform)
+    (setq tmplist (|macLambdaParameterHandling| replist pform))
+    (dolist (p (|pfParts| pform)) (|mac0SubstituteOuter| tmplist p))
+    pform)
+   (t
+    (dolist (p (|pfParts| pform)) (|mac0SubstituteOuter| replist p))
+    pform))))
+   
+(defun make-appendstream (filespec &optional (width nil) (recnum 0))
+ "fortran support"
+ (declare (ignore width) (ignore recnum))
+ (cond 
+  ((numberp filespec) (make-synonym-stream '*terminal-io*))
+  ((null filespec) (error "make-appendstream: not handled yet"))
+  ('else (open (make-filename filespec) :direction :output
+          :if-exists :append :if-does-not-exist :create))))
+
+(defun make-databases (ext dirlist)
+ (labels (
+  (build-name-to-pamphlet-hash (dir)
+   (let ((ht (make-hash-table)) (eof '(done)) point mark abbrev name file ns)
+    (dolist (fn (directory dir))
+     (when (and (string= (pathname-type fn) "pamphlet")
+            (or (string= (pathname-name fn) "bookvol10.2")   ; category
+                (string= (pathname-name fn) "bookvol10.3")   ; domain
+                (string= (pathname-name fn) "bookvol10.4")   ; package
+                (string= (pathname-name fn) "bookvol10.5"))) ; numerics
+      (with-open-file (f fn)
+       (do ((ln (read-line f nil eof) (read-line f nil eof))
+            (line 0 (incf line)))
+           ((eq ln eof))
+      (when (and (setq mark (search ")abb" ln)) (= mark 0))
+        (setq mark (position #\space ln :from-end t))
+        (setq name (intern (string-trim '(#\space) (subseq ln mark))))
+        (cond
+          ((setq mark (search "domain" ln)) (setq mark (+ mark 7)))
+          ((setq mark (search "package" ln)) (setq mark (+ mark 8)))
+          ((setq mark (search "category" ln)) (setq mark (+ mark 9))))
+        (setq point (position #\space ln :start (+ mark 1)))
+        (setq abbrev 
+         (intern (string-trim '(#\space) (subseq ln mark point))))
+        (setq ns (namestring fn))
+        (setq mark (position #\/ ns :from-end t))
+        (setq file (subseq ns (+ mark 1)))
+        (setf (gethash abbrev ht) file)
+        (setf (gethash (format nil "~a-line" abbrev) ht) line)
+        (setf (gethash name ht) file)
+        (setf (gethash (format nil "~a-line" name) ht) line))))))
+     ht))
+    ;; these are types which have no library object associated with them.
+    ;; we store some constructed data to make them perform like library
+    ;; objects, the *operationalist-hash* key entry is used by allConstructors
+  (withSpecialConstructors ()
+   (declare (special *allconstructors*))
+   ; note: if item is not in *operationalist-hash* it will not be written
+   ; Category
+   (setf (get '|Category| 'database)
+     (make-database :operationalist nil :niladic t))
+   (push '|Category| *allconstructors*)
+   ; UNION
+   (setf (get '|Union| 'database)
+     (make-database :operationalist nil :constructorkind '|domain|))
+   (push '|Union| *allconstructors*)
+   ; RECORD
+   (setf (get '|Record| 'database)
+    (make-database :operationalist nil :constructorkind '|domain|))
+   (push '|Record| *allconstructors*)
+   ; MAPPING
+   (setf (get '|Mapping| 'database)
+    (make-database :operationalist nil :constructorkind '|domain|))
+   (push '|Mapping| *allconstructors*)
+   ; ENUMERATION
+   (setf (get '|Enumeration| 'database)
+    (make-database :operationalist nil :constructorkind '|domain|))
+   (push '|Enumeration| *allconstructors*)
+   )
+  (final-name (root) 
+    (format nil "~a.daase~a" root ext))
+  )
+ (let (d)
+  (declare (special |$constructorList| *sourcefiles*
+                    *allconstructors* *operation-hash*))
+  (do-symbols (symbol)
+   (when (get symbol 'database)
+    (setf (get symbol 'database) nil)))
+  (setq *hascategory-hash* (make-hash-table :test #'equal))
+  (setq *operation-hash* (make-hash-table))
+  (setq *allconstructors* nil)
+  (withSpecialConstructors)
+  (localdatabase nil
+     (list (list '|dir| (namestring (truename "./")) ))
+     'make-database)
+  (dolist (dir dirlist)
+   (localdatabase nil 
+    (list (list '|dir| (namestring (truename (format nil "./~a" dir)))))
+    'make-database))
+;browse.daase
+  (load (concatenate 'string (getenviron "AXIOM") "/autoload/topics"))  ;; hack
+  (|browserAutoloadOnceTrigger|)
+  (|mkTopicHashTable|)
+  (setq |$constructorList| nil) ;; affects buildLibdb
+  (setq *sourcefiles* (build-name-to-pamphlet-hash 
+    (concatenate 'string (getenviron "AXIOM") "/../../books/*.pamphlet")))
+  (|buildLibdb|)
+  (|dbSplitLibdb|)
+; (|dbAugmentConstructorDataTable|)
+  (|mkUsersHashTable|)
+  (|saveUsersHashTable|)
+  (|mkDependentsHashTable|)
+  (|saveDependentsHashTable|)
+; (|buildGloss|)
+  (write-browsedb)
+  (write-operationdb)
+ ; note: genCategoryTable creates a new *hascategory-hash* table
+ ; this smashes the existing table and regenerates it.
+ ; write-categorydb does getdatabase calls to write the new information
+  (write-categorydb)
+  (dolist (con (|allConstructors|))
+   (let (dbstruct)
+     (when (setq dbstruct (get con 'database))
+           (setf (database-cosig dbstruct)
+                 (cons nil (mapcar #'|categoryForm?|
+                           (cddar (database-constructormodemap dbstruct)))))
+           (when (and (|categoryForm?| con)
+                      (= (length (setq d (|domainsOf| (list con) NIL NIL))) 1))
+                 (setq d (caar d))
+                 (when (= (length d) (length (|getConstructorForm| con)))
+               (format t "   ~a has a default domain of ~a~%" con (car d))
+                       (setf (database-defaultdomain dbstruct) (car d)))))))
+        ; note: genCategoryTable creates *ancestors-hash*. write-interpdb
+        ; does gethash calls into it rather than doing a getdatabase call.
+  (write-interpdb)
+  (write-warmdata)
+  (when (probe-file (final-name "interp"))
+        (delete-file (final-name "interp")))
+  (rename-file "interp.build" (final-name "interp"))
+  (when (probe-file (final-name "operation"))
+        (delete-file (final-name "operation")))
+  (rename-file "operation.build" (final-name "operation"))
+  (when (probe-file (final-name "browse")) 
+        (delete-file (final-name "browse")))
+  (rename-file "browse.build" 
+               (final-name "browse"))
+  (when (probe-file (final-name "category"))
+        (delete-file (final-name "category")))
+  (rename-file "category.build" 
+               (final-name "category")))))
+
+(defun makeFullNamestring (filearg &optional (filetype nil))
+  (namestring (merge-pathnames (make-filename filearg filetype))))
+
+(defun |makeHistFileName| (fname) 
+ (|makePathname| fname |$historyFileType| |$historyDirectory|)) 
+
+(defun makeInputFilename (filearg &optional (filetype nil))
+ (let*
+  ((filename  (make-filename filearg filetype))
+   (dirname (pathname-directory filename))
+   (ft (pathname-type filename))
+   (dirs (getDirectoryList ft))
+   (newfn nil))   
+  (if (or (null dirname) (eqcar dirname :relative))
+   (dolist (dir dirs (probeName filename))
+    (when (probe-file (setq newfn (concatenate 'string dir filename)))
+     (return newfn)))
+   (probeName filename))))
+
+(defun make-instream (filespec &optional (recnum 0))
+ (declare (ignore recnum))
+   (cond ((numberp filespec) (make-synonym-stream '*terminal-io*))
+         ((null filespec) (error "not handled yet"))
+         (t (open (makeInputFilename filespec)
+                  :direction :input :if-does-not-exist nil))))
+
+(defun |makeLeaderMsg| (chPosList)
+ (let (posLetter posNum oldPos st)
+ (declare (special |$nopos| |$preLength|))
+  (setq st (make-string (- |$preLength| 3)))
+  (setq oldPos -1)
+  ((lambda (Var15 Var14)
+   (loop
+    (cond
+     ((or (atom Var15) (progn (setq Var14 (car Var15)) nil))
+       (return nil))
+     (t
+      (and (consp Var14)
+           (progn
+            (setq posNum (car Var14))
+            (setq posLetter (cdr Var14))
+            t)
+           (progn
+            (setq st 
+             (concat st (|rep| #\. (- posNum oldPos 1)) posLetter))
+            (setq oldPos posNum)))))
+    (setq Var15 (cdr Var15))))
+   (reverse chPosList) nil)
+  (list '|leader| |$nopos| '|nokey| nil nil (list st))))
+
+(defun |makeMsgFromLine| (line)
+ (let (localNumOfLine stNum globalNumOfLine textOfLine posOfLine)
+ (declare (special |$preLength|))
+  (setq posOfLine (|getLinePos| line))
+  (setq textOfLine (|getLineText| line))
+  (setq globalNumOfLine (|poGlobalLinePosn| posOfLine))
+  (setq stNum (princ-to-string (|poLinePosn| posOfLine)))
+  (setq localNumOfLine
+    (concat (|rep| #\space (- |$preLength| 7 (size stNum))) stNum))
+  (list '|line| posOfLine nil nil (concat "Line" localNumOfLine) textOfLine)))
+
+(defun |makeOrdinal| (i)
+ (elt '(|first| |second| |third| |fourth| |fifth| |sixth| |seventh| 
+        |eighth| |ninth| |tenth|)
+  (1- i)))
+
+(defun make-outstream (filespec &optional (width nil) (recnum 0))
+ (declare (ignore width) (ignore recnum))
+   (cond ((numberp filespec) (make-synonym-stream '*terminal-io*))
+         ((null filespec) (error "not handled yet"))
+         (t (open (make-filename filespec) :direction :output))))
+
+(defun |makePathname| (name type dir)
+ (declare (ignore dir))
+ (|pathname| (list (|object2String| name) (|object2String| type))))
+
+(defun |makeSpadCommand| (&rest a1)
+ (let (opForm lastArg argList z)
+  (setq z a1)
+  (setq opForm (concat (car z) "("))
+  (setq lastArg (|last| z))
+  (setq z (cdr z))
+  (setq argList nil)
+  (do ((g1 z (cdr g1)) (arg nil))
+       ((or (atom g1) 
+            (progn (setq arg (car g1)) nil)
+            (null (nequal arg lastArg)))
+             nil)
+    (setq argList (cons (concat arg ", ") argList)))
+    (setq argList (nreverse (cons lastArg argList)))
+    (concat opForm (apply #'concat argList) ")")))
+
+(defun |makeStream| (append filename i j)
+ (if append 
+  (make-appendstream filename i j)
+  (make-outstream filename i j)))
+
+(defun |mapLetPrint| (x val currentFunction)
+  (setq x (|getAliasIfTracedMapParameter| x currentFunction))
+  (setq currentFunction (|getBpiNameIfTracedMap| currentFunction))
+  (|letPrint| x val currentFunction))
+
+(defun |mapStringize| (z)
+  (cond
+    ((atom z) z)
+    (t (rplaca z (|basicStringize| (car z)))
+       (rplacd z (|mapStringize| (cdr z))) z)))
+
+(defun |mergePathnames| (a b)
+ (let (fn ft fm)
+  (cond
+   ((string= (setq fn (|pathnameName| a)) "*") b)
+   ((not (equal fn (|pathnameName| b))) a)
+   ((string= (setq ft (|pathnameType| a)) "*") b)
+   ((not (equal ft (|pathnameType| b))) a)
+   ((equal (setq fm (|pathnameDirectory| a)) (list "*" )) b)
+   (t a))))
+
+(defun messageprint (x)
+ (mapc #'messageprint-1 x))
+ 
+(defun messageprint-1 (x)
+ (cond
+  ((or (eq x '|%l|) (equal x "%l")) (terpri))
+  ((stringp x) (princ x))
+  ((identp x) (princ x))
+  ((atom x) (princ x))
+  ((princ "(") 
+   (messageprint-1 (car x))
+   (messageprint-2 (cdr x))
+   (princ ")"))))
+
+(defun messageprint-2 (x)
+  (if (atom x)
+   (unless x (progn (princ " . ") (messageprint-1 x)))
+   (progn (princ " ") (messageprint-1 (car x)) (messageprint-2 (cdr x)))))
+
+(defun |mkConform| (kind name argString)
+ (let (form parse)
+  (cond
+   ((nequal kind "default package")
+    (setq form (concat name argString))
+    (setq parse (|parseNoMacroFromString| form))
+    (cond
+     ((null parse)
+       (|sayBrightlyNT| "Won't parse: ")
+       (|pp| form)
+       (|systemError| "Keywords in argument list?"))
+     ((atom parse) (cons parse nil))
+     (t parse)))
+   (t
+    (cons (intern name) (cdr (|ncParseFromString| (concat #\d argString))))))))
+
+(defun |mkCurryFun| (fun val)
+  (prog (name code)
+    (return
+      (progn
+        (setq name (gentemp))
+        (setq code
+                 (cons 'defun
+                       (cons name
+                             (cons '(arg)
+                                   (cons
+                                    (cons 'apply
+                                     (cons (mkq fun)
+                                      (cons
+                                       (cons 'cons
+                                        (cons 'arg
+                                         (cons (mkq val) nil)))
+                                       nil)))
+                                    nil)))))
+        (eval code)
+        name))))
+
+(defun |mkDomPvar| (p d subs y)
+ (let (l)
+ (declare (special |$FormalMapVariableList|))
+  (if (setq l (member p |$FormalMapVariableList|))
+   (|domArg| d (- (|#| |$FormalMapVariableList|) (|#| l)) subs y)
+   d)))
+
+(defun |mkDomTypeForm| (typeForm conform domname)
+ (cond
+   (domname (sublislis (cdr domname) (cdr conform) typeForm))
+   ((and (consp typeForm) (eq (qcar typeForm) '|Join|))
+     (cons '|Join|
+      (loop for t1 in (qcdr typeForm) collect
+        (|mkDomTypeForm| t1 conform domname))))
+   ((null (|hasIdent| typeForm)) typeForm)))
+
+(defun |mkEvalable| (form)
+ (let (op argl kind cosig)
+ (declare (special |$Integer| |$EmptyMode|))
+  (cond
+   ((consp form)
+     (setq op (qcar form))
+     (setq argl (qcdr form))
+     (cond
+      ((eq op 'quote) form)
+      ((eq op 'wrapped) (|mkEvalable| (|devaluate| argl)))
+      ((eq op '|Record|) (|mkEvalableRecord| form))
+      ((eq op '|Union|) (|mkEvalableUnion| form))
+      ((eq op '|Mapping|) (|mkEvalableMapping| form))
+      ((eq op '|Enumeration|) form)
+      (t
+       (|loadIfNecessary| op)
+       (setq kind (getdatabase op 'constructorkind))
+       (cond
+         ((setq cosig (getdatabase op 'cosig))
+          (cons op
+           (loop for x in argl for typeFlag in (rest cosig)
+            collect 
+             (cond
+              (typeFlag
+               (cond
+                ((eq kind '|category|) (mkq x))
+                ((simple-vector-p x) (mkq x))
+                (t
+                  (|loadIfNecessary| x)
+                  (|mkEvalable| x))))
+              ((and (consp x) (eq (qcar x) 'quote)) x)
+              ((and (consp x) (eq (qcar x) '|#|) (consp (qcdr x)) 
+                    (eq (qcdr (qcdr x)) nil))
+                (list 'size (mkq (qcar (qcdr x)))))
+              (t (mkq x))))))
+         (t
+          (cons op
+           (loop for x in argl
+            collect (|mkEvalable| x))))))))
+     ((equal form |$EmptyMode|) |$Integer|)
+     ((and (identp form) (|constructor?| form)) (list form))
+     ((fbpip form) (bpiname form))
+     (t form))))
+
+(defun |mkEvalableMapping| (form)
+ (cons
+  (car form)
+  (loop for d in (rest form)
+   collect (|mkEvalable| d))))
+
+(defun |mkEvalableRecord| (form)
+  (cons
+   (car form)
+   (loop for item in (rest form)
+    collect (list (quote |:|) (second item) (|mkEvalable| (third item))))))
+
+(defun |mkEvalableUnion| (form)
+  (cond
+   ((|isTaggedUnion| form)
+    (cons
+     (car form)
+     (loop for item in (rest form)
+      collect (list '|:| (second item) (|mkEvalable| (third item))))))
+   (t
+    (cons (car form)
+     (loop for d in (rest form)
+      collect (|mkEvalable| d))))))
+
+(defun |mkLineList| (lines)
+ (let (l)
+  (setq l
+   ((lambda (Var2 Var1 line)
+     (loop
+      (cond
+       ((or (atom Var1) (progn (setq line (car Var1)) nil))
+         (return (nreverse Var2)))
+       (t
+        (and (|nonBlank| (cdr line))
+             (setq Var2 (cons (cdr line) Var2)))))
+      (setq Var1 (cdr Var1))))
+    nil lines nil))
+  (cond 
+   ((eql (length l) 1) (car l))
+   (t l))))
+
+(defun mkprompt ()  
+ "Show the Axiom prompt"
+ (declare (special |$inputPromptType| |$IOindex| |$interpreterFrameName|))
+ (case |$inputPromptType|
+  (|none| "")
+  (|plain| "-> ")
+  (|step|  (concat "(" (princ-to-string |$IOindex|) ") -> "))
+  (|frame|
+   (concat (princ-to-string |$interpreterFrameName|) " ("
+           (princ-to-string |$IOindex|) ") -> "))
+  (t (concat (princ-to-string |$interpreterFrameName|) " ["
+             (substring (currenttime) 8 nil) "] [" 
+             (princ-to-string |$IOindex|) "] -> "))))
+
+(defun |mkSetTitle| ()
+ (declare (special |$path|))
+ (concat "Command {\\em )set " (|listOfStrings2String| |$path|) "}"))
+
+(defun |mkUnixPattern| (s)
+  (prog (starPositions k u)
+  (declare (special |$wild|))
+    (return
+      (SEQ (progn
+             (setq u (|mkUpDownPattern| s))
+             (setq starPositions
+                      (reverse (prog (G168264)
+                                 (setq G168264 nil)
+                                 (return
+                                   (DO
+                                    ((G168270
+                                      (+ (- 1)
+                                       (MAXINDEX u)))
+                                     (i 1 (QSADD1 i)))
+                                    ((QSGREATERP i G168270)
+                                     (NREVERSE0 G168264))
+                                     (SEQ
+                                      (EXIT
+                                       (cond
+                                         ((equal (elt u i)
+                                           |$wild|)
+                                          (setq G168264
+                                           (cons i G168264)))))))))))
+             (DO ((G168277 starPositions (cdr G168277))
+                  (i nil))
+                 ((or (atom G168277)
+                      (progn (setq i (car G168277)) nil))
+                  nil)
+               (SEQ (EXIT (setq u
+                                   (CONCAT (SUBSTRING u 0 i)
+                                    ".*"
+                                    (SUBSTRING u (1+ i) nil))))))
+             (cond
+               ((NEQUAL (elt u 0) |$wild|)
+                (setq u (CONCAT "[^a-zA-Z]" u)))
+               (t (setq u (SUBSTRING u 1 nil))))
+             (cond
+               ((NEQUAL (elt u (setq k (MAXINDEX u))) |$wild|)
+                (setq u (CONCAT u "[^a-zA-Z]")))
+               (t (setq u (SUBSTRING u 0 k))))
+             u)))))
+
+(defun monitorEvalAfter (x)
+  (eval (monitorEvalTran x nil)))
+
+(defun monitorEvalBefore (x)
+  (eval (monitorEvalTran x nil)))
+
+(defun monitorEvalTran (x fg)
+ (if (|hasSharpVar| x) (monitorEvalTran1 x fg) x))
+
+(defun monitorEvalTran1 (x fg)
+ (let (n)
+  (cond
+   ((setq n (|isSharpVarWithNum| x)) (monitorGetValue n fg))
+   ((atom x) x)
+   (t
+    (cons (monitorEvalTran1 (car x) fg)
+          (monitorEvalTran1 (cdr x) fg))))))
+
+(defun monitorGetValue (n fg)
+  (cond
+   ((eql n 0)
+     (if fg
+      (mkq |$monitorValue|)
+      (|spadThrowBrightly| "cannot ask for value before execution")))
+   ((eql n 9) (mkq |$monitorCaller|))
+   ((not (< (size |$monitorArgs|) n)) (mkq (elt |$monitorArgs| (- n 1))))
+   (t
+    (|spadThrowBrightly|
+     (list 'function |$monitorName| "does not have" n "arguments")))))
+
+(defun monitorPrint (x tracestr)
+ (cond
+  ((null (smallEnough x)) (limitedPrint1 x tracestr))
+  (|$monitorPretty| (prettyprint x tracestr))
+  (t (prinmathor0 x tracestr))))
+
+(defun monitorPrintArg (l n)
+  (loop for el in l for k from 1 to n do
+    (when (= k n) (monitorPrint el |$traceStream|))))
+
+(defun monitorPrintArgs (l code trans)
+ (let (n)
+  (cond
+   ((eql (digit-char-p (elt code 2)) 0) nil)
+   ((eql (digit-char-p (elt code 2)) 9)
+    (cond
+     (trans
+      (loop for x in l for y in (cdr trans) do
+       (cond
+        ((eq y '*)
+          (princ "\\ " |$traceStream|)
+          (monitorPrint x |$traceStream|))
+        ((eq y '&)
+          (princ "\\\\" |$traceStream|)
+          (terpri |$traceStream|)
+          (print x |$traceStream|))
+        ((null y)
+          (princ "! " |$traceStream|))
+        (t
+          (princ "! " |$traceStream|)
+          (monitorPrint (eval (subst (mkq x) '* y)) |$traceStream|)))))
+     (t
+       (princ ": " |$traceStream|)
+       (unless (atom l)
+          (when |$mathTrace| (terpri |$traceStream|))
+          (monitorPrint (car l) |$traceStream|)
+          (setq l (cdr l)))
+       (loop for el in l do (monitorPrintRest el)))))
+   (t
+     (loop for istep from 2 to (1- (length code)) do
+       (setq n (digit-char-p (elt code istep)))
+       (unless (eql n 0)
+         (princ "\\" |$traceStream|)
+         (prinmathor0 n |$traceStream|)
+         (princ ": " |$traceStream|)
+         (monitorPrintArg l n)))))))
+
+(defun monitorPrintRest (x)
+ (cond
+  ((null (smallEnough x))
+    (terpri |$traceStream|)
+    (monitorBlanks (+ |$monitorDepth| 1))
+    (princ "\\" |$traceStream|)
+    (print x |$traceStream|))
+  (t
+    (unless |$mathTrace| (princ "\\" |$traceStream|))
+    (if |$monitorPretty|
+     (prettyprint x |$traceStream|)
+     (prinmathor0 x |$traceStream|)))))
+
+(defun monitorPrintValue (val name)
+ (let (u)
+  (setq u (get name '/transform))
+  (cond
+   (u
+    (cond
+     ((eqcar u '&)
+       (format |$traceStream| "//~a~%" val))
+     (t
+       (format |$traceStream| "! ~a~%" (eval (subst (mkq val) '* (car u)))))))
+   (t
+     (princ ": " |$traceStream|)
+     (cond
+      ((null (smallEnough val)) (limitedPrint1 val |$traceStream|))
+      (|$monitorPretty| (prettyprint val |$traceStream|))
+      (t
+        (when |$mathTrace| (terpri |$traceStream|))
+        (prinmathor0 val |$traceStream|)))))))
+
+(defun monitorX (args funct opts)
+ (declare (special |$monitorDepth| |$depthAlist|))
+  (monitorXX args funct opts |$monitorDepth| |$depthAlist|));))
+
+(defun monitorEnter (tracecode c type name name1)
+ (let (|$TraceFlag| cArgs)
+  (declare (special |$TraceFlag| |$traceStream| |$monitorDepth|
+            |$monitorFunDepth| |$monitorCaller| |$mathTrace|))
+  (setq |$TraceFlag| nil)
+  (cond
+   ((equal tracecode "000") nil)
+   (t
+     (tab 0 |$traceStream|)
+     (princ (make-string (- |$monitorDepth| 1) :initial-element #\space)
+            |$traceStream|)
+     (prin1 |$monitorFunDepth| |$traceStream|)
+     (format |$traceStream| "<enter ~a " (symbol-name name1))
+     (unless (eql c 0)
+      (if (eq type 'macro)
+        (print " expanded" |$traceStream|)
+        (progn
+         (print " from " |$traceStream|)
+         (prin1 |$monitorCaller| |$traceStream|))))
+     (setq cArgs (|coerceTraceArgs2E| name1 name |$monitorArgs|))
+     (when (spadsysnamep (symbol-name name))
+       (setq cArgs (nreverse (reverse cArgs))))
+     (monitorPrintArgs cArgs tracecode (get name '/transform))
+     (unless |$mathTrace| (terpri |$traceStream|))))))
+
+(defun monitorExit (tracecode name name1 v timernam evalTime)
+ (let (|$TraceFlag|)
+  (declare (special |$TraceFlag|))
+  (setq |$TraceFlag| nil)
+  (cond
+   ((equal tracecode "000") nil)
+   (t
+    (tab 0 |$traceStream|)
+    (princ (make-string (- |$monitorDepth| 1) :initial-element #\space)
+            |$traceStream|)
+    (prin1 |$monitorFunDepth| |$traceStream|)
+    (format |$traceStream| ">exit ~a " (symbol-name name1))
+    (when timernam (format |$traceStream| "(~a sec)" (/ evalTime 60.0)))
+    (when (eql v 1)
+      (monitorPrintValue
+       (|coerceTraceFunValue2E| name1 name |$monitorValue|)
+       name1))
+    (unless |$mathTrace| (terpri |$traceStream|))))))
+
+(defun monitorXX (|$monitorArgs| funct opts oldDepth oldDepthAlist)
+ (declare (special |$monitorArgs|))
+ (let (|$monitorValue| |$monitorFunDepth| |$depthAlist| |$monitorCaller|
+       |$breakCondition| |$monitorName| |$monitorDepth|
+       |$tracedSpadModemap| |$mathTrace| evalTime initTime yes
+       notTopLevel a v c name1 breakcondition tracedmodemap break
+       condition after before timernam countnam tracecode type name)
+    (declare
+     (special |$monitorValue| |$monitorFunDepth| |$depthAlist|
+      |$monitorCaller| |$breakCondition| |$monitorName| |$monitorDepth|
+      |$tracedSpadModemap| |$mathTrace| |$mapSubNameAlist|))
+  (|stopTimer|)
+  (setq name (elt opts 0))
+  (setq type (elt opts 1))
+  (setq tracecode (elt opts 2))
+  (setq countnam (elt opts 3))
+  (setq timernam (elt opts 4))
+  (setq before (elt opts 5))
+  (setq after (elt opts 6))
+  (setq condition (elt opts 7))
+  (setq break (elt opts 8))
+  (setq tracedmodemap (elt opts 9))
+  (setq breakcondition (elt opts 10))
+  (setq |$mathTrace| nil)
+  (setq |$tracedSpadModemap| tracedmodemap)
+  (setq |$monitorDepth| (+ oldDepth 1))
+  (setq |$monitorName| (symbol-name name))
+  (setq name1 (|rassocSub| name |$mapSubNameAlist|))
+  (setq |$breakCondition| breakcondition)
+  (setq |$monitorCaller| (|rassocSub| (whocalled 6) |$mapSubNameAlist|))
+  ;TRACECODE meaning:
+  ; 0:        Caller (0,1)           print caller if 1
+  ; 1:        Value (0,1)            print value if 1
+  ; 2...:     Arguments (0,...,9)    stop if 0; print ith if i; all if 9
+  (cond
+   ((null (stringp tracecode))
+     (moan "set tracecode to \\'1911\\' and restart"))
+   (t
+     (setq c (digit-char-p (elt tracecode 0)))
+     (setq v (digit-char-p (elt tracecode 1)))
+     (setq a (digit-char-p (elt tracecode 2)))
+     (when countnam (set countnam (+ (eval countnam) 1)))
+     (setq |$depthAlist| (copy-tree oldDepthAlist))
+     (setq notTopLevel (assoc name |$depthAlist|))
+     (if (null notTopLevel)
+        (setq |$depthAlist| (cons (cons name 1) |$depthAlist|))
+        (rplacd notTopLevel (+ (cdr notTopLevel) 1)))
+     (setq |$monitorFunDepth| (cdr (assoc name |$depthAlist|)))
+     (setq condition (monitorEvalTran condition nil))
+     (setq yes (eval condition))
+     (when (member name |$mathTraceList|) (setq |$mathTrace| t))
+     (when (and yes |$TraceFlag|) (monitorEnter tracecode c type name name1))
+     (when before (monitorEvalBefore before))
+     (when (member '|before| break)
+       (|break| (list "Break on entering" (symbol-name name1) ":")))
+     (when timernam (setq initTime (|startTimer|)))
+     (setq |$monitorValue|
+       (if (eq type 'macro) 
+        (macroexpand funct |$monitorArgs|)
+        (apply funct |$monitorArgs|)))
+     (|stopTimer|)
+     (setq evalTime nil)
+     (when timernam (setq evalTime (- (|timerValue|) initTime)))
+     (when (and timernam (null notTopLevel))
+       (set timernam (+ (eval timernam) evalTime)))
+     (when after (monitorEvalAfter after))
+     (when (and yes |$TraceFlag|)
+       (monitorExit tracecode name name1 V timernam evalTime))
+     (when (member '|after| break)
+       (|break| (list "Break on exiting" (symbol-name name1) ":")))
+     (|startTimer|)
+     |$monitorValue|))))
+
+(defun |msgCreate| (tag posWTag key argL optPre &rest optAttr)
+ (let (msg)
+  (when (consp key) (setq tag '|old|))
+  (setq msg (list tag posWTag key argL optPre nil))
+  (when (car optAttr) (|setMsgForcedAttrList| msg (car optAttr)))
+  (|putDatabaseStuff| msg)
+  (|initImPr| msg)
+  (|initToWhere| msg)
+  msg))
+
+(defun |msgImPr?| (msg)
+ (eq (|getMsgCatAttr| msg '|$imPrGuys|) '|imPr|))
+
+(defun |msgNoRep?| (msg) (eq (|getMsgCatAttr| msg '|$repGuys|) '|noRep|))
+
+(defun |msgOutputter| (msg)
+ (let (alreadyOpened shouldFlow st)
+ (declare (special $linelength))
+  (setq st (|getStFromMsg| msg))
+  (setq shouldFlow (null (or (|leader?| msg) (|line?| msg))))
+  (when (|toScreen?| msg)
+    (when shouldFlow (setq st (|flowSegmentedMsg| st $linelength 0)))
+    (|sayBrightly| st))
+  (when (|toFile?| msg)
+    (when shouldFlow (setq st (|flowSegmentedMsg| st (- $linelength 6) 0)))
+    (setq alreadyOpened (|alreadyOpened?| msg)))))
+
+(defun |msgText| (key args)
+ (let (msg)
+ (declare (special $linelength $margin))
+  (setq msg (|segmentKeyedMsg| key))
+  (setq msg (|substituteSegmentedMsg| msg args))
+  (setq msg (|flowSegmentedMsg| msg $linelength $margin))
+  (apply #'concat (mapcar #'princ-to-string (cdar msg)))))
+
+(defun |myWritable?| (s)
+  (if (not (stringp s)) (|error| "``myWritable?'' requires a string arg."))
+  (if (string= s "") (setq s "."))
+  (if (not (|fnameExists?| s)) (setq s (|fnameDirectory| s)))
+  (if (string= s "") (setq s "."))
+  (if (> (|writeablep| s) 0) 't nil) )
+
+
+(defun |namestring| (arg)
+ (namestring (|pathname| arg)))
+
+(defun |ncAlist| (x)
+ (cond
+  ((null (consp x)) (|ncBug| "bad object" nil))
+  (t
+   (setq x (qcar x))
+   (cond
+    ((identp x) nil)
+    ((null (consp x)) (|ncBug| "bad object" nil))
+    (t (qcdr x))))))
+
+(defun |ncBug| (erMsgKey erArgL &rest optAttr)
+ (let (erMsg)
+ (declare (special |$nopos| |$newcompErrorCount|))
+  (setq |$newcompErrorCount| (+ |$newcompErrorCount| 1))
+  (setq erMsg
+   (|processKeyedError|
+    (|msgCreate| '|bug| |$nopos| erMsgKey erArgL "Bug!" optAttr)))
+  (break)
+  (|ncAbort|)))
+
+(defun |ncConversationPhase| (fn args)
+ (let (|$ncMsgList| carrier)
+ (declare (special |$ncMsgList|))
+  (setq carrier (car args))
+  (setq |$ncMsgList| nil)
+  (unwind-protect
+   (apply fn args)
+   (|ncConversationPhase,wrapup| carrier))))
+
+(defun |ncConversationPhase,wrapup| (carrier)
+ (declare (special |$ncMsgList|))
+  ((lambda (Var5 m)
+   (loop
+    (cond
+     ((or (atom Var5) (progn (setq m (car Var5)) nil))
+       (return nil))
+     (t
+      (|ncPutQ| carrier '|messages| (cons m (|ncEltQ| carrier '|messages|)))))
+    (setq Var5 (cdr Var5))))
+   |$ncMsgList| nil))
+
+(defun |ncEltQ| (x k)
+ (let (r)
+  (setq r (qassq k (|ncAlist| x)))
+  (cond
+   ((null r) (|ncBug| "Association list search failed on %1" (list k)))
+   (t (cdr r)))))
+
+(defun |ncHardError| (pos erMsgKey erArgL &rest optAttr)
+ (let (erMsg)
+ (declare (special |$newcompErrorCount|))
+  (setq |$newcompErrorCount| (+ |$newcompErrorCount| 1))
+  (if (|desiredMsg| erMsgKey)
+   (setq erMsg
+    (|processKeyedError|
+     (|msgCreate| '|error| pos erMsgKey erArgL "Error" optAttr)))
+   (|ncError|))))
+
+(defun |ncIntLoop| ()
+  (let ((curinstream *standard-output*)
+        (curoutstream *standard-input*))
+    (declare (special curinstream curoutstream))
+    (|intloop|)))
+
+(defun |ncloopCommand| (line n)
+ (let (a)
+ (declare (special |$systemCommandFunction|))
+  (if (setq a (|ncloopPrefix?| ")include" line))
+   (|ncloopInclude1| a n)
+   (progn
+    (funcall |$systemCommandFunction| line)
+    n))))
+
+(defun |ncloopDQlines| (dq stream)
+ (let (b a)
+  (|StreamNull| stream)
+  (setq a (|poGlobalLinePosn| (|tokPosn| (cadr dq))))
+  (setq b (|poGlobalLinePosn| (caar stream)))
+  (|streamChop| (+ (- a b) 1) stream)))
+
+(defun |ncloopIncFileName| (string)
+ "Returns the first non-blank substring of the given string"
+ (let (fn)
+  (unless (setq fn (|incFileName| string))
+   (write-line (concat string " not found")))
+ fn))
+
+(defun |ncloopInclude| (name n)
+ "Open the include file and read it in"
+ (with-open-file (st name) (|ncloopInclude0| st name n)))
+
+(defun |ncloopInclude0| (st name n)
+ (let (|$lines|)
+ (declare (special |$lines|))
+   (setq |$lines| (|incStream| st name))
+   (|ncloopProcess| n nil
+    (|next| #'|ncloopEchoParse|
+     (|next| #'|insertpile|
+      (|next| #'|lineoftoks|
+       |$lines|))))))
+
+(defun |ncloopInclude1| (name n)
+ (let (a)
+  (if (setq a (|ncloopIncFileName| name))
+    (|ncloopInclude| a n)
+    n)))
+
+(defun |ncloopParse| (s)
+ (let (cudr lines stream dq t1)
+  (setq t1 (car s))
+  (setq dq (car t1))
+  (setq stream (cadr t1))
+  (setq t1 (|ncloopDQlines| dq stream))
+  (setq lines (car t1))
+  (setq cudr (cadr t1))
+  (cons (list (list lines (|npParse| (|dqToList| dq)))) (cdr s))))
+
+(defun |ncParseFromString| (s)
+  (|zeroOneTran| (catch 'SPAD_READER (|parseFromString| s))))
+
+(defun |ncPutQ| (x k v)
+ (let (r)
+  (cond
+   ((listp k)
+    ((lambda (Var1 key Var2 val)
+     (loop
+      (cond
+       ((or (atom Var1) 
+            (progn (setq key (car Var1)) nil)
+            (atom Var2)
+            (progn (setq val (car Var2)) nil))
+          (return nil))
+        (t
+          (|ncPutQ| x key val)))
+      (setq Var1 (cdr Var1))
+      (setq Var2 (cdr Var2))))
+     k nil v nil)
+    v)
+   (t
+    (setq r (qassq k (|ncAlist| x)))
+    (cond
+     ((null r)
+      (setq r (cons (cons k v) (|ncAlist| x)))
+      (rplaca x (cons (|ncTag| x) r)))
+     (t
+      (rplacd r v)))
+    v))))
+
+(defun |ncSoftError| (pos erMsgKey erArgL &rest optAttr)
+ (declare (special |$newcompErrorCount|))
+  (setq |$newcompErrorCount| (+ |$newcompErrorCount| 1))
+  (when (|desiredMsg| erMsgKey)
+   (|processKeyedError|
+    (|msgCreate| '|error| pos erMsgKey erArgL
+                  "Error" optAttr))))
+
+(defun |ncTag| (x)
+ (cond
+  ((null (consp x)) (|ncBug| "bad object" nil))
+  (t
+   (setq x (qcar x))
+   (cond
+    ((identp x) x)
+    ((null (consp x)) (|ncBug| "bad object" nil))
+    (t (qcar x))))))
+
+(defun |ncTopLevel| ()
+ "Top-level read-parse-eval-print loop"
+ (let (|$e| $spad $newspad $boot |$InteractiveMode| *eof* in-stream) 
+  (declare (special |$e| $spad $newspad $boot |$InteractiveMode| *eof*
+             in-stream |$InteractiveFrame|)) 
+   (setq in-stream curinstream) 
+   (setq *eof* nil) 
+   (setq |$InteractiveMode| t) 
+   (setq $boot nil) 
+   (setq $newspad t) 
+   (setq $spad t) 
+   (setq |$e| |$InteractiveFrame|) 
+   (|ncIntLoop|)))
+
+(defun |newHelpSpad2Cmd| (args)
+ (let (sarg arg narg helpfile filestream line unabbrev)
+ (declare (special $syscommands |$useFullScreenHelp|))
+  (when (null args) (setq args (list '?)))
+  (if (> (|#| args) 1) 
+   (|sayKeyedMsg| "The )help system command supports at most one argument."
+    nil)
+   (progn
+    (setq sarg (pname (car args)))
+    (cond
+     ((string= sarg "?") (setq args (list '|help|)))
+     ((string= sarg "%") (setq args (list '|history|)))
+     ((string= sarg "%%") (setq args (list '|history|)))
+     (t nil))
+    (setq arg (|selectOptionLC| (car args) $syscommands nil))
+    (cond ((null arg) (setq arg (car args))))
+    (setq narg (pname arg))
+    ; expand abbreviations to full constructor names
+    (when 
+     (setq unabbrev (|abbreviation?| (intern narg)))
+      (setq narg (symbol-name unabbrev)))
+    (setq narg (substitute #\q #\? narg))
+    (cond
+      ; if the help file does not exist, exit
+     ((null (setq helpfile (makeInputFilename (list narg "help"))))
+       nil)
+      ; if we expect to use full screen help, call SPADEDIT
+     (|$useFullScreenHelp|
+      (obey (concat "$AXIOM/lib/SPADEDIT " (|namestring| helpfile))) t)
+      ; otherwise dump the help file to the console
+     (t
+      (setq filestream (make-instream helpfile))
+      (do ((line (|read-line| filestream nil) (|read-line| filestream nil)))
+          ((null line) (shut filestream))
+       (say line))))))))
+
+(defun |next| (function delay)
+ (|Delay| #'|next1| (list function delay)))
+
+(defun |next1| (&rest delayArg)
+ (let (h delay function)
+  (setq function (car delayArg))
+  (setq delay (cadr delayArg))
+  (cond
+   ((|StreamNull| delay) |StreamNil|)
+   (t
+    (setq h (apply function (list delay)))
+    (|incAppend| (car h) (|next| function (cdr h)))))))
+
+(defun |nextInterpreterFrame| ()
+  "Move to the next Interpreter Frame in Ring"
+  (declare (special |$interpreterFrameRing|))
+  (when (cdr |$interpreterFrameRing|)
+   (setq |$interpreterFrameRing|
+    (nconc (cdr |$interpreterFrameRing|) (list (car |$interpreterFrameRing|))))
+   (|updateFromCurrentInterpreterFrame|)))
+
+(defun |nextline| (s)
+ (declare (special |$sz| |$n| |$linepos| |$ln| |$r| |$f|))
+ (cond
+  ((|npNull| s) nil)
+  (t
+   (setq |$f| (car s))
+   (setq |$r| (cdr s))
+   (setq |$ln| (cdr |$f|))
+   (setq |$linepos| (caar |$f|))
+   (setq |$n| (strposl " " |$ln| 0 t)) ; spaces at beginning
+   (setq |$sz| (length |$ln|))
+   t)))
+
+(defun next-lines-clear ()
+ (setq boot-line-stack nil))
+
+(defun next-lines-show ()
+  (declare (special boot-line-stack))
+  (and boot-line-stack (format t "Currently preparsed lines are:~%~%"))
+  (mapcar #'(lambda (line)
+              (format t "~&~5D> ~A~%" (car line) (cdr Line)))
+          boot-line-stack))
+
+(defun |npAdd| (extra)
+ (let (a)
+  (and
+   (|npEqKey| 'add)
+   (progn
+    (setq a (|npState|))
+    (or (|npDefinitionOrStatement|) (|npTrap|))
+    (cond
+     ((|npEqPeek| 'in)
+      (progn
+        (|npRestore| a)
+        (and
+         (or (|npVariable|) (|npTrap|))
+         (|npCompMissing| 'in)
+         (or (|npDefinitionOrStatement|) (|npTrap|))
+         (|npPush| (|pfAdd| (|npPop2|) (|npPop1|) extra)))))
+     (t
+       (|npPush| (|pfAdd| (|pfNothing|) (|npPop1|) extra))))))))
+
+(defun |npADD| ()
+ (let (a)
+  (and
+   (|npType|)
+   (progn
+    (setq a (|npPop1|))
+    (or
+      (|npAdd| a)
+      (|npPush| a))))))
+
+(defun |npAmpersand| ()
+ (and
+  (|npEqKey| 'ampersand)
+  (or (|npName|) (|npTrap|))))
+
+(defun |npAmpersandFrom| ()
+ (and (|npAmpersand|) (|npFromdom|)))
+
+(defun |npAndOr| (keyword p f)
+ (and
+  (|npEqKey| keyword)
+  (or (apply p nil) (|npTrap|))
+  (|npPush| (funcall f (|npPop1|)))))
+
+(defun |npAngleBared| (f)
+  (|npEnclosed| '|<\|| '|\|>| #'|pfHide| f))
+
+(defun |npApplication| ()
+ (and
+  (|npDotted| #'|npPrimary|)
+  (or
+   (and
+    (|npApplication2|)
+    (|npPush| (|pfApplication| (|npPop2|) (|npPop1|))))
+    t)))
+
+(defun |npApplication2| ()
+ (and
+  (|npDotted| #'|npPrimary1|)
+  (or
+   (and
+    (|npApplication2|)
+    (|npPush| (|pfApplication| (|npPop2|) (|npPop1|))))
+    t)))
+
+(defun |npArith| ()
+ (|npLeftAssoc| '(mod) #'|npSum|))
+
+(defun |npAssign| ()
+ (|npBackTrack| #'|npMDEF| 'becomes #'|npAssignment|))
+
+(defun |npAssignment| ()
+ (and
+  (|npAssignVariable|)
+  (or (|npEqKey| 'becomes) (|npTrap|))
+  (or (|npGives|) (|npTrap|))
+  (|npPush| (|pfAssign| (|npPop2|) (|npPop1|)))))
+
+(defun |npAssignVariable| () 
+ (and (|npColon|) (|npPush| (|pfListOf| (list (|npPop1|))))))
+
+(defun |npAtom1| ()
+ (or
+  (|npPDefinition|)
+  (and
+   (or (|npName|) (|npConstTok|) (|npDollar|) (|npBDefinition|))
+   (|npFromdom|))))
+
+(defun |npAtom2| ()
+ (and
+  (or (|npInfixOperator|) (|npAmpersand|) (|npPrefixColon|))
+  (|npFromdom|)))
+
+(defun |npBacksetElse| ()
+ (if (|npEqKey| 'backset) 
+  (|npEqKey| 'else)
+  (|npEqKey| 'else)))
+
+(defun |npBackTrack| (p1 p2 p3)
+ (let (a)
+  (setq a (|npState|))
+  (when (apply p1 nil)
+    (cond
+     ((|npEqPeek| p2)
+       (|npRestore| a)
+       (or (apply p3 nil) (|npTrap|)))
+     (t t)))))
+
+(defun |npBDefinition| ()
+ (or
+  (|npPDefinition|)
+  (|npBracketed| #'|npDefinitionlist|)))
+
+(defun |npBPileDefinition| ()
+ (and
+  (|npPileBracketed| #'|npPileDefinitionlist|)
+  (|npPush| (|pfSequence| (|pfListOf| (|npPop1|))))))
+
+(defun |npBraced| (f)
+ (or (|npEnclosed| '{ '} #'|pfBrace| f)
+     (|npEnclosed| '|{\|| '|\|}| #'|pfBraceBar| f)))
+
+(defun |npBracked| (f)
+ (or (|npEnclosed| '[ '] #'|pfBracket| f)
+     (|npEnclosed| '|[\|| '|\|]| #'|pfBracketBar| f)))
+
+(defun |npBracketed| (f)
+ (or
+  (|npParened| f)
+  (|npBracked| f)
+  (|npBraced| f)
+  (|npAngleBared| f)))
+
+(defun |npBreak| ()
+ (and (|npEqKey| 'break) (|npPush| (|pfBreak| (|pfNothing|)))))
+
+(defun |npBy| ()
+ (|npLeftAssoc| '(by) #'|npInterval|))
+
+(defun |npCategory| ()
+ (|npPP| #'|npSCategory|))
+
+(defun |npCategoryL| ()
+ (and 
+  (|npCategory|)
+  (|npPush| (|pfUnSequence| (|npPop1|)))))
+
+(defun |npCoerceTo| ()
+ (|npTypedForm| 'coerce #'|pfCoerceto|))
+
+(defun |npColon| ()
+ (and (|npTypified|) (|npAnyNo| #'|npTagged|)))
+
+(defun |npColonQuery| ()
+ (|npTypedForm| 'atat #'|pfRetractTo|))
+
+(defun |npComma| ()
+ (|npTuple| #'|npQualifiedDefinition|))
+
+(defun |npCommaBackSet| ()
+ (and
+  (|npEqKey| 'comma)
+  (or (|npEqKey| 'backset) t)))
+
+(defun |npCompMissing| (s)
+ (or (|npEqKey| s) (|npMissing| s)))
+
+(defun |npConditional| (f)
+ (cond
+  ((and (|npEqKey| 'IF) 
+        (or (|npLogical|) (|npTrap|))
+        (or (|npEqKey| 'backset) t))
+   (cond
+    ((|npEqKey| 'settab)
+     (cond
+      ((|npEqKey| 'then)
+       (and (or (apply f nil) (|npTrap|))
+            (|npElse| f)
+            (|npEqKey| 'backtab)))
+      (t (|npMissing| '|then|))))
+    ((|npEqKey| 'then)
+     (and (or (apply f nil) (|npTrap|)) (|npElse| f)))
+    (t (|npMissing| '|then|))))
+  (t nil)))
+
+(defun |npConditionalStatement| ()
+ (|npConditional| #'|npQualifiedDefinition|))
+
+(defun |npConstTok| ()
+ (let (b a)
+ (declare (special |$stok|))
+  (cond
+   ((member (|tokType| |$stok|) '(|integer| |string| |char| |float| |command|))
+    (|npPush| |$stok|) 
+    (|npNext|))
+   ((|npEqPeek| '|'|)
+    (setq a |$stok|)
+    (setq b (|npState|))
+    (|npNext|)
+    (cond
+      ((and (|npPrimary1|)
+            (|npPush| (|pfSymb| (|npPop1|) (|tokPosn| a))))
+       t)
+      (t (|npRestore| b) nil)))
+   (t nil))))
+
+(defun |npDDInfKey| (s)
+ (let (b a)
+ (declare (special |$stok|))
+  (or
+   (|npInfKey| s)
+   (progn
+    (setq a (|npState|))
+    (setq b |$stok|)
+    (cond
+     ((and (|npEqKey| '|'|) (|npInfKey| s))
+       (|npPush| (|pfSymb| (|npPop1|) (|tokPosn| b))))
+     (t
+      (|npRestore| a)
+      (cond
+       ((and (|npEqKey| 'backquote) (|npInfKey| s))
+         (setq a (|npPop1|))
+          (|npPush| (|tokConstruct| '|idsy| (|tokPart| a) (|tokPosn| a))))
+       (t 
+        (|npRestore| a) 
+        nil))))))))
+
+(defun |npDecl| ()
+ (and
+  (|npEqKey| 'colon)
+  (or (|npType|) (|npTrap|))
+  (|npPush| (|pfTyped| (|npPop2|) (|npPop1|)))))
+
+(defun |npDef| ()
+ (let (body rt arg op tmp1)
+  (when (|npMatch|)
+   ; [op,arg,rt]:=  pfCheckItOut(npPop1())
+   (setq tmp1 (|pfCheckItOut| (|npPop1|))) 
+   (setq op (car tmp1))
+   (setq arg (cadr tmp1))
+   (setq rt (caddr tmp1))
+   (or (|npDefTail|) (|npTrap|))
+   (setq body (|npPop1|))
+   (if (null arg)
+    (|npPush| (|pfDefinition| op body))
+    (|npPush| (|pfDefinition| op (|pfPushBody| rt arg body)))))))
+
+(defun |npDefaultDecl| ()
+ (and
+  (|npEqKey| 'colon)
+  (or (|npType|) (|npTrap|))
+  (|npPush| (|pfSpread| (|pfParts| (|npPop2|)) (|npPop1|)))))
+
+(defun |npDefaultItem| ()
+ (and
+  (|npTypeVariable|)
+  (or (|npDefaultDecl|) (|npTrap|))))
+
+(defun |npDefaultItemlist| ()
+ (and
+  (|npPC| #'|npSDefaultItem|)
+  (|npPush| (|pfUnSequence| (|npPop1|)))))
+
+(defun |npDefaultValue| ()
+ (and
+  (|npEqKey| 'default)
+  (or (|npDefinitionOrStatement|) (|npTrap|))
+  (|npPush| (list (|pfAdd| (|pfNothing|) (|npPop1|) (|pfNothing|))))))
+
+(defun |npDefinition| ()
+ (and
+  (|npPP| #'|npDefinitionItem|)
+  (|npPush| (|pfSequenceToList| (|npPop1|)))))
+
+(defun |npDefinitionItem| ()
+ (let (a)
+  (or (|npTyping|) 
+      (|npImport|)
+      (progn
+       (setq a (|npState|))
+       (cond
+        ((|npStatement|)
+         (cond
+           ((|npEqPeek| 'def)
+            (|npRestore| a) 
+            (|npDef|))
+           (t
+            (|npRestore| a)
+            (or (|npMacro|) (|npDefn|)))))
+        (t (|npTrap|)))))))
+
+(defun |npDefinitionlist| ()
+ (|npSemiListing| #'|npQualDef|))
+
+(defun |npDefinitionOrStatement| ()
+ (|npBackTrack| #'|npGives| 'def #'|npDef|))
+
+(defun |npDefn| ()
+ (and
+  (|npEqKey| 'defn)
+  (|npPP| #'|npDef|)))
+
+(defun |npDefTail| ()
+ (and
+  (or (|npEqKey| 'def) (|npEqKey| 'mdef))
+  (|npDefinitionOrStatement|)))
+
+(defun |npDiscrim| ()
+ (|npLeftAssoc| '(case has) #'|npQuiver|))
+
+(defun |npDisjand| ()
+ (|npLeftAssoc| '(and) #'|npDiscrim|))
+
+(defun |npDollar| ()
+ (declare (special |$stok|))
+  (and (|npEqPeek| '$)
+       (progn
+        (|npPush| (|tokConstruct| '|id| '$ (|tokPosn| |$stok|)))
+        (|npNext|))))
+
+(defun |npDotted| (f)
+ (and (apply f nil) (|npAnyNo| #'|npSelector|)))
+
+(defun |npElse| (f) 
+ (let (a)
+  (setq a (|npState|))
+  (cond
+   ((|npBacksetElse|)
+    (and
+     (or (apply f nil) (|npTrap|))
+     (|npPush| (|pfIf| (|npPop3|) (|npPop2|) (|npPop1|)))))
+   (t
+     (|npRestore| a)
+     (|npPush| (|pfIfThenOnly| (|npPop2|) (|npPop1|)))))))
+
+(defun |npEncAp| (f)
+ (and (apply f nil) (|npAnyNo| #'|npEncl|) (|npFromdom|)))
+
+(defun |npEncl| ()
+ (and
+  (|npBDefinition|)
+  (|npPush| (|pfApplication| (|npPop2|) (|npPop1|)))))
+
+(defun |npEnclosed| (open close fn f)
+ (let (a)
+ (declare (special |$stok|))
+  (setq a |$stok|)
+  (when (|npEqKey| open)
+   (cond
+    ((|npEqKey| close)
+     (|npPush| (funcall fn a (|pfTuple| (|pfListOf| NIL)))))
+    ((and (apply f nil)
+          (or (|npEqKey| close)
+              (|npMissingMate| close a)))
+     (|npPush| (funcall fn a (|pfEnSequence| (|npPop1|)))))
+    ('t nil)))))
+
+(defun |npEqKey| (keyword)
+ (declare (special |$ttok| |$stok|))
+ (and
+  (eq (caar |$stok|) '|key|)
+  (eq keyword |$ttok|)
+  (|npNext|)))
+
+(defun |npExit| ()
+ (|npBackTrack| #'|npAssign| 'exit #'|npPileExit|))
+
+(defun |npExpress| ()
+ (and
+  (|npExpress1|)
+  (or
+   (and
+    (|npIterators|)
+    (|npPush| (|pfCollect| (|npPop2|) (|pfListOf| (|npPop1|)))))
+   t)))
+
+(defun |npExpress1| ()
+ (or (|npConditionalStatement|) (|npADD|)))
+
+(defun |npExport| ()
+ (and
+  (|npEqKey| 'export)
+  (or (|npLocalItemlist|) (|npTrap|))
+  (|npPush| (|pfExport| (|npPop1|)))))
+
+(defun |npFirstTok| ()
+ (declare (special |$ttok| |$stok| |$inputStream|))
+ (if (null |$inputStream|)
+  (setq |$stok| (|tokConstruct| 'error 'nomore (|tokPosn| |$stok|)))
+  (setq |$stok| (car |$inputStream|)))
+ (setq |$ttok| (|tokPart| |$stok|)))
+
+(defun |npFix| ()
+ (and
+  (|npEqKey| 'fix)
+  (|npPP| #'|npDef|)
+  (|npPush| (|pfFix| (|npPop1|)))))
+
+(defun |npForIn| ()
+ (and
+  (|npEqKey| 'for)
+  (or (|npVariable|) (|npTrap|))
+  (|npCompMissing| 'in)
+  (or (|npBy|) (|npTrap|))
+  (|npPush| (|pfForin| (|npPop2|) (|npPop1|)))))
+
+(defun |npFree| ()
+ (and
+  (|npEqKey| 'free)
+  (or (|npLocalItemlist|) (|npTrap|))
+  (|npPush| (|pfFree| (|npPop1|)))))
+
+(defun |npFromdom| ()
+ (or
+  (and
+   (|npEqKey| '$)
+   (or (|npApplication|) (|npTrap|))
+   (|npFromdom1| (|npPop1|))
+   (|npPush| (|pfFromDom| (|npPop1|) (|npPop1|))))
+  t))
+
+(defun |npFromdom1| (c)
+ (or
+  (and
+   (|npEqKey| '$)
+   (or (|npApplication|) (|npTrap|))
+   (|npFromdom1| (|npPop1|))
+   (|npPush| (|pfFromDom| (|npPop1|) c)))
+  (|npPush| c)))
+
+(defun |npGives| ()
+ (|npBackTrack| #'|npExit| 'gives #'|npLambda|))
+
+(defun |npId| ()
+ (declare (special |$npTokToNames| |$ttok| |$stok|))
+  (cond
+   ((eq (caar |$stok|) '|id|)
+     (|npPush| |$stok|) 
+     (|npNext|))
+   ((and (eq (caar |$stok|) '|key|) (member |$ttok| |$npTokToNames|))
+     (|npPush| (|tokConstruct| '|id| |$ttok| (|tokPosn| |$stok|)))
+     (|npNext|))
+   (t nil)))
+
+(defun |npImport| ()
+ (|npAndOr| 'import #'|npQualTypelist| #'|pfImport|))
+
+(defun |npInfGeneric| (s)
+ (and
+  (|npDDInfKey| s)
+  (or (|npEqKey| 'backset) t)))
+
+(defun |npInfixOp| ()
+ (declare (special |$ttok| |$stok|))
+  (and
+   (eq (caar |$stok|) '|key|)
+   (get |$ttok| 'infgeneric)
+   (|npPushId|)))
+
+(defun |npInfixOperator| ()
+ (let (b a)
+  (declare (special |$stok|))
+   (or (|npInfixOp|)
+       (progn
+        (setq a (|npState|))
+        (setq b |$stok|)
+        (cond
+         ((and (|npEqKey| '|'|) (|npInfixOp|))
+           (|npPush| (|pfSymb| (|npPop1|) (|tokPosn| b))))
+          (t
+           (|npRestore| a)
+           (cond
+            ((and (|npEqKey| 'backquote) (|npInfixOp|))
+              (setq a (|npPop1|))
+               (|npPush| (|tokConstruct| '|idsy| (|tokPart| a) (|tokPosn| a))))
+            (t 
+             (|npRestore| a)
+             nil))))))))
+
+(defun |npInfKey| (s)
+ (declare (special |$ttok| |$stok|))
+  (and (eq (caar |$stok|) '|key|) (member |$ttok| s) (|npPushId|)))
+
+(defun |npInline| () 
+ (|npAndOr| 'inline #'|npQualTypelist| #'|pfInline|))
+
+(defun |npInterval| ()
+ (and
+  (|npArith|)
+  (or
+   (and
+    (|npSegment|)
+    (or
+     (and
+      (|npEqPeek| 'bar)
+      (|npPush| (|pfApplication| (|npPop1|) (|npPop1|))))
+     (and
+      (|npArith|)
+      (|npPush| (|pfInfApplication| (|npPop2|) (|npPop2|) (|npPop1|))))
+     (|npPush| (|pfApplication| (|npPop1|) (|npPop1|)))))
+   t)))
+
+(defun |npItem| ()
+ (let (c b a tmp1)
+  (when (|npQualDef|)
+    (if (|npEqKey| 'semicolon)
+     (progn
+      (setq tmp1 (|npItem1| (|npPop1|)))
+      (setq a (car tmp1))
+      (setq b (cadr tmp1))
+      (setq c (|pfEnSequence| b))
+      (if a
+       (|npPush| c)
+       (|npPush| (|pfNovalue| c))))
+     (|npPush| (|pfEnSequence| (|npPop1|)))))))
+
+(defun |npItem1| (c)
+ (let (b a tmp1)
+  (if (|npQualDef|)
+   (if (|npEqKey| 'semicolon)
+     (progn
+      (setq tmp1 (|npItem1| (|npPop1|)))
+      (setq a (car tmp1))
+      (setq b (cadr tmp1))
+      (list a (append c b)))
+    (list t (append c (|npPop1|))))
+   (list nil c))))
+
+(defun |npIterate| ()
+ (and (|npEqKey| 'iterate) (|npPush| (|pfIterate| (|pfNothing|)))))
+
+(defun |npIterator| ()
+ (or
+  (|npForIn|)
+  (|npSuchThat|)
+  (|npWhile|)))
+
+(defun |npIterators| ()
+ (or
+  (and
+   (|npForIn|)
+   (|npZeroOrMore| #'|npIterator|)
+   (|npPush| (cons (|npPop2|) (|npPop1|))))
+  (and
+   (|npWhile|)
+   (or
+    (and (|npIterators|) (|npPush| (cons (|npPop2|) (|npPop1|))))
+    (|npPush| (list (|npPop1|)))))))
+
+(defun |npLambda| ()
+ (or
+  (and
+   (|npVariable|)
+   (or (|npLambda|) (|npTrap|))
+   (|npPush| (|pfLam| (|npPop2|) (|npPop1|))))
+  (and
+   (|npEqKey| 'gives)
+   (or (|npDefinitionOrStatement|) (|npTrap|)))
+  (and
+   (|npEqKey| 'colon)
+   (or (|npType|) (|npTrap|))
+   (|npEqKey| 'gives)
+   (or (|npDefinitionOrStatement|) (|npTrap|))
+   (|npPush| (|pfReturnTyped| (|npPop2|) (|npPop1|))))))
+
+(defun |npLeftAssoc| (operations parser)
+ (when (apply parser nil)
+   ((lambda nil
+      (loop
+       (cond
+        ((not
+          (and
+           (|npInfGeneric| operations)
+           (or
+            (apply parser nil)
+            (progn (|npPush| (|pfApplication| (|npPop2|) (|npPop1|))) nil))))
+         (return nil))
+        (t
+         (|npPush| (|pfInfApplication| (|npPop2|) (|npPop2|) (|npPop1|))))))))
+     t))
+
+(defun |npLet| ()
+ (|npLetQualified| #'|npDefinitionOrStatement|))
+
+(defun |npLetQualified| (f)
+ (and
+  (|npEqKey| 'let)
+  (or (|npDefinition|) (|npTrap|))
+  (|npCompMissing| 'in)
+  (or (funcall f) (|npTrap|))
+  (|npPush| (|pfWhere| (|npPop2|) (|npPop1|)))))
+
+(defun |npList| (f str1 fn)
+ (let (a)
+ (declare (special |$stack|))
+  (cond
+   ((apply f nil)
+    (cond
+     ((and (|npEqKey| str1) 
+           (or (|npEqKey| 'backset) t)
+           (or (apply f nil) (|npTrap|)))
+       (setq a |$stack|)
+       (setq |$stack| nil)
+       (do ()                                ; while .. do nothing
+           ((not 
+             (and (|npEqKey| str1)
+                  (or (|npEqKey| 'backset) t)
+                  (or (apply f nil) (|npTrap|))))
+            nil))
+       (setq |$stack| (cons (nreverse |$stack|) a))
+       (|npPush| (funcall fn (cons (|npPop3|) (cons (|npPop2|) (|npPop1|))))))
+     (t (|npPush| (funcall fn (list (|npPop1|)))))))
+   (t (|npPush| (funcall fn nil))))))
+
+(defun |npListAndRecover| (f)
+ (let (found c done b savestack)
+ (declare (special |$inputStream| |$stack|))
+  (setq savestack |$stack|)
+  (setq |$stack| nil)
+  (setq c |$inputStream|)
+  (do ()
+      (done)
+   (setq found (catch 'trappoint (apply f nil)))
+   (cond
+    ((eq found 'trapped)
+     (setq |$inputStream| c)
+     (|npRecoverTrap|))
+    ((null found)
+     (setq |$inputStream| c)
+     (|syGeneralErrorHere|) (|npRecoverTrap|)))
+   (cond
+    ((|npEqKey| 'backset) (setq c |$inputStream|))
+    ((|npEqPeek| 'backtab) (setq done t))
+    (t 
+     (setq |$inputStream| c)
+     (|syGeneralErrorHere|) 
+     (|npRecoverTrap|)
+     (cond
+      ((|npEqPeek| 'backtab) (setq done t))
+      (t 
+       (|npNext|) 
+       (setq c |$inputStream|)))))
+   (setq b (cons (|npPop1|) b)))
+  (setq |$stack| savestack)
+  (|npPush| (nreverse b))))
+
+(defun |npListing| (p)
+ (|npList| p 'comma #'|pfListOf|))
+
+(defun |npListofFun| (f h g)
+ (let (a)
+ (declare (special |$stack|))
+  (cond
+   ((apply f nil)
+    (cond
+     ((and (apply h nil) (or (apply f nil) (|npTrap|)))
+       (setq a |$stack|) 
+       (setq |$stack| nil)
+       (do ()
+           ((not (and (apply h nil)
+                 (or (apply f nil) (|npTrap|))))))
+       (setq |$stack| (cons (nreverse |$stack|) a))
+       (|npPush| (funcall g (cons (|npPop3|) (cons (|npPop2|) (|npPop1|))))))
+     (t t)))
+   (t nil))))
+
+(defun |npLocal| ()
+ (and
+  (|npEqKey| '|local|)
+  (or (|npLocalItemlist|) (|npTrap|))
+  (|npPush| (|pfLocal| (|npPop1|)))))
+
+(defun |npLocalDecl| ()
+ (or
+  (and
+   (|npEqKey| 'colon)
+   (or (|npType|) (|npTrap|))
+   (|npPush| (|pfSpread| (|pfParts| (|npPop2|)) (|npPop1|))))
+  (|npPush| (|pfSpread| (|pfParts| (|npPop1|)) (|pfNothing|)))))
+
+(defun |npLocalItem| ()
+ (and
+  (|npTypeVariable|)
+  (|npLocalDecl|)))
+
+(defun |npLocalItemlist| ()
+ (and
+  (|npPC| #'|npSLocalItem|)
+  (|npPush| (|pfUnSequence| (|npPop1|)))))
+
+(defun |npLogical| () 
+ (|npLeftAssoc| '(or) #'|npDisjand|))
+
+(defun |npLoop| ()
+ (or
+  (and 
+   (|npIterators|)
+   (|npCompMissing| 'repeat)
+   (or (|npAssign|) (|npTrap|))
+   (|npPush| (|pfLp| (|npPop2|) (|npPop1|))))
+  (and
+   (|npEqKey| 'repeat)
+   (or (|npAssign|) (|npTrap|))
+   (|npPush| (|pfLoop1| (|npPop1|))))))
+
+(defun |npMacro| ()
+ (and
+  (|npEqKey| 'macro)
+  (|npPP| #'|npMdef|)))
+
+(defun |npMatch| () 
+ (|npLeftAssoc| '(is isnt) #'|npSuch|))
+
+(defun |npMdef| () 
+ (let (body arg op tmp)
+  (when (|npQuiver|)                    ;[op,arg]:= pfCheckMacroOut(npPop1())
+   (setq tmp (|pfCheckMacroOut| (|npPop1|))) 
+   (setq op (car tmp))
+   (setq arg (cadr tmp))
+   (or (|npDefTail|) (|npTrap|))
+   (setq body (|npPop1|))
+   (if (null arg) 
+    (|npPush| (|pfMacro| op body))
+    (|npPush| (|pfMacro| op (|pfPushMacroBody| arg body)))))))
+
+(defun |npMDEF| () 
+ (|npBackTrack| #'|npStatement| 'mdef #'|npMDEFinition|))
+
+(defun |npMDEFinition| ()
+ (|npPP| #'|npMdef|))
+
+(defun |npMissing| (s)
+ (declare (special |$stok|))
+  (|ncSoftError| (|tokPosn| |$stok|) "Possibly missing a %1" (list (pname s)))
+  (throw 'trappoint 'trapped))
+
+(defun |npMissingMate| (close open)
+ (|ncSoftError| (|tokPosn| open) "Missing mate." nil)
+ (|npMissing| close))
+
+(defun |npMoveTo| (|n|)
+ (declare (special |$inputStream|))
+  (cond
+   ((null |$inputStream|) t)
+   ((|npEqPeek| 'backtab)
+    (cond
+     ((eql |n| 0) t)
+     (t (|npNext|) (|npMoveTo| (1- |n|)))))
+   ((|npEqPeek| 'backset)
+    (cond
+     ((eql |n| 0) t)
+     (t (|npNext|) (|npMoveTo| |n|))))
+   ((|npEqKey| 'settab) (|npMoveTo| (+ |n| 1)))
+   (t (|npNext|) (|npMoveTo| |n|))))
+
+(defun |npName| ()
+ (or (|npId|) (|npSymbolVariable|)))
+
+(defun |npNext| ()
+ (declare (special |$inputStream|))
+  (setq |$inputStream| (cdr |$inputStream|))
+  (|npFirstTok|))
+
+(defun |npNull| (x) (|StreamNull| x))
+
+(defun |npParened| (f)
+ (or (|npEnclosed| '|(| '|)| #'|pfParen| f)
+     (|npEnclosed| '|(\|| '|\|)| #'|pfParen| f)))
+
+(defun |npParenthesize| (open close f)
+ (let (a)
+ (declare (special |$stok|))
+  (setq a |$stok|)
+  (cond
+   ((|npEqKey| open)
+    (cond
+     ((and (apply f nil)
+           (or (|npEqKey| close)
+               (|npMissingMate| close a)))
+      t)
+     ((|npEqKey| close) (|npPush| nil))
+     (t (|npMissingMate| close a))))
+   (t nil))))
+
+(defun |npParenthesized| (f)
+ (or (|npParenthesize| '|(| '|)| f) (|npParenthesize| '|(\|| '|\|)| f)))
+
+(defun |npParse| (stream)
+ (let (|$ttok| |$stok| |$stack| |$inputStream| found)
+ (declare (special |$ttok| |$stack| |$inputStream| |$stok|))
+  (setq |$inputStream| stream)
+  (setq |$stack| nil)
+  (setq |$stok| nil)
+  (setq |$ttok| nil)
+  (|npFirstTok|)
+  (setq found (catch 'trappoint (|npItem|)))
+  (cond
+   ((eq found 'trapped)
+    (|ncSoftError| (|tokPosn| |$stok|) "syntax error at top level" nil)
+    (|pfWrong| (|pfDocument| "top level syntax error") (|pfListOf| nil)))
+   ((null (null |$inputStream|))
+    (|ncSoftError| (|tokPosn| |$stok|) " Improper syntax." nil)
+    (|pfWrong|
+     (|pfDocument| (list "input stream not exhausted"))
+     (|pfListOf| nil)))
+   ((null |$stack|)
+    (|ncSoftError| (|tokPosn| |$stok|) 
+      "System error while parsing, stack is empty." nil)
+    (|pfWrong| (|pfDocument| (list "stack empty")) (|pfListOf| nil)))
+   (t (car |$stack|)))))
+
+(defun |npPDefinition| ()
+ (and
+  (|npParenthesized| #'|npDefinitionlist|)
+  (|npPush| (|pfEnSequence| (|npPop1|)))))
+
+(defun |npPileBracketed| (f)
+ (cond
+  ((|npEqKey| 'settab)
+   (cond
+    ((|npEqKey| 'backtab) (|npPush| (|pfNothing|))) ; never happens
+    ((and (apply f nil)
+          (or (|npEqKey| 'backtab) (|npMissing| '|backtab|)))
+     (|npPush| (|pfPile| (|npPop1|))))
+    (t nil)))
+  (t nil)))
+
+(defun |npPileDefinitionlist| ()
+ (and
+  (|npListAndRecover| #'|npDefinitionlist|)
+  (|npPush| (|pfAppend| (|npPop1|)))))
+
+(defun |npPileExit| ()
+ (and
+  (|npAssign|)
+  (or (|npEqKey| 'exit) (|npTrap|))
+  (or (|npStatement|) (|npTrap|))
+  (|npPush| (|pfExit| (|npPop2|) (|npPop1|)))))
+
+(defun |npPower| ()
+ (|npRightAssoc| '(power carat) #'|npColon|))
+
+(defun |npPP| (f)
+ (declare (special *npPParg*))
+  (setq *npPParg* f)
+  (or 
+   (|npParened| #'npPPf)
+   (and  (|npPileBracketed| #'npPPg) (|npPush| (|pfEnSequence| (|npPop1|))))
+   (funcall f)))
+
+(defun npPPf ()
+ (|npSemiListing| #'npPPff))
+
+(defun npPPff ()
+ (and (funcall *npPParg*) (|npPush| (list (|npPop1|)))))
+
+(defun npPPg () 
+ (and (|npListAndRecover| #'npPPf))
+ (|npPush| (|pfAppend| (|npPop1|))))
+
+(defun |npPrefixColon| ()
+ (declare (special |$stok|))
+ (and
+  (|npEqPeek| 'colon)
+  (progn
+   (|npPush| (|tokConstruct| '|id| '|:| (|tokPosn| |$stok|)))
+   (|npNext|))))
+
+(defun |npPretend| ()
+ (|npTypedForm| 'pretend #'|pfPretend|))
+
+(defun |npPrimary| ()
+ (or (|npPrimary1|) (|npPrimary2|)))
+
+(defun |npPrimary1| ()
+ (or
+  (|npEncAp| #'|npAtom1|)
+  (|npLet|)
+  (|npFix|)
+  (|npMacro|)
+  (|npBPileDefinition|)
+  (|npDefn|)
+  (|npRule|)))
+
+(defun |npPrimary2| ()
+ (or
+  (|npEncAp| #'|npAtom2|)
+  (|npAdd| (|pfNothing|))
+  (|npWith| (|pfNothing|))))
+
+(defun |npProcessSynonym| (str)
+ (let (pair)
+ (declare (special |$CommandSynonymAlist|))
+  (if (= (length str) 0)
+   (|printSynonyms| nil)
+   (progn
+    (setq pair (|processSynonymLine| str))
+    (if |$CommandSynonymAlist|
+     (putalist |$CommandSynonymAlist| (car pair) (cdr pair)))
+     (setq |$CommandSynonymAlist| (cons pair nil))))
+  (|terminateSystemCommand|)))
+
+(defun |npProduct| ()
+ (|npLeftAssoc|
+  '(times slash backslash slashslash backslashbackslash
+            slashbackslash backslashslash)
+    #'|npPower|))
+
+(defun |npPushId| ()
+ (let (a)
+ (declare (special |$stack| |$stok| |$ttok|))
+  (setq a (get |$ttok| 'infgeneric))
+  (when a (setq |$ttok| a))
+  (setq |$stack|
+   (cons (|tokConstruct| '|id| |$ttok| (|tokPosn| |$stok|)) |$stack|))
+  (|npNext|)))
+
+(defun |npRelation| ()
+ (|npLeftAssoc| '(equal notequal lt le gt ge oangle cangle) #'|npSynthetic|))
+
+(defun |npRemainder| ()
+ (|npLeftAssoc| '(rem quo) #'|npProduct|))
+
+(defun |npQualDef| ()
+ (and (|npComma|) (|npPush| (list (|npPop1|)))))
+
+(defun |npQualified| (f)
+ (if (funcall f)
+  (progn
+   (do () ; while ... do
+      ((not (and (|npEqKey| 'where) (or (|npDefinition|) (|npTrap|)))))
+   (|npPush| (|pfWhere| (|npPop1|) (|npPop1|))))
+   t)
+  (|npLetQualified| f)))
+
+(defun |npQualifiedDefinition| ()
+ (|npQualified| #'|npDefinitionOrStatement|))
+
+(defun |npQualType| () 
+ (and
+  (|npType|)
+  (|npPush| (|pfQualType| (|npPop1|) (|pfNothing|)))))
+
+(defun |npQualTypelist| ()
+ (and
+  (|npPC| #'|npSQualTypelist|)
+  (|npPush| (|pfUnSequence| (|npPop1|)))))
+
+(defun |npQuiver| ()
+ (|npRightAssoc| '(arrow larrow) #'|npRelation|))
+
+(defun |npRecoverTrap| ()
+ (let (pos2 pos1)
+ (declare (special |$stok|))
+  (|npFirstTok|)
+  (setq pos1 (|tokPosn| |$stok|))
+  (|npMoveTo| 0)
+  (setq pos2 (|tokPosn| |$stok|))
+  (|syIgnoredFromTo| pos1 pos2)
+  (|npPush|
+   (list (|pfWrong| (|pfDocument| (list "pile syntax error"))
+                    (|pfListOf| nil))))))
+
+(defun |npRestore| (x)
+ (declare (special |$stack| |$inputStream|))
+  (setq |$inputStream| (car x))
+  (|npFirstTok|)
+  (setq |$stack| (cdr x))
+  t)
+
+(defun |npRestrict| ()
+ (|npTypedForm| 'at #'|pfRestrict|))
+
+(defun |npReturn| ()
+ (and
+  (|npEqKey| 'return)
+  (or 
+   (|npExpress|)
+   (|npPush| (|pfNothing|)))
+  (or
+   (and
+    (|npEqKey| 'from)
+    (or (|npName|) (|npTrap|))
+    (|npPush| (|pfReturn| (|npPop2|) (|npPop1|))))
+   (|npPush| (|pfReturnNoName| (|npPop1|))))))
+
+(defun |npRightAssoc| (o p)
+ (let (a)
+  (setq a (|npState|))
+  (cond
+   ((apply p nil)
+      ((lambda ()
+       (loop
+        (cond
+         ((not
+           (and
+            (|npInfGeneric| o)
+            (or
+             (|npRightAssoc| o p)
+             (progn (|npPush| (|pfApplication| (|npPop2|) (|npPop1|))) nil))))
+          (return nil))
+         (t
+          (|npPush| (|pfInfApplication| (|npPop2|) (|npPop2|) (|npPop1|))))))))
+       t)
+   (t 
+    (|npRestore| a) 
+    nil))))
+
+(defun |npRule| ()
+ (and
+  (|npEqKey| 'rule)
+  (|npPP| #'|npSingleRule|)))
+
+(defun |npSCategory| ()
+ (let (a)
+  (cond
+   ((|npWConditional| #'|npCategoryL|) (|npPush| (list (|npPop1|))))
+   ((|npDefaultValue|) t)
+   (t
+    (setq a (|npState|))
+    (cond
+     ((|npPrimary|)
+       (cond
+        ((|npEqPeek| 'colon) (|npRestore| a) (|npSignature|))
+        (t
+         (|npRestore| a)
+         (or
+          (and (|npApplication|) (|npPush| (list (|pfAttribute| (|npPop1|)))))
+          (|npTrap|)))))
+      (t nil))))))
+
+(defun |npSDefaultItem| ()
+ (and
+  (|npListing| #'|npDefaultItem|)
+  (|npPush| (|pfAppend| (|pfParts| (|npPop1|))))))
+
+(defun |npSegment| ()
+ (and (|npEqPeek| 'seg) (|npPushId|) (|npFromdom|)))
+
+(defun |npSelector| ()
+ (and
+  (|npEqKey| 'dot)
+  (or (|npPrimary|) (|npTrap|))
+  (|npPush| (|pfApplication| (|npPop2|) (|npPop1|)))))
+
+(defun |npSemiBackSet| ()
+ (and (|npEqKey| 'semicolon) (or (|npEqKey| 'backset) t)))
+
+(defun |npSemiListing| (p)
+ (|npListofFun| p #'|npSemiBackSet| #'|pfAppend|))
+
+(defun |npSigDecl| () 
+ (and
+  (|npEqKey| 'colon)
+  (or (|npType|) (|npTrap|))
+  (|npPush| (|pfSpread| (|pfParts| (|npPop2|)) (|npPop1|)))))
+
+(defun |npSigItem| ()
+ (and (|npTypeVariable|) (or (|npSigDecl|) (|npTrap|))))
+
+(defun |npSigItemlist| ()
+ (and
+  (|npListing| #'|npSigItem|)
+  (|npPush| (|pfListOf| (|pfAppend| (|pfParts| (|npPop1|)))))))
+
+(defun |npSignature| ()
+ (and (|npSigItemlist|) (|npPush| (|pfWDec| (|pfNothing|) (|npPop1|)))))
+
+(defun |npSignatureDefinee| ()
+ (or (|npName|) (|npInfixOperator|) (|npPrefixColon|)))
+
+(defun |npSingleRule| ()
+ (when (|npQuiver|)
+  (or (|npDefTail|) (|npTrap|))
+  (|npPush| (|pfRule| (|npPop2|) (|npPop1|)))))
+
+(defun |npSLocalItem| ()
+ (and
+  (|npListing| #'|npLocalItem|)
+  (|npPush| (|pfAppend| (|pfParts| (|npPop1|))))))
+
+(defun |npSQualTypelist| ()
+ (and
+  (|npListing| #'|npQualType|)
+  (|npPush| (|pfParts| (|npPop1|)))))
+
+(defun |npStatement| () 
+ (or
+  (|npExpress|)
+  (|npLoop|)
+  (|npIterate|)
+  (|npReturn|)
+  (|npBreak|)
+  (|npFree|)
+  (|npImport|)
+  (|npInline|)
+  (|npLocal|)
+  (|npExport|)
+  (|npTyping|)
+  (|npVoid|)))
+
+(defun |npSuch| () 
+ (|npLeftAssoc| '(bar) #'|npLogical|))
+
+(defun |npSuchThat| ()
+ (|npAndOr| 'bar #'|npLogical| #'|pfSuchthat|))
+
+(defun |npSum| ()
+ (|npLeftAssoc| '(plus minus) #'|npTerm|))
+
+(defun |npsynonym| (unab str)
+ (declare (ignore unab))
+ (|npProcessSynonym| str)) 
+
+(defun |npSymbolVariable| ()
+ (let (a)
+  (setq a (|npState|))
+  (cond
+   ((and (|npEqKey| 'backquote) (|npId|))
+    (setq a (|npPop1|))
+    (|npPush| (|tokConstruct| '|idsy| (|tokPart| a) (|tokPosn| a))))
+   (t (|npRestore| a) nil))))
+
+(defun |npSynthetic| ()
+ (cond
+  ((|npBy|)
+   ((lambda ()
+    (loop
+     (cond
+      ((not (and (|npAmpersandFrom|)
+                 (or (|npBy|)
+                     (progn
+                      (|npPush| (|pfApplication| (|npPop2|) (|npPop1|)))
+                      nil))))
+         (return nil))
+      (t
+       (|npPush| (|pfInfApplication| (|npPop2|) (|npPop2|) (|npPop1|))))))))
+       t)
+  (t nil)))
+
+(defun |npsystem| (unab str)
+ (let (spaceIndex sysPart)
+  (setq spaceIndex (search " " str))
+  (cond
+   ((null spaceIndex) (|sayKeyedMsg| "Unknown system command: %1" (list str)))
+   (t
+    (setq sysPart (subseq str 0 spaceIndex))
+    (if (search sysPart (string unab))
+     (obey (subseq str (1+ spaceIndex)))
+     (|sayKeyedMsg| "Unknown system command: %1" (list sysPart)))))))
+
+(defun |npState| ()
+ (declare (special |$stack| |$inputStream|))
+  (cons |$inputStream| |$stack|))
+
+(defun |npTagged| ()
+ (|npTypedForm1| 'colon #'|pfTagged|))
+
+(defun |npTerm| ()
+ (or
+  (and
+   (|npInfGeneric| '(minus plus))
+   (or
+    (and (|npRemainder|) (|npPush| (|pfApplication| (|npPop2|) (|npPop1|))))
+    t))
+  (|npRemainder|)))
+
+(defun |npTrap| ()
+ (declare (special |$stok|))
+  (|ncSoftError| (|tokPosn| |$stok|) " Improper syntax." nil)
+  (throw 'trappoint 'trapped))
+
+(defun |npTrapForm| (x)
+ (let (a)
+  (setq a (|pfSourceStok| x))
+  (cond
+   ((eq a '|NoToken|)
+     (|syGeneralErrorHere|) 
+     (throw 'trappoint 'trapped))
+   (t
+    (|ncSoftError| (|tokPosn| a) " Improper syntax." nil)
+    (throw 'trappoint 'trapped)))))
+
+(defun |npTuple| (|p|)
+ (|npListofFun| |p| #'|npCommaBackSet| #'|pfTupleListOf|))
+
+(defun |npType| ()
+ (and
+  (|npMatch|)
+  (let ((a (|npPop1|)))
+   (or
+    (|npWith| a)
+    (|npPush| a)))))
+
+(defun |npTypedForm| (sy fn)
+ (and
+  (|npEqKey| sy)
+  (or (|npApplication|) (|npTrap|))
+  (|npPush| (funcall fn (|npPop2|) (|npPop1|)))))
+
+(defun |npTypedForm1| (sy fn)
+ (and
+  (|npEqKey| sy)
+  (or (|npType|) (|npTrap|))
+  (|npPush| (funcall fn (|npPop2|) (|npPop1|)))))
+
+(defun |npTypeStyle| ()
+ (or (|npCoerceTo|) (|npRestrict|) (|npPretend|) (|npColonQuery|)))
+
+(defun |npTypified| ()
+ (and (|npApplication|) (|npAnyNo| #'|npTypeStyle|)))
+
+(defun |npTyping| ()
+ (and
+  (|npEqKey| 'default)
+  (or (|npDefaultItemlist|) (|npTrap|))
+  (|npPush| (|pfTyping| (|npPop1|)))))
+
+(defun |npTypeVariable| ()
+ (or
+  (|npParenthesized| #'|npTypeVariablelist|)
+  (and (|npSignatureDefinee|) (|npPush| (|pfListOf| (list (|npPop1|)))))))
+
+(defun |npTypeVariablelist| ()
+ (|npListing| #'|npSignatureDefinee|))
+
+(defun |npVariable| ()
+ (or
+  (|npParenthesized| #'|npVariablelist|)
+  (and (|npVariableName|) (|npPush| (|pfListOf| (list (|npPop1|)))))))
+
+(defun |npVariablelist| ()
+ (|npListing| #'|npVariableName|))
+
+(defun |npVariableName| ()
+ (and
+  (|npName|)
+  (or (|npDecl|) (|npPush| (|pfTyped| (|npPop1|) (|pfNothing|))))))
+
+(defun |npVoid| ()
+ (|npAndOr| 'do #'|npStatement| #'|pfNovalue|))
+
+(defun |npWConditional| (f)
+ (when (|npConditional| f) (|npPush| (|pfTweakIf| (|npPop1|)))))
+
+(defun |npWhile| ()
+ (|npAndOr| 'while  #'|npLogical| #'|pfWhile|))
+
+(defun |npWith| (extra)
+ (let (a)
+  (and
+   (|npEqKey| 'with)
+   (progn
+    (setq a (|npState|))
+    (or (|npCategoryL|) (|npTrap|))
+    (if (|npEqPeek| 'in)
+     (progn
+       (|npRestore| a)
+       (and
+        (or (|npVariable|) (|npTrap|))
+        (|npCompMissing| 'in)
+        (or (|npCategoryL|) (|npTrap|))
+        (|npPush| (|pfWith| (|npPop2|) (|npPop1|) extra))))
+     (|npPush| (|pfWith| (|pfNothing|) (|npPop1|) extra)))))))
+
+(defun |npZeroOrMore| (f)
+ (let (a)
+ (declare (special |$stack|))
+  (cond
+   ((apply f nil)
+    (setq a |$stack|)
+    (setq |$stack| nil)
+    (do () ((not (apply f nil)))) ; while .. do
+    (setq |$stack| (cons (nreverse |$stack|) a))
+    (|npPush| (cons (|npPop2|) (|npPop1|))))
+   (t (progn (|npPush| nil) t)))))
+
+(defun |NRTevalDomain| (form)
+ (if (and (consp form) (eq (qcar form) 'setelt))
+  (|eval| form)
+  (|evalDomain| form)))
+
+
+(defun |ofCategory| (dom cat)
+ (let (|$Subst| |$hope|)
+ (declare (special |$Subst| |$hope|))
+  (cond
+   ((identp dom) nil)
+   ((and (listp cat) (eq (car cat) '|Join|))
+    (every #'(lambda (c) (|ofCategory| dom c)) (cdr cat)))
+   (t (not (eq (|hasCaty| dom cat nil) '|failed|))))))
+
+(defun |oldCompLookup| (op sig domvec dollar)
+ (let (|$lookupDefaults| u)
+ (declare (special |$lookupDefaults|))
+  (setq |$lookupDefaults| nil)
+  (cond
+   ((setq u (|lookupInDomainVector| op sig domvec dollar))
+     u)
+   (t
+    (setq |$lookupDefaults| t)
+    (|lookupInDomainVector| op sig domvec dollar)))))
+
+(defun |oldHistFileName| ()
+ (declare (special |$oldHistoryFileName|))
+ (|makeHistFileName| |$oldHistoryFileName|))
+
+(defun |oldParseString| (string)
+  (prog (tree)
+    (return
+      (progn
+        (setq tree
+                 (|applyWithOutputToString| '|string2SpadTree|
+                     (cons string nil)))
+        (cond
+          ((car tree)
+           (|parseTransform| (postTransform (car tree))))
+          (t (cdr tree)))))))
+
+(defun om-bindTCP (conn port)
+ (declare (ignore conn port)))
+
+(defun om-closeConn (conn)
+ (declare (ignore conn)))
+
+(defun om-closeDev (dev)
+ (declare (ignore dev)))
+
+(defun om-connectTCP (conn host port)
+ (declare (ignore conn host port)))
+
+(defun om-getApp (dev)
+ (declare (ignore dev)))
+
+(defun om-getAtp (dev)
+ (declare (ignore dev)))
+
+(defun om-getAttr (dev)
+ (declare (ignore dev)))
+
+(defun om-getBind (dev)
+ (declare (ignore dev)))
+
+(defun om-getBVar (dev)
+ (declare (ignore dev)))
+
+(defun om-getConnInDev (conn)
+ (declare (ignore conn)))
+
+(defun om-getConnOutDev (conn)
+ (declare (ignore conn)))
+
+(defun om-getEndApp (dev)
+ (declare (ignore dev)))
+
+(defun om-getEndAtp (dev)
+ (declare (ignore dev)))
+
+(defun om-getEndAttr (dev)
+ (declare (ignore dev)))
+
+(defun om-getEndBind (dev)
+ (declare (ignore dev)))
+
+(defun om-getEndBVar (dev)
+ (declare (ignore dev)))
+
+(defun om-getEndError (dev)
+ (declare (ignore dev)))
+
+(defun om-getEndObject (dev)
+ (declare (ignore dev)))
+
+(defun om-getError (dev)
+ (declare (ignore dev)))
+
+(defun om-getFloat (dev)
+ (declare (ignore dev)))
+
+(defun om-getInt (dev)
+ (declare (ignore dev)))
+
+(defun om-getObject (dev)
+ (declare (ignore dev)))
+
+(defun om-getString (dev)
+ (declare (ignore dev)))
+
+(defun om-getSymbol (dev)
+ (declare (ignore dev)))
+
+(defun om-getType (dev)
+ (declare (ignore dev)))
+
+(defun om-getVar (dev)
+ (declare (ignore dev)))
+
+(defun om-listCDs ())
+
+(defun om-listSymbols ())
+
+(defun om-makeConn (conn)
+ (declare (ignore conn)))
+
+(defun om-openFileDev (fname fmode enc)
+ (declare (ignore fname fmode enc)))
+
+(defun om-openStringDev (str enc)
+ (declare (ignore str enc)))
+
+(defun om-putApp (dev)
+ (declare (ignore dev)))
+
+(defun om-putAtp (dev)
+ (declare (ignore dev)))
+
+(defun om-putAttr (dev)
+ (declare (ignore dev)))
+
+(defun om-putBind (dev)
+ (declare (ignore dev)))
+
+(defun om-putBVar (dev)
+ (declare (ignore dev)))
+
+(defun om-putByteArray (dev b)
+ (declare (ignore dev b)))
+
+(defun om-putEndApp (dev)
+ (declare (ignore dev)))
+
+(defun om-putEndAtp (dev)
+ (declare (ignore dev)))
+
+(defun om-putEndAttr (dev)
+ (declare (ignore dev)))
+
+(defun om-putEndBind (dev)
+ (declare (ignore dev)))
+
+(defun om-putEndBVar (dev)
+ (declare (ignore dev)))
+
+(defun om-putEndError (dev)
+ (declare (ignore dev)))
+
+(defun om-putEndObject (dev)
+ (declare (ignore dev)))
+
+(defun om-putError (dev)
+ (declare (ignore dev)))
+
+(defun om-putFloat (dev f)
+ (declare (ignore dev f)))
+
+(defun om-putInt (dev i)
+ (declare (ignore dev i)))
+
+(defun om-putObject (dev)
+ (declare (ignore dev)))
+
+(defun om-putString (dev s)
+ (declare (ignore dev s)))
+
+(defun om-putSymbol (dev cd nm)
+ (declare (ignore dev cd nm)))
+
+(defun om-putVar (dev v)
+ (declare (ignore dev v)))
+
+(defun om-Read (dev)
+ (declare (ignore dev)))
+
+(defun om-setDevEncoding (dev enc)
+ (declare (ignore dev enc)))
+
+(defun om-stringPtrToString (str)
+ (declare (ignore str)))
+
+(defun om-stringToStringPtr (str)
+ (declare (ignore str)))
+
+(defun om-supportsCD (cd)
+ (declare (ignore cd)))
+
+(defun om-supportsSymbol (cd name)
+ (declare (ignore cd name)))
+
+(defun |openOutputLibrary| (lib)
+ "Open the output library"
+ (declare (special output-library input-libraries))
+  (|dropInputLibrary| lib)
+  (setq output-library (truename lib))
+  (push output-library input-libraries))
+
+(defun openserver (name)
+  (open_server name))
+
+(defun operationopen ()
+ "read operation database and hash the keys"
+ (declare (special $spadroot *operation-hash* *operation-stream*
+                   *operation-stream-stamp*))
+ (let (operations pos stamp)
+  (setq *operation-stream* (open (DaaseName "operation.daase" nil)))
+  (setq stamp (read *operation-stream*))
+  (unless (equal stamp *operation-stream-stamp*)
+   (format t "   Re-reading operation.daase")
+   (setq *operation-stream-stamp* stamp)
+   (setq pos (car stamp))
+   (file-position *operation-stream* pos)
+   (setq operations (read *operation-stream*))
+   (dolist (item operations)
+    (setf (gethash (car item) *operation-hash*) (cdr item))))
+  (format t "~&")))
+
+(defun |optionError| (x u)
+ (|commandErrorMessage| '|option| x u)) 
+
+(defun /options (x)
+ (cond
+  ((atom x) nil)
+  ((or (atom (car x)) (|isFunctor| (caar x))) (/options (cdr x)))
+  (x)))
+ 
+(defun |optionUserLevelError| (x u)
+ (|userLevelErrorMessage| '|option| x u)) 
+
+(defun |orderBySlotNumber| (arg)
+ (prog (n)
+  (return 
+   (seq
+    (assocright
+     (|orderList|
+      (prog (t0)
+       (setq t0 nil)
+       (return
+        (do ((t1 arg (cdr t1)) (x nil))
+            ((or (atom t1)
+                 (progn (setq x (car t1)) nil)
+                 (progn (progn (setq n (caddr x)) x) nil))
+               (nreverse0 t0))
+         (seq
+          (exit
+           (setq t0 (cons (cons n x) t0))))))))))))) 
+
+(defun |originsInOrder| (conform)
+ (let (con argl acc)
+  (setq con (car conform))
+  (setq argl (cdr conform))
+  (cond
+   ((eq (getdatabase con 'constructorkind) '|category|)
+     (assocleft (|ancestorsOf| conform nil)))
+   (t 
+     (setq acc (assocleft (|parentsOf| con)))
+     (loop for x in acc do
+       (loop for y in (|originsInOrder| x) do
+        (setq acc (|insert| y acc))))
+     acc))))
+
+
+(defun |parseAndEval| (string)
+  (prog (|$InteractiveMode| $boot $spad |$e| |$QuietCommand|)
+    (declare (special |$InteractiveMode| $boot $spad |$e|
+                      |$QuietCommand|))
+    (return
+      (progn
+        (setq |$InteractiveMode| t)
+        (setq $boot nil)
+        (setq $spad t)
+        (setq |$e| |$InteractiveFrame|)
+        (setq |$QuietCommand| t)
+        (|parseAndEval1| string)))))
+
+(defun |parseAndEval1| (string)
+ (let (v syntaxError pform val)
+  (setq syntaxError nil)
+  (setq pform
+   (progn
+    (setq v
+     (|applyWithOutputToString| '|ncParseFromString| (cons string nil)))
+    (cond
+     ((car v) (car v))
+     (t (setq syntaxError t) (cdr v)))))
+  (cond
+   (syntaxError "Syntax Error ")
+   (pform 
+    (setq val
+     (|applyWithOutputToString| '|processInteractive|
+      (cons pform (list nil))))
+    (cond
+     ((car val) (car val))
+     (t "Type Analysis Error")))
+   (t nil))))
+
+(defun |parseAndInterpret| (str)
+ (let (|$InteractiveMode| $boot $spad |$e|)
+ (declare (special |$InteractiveMode| $boot $spad |$e| 
+                   |$InteractiveFrame|))
+  (setq |$InteractiveMode| t)
+  (setq $boot nil)
+  (setq $spad t)
+  (setq |$e| |$InteractiveFrame|)
+  (|processInteractive| (|parseFromString| str) nil)))
+
+(defun |parseFromString| (s)
+  (setq s (|next| #'|ncloopParse| (|next| #'|lineoftoks| (|incString| s))))
+  (unless (|StreamNull| s) (|pf2Sex| (|macroExpanded| (cadar s)))))
+
+(defun |parseNoMacroFromString| (s)
+ (setq s
+  (|next| #'|ncloopParse|
+   (|next| #'|lineoftoks|
+    (|incString| s))))
+ (if (|StreamNull| s) 
+  nil
+  (|pf2Sex| (cadar s))))
+
+(defun |parseSystemCmd| (opt)
+ (let (spaceIndex)
+  (if (setq spaceIndex (search " " opt))
+   (list
+    (|tokTran| (|stripSpaces| (subseq opt 0 spaceIndex)))
+    (|parseFromString| (|stripSpaces| (subseq opt spaceIndex))))
+   (mapcar #'|tokTran| (|dumbTokenize| opt)))))
+
+(defun |parseWord| (x)
+  (prog ()
+    (return
+      (SEQ (cond
+             ((stringp x)
+              (cond
+                ((prog (G167588)
+                   (setq G167588 t)
+                   (return
+                     (DO ((G167594 nil (null G167588))
+                          (G167595 (maxindex x))
+                          (i 0 (1+ i)))
+                         ((OR G167594 (QSGREATERP i G167595))
+                          G167588)
+                       (SEQ (EXIT (setq G167588
+                                        (AND G167588
+                                         (digitp (elt x i)))))))))
+                 (parse-integer x))
+                (t (intern x))))
+             (t x))))))
+
+(defun |pathname| (p)
+ (cond
+  ((symbolp p) (pathname (string p)));((null p) p)
+  ((pathnamep p) p)
+  ((null (consp p)) (pathname p))
+  (t
+   (when (> (|#| p) 2) (setq p (cons (elt p 0) (cons (elt p 1) nil))))
+   (pathname (apply #'make-filename p)))))
+
+(defun |pathnameDirectory| (arg)
+ (namestring (make-pathname :directory (pathname-directory (|pathname| arg)))))
+
+(defun |pathnameName| (arg)
+ (pathname-name (|pathname| arg)))
+
+(defun |pathnameType| (arg)
+ (pathname-type (|pathname| arg))) 
+
+(defun |pathnameTypeId| (arg)
+ (upcase (|object2Identifier| (|pathnameType| arg))))
+
+(defun |patternVarsOf| (expr)
+ (|patternVarsOf1| expr nil))
+
+(defun |patternVarsOf1| (expr varList)
+ (let (argl op)
+  (cond
+   ((null expr) varList)
+   ((atom expr)
+    (cond
+     ((null (symbolp expr)) varList)
+     ((member expr varList) varList)
+     (t (cons expr varList))))
+   ((and (consp expr)
+         (progn
+          (setq op (car expr))
+          (setq argl (cdr expr))
+          t))
+         (progn
+           (dolist (arg argl) 
+            (setq varList (|patternVarsOf1| arg varList)))
+            varList))
+   (t varList))))
+
+(defun |permuteToOrder| (p n start)
+ (let (r x perms tt stpos)
+  (setq r (- n start))
+ (cond
+  ((<= r 0) nil)
+  ((eql r 1)
+   (cond
+    ((> (elt p (+ r 1)) (elt p r)) nil)
+    (t (list (cons r (+ r 1))))))
+  ((equal (elt p start) start) (|permuteToOrder| p n (+ start 1)))
+  (t
+   (setq stpos nil)
+   (loop for i from (+ start 1) to n while (not stpos) do
+    (when (equal (elt p i) start) (setq stpos i)))
+   (setq perms nil)
+   (loop while (not (equal stpos start)) do
+    (setq x (- stpos 1))
+    (setq perms (cons (cons x stpos) perms))
+    (setq tt (elt p stpos))
+    (setf (elt p stpos) (elt p x))
+    (setf (elt p x) tt)
+    (setq stpos x))
+   (append (nreverse perms) (|permuteToOrder| p n (+ start 1)))))))
+
+(defun |pcounters| ()
+ (declare (special |$countList|))
+ (if (null |$countList|) 
+   (|sayBrightly| "   no functions are being counted")
+   (dolist (k |$countList|)
+     (|sayBrightly|
+      `("  " ,@(|bright| k) |:| " " ,(eval (intern (concat k ",COUNT")))
+        " times")))))
+
+(defun |pfAbSynOp| (form)
+ (let (hd)
+  (setq hd (car form))
+  (or (ifcar hd) hd)))
+
+(defun |pfAbSynOp?| (form op)
+ (let (hd)
+  (setq hd (car form))
+  (or (eq hd op) (eqcar hd op))))
+
+(defun |pfAdd| (pfbase pfaddin &rest addon)
+ (let (lhs)
+  (if addon
+   (setq lhs addon)
+   (setq lhs (|pfNothing|)))
+  (|pfTree| '|Add| (list pfbase pfaddin lhs))))
+
+(defun |pfAnd| (pfleft pfright)
+ (|pfTree| '|And| (list pfleft pfright)))
+
+(defun |pfAnd?| (pf)
+ (|pfAbSynOp?| pf '|And|))
+
+(defun |pfApplication| (pfop pfarg)
+ (|pfTree| '|Application| (list pfop pfarg)))
+
+(defun |pfApplication?| (pf)
+  (|pfAbSynOp?| pf '|Application|))
+
+(defun |pfApplication2Sex| (pf)
+ (let (|$insideApplication| x val realOp tmp1 qt argSex typeList args op)
+ (declare (special |$insideApplication| |$insideRule|))
+  (setq |$insideApplication| t)
+  (setq op (|pfOp2Sex| (|pfApplicationOp| pf)))
+  (setq op (|opTran| op))
+  (cond
+   ((eq op '->)
+     (setq args (|pf0TupleParts| (|pfApplicationArg| pf)))
+     (if (|pfTuple?| (car args))
+      (setq typeList (mapcar #'|pf2Sex1| (|pf0TupleParts| (car args))))
+      (setq typeList (list (|pf2Sex1| (car args)))))
+     (setq args (cons (|pf2Sex1| (cadr args)) typeList))
+     (cons '|Mapping| args))
+   ((and (eq op '|:|) (eq |$insideRule| '|left|))
+    (list '|multiple| (|pf2Sex| (|pfApplicationArg| pf))))
+   ((and (eq op '?) (eq |$insideRule| '|left|))
+    (list '|optional| (|pf2Sex| (|pfApplicationArg| pf))))
+   (t
+    (setq args (|pfApplicationArg| pf))
+    (cond
+     ((|pfTuple?| args)
+      (if (and (eq op '|\||) (eq |$insideRule| '|left|))
+       (|pfSuchThat2Sex| args)
+       (progn
+        (setq argSex (cdr (|pf2Sex1| args)))
+        (cond
+         ((eq op '>) (list '< (cadr argSex) (car argSex)))
+         ((eq op '>=) (list '|not| (list '< (car argSex) (cadr argSex))))
+         ((eq op '<=) (list '|not| (list '< (cadr argSex) (car argSex))))
+         ((eq op 'and) (list '|and| (car argSex) (cadr argSex)))
+         ((eq op 'or) (list '|or| (car argSex) (cadr argSex)))
+         ((eq op '|Iterate|) (list '|iterate|))
+         ((eq op '|by|) (cons 'by argSex))
+         ((eq op '|braceFromCurly|)
+          (if (and (consp argSex) (eq (car argSex) 'seq))
+           argSex
+           (cons 'seq argSex)))
+         ((and (consp op)
+               (progn
+                (setq qt (car op))
+                (setq tmp1 (cdr op))
+                (and (consp tmp1) 
+                     (eq (cdr tmp1) nil)
+                     (progn
+                      (setq realOp (car tmp1))
+                      t)))
+               (eq qt 'quote))
+          (cons '|applyQuote| (cons op argSex)))
+         ((setq val (|hasOptArgs?| argSex)) (cons op val))
+         (t (cons op argSex))))))
+     ((and (consp op)
+           (progn
+            (setq qt (car op))
+            (setq tmp1 (cdr op))
+            (and (consp tmp1) 
+                 (eq (cdr tmp1) NIL)
+                 (progn
+                  (setq realOp (car tmp1))
+                  t)))
+           (eq qt 'quote))
+      (list '|applyQuote| op (|pf2Sex1| args)))
+     ((eq op '|braceFromCurly|)
+      (setq x (|pf2Sex1| args))
+      (if (and (consp x) (eq (car x) 'seq))
+       x
+       (list 'seq x)))
+     ((eq op '|by|) (list 'by (|pf2Sex1| args)))
+     (t (list op (|pf2Sex1| args))))))))
+
+(defun |pfAssign| (pflhsitems pfrhs)
+ (|pfTree| '|Assign| (list pflhsitems pfrhs)))
+
+(defun |pfAssign?| (pf)
+ (|pfAbSynOp?| pf '|Assign|))
+
+(defun |pfAttribute| (pfexpr)
+ (|pfTree| '|Attribute| (list pfexpr)))
+
+(defun |pfBrace| (a part)
+ (|pfApplication| (|pfIdPos| '{} (|tokPosn| a)) part))
+
+(defun |pfBraceBar| (a part)
+ (|pfApplication| (|pfIdPos| '|{\|\|}| (|tokPosn| a)) part))
+
+(defun |pfBracket| (a part)
+ (|pfApplication| (|pfIdPos| '[] (|tokPosn| a)) part))
+
+(defun |pfBracketBar| (a part)
+ (|pfApplication| (|pfIdPos| '|[\|\|]| (|tokPosn| a)) part))
+
+(defun |pfBreak| (pffrom)
+ (|pfTree| '|Break| (list pffrom)))
+
+(defun |pfBreak?| (pf)
+ (|pfAbSynOp?| pf '|Break|))
+
+(defun |pfCharPosn| (posn)
+ (|poCharPosn| posn))
+
+(defun |pfCheckArg| (args)
+ (let (argl)
+  (if (|pfTuple?| args)
+   (setq argl (|pf0TupleParts| args))
+   (setq argl (list args)))
+  (|pfListOf| (mapcar #'|pfCheckId| argl))))
+
+(defun |pfCheckMacroOut| (form)
+ (let (args op ls)
+  (cond
+   ((|pfId?| form) (list form nil))
+   ((|pfApplication?| form)
+    (setq ls (|pfFlattenApp| form))
+    (setq op (|pfCheckId| (car ls)))
+    (setq args (mapcar #'|pfCheckArg| (cdr ls)))
+    (list op args))
+   (t (|npTrapForm| form)))))
+
+(defun |pfCheckId| (form)
+ (if (null (|pfId?| form))
+  (|npTrapForm| form)
+  form))
+
+(defun |pfCheckItOut| (x)
+ (let (args op ls form rt result)
+  (if (|pfTagged?| x)
+   (setq rt (|pfTaggedExpr| x))
+   (setq rt (|pfNothing|)))
+  (if (|pfTagged?| x)
+   (setq form (|pfTaggedTag| x))
+   (setq form x))
+  (cond
+   ((|pfId?| form)
+    (list (|pfListOf| (list (|pfTyped| form rt))) nil rt))
+   ((|pfCollect1?| form)
+    (list (|pfListOf| (list (|pfCollectVariable1| form))) nil rt))
+   ((|pfTuple?| form)
+    (list (|pfListOf|
+     (dolist (part (|pf0TupleParts| form) (nreverse result))
+      (push (|pfTaggedToTyped| part) result)))
+     nil rt))
+   ((|pfDefinition?| form)
+    (list (|pfListOf| (list (|pfTyped| form (|pfNothing|)))) nil rt))
+   ((|pfApplication?| form)
+    (setq ls (|pfFlattenApp| form))
+    (setq op (|pfTaggedToTyped1| (car ls)))
+    (setq args
+     (dolist (part (cdr ls) (nreverse result))
+      (push (|pfTransformArg| part) result)))
+    (list (|pfListOf| (list op)) args rt))
+   (t (|npTrapForm| form)))))
+
+(defun |pfCoerceto| (pfexpr pftype)
+ (|pfTree| '|Coerceto| (list pfexpr pftype)))
+
+(defun |pfCoerceto?| (pf)
+ (|pfAbSynOp?| pf '|Coerceto|))
+
+(defun |pfCollect| (pfbody pfiterators)
+ (|pfTree| '|Collect| (list pfbody pfiterators)))
+
+(defun |pfCollect?| (pf)
+ (|pfAbSynOp?| pf '|Collect|))
+
+(defun |pfCollect1?| (x)
+ (let (a)
+  (when (|pfApplication?| x)
+   (setq a (|pfApplicationOp| x))
+   (when (|pfId?| a) (eq (|pfIdSymbol| a) '|\||)))))
+
+(defun |pfCollectArgTran| (pf)
+ (let (cond tmp2 tmp1 id conds)
+  (cond
+   ((|pfCollect?| pf)
+    (setq conds (mapcar #'|pf2sex1| (|pfParts| (|pfCollectIterators| pf))))
+    (setq id (|pf2Sex1| (|pfCollectBody| pf)))
+    (cond
+     ((and (consp conds)                   ; conds is [ ["|", cond] ] 
+           (eq (cdr conds) nil)
+           (progn
+            (setq tmp1 (car conds))
+            (and (consp tmp1) 
+                 (eq (car tmp1) '|\||)
+                 (progn
+                  (setq tmp2 (cdr tmp1))
+                  (and (consp tmp2)
+                       (eq (cdr tmp2) nil)
+                       (progn
+                        (setq cond (car tmp2))
+                        t))))))
+              (list '|\|| id cond))
+     (t (cons id conds))))
+   (t (|pf2Sex1| pf)))))
+
+(defun |pfCollectVariable1| (x)
+ (let (id var a)
+  (setq a (|pfApplicationArg| x))
+  (setq var (car (|pf0TupleParts| a)))
+  (setq id (|pfTaggedToTyped| var))
+  (|pfTyped|
+   (|pfSuch| (|pfTypedId| id) (cadr (|pf0TupleParts| a)))
+   (|pfTypedType| id))))
+
+(defun |pfCollect2Sex| (pf)
+ (let (var cond sex tmp1 tmp2 tmp3 tmp4)
+  (setq sex
+   (cons 'collect
+    (append (|loopIters2Sex| (|pfParts| (|pfCollectIterators| pf)))
+            (list (|pf2Sex1| (|pfCollectBody| pf))))))
+  (cond
+   ((and (consp sex)
+         (eq (car sex) 'collect)
+         (progn
+          (setq tmp1 (cdr sex))
+          (and (consp tmp1)
+               (progn
+                (setq tmp2 (car tmp1))
+                (and (consp tmp2)
+                     (eq (car tmp2) '|\||)
+                         (progn
+                          (setq tmp3 (cdr tmp2))
+                          (and (consp tmp3)
+                               (eq (cdr tmp3) nil)
+                               (progn
+                                (setq cond (car tmp3))
+                                t)))))
+               (progn
+                (setq tmp4 (cdr tmp1))
+                (and (consp tmp4)
+                     (eq (cdr tmp4) nil)
+                         (progn (setq var (car tmp4)) t)))))
+         (symbolp var))
+    (list '|\|| var cond))
+   (t sex))))
+
+(defun |pfCopyWithPos| (pform pos)
+ (if (|pfLeaf?| pform)
+  (|pfLeaf| (|pfAbSynOp| pform) (|tokPart| pform) pos)
+  (|pfTree| (|pfAbSynOp| pform)
+            (loop for p in (|pfParts| pform)
+                  collect (|pfCopyWithPos| p pos)))))
+
+(defun |pfDefinition| (pflhsitems pfrhs)
+ (|pfTree| '|Definition| (list pflhsitems pfrhs)))
+
+(defun |pfDefinition?| (pf)
+ (|pfAbSynOp?| pf '|Definition|))
+
+(defun |pfDefinition2Sex| (pf)
+ (let (body argList tmp1 rhs id idList)
+ (declare (special |$insideApplication|))
+  (if |$insideApplication|
+   (list 'optarg
+    (|pf2Sex1| (car (|pf0DefinitionLhsItems| pf)))
+    (|pf2Sex1| (|pfDefinitionRhs| pf)))
+   (progn
+    (setq idList (mapcar #'|pf2Sex1| (|pf0DefinitionLhsItems| pf)))
+    (if (not (eql (length idList) 1))
+     (|systemError| 
+       "lhs of definition must be a single item in the interpreter")
+     (progn
+      (setq id (car idList))
+      (setq rhs (|pfDefinitionRhs| pf))
+      (setq tmp1 (|pfLambdaTran| rhs))
+      (setq argList (car tmp1))
+      (setq body (cdr tmp1))
+      (cons 'def
+       (cons
+        (if (eq argList '|id|) 
+         id
+         (cons id argList))
+        body))))))))
+
+(defun |pfDo| (pfbody)
+ (|pfTree| '|Do| (list pfbody)))
+
+(defun |pfDo?| (pf)
+ (|pfAbSynOp?| pf '|Do|))
+
+(defun |pfDocument| (strings)
+ (|pfLeaf| '|Document| strings))
+
+(defun |pfEnSequence| (a)
+ (cond
+  ((null a) (|pfTuple| (|pfListOf| a)))
+  ((null (cdr a)) (car a))
+  (t (|pfSequence| (|pfListOf| a)))))
+
+(defun |pfExit| (pfcond pfexpr)
+ (|pfTree| '|Exit| (list pfcond pfexpr)))
+
+(defun |pfExit?| (pf)
+ (|pfAbSynOp?| pf '|Exit|))
+
+(defun |pfExport| (pfitems)
+ (|pfTree| '|Export| (list pfitems)))
+
+(defun |pfExpression| (expr &rest optpos)
+ (|pfLeaf| '|expression| expr (ifcar optpos)))
+
+(defun |pfFileName| (posn)
+ (|poFileName| posn))
+
+(defun |pfFix| (pf)
+ (|pfApplication| (|pfId| 'Y) pf))
+
+(defun |pfFlattenApp| (x)
+ (cond
+  ((|pfApplication?| x)
+   (cond
+    ((|pfCollect1?| x) (LIST x))
+    (t
+     (append (|pfFlattenApp| (|pfApplicationOp| x))
+             (|pfFlattenApp| (|pfApplicationArg| x))))))
+  (t (list x))))
+
+(defun |pfFree| (pfitems)
+ (|pfTree| '|Free| (list pfitems)))
+
+(defun |pfFree?| (pf)
+ (|pfAbSynOp?| pf '|Free|))
+
+(defun |pfForin| (pflhs pfwhole)
+ (|pfTree| '|Forin| (list pflhs pfwhole)))
+
+(defun |pfForin?| (pf)
+ (|pfAbSynOp?| pf '|Forin|))
+
+(defun |pfFromDom| (dom expr)
+ (cond
+  ((|pfApplication?| expr)
+   (|pfApplication|
+    (|pfFromdom| (|pfApplicationOp| expr) dom)
+    (|pfApplicationArg| expr)))
+  (t (|pfFromdom| expr dom))))
+
+(defun |pfFromdom| (pfwhat pfdomain)
+ (|pfTree| '|Fromdom| (list pfwhat pfdomain)))
+
+(defun |pfFromdom?| (pf)
+ (|pfAbSynOp?| pf '|Fromdom|))
+
+(defun |pfGlobalLinePosn| (posn)
+ (|poGlobalLinePosn| posn))
+
+(defun |pfHide| (a part)
+ (declare (ignore a))
+ (|pfTree| '|Hide| (list part)))
+
+(defun |pfId| (expr)
+ (|pfLeaf| '|id| expr))
+
+(defun |pfId?| (form)
+ (or (|pfAbSynOp?| form '|id|) (|pfAbSynOp?| form '|idsy|)))
+
+(defun |pfIdPos| (expr pos)
+ (|pfLeaf| '|id| expr pos))
+
+(defun |pfIdSymbol| (form)
+ (|tokPart| form))
+
+(defun |pfIf| (pfcond pfthen pfelse)
+ (|pfTree| '|If| (list pfcond pfthen pfelse)))
+
+(defun |pfIf?| (pf)
+  (|pfAbSynOp?| pf '|If|))
+
+(defun |pfIfThenOnly| (pred cararg)
+ (|pfIf| pred cararg (|pfNothing|)))
+
+(defun |pfImport| (pfitems)
+ (|pfTree| '|Import| (list pfitems)))
+
+(defun |pfInline| (pfitems)
+ (|pfTree| '|Inline| (list pfitems)))
+
+(defun |pfInfApplication| (op left right)
+ (cond
+  ((eq (|pfIdSymbol| op) '|and|) (|pfAnd| left right))
+  ((eq (|pfIdSymbol| op) '|or|) (|pfOr| left right))
+  (t (|pfApplication| op (|pfTuple| (|pfListOf| (list left right)))))))
+
+(defun |pfIterate| (pffrom)
+ (|pfTree| '|Iterate| (list pffrom)))
+
+(defun |pfIterate?| (pf)
+ (|pfAbSynOp?| pf '|Iterate|))
+
+(defun |pfLam| (variable body)
+ (let (bdy rets)
+  (if (|pfAbSynOp?| body '|returntyped|)
+   (setq rets (|pfFirst| body))
+   (setq rets (|pfNothing|)))
+  (if (|pfAbSynOp?| body '|returntyped|)
+   (setq bdy (|pfSecond| body))
+   (setq bdy body))
+  (|pfLambda| variable rets bdy)))
+
+(defun |pfLambda| (pfargs pfrets pfbody)
+ (|pfTree| '|Lambda| (list pfargs pfrets pfbody)))
+
+(defun |pfLambdaTran| (pf)
+ (let (retType argList argTypeList)
+  (cond
+   ((|pfLambda?| pf)
+    (dolist (arg (|pf0LambdaArgs| pf))
+     (if (|pfTyped?| arg)
+      (progn
+       (setq argList
+        (cons (|pfCollectArgTran| (|pfTypedId| arg)) argList))
+       (if (|pfNothing?| (|pfTypedType| arg))
+        (setq argTypeList (cons nil argTypeList))
+        (setq argTypeList 
+         (cons (|pf2Sex1| (|pfTypedType| arg)) argTypeList))))
+      (|systemError| "definition args should be typed")))
+    (setq argList (nreverse argList))
+    (unless (|pfNothing?| (|pfLambdaRets| pf))
+     (setq retType (|pf2Sex1| (|pfLambdaRets| pf))))
+    (setq argTypeList (cons retType (nreverse argTypeList)))
+    (cons argList
+     (list argTypeList 
+           (mapcar #'(lambda (x) (declare (ignore x)) nil) argTypeList)
+           (|pf2Sex1| (|pfLambdaBody| pf)))))
+   (t (cons '|id| (list '(nil) '(nil) (|pf2Sex1| pf)))))))
+
+(defun |pfLambda?| (pf)
+ (|pfAbSynOp?| pf '|Lambda|))
+
+(defun |pfLambda2Sex| (pf)
+ (let (body argList tmp1)
+  (setq tmp1 (|pfLambdaTran| pf))
+  (setq argList (car tmp1))
+  (setq body (cdr tmp1))
+  (cons 'adef (cons argList body))))
+
+(defun |pfLeaf| (x y &rest z)
+ (|tokConstruct| x y (or (ifcar z) (|pfNoPosition|))))
+
+(defun |pfLeaf?| (form)
+ (member (|pfAbSynOp| form)
+   '(|id| |idsy| |symbol| |string| |char| |float| |expression|
+     |integer| |Document| |error|)))
+
+(defun |pfLeafPosition| (form)
+ (|tokPosn| form))
+
+(defun |pfLeafToken| (form)
+ (|tokPart| form))
+
+(defun |pfLhsRule2Sex| (lhs)
+ (let (|$insideRule|)
+ (declare (special |$insideRule|))
+  (setq |$insideRule| '|left|)
+  (|pf2Sex1| lhs)))
+
+(defun |pfLinePosn| (posn)
+ (|poLinePosn| posn))
+
+(defun |pfListOf| (x)
+ (|pfTree| '|listOf| x))
+
+(defun |pfLiteralClass| (form)
+ (|pfAbSynOp| form))
+
+(defun |pfLiteralString| (form)
+ (|tokPart| form))
+
+(defun |pfLiteral2Sex| (pf)
+ (let (s type)
+ (declare (special |$insideRule|))
+  (setq type (|pfLiteralClass| pf))
+  (cond
+   ((eq type '|integer|) (read-from-string (|pfLiteralString| pf)))
+   ((or (eq type '|string|) (eq type '|char|))
+    (|pfLiteralString| pf))
+   ((eq type '|float|) (|float2Sex| (|pfLiteralString| pf)))
+   ((eq type '|symbol|)
+    (if |$insideRule|
+     (progn
+      (setq s (|pfSymbolSymbol| pf))
+      (list 'quote s))
+     (|pfSymbolSymbol| pf)))
+   ((eq type '|expression|) (list 'quote (|pfLeafToken| pf)))
+   (t 
+    (|keyedSystemError| "Unexpected error in call to system function %1"
+     (list "pfLiteral2Sex: unexpected form"))))))
+
+(defun |pfLocal| (pfitems)
+ (|pfTree| '|Local| (list pfitems)))
+
+(defun |pfLocal?| (pf)
+ (|pfAbSynOp?| pf '|Local|))
+
+(defun |pfLoop| (pfiterators)
+ (|pfTree| '|Loop| (list pfiterators)))
+
+(defun |pfLoop1| (body)
+ (|pfLoop| (|pfListOf| (list (|pfDo| body)))))
+
+(defun |pfLoop?| (pf)
+ (|pfAbSynOp?| pf '|Loop|))
+
+(defun |pfLp| (iterators body)
+ (|pfLoop| (|pfListOf| (append iterators (list (|pfDo| body))))))
+
+(defun |pfMacro| (pflhs pfrhs)
+ (|pfTree| '|Macro| (list pflhs pfrhs)))
+
+(defun |pfMacro?| (pf)
+ (|pfAbSynOp?| pf '|Macro|))
+
+(defun |pfMapParts| (f pform)
+ (let (parts1 parts0)
+  (if (|pfLeaf?| pform) 
+   pform
+   (progn
+    (setq parts0 (|pfParts| pform))
+    (setq parts1 (loop for p in parts0 collect (funcall f p)))
+    (if (reduce #'(lambda (u v) (and u v)) (mapcar #'eq parts0 parts1) :initial-value t)
+     pform
+     (|pfTree| (|pfAbSynOp| pform) parts1))))))
+
+(defun |pfMLambda| (pfargs pfbody)
+ (|pfTree| '|MLambda| (list pfargs pfbody)))
+
+(defun |pfMLambda?| (pf)
+ (|pfAbSynOp?| pf '|MLambda|))
+
+(defun |pfname| (x) (|PathnameString| x))
+
+(defun |pfNoPosition| () (|poNoPosition|))
+
+(defun |pfNoPosition?| (pos)
+ (|poNoPosition?| pos))
+
+(defun |pfNot?| (pf)
+ (|pfAbSynOp?| pf '|Not|))
+
+(defun |pfNothing| ()
+ (|pfTree| '|nothing| nil))
+
+(defun |pfNothing?| (form)
+ (|pfAbSynOp?| form '|nothing|))
+
+(defun |pfNovalue| (pfexpr)
+ (|pfTree| '|Novalue| (list pfexpr)))
+
+(defun |pfNovalue?| (pf)
+ (|pfAbSynOp?| pf '|Novalue|))
+
+(defun |pfOp2Sex| (pf)
+ (let (realOp tmp1 op alreadyQuoted)
+ (declare (special |$quotedOpList| |$insideRule|))
+  (setq alreadyQuoted (|pfSymbol?| pf))
+  (setq op (|pf2Sex1| pf))
+  (cond
+   ((and (consp op)
+         (eq (car op) 'quote)
+         (progn
+          (setq tmp1 (cdr op))
+          (and (consp tmp1)
+               (eq (cdr tmp1) nil)
+               (progn
+                (setq realOp (car tmp1)) t))))
+    (cond
+     ((eq |$insideRule| '|left|) realOp)
+     ((eq |$insideRule| '|right|)
+      (cond
+       ((|pmDontQuote?| realOp) realOp)
+       (t
+        (setq |$quotedOpList| (cons op |$quotedOpList|))
+        op)))
+     ((eq realOp '|\||) realOp)
+     ((eq realOp '|:|) realOp)
+     ((eq realOp '?) realOp)
+     (t op)))
+   (t op))))
+
+(defun |pfOr| (pfleft pfright)
+ (|pfTree| '|Or| (list pfleft pfright)))
+
+(defun |pfOr?| (pf)
+ (|pfAbSynOp?| pf '|Or|))
+
+(defun |pfParen| (a part)
+ (declare (ignore a))
+ part)
+
+(defun |pfPretend| (pfexpr pftype)
+ (|pfTree| '|Pretend| (list pfexpr pftype)))
+
+(defun |pfPretend?| (pf)
+ (|pfAbSynOp?| pf '|Pretend|))
+
+(defun |pfPushBody| (rt args body)
+ (cond
+  ((null args) body)
+  ((null (cdr args)) (|pfLambda| (car args) rt body))
+  (t
+   (|pfLambda| (car args) (|pfNothing|)
+               (|pfPushBody| rt (cdr args) body)))))
+
+(defun |pfPushMacroBody| (args body)
+ (if (null args)
+   body
+   (|pfMLambda| (car args) (|pfPushMacroBody| (cdr args) body))))
+
+(defun |pfQualType| (pftype pfqual)
+ (|pfTree| '|QualType| (list pftype pfqual)))
+
+(defun |pfRestrict| (pfexpr pftype)
+ (|pfTree| '|Restrict| (list pfexpr pftype)))
+
+(defun |pfRestrict?| (pf)
+ (|pfAbSynOp?| pf '|Restrict|))
+
+(defun |pfRetractTo| (pfexpr pftype)
+ (|pfTree| '|RetractTo| (list pfexpr pftype)))
+
+(defun |pfReturn| (pfexpr pffrom)
+ (|pfTree| '|Return| (list pfexpr pffrom)))
+
+(defun |pfReturn?| (pf)
+ (|pfAbSynOp?| pf '|Return|))
+
+(defun |pfReturnNoName| (|value|)
+ (|pfReturn| |value| (|pfNothing|)))
+
+(defun |pfReturnTyped| (type body)
+ (|pfTree| '|returntyped| (list type body)))
+
+(defun |pfRhsRule2Sex| (rhs)
+ (let (|$insideRule|)
+ (declare (special |$insideRule|))
+  (setq |$insideRule| '|right|)
+  (|pf2Sex1| rhs)))
+
+(defun |pfRule| (pflhsitems pfrhs)
+ (|pfTree| '|Rule| (list pflhsitems pfrhs)))
+
+(defun |pfRule?| (pf)
+ (|pfAbSynOp?| pf '|Rule|))
+
+(defun |pfRule2Sex| (pf)
+ (let (|$multiVarPredicateList| |$predicateList| |$quotedOpList| rhs lhs)
+ (declare (special |$multiVarPredicateList| |$predicateList| |$quotedOpList|))
+  (setq |$quotedOpList| nil)
+  (setq |$predicateList| nil)
+  (setq |$multiVarPredicateList| nil)
+  (setq lhs (|pfLhsRule2Sex| (|pfRuleLhsItems| pf)))
+  (setq rhs (|pfRhsRule2Sex| (|pfRuleRhs| pf)))
+  (setq lhs (|ruleLhsTran| lhs))
+  (|rulePredicateTran|
+   (if |$quotedOpList|
+    (list '|rule| lhs rhs (cons '|construct| |$quotedOpList|))
+    (list '|rule| lhs rhs)))))
+
+(defun |pfSequence| (pfargs)
+ (|pfTree| '|Sequence| (list pfargs)))
+
+(defun |pfSequence?| (pf)
+ (|pfAbSynOp?| pf '|Sequence|))
+
+(defun |pfSequenceToList| (x)
+ (if (|pfSequence?| x) 
+  (|pfSequenceArgs| x)
+  (|pfListOf| (list x))))
+
+(defun |pfSequence2Sex| (pf)
+ (let (|$insideSEQ| tmp1 ruleList seq)
+ (declare (special |$insideSEQ|))
+  (setq |$insideSEQ| t)
+  (setq seq (|pfSequence2Sex0| (mapcar #'|pf2Sex1| (|pf0SequenceArgs| pf))))
+  (cond
+   ((and (consp seq) 
+         (eq (car seq) 'seq)
+         (progn (setq ruleList (cdr seq)) 't)
+         (consp ruleList)
+         (progn
+          (setq tmp1 (car ruleList))
+          (and (consp tmp1) (eq (car tmp1) '|rule|))))
+    (list '|ruleset| (cons '|construct| ruleList)))
+   (t seq))))
+
+(defun |pfSequence2Sex0| (seqList)
+ (let (value tmp2 cond tmp1 item seqTranList)
+  (if (null seqList) 
+   '|noBranch|
+    (progn
+     ((lambda ()
+       (loop
+        (if (not seqList) 
+         (return nil)
+         (progn
+           (setq item (car seqList))
+           (cond
+            ((and (consp item) 
+                  (eq (car item) '|exit|)
+                  (progn
+                   (setq tmp1 (cdr item))
+                   (and (consp tmp1)
+                        (progn
+                         (setq cond (car tmp1))
+                         (setq tmp2 (cdr tmp1))
+                         (and (consp tmp2)
+                              (eq (cdr tmp2) nil)
+                              (progn
+                               (setq value (car tmp2))
+                               t))))))
+               (setq item
+                (list 'if cond value (|pfSequence2Sex0| (cdr seqList))))
+               (setq seqTranList (cons item seqTranList))
+               (setq seqList nil))
+            (t
+             (progn
+              (setq seqTranList (cons item seqTranList))
+              (setq seqList (cdr seqList))))))))))
+     (if (eql (length seqTranList) 1) 
+      (car seqTranList)
+      (cons 'seq (nreverse seqTranList)))))))
+
+(defun |pfSexpr| (pform)
+ (|pfSexpr,strip| pform))
+
+(defun |pfSexpr,strip| (pform)
+ (let (args a result)
+  (cond
+   ((|pfId?| pform)      (|pfIdSymbol| pform))
+   ((|pfLiteral?| pform) (|pfLiteralString| pform))
+   ((|pfLeaf?| pform)    (|tokPart| pform))
+   ((|pfApplication?| pform)
+    (setq a (|pfApplicationArg| pform))
+    (if (|pfTuple?| a)
+     (setq args (|pf0TupleParts| a))
+     (setq args (list a)))
+    (dolist (p (cons (|pfApplicationOp| pform) args) (nreverse result))
+     (push (|pfSexpr,strip| p) result)))
+   (t
+    (cons (|pfAbSynOp| pform)
+     (dolist (p (|pfParts| pform) (nreverse result))
+      (push (|pfSexpr,strip| p) result)))))))
+
+(defun |pfSourcePosition| (form)
+ (let (pos)
+ (declare (special |$nopos|))
+  (cond
+   ((|pfLeaf?| form) (|pfLeafPosition| form))
+   (t
+    (setq pos |$nopos|)
+    ((lambda (theparts p) ; for p in parts while poNoPosition? pos repeat
+     (loop
+      (cond
+       ((or (atom theparts)
+            (progn (setq p (car theparts)) nil)
+            (not (|poNoPosition?| pos)))
+          (return nil))
+       (t (setq pos (|pfSourcePosition| p))))
+      (setq theparts (cdr theparts))))
+     (|pfParts| form) nil)
+    pos))))
+
+(defun |pfSourceStok| (x)
+ (cond
+  ((|pfLeaf?| x) x)
+  ((null (|pfParts| x)) '|NoToken|)
+  (t (|pfSourceStok| (|pfFirst| x)))))
+
+(defun |pfSpread| (arg1 arg2)
+ (mapcar #'(lambda (i) (|pfTyped| i arg2)) arg1))
+
+(defun |pfSuch| (x y)
+ (|pfInfApplication| (|pfId| '|\||) x y))
+
+(defun |pfSuchthat| (pfcond)
+ (|pfTree| '|Suchthat| (list pfcond)))
+
+(defun |pfSuchthat?| (pf)
+ (|pfAbSynOp?| pf '|Suchthat|))
+
+(defun |pfSuchThat2Sex| (args)
+ (let (rhsSex lhsSex argList name)
+ (declare (special |$predicateList|))
+  (setq name (gentemp))
+  (setq argList (|pf0TupleParts| args))
+  (setq lhsSex (|pf2Sex1| (car argList)))
+  (setq rhsSex (|pf2Sex| (cadr argList)))
+  (setq |$predicateList|
+   (cons (cons name (cons lhsSex rhsSex)) |$predicateList|))
+  name))
+
+(defun |pfSymb| (expr &REST optpos)
+ (if (|pfLeaf?| expr)
+  (|pfSymbol| (|tokPart| expr) (ifcar optpos))
+  (|pfExpression| (|pfSexpr| expr) (ifcar optpos))))
+
+(defun |pfSymbol| (expr &rest optpos)
+ (|pfLeaf| '|symbol| expr (ifcar optpos)))
+
+(defun |pfSymbol?| (form)
+ (|pfAbSynOp?| form '|symbol|))
+
+(defun |pfSymbolSymbol| (form)
+ (|tokPart| form))
+
+(defun |pfTagged| (pftag pfexpr)
+ (|pfTree| '|Tagged| (list pftag pfexpr)))
+
+(defun |pfTagged?| (pf)
+ (|pfAbSynOp?| pf '|Tagged|))
+
+(defun |pfTaggedToTyped| (arg)
+ (let (a form rt)
+  (if (|pfTagged?| arg)
+   (setq rt (|pfTaggedExpr| arg))
+   (setq rt (|pfNothing|)))
+  (if (|pfTagged?| arg)
+   (setq form (|pfTaggedTag| arg))
+   (setq form arg))
+  (cond
+   ((null (|pfId?| form))
+    (setq a (|pfId| (gensym)))
+    (|pfTyped| (|pfSuch| a (|pfInfApplication| (|pfId| '=) a form)) rt))
+   (t (|pfTyped| form rt)))))
+
+(defun |pfTaggedToTyped1| (arg)
+ (cond
+  ((|pfCollect1?| arg) (|pfCollectVariable1| arg))
+  ((|pfDefinition?| arg) (|pfTyped| arg (|pfNothing|)))
+  (t (|pfTaggedToTyped| arg))))
+
+(defun |pfTransformArg| (args)
+ (let (arglist result)
+  (if (|pfTuple?| args)
+   (setq arglist (|pf0TupleParts| args))
+   (setq arglist (list args)))
+  (|pfListOf|
+   (dolist (|i| arglist (nreverse result))
+    (push (|pfTaggedToTyped1| |i|) result)))))
+
+(defun |pfTuple| (pfparts)
+ (|pfTree| '|Tuple| (list pfparts)))
+
+(defun |pfTupleListOf| (pfparts)
+ (|pfTuple| (|pfListOf| pfparts)))
+
+(defun |pfTweakIf| (form)
+ (let (b a)
+  (setq a (|pfIfElse| form))
+  (setq b (if (|pfNothing?| a) (|pfListOf| NIL) a))
+  (|pfTree| '|WIf| (list (|pfIfCond| form) (|pfIfThen| form) b))))
+
+(defun |pfTyped| (pfid pftype)
+ (|pfTree| '|Typed| (list pfid pftype)))
+
+(defun |pfTyped?| (pf)
+ (|pfAbSynOp?| pf '|Typed|))
+
+(defun |pfTyping| (pfitems)
+ (|pfTree| '|Typing| (list pfitems)))
+
+(defun |pfTuple?| (pf)
+ (|pfAbSynOp?| pf '|Tuple|))
+
+(defun |pfUnSequence| (x)
+ (if (|pfSequence?| x) 
+  (|pfListOf| (|pfAppend| (|pf0SequenceArgs| x)))
+  (|pfListOf| x)))
+
+(defun |pfWDec| (doc name)
+ (mapcar #'(lambda (i) (|pfWDeclare| i doc)) (|pfParts| name)))
+
+(defun |pfWDeclare| (pfsignature pfdoc)
+ (|pfTree| '|WDeclare| (list pfsignature pfdoc)))
+
+(defun |pfWhere| (pfcontext pfexpr)
+ (|pfTree| '|Where| (list pfcontext pfexpr)))
+
+(defun |pfWhere?| (pf)
+ (|pfAbSynOp?| pf '|Where|))
+
+(defun |pfWhile| (pfcond)
+ (|pfTree| '|While| (list pfcond)))
+
+(defun |pfWhile?| (pf)
+ (|pfAbSynOp?| pf '|While|))
+
+(defun |pfWith| (pfbase pfwithin pfwithon)
+ (|pfTree| '|With| (list pfbase pfwithin pfwithon)))
+
+(defun |pfWrong| (pfwhy pfrubble)
+ (|pfTree| '|Wrong| (list pfwhy pfrubble)))
+
+(defun |pfWrong?| (pf)
+ (|pfAbSynOp?| pf '|Wrong|))
+
+(defun |pf0ApplicationArgs| (pform)
+  (|pf0FlattenSyntacticTuple| (|pfApplicationArg| pform)))
+
+(defun |pf0DefinitionLhsItems| (pf)
+ (|pfParts| (|pfDefinitionLhsItems| pf)))
+
+(defun |pf0FlattenSyntacticTuple| (pform)
+ (if (null (|pfTuple?| pform)) 
+  (list pform)
+   ; [:pf0FlattenSyntacticTuple p for p in pf0TupleParts pform]
+  ((lambda (arg0 arg1 p)
+   (loop
+    (cond
+     ((or (atom arg1) (progn (setq p (car arg1)) nil))
+      (return (nreverse arg0)))
+     (t
+      (setq arg0 (append (reverse (|pf0FlattenSyntacticTuple| p)) arg0))))
+    (setq arg1 (cdr arg1))))
+   nil (|pf0TupleParts| pform) nil)))
+
+(defun |pf0ForinLhs| (pf)
+ (|pfParts| (|pfForinLhs| pf)))
+
+(defun |pf0FreeItems| (pf)
+ (|pfParts| (|pfFreeItems| pf)))
+
+(defun |pf0LambdaArgs| (pf)
+ (|pfParts| (|pfLambdaArgs| pf)))
+
+(defun |pf0LocalItems| (pf)
+ (|pfParts| (|pfLocalItems| pf)))
+
+(defun |pf0LoopIterators| (pf)
+ (|pfParts| (|pfLoopIterators| pf)))
+
+(defun |pf0MLambdaArgs| (pf)
+ (|pfParts| (|pfMLambdaArgs| pf)))
+
+(defun |pf0SequenceArgs| (pf)
+ (|pfParts| (|pfSequenceArgs| pf)))
+
+(defun |pf0TupleParts| (pf)
+ (|pfParts| (|pfTupleParts| pf)))
+
+(defun |pf0WhereContext| (pf)
+ (|pfParts| (|pfWhereContext| pf)))
+
+(defun |pf2Sex| (pf)
+ (let (|$insideSEQ| |$insideApplication| |$insideRule|)
+ (declare (special |$insideSEQ| |$insideApplication| |$insideRule|
+                   |$QuietCommand|))
+  (setq |$QuietCommand| nil)
+  (setq |$insideRule| nil)
+  (setq |$insideApplication| nil)
+  (setq |$insideSEQ| nil)
+  (|pf2Sex1| pf)))
+
+(defun |pf2Sex1| (pf)
+ (let (args idList type op tagPart tag s)
+ (declare (special |$insideSEQ| |$insideRule| |$QuietCommand|))
+  (cond
+   ((|pfNothing?| pf) '|noBranch|)
+   ((|pfSymbol?| pf)
+    (if (eq |$insideRule| '|left|)
+     (progn
+      (setq s (|pfSymbolSymbol| pf))
+      (list '|constant| (list 'quote s)))
+     (list 'quote (|pfSymbolSymbol| pf))))
+   ((|pfLiteral?| pf) (|pfLiteral2Sex| pf))
+   ((|pfId?| pf)
+     (if |$insideRule|
+      (progn
+        (setq s (|pfIdSymbol| pf))
+        (if (member s '(|%pi| |%e| |%i|)) 
+          s
+          (list 'quote s)))
+      (|pfIdSymbol| pf)))
+   ((|pfApplication?| pf) (|pfApplication2Sex| pf))
+   ((|pfTuple?| pf) (cons '|Tuple| (mapcar #'|pf2Sex1| (|pf0TupleParts| pf))))
+   ((|pfIf?| pf)
+     (list 'if (|pf2Sex1| (|pfIfCond| pf))
+               (|pf2Sex1| (|pfIfThen| pf))
+               (|pf2Sex1| (|pfIfElse| pf))))
+   ((|pfTagged?| pf)
+    (setq tag (|pfTaggedTag| pf))
+    (setq tagPart
+     (if (|pfTuple?| tag)
+      (cons '|Tuple| (mapcar #'|pf2Sex1| (|pf0TupleParts| tag)))
+      (|pf2Sex1| tag)))
+    (list '|:| tagPart (|pf2Sex1| (|pfTaggedExpr| pf))))
+   ((|pfCoerceto?| pf)
+    (list '|::| (|pf2Sex1| (|pfCoercetoExpr| pf))
+                (|pf2Sex1| (|pfCoercetoType| pf))))
+   ((|pfPretend?| pf)
+    (list '|pretend| (|pf2Sex1| (|pfPretendExpr| pf))
+                     (|pf2Sex1| (|pfPretendType| pf))))
+   ((|pfFromdom?| pf)
+    (setq op (|opTran| (|pf2Sex1| (|pfFromdomWhat| pf))))
+    (when (eq op '|braceFromCurly|) (setq op 'seq))
+    (list '|$elt| (|pf2Sex1| (|pfFromdomDomain| pf)) op))
+   ((|pfSequence?| pf) (|pfSequence2Sex| pf))
+   ((|pfExit?| pf)
+    (if |$insideSEQ|
+     (list '|exit| (|pf2Sex1| (|pfExitCond| pf))
+                   (|pf2Sex1| (|pfExitExpr| pf)))
+     (list 'if (|pf2Sex1| (|pfExitCond| pf))
+               (|pf2Sex1| (|pfExitExpr| pf)) '|noBranch|)))
+   ((|pfLoop?| pf) (cons 'repeat (|loopIters2Sex| (|pf0LoopIterators| pf))))
+   ((|pfCollect?| pf) (|pfCollect2Sex| pf))
+   ((|pfForin?| pf)
+    (cons 'in
+     (append (mapcar #'|pf2Sex1| (|pf0ForinLhs| pf))
+             (list (|pf2Sex1| (|pfForinWhole| pf))))))
+   ((|pfWhile?| pf) (list 'while (|pf2Sex1| (|pfWhileCond| pf))))
+   ((|pfSuchthat?| pf)
+    (if (eq |$insideRule| '|left|)
+     (|keyedSystemError| "Unexpected error in call to system function %1"
+       (list "pf2Sex1: pfSuchThat"))
+     (list '|\|| (|pf2Sex1| (|pfSuchthatCond| pf)))))
+   ((|pfDo?| pf) (|pf2Sex1| (|pfDoBody| pf)))
+   ((|pfTyped?| pf)
+    (setq type (|pfTypedType| pf))
+    (if (|pfNothing?| type) 
+     (|pf2Sex1| (|pfTypedId| pf))
+     (list '|:| (|pf2Sex1| (|pfTypedId| pf)) (|pf2Sex1| (|pfTypedType| pf)))))
+   ((|pfAssign?| pf)
+    (setq idList (mapcar #'|pf2Sex1| (|pf0AssignLhsItems| pf)))
+    (if (not (eql (length idList) 1))
+     (setq idList (cons '|Tuple| idList))
+     (setq idList (car idList)))
+    (list 'let idList (|pf2Sex1| (|pfAssignRhs| pf))))
+   ((|pfDefinition?| pf) (|pfDefinition2Sex| pf))
+   ((|pfLambda?| pf) (|pfLambda2Sex| pf))
+   ((|pfMLambda?| pf) '|/throwAway|)
+   ((|pfRestrict?| pf)
+    (list '@ (|pf2Sex1| (|pfRestrictExpr| pf))
+             (|pf2Sex1| (|pfRestrictType| pf))))
+   ((|pfFree?| pf) (cons '|free| (mapcar #'|pf2Sex1| (|pf0FreeItems| pf))))
+   ((|pfLocal?| pf) (cons '|local| (mapcar #'|pf2Sex1| (|pf0LocalItems| pf))))
+   ((|pfWrong?| pf) (|spadThrow|))
+   ((|pfAnd?| pf)
+    (list '|and| (|pf2Sex1| (|pfAndLeft| pf))
+                 (|pf2Sex1| (|pfAndRight| pf))))
+   ((|pfOr?| pf)
+    (list '|or| (|pf2Sex1| (|pfOrLeft| pf))
+                (|pf2Sex1| (|pfOrRight| pf))))
+   ((|pfNot?| pf) (list '|not| (|pf2Sex1| (|pfNotArg| pf))))
+   ((|pfNovalue?| pf)
+    (setq |$QuietCommand| t)
+    (list 'seq (|pf2Sex1| (|pfNovalueExpr| pf))))
+   ((|pfRule?| pf) (|pfRule2Sex| pf))
+   ((|pfBreak?| pf) (list '|break| (|pfBreakFrom| pf)))
+   ((|pfMacro?| pf) '|/throwAway|)
+   ((|pfReturn?| pf) (list '|return| (|pf2Sex1| (|pfReturnExpr| pf))))
+   ((|pfIterate?| pf) (list '|iterate|))
+   ((|pfWhere?| pf)
+    (setq args (mapcar #'|pf2Sex1| (|pf0WhereContext| pf)))
+    (if (eql (length args) 1)
+     (cons '|where| (cons (|pf2Sex1| (|pfWhereExpr| pf)) args))
+     (list '|where| (|pf2Sex1| (|pfWhereExpr| pf)) (cons 'seq args))))
+;  -- under strange circumstances/piling, system commands can wind
+;  -- up in expressions. This just passes it through as a string for
+;  -- the user to figure out what happened.
+   ((eq (|pfAbSynOp| pf) '|command|) (|tokPart| pf))
+   (t (|keyedSystemError| "Unexpected error in call to system function %1"
+       (list "pf2Sex1"))))))
+
+(defun |phMacro| (carrier)
+ (let (ptree)
+  (setq ptree (|ncEltQ| carrier '|ptree|))
+  (|ncPutQ| carrier '|ptreePremacro| ptree)
+  (setq ptree (|macroExpanded| ptree))
+  (|ncPutQ| carrier '|ptree| ptree)
+  'ok))
+
+(defun |phParse| (carrier ptree)
+  (|ncPutQ| carrier '|ptree| ptree)
+  'ok)
+
+(defun |phInterpret| (carrier)
+ (let (val ptree)
+  (setq ptree (|ncEltQ| carrier '|ptree|))
+  (setq val (|intInterpretPform| ptree))
+  (|ncPutQ| carrier '|value| val)))
+
+(defun |phIntReportMsgs| (carrier interactive?)
+ (declare (ignore interactive?))
+ (let (nerr msgs lines)
+ (declare (special |$erMsgToss|))
+  (cond
+   (|$erMsgToss| 'ok)
+   (t
+     (setq lines (|ncEltQ| carrier '|lines|))
+     (setq msgs (|ncEltQ| carrier '|messages|))
+     (setq nerr (length msgs))
+     (|ncPutQ| carrier '|ok?| (eql nerr 0))
+     (cond
+      ((eql nerr 0) 'ok)
+      (t
+       (|processMsgList| msgs lines)
+       (|sayKeyedMsg| "%1 error(s) parsing " (list nerr))
+       'ok))))))
+
+(defun phiRatapprox (x)
+ (let ((arg (/ 1 (* x x))))
+  (/
+   (horner
+    '(0.066662907040200753 0.64507302912899211
+      0.67082783834332138 0.12398282342474939) arg)
+   (* x
+    (horner
+     '(1.0 7.9966911236636431 8.0995271894897574 1.4877938810969931) arg)))))
+
+(defun |pileCforest| (x)
+ (let (f)
+  (cond
+   ((null x) nil)
+   ((null (cdr x)) (setq f (car x))
+    (cond
+     ((eq (|tokPart| (caar f)) 'if) (|enPile| f))
+     (t f)))
+   (t (|enPile| (|separatePiles| x))))))
+
+(defun |pileColumn| (arg)
+ (cdr (|tokPosn| (caar arg))))
+
+(defun |pileCtree| (x y)
+ (|dqAppend| x (|pileCforest| y)))
+
+(defun |pileForest| (n s)
+ (let (t1 h1 t2 h hh b tmp)
+  (setq tmp (|pileTree| n s))
+  (setq b (car tmp))
+  (setq hh (cadr tmp))
+  (setq h (caddr tmp))
+  (setq t2 (cadddr tmp))
+  (cond
+   (b
+    (setq tmp (|pileForest1| hh t2))
+    (setq h1 (car tmp))
+    (setq t1 (cadr tmp))
+    (list (cons h h1) t1))
+   (t 
+    (list nil s)))))
+
+(defun |pileForest1| (n s)
+ (let (t1 h1 t2 h n1 b tmp)
+  (setq tmp (|eqpileTree| n s))
+  (setq b (car tmp))
+  (setq n1 (cadr tmp))
+  (setq h (caddr tmp))
+  (setq t2 (cadddr tmp))
+  (cond
+   (b
+    (setq tmp (|pileForest1| n t2))
+    (setq h1 (car tmp))
+    (setq t1 (cadr tmp))
+    (list (cons h h1) t1))
+   (t (list nil s)))))
+
+(defun |pileForests| (h n s)
+ (let (t1 h1 tmp1)
+  (setq tmp1 (|pileForest| n s))
+  (setq h1 (car tmp1))
+  (setq t1 (cadr tmp1))
+  (cond
+   ((|npNull| h1) (list t n h s))
+   (t (|pileForests| (|pileCtree| h h1) n t1)))))
+
+(defun |pilePlusComment| (arg)
+ (eq (|tokType| (caar arg)) '|comment|))
+
+(defun |pilePlusComments| (s)
+ (let (t1 h1 t2 h tmp1)
+  (cond
+   ((|npNull| s) (list nil s))
+   (t
+    (setq tmp1 (list (car s) (cdr s)))
+    (setq h (car tmp1))
+    (setq t2 (cadr tmp1))
+    (cond
+     ((|pilePlusComment| h)
+      (setq tmp1 (|pilePlusComments| t2))
+      (setq h1 (car tmp1))
+      (setq t1 (cadr tmp1))
+      (list (cons h h1) t1))
+     (t 
+      (list nil s)))))))
+
+(defun |pileTree| (n s)
+ (let (hh t1 h tmp1)
+  (cond
+   ((|npNull| s) (list nil n nil s))
+   (t
+    (setq tmp1 (list (car s) (cdr s)))
+    (setq h (car tmp1))
+    (setq t1 (cadr tmp1))
+    (setq hh (|pileColumn| (car h)))
+    (cond
+     ((< n hh) (|pileForests| (car h) hh t1))
+     (t (list nil n nil s)))))))
+
+(defun PiMinusLogSinPi (real imag z)
+ (- (cgammaG real imag) (logH real imag z)))
+
+(defun |poFileName| (posn)
+ (if posn
+  (|lnFileName| (|poGetLineObject| posn))
+  (caar posn)))
+
+(defun |poGlobalLinePosn| (posn)
+ (if posn 
+  (|lnGlobalNum| (|poGetLineObject| posn))
+  (|ncBug| "old style pos objects have no global positions" nil)))
+
+(defun |poLinePosn| (posn)
+ (if posn
+  (|lnLocalNum| (|poGetLineObject| posn))
+  (cdar posn)))
+
+(defun |poPosImmediate?| (txp)
+ (unless (|poNopos?| txp) (|lnImmediate?| (|poGetLineObject| txp))))
+
+(defun |porigin| (x)
+ (if (stringp x)
+  x
+  (|pfname| x)))
+
+(defun |posend| (lyne n)
+ ((lambda ()
+  (loop
+   (cond
+    ((not (and (< n (length lyne)) (|idChar?| (elt lyne n))))
+     (return nil))
+    (t (setq n (+ n 1)))))))
+ n)
+
+(defun |posPointers| (msgList)
+ (let (posLetterList pos ftPosList posList increment pointers)
+ (declare (special |getMsgFTTag|))
+  (setq pointers "ABCDEFGHIJKLMONPQRS")
+  (setq increment 0)
+  (dolist (msg msgList)
+   (setq pos (|poCharPosn| (|getMsgPos| msg)))
+   (unless (equal pos (ifcar posList))
+    (setq posList (cons pos posList)))
+   ; this should probably read TPDHERE
+   ; (when (eq (|getMsgPosTagOb| msg) 'fromto))
+   (when (eq |getMsgFTTag| 'fromto)
+    (setq ftPosList (cons (|poCharPosn| (|getMsgPos2| msg)) ftPosList))))
+  (dolist (toPos ftPosList)
+   (setq posList (|insertPos| toPos posList)))
+  (dolist (pos posList)
+   (setq posLetterList
+    (cons (cons pos (elt pointers increment)) posLetterList))
+   (setq increment (+ increment 1)))
+  posLetterList))
+
+(defun |ppos| (p)
+ (let (org lpos cpos)
+  (cond
+   ((|pfNoPosition?| p) (list "no position"))
+   ((|pfImmediate?| p) (list "console"))
+   (t
+    (setq cpos (|pfCharPosn| p))
+    (setq lpos (|pfLinePosn| p))
+    (setq org (|porigin| (|pfFileName| p)))
+    (list org " " "line" " " lpos)))))
+
+(defun |pquit| ()
+ "The top level pquit command"
+ (|pquitSpad2Cmd|)) 
+
+(defun |pquitSpad2Cmd| ()
+ "The top level pquit command handler"
+ (let ((|$quitCommandType| '|protected|))
+  (declare (special |$quitCommandType|))
+  (|quitSpad2Cmd|)))
+
+(defun |previousInterpreterFrame| ()
+ "Move to the previous Interpreter Frame in Ring"
+ (let (tmp1 l b)
+ (declare (special |$interpreterFrameRing|))
+  (|updateCurrentInterpreterFrame|)
+  (when  (cdr |$interpreterFrameRing|)
+    (setq tmp1 (reverse |$interpreterFrameRing|))
+    (setq l (car tmp1))
+    (setq b (nreverse (cdr tmp1)))
+    (setq |$interpreterFrameRing| (nconc (cons l nil) b))
+    (|updateFromCurrentInterpreterFrame|))))
+
+(defun |printLabelledList| (ls label1 label2 prefix patterns)
+ (let (comm syn wid)
+  (if (null ls)
+   (if (null patterns)
+    (|sayMessage| (list "   No " label1 "-defined " label2 " in effect."))
+    (|sayMessage|
+     `("   No " ,label1 "-defined " ,label2 " satisfying patterns:"
+       |%l| "     " ,@(append (|blankList| patterns) (list nil)))))
+   (progn
+    (when patterns
+      (|sayMessage|
+       `(,label1 "-defined " ,label2 " satisfying patterns:" |%l| "   "
+          ,@(append (|blankList| patterns) (list nil)))))
+     (do ((t1 ls (cdr t1)))
+         ((atom t1) nil)
+      (setq syn (caar t1))
+      (setq comm (cdar t1))
+      (when (string= (substring syn 0 1) "|")
+       (setq syn (substring syn 1 nil)))
+      (when (string= syn "%i") (setq syn "%i "))
+      (setq wid (max (- 30 (|#| syn)) 1))
+      (|sayBrightly|
+       (|concat| prefix syn (|fillerSpaces| wid ".")
+         " " prefix comm)))
+     (|sayBrightly| "")))))
+
+(defun |printStatisticsSummary| ()
+ (declare (special |$collectOutput|))
+ (unless |$collectOutput| 
+  (|sayKeyedMsg| "%rjon Summary: %1 %rjoff" (list (|statisticsSummary|)))))
+
+(defun |printStorage| ()
+ (declare (special |$interpreterTimedClasses| |$collectOutput|
+                   |$interpreterTimedNames|))
+  (unless |$collectOutput|
+   (|sayKeyedMsg| "%rjon Storage: %1 %rjoff"
+    (list 
+     (|makeLongSpaceString|
+       |$interpreterTimedNames|
+       |$interpreterTimedClasses|)))))
+
+(defun |printSynonyms| (patterns)
+ (let (ls t1)
+  (declare (special |$CommandSynonymAlist| $linelength))
+  (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " System Command Synonyms ")
+  (setq ls
+    (|filterListOfStringsWithFn| patterns
+     (do ((t2 (|synonymsForUserLevel| |$CommandSynonymAlist|) (cdr t2)))
+         ((atom t2) (nreverse0 t1))
+        (push (cons (princ-to-string (caar t2)) (cdar t2)) t1))
+     #'car))
+  (|printLabelledList| ls "user" "synonyms" ")" patterns)))
+
+(defun |printTypeAndTime| (x m)
+ (let (xp mp timeString result)
+ (declare (special |$outputLines| |$collectOutput| |$printTypeIfTrue|
+                   |$printTimeIfTrue| |$outputLines|
+                   |$interpreterTimedNames| |$interpreterTimedClasses|))
+  (cond
+   ((and (consp m) (eq (qcar m) '|Union|))
+    (setq xp (|retract| (mkObjWrap x m)))
+    (setq mp (|objMode| xp))
+    (setq m
+     (cons '|Union|
+      (append
+       (dolist (arg (qcdr m) (nreverse result))
+         (when (|sameUnionBranch| arg mp) (push arg result)))
+       (list "..."))))))
+  (when |$printTimeIfTrue|
+   (setq timeString
+    (|makeLongTimeString|
+     |$interpreterTimedNames|
+     |$interpreterTimedClasses|)))
+  (cond
+   ((and |$printTimeIfTrue| |$printTypeIfTrue|)
+    (if |$collectOutput|
+     (push (|msgText| "%rjon Type: %1p %rjoff" (list m)) |$outputLines|)
+     (|sayKeyedMsg| "%rjon Type: %1p %l Time: %2 %rjoff"
+       (list m timeString ))))
+   (|$printTimeIfTrue|
+    (unless |$collectOutput|
+      (|sayKeyedMsg| "%rjon Time: %1 %rjoff" (list timeString))))
+   (|$printTypeIfTrue|
+    (if |$collectOutput|
+     (push (|justifyMyType|
+            (|msgText| "%rjon Type: %1p %rjoff" (list m))) |$outputLines|)
+     (|sayKeyedMsg| "%rjon Type: %1p %rjoff" (list m)))))))
+
+(defun probeName (file)
+ (when (or (probe-file file) 
+           (probe-file (concatenate 'string (namestring file) "/index.kaf")))
+ (namestring file)))
+
+(defun |processChPosesForOneLine| (msgList)
+ (let (leaderMsg oldPre posLetter chPosList)
+ (declare (special |$preLength|))
+  (setq chPosList (|posPointers| msgList))
+  (dolist (msg msgList)
+   (when (|getMsgFTTag?| msg) (|putFTText| msg chPosList))
+   (setq posLetter (cdr (assoc (|poCharPosn| (|getMsgPos| msg)) chPosList)))
+   (setq oldPre (|getMsgPrefix| msg))
+   (|setMsgPrefix| msg
+    (concat oldPre
+     (make-string (- |$preLength| 4 (size oldPre))) posLetter)))
+  (setq leaderMsg (|makeLeaderMsg| chPosList))
+  (nconc msgList (list leaderMsg))))
+
+(defun |processInteractive| (form posnForm)
+ (let (|$op| |$Coerce| |$compErrorMessageStack| |$freeVars|
+             |$mapList| |$compilingMap| |$compilingLoop|
+             |$interpOnly| |$whereCacheList| |$timeGlobalName|
+             |$StreamFrame| |$declaredMode| |$localVars|
+             |$analyzingMapList| |$lastLineInSEQ|
+             |$instantCoerceCount| |$instantCanCoerceCount|
+             |$instantMmCondCount| |$fortVar| |$minivector|
+             |$minivectorCode| |$minivectorNames| |$domPvar|
+             |$inRetract| object)
+ (declare (special |$op| |$Coerce| |$compErrorMessageStack|
+                   |$freeVars| |$mapList| |$compilingMap|
+                   |$compilingLoop| |$interpOnly| |$whereCacheList|
+                   |$timeGlobalName| |$StreamFrame| |$declaredMode|
+                   |$localVars| |$analyzingMapList| |$lastLineInSEQ|
+                   |$instantCoerceCount| |$instantCanCoerceCount|
+                   |$instantMmCondCount| |$fortVar| |$minivector|
+                   |$minivectorCode| |$minivectorNames| |$domPvar|
+                   |$inRetract| |$instantRecord| |$reportInstantiations|
+                   |$ProcessInteractiveValue| |$defaultFortVar|
+                   |$interpreterTimedNames| |$interpreterTimedClasses|))
+  (|initializeTimedNames| |$interpreterTimedNames| |$interpreterTimedClasses|)
+  (if (consp form)                        ; compute name of operator
+   (setq |$op| (qcar form))
+   (setq |$op| form))
+  (setq |$Coerce| nil)
+  (setq |$compErrorMessageStack| nil)
+  (setq |$freeVars| nil)
+  (setq |$mapList| nil)                   ; list of maps being type analyzed
+  (setq |$compilingMap| nil)              ; true when compiling a map
+  (setq |$compilingLoop| nil)             ; true when compiling a loop body
+  (setq |$interpOnly| nil)                ; true when in interp only mode
+  (setq |$whereCacheList| nil)            ; maps compiled because of where
+  (setq |$timeGlobalName| '|$compTimeSum|); see incrementTimeSum
+  (setq |$StreamFrame| nil)               ; used in printing streams
+  (setq |$declaredMode| nil)              ; weak type propagation for symbols
+  (setq |$localVars| nil)                 ; list of local variables in function
+  (setq |$analyzingMapList| nil)       ; names of maps currently being analyzed
+  (setq |$lastLineInSEQ| t)               ; see evalIF and friends
+  (setq |$instantCoerceCount| 0)
+  (setq |$instantCanCoerceCount| 0)
+  (setq |$instantMmCondCount| 0)
+  (setq |$defaultFortVar| 'x)             ; default FORTRAN variable name
+  (setq |$fortVar| |$defaultFortVar|)     ; variable name for FORTRAN output
+  (setq |$minivector| nil)
+  (setq |$minivectorCode| nil)
+  (setq |$minivectorNames| nil)
+  (setq |$domPvar| nil)
+  (setq |$inRetract| nil)
+  (setq object (|processInteractive1| form posnForm))
+  (unless |$ProcessInteractiveValue|
+   (when |$reportInstantiations|
+    (|reportInstantiations|) 
+    (clrhash |$instantRecord|))
+   (|writeHistModesAndValues|) 
+   (|updateHist|))
+  object))
+
+(defun |processInteractive1| (form posnForm)
+ (let (|$e| object)
+ (declare (special |$e| |$ProcessInteractiveValue| |$InteractiveFrame|))
+  (setq |$e| |$InteractiveFrame|)
+  (recordFrame 'system)
+  (|startTimingProcess| '|analysis|)
+  (setq object (|interpretTopLevel| form posnForm))
+  (|stopTimingProcess| '|analysis|)
+  (|startTimingProcess| '|print|)
+  (unless |$ProcessInteractiveValue|
+    (|recordAndPrint| (|objValUnwrap| object) (|objMode| object)))
+  (recordFrame 'normal)
+  (|stopTimingProcess| '|print|)
+  object))
+
+(defun |processKeyedError| (msg)
+ (prog (pre erMsg)
+ (declare (special |$ncMsgList|))
+  (cond
+   ((eq (|getMsgTag?| msg) '|old|)
+     (setq erMsg (|getMsgKey| msg))
+     (cond
+      ((setq pre (|getMsgPrefix?| msg))
+        (setq erMsg (cons pre erMsg))))
+     (|sayBrightly| (cons "old msg from " (cons (|CallerName| 4) erMsg))))
+   ((|msgImPr?| msg) (|msgOutputter| msg))
+   (t (setq |$ncMsgList| (cons msg |$ncMsgList|))))))
+
+(defun |processMsgList| (erMsgList lineList)
+ (let (|$noRepList| |$outputList| st globalNumOfLine msgLine)
+ (declare (special |$noRepList| |$outputList|))
+  (setq |$outputList| nil)
+  (setq |$noRepList| nil)
+  (setq erMsgList (|erMsgSort| erMsgList))
+  (dolist (line lineList)
+   (setq msgLine (|makeMsgFromLine| line))
+   (setq |$outputList| (cons msgLine |$outputList|))
+   (setq globalNumOfLine (|poGlobalLinePosn| (|getMsgPos| msgLine)))
+   (setq erMsgList (|queueUpErrors| globalNumOfLine erMsgList)))
+  (setq |$outputList| (append erMsgList |$outputList|))
+  (setq st "---------SOURCE-TEXT-&-ERRORS------------------------")
+  (|listOutputter| (reverse |$outputList|))))
+
+(defun |protectedEVAL| (x)
+ (let (val (error t))
+  (unwind-protect
+   (progn
+    (setq val (eval x))
+    (setq error nil))
+   (when error
+    (|resetStackLimits|)
+    (|sendHTErrorSignal|)))
+  (unless error val)))
+
+(defun |processSynonymLine| (line)
+ (cons
+  (string2id-n line 1)
+  (|processSynonymLine,removeKeyFromLine| line)))
+
+(defun |processSynonymLine,removeKeyFromLine| (line)
+ (prog (mx)
+  (return
+   (seq
+    (setq line (string-left-trim " " line))
+    (setq mx (maxindex line))
+    (exit 
+     (do ((i 0 (1+ i)))
+         ((> i mx) nil)
+       (seq
+        (exit
+         (if (char= (elt line i) #\space)
+          (exit
+           (return
+            (do ((j (1+ i) (1+ j)))
+                ((> j mx) nil)
+              (seq
+               (exit
+                (if (char\= (elt line j) #\space)
+                 (exit
+                  (return
+                   (substring line j nil))))))))))))))))))
+
+(defun |processSynonyms| ()
+ (let (fill p aline synstr syn to opt fun cl chr)
+ (declare (special |$CommandSynonymAlist| line))
+  (setq p (strpos ")" line 0 nil))
+  (setq fill "")
+  (cond
+   (p
+    (setq aline (substring line p nil))
+    (when (> p 0) (setq fill (substring line 0 p))))
+   (t
+    (setq p 0)
+    (setq aline line)))
+  (setq to (strpos " " aline 1 nil))
+  (cond (to (setq to (1- to))))
+  (setq synstr (substring aline 1 to))
+  (setq syn (string2id-n synstr 1))
+  (when  (setq fun (lassoc syn |$CommandSynonymAlist|))
+   (setq to (strpos ")" fun 1 nil))
+   (cond
+    ((and to (not (eql to (1- (size fun)))))
+     (setq opt (concat " " (substring fun to nil)))
+     (setq fun (substring fun 0 (1- to ))))
+    (t (setq opt " ")))
+   (when (> (size synstr) (size fun))
+    (do ((G167173 (size synstr)) (i (size fun) (1+ i)))
+        ((> i G167173) nil)
+     (setq fun (concat fun " "))))
+   (setq cl (concat fill (rplacstr aline 1 (size synstr) fun) opt))
+   (setq line cl)
+   (setq chr (elt line (1+ p)))
+   (|processSynonyms|))))
+
+(defun |prTraceNames| ()
+ (declare (special |$traceNames|))
+ (seq
+  (progn
+   (do ((t0 |$traceNames| (cdr t0)) (x nil))
+       ((or (atom t0) (progn (setq x (car t0)) nil)) nil)
+    (seq
+     (exit
+      (print (|prTraceNames,fn| x))))) nil))) 
+
+(defun |prTraceNames,fn| (x)
+ (prog (|d| |t|)
+  (return
+   (seq
+    (if (and (and (consp x) 
+                  (progn (setq |d| (qcar x)) (setq |t| (qcdr x)) t))
+              (|isDomainOrPackage| |d|))
+      (exit (cons (|devaluate| |d|) |t|)))
+    (exit x))))) 
+
+(defun |pSearch| (filter)
+  (|constructorSearch| (|checkFilter| filter) '|p| "package"))
+
+(defun PsiAsymptotic (n x)
+ (let (sum factterm xterm xsq xnp1 xn)
+ (declare (special |$PsiAsymptoticBern|))
+  (setq xn (expt x n))
+  (setq xnp1 (* xn x))
+  (setq xsq (* x x))
+  (setq xterm xsq)
+  (setq factterm (/ (/ (rgammaImpl (+ n 2)) 2.0) (rgammaImpl (float (+ n 1)))))
+  ; initialize to 1/n!
+  (setq sum (/ (* (aref |$PsiAsymptoticBern| 1) factterm) xterm))
+  (loop for k from 2 to 22 do
+    (setq xterm (* xterm xsq))
+    (cond
+     ((eql n 0) (setq factterm (/ 1.0 (float (* 2 k)))))
+     ((eql n 1) (setq factterm 1))
+     (t
+      (setq factterm
+       (/ (* (* factterm (float (- (+ (* 2 k) n) 1)))
+             (float (- (+ (* 2 k) n) 2)))
+          (* (float (* 2 k)) (float (- (* 2 k) 1)))))))
+    (setq sum (+ sum (/ (* (aref |$PsiAsymptoticBern| k) factterm) xterm))))
+  (+ (+ (PsiEps n x) (/ 1.0 (* 2.0 xnp1))) (* (/ 1.0 xn) sum))))
+
+(defun PsiBack (n x xmin)
+ (let (result x0 xintpart)
+  (setq xintpart (PsiIntpart x))
+  (setq x0 (- x xintpart)) ; frac part of x
+  (setq result (PsiAsymptotic n (+ (+ x0 xmin) 1.0)))
+  ; Why not decrement from x?   See Amos p. 498
+  (loop for k from xmin downto xintpart by 1 do
+    (setq result (+ result (/ 1.0 (expt (+ x0 (float k)) (+ n 1))))))
+  result))
+
+(defun PsiXotic (n result)
+ (* (* (rgammaImpl (float (+ n 1))) (expt (- 1) (mod (+ n 1) 2))) result))
+
+(defun |pspacers| ()
+ (declare (special |$spaceList|))
+ (if (null |$spaceList|)
+   (|sayBrightly| "   no functions have space monitored")
+   (dolist (spacer |$spaceList|)
+     (|sayBrightly|
+      `("  " ,@(|bright| spacer) |: | 
+        ,(eval (intern (concat spacer ",SPACE"))) " bytes")))))
+
+(defun |ptimers| ()
+  (declare (special |$timerList| |$timerTicksPerSecond|))
+  (if (null |$timerList|) 
+   (|sayBrightly| "   no functions are timed")
+   (dolist (timer |$timerList|)
+     (|sayBrightly|
+      `("  " ,@(|bright| timer) |:| " "
+         ,(quotient (eval (intern (concat timer ",TIMER")))
+            (float |$timerTicksPerSecond|)) " sec.")))))
+
+(defun put (sym ind val) (setf (get sym ind) val))
+
+(defun |putFTText| (msg chPosList)
+ (let (charMarker2 pos2 markingText charMarker pos tag)
+  (setq tag (|getMsgFTTag?| msg))
+  (setq pos (|poCharPosn| (|getMsgPos| msg)))
+  (setq charMarker (cdr (assoc pos chPosList)))
+  (cond
+   ((eq tag 'from)
+    (setq markingText (list " (from " charMarker " and on) "))
+    (|setMsgText| msg (append markingText (|getMsgText| msg))))
+   ((eq tag 'to)
+    (setq markingText (list " (up to " charMarker ") "))
+    (|setMsgText| msg (append markingText (|getMsgText| msg))))
+   ((eq tag 'fromto)
+    (setq pos2 (|poCharPosn| (|getMsgPos2| msg)))
+    (setq charMarker2 (cdr (assoc pos2 chPosList)))
+    (setq markingText (list " (from " charMarker " up to " charMarker2 ") "))
+    (|setMsgText| msg (append markingText (|getMsgText| msg)))))))
+
+(defun |punctuation?| (c)
+ (eql (elt |scanPun| c) 1))
+
+(defun |putDatabaseStuff| (msg)
+ (let (attributes text tmp)
+  (setq tmp (|getMsgInfoFromKey| msg))
+  (setq text (car tmp))
+  (setq attributes (cadr tmp))
+  (when attributes (|setMsgUnforcedAttrList| msg attributes))
+  (|setMsgText| msg text)))
+
+(defun |putHist| (x prop val e)
+  (declare (special |$HiFiAccess|))
+  (when (null (eq x '%)) (|recordOldValue| x prop (|get| x prop e)))
+  (when |$HiFiAccess| (|recordNewValue| x prop val))
+  (|putIntSymTab| x prop val e))
+
+(defun |pvarCondList1| (pvarList activeConds condList)
+  (prog (cond restConds t2 pv t3 pattern)
+    (return
+      (cond
+        ((null condList) activeConds)
+        (t (setq cond (car condList))
+         (setq restConds (cdr condList))
+         (cond
+           ((and (consp cond)
+                 (progn
+                   (setq t2 (qcdr cond))
+                   (and (consp t2)
+                        (progn
+                          (setq pv (qcar t2))
+                          (setq t3 (qcdr t2))
+                          (and (consp t3)
+                               (eq (qcdr t3) nil)
+                               (progn
+                                 (setq pattern (qcar t3))
+                                 t)))))
+                 (|member| pv pvarList))
+            (|pvarCondList1|
+                (NCONC pvarList (|pvarsOfPattern| pattern))
+                (cons cond activeConds) restConds))
+           (t (|pvarCondList1| pvarList activeConds restConds))))))))
+
+(defun |pvarCondList| (pvar)
+  (declare (special |$curPage|))
+  (NREVERSE
+      (|pvarCondList1| (cons pvar nil) nil
+          (|htpDomainConditions| |$curPage|))))
+
+(defun |pvarPredTran| (rhs varList)
+ (let ((i 0))
+  (dolist (var varList rhs)
+   (setq rhs (nsubst (list '|elt| '|predicateVariable| (incf i)) var rhs)))))
+
+(defun |pvarsOfPattern| (pattern)
+  (prog ()
+  (declare (special |$PatternVariableList|))
+    (return
+      (SEQ (cond
+             ((null (listp pattern)) nil)
+             (t
+              (prog (G166869)
+                (setq G166869 nil)
+                (return
+                  (DO ((G166875 (cdr pattern) (cdr G166875))
+                       (pvar nil))
+                      ((or (atom G166875)
+                           (progn (setq pvar (car G166875)) nil))
+                       (NREVERSE0 G166869))
+                    (SEQ (EXIT (cond
+                                 ((|member| pvar
+                                      |$PatternVariableList|)
+                                  (setq G166869
+                                        (cons pvar G166869)))))))))))))))
+
+
+(defun |queryClients| ()
+  (declare (special |$SessionManager| |$QueryClients|))
+  (|sockSendInt| |$SessionManager| |$QueryClients|)
+  (|sockGetInt| |$SessionManager|)) 
+
+(DEFUN |queueUpErrors| (|globalNumOfLine| |msgList|)
+  (PROG (|notThisPosMsgs| |notThisLineMsgs| |thisPosMsgs|)
+    (DECLARE (SPECIAL |$outputList|))
+    (RETURN
+      (PROGN
+        (SETQ |thisPosMsgs| NIL)
+        (SETQ |notThisLineMsgs| NIL)
+        ((LAMBDA (|bfVar#7| |msg|)
+           (LOOP
+             (COND
+               ((OR (ATOM |bfVar#7|)
+                    (PROGN (SETQ |msg| (CAR |bfVar#7|)) NIL)
+                    (NOT (|thisPosIsLess| (|getMsgPos| |msg|)
+                             |globalNumOfLine|)))
+                (RETURN NIL))
+               ('T
+                (PROGN
+                  (COND
+                    ((NULL (|redundant| |msg| |notThisPosMsgs|))
+                     (SETQ |notThisPosMsgs|
+                           (CONS |msg| |notThisPosMsgs|))))
+                  (SETQ |msgList| (CDR |msgList|)))))
+             (SETQ |bfVar#7| (CDR |bfVar#7|))))
+         |msgList| NIL)
+        ((LAMBDA (|bfVar#8| |msg|)
+           (LOOP
+             (COND
+               ((OR (ATOM |bfVar#8|)
+                    (PROGN (SETQ |msg| (CAR |bfVar#8|)) NIL)
+                    (NOT (|thisPosIsEqual| (|getMsgPos| |msg|)
+                             |globalNumOfLine|)))
+                (RETURN NIL))
+               ('T
+                (PROGN
+                  (COND
+                    ((NULL (|redundant| |msg| |thisPosMsgs|))
+                     (SETQ |thisPosMsgs| (CONS |msg| |thisPosMsgs|))))
+                  (SETQ |msgList| (CDR |msgList|)))))
+             (SETQ |bfVar#8| (CDR |bfVar#8|))))
+         |msgList| NIL)
+        (COND
+          (|thisPosMsgs|
+              (SETQ |thisPosMsgs|
+                    (|processChPosesForOneLine| |thisPosMsgs|))
+              (SETQ |$outputList| (NCONC |thisPosMsgs| |$outputList|))))
+        (COND
+          (|notThisPosMsgs|
+              (SETQ |$outputList|
+                    (NCONC |notThisPosMsgs| |$outputList|))))
+        |msgList|))))
+
+(defun |quit| ()
+ "The top level quit command"
+ (|quitSpad2Cmd|))
+
+(defun |quitSpad2Cmd| ()
+ "The top level quit command handler"
+ (declare (special |$quitCommandType|))
+ (if (eq |$quitCommandType| '|protected|)
+  (let (x)
+   (setq x
+    (upcase
+     (|queryUserKeyedMsg|
+      (format nil
+       "Please enter y or yes if you really want to leave the interactive ~
+        environment and return to the operating system:")
+       nil)))
+   (when (member (string2id-n x 1) '(y yes)) (|leaveScratchpad|))
+   (|sayKeyedMsg| 
+    "You have chosen to remain in the Axiom interactive environment." nil)
+   (tersyscommand))
+  (|leaveScratchpad|)))
+
+(defun |quoteString| (string)
+  (concat "\"" string "\""))
+
+
+(defun |rassocSub| (x subs)
+ (let (y)
+   (if (setq y (|rassoc| x subs)) 
+    y
+    x)))
+
+(defun rbesseli (n x)
+  (c-to-r (BesselI n x)));)
+
+(defun rbesselj (n x)
+  (c-to-r (BesselJ n x)));)
+
+(defun rdefinstream (&rest fn)
+  ;; following line prevents rdefiostream from adding a default filetype
+  (unless (rest fn) (setq fn (list (pathname (car fn)))))
+  (rdefiostream (list (cons 'file fn) '(mode . input))))
+
+(defun rdefoutstream (&rest fn)
+  ;; following line prevents rdefiostream from adding a default filetype
+  (unless (rest fn) (setq fn (list (pathname (car fn)))))
+  (rdefiostream (list (cons 'FILE fn) '(mode . OUTPUT))))
+
+(defun |read| (arg) (|readSpad2Cmd| arg)) 
+
+(defun /read (l q)
+ (declare (special /editfile))
+  (setq /editfile l)
+  (cond
+    (q (/rq))
+    (t (/rf)) )
+  (flag |boot-NewKEY| 'key)
+  (|terminateSystemCommand|)
+  (|spadPrompt|))
+
+
+(defun |readHiFi| (n)
+ "Read the history file using index n"
+ (let (pair HiFi vec)
+  (declare (special |$useInternalHistoryTable| |$internalHistoryTable|))
+  (if |$useInternalHistoryTable|
+   (progn
+    (setq pair (|assoc| n |$internalHistoryTable|))
+    (if (atom pair) 
+     (|keyedSystemError| "Missing element in internal history table." nil)
+     (setq vec (qcdr pair))))
+   (progn
+     (setq HiFi
+      (rdefiostream
+       (cons
+        '(mode . input)
+         (cons
+          (cons 'file (|histFileName|)) nil))))
+     (setq vec (spadrread (|object2Identifier| n) HiFi))
+     (rshut HiFi)))
+  vec))
+
+(defun readline (t1)
+ (if t1
+  (|read-line| t1)
+  (|read-line| *STANDARD-INPUT*)))
+
+(defun |readSpadProfileIfThere| ()
+ (let ((file (list '|.axiom| '|input|)))
+ (declare (special /editfile))
+  (when (makeInputFilename file) (setq /editfile file) (/rq))))
+
+(defun |readSpad2Cmd| (arg)
+ (prog (|$InteractiveMode| fullopt ifthere quiet ef devFTs fileTypes 
+        ll ft upft fs)
+ (declare (special |$InteractiveMode| $findfile |$UserLevel| |$options|
+                      /editfile))
+  (setq |$InteractiveMode| t)
+  (dolist (opt |$options|)
+   (setq fullopt
+    (|selectOptionLC| (car opt) '(|quiet| |test| |ifthere|) '|optionError|))
+    (cond
+     ((eq fullopt '|ifthere|) (setq ifthere t))
+     ((eq fullopt '|quiet|)   (setq quiet t))))
+  (setq ef (or (|pathname| /editfile) ""))
+  (when (eq (|pathnameTypeId| ef) 'spad)
+    (setq ef (|makePathname| (|pathnameName| ef) "*" "*")))
+  (if arg 
+   (setq arg (|mergePathnames| (|pathname| arg) ef))
+   (setq arg ef))
+  (setq devFTs '("input" "INPUT" "boot" "BOOT" "lisp" "LISP"))
+  (setq fileTypes
+   (cond
+    ((eq |$UserLevel| '|interpreter|) '("input" "INPUT"))
+    ((eq |$UserLevel| '|compiler|)    '("input" "INPUT"))
+    (t devFTs)))
+  (setq ll ($findfile arg fileTypes))
+  (unless ll
+    (if ifthere 
+     (return nil)
+     (|throwKeyedMsg| "The file %1 is needed but does not exist."
+      (list (|namestring| arg)))))
+  (setq ll (|pathname| ll))
+  (setq ft (|pathnameType| ll))
+  (setq upft (upcase ft))
+  (cond
+   ((null (|member| upft fileTypes))
+     (setq fs (|namestring| arg))
+     (if (|member| upft devFTs)
+      (|throwKeyedMsg|
+       (format nil
+        "You cannot )read the file %1 because your user-level is not is ~
+         not high enough. For more information about your user-level, issue ~
+         )set userlevel.")
+       (list fs))
+      (|throwKeyedMsg| 
+       (format nil
+        "You cannot )read the file %1 because it is not suitable for ~
+         reading by Axiom. Note that files with file extension .spad ~
+         can now only be compiled with the )compile system command.")
+       (list fs))))
+   (t
+    (setq /editfile ll)
+    (when (string= upft "BOOT") (setq |$InteractiveMode| nil))
+    (/read ll quiet)))))
+
+(defun |reassembleTowerIntoType| (tower)
+ (let (let1)
+  (cond
+   ((atom tower) tower)
+   ((null (cdr tower)) (car tower))
+   (t
+    (setq let1 (reverse tower))
+    (|reassembleTowerIntoType|
+      (append (nreverse (cddr let1))
+              (list (append (second let1) (list (first let1))))))))))
+
+(defun |recordAndPrint| (x md)
+ (let (|$outputMode| xp mdp mode)
+ (declare (special |$outputMode| |$mkTestOutputType| |$runTestFlag| |$e|
+                   |$mkTestFlag| |$HTCompanionWindowID| |$QuietCommand|
+                   |$printStatisticsSummaryIfTrue| |$printTypeIfTrue|
+                   |$printStorageIfTrue| |$printTimeIfTrue| |$Void|
+                   |$algebraOutputStream| |$collectOutput| |$EmptyMode|
+                   |$printVoidIfTrue| |$outputMode| |$printAnyIfTrue|))
+  (cond
+   ((and (equal md '(|Any|)) |$printAnyIfTrue|)
+    (setq mdp (car x))
+    (setq xp (cdr x)))
+   (t
+    (setq mdp md)
+    (setq xp x)))
+  (setq |$outputMode| md)
+  (if (equal md |$EmptyMode|)
+   (setq mode (|quadSch|))
+   (setq mode md))
+  (when (or (not (equal md |$Void|)) |$printVoidIfTrue|)
+    (unless |$collectOutput| (terpri |$algebraOutputStream|))
+    (unless |$QuietCommand| (|output| xp mdp)))
+  (|putHist| '% '|value| (mkObjWrap x md) |$e|)
+  (when (or |$printTimeIfTrue| |$printTypeIfTrue|)
+    (|printTypeAndTime| xp mdp))
+  (when |$printStorageIfTrue| (|printStorage|))
+  (when |$printStatisticsSummaryIfTrue| (|printStatisticsSummary|))
+  (when (integerp |$HTCompanionWindowID|) (|mkCompanionPage| md))
+  (cond
+   (|$mkTestFlag| (|recordAndPrintTest| md))
+   (|$runTestFlag|
+    (setq |$mkTestOutputType| md) 
+    '|done|)
+   (t '|done|))))
+
+(defun recordFrame (systemNormal)
+ (prog (currentAlist delta)
+ (declare (special |$frameRecord| |$InteractiveFrame| |$previousBindings|))
+  (return
+   (seq
+     (setq currentAlist (ifcar |$frameRecord|))
+     (setq delta (|diffAlist| (caar |$InteractiveFrame|) |$previousBindings|))
+     (cond
+        ((eq systemNormal 'system)
+          (cond 
+           ((null delta)
+             (return nil))
+           (t
+             (setq delta (cons '|systemCommand| delta))))))
+     (setq |$frameRecord| (cons delta |$frameRecord|))
+     ; copy all but the individual properties
+     ; note that this loop makes no sense. In boot it read:
+     ; [cons(first x, [cons(first y,rest y) for y in rest x]) for x 
+     ;  in caar $InteractiveFrame
+     ; ... but cons(first y, rest y) == y
+     (setq |$previousBindings|
+        (prog (tmp0)
+         (setq tmp0 nil)
+         (return
+          (do ((tmp1 (caar |$InteractiveFrame|) (cdr tmp1)) (x nil))
+              ((or (atom tmp1) 
+                   (progn (setq x (car tmp1)) nil))
+                (nreverse0 tmp0))
+           (seq
+            (exit
+             (setq tmp0
+              (cons 
+               (cons 
+                (car x)
+                (prog (tmp2)
+                 (setq tmp2 nil)
+                 (return
+                  (do ((tmp3 (cdr x) (cdr tmp3)) (y nil))
+                      ((or (atom tmp3) 
+                           (progn (setq y (car tmp3)) nil))
+                        (nreverse0 tmp2))
+                   (seq
+                    (exit
+                     (setq tmp2 (cons (cons (car y) (cdr y)) tmp2))))))))
+                tmp0))))))))
+     (first |$frameRecord|)))))
+
+(defun |recordNewValue| (x prop val)
+  (|startTimingProcess| '|history|)
+  (|recordNewValue0| x prop val)
+  (|stopTimingProcess| '|history|))
+
+(defun |recordNewValue0| (x prop val)
+ (let (p1 p2 p)
+ (declare (special |$HistRecord|))
+   (if (setq p1 (assq x |$HistRecord|))
+    (if (setq p2 (assq prop (cdr p1))) 
+      (rplacd p2 val)
+      (rplacd p1 (cons (cons prop val) (cdr p1))))
+    (progn
+      (setq p (cons x (list (cons prop val))))
+      (setq |$HistRecord| (cons p |$HistRecord|))))))
+
+(defun |recordOldValue| (x prop val)
+  (|startTimingProcess| '|history|)
+  (|recordOldValue0| x prop val)
+  (|stopTimingProcess| '|history|))
+
+(defun |recordOldValue0| (x prop val)
+ (let (p1 p)
+ (declare (special |$HistList|))
+ (when (setq p1 (assq x (car |$HistList|)))
+   (when (null (assq prop (cdr p1)))
+      (rplacd p1 (cons (cons prop val) (cdr p1)))))
+ (setq p (cons x (list (cons prop val))))
+ (rplaca |$HistList| (cons p (car |$HistList|)))))
+
+(defun |reduceAlistForDomain| (alist domform conform)
+ (let (pred result)
+  (setq alist (sublislis (cdr domform) (cdr conform) alist))
+  (dolist (pair alist)
+   (rplacd pair (|simpHasPred| (cdr pair) domform)))
+  (dolist (pair alist (nreverse0 result))
+   (setq pred (cdr pair))
+   (when pred (setq result (cons pair result))))))
+
+(defun |redundant| (msg thisPosMsgs)
+ (prog (found)
+ (declare (special |$noRepList|))
+  (return
+   (progn
+    (cond
+     ((|msgNoRep?| msg)
+      ((lambda (Var9 item)
+       (loop
+        (cond
+         ((or (atom Var9) (progn (setq item (car Var9)) nil))
+           (return nil))
+         (t
+          (cond
+           ((|sameMsg?| msg item) (return (setq found t))))))
+        (setq Var9 (cdr Var9))))
+       |$noRepList| nil)
+      (setq |$noRepList| (list msg |$noRepList|))))
+   (or found (member msg thisPosMsgs))))))
+
+(defun |regress| (arg)
+ (let (|$InteractiveMode| namestring dot1 outfile (extension "output"))
+ (declare (special |$InteractiveMode|))
+  (setq |$InteractiveMode| t)
+  (setq namestring (symbol-name (car arg)))
+  (setq dot1 (position #\. namestring))
+  (unless dot1
+   (setq outfile (concatenate 'string (subseq namestring 0) "." extension)))
+  (if (probe-file outfile)
+   (regress outfile)
+   (format t (concatenate 'string outfile "~% file not found")))))
+
+(defun regress (infile)
+ (let (name comment test (count 0) (passed 0) (failed 0))
+ (declare (special *all-tests-ran*))
+  (setq *all-tests-ran* nil)
+  (with-open-file (stream infile :direction :input)
+   (setq name (getspoolname stream)) 
+   (when name
+    (format t "testing ~a~%" name)
+    (loop
+     (setq *ok* nil)
+     (multiple-value-setq (comment test) (findnexttest stream))
+     (unless comment (return))
+     (setq count (+ count 1))
+     (if (testpassed test)
+      (progn
+       (setq passed (+ passed 1))
+       (format t "passed ~a ~a~%" name comment))
+      (progn
+       (setq failed (+ failed 1))
+       (format t "FAILED ~a ~a~%" name comment))))
+   (if (= failed 0)
+    (format t "regression result passed ~a of ~a stanzas ~Tfile ~a~%"
+     passed count name)
+    (format t "regression result FAILED ~a of ~a stanzas ~Tfile ~a~%"
+     failed count name))
+   (unless *all-tests-ran*
+    (format t "regression result FAILED early exit in file ~a?~%" name))))))
+
+(defun |remFile| (positionList) (ifcdr (ifcdr positionList)))
+
+(defun remover (lst item)
+ (cond
+  ((null (consp lst)) (cond ((equal lst item) nil) (t lst)))
+  ((equal (car lst) item) (cdr lst))
+  (t
+   (rplnode lst (remover (car lst) item) (remover (cdr lst) item))
+   (rplaca lst (remover (car lst) item))
+   (rplacd lst (remover (cdr lst) item))
+   lst)))
+
+(defun |removeTracedMapSigs| (untraceList)
+ (declare (special |$tracedMapSignatures|))
+ (dolist (name untraceList)
+   (remprop name |$tracedMapSignatures|)))
+
+(defun |removeUndoLines| (u)
+ "Remove undo lines from history write"
+ (prog (xtra savedIOindex s s1 m s2 x code c n acc)
+ (declare (special |$currentLine| |$IOindex|))
+  (return
+   (seq
+    (progn
+     (setq xtra 
+      (cond
+       ((stringp |$currentLine|) (cons |$currentLine| nil))
+       (t (reverse |$currentLine|))))
+     (setq xtra
+      (prog (tmp0)
+       (setq tmp0 nil)
+       (return
+        (do ((tmp1 xtra (cdr tmp1)) (x nil))
+            ((or (atom tmp1)
+                 (progn (setq x (car tmp1)) nil))
+               (nreverse0 tmp0))
+         (seq
+          (exit
+           (cond
+            ((null (|stringPrefix?| ")history" x))
+              (setq tmp0 (cons x tmp0))))))))))
+     (setq u (append u xtra))
+     (cond
+      ((null
+        (prog (tmp2)
+         (setq tmp2 nil)
+         (return
+          (do ((tmp3 nil tmp2) (tmp4 u (cdr tmp4)) (x nil))
+              ((or tmp3 (atom tmp4) (progn (setq x (car tmp4)) nil)) tmp2)
+           (seq
+            (exit
+             (setq tmp2 
+               (or tmp2 (|stringPrefix?| ")undo" x))))))))) u)
+      (t
+        (setq savedIOindex |$IOindex|)
+        (setq |$IOindex| 1)
+        (do ((y u (cdr y)))
+            ((atom y) nil)
+         (seq
+          (exit
+           (cond
+            ((eql (elt (setq x (car y)) 0) #\) )
+              (cond
+               ((|stringPrefix?| ")undo"
+                                 (setq s (|trimString| x)))
+                (setq s1 (|trimString| (substring s 5 nil)))
+                (cond
+                  ((not (string= s1 ")redo"))
+                    (setq m (|charPosition| #\) s1 0))
+                    (setq code
+                     (cond
+                       ((> (maxindex s1) m) (elt s1 (1+ m)))
+                       (t #\a)))
+                    (setq s2 (|trimString| (substring s1 0 m)))))
+                (setq n
+                 (cond
+                  ((string= s1 ")redo")
+                     0)
+                  ((not (string= s2 ""))
+                    (|undoCount| (parse-integer s2)))
+                  (t -1)))
+                (rplaca y
+                  (concat ">" code (princ-to-string n))))
+               (t nil)))
+            (t (setq |$IOindex| (1+ |$IOindex|)))))))
+        (setq acc nil)
+        (do ((y (nreverse u) (cdr y)))
+            ((atom y) nil)
+         (seq
+          (exit
+           (cond
+            ((eql (elt (setq x (car y)) 0) #\>)
+              (setq code (elt x 1))
+              (setq n (parse-integer (substring x 2 nil)))
+              (setq y (cdr y))
+              (do () 
+                  ((null y) nil)
+               (seq
+                (exit
+                 (progn
+                  (setq c (car y))
+                  (cond 
+                   ((or (eql (elt c 0) #\))
+                        (eql (elt c 0) #\>))
+                     (setq y (cdr y)))
+                   ((eql n 0)
+                     (return nil))
+                   (t
+                     (setq n (- n 1))
+                     (setq y (cdr y))))))))
+              (cond
+               ((and y (not (eql code #\b)))
+                 (setq acc (cons c acc)))))
+            (t (setq acc (cons x acc)))))))
+        (setq |$IOindex| savedIOindex)
+        acc)))))))
+
+(defun |renamePatternVariables1| (condList substList patVars)
+  (prog (restConds pattern t2 pv t3 cond nsubst)
+  (declare (special |$EmptyMode|))
+    (return
+      (cond
+        ((null condList) substList)
+        (t (setq cond (car condList))
+         (setq restConds (cdr condList))
+         (cond
+           ((or (and (consp cond) (eq (qcar cond) '|isDomain|)
+                     (progn
+                       (setq t2 (qcdr cond))
+                       (and (consp t2)
+                            (progn
+                              (setq pv (qcar t2))
+                              (setq t3 (qcdr t2))
+                              (and (consp t3)
+                                   (eq (qcdr t3) nil)
+                                   (progn
+                                     (setq pattern
+                                      (qcar t3))
+                                     t))))))
+                (and (consp cond) (eq (qcar cond) '|ofCategory|)
+                     (progn
+                       (setq t2 (qcdr cond))
+                       (and (consp t2)
+                            (progn
+                              (setq pv (qcar t2))
+                              (setq t3 (qcdr t2))
+                              (and (consp t3)
+                                   (eq (qcdr t3) nil)
+                                   (progn
+                                     (setq pattern
+                                      (qcar t3))
+                                     t))))))
+                (and (consp cond) (eq (qcar cond) '|Satisfies|)
+                     (progn
+                       (setq t2 (qcdr cond))
+                       (and (consp t2)
+                            (progn
+                              (setq pv (qcar t2))
+                              (setq t3 (qcdr t2))
+                              (and (consp t3)
+                                   (eq (qcdr t3) nil)
+                                   (progn
+                                     (setq cond (qcar t3))
+                                     t)))))))
+            (cond
+              ((equal pv |$EmptyMode|)
+               (setq nsubst substList))
+              (t
+               (setq nsubst
+                        (cons (cons pv (car patVars)) substList))))
+            (|renamePatternVariables1| restConds nsubst
+                (cdr patVars)))
+           (t substList)))))))
+
+(defun |renamePatternVariables| (condList)
+  (declare (special |$curPage| |$PatternVariableList|))
+  (progn
+    (|htpSetDomainPvarSubstList| |$curPage|
+        (|renamePatternVariables1| condList nil
+            |$PatternVariableList|))
+    (|substFromAlist| condList (|htpDomainPvarSubstList| |$curPage|))))
+
+(defun replaceFile (filespec1 filespec2)
+ ($erase (setq filespec1 (makeFullNamestring filespec1)))
+ (rename-file (makeFullNamestring filespec2) filespec1))
+
+(defun |replacePercentByDollar,fn| (s i n)
+ (let (m)
+  (cond
+   ((> i n) "")
+   ((> (setq m (|charPosition| #\% s i)) n) (substring s i nil))
+   (t (concat (substring s i (- m i)) "$"
+       (|replacePercentByDollar,fn| s (1+ m) n))))))
+
+(defun |replacePercentByDollar| (s)
+ (|replacePercentByDollar,fn| s 0 (maxindex s)))
+
+(defun |replaceSharps| (x d)
+ (let (sl)
+ (declare (special |$TriangleVariableList| |$FormalMapVariableList|))
+  (loop for e in (rest d) for var in |$FormalMapVariableList| 
+   do (setq sl (cons (cons var e) sl)))
+  (setq x (|subCopy| x sl))
+  (setq sl nil)
+  (loop for e in (rest d) for var in |$TriangleVariableList| 
+   do (setq sl (cons (cons var e) sl)))
+  (|subCopy| x sl)))
+
+(defun reportinstantiations (b)
+ (setq |$reportInstantiations| b))
+(defun |reportOperations| (oldArg u)
+ (let (|$env| |$eval| |$genValue| |$doNotAddEmptyModeIfTrue|
+                tmp1 v unitForm tree unitFormp)
+ (declare (special |$env| |$eval| |$genValue| |$quadSymbol|
+                      |$doNotAddEmptyModeIfTrue|))
+  (setq |$env| (list (list nil)))
+  (setq |$eval| t)
+  (setq |$genValue| t)
+  (when u
+   (setq |$doNotAddEmptyModeIfTrue| t)
+   (cond 
+    ((equal u |$quadSymbol|)
+     (|sayBrightly|
+       (cons "   mode denotes" (append (|bright| "any") (list '|type|)))))
+    ((eq u '%)
+     (|sayKeyedMsg|
+      (format nil
+       "The )show system command is used to display information about ~
+        types or partial types.  For example, )show Integer will show ~
+        information about Integer.")
+       nil)
+     (|sayKeyedMsg| 
+      (format nil
+       "%l %% is a special variable holding the result of the last ~
+        computation. Issue )display properties %% to see this value.")
+        nil))
+    ((and (null (and (consp u) (eq (qcar u) '|Record|)))
+          (null (and (consp u) (eq (qcar u) '|Union|)))
+          (null (|isNameOfType| u))
+          (null (and (consp u)
+                     (eq (qcar u) '|typeOf|)
+                     (progn
+                      (setq tmp1 (qcdr u))
+                      (and (consp tmp1) (eq (qcdr tmp1) nil))))))
+     (when (atom oldArg) (setq oldArg (list oldArg)))
+     (|sayKeyedMsg|
+      (format nil
+       "The )show system command is used to display information about ~
+        types or partial types.  For example, )show Integer will show ~
+        information about Integer.")
+       nil)
+     (dolist (op oldArg)
+       (|sayKeyedMsg|
+        (format nil
+         "%l %1 is not the name of a known type constructor. If you want ~
+          to see information about any operations named %1, issue ~
+          %ceon )display operations %1 %ceoff")
+        (list (|opOf| op)))))
+    ((setq v (|isDomainValuedVariable| u)) (|reportOpsFromUnitDirectly0| v))
+    (t
+      (if (atom u)
+       (setq unitForm (|opOf| (|unabbrev| u)))
+       (setq unitForm (|unabbrev| u)))
+      (if (atom unitForm)
+       (|reportOpsFromLisplib0| unitForm u)
+       (progn
+        (setq unitFormp (|evaluateType| unitForm))
+        (setq tree (|mkAtree| (|removeZeroOneDestructively| unitForm)))
+        (if (setq unitFormp (|isType| tree))
+          (|reportOpsFromUnitDirectly0| unitFormp)
+          (|sayKeyedMsg|
+           (format nil
+            "It is not known what %1p is, so no information about it can be ~
+             displayed.")
+           (list unitForm))))))))))
+
+(defun |reportOpsFromLisplib| (op u)
+ (let (fn s typ nArgs argList functorForm argml tmp1 functorFormWithDecl 
+       verb sourceFile opt attList)
+ (declare (special $linelength |$showOptions| |$options|
+                   |$FormalMapVariableList|))
+  (if (null (setq fn (|constructor?| op)))
+   (|sayKeyedMsg| "%1 is unknown, so no information is available." (list u))
+   (progn
+    (setq argml (when (setq s (|getConstructorSignature| op)) (ifcdr s)))
+    (setq typ (getdatabase op 'constructorkind))
+    (setq nArgs (|#| argml))
+    (setq argList (ifcdr (getdatabase op 'constructorform)))
+    (setq functorForm (cons op argList))
+    (setq argml (eqsubstlist argList |$FormalMapVariableList| argml))
+    (mapcar #'(lambda (a m) (push (list '|:| a m) tmp1)) argList argml)
+    (setq functorFormWithDecl (cons op (nreverse0 tmp1)))
+    (|sayBrightly|
+     (|concat| (|bright| (|form2StringWithWhere| functorFormWithDecl))
+               "is a" (|bright| typ) "constructor"))
+    (|sayBrightly|
+     (cons " Abbreviation for"
+      (append (|bright| op) (cons "is" (|bright| fn)))))
+    (if (|isExposedConstructor| op)
+     (setq verb "is")
+     (setq verb "is not"))
+    (|sayBrightly|
+     (cons " This constructor"
+      (append (|bright| verb) (list "exposed in this frame."))))
+    (setq sourceFile (getdatabase op 'sourcefile))
+    (|sayBrightly|
+     (cons " Issue"
+      (append (|bright| (concat ")edit " (|namestring| sourceFile)))
+              (cons "to see algebra source code for"
+               (append (|bright| fn) (list '|%l|))))))
+;TPDHERE -- add domain doc to output
+;    (setq domaindoc (car (cdadar (getdatabase op 'documentation))))
+;    (|sayBrightly| (cleanupLine domaindoc))
+;    (terpri)
+    (dolist (item |$options|)
+     (setq opt (|selectOptionLC| (car item) |$showOptions| '|optionError|))
+     (cond
+      ((eq opt '|layout|) (|dc1| fn))
+      ((eq opt '|views|)
+       (|sayBrightly|
+        (cons "To get" (append (|bright| "views")
+          (list "you must give parameters of constructor")))))
+      ((eq opt '|attributes|)
+       (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " Attributes ")
+       (|sayBrightly| "")
+       (setq attList
+        (remdup
+         (msort
+          (mapcar #'(lambda (x) (caar x))
+           (reverse (getdatabase op 'attributes))))))
+       (if (null attList)
+        (|sayBrightly|
+         (|concat| (|form2String| functorForm)
+                   '|has no attributes.| '|%l|))
+         (|say2PerLine| (mapcar #'|formatAttribute| attList))))
+      ((eq opt '|operations|)
+       (|displayOperationsFromLisplib| functorForm))))))))
+
+(defun |reportOpsFromLisplib0| (unitForm u)
+ (declare (special |$useEditorForShowOutput|))
+  (if |$useEditorForShowOutput|
+   (|reportOpsFromLisplib1| unitForm u)
+   (|reportOpsFromLisplib| unitForm u)))
+
+(defun |reportOpsFromLisplib1| (unitForm u)
+ (let (|$sayBrightlyStream| showFile)
+ (declare (special |$sayBrightlyStream| $erase))
+  (setq showFile (|pathname| (list 'show 'listing 'a)))
+  ($erase showFile)
+  (setq |$sayBrightlyStream|
+   (defiostream `((file ,showFile) (mode . output)) 255 0))
+  (|sayShowWarning|)
+  (|reportOpsFromLisplib| unitForm u)
+  (shut |$sayBrightlyStream|)
+  (|editFile| showFile)))
+
+(defun |reportOpsFromUnitDirectly| (unitForm)
+ (let (|$commentedOps| isRecordOrUnion unit top kind abb sourceFile verb opt 
+       attList constructorFunction tmp1 funlist a sigList tmp2)
+ (declare (special |$commentedOps| |$CategoryFrame| $linelength |$options|
+                      |$showOptions|))
+  (setq isRecordOrUnion
+   (and (consp unitForm)
+        (progn (setq a (qcar unitForm)) t)
+        (|member| a '(|Record| |Union|))))
+  (setq unit (|evalDomain| unitForm))
+  (setq top (car unitForm))
+  (setq kind (getdatabase top 'constructorkind))
+  (|sayBrightly|
+   (|concat| " " (|formatOpType| unitForm)
+             " is a " kind " constructor."))
+  (unless isRecordOrUnion
+     (setq abb (getdatabase top 'abbreviation))
+     (setq sourceFile (getdatabase top 'sourcefile))
+     (|sayBrightly|
+      (cons " Abbreviation for"
+       (append (|bright| top) (cons "is" (|bright| abb)))))
+     (if (|isExposedConstructor| top)
+      (setq verb "is")
+      (setq verb "is not"))
+     (|sayBrightly|
+      (cons " This constructor"
+       (append (|bright| verb) (list "exposed in this frame." ))))
+     (|sayBrightly|
+      (cons " Issue"
+       (append (|bright| (concat ")edit " (|namestring| sourceFile)))
+               (cons "to see algebra source code for"
+                (append (|bright| abb) (list '|%l|)))))))
+  (dolist (item |$options|)
+   (setq opt (|selectOptionLC| (car item) |$showOptions| '|optionError|))
+   (cond
+    ((eq opt '|attributes|)
+     (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " Attributes ")
+     (if isRecordOrUnion
+       (|sayBrightly| "   Records and Unions have no attributes.")
+       (progn
+        (|sayBrightly| "")
+        (setq attList
+         (remdup
+          (msort
+           (mapcar #'(lambda (unit2) (car unit2)) (reverse (elt unit 2))))))
+        (|say2PerLine|
+         (mapcar #'|formatAttribute| attList))
+        nil)))
+    ((eq opt '|operations|)
+     (setq |$commentedOps| 0)
+;      --new form is (<op> <signature> <slotNumber> <condition> <kind>)
+     (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " Operations ")
+     (|sayBrightly| "")
+     (cond
+      (isRecordOrUnion
+       (setq constructorFunction (getl top '|makeFunctionList|))
+       (unless constructorFunction
+        (|systemErrorHere| "reportOpsFromUnitDirectly"))
+       (setq tmp1
+        (funcall constructorFunction '$ unitForm |$CategoryFrame|))
+       (setq funlist (car tmp1))
+       (setq sigList
+        (remdup
+         (msort
+          (dolist (fun funlist (nreverse0 tmp2))
+           (push `(((,(caar fun) ,(cadar fun)) t (,(caddar fun) 0 1)))
+             tmp2))))))
+       (t
+        (setq sigList 
+         (remdup (msort (|getOplistForConstructorForm| unitForm))))))
+      (|say2PerLine|
+       (mapcar #'(lambda (x) (|formatOperation| x unit)) sigList))
+      (unless (= |$commentedOps| 0)
+       (|sayBrightly|
+        (list "Functions that are not yet implemented are preceded by"
+              (|bright| "--"))))
+      (|sayBrightly| ""))))
+  nil))
+
+(defun |reportOpsFromUnitDirectly0| (D)
+ (declare (special |$useEditorForShowOutput|))
+  (if |$useEditorForShowOutput|
+   (|reportOpsFromUnitDirectly1| D)
+   (|reportOpsFromUnitDirectly| D)))
+
+(defun |reportOpsFromUnitDirectly1| (D)
+ (let (|$sayBrightlyStream| showFile)
+ (declare (special |$sayBrightlyStream| $erase))
+  (setq showFile (|pathname| (list 'show 'listing 'a)))
+  ($erase showFile)
+  (setq |$sayBrightlyStream|
+   (defiostream `((file ,showFile) (mode . output)) 255 0))
+  (|sayShowWarning|)
+  (|reportOpsFromUnitDirectly| D)
+  (shut |$sayBrightlyStream|)
+  (|editFile| showFile)))
+
+(defun |reportSpadTrace| (|header| t0)
+ (prog (op sig n |t| |msg| |namePart| y |tracePart|)
+ (declare (special |$traceNoisely|))
+  (return 
+   (progn
+    (setq op (car t0))
+    (setq sig (cadr t0))
+    (setq n (caddr t0))
+    (setq |t| (cdddr t0))
+    (cond
+     ((null |$traceNoisely|) nil)
+     (t
+      (setq |msg|
+       (cons |header|
+         (cons op
+          (cons '|:|
+            (cons (CDR sig)
+             (cons '| -> |
+              (cons (car sig)
+               (cons '| in slot |
+                (cons n nil)))))))))
+      (setq |namePart| nil)
+      (setq |tracePart|
+       (cond
+        ((and (consp |t|) (progn (setq y (qcar |t|)) t) (null (null y)))
+          (cond
+           ((eq y '|all|)
+             (cons '|all| (cons '|vars| nil)))
+           (t (cons '| vars: | (cons y nil)))))
+        (t nil)))
+      (|sayBrightly| (append |msg| (append |namePart| |tracePart|))))))))) 
+
+(defun |reportUndo| (acc)
+ (prog (name proplist curproplist prop value)
+ (declare (special |$InteractiveFrame|))
+  (return
+   (seq
+    (do ((tmp0 acc (cdr tmp0)) (tmp1 nil))
+        ((or (atom tmp0) 
+             (progn (setq tmp1 (car tmp0)) nil)
+             (progn
+              (progn
+               (setq name (car tmp1))
+               (setq proplist (cdr tmp1))
+               tmp1)
+              nil))
+            nil)
+     (seq
+      (exit
+       (progn
+        (|sayBrightly|
+          (concat '|Properties of | (pname name) " ::"))
+        (setq curproplist (lassoc name (caar |$InteractiveFrame|)))
+        (do ((tmp2 proplist (cdr tmp2)) (tmp3 nil))
+            ((or (atom tmp2) 
+                 (progn (setq tmp3 (car tmp2)) nil)
+                 (progn 
+                  (progn 
+                   (setq prop (car tmp3))
+                   (setq value (cdr tmp3))
+                   tmp3)
+                  nil))
+                nil)
+         (seq
+          (exit
+           (progn
+            (|sayBrightlyNT|
+             (cons "  " (cons prop (cons " was: " nil))))
+            (|pp| value)
+            (|sayBrightlyNT| 
+             (cons "  " (cons prop (cons " is:  " nil))))
+            (|pp| (lassoc prop curproplist)))))))))))))) 
+
+(defun |reportWhatOptions| ()
+ (let (optlist)
+ (declare (special |$whatOptions|))
+  (setq optlist
+   (reduce #'append
+    (mapcar #'(lambda (x) `(|%l| "        " ,x)) |$whatOptions|)))
+  (|sayBrightly|
+   `("  )what" "argument keywords are" ,@optlist
+     |%l| "   or abbreviations thereof." |%l| |%l| "   Issue" ")what ?"
+     "for more information."))))
+
+(defun reroot (dir)
+  (declare (special $spadroot $directory-list $relative-directory-list
+     $library-directory-list $relative-library-directory-list
+     $current-directory))
+  (setq $spadroot dir)
+  (setq $directory-list
+   (mapcar #'make-absolute-filename $relative-directory-list))
+  (setq $library-directory-list
+   (mapcar #'make-absolute-filename $relative-library-directory-list))
+  (setq $current-directory $spadroot))
+
+(defun |resetCounters| ()
+ (declare (special |$countList|))
+ (dolist (k |$countList|)
+  (set (intern (concat k ",COUNT")) 0)))
+
+(defun resethashtables ()
+ "set all -hash* to clean values. used to clean up core before saving system"
+ (declare (special *sourcefiles* *interp-stream* *operation-stream*
+                    *category-stream* *browse-stream* *category-stream-stamp*
+                    *operation-stream-stamp* *interp-stream-stamp*
+                    *allconstructors* *operation-hash* *hascategory-hash*))
+ (setq *hascategory-hash* (make-hash-table :test #'equal))
+ (setq *operation-hash* (make-hash-table))
+ (setq *allconstructors* nil)
+ (setq *sourcefiles* nil)
+ (setq *interp-stream-stamp* '(0 . 0))
+ (interpopen)
+ (setq *operation-stream-stamp* '(0 . 0))
+ (operationopen)
+ (setq *browse-stream-stamp* '(0 . 0))
+ (browseopen)
+ (setq *category-stream-stamp* '(0 . 0))
+ (categoryopen) ;note: this depends on constructorform in browse.daase
+ (initial-getdatabase)
+ (close *interp-stream*)
+ (close *operation-stream*)
+ (close *category-stream*)
+ (close *browse-stream*)
+ (gbc t))
+
+(defun |resetInCoreHist| () 
+ (declare (special |$HistListAct| |$HistListLen| |$HistList|))
+ (setq |$HistListAct| 0) 
+ (do ((i 1 (1+ i)))
+     ((> i |$HistListLen|) nil)
+   (setq |$HistList| (cdr |$HistList|))
+   (rplaca |$HistList| nil)))
+
+(defun |resetSpacers| ()
+ (declare (special |$spaceList|))
+ (dolist (spacer |$spaceList|)
+   (set (intern (concat spacer ",SPACE")) 0)))
+
+(defun |resetTimers| ()
+ (declare (special |$timerList|))
+ (dolist (timer |$timerList|)
+  (set (intern (concat timer ",TIMER")) 0)))
+
+(defun |resetWorkspaceVariables| () 
+ "Reset the workspace variables"
+ (declare (special |$countList| /editfile /sourcefiles |$sourceFiles| /pretty
+    |$spaceList| |$timerList| |$existingFiles| |$functionTable| $boot 
+    |$compileMapFlag| |$echoLineStack| |$operationNameList| |$slamFlag|
+    |$CommandSynonymAlist| |$InitialCommandSynonymAlist|
+    |$UserAbbreviationsAlist| |$msgAlist| |$msgDatabase| |$msgDatabaseName|
+    |$dependeeClosureAlist| |$IOindex| |$coerceIntByMapCounter| |$e| |$env|
+    |$setOptions|))
+  (setq |$countList| nil)
+  (setq /editfile nil)
+  (setq /sourcefiles nil)
+  (setq |$sourceFiles| nil)
+  (setq /pretty nil)
+  (setq |$spaceList| nil)
+  (setq |$timerList| nil)
+  (setq |$existingFiles| (make-hash-table :test #'equal))
+  (setq |$functionTable| nil)
+  (setq $boot nil)
+  (setq |$compileMapFlag| nil)
+  (setq |$echoLineStack| nil)
+  (setq |$operationNameList| nil)
+  (setq |$slamFlag| nil)
+  (setq |$CommandSynonymAlist| (copy |$InitialCommandSynonymAlist|))
+  (setq |$UserAbbreviationsAlist| nil)
+  (setq |$msgAlist| nil)
+  (setq |$msgDatabase| nil)
+  (setq |$msgDatabaseName| nil)
+  (setq |$dependeeClosureAlist| nil)
+  (setq |$IOindex| 1)
+  (setq |$coerceIntByMapCounter| 0)
+  (setq |$e| (cons (cons nil nil) nil))
+  (setq |$env| (cons (cons nil nil) nil))
+  (|initializeSetVariables| |$setOptions|)) 
+
+(defun restart ()
+  (declare (special $openServerIfTrue $SpadServerName |$SpadServer|
+    |$IOindex| |$InteractiveFrame| |$printLoadMsgs| $current-directory
+    |$displayStartMsgs| |$currentLine|))
+#+:akcl
+  (init-memory-config :cons 1024 :fixnum 200 :symbol 500 :package 8
+    :array 800 :string 1024 :cfun 200 :cpages 6000 :rpages 2000 :hole 4000)
+#+:akcl (setq compiler::*compile-verbose* nil)
+#+:akcl (setq compiler::*suppress-compiler-warnings* t)
+#+:akcl (setq compiler::*suppress-compiler-notes* t)
+#+:akcl (setq si::*system-directory* "")
+  (in-package "BOOT")
+  (initroot)
+#+:akcl
+  (when (and $openServerIfTrue (zerop (openserver $SpadServerName)))
+    (setq $openServerIfTrue nil) 
+    (setq |$SpadServer| t))
+  (setq |$IOindex| 1)
+  (setq |$printLoadMsgs| nil)
+  (setq $current-directory (get-current-directory))
+  (setq *default-pathname-defaults* (pathname $current-directory))
+  (|statisticsInitialization|)
+  (unless *ThisIsARunningSystem* 
+   (setq |$InteractiveFrame| (|makeInitialModemapFrame|))
+   (|initHist|)
+   (|initializeInterpreterFrameRing|))
+  (setq *ThisIsARunningSystem* t)
+  (when |$displayStartMsgs| (|spadStartUpMsgs|))
+  (setq |$currentLine| nil)
+  (restart0)
+  (|readSpadProfileIfThere|)
+  (|spad|))
+
+(defun restart0 ()
+  (interpopen)      ;; open up the interpreter database
+  (operationopen)   ;; all of the operations known to the system
+  (categoryopen)    ;; answer hasCategory question
+  (browseopen))
+
+(defun |restoreHistory| (fn)
+ (let (|$options| fnq restfile curfile l oldInternal vec line x a)
+ (declare (special |$options| |$internalHistoryTable| |$HiFiAccess| |$e|
+     |$useInternalHistoryTable| |$InteractiveFrame| |$oldHistoryFileName|))
+ (cond 
+   ((null fn) (setq fnq |$oldHistoryFileName|))
+   ((and (consp fn) 
+         (eq (qcdr fn) nil)
+         (progn
+          (setq fnq (qcar fn))
+          t)
+         (identp fnq))
+     (setq fnq fnq))
+   (t (|throwKeyedMsg| "%1 is not a valid filename for the history file."
+        (cons fnq nil)))) ; invalid filename
+ (setq restfile (|makeHistFileName| fnq))
+ (if (null (makeInputFilename restfile))
+  (|sayKeyedMsg|
+   (format nil
+    "History information cannot be restored from %1 because the file does ~
+     not exist.")
+    (cons (|namestring| restfile) nil))
+  (progn 
+    (setq |$options| nil)
+    (|clearSpad2Cmd| '(|all|))
+    (setq curfile (|histFileName|))
+    (|histFileErase| curfile)
+    ($fcopy restfile curfile)
+    (setq l (length (rkeyids curfile)))
+    (setq |$HiFiAccess| t)
+    (setq oldInternal |$useInternalHistoryTable|)
+    (setq |$useInternalHistoryTable| nil)
+    (when oldInternal (setq |$internalHistoryTable| nil))
+    (do ((i 1 (1+ i)))
+        ((> i l) nil)
+      (setq vec (unwind-protect (|readHiFi| i) (|disableHist|)))
+      (when oldInternal
+        (setq |$internalHistoryTable| 
+         (cons (cons i vec) |$internalHistoryTable|)))
+      (setq line (car vec))
+      (dolist (p1 (cdr vec))
+        (setq x (car p1))
+        (do ((tmp1 (cdr p1) (cdr tmp1)) (p2 nil))
+            ((or (atom tmp1) (progn (setq p2 (car tmp1)) nil)) nil)
+         (setq |$InteractiveFrame| 
+           (|putHist| x 
+            (car p2) (cdr p2) |$InteractiveFrame|))))
+      (|updateInCoreHist|))
+    (setq |$e| |$InteractiveFrame|)
+    (do ((tmp2 (caar |$InteractiveFrame|) (cdr tmp2)) (tmp3 nil))
+        ((or (atom tmp2) 
+             (progn
+               (setq tmp3 (car tmp2))
+               nil) 
+             (progn
+              (progn
+                (setq a (car tmp3))
+                tmp3) 
+                nil))
+             nil)
+       (when (|get| a '|localModemap| |$InteractiveFrame|)
+          (|rempropI| a '|localModemap|)
+          (|rempropI| a '|localVars|)
+          (|rempropI| a '|mapBody|)))
+    (setq |$IOindex| (1+ l))
+    (setq |$useInternalHistoryTable| oldInternal)
+    (|sayKeyedMsg| 
+     "The workspace has been successfully restored from the history file %1 ."
+      (cons (|namestring| restfile) nil))
+    (|clearCmdSortedCaches|)
+     nil))))
+
+(defun |retract| (object)
+ (labels (
+  (retract1 (object)
+   (let (type val underDomain objectp)
+   (declare (special |$SingleInteger| |$Integer| |$NonNegativeInteger|
+                     |$PositiveInteger|))
+    (setq type (|objMode| object))
+    (cond
+     ((stringp type) '|failed|)
+     (t 
+       (setq val (|objVal| object))
+       (cond
+        ((equal type |$PositiveInteger|) (mkObj val |$NonNegativeInteger|))
+        ((equal type |$NonNegativeInteger|) (mkObj val |$Integer|))
+        ((and (equal type |$Integer|) (typep (|unwrap| val) 'fixnum))
+          (mkObj val |$SingleInteger|))
+        (t 
+          (cond
+           ((or (eql 1 (|#| type))
+                (and (consp type) (eq (qcar type) '|Union|))
+                (and (consp type) (eq (qcar type) '|FunctionCalled|)
+                     (and (consp (qcdr type)) (eq (qcddr type) nil)))
+                (and (consp type) (eq (qcar type) '|OrderedVariableList|)
+                     (and (consp (qcdr type)) (eq (qcddr type) nil)))
+                (and (consp type) (eq (qcar type) '|Variable|)
+                     (and (consp (qcdr type)) (eq (qcddr type) nil))))
+             (if (setq objectp (|retract2Specialization| object))
+               objectp
+               '|failed|))
+           ((null (setq underDomain (|underDomainOf| type)))
+             '|failed|)
+          ; try to retract the "coefficients", e.g. P RN -> P I or M RN -> M I
+           (t
+            (setq objectp (|retractUnderDomain| object type underDomain))
+            (cond
+             ((not (eq objectp '|failed|)) objectp)
+             ; see if we can use the retract functions
+             ((setq objectp (|coerceRetract| object underDomain)) objectp)
+             ; see if we have a special case here
+             ((setq objectp (|retract2Specialization| object)) objectp)
+           (t '|failed|)))))))))))
+ (let (type val ans)
+ (declare (special |$EmptyMode|))
+  (setq type (|objMode| object))
+  (cond
+   ((stringp type) '|failed|)
+   ((equal type |$EmptyMode|) '|failed|)
+   (t 
+    (setq val (|objVal| object))
+    (cond
+     ((and (null (|isWrapped| val))
+           (null (and (consp val) (eq (qcar val) 'map))))
+       '|failed|)
+     (t 
+      (cond
+       ((eq (setq ans (retract1 (mkObj val type))) '|failed|)
+         ans)
+       (t
+        (mkObj (|objVal| ans) (|objMode| ans)))))))))))
+
+(defun |retractByFunction| (object u)
+ (let (|$reportBottomUpFlag| $ tt val target funName mms dcVector fun objectp)
+ (declare (special |$reportBottomUpFlag| $))
+  (setq tt (|objMode| object))
+  (setq val (|objValUnwrap| object))
+  (setq target (list '|Union| u "failed"))
+  (setq funName '|retractIfCan|)
+  (when |$reportBottomUpFlag|
+    (|sayFunctionSelection| funName (list tt) target
+      nil "coercion facility (retraction)"))
+  (when 
+   (setq mms
+    (append 
+     (|findFunctionInDomain| funName tt target (list tt) (list tt) nil t)
+     (|findFunctionInDomain| funName u target (list tt) (list tt) nil t)))
+    (setq mms (|orderMms| funName mms (list tt) (list tt) target)))
+  (when |$reportBottomUpFlag|
+    (|sayFunctionSelectionResult| funName (list tt) mms))
+  (when mms
+   (setq dcVector (|evalDomain| (caaar mms)))
+   (setq fun (|compiledLookup| funName (list target tt) dcVector))
+   (cond
+    ((null fun) nil)
+    ((equal (car fun) #'|Undef|) nil)
+    (t
+     (setq $ dcVector)
+     (setq objectp
+      (|coerceUnion2Branch| (mkObjWrap (spadcall val fun) target)))
+     (when (equal u (|objMode| objectp)) objectp))))))
+
+(defun |retractUnderDomain| (object type underDomain)
+ (let (ud let1 typep objectp)
+  (cond
+   ((null (setq ud (|underDomainOf| underDomain))) '|failed|)
+   (t
+    (setq let1 (|deconstructT| type))
+    (cond
+     ((nequal 1 (|#| (cdr let1))) '|failed|)
+     ((nequal 1 (|#| (car let1))) '|failed|)
+     (t
+      (setq typep (|constructT| (car let1) (list ud)))
+      (cond
+       ((setq objectp (|coerceInt| object typep)) objectp)
+       (t '|failed|))))))))
+
+(defun |retract2Specialization| (object)
+ (prog (val type dom obj dp bad vl tl ep vlp n D num den valp m)
+ (declare (special |$e| |$QuotientField| |$Symbol| |$Integer| |$Any|
+                   |$NonNegativeInteger| |$PositiveInteger|))
+  (return
+   (seq
+    (progn
+     (setq val (|objVal| object))
+     (setq valp (|unwrap| val))
+     (setq type (|objMode| object))
+     (cond
+      ; type is Any
+      ((equal type |$Any|)
+        (setq dom (car valp))
+        (setq obj (cdr valp))
+        (mkObjWrap obj dom))
+      ; type is ['Union,:unionDoms]
+      ((eq (car type) '|Union|) 
+        (|coerceUnion2Branch| object))
+      ; type is Symbol
+      ((equal type |$Symbol|)
+        (mkObjWrap 1 (list '|OrderedVariableList| (list valp))))
+      ; type is ['OrderedVariableList,var]
+      ((eq (car type) '|OrderedVariableList|)
+        (|coerceInt|
+         (mkObjWrap (elt (second type) (- valp 1)) |$Symbol|)
+         '(|Polynomial| (|Integer|))))
+      ; type is ['Polynomial,d]
+      ((eq (car type) '|Polynomial|)
+        (cond
+         ((eql (car valp) 1)
+           (when (eql 1 (|#| (remdup (|varsInPoly| valp))))
+             (|coerceInt| object 
+              (list '|UnivariatePolynomial| (second valp)  (second type)))))
+         ((eql (car valp) 0) (|coerceInt| object (second type)))
+         (t nil)))
+      ; type is ['Matrix,d]
+      ((eq (car type) '|Matrix|)
+        (setq n (|#| valp))
+        (setq m (|#| (elt valp 0)))
+        (cond
+         ((= n m) (mkObj val (list '|SquareMatrix| n (second type))))
+         (t (mkObj val (list '|RectangularMatrix| n m (second type))))))
+      ; type is ['RectangularMatrix,n,m,d]
+      ((eq (first type) '|RectangularMatrix|)
+        (setq n (second type))
+        (setq m (third type))
+        (setq d (fourth type))
+        (when (eql n m) (mkObj val (list '|SquareMatrix| n d))))
+      ; type is [agg,d] agg is |Vector|,|Segment|, or |UniversalSegment|
+      ((|member| (first type) '(|Vector| |Segment| |UniversalSegment|))
+        (cond
+         ((equal (second type) |$PositiveInteger|)
+          (mkObj val (cons (first type) (list |$NonNegativeInteger|))))
+         ((equal (second type) |$NonNegativeInteger|)
+          (mkObj val (list (first type) |$Integer|)))))
+      ; type is ['Array,bds,d]
+      ((eq (first type) '|Array|)
+       (cond
+        ((equal (third type) |$PositiveInteger|)
+         (mkObj val (list '|Array| (second type) |$NonNegativeInteger|)))
+        ((equal (third type) |$NonNegativeInteger|)
+         (mkObj val (list '|Array| (second type) |$Integer|)))))
+      ; type is ['List,d]
+      ((eq (car type) '|List|)
+       (setq d (second type))
+       (setq dp (second d))
+       (cond
+        ; type isnt ['List,dp]
+        ((null (eq (car d) '|List|))
+          (cond
+           ((equal d |$PositiveInteger|)
+             (mkObj val (list '|List| |$NonNegativeInteger|)))
+           ((equal d |$NonNegativeInteger|)
+             (mkObj val (list '|List| |$Integer|)))
+           ((null valp) nil)
+           (t
+            (setq vl nil)
+            (setq tl nil)
+            (setq bad nil)
+            (loop for e in valp while (not bad) do 
+             (cond
+              ((equal (setq ep (|retract| (mkObjWrap e d))) '|failed|)
+                (setq bad t))
+              (t
+               (setq vl (cons (|objValUnwrap| ep) vl))
+               (setq tl (cons (|objMode| ep) tl))))) 
+            (cond
+             (bad nil)
+             ((equal (setq m (|resolveTypeListAny| tl)) d) nil)
+             ((equal d m) nil)
+             (t 
+              (setq vlp nil)
+              (setq ep t)
+              (loop for e in vl for tt in tl while ep do
+               (cond
+                ((equal tt m) (setq vlp (cons e vlp)))
+                (t
+                 (setq ep (|coerceInt| (mkObjWrap e tt) m))
+                 (when ep (setq vlp (cons (|objValUnwrap| ep) vlp))))))
+              (mkObjWrap vlp (list '|List| m)))))))
+        ((equal dp |$PositiveInteger|)
+          (mkObj val (list '|List| (list '|List| |$NonNegativeInteger|))))
+        ((equal dp |$NonNegativeInteger|)
+          (mkObj val (list '|List| (list '|List| |$Integer|))))
+        ((or (eq (car dp) '|Variable|)
+             (eq (car dp) '|OrderedVariableList|))
+          (|coerceInt| object (list '|List| (list '|List| |$Symbol|))))
+        (t
+         (setq n (|#| valp))
+         (setq m (|#| (elt valp 0)))
+         (cond
+          ((null (|isRectangularList| valp n m)) nil)
+          (t (|coerceInt| object (list '|Matrix| dp)))))))
+    ; type is ['Expression,d]
+    ((eq (car type) '|Expression|)
+      (setq num (car valp))
+      (setq den (cdr valp))
+      (cond
+       ((null (equal (car num) 0)) nil)
+       ((null (equal (car den) 0)) nil)
+       (t 
+        (mkObjWrap (cons (cdr num) (cdr den))
+         (list |$QuotientField| (second type))))))
+    ; type is ['SimpleAlgebraicExtension,k,rep,.]
+    ; try to retract as an element of rep and see if we can get an element of k
+    ((eq (car type) '|SimpleAlgebraicExtension|)
+      (setq valp (|retract| (mkObj val (third type))))
+      (do ()
+          ((null (and (nequal valp '|failed|)
+                      (nequal (|objMode| valp) (second type))))
+             nil)
+       (setq valp (|retract| valp)))
+      (unless (equal valp '|failed|) valp))
+    ; type is ['UnivariatePuiseuxSeries,coef,var,cen]
+    ((eq (car type) '|UnivariatePuiseuxSeries|)
+      (|coerceInt| object
+        (list '|UnivariateLaurentSeries|
+         (second type) (third type) (fourth type))))
+    ; type is ['UnivariateLaurentSeries,coef,var,cen]
+    ((eq (car type) '|UnivariateLaurentSeries|)
+      (|coerceInt| object
+       (list '|UnivariateTaylorSeries|
+        (second type) (third type) (fourth type))))
+      ; type is ['FunctionCalled,name]
+    ((eq (car type) '|FunctionCalled|)
+      (cond
+       ((null (setq m (|get| (second type) '|mode| |$e|))) nil)
+       ((|isPartialMode| m) nil)
+       (t (mkObj val m))))
+    (t nil)))))))
+
+(defun rgamma (x)
+  (rgammaImpl x))
+
+(defun rgammaImpl (x)
+ (when (complexp x)
+   (FloatError "Gamma not implemented for complex value ~D" x))
+  (if (zerop (- x 1.0)) 
+    1.0
+    (if (< 20 x)
+     (gammaStirling x)
+     (gammaRatapprox x))))
+
+(defun rlngamma (x)
+  (lnrgamma x))
+
+(defun rpsi (n x)
+  (rPsiImpl n x))
+
+(defun rPsiImpl (n x)
+ (let (skipit sign m)
+  (cond
+   ((not (< 0.0 x))
+     (cond
+       ((zerop (fracpart x))
+         (FloatError "singularity encountered at ~D" x))
+       (t
+        (setq m (mod n 2))
+        (setq sign (expt (- 1) m))
+        (if (equal (fracpart x) 0.5)
+         (setq skipit 1)
+         (setq skipit 0))
+        (* sign
+          (+ (* (expt Pi (+ n 1))
+                (cotdiffeval n (* Pi (- x)) skipit))
+             (rPsiImpl n (- 1.0 x)))))))
+   ((eql n 0) (- (rPsiW n x)))
+   (t
+     (* (* (rgammaImpl (float (+ n 1))) (rPsiW n x))
+        (expt (- 1) (mod (+ n 1) 2)))))))
+
+(defun rPsiW (n x)
+ (let (bign fln c a xmin beta alpha nd result)
+  (when (or (not (< 0 x)) (minusp n))
+   (error "rPsiW not implemented for negative n or non-positive x"))
+  (setq nd 6) ; magic number for number of digits in a word?
+  (setq alpha (+ 3.5 (* 0.40000000000000002 nd)))
+  (setq beta
+   (+ (+ 0.20999999999999999 (* 8.6770000000000001E-6 (- nd 3)))
+      (* 6.0380000000000002E-8 (expt (- nd 3) 2))))
+  (setq xmin (float (+ (floor (+ alpha (* beta n))) 1)))
+  (when (< 0 n)
+    (setq a
+     (min 0 (* (/ 1.0 (float n)) (log (/ double-float-epsilon (min 1.0 x))))))
+    (setq c (exp a))
+    (if (not (< (abs a) 0.001))
+      (setq fln (* (/ x c) (- 1.0 c)))
+      (setq fln (- (/ (* x a) c))))
+    (setq bign (+ (floor fln) 1))
+    ; Amos says to use alternative series for large order if ordinary
+    ; backwards recurrence too expensive
+    (when (and (< bign 15) (< (+ 7.0 x) xmin))
+      (setq result (PsiAsymptoticOrder n x bign))))
+  (when (and (not result) (not (< x xmin)))
+    (setq result (PsiAsymptotic n x)))
+  (unless result
+    ; ordinary case -- use backwards recursion
+    (setq result (PsiBack n x xmin)))
+  result))
+
+(defun |rread| (key rstream errorval)
+  (when (identp key) (setq key (pname key)))
+  (rread key rstream errorval))
+
+(defun |ruleLhsTran| (ruleLhs)
+ (let (predicate var vars predRhs predLhs name)
+ (declare (special |$predicateList| |$multiVarPredicateList|))
+ (dolist (pred |$predicateList|)
+  (setq name (car pred))
+  (setq predLhs (cadr pred))
+  (setq predRhs (cddr pred))
+  (setq vars (|patternVarsOf| predRhs))
+  (cond
+   ((cdr vars)
+    (setq ruleLhs (nsubst predLhs name ruleLhs))
+    (setq |$multiVarPredicateList| (cons pred |$multiVarPredicateList|)))
+   (t
+    (setq var (cadr predLhs))
+    (setq predicate
+      (list '|suchThat| predLhs (list 'adef (list var)
+            '((|Boolean|) (|Expression| (|Integer|))) '(nil nil) predRhs)))
+    (setq ruleLhs (nsubst predicate name ruleLhs)))))
+  ruleLhs))
+
+(defun |rulePredicateTran| (rule)
+ (let (predBody varList rhs tmp1 result)
+ (declare (special |$multiVarPredicateList|))
+  (if (null |$multiVarPredicateList|) 
+   rule
+   (progn
+   (setq varList
+    (|patternVarsOf|
+     ((lambda (t1 t2 t3)
+      (loop
+       (cond
+        ((or (atom t2)
+             (progn
+              (setq t3 (car t2))
+              nil))
+           (return (nreverse t1)))
+        (t
+         (and (consp t3)
+              (progn
+               (setq tmp1 (cdr t3))
+               (and (consp tmp1)
+                    (progn
+                     (setq rhs (cdr tmp1))
+                     t)))
+              (setq t1 (cons rhs t1)))))
+       (setq t2 (cdr t2))))
+      nil |$multiVarPredicateList| nil)))
+   (setq predBody
+    (cond
+     ((cdr |$multiVarPredicateList|)
+      (cons 'and
+       ((lambda (t4 t5 t6)
+        (loop
+         (cond
+          ((or (atom t5)
+               (progn
+                (setq t6 (car t5))
+                nil))
+            (return (nreverse t4)))
+          (t
+           (and (consp t6)
+                (progn
+                 (setq tmp1 (cdr t6))
+                 (and (consp tmp1)
+                      (progn
+                       (setq rhs (cdr tmp1))
+                       t)))
+                      (setq t4
+                       (append (reverse (|pvarPredTran| rhs varList))
+                               t4)))))
+         (setq t5 (cdr t5))))
+        nil |$multiVarPredicateList| nil)))
+     (t
+      (progn
+       (setq rhs (cddar |$multiVarPredicateList|))
+       (|pvarPredTran| rhs varList)))))
+   (dolist (var varList) (push (list 'quote var) result))
+   (list '|suchThat| rule
+    (cons '|construct| (nreverse result))
+    (list 'adef '(|predicateVariable|)
+                       '((|Boolean|)
+                         (|List| (|Expression| (|Integer|))))
+                       '(nil nil) predBody))))))
+
+(defun |runspad| () 
+ (prog (mode) 
+ (declare (special |$quitTag|))
+  (return 
+   (seq 
+    (progn 
+     (setq mode '|restart|) 
+     (do () 
+         ((null (eq mode '|restart|)) nil)
+      (seq 
+       (exit 
+        (progn 
+         (|resetStackLimits|) 
+         (catch |$quitTag| 
+          (catch '|coerceFailure| 
+           (setq mode (catch '|top_level| (|ncTopLevel|))))))))))))))
+
+(defun |rwrite| (key val stream)
+  (when (identp key) (setq key (pname key)))
+  (rwrite key val stream))
+
+
+(defun |safeWritify| (ob)
+ (catch '|writifyTag| (|writify| ob))) 
+
+(defun |sameMsg?| (msg1 msg2)
+ (and (equal (|getMsgKey| msg1) (|getMsgKey| msg2))
+      (equal (|getMsgArgL| msg1) (|getMsgArgL| msg2))))
+
+(defun |satisfiesRegularExpressions| (name patterns)
+ (let ((dname (downcase (copy name))))
+  (dolist (pattern patterns)
+   (when (strpos pattern dname 0 "@")
+    (return-from nil t)))))
+
+(defun |saveHistory| (fn)
+ (let (|$seen| savefile inputfile saveStr n rec val)
+ (declare (special |$seen| |$HiFiAccess| |$useInternalHistoryTable|
+     |$internalHistoryTable|))
+ (setq |$seen| (make-hash-table :test #'eq))
+ (cond 
+  ((null |$HiFiAccess|) 
+    (|sayKeyedMsg| 
+     "The history facility is not on, so no information can be saved."
+     nil)) ; the history file is not on
+  ((and (null |$useInternalHistoryTable|) 
+        (null (makeInputFilename (|histFileName|))))
+    (|sayKeyedMsg| "No history information had been saved yet." nil))
+  ((null fn) 
+    (|throwKeyedMsg|
+      "You must specify a file name to the history save command"
+      nil))
+  (t 
+    (setq savefile (|makeHistFileName| fn))
+    (setq inputfile (|histInputFileName| fn))
+    (|writeInputLines| fn 1)
+    (|histFileErase| savefile)
+    (when |$useInternalHistoryTable| 
+      (setq saveStr 
+        (rdefiostream 
+         (cons '(mode . output) 
+           (cons (cons 'file savefile) nil))))
+      (do ((tmp0 (reverse |$internalHistoryTable|) (cdr tmp0))
+           (tmp1 nil))
+          ((or (atom tmp0) 
+               (progn (setq tmp1 (car tmp0)) nil)
+               (progn
+                (progn
+                 (setq n (car tmp1)) 
+                 (setq rec (cdr tmp1)) 
+                 tmp1) 
+                nil)) 
+               nil)
+        (setq val (spadrwrite0 (|object2Identifier| n) rec saveStr))
+        (when (eq val '|writifyFailed|)
+         (|sayKeyedMsg| 
+          (format nil
+           "Can't save the value of step number %1. You can re-generate ~
+            this value by running the input file %2.")
+          (list n inputfile))))
+      (rshut saveStr))
+    (|sayKeyedMsg| "The saved history file is %1 ."
+      (cons (|namestring| savefile) nil))
+    nil))))
+
+(defun |saveMapSig| (funnames)
+ (let (map)
+ (declare (special |$tracedMapSignatures| |$mapSubNameAlist|))
+  (dolist (name funnames)
+   (when (setq map (|rassoc| name |$mapSubNameAlist|))
+     (setq |$tracedMapSignatures|
+       (addassoc name (|getMapSig| map name) |$tracedMapSignatures|))))))
+
+(defun |savesystem| (arg)
+  (if (or (not (eql (|#| arg) 1)) (null (symbolp (car arg))))
+    (|helpSpad2Cmd| '(|savesystem|))
+    (progn
+     (setq *ThisIsARunningSystem* t)
+     (spad-save (symbol-name (car arg))))))
+
+(defun |saveDependentsHashTable| ()
+ (let (stream)
+ (declare (special |$depTb| $erase))
+  ($erase '|dependents| 'database '|a|)
+  (setq stream (|writeLib1| '|dependents| 'database '|a|))
+  (dolist (k (msort (hkeys |$depTb|)))
+    (|rwrite| k (hget |$depTb| k) stream))
+  (rshut stream)))
+
+(defun |saveUsersHashTable| ()
+ (let (stream)
+ (declare (special |$usersTb| $erase))
+  ($erase '|users| 'database '|a|)
+  (setq stream (|writeLib1| '|users| 'database '|a|))
+  (dolist (k (msort (hkeys |$usersTb|)))
+    (|rwrite| k (HGET |$usersTb| k) stream))
+  (rshut stream)))
+
+(defun |sayAllCacheCounts| ()
+ "Display all cache counts"
+ (let (x n)
+ (declare (special |$cacheCount| |$cacheAlist|))
+   (|sayCacheCount| nil |$cacheCount|)
+   (when |$cacheAlist|
+     (do ((t0 |$cacheAlist| (cdr t0)) (t1 nil))
+         ((or (atom t0)
+              (progn (setq t1 (car t0)) nil)
+              (progn
+               (progn (setq x (car t1)) (setq n (cdr t1)) t1)
+               nil)) 
+             nil)
+       (when (not (equal n |$cacheCount|)) (|sayCacheCount| x n))))))
+
+(defun sayBrightly1 (x *standard-output*)
+  (if (atom x)
+   (progn (brightprint-0 x) (terpri) (force-output))
+   (progn (brightprint   x) (terpri) (force-output))))
+
+(defun |sayCacheCount| (fn n)
+ "Describe the cache counts"
+ (let (prefix phrase)
+    (setq prefix
+     (cond 
+      (fn (cons 'function (|bright| (|linearFormatName| fn))))
+      ((eql n 0) (list '|interpreter functions |))
+      (t (list '|In general, interpreter functions |))))
+    (cond
+     ((eql n 0)
+      (cond
+       (fn
+        (|sayBrightly|
+         `("   Caching for " ,prefix "is turned off")))
+       (t 
+        (|sayBrightly| " In general, functions will cache no returned values."
+         ))))
+     (t
+      (setq phrase
+       (cond
+        ((eq n '|all|) `(,@(|bright| '|all|) |values.|))
+        ((eql n 1) (list '| only the last value.|))
+        (t `(| the last| ,@(|bright| n) |values.|))))
+      (|sayBrightly| 
+       `("   " ,@prefix "will cache" ,@phrase))))))
+
+(defun sayExample (docstring)
+ (let (line point)
+  (when (setq point (search "spad{X}" docstring))
+   (setq line (subseq docstring (+ point 8)))
+   (do ((mark (search "spad{X}" line) (search "spad{X}" line)))
+     ((null mark))
+    (princ (cleanupLine (subseq line 0 mark)))
+    (terpri)
+    (setq line (subseq line (+ mark 8))))
+   (princ (cleanupLine line))
+   (terpri)
+   (terpri))))
+
+(defun |sayKeyedMsg| (key args)
+  (|sayKeyedMsgLocal| key args))
+
+(defun |sayKeyedMsgLocal| (key args)
+ (let (msg msgp)
+ (declare (special |$printMsgsToFile| $linelength $margin |$displayMsgNumber|))
+  (setq msg (|segmentKeyedMsg| key))
+  (setq msg (|substituteSegmentedMsg| msg args))
+  (when |$displayMsgNumber| (setq msg `(,key |:| . ,msg)))
+  (setq msgp (|flowSegmentedMsg| msg $linelength $margin))
+  (when |$printMsgsToFile| (|sayMSG2File| msgp))
+  (|sayMSG| msgp)))
+
+(defun |sayMSG| (x)
+ (declare (special |$algebraOutputStream|))
+ (when x (sayBrightly1 x |$algebraOutputStream|)))
+
+(defun |sayMSG2File| (msg)
+ (let (file str)
+  (setq file (|makePathname| '|spadmsg| '|listing| 'a))
+  (setq str (defiostream `((mode . output) (file . ,file)) 255 0))
+  (sayBrightly1 msg str)
+  (shut str)))
+ 
+(defun |sayShowWarning| ()
+ (|sayBrightly|
+   "Warning: this is a temporary file and will be deleted the next")
+ (|sayBrightly|
+   "         time you use )show. Rename it and FILE if you wish to")
+ (|sayBrightly| "         save the contents.")
+ (|sayBrightly| ""))
+
+(defun |scanCheckRadix| (r w)
+ (let (a ns)
+ (declare (special |$n| |$linepos|))
+  (setq ns (length w))
+  ((lambda (Var1 i)
+   (loop
+    (cond
+     ((> i Var1) (return nil))
+     (t
+      (setq a (|rdigit?| (elt w i)))
+      (cond
+       ((or (null a) (not (< a r)))
+        (|ncSoftError|
+         (cons |$linepos| (+ (- (+ (|lnExtraBlanks| |$linepos|) |$n|) ns) i))
+          "The character %1 is greater than the radix."
+          (list (elt w i)))))))
+    (setq i (+ i 1))))
+   (- ns 1) 0)))
+
+(defun |scanComment| ()
+ (let (n)
+ (declare (special |$ln| |$sz| |$n|))
+  (setq n |$n|)
+  (setq |$n| |$sz|)
+  (|lfcomment| (substring |$ln| n nil))))
+
+(defun |scanDictCons| ()
+ (let (d b a l)
+  (setq l (hkeys |scanKeyTable|))
+  (setq d
+   (progn
+    (setq a (make-array 256))
+    (setq b (make-array 1))
+    (setf (svref b 0)
+      (make-array 0 :fill-pointer 0 :element-type 'string-char))
+    ((lambda (i)
+     (loop
+      (cond
+       ((> i 255) (return nil))
+       (t (setf (svref a i) b)))
+      (setq i (+ i 1))))
+     0)
+    a))
+  ((lambda (Var7 s)
+   (loop
+    (cond
+     ((or (atom Var7) (progn (setq s (car Var7)) nil))
+      (return nil))
+     (t (|scanInsert| s d)))
+    (setq Var7 (cdr Var7))))
+   l nil)
+  d))
+
+(defun |scanError| ()
+ (let (n)
+ (declare (special |$ln| |$linepos| |$n|))
+  (setq n |$n|)
+  (setq |$n| (+ |$n| 1))
+  (|ncSoftError|
+   (cons |$linepos| (+ (|lnExtraBlanks| |$linepos|) |$n|))
+    "The character %1 is not an AXIOM character."
+    (list (elt |$ln| n)))
+  (|lferror| (elt |$ln| n))))
+
+(defun |scanEsc| ()
+ (let (n1)
+ (declare (special |$ln| |$r| |$sz| |$n|))
+  (cond
+   ((not (< |$n| |$sz|))
+    (cond
+     ((|nextline| |$r|)
+      ((lambda ()
+       (loop
+        (cond 
+         (|$n| (return nil))
+         (t (|nextline| |$r|))))))
+      (|scanEsc|)
+      nil)
+     (t nil)))
+   (t 
+    (setq n1 (strposl " " |$ln| |$n| t))
+    (cond
+     ((null n1)
+      (cond
+       ((|nextline| |$r|)
+        ((lambda ()
+          (loop
+           (cond 
+            (|$n| (return nil))
+            (t (|nextline| |$r|))))))
+         (|scanEsc|)
+         nil)
+        (t nil)))
+     ((equal |$n| n1) t)
+     ((= (char-code (char |$ln| n1)) (char-code #\_))
+       (setq |$n| (+ n1 1))
+       (|scanEsc|)
+       nil)
+     (t (setq |$n| n1)
+      (cond
+       ((or (|startsNegComment?|) (|startsComment?|))
+        (progn
+         (|nextline| |$r|)
+         (|scanEsc|)
+         nil))
+       (t nil))))))))
+
+(defun |scanEscape| ()
+ (declare (special |$n|))
+  (setq |$n| (+ |$n| 1))
+  (when (|scanEsc|) (|scanWord| t)))
+
+(defun |scanExponent| (a w)
+ (let (c1 e c n)
+ (declare (special |$ln| |$sz| |$n|))
+  (cond
+   ((not (< |$n| |$sz|)) (|lffloat| a w "0"))
+   (t
+    (setq n |$n|)
+    (setq c (char-code (char |$ln| |$n|)))
+    (cond
+     ((or (= c (char-code #\E)) (= c (char-code #\e)))
+      (setq |$n| (+ |$n| 1))
+      (cond
+       ((not (< |$n| |$sz|))
+        (setq |$n| n)
+        (|lffloat| a w "0"))
+       ((digitp (elt |$ln| |$n|))
+        (setq e (|spleI| #'digitp))
+        (|lffloat| a w e))
+       (t
+        (setq c1 (char-code (char |$ln| |$n|)))
+        (cond
+         ((or (= c1 (char-code #\+)) (= c1 (char-code #\-)))
+           (setq |$n| (+ |$n| 1))
+           (cond
+            ((not (< |$n| |$sz|))
+             (setq |$n| n)
+             (|lffloat| a w "0"))
+            ((digitp (elt |$ln| |$n|))
+             (setq e (|spleI| #'digitp))
+             (|lffloat| a w
+              (cond
+               ((= c1 (char-code #\-))
+                (concat "-" e))
+               (t e))))
+            (t
+             (setq |$n| n)
+             (|lffloat| a w "0"))))))))
+     (t (|lffloat| a w "0")))))))
+
+(defun |scanIgnoreLine| (ln n)
+  (cond
+   ((null n) n)
+   (t
+    (cond
+     ((= (char-code (char ln 0)) (char-code #\)))
+      (cond
+        ((|incPrefix?| "command" 1 ln) t)
+        (t nil)))
+     (t n)))))
+
+(defun |scanInsert| (s d)
+ (let (v k n u h l)
+  (setq l (length s))
+  (setq h (char-code (char s 0)))
+  (setq u (elt d h))
+  (setq n (length u))
+  (setq k 0)
+  ((lambda ()
+   (loop
+    (cond
+     ((< (length (elt u k)) l) (return nil))
+     (t (setq k (+ k 1)))))))
+  (setq v (make-array (+ n 1)))
+  ((lambda (Var2 i)
+   (loop
+    (cond
+     ((> i Var2) (return nil))
+     (t (setf (svref v i) (elt u i))))
+    (setq i (+ i 1))))
+   (- k 1) 0)
+  (setf (svref v k) s)
+  ((lambda (Var3 i)
+   (loop
+    (cond
+     ((> i Var3) (return nil))
+     (t (setf (svref v (+ i 1)) (elt u i))))
+    (setq i (+ i 1))))
+   (- n 1) k)
+  (setf (svref d h) v)
+  s))
+
+(defun |scanKeyTr| (w)
+ (declare (special |$floatok|))
+ (cond
+  ((eq (|keyword| w) 'dot)
+    (cond
+     (|$floatok| (|scanPossFloat| w))
+     (t (|lfkey| w))))
+  (t (setq |$floatok| (null (|scanCloser?| w))) (|lfkey| w))))
+
+(defun |scanNegComment| ()
+ (let (n)
+ (declare (special |$ln| |$sz| |$n|))
+  (setq n |$n|)
+  (setq |$n| |$sz|)
+  (|lfnegcomment| (substring |$ln| n nil))))
+
+(defun |scanNumber| ()
+ (let (v w n a)
+ (declare (special |$floatok| |$ln| |$sz| |$n|))
+  (setq a (|spleI| #'digitp))
+  (cond
+   ((not (< |$n| |$sz|))
+    (|lfinteger| a))
+   ((not (= (char-code (char |$ln| |$n|)) (char-code #\r)))
+    (cond
+     ((and |$floatok| (= (char-code (char |$ln| |$n|)) (char-code #\.)))
+      (setq n |$n|)
+      (setq |$n| (+ |$n| 1))
+      (cond
+       ((and (< |$n| |$sz|) (= (char-code (char |$ln| |$n|)) (char-code #\.)))
+        (setq |$n| n)
+        (|lfinteger| a))
+       (t
+        (setq w (|spleI1| #'digitp t))
+        (|scanExponent| a w))))
+     (t (|lfinteger| a))))
+   (t
+    (setq |$n| (+ |$n| 1))
+    (setq w (|spleI1| #'|rdigit?| t))
+    (|scanCheckRadix| (parse-integer a) w)
+    (cond
+     ((not (< |$n| |$sz|))
+      (|lfrinteger| a w))
+      ((= (char-code (char |$ln| |$n|)) (char-code #\.))
+       (setq n |$n|)
+       (setq |$n| (+ |$n| 1))
+       (cond
+        ((and (< |$n| |$sz|) (= (char-code (char |$ln| |$n|)) (char-code #\.)))
+         (setq |$n| n)
+         (|lfrinteger| a w))
+        (t 
+         (setq v (|spleI1| #'|rdigit?| t))
+         (|scanCheckRadix| (parse-integer a) v)
+         (|scanExponent| (concat a "r" w) v))))
+      (t (|lfrinteger| a w)))))))
+
+(defun |ScanOrPairVec| (f ob)
+ (let (|$seen|) 
+ (declare (special |$seen|)) 
+  (setq |$seen| (make-hash-table :test #'eq))
+  (catch '|ScanOrPairVecAnswer| (|ScanOrPairVec,ScanOrInner| f ob))))
+
+(defun |ScanOrPairVec,ScanOrInner| (f ob)
+  (declare (special |$seen|))
+  (when (hget |$seen| ob) nil)
+  (when (consp ob) 
+    (hput |$seen| ob t)
+    (|ScanOrPairVec,ScanOrInner| f (qcar ob))
+    (|ScanOrPairVec,ScanOrInner| f (qcdr ob)))
+  (when (simple-vector-p ob) 
+     (hput |$seen| ob t)
+     (do ((tmp0 (- (|#| ob) 1)) (i 0 (1+ i)))
+         ((> i tmp0) nil)
+       (|ScanOrPairVec,ScanOrInner| f (elt ob i))))
+  (when (funcall f ob) (throw '|ScanOrPairVecAnswer| t))
+  nil)
+
+(defun |scanPossFloat| (w)
+ (declare (special |$ln| |$sz| |$n|))
+ (cond
+  ((or (not (< |$n| |$sz|)) (null (digitp (elt |$ln| |$n|))))
+    (|lfkey| w))
+  (t
+    (setq w (|spleI| #'digitp)) (|scanExponent| "0" w))))
+
+(defun |scanPunct| ()
+ (let (a sss)
+ (declare (special |$n| |$ln|))
+  (setq sss (|subMatch| |$ln| |$n|))
+  (setq a (length sss))
+  (cond
+   ((eql a 0) (|scanError|))
+   (t (setq |$n| (+ |$n| a)) (|scanKeyTr| sss)))))
+
+(defun |scanPunCons| ()
+ (let (a listing)
+  (setq listing (hkeys |scanKeyTable|))
+  (setq a (make-array (list 256) :element-type 'bit :initial-element 0))
+  ((lambda (i)
+   (loop
+    (cond
+     ((> i 255) (return nil))
+     (t (setf (sbit a i) 0)))
+    (setq i (+ i 1))))
+   0)
+  ((lambda (Var8 k)
+   (loop
+    (cond
+     ((or (atom Var8) (progn (setq k (car Var8)) nil))
+      (return nil))
+     (t
+      (cond
+       ((null (|startsId?| (elt k 0)))
+        (setf (sbit a (char-code (char k 0))) 1)))))
+    (setq Var8 (cdr Var8))))
+   listing nil)
+  a))
+
+(defun |scanS| ()
+ (let (b a str mn escsym strsym n)
+ (declare (special |$ln| |$linepos| |$sz| |$n|))
+ (cond
+  ((not (< |$n| |$sz|))
+   (|ncSoftError|
+    (cons |$linepos| (+ (|lnExtraBlanks| |$linepos|) |$n|))
+     "Quote added at end of line." nil) "")
+  (t
+   (setq n |$n|)
+   (setq strsym (or (strpos "\"" |$ln| |$n| nil) |$sz|))
+   (setq escsym (or (strpos "_" |$ln| |$n| nil) |$sz|))
+   (setq mn (min strsym escsym))
+   (cond
+    ((equal mn |$sz|)
+     (setq |$n| |$sz|)
+     (|ncSoftError|
+      (cons |$linepos| (+ (|lnExtraBlanks| |$linepos|) |$n|))
+       "Quote added at end of line." nil)
+       (substring |$ln| n nil))
+    ((equal mn strsym)
+     (setq |$n| (+ mn 1))
+     (substring |$ln| n (- mn n)))
+    (t 
+     (setq str (substring |$ln| n (- mn n)))
+     (setq |$n| (+ mn 1))
+     (setq a (|scanEsc|))
+     (setq b
+      (cond
+       (a 
+        (setq str (concat str (|scanTransform| (elt |$ln| |$n|))))
+        (setq |$n| (+ |$n| 1)) (|scanS|))
+       (t (|scanS|))))
+     (concat str b)))))))
+
+(defun |scanSpace| ()
+ (let (n)
+ (declare (special |$floatok| |$ln| |$n|))
+  (setq n |$n|)
+  (setq |$n| (strposl " " |$ln| |$n| t))
+  (when (null |$n|) (setq |$n| (length |$ln|)))
+  (setq |$floatok| t)
+  (|lfspaces| (- |$n| n))))
+
+(defun |scanString| ()
+ (declare (special |$floatok| |$n|))
+  (setq |$n| (+ |$n| 1))
+  (setq |$floatok| nil)
+  (|lfstring| (|scanS|)))
+
+(defun |scanKeyTableCons| ()
+ (let (KeyTable)
+  (setq KeyTable (make-hash-table :test #'equal))
+  ((lambda (Var6 st)
+   (loop
+    (cond
+     ((or (atom Var6) (progn (setq st (car Var6)) nil))
+      (return nil))
+     (t
+      (hput KeyTable (car st) (cadr st))))
+    (setq Var6 (cdr Var6))))
+   |scanKeyWords| nil)
+  KeyTable))
+
+(defun |scanToken| ()
+ (let (b ch n linepos c ln)
+ (declare (special |$linepos| |$n| |$ln|))
+  (setq ln |$ln|)
+  (setq c (char-code (char |$ln| |$n|))) 
+  (setq linepos |$linepos|)
+  (setq n |$n|)
+  (setq ch (elt |$ln| |$n|))
+  (setq b
+   (cond
+    ((|startsComment?|) (|scanComment|) nil)
+    ((|startsNegComment?|) (|scanNegComment|) nil)
+    ((= c (char-code #\?))
+      (setq |$n| (+ |$n| 1))
+      (|lfid| "?"))
+    ((|punctuation?| c) (|scanPunct|))
+    ((|startsId?| ch) (|scanWord| nil))
+    ((= c (char-code #\space)) (|scanSpace|) nil)
+    ((= c (char-code #\")) (|scanString|))
+    ((digitp ch) (|scanNumber|))
+    ((= c (char-code #\_)) (|scanEscape|))
+    (t (|scanError|))))
+  (cond
+    ((null b) nil)
+    (t
+     (|dqUnit|
+      (|constoken| ln linepos b (+ n (|lnExtraBlanks| linepos))))))))
+
+(defun |scanTransform| (x) x)
+
+(defun |scanW| (b)
+ (let (bb a str endid l n1)
+ (declare (special |$ln| |$sz| |$n|))
+  (setq n1 |$n|)
+  (setq |$n| (+ |$n| 1))
+  (setq l |$sz|)
+  (setq endid (|posend| |$ln| |$n|))
+  (cond
+   ((or (equal endid l)
+        (not (= (char-code (char |$ln| endid)) (char-code #\_))))
+    (setq |$n| endid)
+    (list b (substring |$ln| n1 (- endid n1))))
+   (t
+    (setq str (substring |$ln| n1 (- endid n1)))
+    (setq |$n| (+ endid 1))
+    (setq a (|scanEsc|))
+    (setq bb
+     (cond
+      (a (|scanW| t))
+      ((not (< |$n| |$sz|)) (list b ""))
+      ((|idChar?| (elt |$ln| |$n|)) (|scanW| b))
+      (t (list b ""))))
+    (list (or (elt bb 0) b) (concat str (elt bb 1)))))))
+
+(defun |scanWord| (esp)
+ (let (w aaa)
+ (declare (special |$floatok|))
+  (setq aaa (|scanW| nil))
+  (setq w (elt aaa 1))
+  (setq |$floatok| nil)
+  (cond
+   ((or esp (elt aaa 0))
+    (|lfid| w))
+   ((|keyword?| w)
+    (setq |$floatok| t)
+    (|lfkey| w))
+   (t
+    (|lfid| w)))))
+
+(defun |search| (x e)
+ (let ((curEnv (car e)) (tailEnv (cdr e)))
+  (or (|searchCurrentEnv| x curEnv) (|searchTailEnv| x tailEnv))))
+
+(defun |searchCurrentEnv| (x currentEnv)
+ (prog (u signal)
+  (return
+   (seq
+    (progn
+     (do ((thisenv currentEnv (cdr thisenv)) (contour nil))
+         ((or (atom thisenv) (progn (setq contour (car thisenv)) nil)) nil)
+      (seq
+       (exit
+        (cond
+         ((setq u (assq x contour)) (return (setq signal u)))
+         (t nil)))))
+     (ifcdr signal))))))
+
+(defun |searchTailEnv| (x e)
+ (prog (u signal)
+  (return
+   (seq
+    (progn
+     (do ((thise e (cdr thise)) (env nil))
+         ((or (atom thise) (progn (setq env (car thise)) nil)) nil)
+       (seq
+        (exit
+         (setq signal
+          (progn
+           (do ((cone env (cdr cone)) (contour nil))
+               ((or (atom cone) (progn (setq contour (car cone)) nil)) nil)
+             (seq
+              (exit
+               (cond
+                ((and (setq u (assq x contour)) (assq 'fluid u))
+                 (return (setq signal u)))
+                (t nil)))))
+           (cond
+            (signal (return signal))
+            (t nil)))))))
+     (ifcdr signal))))))
+
+(defun |segmentKeyedMsg| (msg) (|string2Words| msg)) 
+
+(defun |selectOption| (x l errorfunction)
+ (let (u y)
+  (cond
+   ((|member| x l) x)
+   ((null (identp x))
+    (cond
+     (errorfunction (funcall errorfunction x u))
+     (t nil)))
+   (t
+    (setq u
+     (let (t0)
+       (do ((t1 l (cdr t1)) (y nil))
+           ((or (atom t1) (progn (setq y (car t1)) nil)) (nreverse0 t0))
+          (if (|stringPrefix?| (pname x) (pname y))
+             (setq t0 (cons y t0))))))
+    (cond
+     ((and (consp u) (eq (qcdr u) nil) (progn (setq y (qcar u)) t)) y)
+     (errorfunction (funcall errorfunction x u))
+     (t nil))))))
+
+(defun |selectOptionLC| (x l errorFunction)
+ (|selectOption| (downcase (|object2Identifier| x)) l errorFunction)) 
+
+(defun |separatePiles| (x)
+ (let (semicolon a)
+  (cond
+   ((null x) nil)
+   ((null (cdr x)) (car x))
+   (t 
+    (setq a (car x))
+    (setq semicolon
+      (|dqUnit| (|tokConstruct| '|key| 'backset (|lastTokPosn| a))))
+    (|dqConcat| (list a semicolon (|separatePiles| (cdr x))))))))
+
+(defun |serverReadLine| (stream)
+ "used in place of READ-LINE in a Axiom server system."
+ (let (in-stream *eof* l framename currentframe form stringbuf line action)
+ (declare (special in-stream *eof* |$SpadServer| |$EndServerSession|
+     |$NeedToSignalSessionManager| |$SessionManager| |$EndOfOutput|
+     |$CallInterp| |$CreateFrame| |$frameAlist| |$frameNumber|
+     |$currentFrameNum| |$CreateFrameAnswer| |$SwitchFrames| |$EndSession|
+     |$EndServerSession| |$LispCommand| |$sockBufferLength| |$MenuServer|
+     |$QuietSpadCommand| |$SpadCommand| |$NonSmanSession| |$KillLispSystem|))
+  (force-output)
+  (if (or (null |$SpadServer|) (null (is-console stream)))
+   (|read-line| stream)
+   (progn
+    (setq in-stream stream)
+    (setq *eof* nil)
+    (setq line
+     (do ()
+         ((null (and (null |$EndServerSession|) (null *eof*))) nil)
+         (when |$NeedToSignalSessionManager|
+          (|sockSendInt| |$SessionManager| |$EndOfOutput|))
+      (setq |$NeedToSignalSessionManager| nil)
+      ; see bookvol8 for the constants that serverSwitch returns
+      (setq action (|serverSwitch|))
+      (cond 
+       ((= action |$CallInterp|)
+        (setq l (|read-line| stream))
+        (setq |$NeedToSignalSessionManager| t)
+        (return l))
+       ((= action |$CreateFrame|)
+        (setq framename (gentemp "frame"))
+        (|addNewInterpreterFrame| framename)
+        (setq |$frameAlist|
+         (cons (cons |$frameNumber| framename) |$frameAlist|))
+        (setq |$currentFrameNum| |$frameNumber|)
+        (|sockSendInt| |$SessionManager| |$CreateFrameAnswer|)
+        (|sockSendInt| |$SessionManager| |$frameNumber|)
+        (setq |$frameNumber| (1+ |$frameNumber|))
+        (|sockSendString| |$SessionManager| (mkprompt)))
+       ((= action |$SwitchFrames|)
+        (setq |$currentFrameNum| (|sockGetInt| |$SessionManager|))
+        (setq currentframe (lassoc |$currentFrameNum| |$frameAlist|))
+        (|changeToNamedInterpreterFrame| currentframe))
+       ((= action |$EndSession|)
+        (setq |$EndServerSession| t))
+       ((= action |$LispCommand|)
+        (setq |$NeedToSignalSessionManager| t)
+        (setq stringbuf (make-string |$sockBufferLength|))
+        (|sockGetString| |$MenuServer| stringbuf |$sockBufferLength|)
+        (setq form (|unescapeStringsInForm| (read-from-string stringbuf)))
+        (|protectedEVAL| form))
+       ((= action |$QuietSpadCommand|)
+        (setq |$NeedToSignalSessionManager| t)
+        (|executeQuietCommand|))
+       ((= action |$SpadCommand|)
+        (setq |$NeedToSignalSessionManager| t)
+        (setq stringbuf (make-string 512))
+        (|sockGetString| |$MenuServer| stringbuf 512)
+        (catch '|coerceFailure|
+         (catch '|top_level|
+          (catch 'spad_reader
+           (|parseAndInterpret| stringbuf))))
+        (princ (mkprompt))
+        (finish-output))
+       ((= action |$NonSmanSession|) (setq |$SpadServer| nil))
+       ((= action |$KillLispSystem|) (bye))
+       (t nil))))
+    (cond
+     (line line)
+     (t '||))))))
+
+(defun |set| (l)
+ (declare (special |$setOptions|))
+ (|set1| l |$setOptions|)) 
+
+(defun |set1| (l settree)
+ (let (|$setOptionNames| arg setdata st setfunarg num upperlimit arg2)
+  (declare (special |$setOptionNames| |$UserLevel| |$displaySetValue|))
+  (cond
+   ((null l) (|displaySetVariableSettings| settree '||))
+   (t
+    (setq |$setOptionNames|
+      (do ((t1 settree (cdr t1)) t0 (x nil))
+          ((or (atom t1) (progn (setq x (car t1)) nil)) (nreverse0 t0))
+       (seq
+        (exit 
+         (setq t0 (cons (elt x 0) t0))))))
+    (setq arg 
+     (|selectOption| (downcase (car l)) |$setOptionNames| '|optionError|))
+    (setq setdata (cons arg (lassoc arg settree)))
+    (cond
+     ((null (|satisfiesUserLevel| (third setdata)))
+      (|sayKeyedMsg| 
+        "Your %1 is ambiguous. The following are abbreviated by %2 :"
+        (list |$UserLevel| "set option" nil)))
+     ((eql 1 (|#| l)) (|displaySetOptionInformation| arg setdata))
+     (t
+      (setq st (fourth setdata))
+      (case (fourth setdata)
+       (function
+        (setq setfunarg
+         (if (eq (elt l 1) 'default) 
+          '|%initialize%|
+          (ifcdr l)))
+        (if (canFuncall? (fifth setdata))
+          (funcall (fifth setdata) setfunarg)
+          (|sayMSG| (concatenate 'string "   Function not implemented. "
+           (string (fifth setdata)))))
+        (when |$displaySetValue|
+         (|displaySetOptionInformation| arg setdata))
+        NIL)
+       (string
+        (setq arg2 (elt l 1))
+        (cond
+         ((eq arg2 'default) (set (fifth setdata) (seventh setdata)))
+         (arg2 (set (fifth setdata) arg2))
+         (t nil))
+        (when (or |$displaySetValue| (null arg2))
+         (|displaySetOptionInformation| arg setdata))
+        NIL)
+       (integer
+        (setq arg2
+         (progn
+          (setq num (elt l 1))
+          (cond
+           ((and (integerp num)
+                 (>= num (elt (sixth setdata) 0))
+                 (or (null (setq upperlimit (elt (sixth setdata) 1)))
+                     (<= num upperlimit)))
+            num)
+           (t
+            (|selectOption| 
+             (elt l 1)
+             (cons '|default| (sixth setdata)) nil)))))
+        (cond
+         ((eq arg2 'default) (set (fifth setdata) (seventh setdata)))
+         (arg2 (set (fifth setdata) arg2))
+         (t nil))
+        (cond
+         ((or |$displaySetValue| (null arg2))
+          (|displaySetOptionInformation| arg setdata)))
+        (cond
+         ((null arg2)
+          (|sayMessage| 
+           `(" Your value" ,@(|bright| (|object2String| (elt l 1)))
+             "is not among the valid choices.")))
+         (t nil)))
+       (literals
+        (cond
+         ((setq arg2
+          (|selectOption| (elt l 1) 
+           (cons '|default| (sixth setdata)) nil))
+          (cond
+           ((eq arg2 'default)
+            (set (fifth setdata) 
+              (|translateYesNo2TrueFalse| (seventh setdata))))
+           (t
+            (cond ((eq arg2 '|nobreak|) 
+              #+:GCL (si::use-fast-links t)))
+            (cond 
+             ((eq arg2 '|fastlinks|)
+              #+:GCL (si::use-fast-links nil)
+              (setq arg2 '|break|)))
+            (set (fifth setdata) (|translateYesNo2TrueFalse| arg2))))))
+        (when (or |$displaySetValue| (null arg2))
+          (|displaySetOptionInformation| arg setdata))
+        (cond
+         ((null arg2)
+          (|sayMessage|
+           (cons " Your value"
+            (append (|bright| (|object2String| (elt l 1)))
+             (cons "is not among the valid choices." nil)))))
+         (t nil)))
+       (tree (|set1| (ifcdr l) (sixth setdata)) nil)
+       (t 
+        (|sayMessage|
+         `("Cannot handle set tree node type" ,@(|bright| st) |yet|))
+        nil))))))))
+
+(defun setdatabase (constructor key value)
+ (let (struct)
+  (when (symbolp constructor)
+   (unless (setq struct (get constructor 'database))
+    (setq struct (make-database))
+    (setf (get constructor 'database) struct))
+   (case key
+    (abbreviation
+     (setf (database-abbreviation struct) value)
+     (when (symbolp value)
+      (setf (get value 'abbreviationfor) constructor)))
+    (constructorkind
+     (setf (database-constructorkind struct) value))))))
+
+(defun |setExpose| (arg)
+ "The top level set expose command handler"
+ (let (fnargs fn)
+   (cond
+    ((eq arg '|%initialize%|))
+    ((eq arg '|%display%|) "...")
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+     (|displayExposedGroups|)
+     (|sayMSG| " ")
+     (|displayExposedConstructors|)
+     (|sayMSG| " ")
+     (|displayHiddenConstructors|)
+     (|sayMSG| " "))
+    ((and (consp arg)
+          (progn (setq fn (qcar arg)) (setq fnargs (qcdr arg)) t)
+          (setq fn (|selectOptionLC| fn '(|add| |drop|) nil)))
+     (cond
+      ((eq fn '|add|) (|setExposeAdd| fnargs))
+      ((eq fn '|drop|) (|setExposeDrop| fnargs))
+      (t nil)))
+    (t (|setExpose| nil)))))
+
+(defun |setExposeAdd| (arg)
+ "The top level set expose add command handler"
+ (declare (special $linelength))
+ (let (fnargs fn)
+   (cond
+    ((null arg)
+     (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " The add Option ")
+     (|displayExposedGroups|)
+     (|sayMSG| " ")
+     (|displayExposedConstructors|)
+     (|sayMSG| " ")
+     (|sayKeyedMsg| 
+      (format nil
+       "When )set expose add is followed by no arguments, the information ~
+        you now see is displayed. ~
+        The arguments group and constructor are used to specify ~
+        exposure groups or an explicit constructor to be added to the local ~
+        frame exposure data. Issue ~
+        %ceon )set expose add group %ceoff or ~
+        %ceon )set expose add constructor %ceoff ~
+        for more information.")
+       nil))
+    ((and (consp arg) 
+          (progn (setq fn (qcar arg)) (setq fnargs (qcdr arg)) t)
+          (setq fn (|selectOptionLC| fn '(|group| |constructor|) nil)))
+     (cond
+      ((eq fn '|group|) (|setExposeAddGroup| fnargs))
+      ((eq fn '|constructor|) (|setExposeAddConstr| fnargs))
+      (t nil)))
+    (t (|setExposeAdd| nil))))) 
+
+(defun |setExposeAddConstr| (arg)
+ "The top level set expose add constructor handler"
+ (declare (special $linelength |$localExposureData| |$interpreterFrameName|))
+ (if (null arg)
+   (progn
+    (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " The constructor Option ")
+    (|displayExposedConstructors|))
+   (dolist (x arg)
+     (setq x (|unabbrev| x))
+     (when (consp x) (setq x (qcar x)))
+     (cond
+      ((null (getdatabase x 'constructorkind))
+       (|sayKeyedMsg|
+        (format nil "%1 is not a known constructor. ~
+           You can make the constructor known to the system by loading it.")
+         (list x)))
+      ((|member| x (elt |$localExposureData| 1))
+       (|sayKeyedMsg| "%1 is already explicitly exposed in frame %2"
+         (list x |$interpreterFrameName| )))
+      (t
+       (when (|member| x (elt |$localExposureData| 2))
+         (setf (elt |$localExposureData| 2)
+          (|delete| x (elt |$localExposureData| 2))))
+       (setf (elt |$localExposureData| 1)
+        (msort (cons x (elt |$localExposureData| 1))))
+       (|clearClams|)
+       (|sayKeyedMsg| "%1 is now explicitly exposed in frame %2"
+        (list x |$interpreterFrameName| )))))))
+
+(defun |setExposeAddGroup| (arg)
+ "Expose a group"
+ (declare (special |$globalExposureGroupAlist| |$localExposureData|
+                   |$interpreterFrameName| $linelength))
+ (if (null arg)
+  (progn
+   (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " The group Option ")
+   (|displayExposedGroups|)
+   (|sayMSG| " ")
+   (|sayAsManyPerLineAsPossible|
+    (mapcar #'(lambda (x) (|object2String| (first x))) 
+      |$globalExposureGroupAlist|)))
+  (dolist (x arg)
+    (when (consp x) (setq x (qcar x)))
+    (cond
+     ((eq x '|all|)
+      (setf (elt |$localExposureData| 0)
+        (mapcar #'first |$globalExposureGroupAlist|))
+      (setf (elt |$localExposureData| 1) nil)
+      (setf (elt |$localExposureData| 2) nil)
+      (|displayExposedGroups|)
+      (|sayMSG| " ")
+      (|displayExposedConstructors|)
+      (|sayMSG| " ")
+      (|displayHiddenConstructors|)
+      (|clearClams|))
+     ((null (getalist |$globalExposureGroupAlist| x))
+      (|sayKeyedMsg| "%1 is not a known exposure group name." (cons x nil)))
+     ((|member| x (elt |$localExposureData| 0))
+      (|sayKeyedMsg| "%1 is already an exposure group for frame %2"
+        (list x |$interpreterFrameName|)))
+     (t
+      (setf (elt |$localExposureData| 0)
+        (msort (cons x (elt |$localExposureData| 0))))
+      (|sayKeyedMsg| "%1 is now an exposure group for frame %2"
+        (list x |$interpreterFrameName|))
+      (|clearClams|))))))
+
+(defun |setExposeDrop| (arg)
+ "The top level set expose drop handler"
+ (declare (special $linelength))
+ (let (fnargs fn)
+   (cond
+    ((null arg)
+     (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " The drop Option ")
+     (|displayHiddenConstructors|)
+     (|sayMSG| " ")
+     (|sayKeyedMsg|
+      (format nil "When )set expose drop is followed by no arguments, the ~
+       information you now see is displayed. The arguments group and ~
+       constructor are used to specify exposure groups or an explicit ~
+       constructor to be dropped from the local frame exposure data. Issue ~
+       %ceon )set expose drop group %ceoff or %ceon )set expose drop ~
+       constructor %ceoff for more information.")
+      nil))
+    ((and (consp arg) 
+          (progn (setq fn (qcar arg)) (setq fnargs (qcdr arg)) t)
+          (setq fn (|selectOptionLC| fn '(|group| |constructor|) nil)))
+     (cond
+      ((eq fn '|group|) (|setExposeDropGroup| fnargs))
+      ((eq fn '|constructor|) (|setExposeDropConstr| fnargs))
+      (t nil)))
+    (t (|setExposeDrop| nil))))) 
+
+(defun |setExposeDropConstr| (arg)
+ "The top level set expose drop constructor handler"
+ (declare (special $linelength |$localExposureData| |$interpreterFrameName|))
+ (if (null arg)
+  (progn
+   (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " The constructor Option ")
+   (|sayKeyedMsg| 
+    (format nil "When followed by one or more constructor names, this option ~
+                 allows you to explicitly hide constructors in this frame.")
+    nil)
+   (|sayMSG| " ")
+   (|displayExposedConstructors|)
+   (|sayMSG| " ")
+   (|displayHiddenConstructors|))
+  (dolist (x arg)
+    (setq x (|unabbrev| x))
+    (when (consp x) (setq x (qcar x)))
+    (cond
+     ((null (getdatabase x 'constructorkind))
+      (|sayKeyedMsg| 
+       (format nil "%1 is not a known constructor. ~
+        You can make the constructor known to the system by loading it.")
+       (list x)))
+     ((|member| x (elt |$localExposureData| 2))
+      (|sayKeyedMsg| "%1 is already explicitly hidden in frame %2"
+       (list x |$interpreterFrameName|)))
+     (t
+      (when (|member| x (elt |$localExposureData| 1))
+       (setf (elt |$localExposureData| 1)
+        (|delete| x (elt |$localExposureData| 1))))
+      (setf (elt |$localExposureData| 2)
+        (msort (cons x (elt |$localExposureData| 2))))
+      (|clearClams|)
+      (|sayKeyedMsg| "%1 is now explicitly hidden in frame %2"
+       (list x |$interpreterFrameName|)))))))
+
+(defun |setExposeDropGroup| (arg)
+ "The top level set expose drop group handler"
+ (declare (special $linelength |$localExposureData| |$interpreterFrameName|
+                   |$globalExposureGroupAlist|))
+ (if (null arg)
+  (progn
+   (format t "~v,,,'-:@<~a~>~%" (- $linelength 2) " The group Option ")
+   (|sayKeyedMsg| 
+    (format nil "When followed by one or more exposure group names, this ~
+                 option allows you to remove those groups from the local ~
+                 frame exposure data.")
+    nil)
+   (|sayMSG| " ")
+   (|displayExposedGroups|))
+  (dolist (x arg)
+    (when (consp x) (setq x (qcar x)))
+    (cond
+     ((eq x '|all|)
+      (setf (elt |$localExposureData| 0) nil)
+      (setf (elt |$localExposureData| 1) nil)
+      (setf (elt |$localExposureData| 2) nil)
+      (|displayExposedGroups|)
+      (|sayMSG| " ")
+      (|displayExposedConstructors|)
+      (|sayMSG| " ")
+      (|displayHiddenConstructors|)
+      (|clearClams|))
+     ((|member| x (elt |$localExposureData| 0))
+      (setf (elt |$localExposureData| 0)
+       (|delete| x (elt |$localExposureData| 0)))
+      (|clearClams|)
+      (|sayKeyedMsg| "%1 is no longer an exposure group for frame %2"
+        (list x |$interpreterFrameName| )))
+     ((getalist |$globalExposureGroupAlist| x)
+      (|sayKeyedMsg| "%1 is already an exposure group for frame %2"
+        (list x |$interpreterFrameName| )))
+     (t (|sayKeyedMsg| "%1 is not a known exposure group name." (list x )))))))
+
+(defun |setFortDir| (arg)
+ (declare (special |$fortranDirectory|))
+ (let (mode)
+   (COND
+    ((eq arg '|%initialize%|) (setq |$fortranDirectory| "./"))
+    ((eq arg '|%display%|)
+     (if (stringp |$fortranDirectory|) 
+      |$fortranDirectory|
+      (pname |$fortranDirectory|)))
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+      (|describeSetFortDir|))
+    ((null (setq mode (|validateOutputDirectory| arg)))
+     (|sayBrightly|
+      `(" Sorry, but your argument(s)" ,@(|bright| arg) 
+        "is(are) not valid." |%l|))
+     (|describeSetFortDir|))
+    (t (setq |$fortranDirectory| mode)))))
+
+(defun |setFortPers| (arg)
+ (let (n)
+ (declare (special |$fortPersistence|))
+   (cond
+    ((eq arg '|%initialize%|) (setq |$fortPersistence| 1))
+    ((eq arg '|%display%|) |$fortPersistence|)
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+     (|describeFortPersistence|))
+    (t
+     (setq n (car arg))
+     (cond
+      ((or (null (integerp n)) (minusp n))
+       (|sayMessage| 
+        `("Your value of" ,@(|bright| n) "is invalid because ..."))
+         (|describeFortPersistence|)
+         (|terminateSystemCommand|))
+      (t (setq |$fortPersistence| (car arg)))))))) 
+
+(defun |setFortTmpDir| (arg)
+ "The top level set fortran calling tempfile handler"
+ (let (mode)
+   (declare (special |$fortranTmpDir|))
+   (cond
+    ((eq arg '|%initialize%|) (setq |$fortranTmpDir| "/tmp/"))
+    ((eq arg '|%display%|)
+     (if (stringp |$fortranTmpDir|)
+      |$fortranTmpDir|
+      (pname |$fortranTmpDir|)))
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+     (|describeSetFortTmpDir|))
+    ((null (setq mode (|validateOutputDirectory| arg)))
+     (|sayBrightly| 
+      `(" Sorry, but your argument(s)" ,@(|bright| arg) 
+            "is(are) not valid." |%l|))
+      (|describeSetFortTmpDir|))
+    (t (setq |$fortranTmpDir| mode)))))
+
+(defun |setFunctionsCache| (arg)
+ "The top level set functions cache handler"
+ (let (|$options| n)
+  (declare (special |$options| |$cacheCount| |$cacheAlist|))
+  (cond
+    ((eq arg '|%initialize%|)
+      (setq |$cacheCount| 0)
+      (setq |$cacheAlist| nil))
+    ((eq arg '|%display%|)
+      (if (null |$cacheAlist|)
+       (|object2String| |$cacheCount|)
+       "..."))
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+      (|describeSetFunctionsCache|)
+      (terpri)
+      (|sayAllCacheCounts|))
+    (t
+      (setq n (car arg))
+      (cond
+       ((and (not (eq n '|all|)) (or (null (integerp n)) (minusp n)))
+        (|sayMessage|
+         `("Your value of" ,@(|bright| n) "is invalid because ..."))
+        (|describeSetFunctionsCache|)
+        (|terminateSystemCommand|))
+       (t
+        (when (cdr arg) (list (cons '|vars| (cdr arg))))
+        (|countCache| n)))))))
+
+(defun |setHistoryCore| (inCore) 
+ (let (l vec str n rec) 
+ (declare (special |$useInternalHistoryTable| |$internalHistoryTable|
+     |$HiFiAccess| |$IOindex|))
+  (cond 
+   ((boot-equal inCore |$useInternalHistoryTable|) 
+     (if inCore 
+        (|sayKeyedMsg| 
+         (format nil
+          "History information is already being maintained in memory (and ~
+           not in an external file).")
+          nil)
+        (|sayKeyedMsg| 
+         (format nil
+          "History information is already being maintained in an external ~
+           file (and not in memory).")
+         nil))) ; file history already in use
+   ((null |$HiFiAccess|) 
+     (setq |$useInternalHistoryTable| inCore) 
+     (if inCore 
+        (|sayKeyedMsg|
+         (format nil
+          "When the history facility is active, history information will be ~
+            maintained in memory (and not in an external file).")
+          nil)
+        (|sayKeyedMsg|
+           (format nil
+            "When the history facility is active, history information will be ~
+             maintained in a file (and not in an internal table).")
+         nil)))
+   (inCore 
+     (setq |$internalHistoryTable| nil) 
+     (cond 
+      ((not (eql |$IOindex| 0))
+        (setq l (length (rkeyids (|histFileName|)))) 
+        (do ((i 1 (1+ i)))
+            ((> i l) nil)
+          (setq vec (unwind-protect (|readHiFi| i) (|disableHist|)))
+          (setq |$internalHistoryTable| 
+            (cons (cons i vec) |$internalHistoryTable|)))
+        (|histFileErase| (|histFileName|)))) 
+     (setq |$useInternalHistoryTable| t) 
+     (|sayKeyedMsg|
+      (format nil
+       "When the history facility is active, history information will be ~
+        maintained in memory (and not in an external file).")
+       nil))
+   (t 
+     (setq |$HiFiAccess| nil)
+     (|histFileErase| (|histFileName|))
+     (setq str 
+      (rdefiostream 
+       (cons 
+         '(mode . output) 
+          (cons
+            (cons 'file (|histFileName|))
+             nil))))
+     (do ((tmp0 (reverse |$internalHistoryTable|) (cdr tmp0))
+          (tmp1 nil))
+         ((or (atom tmp0) 
+              (progn 
+                (setq tmp1 (car tmp0))
+                nil) 
+              (progn 
+               (progn 
+                (setq n (car tmp1))
+                (setq rec (cdr tmp1))
+                tmp1) 
+               nil)) 
+              nil)
+       (spadrwrite (|object2Identifier| n) rec str))
+     (rshut str)
+     (setq |$HiFiAccess| t)
+     (setq |$internalHistoryTable| nil)
+     (setq |$useInternalHistoryTable| nil)
+     (|sayKeyedMsg|
+      (format nil
+       "When the history facility is active, history information will be ~
+        maintained in a file (and not in an internal table).")
+      nil)))))
+
+(defun |setInputLibrary| (arg)
+ "The set input library command handler"
+ (declare (special input-libraries))
+ (let (tmp1 filename act)
+  (cond
+   ((eq arg '|%initialize%|) t)
+   ((eq arg '|%display%|) (mapcar #'namestring input-libraries))
+   ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+    (|describeInputLibraryArgs|))
+   ((and (consp arg)
+         (progn
+          (setq act (qcar arg))
+          (setq tmp1 (qcdr arg))
+          (and (consp tmp1)
+               (eq (qcdr tmp1) nil)
+               (progn (setq filename (qcar tmp1)) t)))
+         (setq act (|selectOptionLC| act '(|add| |drop|) nil)))
+    (cond
+     ((eq act '|add|)
+      (|addInputLibrary| (truename (princ-to-string filename))))
+     ((eq act '|drop|)
+      (|dropInputLibrary| (truename (princ-to-string filename))))))
+   (t (|setInputLibrary| nil)))))
+
+(defun |setIOindex| (n)
+  (declare (special |$IOindex|))
+  (setq |$IOindex| n)) 
+
+(defun |setLinkerArgs| (arg)
+ (declare (special |$fortranLibraries|))
+ (cond
+  ((eq arg '|%initialize%|) (setq |$fortranLibraries| "-lxlf"))
+  ((eq arg '|%display%|) (|object2String| |$fortranLibraries|))
+  ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+    (|describeSetLinkerArgs|))
+  ((and (listp arg) (stringp (car arg)))
+    (setq |$fortranLibraries| (car arg)))
+  (t (|describeSetLinkerArgs|)))) 
+
+(defun |setMsgCatlessAttr| (msg attr)
+ (|ncPutQ| msg 'catless (cons attr (ifcdr (qassq 'catless (|ncAlist| msg))))))
+
+(defun |setMsgForcedAttr| (msg cat attr)
+ (if (eq cat '|catless|)
+  (|setMsgCatlessAttr| msg attr)
+  (|ncPutQ| msg cat attr)))
+
+(defun |setMsgForcedAttrList| (msg attrlist)
+ (dolist (attr attrlist)
+  (|setMsgForcedAttr| msg (|whichCat| attr) attr)))
+
+(defun |setMsgUnforcedAttr| (msg cat attr)
+ (cond
+  ((eq cat '|catless|) (|setMsgCatlessAttr| msg attr))
+  ((null (qassq cat (|ncAlist| msg))) (|ncPutQ| msg cat attr))))
+
+(defun |setMsgUnforcedAttrList| (msg attrlist)
+ (dolist (attr attrlist)
+  (|setMsgUnforcedAttr| msg (|whichCat| attr) attr)))
+
+(defun |setNagHost| (arg)
+ (declare (special |$nagHost|))
+ (cond
+  ((eq arg '|%initialize%|) (setq |$nagHost| "localhost"))
+  ((eq arg '|%display%|) (|object2String| |$nagHost|))
+  ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?)) 
+   (|describeSetNagHost|))
+  (t (setq |$nagHost| (|object2String| arg)))))
+
+(defun |setOutputAlgebra| (arg)
+ (let (label tmp1 tmp2 ptype fn ft fm filename teststream)
+ (declare (special |$algebraOutputStream| |$algebraOutputFile| $filep
+  |$algebraFormat|))
+   (cond
+    ((eq arg '|%initialize%|)
+     (setq |$algebraOutputStream|
+      (defiostream '((mode . output) (device . console)) 255 0))
+     (setq |$algebraOutputFile| "CONSOLE")
+     (setq |$algebraFormat| t))
+    ((eq arg '|%display%|)
+     (if |$algebraFormat|
+      (setq label "On:")
+      (setq label "Off:"))
+     (concat label |$algebraOutputFile|))
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+     (|describeSetOutputAlgebra|))
+    (t
+     (cond
+      ((and (consp arg)
+            (eq (qcdr arg) nil)
+            (progn (setq fn (qcar arg)) t)
+            (|member| fn '(y n ye yes no o on of off console 
+                    |y| |n| |ye| |yes| |no| |o| |on| |of| |off| |console|)))
+       '|ok|)
+      (t (setq arg (list fn '|spout|))))
+     (cond
+      ((and (consp arg)
+            (eq (qcdr arg) nil)
+            (progn (setq fn (qcar arg)) t))
+       (cond
+        ((|member| (upcase fn) '(y n ye o of))
+         (|sayKeyedMsg| 
+            (format nil
+              "To toggle %1 printing on and off, specify %l )set output %2 ~
+               yes/no/on/off %l Yes, no, on and off cannot be abbreviated.")
+          '(|algebra| |algebra|)))
+        ((|member| (upcase fn) '(no off)) (setq |$algebraFormat| nil))
+        ((|member| (upcase fn) '(yes on)) (setq |$algebraFormat| t))
+        ((eq (upcase fn) 'console)
+         (shut |$algebraOutputStream|)
+         (setq |$algebraOutputStream| 
+          (defiostream '((mode . output) (device . console)) 255 0))
+         (setq |$algebraOutputFile| "CONSOLE"))))
+      ((or
+        (and (consp arg)
+             (progn
+              (setq fn (qcar arg))
+              (setq tmp1 (qcdr arg))
+              (and (consp tmp1)
+                   (eq (qcdr tmp1) nil)
+                   (progn (setq ft (qcar tmp1)) t))))
+        (and (consp arg)
+             (progn (setq fn (qcar arg))
+                    (setq tmp1 (qcdr arg))
+                    (and (consp tmp1)
+                         (progn (setq ft (qcar tmp1))
+                                (setq tmp2 (qcdr tmp1))
+                                (and (consp tmp2)
+                                     (eq (qcdr tmp2) nil)
+                                     (progn
+                                      (setq fm (qcar tmp2))
+                                      t)))))))
+       (when (setq ptype (|pathnameType| fn))
+        (setq fn (concat (|pathnameDirectory| fn) (|pathnameName| fn)))
+        (setq ft ptype))
+       (unless fm (setq fm 'a))
+       (setq filename ($filep fn ft fm))
+       (cond
+        ((null filename)
+         (|sayKeyedMsg|
+          "It is not possible to open or create a file called %1 %2 %3 ."
+          (list fn ft fm)))
+        ((setq teststream (make-outstream filename 255 0))
+         (shut |$algebraOutputStream|)
+         (setq |$algebraOutputStream| teststream)
+         (setq |$algebraOutputFile| (|object2String| filename))
+         (|sayKeyedMsg| 
+          "%1 output will be written to file %2 ."
+          (list "Algebra" |$algebraOutputFile|)))
+        (t (|sayKeyedMsg|
+            "It is not possible to open or create a file called %1 %2 %3 ."
+            (list fn ft fm)))))
+      (t
+       (|sayKeyedMsg| "Your argument list is not valid." nil)
+       (|describeSetOutputAlgebra|)))))))
+
+(defun |setOutputCharacters| (arg)
+ (let (current char s l fn)
+ (declare (special |$specialCharacters| |$plainRTspecialCharacters|
+   |$RTspecialCharacters| |$specialCharacterAlist|))
+    (if (eq arg '|%initialize%|) 
+     (setq |$specialCharacters| |$plainRTspecialCharacters|)
+     (progn
+      (setq current
+       (cond
+        ((eq |$specialCharacters| |$RTspecialCharacters|) "default")
+        ((eq |$specialCharacters| |$plainRTspecialCharacters|) "plain")
+        (t "unknown")))
+      (cond
+       ((eq arg '|%display%|) current)
+       ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+        (format t
+         " The characters option may be followed by any one ~
+           of the following:~%~%")
+        (dolist (name '("default" "plain"))
+         (if (string= (string current) name) 
+          (|sayBrightly| `(" ->" ,@(|bright| name)))
+          (|sayBrightly|  (list "    " name))))
+        (terpri)
+        (format t
+          " The current setting is indicated within the list.  ~
+            This option determines ~% the special characters used ~
+            for algebraic output.  This is what the~% current choice of ~
+            special characters looks like:~%")
+        (do ((t1 |$specialCharacterAlist| (CDR t1)) (t2 nil))
+           ((or (atom t1) 
+                (progn (setq t2 (car t1)) nil)
+                (progn (progn (setq char (car t2)) t2) nil)) nil)
+         (setq s
+          (concat "   " (pname char) " is shown as " 
+           (pname (|specialChar| char))))
+          (setq l (cons s l)))
+        (|sayAsManyPerLineAsPossible| (reverse l)))
+       ((and (consp arg)
+             (eq (qcdr arg) NIL)
+             (progn (setq fn (qcar arg)) t)
+             (setq fn (downcase fn)))
+        (cond
+         ((eq fn '|default|) 
+          (setq |$specialCharacters| |$RTspecialCharacters|))
+         ((eq fn '|plain|)
+          (setq |$specialCharacters| |$plainRTspecialCharacters|))
+         (t (|setOutputCharacters| nil))))
+       (t (|setOutputCharacters| nil)))))))
+
+(defun |setOutputFormula| (arg)
+ (let (label tmp1 tmp2 ptype fn ft fm filename teststream)
+ (declare (special |$formulaOutputStream| |$formulaOutputFile| $filep
+    |$formulaFormat|))
+   (cond
+    ((eq arg '|%initialize%|)
+     (setq |$formulaOutputStream|
+      (defiostream '((mode . output) (device . console)) 255 0))
+     (setq |$formulaOutputFile| "CONSOLE")
+     (setq |$formulaFormat| nil))
+    ((eq arg '|%display%|)
+     (if |$formulaFormat|
+      (setq label "On:")
+      (setq label "Off:"))
+     (concat label |$formulaOutputFile|))
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?)) 
+     (|describeSetOutputFormula|))
+    (t
+     (cond
+      ((and (consp arg)
+            (eq (qcdr arg) nil)
+            (progn (setq fn (qcar arg)) t)
+            (|member| fn '(y n ye yes no o on of off console
+                      |y| |n| |ye| |yes| |no| |o| |on| |of| |off| |console|)))
+        '|ok|)
+      (t (setq arg (list fn '|sform|))))
+     (cond
+      ((and (consp arg)
+            (eq (qcdr arg) nil)
+            (progn (setq fn (qcar arg)) t))
+       (cond
+        ((|member| (upcase fn) '(y n ye o of))
+         (|sayKeyedMsg|
+            (format nil
+              "To toggle %1 printing on and off, specify %l )set output %2 ~
+               yes/no/on/off %l Yes, no, on and off cannot be abbreviated.")
+            '(|script| |script|)))
+        ((|member| (upcase fn) '(no off)) (setq |$formulaFormat| nil))
+        ((|member| (upcase fn) '(yes on)) (setq |$formulaFormat| t))
+        ((eq (upcase fn) 'console)
+         (SHUT |$formulaOutputStream|)
+         (setq |$formulaOutputStream|
+          (defiostream '((mode . output) (device . console)) 255 0))
+         (setq |$formulaOutputFile| "CONSOLE"))))
+      ((or
+        (and (consp arg)
+             (progn (setq fn (qcar arg))
+                    (setq tmp1 (qcdr arg))
+                    (and (consp tmp1)
+                         (eq (qcdr tmp1) nil)
+                         (progn (setq ft (qcar tmp1)) t))))
+        (and (consp arg)
+             (progn (setq fn (qcar arg))
+                    (setq tmp1 (qcdr arg))
+                    (and (consp tmp1)
+                         (progn (setq ft (qcar tmp1))
+                                (setq tmp2 (qcdr tmp1))
+                                (and (consp tmp2)
+                                     (eq (qcdr tmp2) nil)
+                                     (progn 
+                                      (setq fm (qcar tmp2)) t)))))))
+        (if (setq ptype (|pathnameType| fn))
+          (setq fn (concat (|pathnameDirectory| fn) (|pathnameName| fn)))
+          (setq ft ptype))
+        (unless fm (setq fm 'a))
+        (setq filename ($filep fn ft fm))
+        (cond
+         ((null filename)
+          (|sayKeyedMsg|
+           "It is not possible to open or create a file called %1 %2 %3 ."
+           (list fn ft fm)))
+         ((setq teststream (make-outstream filename 255 0))
+          (shut |$formulaOutputStream|)
+          (setq |$formulaOutputStream| teststream)
+          (setq |$formulaOutputFile| (|object2String| filename))
+          (|sayKeyedMsg|
+           "%1 output will be written to file %2 ." 
+           (list "IBM Script formula" |$formulaOutputFile| )))
+         (t
+          (|sayKeyedMsg|
+           "It is not possible to open or create a file called %1 %2 %3 ."
+           (list fn ft fm)))))
+      (t
+       (|sayKeyedMsg| '"Your argument list is not valid." nil)
+       (|describeSetOutputFormula|))))))) 
+
+(defun |setOutputFortran| (arg)
+ (let (label APPEND quiet tmp1 tmp2 ptype fn ft fm filename teststream)
+ (declare (special |$fortranOutputStream| |$fortranOutputFile| $filep
+    |$fortranFormat|))
+  (cond
+   ((eq arg '|%initialize%|) 
+    (setq |$fortranOutputStream|
+     (defiostream '((mode . output) (device . console)) 255 0))
+    (setq |$fortranOutputFile| "CONSOLE")
+    (setq |$fortranFormat| nil))
+   ((eq arg '|%display%|)
+    (if |$fortranFormat| 
+     (setq label "On:")
+     (setq label "Off:"))
+    (concat label |$fortranOutputFile|))
+   ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?)) 
+    (|describeSetOutputFortran|))
+   (t
+    (DO ()
+        ((null (and (listp arg) 
+                    (|member| (upcase (car arg)) '(append quiet))))
+       nil)
+     (cond
+      ((eq (upcase (car arg)) 'append) (setq append t))
+      ((eq (upcase (car arg)) 'quiet) (setq quiet t))
+      (t nil))
+     (setq arg (cdr arg)))
+    (cond
+     ((and (consp arg)
+           (eq (qcdr arg) nil)
+           (progn (setq fn (qcar arg)) t)
+           (|member| fn '(Y N YE YES NO O ON OF OFF CONSOLE 
+             |y| |n| |ye| |yes| |no| |o| |on| |of| |off| |console|)))
+       '|ok|)
+     (t (setq arg (list fn '|sfort|))))
+    (cond
+     ((and (consp arg) (eq (qcdr arg) nil) (progn (setq fn (qcar arg)) t))
+      (cond
+       ((|member| (upcase fn) '(y n ye o of))
+        (|sayKeyedMsg|
+         (format nil
+          "To toggle %1 printing on and off, specify %l )set output %2 ~
+           yes/no/on/off %l Yes, no, on and off cannot be abbreviated.")
+         '(fortran |fortran|)))
+       ((|member| (upcase fn) '(no off)) (setq |$fortranFormat| nil))
+       ((|member| (upcase fn) '(yes on)) (setq |$fortranFormat| t))
+       ((eq (upcase fn) 'console)
+         (shut |$fortranOutputStream|)
+         (setq |$fortranOutputStream|
+          (defiostream '((mode . output) (device . console)) 255 0)) 
+         (setq |$fortranOutputFile| "CONSOLE"))))
+     ((or 
+       (and (consp arg) 
+            (progn
+             (setq fn (qcar arg))
+             (setq tmp1 (qcdr arg))
+             (and (consp tmp1)
+                  (eq (qcdr tmp1) nil)
+                  (progn (setq ft (qcar tmp1)) t))))
+       (and (consp arg)
+            (progn
+             (setq fn (qcar arg))
+             (setq tmp1 (qcdr arg))
+             (and (consp tmp1)
+                  (progn
+                   (setq ft (qcar tmp1))
+                   (setq tmp2 (qcdr tmp1))
+                   (and (consp tmp2)
+                        (eq (qcdr tmp2) nil)
+                        (progn (setq fm (qcar tmp2)) t)))))))
+      (when (setq ptype (|pathnameType| fn))
+        (setq fn (concat (|pathnameDirectory| fn) (|pathnameName| fn)))
+        (setq ft ptype))
+      (unless fm (setq fm 'a))
+      (setq filename ($filep fn ft fm))
+      (cond
+       ((null filename)
+        (|sayKeyedMsg|
+         "It is not possible to open or create a file called %1 %2 %3 ."
+         (list fn ft fm)))
+       ((setq teststream (|makeStream| append filename 255 0))
+        (SHUT |$fortranOutputStream|)
+        (setq |$fortranOutputStream| teststream)
+        (setq |$fortranOutputFile| (|object2String| filename))
+        (unless quiet
+          (|sayKeyedMsg|
+           "%1 output will be written to file %2 ."
+           (list 'fortran |$fortranOutputFile|))))
+       ((null quiet)
+        (|sayKeyedMsg|
+         "It is not possible to open or create a file called %1 %2 %3 ."
+         (list fn ft fm)))
+       (t nil)))
+     (t
+      (unless quiet (|sayKeyedMsg| "Your argument list is not valid." nil))
+      (|describeSetOutputFortran|)))))))
+
+(defun |setOutputLibrary| (arg)
+ "The set output command handler"
+ (let (fn)
+ (declare (special |$outputLibraryName|))
+   (cond
+    ((eq arg '|%initialize%|) (setq |$outputLibraryName| nil))
+    ((eq arg '|%display%|) (or |$outputLibraryName| "user.lib"))
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?) (/= (|#| arg) 1))
+     (|describeOutputLibraryArgs|))
+    (t
+     (when (probe-file (setq fn (princ-to-string (car arg))))
+       (setq fn (truename fn)))
+     (|openOutputLibrary| (setq |$outputLibraryName| fn))))))
+
+(defun |setOutputHtml| (arg)
+ (let (label tmp1 tmp2 ptype fn ft fm filename teststream)
+ (declare (special |$htmlOutputStream| |$htmlOutputFile| |$htmlFormat|
+           $filep))
+   (cond
+    ((eq arg '|%initialize%|)
+     (setq |$htmlOutputStream|
+      (defiostream '((mode . output) (device . console)) 255 0))
+     (setq |$htmlOutputFile| "CONSOLE")
+     (setq |$htmlFormat| nil))
+    ((eq arg '|%display%|)
+     (if |$htmlFormat| 
+      (setq label "On:")
+      (setq label "Off:"))
+     (concat label |$htmlOutputFile|))
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+     (|describeSetOutputHtml|))
+    (t
+     (cond
+      ((and (consp arg) 
+            (eq (qcdr arg) nil)
+            (progn (setq fn (qcar arg)) t)
+            (|member| fn '(y n ye yes no o on of off console 
+                   |y| |n| |ye| |yes| |no| |o| |on| |of| |off| |console|)))
+        '|ok|)
+      (t (setq arg (list fn '|smml|))))
+     (cond
+      ((and (consp arg) 
+            (eq (qcdr arg) nil)
+            (progn (setq fn (qcar arg)) t))
+       (cond
+        ((|member| (upcase fn) '(y n ye o of))
+         (|sayKeyedMsg| 
+            (format nil
+              "To toggle %1 printing on and off, specify %l )set output %2 ~
+               yes/no/on/off %l Yes, no, on and off cannot be abbreviated.")
+            '(|HTML| |html|)))
+        ((|member| (upcase fn) '(no off)) (setq |$htmlFormat| nil))
+        ((|member| (upcase fn) '(yes on)) (setq |$htmlFormat| t))
+        ((eq (upcase fn) 'console)
+         (shut |$htmlOutputStream|)
+         (setq |$htmlOutputStream|
+          (defiostream '((mode . output) (device . console)) 255 0))
+         (setq |$htmlOutputFile| "CONSOLE"))))
+      ((or 
+        (and (consp arg)
+             (progn
+              (setq fn (qcar arg))
+              (setq tmp1 (qcdr arg))
+              (and (consp tmp1)
+                   (eq (qcdr tmp1) nil)
+                   (progn (setq ft (qcar tmp1)) t))))
+        (and (consp arg)
+             (progn (setq fn (qcar arg))
+                    (setq tmp1 (qcdr arg))
+                    (and (consp tmp1)
+                         (progn
+                          (setq ft (qcar tmp1))
+                          (setq tmp2 (qcdr tmp1))
+                          (and (consp tmp2)
+                               (eq (qcdr tmp2) nil)
+                               (progn
+                                (setq fm (qcar tmp2))
+                                t)))))))
+          (when (setq ptype (|pathnameType| fn))
+           (setq fn 
+            (concat (|pathnameDirectory| fn) (|pathnameName| fn)))
+           (setq ft ptype))
+          (unless fm (setq fm 'a))
+          (setq filename ($filep fn ft fm))
+          (cond
+           ((null filename)
+            (|sayKeyedMsg|
+             "It is not possible to open or create a file called %1 %2 %3 ."
+             (list fn ft fm)))
+           ((setq teststream (make-outstream filename 255 0))
+            (shut |$htmlOutputStream|)
+            (setq |$htmlOutputStream| teststream)
+            (setq |$htmlOutputFile| (|object2String| filename))
+            (|sayKeyedMsg| 
+             "%1 output will be written to file %2 ."
+             (list "HTML" |$htmlOutputFile|)))
+           (t (|sayKeyedMsg|
+               "It is not possible to open or create a file called %1 %2 %3 ."
+               (list fn ft fm)))))
+      (t 
+       (|sayKeyedMsg| "Your argument list is not valid." nil)
+       (|describeSetOutputHtml|))))))) 
+
+(defun |setOutputMathml| (arg)
+ (let (label tmp1 tmp2 ptype fn ft fm filename teststream)
+ (declare (special |$mathmlOutputStream| |$mathmlOutputFile| |$mathmlFormat|
+           $filep))
+   (cond
+    ((eq arg '|%initialize%|)
+     (setq |$mathmlOutputStream|
+      (defiostream '((mode . output) (device . console)) 255 0))
+     (setq |$mathmlOutputFile| "CONSOLE")
+     (setq |$mathmlFormat| nil))
+    ((eq arg '|%display%|)
+     (if |$mathmlFormat| 
+      (setq label "On:")
+      (setq label "Off:"))
+     (concat label |$mathmlOutputFile|))
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+     (|describeSetOutputMathml|))
+    (t
+     (cond
+      ((and (consp arg) 
+            (eq (qcdr arg) nil)
+            (progn (setq fn (qcar arg)) t)
+            (|member| fn '(y n ye yes no o on of off console 
+                   |y| |n| |ye| |yes| |no| |o| |on| |of| |off| |console|)))
+        '|ok|)
+      (t (setq arg (list fn '|smml|))))
+     (cond
+      ((and (consp arg) 
+            (eq (qcdr arg) nil)
+            (progn (setq fn (qcar arg)) t))
+       (cond
+        ((|member| (upcase fn) '(y n ye o of))
+         (|sayKeyedMsg|
+            (format nil
+              "To toggle %1 printing on and off, specify %l )set output %2 ~
+               yes/no/on/off %l Yes, no, on and off cannot be abbreviated.")
+           '(|MathML| |mathml|)))
+        ((|member| (upcase fn) '(no off)) (setq |$mathmlFormat| nil))
+        ((|member| (upcase fn) '(yes on)) (setq |$mathmlFormat| t))
+        ((eq (upcase fn) 'console)
+         (shut |$mathmlOutputStream|)
+         (setq |$mathmlOutputStream|
+          (defiostream '((mode . output) (device . console)) 255 0))
+         (setq |$mathmlOutputFile| "CONSOLE"))))
+      ((or 
+        (and (consp arg)
+             (progn
+              (setq fn (qcar arg))
+              (setq tmp1 (qcdr arg))
+              (and (consp tmp1)
+                   (eq (qcdr tmp1) nil)
+                   (progn (setq ft (qcar tmp1)) t))))
+        (and (consp arg)
+             (progn (setq fn (qcar arg))
+                    (setq tmp1 (qcdr arg))
+                    (and (consp tmp1)
+                         (progn
+                          (setq ft (qcar tmp1))
+                          (setq tmp2 (qcdr tmp1))
+                          (and (consp tmp2)
+                               (eq (qcdr tmp2) nil)
+                               (progn
+                                (setq fm (qcar tmp2))
+                                t)))))))
+          (when (setq ptype (|pathnameType| fn))
+           (setq fn 
+            (concat (|pathnameDirectory| fn) (|pathnameName| fn)))
+           (setq ft ptype))
+          (unless fm (setq fm 'a))
+          (setq filename ($filep fn ft fm))
+          (cond
+           ((null filename)
+             (|sayKeyedMsg|
+               "It is not possible to open or create a file called %1 %2 %3 ."
+               (list fn ft fm)))
+           ((setq teststream (make-outstream filename 255 0))
+            (shut |$mathmlOutputStream|)
+            (setq |$mathmlOutputStream| teststream)
+            (setq |$mathmlOutputFile| (|object2String| filename))
+            (|sayKeyedMsg|
+             "%1 output will be written to file %2 ."
+             (list "MathML" |$mathmlOutputFile|)))
+           (t (|sayKeyedMsg| 
+               "It is not possible to open or create a file called %1 %2 %3 ."
+               (list fn ft fm)))))
+      (t 
+       (|sayKeyedMsg| "Your argument list is not valid." nil)
+       (|describeSetOutputMathml|))))))) 
+
+(defun |setOutputOpenMath| (arg)
+ (let (label tmp1 tmp2 ptype fn ft fm filename teststream)
+ (declare (special |$openMathOutputStream| |$openMathFormat| $filep
+     |$openMathOutputFile|))
+   (cond
+    ((eq arg '|%initialize%|)
+     (setq |$openMathOutputStream| 
+      (defiostream  '((mode . output) (device . console)) 255 0))
+     (setq |$openMathOutputFile| "CONSOLE")
+     (setq |$openMathFormat| NIL))
+    ((eq arg '|%display%|)
+     (if |$openMathFormat| 
+      (setq label "On:")
+      (setq label "Off:"))
+     (concat label |$openMathOutputFile|))
+    ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+     (|describeSetOutputOpenMath|))
+    (t
+     (cond
+      ((and (consp arg)
+            (eq (qcdr arg) nil)
+            (progn (setq fn (qcar arg)) t)
+            (|member| fn '(y n ye yes no o on of off console
+                   |y| |n| |ye| |yes| |no| |o| |on| |of| |off| |console|)))
+        '|ok|)
+      (t (setq arg (list fn '|som|))))
+     (cond
+      ((and (consp arg)
+            (eq (qcdr arg) nil)
+            (progn (setq fn (qcar arg)) t))
+       (cond
+        ((|member| (upcase fn) '(y n ye o of))
+         (|sayKeyedMsg|
+            (format nil
+              "To toggle %1 printing on and off, specify %l )set output %2 ~
+               yes/no/on/off %l Yes, no, on and off cannot be abbreviated.")
+           '(|OpenMath| |openmath|)))
+        ((|member| (upcase fn) '(no off)) (setq |$openMathFormat| nil))
+        ((|member| (upcase fn) '(yes on)) (setq |$openMathFormat| t))
+        ((eq (upcase fn) 'console)
+         (shut |$openMathOutputStream|)
+         (setq |$openMathOutputStream|
+          (defiostream '((mode . output) (device . console)) 255 0))
+         (setq |$openMathOutputFile| "CONSOLE"))))
+      ((or
+        (and (consp arg)
+             (progn (setq fn (qcar arg))
+                    (setq tmp1 (qcdr arg))
+                    (and (consp tmp1)
+                         (eq (qcdr tmp1) nil)
+                         (progn (setq ft (qcar tmp1)) t))))
+        (and (consp arg)
+             (progn
+              (setq fn (qcar arg))
+              (setq tmp1 (qcdr arg))
+              (and (consp tmp1)
+                   (progn (setq ft (qcar tmp1))
+                          (setq tmp2 (qcdr tmp1))
+                          (and (consp tmp2)
+                               (eq (qcdr tmp2) nil)
+                               (progn (setq fm (qcar tmp2)) t)))))))
+        (when (setq ptype (|pathnameType| fn))
+         (setq fn (concat (|pathnameDirectory| fn) (|pathnameName| fn)))
+         (setq ft ptype))
+        (unless fm (setq fm 'a))
+        (setq filename ($filep fn ft fm))
+        (cond
+         ((null filename)
+          (|sayKeyedMsg|
+           "It is not possible to open or create a file called %1 %2 %3 ."
+           (list fn ft fm)))
+         ((setq teststream (make-outstream filename 255 0))
+          (shut |$openMathOutputStream|)
+          (setq |$openMathOutputStream| teststream)
+          (setq |$openMathOutputFile| (|object2String| filename))
+          (|sayKeyedMsg|
+           "%1 output will be written to file %2 ."
+           (list "OpenMath" |$openMathOutputFile|)))
+         (t
+          (|sayKeyedMsg|
+           "It is not possible to open or create a file called %1 %2 %3 ."
+           (list fn ft fm)))))
+      (t
+       (|sayKeyedMsg| "Your argument list is not valid." nil)
+       (|describeSetOutputOpenMath|))))))) 
+
+(defun |setOutputTex| (arg)
+ (let (label tmp1 tmp2 ptype fn ft fm filename teststream)
+  (declare (special |$texOutputStream| |$texOutputFile| |$texFormat| $filep))
+  (cond 
+   ((eq arg '|%initialize%|)
+    (setq |$texOutputStream| 
+     (defiostream '((mode . output) (device . console)) 255 0))
+    (setq |$texOutputFile| "CONSOLE")
+    (setq |$texFormat| nil))
+   ((eq arg '|%display%|)
+    (if |$texFormat| 
+     (setq label "On:")
+     (setq label "Off:"))
+    (concat label |$texOutputFile|))
+   ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+    (|describeSetOutputTex|))
+   (t
+    (cond
+     ((and (consp arg)
+           (eq (qcdr arg) nil)
+           (progn (setq fn (qcar arg)) t)
+           (|member| fn '(y n ye yes no o on of off console 
+                 |y| |n| |ye| |yes| |no| |o| |on| |of| |off| |console|)))
+       '|ok|)
+     (t (setq arg (list fn '|stex| nil))))
+    (cond
+     ((and (consp arg)
+           (eq (qcdr arg) nil)
+           (progn (setq fn (qcar arg)) t))
+      (cond 
+       ((|member| (upcase fn) '(y n ye o of))
+        (|sayKeyedMsg|
+            (format nil
+              "To toggle %1 printing on and off, specify %l )set output %2 ~
+               yes/no/on/off %l Yes, no, on and off cannot be abbreviated.")
+           '(|TeX| |tex|)))
+       ((|member| (upcase fn) '(no off)) (setq |$texFormat| nil))
+       ((|member| (upcase fn) '(yes on)) (setq |$texFormat| t))
+       ((eq (upcase fn) 'console)
+        (shut |$texOutputStream|)
+        (setq |$texOutputStream|
+          (defiostream '((mode . output) (device . console)) 255 0))
+        (setq |$texOutputFile| "CONSOLE"))))
+     ((or 
+       (and (consp arg)
+            (progn (setq fn (qcar arg))
+                   (setq tmp1 (qcdr arg))
+                   (and (consp tmp1)
+                        (eq (qcdr tmp1) nil)
+                        (progn (setq ft (qcar tmp1)) t))))
+      (and (consp arg)
+           (progn (setq fn (qcar arg))
+                  (setq tmp1 (qcdr arg))
+                  (and (consp tmp1)
+                  (progn (setq ft (qcar tmp1))
+                         (setq tmp2 (qcdr tmp1))
+                         (and (consp tmp2)
+                              (eq (qcdr tmp2) nil)
+                              (progn (setq fm (qcar tmp2)) t)))))))
+      (when (setq ptype (|pathnameType| fn))
+       (setq fn (concat (|pathnameDirectory| fn) (|pathnameName| fn)))
+       (setq ft ptype))
+      (unless fm (setq fm 'A))
+      (setq filename ($filep fn ft fm))
+      (cond
+       ((null filename)
+         (|sayKeyedMsg|
+          "It is not possible to open or create a file called %1 %2 %3 ."
+          (list fn ft fm )))
+       ((setq teststream (make-outstream filename 255 0))
+        (shut |$texOutputStream|)
+        (setq |$texOutputStream| teststream)
+        (setq |$texOutputFile| (|object2String| filename))
+        (|sayKeyedMsg|
+         "%1 output will be written to file %2 ."
+         (list "TeX" |$texOutputFile|)))
+       (t (|sayKeyedMsg|
+           "It is not possible to open or create a file called %1 %2 %3 ."
+           (list fn ft fm )))))
+     (t
+      (|sayKeyedMsg| "Your argument list is not valid." nil)
+      (|describeSetOutputTex|))))))) 
+
+(defun |setStreamsCalculate| (arg) 
+ (let (n) 
+  (declare (special |$streamCount|))
+  (cond 
+   ((eq arg '|%initialize%|) (setq |$streamCount| 10))
+   ((eq arg '|%display%|) (|object2String| |$streamCount|))
+   ((or (null arg) (eq arg '|%describe%|) (eq (car arg) '?))
+     (|describeSetStreamsCalculate|))
+   (t
+     (setq n (car arg))
+     (cond 
+      ((and (not (eq n '|all|)) (or (null (integerp n)) (minusp n)))
+        (|sayMessage| 
+         `("Your value of" ,@(|bright| n) "is invalid because ..."))
+        (|describeSetStreamsCalculate|)
+        (|terminateSystemCommand|))
+      (t (setq |$streamCount| n)))))))
+
+(defun |setUpDefault| (name props)
+  (declare (special |$curPage|))
+  (|htpAddInputAreaProp| |$curPage| name props))
+
+(defun |shortenForPrinting| (|val|)
+ (if (|isDomainOrPackage| |val|)
+  (|devaluate| |val|)
+  |val|))
+
+(defun |show| (arg) (|showSpad2Cmd| arg)) 
+
+(defun showdatabase (constructor)
+ (format t "~&~a: ~a~%" 'constructorkind
+  (getdatabase constructor 'constructorkind))
+ (format t "~&~a: ~a~%" 'cosig
+  (getdatabase constructor 'cosig))
+ (format t "~&~a: ~a~%" 'operation
+  (getdatabase constructor 'operation))
+ (format t "~&~a: ~%" 'constructormodemap)
+  (pprint (getdatabase constructor 'constructormodemap))
+ (format t "~&~a: ~%" 'constructorcategory)
+  (pprint (getdatabase constructor 'constructorcategory))
+ (format t "~&~a: ~%" 'operationalist)
+  (pprint (getdatabase constructor 'operationalist))
+ (format t "~&~a: ~%" 'modemaps)
+  (pprint (getdatabase constructor 'modemaps))
+ (format t "~&~a: ~a~%" 'hascategory
+  (getdatabase constructor 'hascategory))
+ (format t "~&~a: ~a~%" 'object
+  (getdatabase constructor 'object))
+ (format t "~&~a: ~a~%" 'niladic
+  (getdatabase constructor 'niladic))
+ (format t "~&~a: ~a~%" 'abbreviation
+  (getdatabase constructor 'abbreviation))
+ (format t "~&~a: ~a~%" 'constructor?
+  (getdatabase constructor 'constructor?))
+ (format t "~&~a: ~a~%" 'constructor
+  (getdatabase constructor 'constructor))
+ (format t "~&~a: ~a~%" 'defaultdomain
+  (getdatabase constructor 'defaultdomain))
+ (format t "~&~a: ~a~%" 'ancestors
+  (getdatabase constructor 'ancestors))
+ (format t "~&~a: ~a~%" 'sourcefile
+  (getdatabase constructor 'sourcefile))
+ (format t "~&~a: ~a~%" 'constructorform
+  (getdatabase constructor 'constructorform))
+ (format t "~&~a: ~a~%" 'constructorargs
+  (getdatabase constructor 'constructorargs))
+ (format t "~&~a: ~a~%" 'attributes
+  (getdatabase constructor 'attributes))
+ (format t "~&~a: ~%" 'predicates)
+  (pprint (getdatabase constructor 'predicates))
+ (format t "~&~a: ~a~%" 'documentation
+  (getdatabase constructor 'documentation))
+ (format t "~&~a: ~a~%" 'parents
+  (getdatabase constructor 'parents)))
+
+(defun |showHistory| (arg)
+ (let (|$printTimeSum| |$evalTimePrint| maxi mini arg2 arg1
+            nset n showInputOrBoth)
+  (declare (special |$printTimeSum| |$evalTimePrint| |$HiFiAccess|))
+  (setq |$evalTimePrint| 0)
+  (setq |$printTimeSum| 0)
+  (cond
+    ((null |$HiFiAccess|)
+     (|sayKeyedMsg|
+      (format nil
+       "The history facility command %1 cannot be performed because the ~
+        history facility is not on.")
+        (list '|show|)))
+    (t
+      (setq showInputOrBoth '|input|)
+      (setq n 20)
+      (when arg
+        (setq arg1 (car arg))
+        (when (integerp arg1)
+          (setq n arg1)
+          (setq nset t)
+          (cond
+            ((ifcdr arg) (setq arg1 (cadr arg)))
+            (t (setq arg1 nil))))
+        (when arg1
+          (setq arg2 (|selectOptionLC| arg1 '(|input| |both|) nil))
+          (cond
+            (arg2
+              (cond
+                ((and (eq (setq showInputOrBoth arg2) '|both|)
+                      (null nset))
+                  (setq n 5))))
+            (t
+              (|sayMSG|
+               (|concat| "  " (|bright| arg1)  "is an invalid argument."))))))
+      (cond ((not (< n |$IOindex|)) (setq n (- |$IOindex| 1))))
+      (setq mini (- |$IOindex| n))
+      (setq maxi (- |$IOindex| 1))
+      (cond
+        ((eq showInputOrBoth '|both|)
+          (unwind-protect
+            (|showInOut| mini maxi)
+            (|setIOindex| (+ maxi 1))))
+        (t (|showInput| mini maxi)))))))
+(defun |showInOut| (mini maxi)
+ (let (vec Alist triple)
+  (do ((ind mini (+ ind 1)))
+      ((> ind maxi) nil)
+   (setq vec (unwind-protect (|readHiFi| ind) (|disableHist|)))
+   (|sayMSG| (cons (car vec) nil))
+   (cond
+    ((setq Alist (assq '% (cdr vec)))
+      (setq triple (cdr (assq '|value| (cdr Alist))))
+      (setq |$IOindex| ind)
+      (|spadPrint| (|objValUnwrap| triple) (|objMode| triple)))))))
+
+(defun |showInput| (mini maxi)
+ (let (vec l)
+  (do ((|ind| mini (+ |ind| 1)))
+      ((> |ind| maxi) nil)
+    (setq vec (unwind-protect (|readHiFi| |ind|) (|disableHist|)))
+    (cond
+     ((> 10 |ind|) (tab 2))
+     ((> 100 |ind|) (tab 1))
+     (t nil))
+    (setq l (car vec))
+    (if (stringp l)
+      (|sayMSG| (list "   [" |ind| "] " (car vec)))
+      (progn
+       (|sayMSG| (list "   [" |ind| "] "))
+       (do ((tmp0 l (cdr tmp0)) (ln nil))
+           ((or (atom tmp0) (progn (setq ln (car tmp0)) nil)) nil)
+         (|sayMSG| (list "      " ln))))))))
+
+(defun |showSpad2Cmd| (arg)
+ (let (|$showOptions| |$e| |$env| constr)
+ (declare (special |$showOptions| |$e| |$env| |$InteractiveFrame| |$options|))
+  (if (equal arg (list nil))
+   (|helpSpad2Cmd| '(|show|))
+   (progn
+    (setq |$showOptions| '(|attributes| |operations|))
+    (unless |$options| (setq |$options| '((|operations|))))
+    (setq |$e| |$InteractiveFrame|)
+    (setq |$env| |$InteractiveFrame|)
+    (cond
+     ((and (consp arg) (eq (qcdr arg) nil) (progn (setq constr (qcar arg)) t))
+      (cond
+       ((|member| constr '(|Union| |Record| |Mapping|))
+        (cond
+         ((eq constr '|Record|)
+           (|sayKeyedMsg|
+            (format nil
+             "Record(a:A,...,b:B) %l Record takes any number of ~
+              selector-domain pairs as arguments: %i %l a, a selector, an ~
+              element of domain Symbol %l A, a domain of category ~
+              SetCategory %l ... %l b, a selector, an element of domain ~
+              Symbol %l B, a domain of category SetCategory %u %l ~
+              This constructor is a primitive in Axiom. ~
+              The selectors a,...,b of a Record type must be distinct. %l %l ~
+              In order for more information to be displayed about %1 , ~
+              you must give it specific arguments. For example: %2 %l ~
+              You can also use the HyperDoc Browser.")
+            (list constr ")show Record(a: Integer, b: String)" )))
+         ((eq constr '|Mapping|)
+           (|sayKeyedMsg|
+            (format nil
+             "Mapping(T, S, ...) %l Mapping takes any number of arguments ~
+              of the form: %i %l T, a domain of category SetCategory %l ~
+              S, a domain of category SetCategory %l ... %u %l ~
+              Mapping(T, S, ...) denotes the class of objects which are ~
+              mappings from a source domain (S, ...) into a target domain T. ~
+              The Mapping constructor can take any number of arguments. ~
+              All but the first argument is regarded as part of a source ~
+              tuple for the mapping. For example, Mapping(T, A, B) denotes ~
+              the class of mappings from (A, B) into T. %l ~
+              This constructor is a primitive in Axiom. ~
+              For more information, use the HyperDoc Browser.")
+            nil))
+         (t
+          (|sayKeyedMsg| 
+            (format nil
+             "Tagged union: Union(a:A, ..., b:B) %l Union takes any number ~
+              of 'tag'-domain pairs of arguments: %i %l a, a tag, an ~
+              element of domain Symbol %l A, a domain of category ~
+              SetCategory %l ... %l b, a tag, an element of domain ~
+              Symbol %l B, a domain of category SetCategory %u %l ~
+              This constructor is a primitive in Axiom. ~
+              In this tagged Union, tags a, ..., b must be distinct. %l %l ~
+              In order for more information to be displayed about %1 , ~
+              you must give it specific arguments. For example: %2 %l ~
+              You can also use the HyperDoc Browser.")
+            (list constr ")show Union(a: Integer, b: String)" )))
+          (|sayKeyedMsg| 
+           (format nil
+            "Untagged union: Union(A, ..., B) %l Union takes any number ~
+             of domain arguments: %i %l A, a domain of category ~
+             SetCategory %l ... %l B, a domain of category SetCategory %u %l ~
+             In this untagged form of Union, domains A, ..., B must be ~
+             distinct. In order for more information to be displayed about ~
+             %1 , you must give it specific arguments. For example: %2 %l ~
+             You can also use the HyperDoc Browser.")
+            (list constr ")show Union(Integer, String)" ))))
+       ((and (consp constr) (eq (qcar constr) '|Mapping|))
+          (|sayKeyedMsg| 
+            (format nil
+             "Mapping(T, S, ...) %l Mapping takes any number of arguments ~
+              of the form: %i %l T, a domain of category SetCategory %l ~
+              S, a domain of category SetCategory %l ... %u %l ~
+              Mapping(T, S, ...) denotes the class of objects which are ~
+              mappings from a source domain (S, ...) into a target domain T. ~
+              The Mapping constructor can take any number of arguments. ~
+              All but the first argument is regarded as part of a source ~
+              tuple for the mapping. For example, Mapping(T, A, B) denotes ~
+              the class of mappings from (A, B) into T. %l ~
+              This constructor is a primitive in Axiom. ~
+              For more information, use the HyperDoc Browser.")
+            nil))
+       (t (|reportOperations| constr constr))))
+     (t (|reportOperations| arg arg)))))))
+
+(defun shut (st)
+  (if (is-console st) 
+   st
+   (if (streamp st) (close st) -1)))
+
+(defun size (l) 
+ (cond
+  ((vectorp l) (length l))
+  ((consp l)   (list-length l))
+  (t 0)))
+
+(defun |SkipEnd?| (|st|)
+ "used in incLude1 for parsing"
+ (eql (remainder |st| 10) 0))
+
+(defun |SkipPart?| (|st|)
+ "used in incLude1 for parsing"
+ (eql (remainder |st| 10) 2))
+
+(defun |Skipping?| (|st|)
+ "used in incLude1 for parsing"
+ (null (|KeepPart?| |st|)))
+
+(defun smallEnough (x)
+  (if |$traceSize|
+   (< (smallEnoughCount x 0 |$traceSize|) |$traceSize|)
+   t))
+
+(defun |spad| () 
+ "Starts the interpreter but do not read in profiles"
+ (let (|$PrintCompilerMessageIfTrue|) 
+  (declare (special |$PrintCompilerMessageIfTrue|)) 
+  (setq |$PrintCompilerMessageIfTrue| nil) 
+  (|setOutputAlgebra| '|%initialize%|) 
+  (|runspad|) 
+  '|EndOfSpad|))
+
+(defun |spadClosure?| (ob)
+ (let (fun name vec)
+  (setq fun (qcar ob))
+  (if (null (setq name (bpiname fun)))
+   nil
+   (progn
+     (setq vec (qcdr ob))
+     (if (null (simple-vector-p vec)) 
+      nil
+      name)))))
+
+(defun spad-error-loc (str)
+  (format str "******** Boot Syntax Error detected ********"))
+
+(defun |SpadInterpretStream| (str source interactive?) 
+ (let (|$systemCommandFunction| 
+       |$ncMsgList| |$erMsgToss| |$lastPos| |$inclAssertions| 
+       |$okToExecuteMachineCode| |$newcompErrorCount|
+       |$libQuiet|)
+  (declare (special 
+            |$systemCommandFunction| |$ncMsgList| |$erMsgToss| |$lastPos| 
+            |$inclAssertions| |$okToExecuteMachineCode| |$newcompErrorCount| 
+            |$libQuiet| |$nopos|))
+  (setq |$libQuiet| (null interactive?)) 
+  (setq |$newcompErrorCount| 0) 
+  (setq |$okToExecuteMachineCode| t) 
+  (setq |$inclAssertions| (list 'aix '|CommonLisp|)) 
+  (setq |$lastPos| |$nopos|) 
+  (setq |$erMsgToss| nil) 
+  (setq |$ncMsgList| nil) 
+  (setq |$systemCommandFunction| #'|InterpExecuteSpadSystemCommand|) 
+  (if interactive? 
+   (progn 
+     (princ (mkprompt)) 
+     (|intloopReadConsole| "" str))
+   (|intloopInclude| source 0))))
+
+(defun spad-long-error ()
+ (declare (special spaderrorstream))
+  (spad-error-loc spaderrorstream)
+  (iostat)
+  (unless (equal out-stream spaderrorstream)
+    (spad-error-loc out-stream)
+    (terpri out-stream)))
+
+(defun |spadReply| ()
+ (declare (special |$traceNames|))
+ (loop for x in |$traceNames| collect 
+  (if (and (consp x) (|isDomainOrPackage| (car x)))
+   (|devaluate| (car x))
+   x)))
+
+(defun spadrread (vec stream)
+ (|dewritify| (|rread| vec stream nil))) 
+
+(defun spadrwrite (vec item stream)
+ (let (val)
+  (setq val (spadrwrite0 vec item stream))
+  (if (eq val '|writifyFailed|)
+   (|throwKeyedMsg| "The value specified cannot be saved to a file." nil)
+   item)))
+
+(defun spadrwrite0 (vec item stream)
+ (let (val)
+  (setq val (|safeWritify| item))
+  (if (eq val '|writifyFailed|)
+    val
+    (progn
+     (|rwrite| vec val stream)
+     item))))
+
+(defun user::spad-save (save-file)
+  (declare (special |$SpadServer| $openServerIfTrue))
+  (setq |$SpadServer| nil)
+  (setq $openServerIfTrue t)
+#+:AKCL
+  (system::save-system save-file)
+#+:allegro
+  (if (fboundp 'boot::restart)
+   (excl::dumplisp :name save-file :restart-function #'boot::restart)
+   (excl::dumplisp :name save-file))
+#+Lucid
+  (if (fboundp 'boot::restart)
+   (sys::disksave save-file :restart-function #'boot::restart)
+   (sys::disksave save-file))
+#+:CCL
+  (preserve)
+)
+
+(defun spad-short-error ()
+ (if (line-past-end-p Current-Line)
+    (format t "~&The current line is empty.~%")
+    (progn
+     (format t "~&The current line is:~%~%")
+     (line-print current-line))))
+
+(defun |spadStartUpMsgs| ()
+ (let (bar)
+ (declare (special |$msgAlist| |$opSysName| $linelength *yearweek*
+                    *build-version*))
+  (when (> $linelength 60)
+   (setq bar (|fillerSpaces| $linelength (|specialChar| '|hbar|)))
+   (|sayKeyedMsg| 
+    (format nil "%ceon AXIOM Computer Algebra System %l Version: %1 %l ~
+                 Timestamp: %2 %ceoff")
+    (list *build-version* *yearweek*))
+   (|sayMSG| bar)
+   (say "   Issue )copyright to view copyright notices.")
+   (say "   Issue )summary for a summary of useful system commands.")
+   (say "   Issue )quit to leave AXIOM and return to shell.")
+   (say "   Visit http://axiom-developer.org for more information")
+   (|sayMSG| bar)
+   (setq |$msgAlist| nil)
+   (|sayMSG| '| |))))
+
+(defun spad-syntax-error (&rest byebye)
+  "Print syntax error indication, underline character, scrub line."
+  (declare (special debugmode byebye))
+  (bumperrorcount '|syntax|)
+  (cond ((and (eq debugmode 'yes) (not(consoleinputp in-stream)))
+         (spad-long-error))
+        ((spad-short-error)))
+  (ioclear)
+  (throw 'spad_reader nil))
+
+(defun |spadTrace| (domain options)
+ (let (listOfOperations listOfVariables listOfBreakVars anyifTrue
+       domainId currentEntry currentAlist opStructureList triple
+       sigSlotNumberAlist fn alias tracedModemap dn1 fgg tf)
+   (declare (special |$fromSpadTrace|))
+   (setq |$fromSpadTrace| t)
+   (cond
+    ((null (|isDomainOrPackage| domain))
+      (|userError| "bad argument to trace"))
+    (t
+      (setq listOfOperations
+       (loop for x in (getOption 'ops options) 
+        collect (if (stringp x) (intern x) x)))
+      (when (setq listOfVariables (getOption 'vars options))
+       (setq options (removeOption 'vars options)))
+      (when (setq listOfBreakVars (getOption 'varbreak options))
+       (setq options (removeOption 'varbreak options)))
+      (setq anyifTrue (null listOfOperations))
+      (setq domainId (|opOf| (elt domain 0)))
+      (setq currentEntry (|assoc| domain |$traceNames|))
+      (setq currentAlist (cdr currentEntry))
+      (setq opStructureList
+        (flattenOperationAlist (|getOperationAlistFromLisplib| domainId)))
+;     new form is (<op> <signature> <slotNumber> <condition> <kind>)
+      (setq sigSlotNumberAlist
+       (loop for arg in opStructureList
+         when
+          (and (eq (fifth arg) 'elt)
+               (or anyifTrue (member (car arg) listOfOperations))
+               (integerp (third arg))
+               (|spadTrace,isTraceable|
+                 (setq triple (list (first arg) (second arg) (third arg)))
+                 domain))
+         collect triple))
+      (when listOfVariables
+        (loop for arg in sigSlotNumberAlist do
+          (setq fn (car (elt domain (third arg))))
+          (setq |$letAssoc| 
+            (as-insert (bpiname fn) listOfVariables |$letAssoc|))))
+      (when listOfBreakVars
+        (loop for arg in sigSlotNumberAlist do
+          (setq fn (car (elt domain (third arg))))
+          (setq |$letAssoc|
+            (as-insert (bpiname fn) (list (cons 'break listOfBreakVars))
+              |$letAssoc|))))
+      (loop for pair in sigSlotNumberAlist do
+        (setq alias (|spadTraceAlias| domainId (first pair) (third pair)))
+        (setq tracedModemap
+          (|subTypes| (second pair) (|constructSubst| (elt domain 0))))
+        (setq dn1 (car (elt domain (third pair))))
+        (setq fgg #'|newGoGet|)
+        (setq tf
+         (if (equal dn1 fgg)
+           (|goGetTracerHelper| (elt domain (third pair)) fgg
+               pair alias options tracedModemap)
+           (bpitrace dn1 alias tracedModemap options)))
+        (nconc pair (list listOfVariables (car (elt domain (third pair)))))
+        (|rplac| (car (elt domain (third pair))) tf))
+      (setq sigSlotNumberAlist
+        (loop for x in sigSlotNumberAlist 
+          when (cdddr x)
+          collect x))
+      (when |$reportSpadTrace| 
+        (when |$traceNoisely| (|printDashedLine|))
+        (loop for x in (|orderBySlotNumber| sigSlotNumberAlist) do
+          (|reportSpadTrace| 'tracing x)))
+      (cond
+       (currentEntry
+         (|rplac| (cdr currentEntry) (append sigSlotNumberAlist currentAlist)))
+       (t
+         (setq |$traceNames|
+           (cons (cons domain sigSlotNumberAlist) |$traceNames|))
+         (|spadReply|)))))))
+
+(defun |spadTraceAlias| (domainid op n)
+ (internl domainid (intern "." "boot") op '|,| (princ-to-string n))) 
+
+(defun |spadTrace,g| (x)
+  (if (stringp x) (intern x) x))
+
+(defun |spadTrace,isTraceable| (x domain)
+ (prog (n |functionSlot|)
+  (return
+   (seq
+    (progn
+     (setq n (caddr x))
+     x
+     (seq
+      (if (atom (elt domain n)) (exit nil))
+      (setq |functionSlot| (car (elt domain n)))
+      (if (gensymp |functionSlot|) 
+       (exit (seq (|reportSpadTrace| '|Already Traced| x) (exit nil))))
+      (if (null (bpiname |functionSlot|))
+       (exit
+        (seq
+         (|reportSpadTrace| '|No function for| x)
+         (exit nil))))
+      (exit t))))))) 
+
+(defun |spadUntrace| (domain options)
+ (prog (anyiftrue listofoperations domainid |pair| sigslotnumberalist 
+        op sig n |lv| |bpiPointer| tracename alias |assocPair| 
+        |newSigSlotNumberAlist|)
+ (declare (special |$letAssoc| |$traceNames|))
+  (return
+   (seq
+    (cond
+     ((null (|isDomainOrPackage| domain))
+       (|userError| "bad argument to untrace"))
+     (t
+      (setq anyiftrue (null options))
+      (setq listofoperations (getOption '|ops:| options))
+      (setq domainid (|devaluate| domain))
+      (cond
+       ((null (setq |pair| (|assoc| domain |$traceNames|)))
+         (|sayMSG| 
+          (cons "   No functions in" 
+           (append
+            (|bright| (|prefix2String| domainid))
+            (cons "are now traced." nil)))))
+       (t 
+        (setq sigslotnumberalist (cdr |pair|))
+        (do ((t0 sigslotnumberalist (cdr t0)) (|pair| nil))
+            ((or (atom t0) 
+                 (progn (setq |pair| (car t0)) nil)
+                 (progn
+                  (progn
+                   (setq op (car |pair|))
+                   (setq sig (cadr |pair|))
+                   (setq n (caddr |pair|))
+                   (setq |lv| (cadddr |pair|))
+                   (setq |bpiPointer| (car (cddddr |pair|)))
+                   (setq tracename (cadr (cddddr |pair|)))
+                   (setq alias (caddr (cddddr |pair|)))
+                   |pair|)
+                  nil))
+                 nil)
+         (seq
+          (exit
+           (cond
+            ((or anyiftrue (member op listofoperations))
+              (progn
+                (bpiuntrace tracename alias)
+                (rplac (car (elt domain n)) |bpiPointer|)
+                (rplac (cdddr |pair|) nil)
+                (cond
+                 ((setq |assocPair|
+                     (|assoc| (bpiname |bpiPointer|) |$letAssoc|))
+                   (setq |$letAssoc| (remover |$letAssoc| |assocPair|))
+                   (cond 
+                    ((null |$letAssoc|) (setletprintflag nil))
+                    (t nil)))
+                 (t nil))))))))
+        (setq |newSigSlotNumberAlist|
+         (prog (t1) 
+          (setq t1 nil)
+          (return
+           (do ((t2 sigslotnumberalist (cdr t2)) (x nil))
+               ((or (atom t2) (progn (setq x (car t2)) nil)) (nreverse0 t1))
+             (seq
+              (exit
+               (cond ((cdddr x) (setq t1 (cons x t1))))))))))
+        (cond 
+         (|newSigSlotNumberAlist| 
+          (rplac (cdr |pair|) |newSigSlotNumberAlist|))
+         (t 
+          (setq |$traceNames| (remove domain |$traceNames| :key #'car))
+          (|spadReply|))))))))))) 
+
+(defun |spad2BootCoerce| (x source target)
+ (let (xp)
+  (cond
+   ((null (|isValidType| source))
+    (|throwKeyedMsg| "%1p is not a valid type." (list source)))
+   ((null (|isValidType| target))
+    (|throwKeyedMsg| "%1p is not a valid type." (list target)))
+   ((setq xp (|coerceInteractive| (mkObjWrap x source) target))
+     (|objValUnwrap| xp))
+   (t
+    (|throwKeyedMsgCannotCoerceWithValue| (|wrap| x) source target)))))
+
+(defun |specialChar| (symbol)
+ (let (code)
+ (declare (special |$specialCharacters| |$specialCharacterAlist|))
+  (if (setq code (ifcdr (assq symbol |$specialCharacterAlist|)))
+   (elt |$specialCharacters| code)
+   "?")))
+
+(defun |spleI| (dig)
+ (|spleI1| dig nil))
+
+(defun |spleI1| (dig zro)
+ (let (bb a str l n)
+ (declare (special |$ln| |$sz| |$n|))
+  (setq n |$n|)
+  (setq l |$sz|)
+  ; while $n<l and FUNCALL(dig,($ln.$n)) repeat $n:=$n+1
+  ((lambda ()
+    (loop
+     (cond
+      ((not (and (< |$n| l) (funcall dig (elt |$ln| |$n|))))
+       (return nil))
+      (t
+       (setq |$n| (+ |$n| 1)))))))
+  (cond
+   ((or (equal |$n| l) (not (= (char-code (char |$ln| |$n|)) (char-code #\_))))
+    (cond
+      ((and (equal n |$n|) zro) "0")
+      (t (substring |$ln| n (- |$n| n)))))
+   (t                            ; escaped
+    (setq str (substring |$ln| n (- |$n| n)))
+    (setq |$n| (+ |$n| 1))
+    (setq a (|scanEsc|))
+    (setq bb (|spleI1| dig zro)) ; escape, any number of spaces are ignored
+    (concat str bb)))))
+
+(defun split (test)
+ (let (answer (acnt 0) expected (ecnt 0))
+  (dolist (oneline test)
+   (cond
+    ((startp oneline))
+    ((endedp oneline))
+    ((ignorep oneline)
+      (setq ecnt (+ ecnt 1))
+      (push "ignore" expected))
+    ((resultp oneline)
+      (setq ecnt (+ ecnt 1))
+      (push (subseq oneline 3) expected))
+    (t 
+      (setq acnt (+ acnt 1))
+      (push oneline answer))))
+  (dotimes (i (- acnt ecnt)) (pop answer))
+  (values (nreverse answer) (nreverse expected))))
+
+(defun |splitIntoOptionBlocks| (str)
+ (let (inString block (blockStart 0) (parenCount 0) blockList)
+  (dotimes (i (1- (|#| str)))
+   (cond
+    ((char= (elt str i) #\" ) (setq inString (null inString))) 
+    (t
+     (when (and (char= (elt str i) #\( ) (null inString))
+       (incf parenCount))
+     (when (and (char= (elt str i) #\) ) (null inString))
+       (decf parenCount))
+     (when
+      (and (char= (elt str i) #\) )
+            (null inString)
+            (= parenCount -1))
+        (setq block (|stripSpaces| (subseq str blockStart i)))
+        (setq blockList (cons block blockList))
+        (setq blockStart (1+ i))
+        (setq parenCount 0)))))
+  (setq blockList (cons (|stripSpaces| (subseq str blockStart)) blockList))
+  (nreverse blockList)))
+
+(defun |stackTraceOptionError| (x)
+ (declare (special |$traceErrorStack|))
+ (push x |$traceErrorStack|)
+ nil)
+
+(defun startp (oneline)
+ (let (result)
+ (declare (special *ok*))
+  (when
+   (setq result
+    (and (>= (length oneline) 3) (string= (subseq oneline 0 3) "--S")))
+     (setq *ok* (search "ok" oneline))
+     (setq *all-tests-ran* (lastcount oneline)))
+  result))
+
+(defun |startsNegComment?| ()
+ (let (www)
+ (declare (special |$ln| |$sz| |$n|))
+  (cond
+   ((< |$n| |$sz|)
+    (cond
+     ((= (char-code (char |$ln| |$n|)) (char-code #\-))
+       (setq www (+ |$n| 1))
+       (cond
+        ((not (< www |$sz|)) nil)
+        (t (= (char-code (char |$ln| www)) (char-code #\-)))))
+     (t nil)))
+   (t nil))))
+
+(defun |statisticsInitialization| () 
+ "initialize the garbage collection timer"
+ #+:akcl (system:gbc-time 0)
+ nil)
+
+(defun |streamChop| (n s)
+ (let (d c lyne b a tmp1)
+  (cond
+   ((|StreamNull| s) (list nil nil))
+   ((eql n 0) (list nil s))
+   (t
+     (setq tmp1 (|streamChop| (- n 1) (cdr s)))
+     (setq a (car tmp1)) 
+     (setq b (cadr tmp1))
+     (setq lyne (car s))
+     (setq c (|ncloopPrefix?| ")command" (cdr lyne)))
+     (setq d (cons (car lyne) (cond (c c) (t (cdr lyne)))))
+     (list (cons d a) b)))))
+
+(defun |stringList2String| (x)
+ (let (str)
+ (cond
+  ((null x) "()")
+  (t
+    (setq str
+     (let ((result ""))
+      (concatenate 'string (car x)
+       (dolist (i (cdr x) result)
+        (setq result (concatenate 'string result
+                       (concatenate 'string "," i)))))))
+    (concatenate 'string "(" str ")")))))
+
+(defun |stringMatches?| (pattern subject)
+ (when (integerp (|basicMatch?| pattern subject)) t))
+
+(defun |string2Constructor| (x)
+ (declare (special |$lowerCaseConTb|))
+ (cond
+  ((null (stringp x)) x)
+  (t (or (ifcar (hget |$lowerCaseConTb| (intern (downcase x)))) x))))
+
+(defun |StringToDir| (s)
+  (cond
+    ((string= s "/") '(:absolute))
+    ((string= s "")  nil)
+    (t
+      (let ((lastc (aref s (- (length s) 1))))
+        (if (char= lastc #\/)
+          (pathname-directory (concat s "name.type"))
+          (pathname-directory (concat s "/name.type")) ))) ))
+
+(defun |stripUnionTags| (doms)
+ (loop for dom in doms 
+  collect (if (eq (first dom) '|:|) (third dom) dom)))
+
+(defun strpos (what in start dontcare)
+ (setq what (string what) in (string in))
+ (if dontcare 
+  (progn 
+   (setq dontcare (character dontcare))
+   (search what in :start2 start
+                   :test #'(lambda (x y) (or (eql x dontcare) (eql x y)))))
+  (if (= start 0)
+   (search what in)
+   (search what in :start2 start))))
+
+(defun strposl (table cvec sint item)
+ (setq cvec (string cvec))
+ (if (not item)
+  (position table cvec :test #'(lambda (x y) (position y x)) :start sint)
+  (position table cvec :test-not #'(lambda (x y) (position y x)) :start sint)))
+
+(defun |stupidIsSpadFunction| (fn)
+ (strpos ";" (pname fn) 0 nil)) 
+
+(defun |subMatch| (a b)
+ (|substringMatch| a |scanDict| b))
+
+(defun |substFromAlist| (z substAlist)
+  (prog (pvar replace)
+    (return
+      (SEQ (progn
+             (DO ((G166792 substAlist (cdr G166792))
+                  (G166783 nil))
+                 ((or (atom G166792)
+                      (progn (setq G166783 (car G166792)) nil)
+                      (progn
+                        (progn
+                          (setq pvar (car G166783))
+                          (setq replace (cdr G166783))
+                          G166783)
+                        nil))
+                  nil)
+               (SEQ (EXIT (setq z (subst replace pvar z :test #'equal)))))
+             z)))))
+
+(defun |substringMatch| (l dict i)
+ (let (equl ls s s1 done ll u h)
+  (setq h (char-code (char l i)))
+  (setq u (elt dict h))
+  (setq ll (size l))
+  (setq s1 "")
+  ((lambda (Var4 j)
+    (loop
+     (cond
+      ((or (> j Var4) done) (return nil))
+      (t
+       (setq s (elt u j))
+       (setq ls (size s))
+       (setq done
+        (cond
+         ((< ll (+ ls i)) nil)
+         (t
+          (setq equl t)
+          ((lambda (Var5 k)
+           (loop
+            (cond
+             ((or (> k Var5) (not equl)) (return nil))
+             (t
+              (setq equl (= (char-code (char s k)) 
+                            (char-code (char l (+ k i)))))))
+              (setq k (+ k 1))))
+           (- ls 1) 1)
+          (cond (equl (setq s1 s) t) (t nil)))))))
+     (setq j (+ j 1))))
+   (- (size u) 1) 0)
+  s1))
+
+(defun |subTypes| (|mm| |sublist|)
+ (prog (s)
+  (return
+   (seq
+    (cond
+     ((atom |mm|) 
+       (cond ((setq s (lassoc |mm| |sublist|)) s) (t |mm|)))
+     (t
+      (prog (t0)
+       (setq t0 nil)
+       (return
+        (do ((t1 |mm| (cdr t1)) (|m| nil))
+            ((or (atom t1) (progn (setq |m| (car t1)) nil)) (nreverse0 t0))
+         (seq
+          (exit
+           (setq t0 (cons (|subTypes| |m| |sublist|) t0))))))))))))) 
+
+(defun |summary| (l)
+ (declare (ignore l))
+ (obey (concat "cat " (getenviron "AXIOM") "/doc/spadhelp/summary.help")))
+
+(defun |syGeneralErrorHere| ()
+ (|sySpecificErrorHere| " Improper syntax." nil))
+
+(defun |syIgnoredFromTo| (pos1 pos2)
+ (cond
+  ((equal (|pfGlobalLinePosn| pos1) (|pfGlobalLinePosn| pos2))
+   (|ncSoftError| (|FromTo| pos1 pos2) "Ignored." nil))
+  (t
+   (|ncSoftError| (|From| pos1) "Ignored from here" nil)
+   (|ncSoftError| (|To| pos2) "to here." nil))))
+
+(defun |synonym| (&rest ignore)
+ (declare (ignore ignore))
+ (|synonymSpad2Cmd|))
+
+(defun |synonymsForUserLevel| (arg)
+ (let (cmd nl)
+ (declare (special |$systemCommands| |$UserLevel|))
+  (if (eq |$UserLevel| '|development|)
+   arg
+   (dolist (syn (reverse arg))
+    (setq cmd (string2id-n (cdr syn) 1))
+    (when (|selectOptionLC| cmd (|commandsForUserLevel| |$systemCommands|) nil)
+     (push syn nl))))
+   nl))
+
+(defun |synonymSpad2Cmd| ()
+ (let (line pair)
+ (declare (special |$CommandSynonymAlist|))
+  (setq line (|getSystemCommandLine|))
+  (if (string= line "")
+   (|printSynonyms| nil)
+   (progn
+    (setq pair (|processSynonymLine| line))
+    (if |$CommandSynonymAlist|
+     (putalist |$CommandSynonymAlist| (car pair) (cdr pair))
+     (setq |$CommandSynonymAlist| (cons pair nil)))))
+  (|terminateSystemCommand|)))
+
+(defun |sySpecificErrorAtToken| (tok key args)
+ (|ncSoftError| (|tokPosn| tok) key args))
+
+(defun |sySpecificErrorHere| (key args)
+ (declare (special |$stok|))
+ (|sySpecificErrorAtToken| |$stok| key args))
+
+(defun |systemCommand| (cmd)
+ (let (|$options| |$e| op argl options fun)
+ (declare (special |$options| |$e| |$systemCommands| $syscommands
+                   |$CategoryFrame|))
+  (setq op (caar cmd))
+  (setq argl (cdar cmd))
+  (setq options (cdr cmd))
+  (setq |$options| options)
+  (setq |$e| |$CategoryFrame|)
+  (setq fun (|selectOptionLC| op $syscommands '|commandError|))
+  (if (and argl (eq (elt argl 0) '?) (not (eq fun '|synonym|)))
+   (|helpSpad2Cmd| (cons fun nil))
+   (progn
+    (setq fun
+     (|selectOption| fun (|commandsForUserLevel| |$systemCommands|)
+                        '|commandUserLevelError|))
+    (funcall fun argl)))))
+
+
+(defun |?t| ()
+ (let (llm d suffix l)
+  (declare (special |$traceNames| |$InteractiveFrame| |$mapSubNameAlist|))
+  (if (null |$traceNames|) 
+   (|sayMSG| (|bright| "nothing is traced"))
+   (progn
+    (dolist (x |$traceNames|)
+     (cond
+      ((and (atom x) (null (isgenvar x)))
+       (progn
+        (cond
+         ((setq llm (|get| x '|localModemap| |$InteractiveFrame|))
+           (setq x (list (cadar llm)))))
+        (|sayMSG|
+         `("Function" ,@(|bright| (|rassocSub| x |$mapSubNameAlist|))
+           "traced"))))))
+    (dolist (x |$traceNames|)
+     (cond
+      ((and (consp x) 
+            (progn (setq d (qcar x)) (setq l (qcdr x)) t)
+            (|isDomainOrPackage| d))
+       (progn
+        (setq suffix "package")
+        (|sayBrightly|
+         `("   Functions traced in " ,suffix ,(|devaluate| d) ":"))
+        (dolist (x (|orderBySlotNumber| l))
+          (|reportSpadTrace| '|   | (TAKE 4 x)))
+        (terpri)))))))))
+
+(defun |tabbing| (msg)
+ (let (chPos)
+ (declare (special |$preLength|))
+  (setq chPos 2)
+  (when (|getMsgPrefix?| msg) (setq chPos (- (+ chPos |$preLength|) 1)))
+  (cons '|%t| chPos)))
+
+(defun |templateParts| (template)
+  (prog (i)
+    (return
+      (cond
+        ((null (stringp template)) template)
+        (t (setq i (SEARCH "%l" template))
+         (cond
+           ((null i) template)
+           (t
+            (cons (SUBSEQ template 0 i)
+                  (SUBSEQ template (+ i 2))))))))))
+
+(defun |tangle| (arg)
+ (let (|$InteractiveMode| namestring dot1 dot2 outfile 
+       (chunkname "*") (extension "input"))      
+ (declare (special |$InteractiveMode| |$options|))
+  (setq |$InteractiveMode| t)
+  (setq namestring (symbol-name (car arg)))
+  (setq dot1 (position #\. namestring))
+  (if dot1
+   (setq outfile 
+    (concatenate 'string (subseq namestring 0 dot1) "." extension))
+   (setq outfile 
+    (concatenate 'string (subseq namestring 0) "." extension)))
+  (setq dot2 (position #\. namestring :from-end t))
+  (cond
+   ((and (numberp dot1) (numberp dot2) (< dot1 dot2)))
+   ((and (numberp dot1) (numberp dot2) (= dot1 dot2))
+    (setq namestring (concatenate 'string namestring ".pamphlet")))
+   (t
+    (setq namestring (concatenate 'string namestring ".input.pamphlet"))))
+  (if (probe-file namestring)
+   (progn
+    (tangle namestring chunkname outfile)
+    (format t (concatenate 'string outfile " created from " namestring "~%")))
+   (format t (concatenate 'string namestring " file not found~%")))))
+
+(defun |terminateSystemCommand| nil (tersyscommand)) 
+
+(defun tersyscommand ()
+ (let (chr tok)
+  (fresh-line)
+  (setq chr 'endoflinechr)
+  (setq tok 'end_unit)
+  (|spadThrow|)))
+
+(defun testnumberp (oneline)
+ (when (startp oneline) (subseq oneline 3)))
+
+(defun testpassed (test)
+ (let (answer expected (passed t) mismatchedLines)
+  (declare (special *ok*))
+  (multiple-value-setq (answer expected) (split test))
+  (dotimes (i (length answer))
+   (unless 
+    (or (string= (first expected) "ignore")
+        (string= (first expected) (first answer)))
+    (unless *ok* (setq passed nil))
+    (push (cons (first expected) (first answer)) mismatchedLines))
+   (pop answer)
+   (pop expected))
+  (when mismatchedLines
+   (dolist (pair mismatchedLines)
+    (format t "expected:~s~%     got:~s~%"  (car pair) (cdr pair))))
+  passed))
+
+(defun |thisPosIsEqual| (pos num)
+ (unless (|poNopos?| pos) (equal (|poGlobalLinePosn| pos) num)))
+
+(defun |thisPosIsLess| (pos num)
+ (unless (|poNopos?| pos) (< (|poGlobalLinePosn| pos) num)))
+
+(defun |throwEvalTypeMsg| (msg args)
+ (declare (special |$noEvalTypeMsg|))
+ (if |$noEvalTypeMsg|
+  (|spadThrow|)
+  (|throwKeyedMsg| msg args)))
+
+(defun |toFile?| (msg)
+ (and (not (eq (|getMsgToWhere| msg) '|screenOnly|))))
+
+(defun |tokConstruct| (head token &rest position)
+ (let (result)
+  (setq result (cons head token))
+  (cond
+   ((ifcar position)
+    (cond
+     ((|pfNoPosition?| (car position)) result)
+     (t (|ncPutQ| result '|posn| (car position)) result)))
+   (t result))))
+
+(defun token-stack-show ()
+  (if (= valid-tokens 0) 
+   (format t "~%There are no valid tokens.~%")
+   (format t "~%The number of valid tokens is ~S.~%" valid-tokens))
+  (when (> valid-tokens 0)
+   (format t "The current token is~%")
+   (describe current-token))
+  (when (> valid-tokens 1)
+   (format t "The next token is~%")
+   (describe next-token))
+  (when (token-type prior-token)
+   (format t "The prior token was~%")
+   (describe prior-token)))
+
+(defun |tokPosn| (x)
+ (let (a)
+  (setq a (qassq '|posn| (|ncAlist| x)))
+  (cond
+   (a (cdr a))
+   (t (|pfNoPosition|)))))
+
+(defun |tokTran| (tok)
+ (let (tmp)
+  (if (stringp tok)
+   (cond
+    ((eql (|#| tok) 0) nil)
+    ((setq tmp (|isIntegerString| tok)) tmp)
+    ((char= (elt tok 0) #\" ) (subseq tok 1 (1- (|#| tok))))
+    (t (intern tok)))
+   tok)))
+
+(defun |tokType| (x) (|ncTag| x))
+
+(defun |topLevelInterpEval| (x)
+ (let (|$ProcessInteractiveValue| |$noEvalTypeMsg|)
+ (declare (special |$ProcessInteractiveValue| |$noEvalTypeMsg|))
+  (setq |$ProcessInteractiveValue| t)
+  (setq |$noEvalTypeMsg| t)
+  (|processInteractive| x nil)))
+
+(defun |trace| (l)
+ (traceSpad2Cmd l)) 
+
+(defun trace1 (l options)
+ (prog (|$traceNoisely| varList y domainList optionList traceList
+        opList newOptions oldL a opt constructor lops ops)
+  (declare (special |$traceNoisely| |$options|))
+  (setq |$traceNoisely| nil)
+  (when (|hasOption| options '|nonquietly|) (setq |$traceNoisely| t))
+  (cond
+    ((|hasOption| options '|off|)
+     (cond
+      ((or (setq ops (|hasOption| options '|ops|))
+           (setq lops (|hasOption| options '|local|)))
+        (cond 
+         ((null l) 
+            (|throwKeyedMsg| 
+             (format nil
+              "If you use the )off option for )trace and you also use the ~
+               )local or )ops option, you must specify the name of a ~
+               constructor.  You have not done so.")
+              nil))
+         (t
+           (setq constructor
+             (|unabbrev|
+               (cond
+                ((atom l) l)
+                ((null (cdr l))
+                  (cond
+                   ((atom (car l)) (car l))
+                   (t (car (car l)))))
+                (t nil))))
+           (cond
+            ((null (|isFunctor| constructor))
+                (|throwKeyedMsg|
+                 (format nil
+                  "If you use the )off option for )trace and you also use ~
+                   the )local or )ops option, you must specify the name ~
+                   of a constructor. What you gave after )trace is not a ~
+                   valid constructor name.")
+                  nil))
+            (t
+              (when ops (setq ops (|getTraceOption| ops)) nil)
+              (when lops 
+               (setq lops (cdr (|getTraceOption| lops)))
+               (|untraceDomainLocalOps|))))))); constructor lops
+      ((and (< 1 (length options))
+            (null (|hasOption| options '|nonquietly|)))
+          (|throwKeyedMsg|
+           (format nil
+            "If you use the )off option for )trace then the only other ~
+             options you can use are )nonquietly, )ops and )local.")
+           nil))
+      (t
+        (|untrace| l)
+        (|clearConstructorCaches|))))
+    ((|hasOption| options '|stats|)
+      (cond
+        ((< 1 (length options))
+          (|throwKeyedMsg| "%1 can have no other options."
+            (cons ")trace ... )stats" nil)))
+        (t
+           (setq opt (cdar options))
+           (cond
+            ((null opt)
+              (format t "~v,,,'-:@<~a~>~%" (- $linelength 2)
+                " Traced function execution times ")
+              (|ptimers|)
+              (say " ")
+              (format t "~v,,,'-:@<~a~>~%" (- $linelength 2)
+                " Traced function execution counts ")
+              (|pcounters|))
+            (t
+              (|selectOptionLC| (car opt) '(|reset|) '|optionError|)
+              (|resetSpacers|)
+              (|resetTimers|)
+              (|resetCounters|)
+              (|throwKeyedMsg|
+               (format nil
+                "Trace facility timers, space counts and execution counts ~
+                 have been reset.")
+                nil))))))
+    ((setq a (|hasOption| options '|restore|))
+      (cond
+       ((null (setq oldL |$lastUntraced|)) nil)
+       (t
+         (setq newOptions (|delete| a options))
+         (cond
+           ((null l) (trace1 oldL options))
+           (t
+            (loop for x in l do
+             (cond
+              ((simple-vector-p (car x))
+                (|sayKeyedMsg| "Please retrace the domain %1."
+                  (list (|devaluate| (car x)))))
+              (t
+                (setq options
+                  (append newOptions (lassoc x |$optionAlist|)))
+                (trace1 (list x) options)))))))))
+    ((null l) nil)
+    ((and (consp l) (eq (cdr l) nil) (eq (car l) '?)) (|?t|))
+    (t
+      (setq traceList
+       (or
+        (loop for x in l collect (|transTraceItem| x))
+        (return nil)))
+      (loop for x in traceList do
+        (setq |$optionAlist| (addassoc x options |$optionAlist|)))
+      (setq optionList (getTraceOptions options))
+      (cond
+       ((setq domainList (lassoc '|of| optionList))
+         (cond
+          ((lassoc '|ops| optionList)
+              (|throwKeyedMsg| 
+               ")ops and )of cannot both be options to )trace"
+               nil))
+          (t
+           (setq opList (when traceList (list (cons '|ops| traceList))))
+           (setq varList
+             (when
+               (setq y (lassoc '|vars| optionList)) (list (cons '|vars| y))))
+           (setq optionList (append opList varList))
+           (setq traceList domainList)))))
+      (loop for funName in traceList do
+        (trace2 funName nil optionList))
+       (|saveMapSig| traceList)))))
+
+(defun |traceDomainConstructor| (domainConstructor options)
+ (prog (listOfLocalOps argl domain innerDomainConstructor)
+ (declare (special |$ConstructorCache|))
+  (return
+   (seq
+    (progn
+     (|loadFunctor| domainConstructor)
+     (setq listOfLocalOps (getOption 'local options))
+     (when listOfLocalOps (|traceDomainLocalOps|))
+     (cond 
+      ((and listOfLocalOps (null (getOption 'ops options))) nil)
+      (t
+       (do ((t2 (hget |$ConstructorCache| domainConstructor) (cdr t2))
+            (t3 nil))
+           ((or (atom t2) 
+                (progn (setq t3 (car t2)) nil)
+                (progn 
+                 (progn 
+                  (setq argl (car t3))
+                  (setq domain (cddr t3)) t3)
+                 nil))
+                nil)
+         (seq
+          (exit
+           (|spadTrace| domain options))))
+       (setq |$traceNames| (cons domainConstructor |$traceNames|))
+       (setq innerDomainConstructor
+         (intern (concat domainConstructor ";")))
+       (cond
+        ((fboundp innerDomainConstructor)
+          (setq domainConstructor innerDomainConstructor)))
+       (embed domainConstructor
+        (cons 'lambda
+         (cons 
+          (cons '&rest
+           (cons 'args nil))
+          (cons
+           (cons 'prog
+            (cons
+             (cons 'domain nil)
+             (cons
+              (cons 'setq
+               (cons 'domain
+                (cons
+                 (cons 'apply (cons domainConstructor
+                  (cons 'args nil))) nil)))
+              (cons
+               (cons '|spadTrace|
+                (cons 'domain
+                 (cons (mkq options) nil)))
+               (cons (cons 'return (cons 'domain nil)) nil)))))
+           nil))))))))))) 
+
+(defun |traceDomainLocalOps| ()
+  (|sayMSG| '("  The )local option has been withdrawn"))
+  (|sayMSG| '("  Use )ltr to trace local functions.")))
+
+(defun |tracelet| (fn binDef vars)
+ (let (|$QuickLet| $traceletflag l)
+  (declare (special |$QuickLet| $traceletflag |$letAssoc| 
+            |$traceletFunctions|))
+  (when (and binDef (|stupidIsSpadFunction| binDef))
+    (when (compiled-function-p binDef) (setq fn (bpiname binDef))))
+  (cond ((eq fn '|Undef|) nil)
+  (t
+    (setq vars
+      (cond
+       ((eq vars '|all|) '|all|)
+       ((setq l (lassoc fn |$letAssoc|)) (|union| vars l))
+       (t vars)))
+    (setq |$letAssoc| (cons (cons fn vars) |$letAssoc|))
+    (setq $traceletflag t)
+    (setq |$QuickLet| nil)
+    (when (and (null (member fn |$traceletFunctions|))
+               (null (isGenvar fn))
+               (compiled-function-p (symbol-function fn))
+               (null (|stupidIsSpadFunction| fn))
+               (null (gensymp fn)))
+       (setq |$traceletFunctions| (cons fn |$traceletFunctions|))
+       (|compileBoot| fn)
+       (setq |$traceletFunctions| (|delete| fn |$traceletFunctions|)))))))
+
+(defun |traceOptionError| (opt keys)
+ (if (null keys)
+  (|stackTraceOptionError|
+   (cons 
+    "%1 Axiom does not understand the )trace option %2 which you used."
+    (cons (cons opt nil) nil)))
+  (|commandAmbiguityError| '|trace option| opt keys)))
+
+(defun /tracereply () 
+ (prog (d domainlist |functionList|)
+ (declare (special |$traceNames|))
+  (return
+   (seq
+    (cond
+     ((null |$traceNames|) "   Nothing is traced.")
+     (t
+       (do ((t0 |$traceNames| (cdr t0)) (x nil))
+           ((or (atom t0) (progn (setq x (car t0)) nil)) nil)
+        (seq
+         (exit
+          (cond
+           ((and (consp x) 
+                 (progn (setq d (qcar x)) t)
+                 (|isDomainOrPackage| d))
+              (setq domainlist (cons (|devaluate| d) domainlist)))
+           (t 
+            (setq |functionList| (cons x |functionList|)))))))
+       (append |functionList|
+        (append domainlist (cons '|traced| nil))))))))) 
+
+(defun traceReply ()
+ (let (|$domains| |$packages| |$constructors| d functionList displayList)
+  (declare (special |$domains| |$packages| |$constructors| |$traceNames|
+     $linelength))
+     (setq |$domains| nil)
+     (setq |$packages| nil)
+     (setq |$constructors| nil)
+     (cond
+      ((null |$traceNames|) (|sayMessage| "   Nothing is traced now."))
+      (t
+        (|sayBrightly| " ")
+        (loop for x in |$traceNames| do
+         (cond
+          ((and (consp x) (|isDomainOrPackage| (car x)))
+               (|addTraceItem| (car x)))
+          ((atom x)
+            (cond
+              ((|isFunctor| x) (|addTraceItem| x))
+              ((isgenvar x) (|addTraceItem| (eval x)))
+              (t (setq functionList (cons x functionList)))))
+          (t (|userError| "bad argument to trace"))))))
+     (setq functionList
+          (prog (t1)
+           (setq t1 nil)
+           (return
+            (do ((t2 functionList (cdr t2)) (x nil))
+                ((or (atom t2) (progn (setq x (car t2)) nil)) t1)
+              (seq
+               (exit
+                (cond 
+                 ((null (|isSubForRedundantMapName| x))
+                   (setq t1 
+                    (append t1 
+                     (cons (|rassocSub| x |$mapSubNameAlist|)
+                           (cons " " nil))))))))))))
+     (cond 
+        (functionList 
+         (cond 
+          ((eql 2 (|#| functionList))
+             (|sayMSG| (cons '|   Function traced: | functionList)))
+          ((<= (+ 22 (|sayBrightlyLength| functionList)) $linelength)
+             (|sayMSG| (cons '|   Functions traced: | functionList)))
+          (t 
+             (|sayBrightly| "   Functions traced:")
+             (|sayBrightly|
+              (|flowSegmentedMsg| functionList $linelength 6))))))
+     (when |$domains|
+      (setq displayList
+       (|concat| (|prefix2String| (car |$domains|))
+        (loop for x in (cdr |$domains|) append
+         (|concat| ", " (|prefix2String| x)))))
+      (when (atom displayList) (setq displayList (list displayList)))
+      (|sayBrightly| "   Domains traced: ")
+      (|sayBrightly| (|flowSegmentedMsg| displayList $linelength 6)))
+     (when |$packages|
+      (setq displayList
+       (|concat| (|prefix2String| (car |$packages|))
+        (loop for x in (cdr |$packages|) append
+         (|concat| ", " (|prefix2String| x)))))
+      (when (atom displayList) (setq displayList (list displayList)))
+      (|sayBrightly| "   Packages traced: ")
+      (|sayBrightly| (|flowSegmentedMsg| displayList $linelength 6)))
+     (when |$constructors|
+      (setq displayList
+       (|concat| (|abbreviate| (car |$constructors|))
+        (loop for x in (cdr |$constructors|) append
+         (|concat| ", " (|abbreviate| x)))))
+      (when (atom displayList) (setq displayList (list displayList)))
+      (|sayBrightly| "   Parameterized constructors traced:")
+      (|sayBrightly| (|flowSegmentedMsg| displayList $linelength 6)))))
+
+(defun trace2 (fn modemap options)
+  (trace3 fn modemap options nil))
+
+(defun trace3 (fn modemap options binDef)
+ (labels (
+  (getTraceOption (traceopts opt)
+   (loop for x in traceopts do (when (eq (car x) opt) (return x)))))
+ (let (mathTrace vars break varbreak fnval u tracename letfuncode before
+       after caller fromCondition condition withinCondition g countnam
+       countCondition timernam depthCondition onlys f a v c nl buf
+       tracecode g4 ll newDef oldDef)
+    (declare (special |$traceNames| |$traceDomains| |$mapSubNameAlist|
+              |$mathTraceList| |$traceNoisely| |$fromSpadTrace|
+              |$countList| |$timerList|))
+    (when (member fn |$traceNames| :test #'eq) (|untrace2| fn nil))
+    (setq options (options2uc options))
+    (cond
+     ((and |$traceDomains| (|isFunctor| fn) (atom fn))
+      (|traceDomainConstructor| fn options))
+     (t
+       (setq mathTrace (getTraceOption options 'mathprint))
+       (when
+        (and mathTrace 
+             (null (eql (elt (symbol-name fn) 0) #\$))
+             (null (gensymp fn)))
+         (if (rassoc fn |$mapSubNameAlist|)
+           (setq |$mathTraceList| (cons fn |$mathTraceList|)))
+           (|spadThrowBrightly|
+             (format nil "mathprint not available for ~A" fn)))
+    (setq vars (getTraceOption options 'vars))
+    (when vars
+      (setq vars (unless (cdr vars) 'all (cdr vars)))
+      (|tracelet| fn binDef vars))
+    (setq break (getTraceOption options 'break))
+    (setq varbreak (getTraceOption options 'varbreak))
+    (when varbreak
+      (setq vars (if (null (cdr varbreak)) 'all (cdr varbreak)))
+      (|breaklet| fn binDef vars))
+    (cond
+      ((and (null bindef) (symbolp fn) (null (boundp fn)) (null (fboundp fn)))
+        (cond
+          ((|isUncompiledMap| fn)
+           (|sayBrightly|
+            (format nil
+        "~A must be compiled before it may be traced -- invoke ~A to compile"
+             fn fn)))
+          ((|isInterpOnlyMap| fn)
+           (|sayBrightly|
+            (format nil
+               "~A cannot be traced because it is an interpret-only function"
+               fn)))
+          (t
+            (|sayBrightly| (format nil "~A is not a function" fn)))))
+      ((and (null bindef) (symbolp fn) (boundp fn)
+              (|isDomainOrPackage| (setq fnval (eval fn))))
+        (|spadTrace| fnval options))
+      (t
+        (when (setq u (getTraceOption options 'mask=))
+          (makeprop fn '/transform (elt u 1)))
+        (setq |$traceNames|
+          (if (and options (getTraceOption options 'alias))
+            |$traceNames|
+            (cons fn |$traceNames|)))
+        (setq tracename
+          (cond
+            ((setq u (getTraceOption options 'alias))
+              (princ-to-string (elt u 1)))
+            (t
+              (when (and |$traceNoisely| (null vars)
+                         (null (|isSubForRedundantMapName| fn)))
+                 (|sayBrightly|
+                  (list (|rassocSub| fn |$mapSubNameAlist|) "traced")))
+              (princ-to-string fn))))
+        (cond
+          (|$fromSpadTrace|
+           (when mathTrace (push (intern tracename) |$mathTraceList|))
+           (setq letfuncode (list 'eq nil nil))
+           (setq before
+            (if (setq u (getTraceOption options 'before))
+              (list 'progn (elt u 1) letfuncode)
+              letfuncode)))
+          (t
+           (setq before
+            (when (setq u (getTraceOption options 'before)) (elt u 1)))))
+        (setq after
+          (when (setq u (getTraceOption options 'after)) (elt u 1)))
+        (setq caller (getTraceOption options 'caller))
+        (setq fromCondition
+          (if (setq u (getTraceOption options 'from))
+            (list 'eq '|#9| (list 'quote (elt u 1)))
+            t))
+        (setq condition
+          (if (setq u (getTraceOption options 'when))
+            (elt u 1)
+            t))
+        (setq withinCondition t)
+        (when (setq u (getTraceOption options 'within))
+          (setq g 
+           (intern (strconc (symbol-name fn) "/" (symbol-name (elt u 1)))))
+          (set g 0)
+          (trace2 (elt u 1) nil
+            (list (list 'when nil)
+                  (list 'before (list 'setq g (list '1+ g)))
+                  (list 'after (list 'setq g (list '1- g)))))
+            (setq withinCondition (list '> g 0)))
+        (when (getTraceOption options 'count)
+          (setq countnam (intern (strconc tracename '|,COUNT|))))
+        (setq countCondition
+          (cond
+            ((setq u (getTraceOption options 'count))
+              (setq |$countList| (|adjoinEqual| tracename |$countList|))
+              (cond
+                ((and (cdr u) (integerp (elt u 1)))
+                  (list 'cond (list (list '<= countnam (elt u 1)) t)
+                        (list t (list '|untrace2| (mkq fn) nil) nil)))
+                (t t)))
+            (t t)))
+        (when (getTraceOption options 'timer)
+          (setq timernam (intern (strconc tracename ",TIMER")))
+          (setq |$timerList| (|adjoinEqual| tracename |$timerList|)))
+        (setq depthCondition
+         (if (setq u (getTraceOption options 'depth))
+          (if (and (cdr u) (integerp (elt u 1)))
+            (list '<= '|$monitorFunDepth| (elt u 1))
+            (traceOptionError 'depth))
+          t))
+        (setq condition
+         (mkpf
+           (list condition withinCondition fromCondition
+                 countCondition depthCondition)
+           'and))
+        (setq onlys (getTraceOption options 'only))
+        (setq tracecode
+         (cond
+          ((getTraceOption options 'nt) "000")
+          (t
+            (setq onlys
+              (mapcar #'(lambda (x) (if (integerp x) x (upcase x))) onlys))
+            (setq f (or   (member 'f onlys) (member 'full onlys)))
+            (setq a (or f (member 'a onlys) (member 'args onlys)))
+            (setq v (or f (member 'v onlys) (member 'value onlys)))
+            (setq c (or f (member 'c onlys) (member 'caller onlys)))
+            (setq nl
+              (if a 
+                (list #\9)
+                (loop for x in onlys 
+                      when (and (integerp x) (< 0 x) (< x 9))
+                      collect (char (princ-to-string x) 0))))
+            (cond
+             ((null (or a v c nl))
+               (if caller "119" "019"))
+             (t
+              (setq nl (append nl (list #\0)))
+              (setq buf (|make_spaces| (cond (a 3) (t (+ 2 (length nl))))))
+              (setf (elt buf 0) (if (or c caller) #\1 #\0))
+              (setf (elt buf 1) (if v #\1 #\0))
+              (cond
+                (a
+                 (setf (elt buf 2) #\9)
+                 buf)
+                (t
+                 (loop for x in nl for i from 2 do (setf (elt buf i) x))
+                 buf)))))))
+        (setq g4 (macro-function fn))
+        (when countnam (set countnam 0))
+        (when timernam (set timernam 0))
+        (setq ll
+         (list 'quote
+          (list (intern tracename) (when g4 'macro)
+                tracecode countnam timernam before after
+                condition break modemap (list 'quote t))))
+        (setq newDef
+         (list (if g4 'mlambda 'lambda) (list '&rest 'g6)
+               (list 'monitorX 'g6 fn ll)))
+        (cond
+         (binDef (embededFunction fn newDef binDef))
+         (t
+          (setq oldDef (symbol-function fn))
+          (setq newDef (embededFunction fn new_def old_def))
+          (embed2 fn new_def old_def)
+          fn)))))))))
+
+(defun traceSpad2Cmd (l)
+ (declare (special |$mapSubNameAlist| |$options|))
+  (when (eq (first l) '|Tuple|) (setq l (second l)))
+  (setq |$mapSubNameAlist| (getMapSubNames l))
+  (trace1 (augmentTraceNames l) |$options|)
+  (traceReply))
+
+(defun |translateTrueFalse2YesNo| (x)
+ "Translate t or nil to option values"
+ (cond
+  ((eq x t) '|on|)
+  ((null x) '|off|)
+  (t x))) 
+
+(defun |translateYesNo2TrueFalse| (x)
+ "Translate options values to t or nil"
+ (cond
+  ((|member| x '(|yes| |on|)) t)
+  ((|member| x '(|no| |off|)) nil)
+  (t x))) 
+
+(defun |translateYesNoToTrueFalse| (x)
+  (cond
+    ((eq x '|yes|) t)
+    ((eq x '|no|) nil)
+    (t x)))
+
+(defun |transOnlyOption| (arg)
+ (let (y n)
+  (when (and (consp arg) (progn (setq n (qcar arg)) (setq y (qcdr arg)) t))
+    (cond
+     ((integerp n) (cons n (|transOnlyOption| y)))
+     ((member (setq n (upcase n)) '(v a c)) (cons n (|transOnlyOption| y)))
+     (t 
+        (|stackTraceOptionError|
+         (cons
+          "%1 The )trace option )only does not permit %2 as a legal option."
+          (list (list n))))
+        (|transOnlyOption| y))))))
+
+(defun |transTraceItem| (x)
+ (let (|$doNotAddEmptyModeIfTrue| |value| y)
+  (declare (special |$doNotAddEmptyModeIfTrue|))
+  (setq |$doNotAddEmptyModeIfTrue| t)
+  (cond
+   ((atom x)
+     (cond
+      ((and (setq |value| (|get| x '|value| |$InteractiveFrame|))
+            (member (|objMode| |value|)
+             '((|Mode|) (|Domain|) (|SubDomain| (|Domain|))) :test #'equalp))
+        (setq x (|objVal| |value|))
+        (cond 
+         ((setq y (|domainToGenvar| x)) y)
+         (t x)))
+      ;; case for trace INT
+      ((upper-case-p (elt (princ-to-string x) 0))
+        (setq y (|unabbrev| x))
+        (cond
+         ((|constructor?| y) y)
+         ((and (consp y) (|constructor?| (car y))) (car y))
+         ((setq y (|domainToGenvar| x)) y)
+         (t x)))
+      (t x)))
+   ((simple-vector-p (car x)) (|transTraceItem| (|devaluate| (car x))))
+   ;; case for trace POLY(INT)
+   ((setq y (|domainToGenvar| x)) y)
+   (t (|throwKeyedMsg|
+        "Axiom does not understand the use of %1 here." (list x))))))
+
+(defun trunclist (l tl) 
+ (labels (
+  (trunclist-1 (l tl)
+   (cond
+    ((atom l) l)
+    ((eql (cdr l) tl) (rplacd l nil))
+    ((trunclist-1 (cdr l) tl)))))
+ (let ((u l))
+  (trunclist-1 l tl)
+  u)))
+
+(defun |typeCheckInputAreas| (htPage)
+ (prog (inputAlist stringName t2 t3 t4 t5 t6 t7 spadType t8 filter
+        condList string val errorCondition)
+  (declare (special |$bcParseOnly|))
+    (return
+      (SEQ (progn
+             (setq inputAlist nil)
+             (setq errorCondition nil)
+             (DO ((G167160 (|htpInputAreaAlist| htPage)
+                      (cdr G167160))
+                  (entry nil))
+                 ((or (atom G167160)
+                      (progn (setq entry (car G167160)) nil))
+                  nil)
+               (SEQ (EXIT (cond
+                            ((and (consp entry)
+                                  (progn
+                                    (setq stringName
+                                     (QCAR entry))
+                                    (setq t2 (QCDR entry))
+                                    (and (consp t2)
+                                     (progn
+                                       (setq t3
+                                        (QCDR t2))
+                                       (and (consp t3)
+                                        (progn
+                                          (setq t4
+                                           (QCDR t3))
+                                          (and (consp t4)
+                                           (progn
+                                             (setq t5
+                                              (QCDR t4))
+                                             (and (consp t5)
+                                              (eq (QCAR t5)
+                                               '|string|)
+                                              (progn
+                                                (setq t6
+                                                 (QCDR t5))
+                                                (and (consp t6)
+                                                 (progn
+                                                   (setq t7
+                                                    (QCDR t6))
+                                                   (and
+                                                    (consp t7)
+                                                    (progn
+                                                      (setq
+                                                       spadType
+                                                       (QCAR t7))
+                                                      (setq
+                                                       t8
+                                                       (QCDR t7))
+                                                      (and
+                                                       (consp
+                                                        t8)
+                                                       (eq
+                                                        (QCDR
+                                                         t8)
+                                                        nil)
+                                                       (progn
+                                                         (setq
+                                                          filter
+                                                          (QCAR
+                                                           t8))
+                                                         t))))))))))))))))
+                             (progn
+                               (setq condList
+                                        (LASSOC
+                                         (LASSOC spadType
+                                          (|htpDomainPvarSubstList|
+                                           htPage))
+                                         (|htpDomainVariableAlist|
+                                          htPage)))
+                               (setq string
+                                        (|htpLabelFilteredInputString|
+                                         htPage stringName))
+                               (cond
+                                 (|$bcParseOnly|
+                                     (cond
+                                       ((null
+                                         (|ncParseFromString| string))
+                                        (|htpSetLabelErrorMsg| htPage
+                                         "Syntax Error"
+                                         "Syntax Error"))
+                                       (t nil)))
+                                 (t
+                                  (setq val
+                                           (|checkCondition|
+                                            (|htpLabelInputString|
+                                             htPage stringName)
+                                            string condList))
+                                  (cond
+                                    ((stringp val)
+                                     (setq errorCondition t)
+                                     (|htpSetLabelErrorMsg| htPage
+                                      stringName val))
+                                    (t
+                                     (|htpSetLabelSpadValue| htPage
+                                      stringName val)))))))))))
+             errorCondition)))))
+
+
+(defun |unAbbreviateKeyword| (x)
+ (let (xp)
+ (declare (special |$systemCommands| |$currentLine| $syscommands line))
+  (setq xp (|selectOptionLC| x $syscommands '|commandErrorIfAmbiguous|))
+  (cond
+   ((null xp) 
+    (setq xp '|system|)
+    (setq line (concat ")system " (substring line 1 (1- (|#| line)))))
+    (setq |$currentLine| line)))
+  (|selectOption| xp (|commandsForUserLevel| |$systemCommands|)
+     '|commandUserLevelError|)))
+
+(defun |undo| (l)
+ (let (tmp1 key s undoWhen n)
+ (declare (special |$options| |$InteractiveFrame|))
+  (setq undoWhen '|after|)
+  (when
+    (and (consp |$options|)
+         (eq (qcdr |$options|) nil)
+         (progn
+          (setq tmp1 (qcar |$options|))
+          (and (consp tmp1)
+               (eq (qcdr tmp1) nil)
+               (progn (setq key (qcar tmp1)) t)))
+     (cond
+      ((|stringPrefix?| (setq s (pname key)) "redo")
+        (setq |$options| nil) 
+        (|read| '(|redo.input|)))
+      ((null (|stringPrefix?| s "before"))
+        (|userError| "only option to undo is \")redo\""))
+      (t 
+        (setq undoWhen '|before|)))))
+  (if (null l)
+    (setq n (- 1))
+    (setq n (car l)))
+  (when (identp n)
+    (setq n (parse-integer (pname n)))
+    (unless (integerp n)
+      (|userError| "undo argument must be an integer")))
+  (setq |$InteractiveFrame| (|undoSteps| (|undoCount| n) undoWhen))
+  nil))
+
+(defun |undoChanges| (li)
+ (let (x)
+ (declare (special |$HistList| |$InteractiveFrame|))
+  (when (null (boot-equal (cdr li) |$HistList|)) (|undoChanges| (cdr li)))
+  (dolist (p1 (car li))
+    (setq x (car p1))
+    (dolist (p2 (cdr p1))
+     (|putHist| x (car p2) (cdr p2) |$InteractiveFrame|)))))
+
+(defun |undoCount| (n)
+ "Undo previous n commands"
+ (prog (m)
+ (declare (special |$IOindex|))
+  (return
+   (progn
+    (setq m 
+     (cond 
+       ((>= n 0) (- (- |$IOindex| n) 1))
+       (t (- n))))
+    (cond
+     ((>= m |$IOindex|)
+       (|userError| 
+        (concat "Magnitude of undo argument must be less than step number ("
+           (princ-to-string |$IOindex|) ").")))
+     (t m)))))) 
+
+(defun |undoFromFile| (n)
+ (let (varl prop vec x p p1 val)
+ (declare (special |$InteractiveFrame| |$HiFiAccess|))
+  (do ((tmp0 (caar |$InteractiveFrame|) (cdr tmp0)) (tmp1 nil))
+      ((or (atom tmp0) 
+           (progn (setq tmp1 (car tmp0)) nil) 
+           (progn
+             (progn
+              (setq x (car tmp1)) 
+              (setq varl (cdr tmp1))
+              tmp1)
+              nil))
+            nil)
+   (seq
+    (exit
+     (do ((tmp2 varl (cdr tmp2)) (p nil))
+         ((or (atom tmp2) (progn (setq p (car tmp2)) nil)) nil)
+      (seq
+       (exit
+        (progn
+         (setq prop (car p))
+         (setq val (cdr p))
+         (when val 
+           (progn
+             (when (null (eq x '%))
+               (|recordOldValue| x prop val))
+             (when |$HiFiAccess| 
+               (|recordNewValue| x prop val))
+             (rplacd p nil))))))))))
+  (do ((i 1 (1+ i)))
+      ((> i n) nil)
+    (setq vec 
+      (unwind-protect (cdr (|readHiFi| i)) (|disableHist|)))
+    (do ((tmp3 vec (cdr tmp3)) (p1 nil))
+        ((or (atom tmp3) (progn (setq p1 (car tmp3)) nil)) nil)
+     (setq x (car p1))
+     (do ((tmp4 (cdr p1) (cdr tmp4)) (p2 nil))
+         ((or (atom tmp4) (progn (setq p2 (car tmp4)) nil)) nil)
+      (setq |$InteractiveFrame| 
+         (|putHist| x (car p2) (CDR p2) |$InteractiveFrame|)))))
+  (setq val
+   (and 
+    (setq p (assq '% vec))
+    (setq p1 (assq '|value| (cdr p)))
+    (cdr p1)))
+  (setq |$InteractiveFrame| (|putHist| '% '|value| val |$InteractiveFrame|))
+  (|updateHist|)))
+
+(defun |undoInCore| (n)
+ (let (li vec p p1 val)
+ (declare (special |$HistList| |$HistListLen| |$IOindex| |$HiFiAccess|
+    |$InteractiveFrame|))
+  (setq li |$HistList|) 
+  (do ((i n (+ i 1)))
+      ((> i |$HistListLen|) nil)
+   (setq li (cdr li)))
+  (|undoChanges| li)
+  (setq n (- (- |$IOindex| n) 1))
+  (and
+    (> n 0)
+    (if |$HiFiAccess|
+     (progn
+       (setq vec (cdr (unwind-protect (|readHiFi| n) (|disableHist|))))
+       (setq val 
+        (and 
+         (setq p (assq '% vec))
+         (setq p1 (assq '|value| (cdr p)))
+         (cdr p1))))
+      (|sayKeyedMsg| 
+       "There is no history file, so value of step %1 is undefined."
+       (cons n nil)))) ; no history file
+  (setq |$InteractiveFrame| (|putHist| '% '|value| val |$InteractiveFrame|))
+  (|updateHist|)))
+
+(defun |undoLocalModemapHack| (changeList)
+ (prog (name value)
+  (return
+   (seq
+    (prog (tmp0)
+     (setq tmp0 nil)
+     (return
+      (do ((tmp1 changeList (cdr tmp1)) (pair nil))
+          ((or (atom tmp1) 
+               (progn (setq pair (car tmp1)) nil)
+               (progn
+                (progn
+                 (setq name (car pair))
+                 (setq value (cdr pair))
+                 pair)
+                nil))
+              (nreverse0 tmp0))
+       (seq
+        (exit
+         (cond
+          ((cond
+             ((eq name '|localModemap|) (cons name nil))
+             (t pair))
+           (setq tmp0 
+            (cons 
+             (cond 
+              ((eq name '|localModemap|) (cons name nil))
+              (t pair)) tmp0))))))))))))) 
+
+(defun |undoSingleStep| (changes env)
+ (prog (name changeList pairlist proplist prop value node)
+  (return
+   (seq
+    (progn
+     (do ((tmp0 changes (cdr tmp0)) (|change| nil))
+         ((or (atom tmp0) 
+              (progn (setq |change| (car tmp0)) nil)
+              (progn 
+               (progn 
+                (setq name (car |change|))
+                (setq changeList (cdr |change|))
+                |change|)
+               nil))
+             nil)
+      (seq
+       (exit
+        (progn
+         (when (lassoc '|localModemap| changeList)
+           (setq changeList (|undoLocalModemapHack| changeList)))
+         (cond
+          ((setq pairlist (assq name env))
+            (cond
+             ((setq proplist (cdr pairlist))
+               (do ((tmp1 changeList (cdr tmp1)) (pair nil))
+                   ((or (atom tmp1) 
+                        (progn (setq pair (car tmp1)) nil)
+                        (progn
+                         (progn
+                          (setq prop (car pair))
+                          (setq value (cdr pair))
+                          pair)
+                          nil))
+                        nil)
+                (seq
+                 (exit
+                  (cond
+                   ((setq node (assq prop proplist))
+                     (rplacd node value))
+                   (t
+                     (rplacd proplist
+                       (cons (car proplist) (cdr proplist)))
+                     (rplaca proplist pair)))))))
+             (t (rplacd pairlist changeList))))
+          (t 
+            (setq env (cons |change| env))))))))
+     env))))) 
+
+(defun |undoSteps| (m beforeOrAfter)
+ (let (tmp1 tmp2 systemDelta lastTailSeen env)
+ (declare (special |$IOindex| |$InteractiveFrame| |$frameRecord|))
+  (|writeInputLines| '|redo| (- |$IOindex| m))
+  (recordFrame 'normal)
+  (setq env (copy (caar |$InteractiveFrame|)))
+  (do ((i 0 (1+ i)) (framelist |$frameRecord| (cdr framelist)))
+      ((or (> i m) (atom framelist)) nil)
+    (setq env (|undoSingleStep| (CAR framelist) env))
+    (if (and (consp framelist) 
+            (progn
+             (setq tmp1 (qcdr framelist))
+             (and (consp tmp1) 
+                  (progn
+                   (setq tmp2 (qcar tmp1))
+                   (and (consp tmp2)
+                        (eq (qcar tmp2) '|systemCommand|)
+                        (progn 
+                         (setq systemDelta (qcdr tmp2))
+                         t))))))
+      (progn
+        (setq framelist (cdr framelist))
+        (setq env (|undoSingleStep| systemDelta env)))
+      (setq lastTailSeen framelist)))
+  (cond
+   ((eq beforeOrAfter '|before|)
+     (setq env (|undoSingleStep| (car (cdr lastTailSeen)) env))))
+  (setq |$frameRecord| (cdr |$frameRecord|))
+  (setq |$InteractiveFrame| (list (list env)))))
+
+(defun |unescapeStringsInForm| (form)
+ (let (str)
+ (declare (special |$funnyBacks| |$funnyQuote|))
+  (cond
+   ((stringp form)
+    (setq str (nsubstitute #\" |$funnyQuote| form))
+    (nsubstitute #\\ |$funnyBacks| str))
+   ((consp form) 
+    (|unescapeStringsInForm| (car form))
+    (|unescapeStringsInForm| (cdr form))
+    form)
+   (t form))))
+
+(defun |unifyStruct| (s1 s2 sl)
+ (declare (special |$domPvar| |$hope| |$Coerce| |$Subst|))
+  (cond
+   ((equal s1 s2) sl)
+   (t
+    (when (and (consp s1) (eq (qcar s1) '|:|)
+               (consp (qcdr s1)) (consp (qcddr s1)) (eq (qcdddr s1) nil))
+       (setq s1 (qcadr s1)))
+    (when (and (consp s2) (eq (qcar s2) '|:|)
+               (consp (qcdr s2)) (consp (qcddr s2)) (eq (qcdddr s2) nil))
+       (setq s2 (qcadr s2)))
+    (when (and (null (atom s1)) (eq (car s1) '|#|))
+       (setq s1 (length (cadr s1))))
+    (when (and (null (atom s2)) (eq (car s2) '|#|))
+       (setq s2 (length (cadr s2))))
+    (cond
+      ((equal s1 s2) sl)
+      ((|isPatternVar| s1) (|unifyStructVar| s1 s2 sl))
+      ((|isPatternVar| s2) (|unifyStructVar| s2 s1 sl))
+      ((or (atom s1) (atom s2)) '|failed|)
+      (t
+       (loop until (or (null s1) (null s2) (eq sl '|failed|))
+        do
+         (setq sl (|unifyStruct| (car s1) (car s2) sl))
+         (setq s1 (cdr s1))
+         (setq s2 (cdr s2)))
+       (if (or s1 s2) '|failed| sl))))))
+
+(defun |unifyStructVar| (v ss sl)
+ (let (ps s1 s0 s ns0 ns1 s3)
+  (declare (special |$domPvar| |$hope| |$Coerce| |$Subst|))
+   (cond
+    ((contained v ss) '|failed|)
+    (t
+     (setq ps (lassoc ss sl))
+     (setq s1 (if ps ps ss))
+     (cond
+      ((or (setq s0 (lassoc v sl)) (setq s0 (lassoc v |$Subst|)))
+        (setq s (|unifyStruct| s0 s1 (copy sl)))
+        (cond
+          ((eq s '|failed|)
+           (cond
+            ((and |$Coerce| (null (atom s0)) (|constructor?| (car s0)))
+              (cond
+               ((or (|containsVars| s0) (|containsVars| s1))
+                 (setq ns0 (|subCopy| s0 sl))
+                 (setq ns1 (|subCopy| s1 sl))
+                 (cond
+                   ((or (|containsVars| ns0) (|containsVars| ns1))
+                     (setq |$hope| t)
+                     '|failed|)
+                   (t
+                    (cond
+                     ((|canCoerce| ns0 ns1) (setq s3 s1))
+                     ((|canCoerce| ns1 ns0) (setq s3 s0))
+                     (t (setq s3 nil)))
+                    (cond
+                     (s3
+                      (cond
+                        ((not (equal s3 s0))
+                          (setq sl (|augmentSub| v s3 sl))))
+                      (cond
+                       ((and (not (equal s3 s1)) (|isPatternVar| ss))
+                          (setq sl (|augmentSub| ss s3 sl))))
+                                sl)
+                      (t '|failed|)))))
+               (|$domPvar|
+                (setq s3 (|resolveTT| s0 s1))
+                (cond
+                 (s3
+                  (cond
+                   ((not (equal s3 s0))
+                     (setq sl (|augmentSub| v s3 sl))))
+                  (cond
+                   ((and (not (equal s3 s1)) (|isPatternVar| ss))
+                     (setq sl (|augmentSub| ss s3 sl))))
+                  sl)
+                 (t '|failed|)))
+               (t '|failed|)))
+            (t '|failed|)))
+          (t (|augmentSub| v ss s))))
+      (t (|augmentSub| v ss sl)))))))
+
+(defun |unparseInputForm| (u)
+ (let (|$formatSigAsTeX| |$InteractiveMode|)
+ (declare (special |$formatSigAsTeX| |$InteractiveMode|))
+  (setq |$formatSigAsTeX| 1)
+  (setq |$InteractiveMode| nil)
+  (|form2StringLocal| u)))
+
+(defun |untrace| (arg)
+ (let (untracelist)
+ (declare (special |$lastUntraced| |$traceNames| |$mapSubNameAlist|))
+  (if arg
+   (setq |$lastUntraced| arg)
+   (setq |$lastUntraced| (copy |$traceNames|)))
+  (setq untracelist
+   (do ((t1 arg (cdr t1)) (x nil) (t0 nil))
+       ((or (atom t1) (progn (setq x (car t1)) nil))
+      (nreverse0 t0))
+     (push (|transTraceItem| x) t0)))
+  (/untrace-0
+   (do ((t3 untracelist (cdr t3)) (|funName| nil) (t2 nil))
+       ((or (atom t3) (progn (setq |funName| (car t3)) nil))
+     (nreverse0 t2))
+    (push (|lassocSub| |funName| |$mapSubNameAlist|) t2)))
+  (|removeTracedMapSigs| untracelist))) 
+
+(defun /untrace-0 (l)
+ (let (optionl options fnl)
+  (cond
+   ((member '? l :test #'eq) (format t "Use )help trace~%"))
+   (t
+    (setq optionl (/options l))
+    (setq fnl (trunclist l optionl))
+    (setq options (if optionl (car optionl)))
+    (/untrace-1 fnl options)))))
+
+(defun /untrace-1 (l options)
+ (declare (special |$traceNames|))
+ (cond
+  ((not l)
+    (unless (atom |$traceNames|)
+     (mapcar #'(lambda (u) (/untrace-2 (/untrace-reduce u) options))
+       (append |$traceNames| nil))))
+  ((mapcar #'(lambda (x) (/untrace-2 x options)) l)))
+ (/tracereply))
+
+(defun /untrace-2 (x options)
+ (declare (special |$traceNoisely| |$mapSubNameAlist| |$mathTraceList|
+           |$timerList| |$traceNames|))
+ (let (u y)
+  (cond
+   ((and (|isFunctor| X) (atom x))
+     (|untraceDomainConstructor| X))
+   ((or (|isDomainOrPackage| (setq u x))
+        (and (symbolp X) (boundp X) (|isDomain| (setq u (eval x)))))
+     (|spadUntrace| u options))
+   ((eqcar options 'alias)
+     (when |$traceNoisely|
+       (|sayBrightly| (list (cadr options) '**untraced)))
+     (setq |$timerList|
+       (remove (princ-to-string (cadr options)) |$timerList| :test 'equal))
+     (setq |$countList|
+       (remove (princ-to-string (cadr options)) |$countList| :test 'equal))
+     (setq |$mathTraceList|
+       (remove (cadr options) |$mathTraceList| :test 'equal))
+     (unembed x))
+   ((and (not (member x |$traceNames|)) (not (|isSubForRedundantMapName| X)))
+     (|sayBrightly| (list (|rassocSub| X |$mapSubNameAlist|) "not traced")))
+   (t
+     (setq |$traceNames| (remove x |$traceNames| :test 'equal))
+     (setq |$mathTraceList|
+       (remove (if (stringp x) (intern x) x) |$mathTraceList|))
+     (setq |$letAssoc| (remove x |$letAssoc| :key #'car))
+     (setq y (if (isGenvar x) (|devaluate| (eval x)) x))
+     (setq |$timerList| (remove (princ-to-string y) |$timerList| :test 'equal))
+     (set (intern (concat y ",TIMER")) 0)
+     (setq |$countList| (remove (princ-to-string y) |$countList| :test 'equal))
+     (set (intern (concat y ",COUNT")) 0)
+     (when (and |$traceNoisely| (not (|isSubForRedundantMapName| y)))
+        (|sayBrightly| (list (|rassocSub| Y |$mapSubNameAlist|) "untraced")))
+     (unembed x)))))
+ 
+(defun |untraceDomainConstructor| (domainConstructor)
+ (prog (innerDomainConstructor)
+ (declare (special |$traceNames|))
+  (return
+   (seq
+    (progn
+     (setq |$traceNames|
+      (prog (t0)
+       (setq t0 nil)
+       (return
+        (do ((t1 |$traceNames| (cdr t1)) (df nil))
+            ((or (atom t1) (progn (setq df (car t1)) nil)) (nreverse0 t0))
+         (seq
+          (exit
+           (cond ((|untraceDomainConstructor,keepTraced?|
+                    df domainConstructor)
+             (setq t0 (cons df t0))))))))))
+     (setq innerDomainConstructor
+      (intern (concat domainConstructor ";")))
+     (cond
+      ((fboundp innerDomainConstructor) (unembed innerDomainConstructor))
+      (t (unembed domainConstructor)))
+     (setq |$traceNames| (|delete| domainConstructor |$traceNames|))))))) 
+
+(defun |untraceDomainConstructor,keepTraced?| (df domainConstructor)
+ (prog (dc)
+  (return
+   (seq
+    (if (and 
+         (and
+          (and (consp df) (progn (setq dc (qcar df)) t))
+           (|isDomainOrPackage| dc))
+         (boot-equal (ifcar (|devaluate| dc)) domainConstructor))
+     (exit (seq (|/UNTRACE,0| (cons dc nil)) (exit nil))))
+    (exit t))))) 
+
+(defun |untraceDomainLocalOps| ()
+  (|sayMSG| '("  The )local option has been withdrawn"))
+  (|sayMSG| '("  Use )ltr to trace local functions.")))
+
+(defun |untraceMapSubNames| (names)
+ (let (|$mapSubNameAlist| subs)
+ (declare (special |$mapSubNameAlist| |$lastUntraced|))
+  (if
+   (null (setq |$mapSubNameAlist| (|getPreviousMapSubNames| names)))
+   nil
+   (dolist (name (setq subs (assocright |$mapSubNameAlist|)))
+     (when (member name |$traceNames|)
+       (|/UNTRACE,2| name nil)
+       (setq |$lastUntraced| (setdifference |$lastUntraced| subs)))))))
+
+(defun |unwritable?| (ob)
+ (cond
+  ((or (consp ob) (simple-vector-p ob)) nil)
+  ((or (compiled-function-p ob) (hash-table-p ob)) t)
+  ((or (placep ob) (readtablep ob)) t)
+  ((floatp ob) t)
+  (t nil))) 
+
+(defun upcase (l)
+  (cond ((stringp l) (string-upcase l))
+        ((identp l) (intern (string-upcase (symbol-name l))))
+        ((characterp l) (char-upcase l))
+        ((atom l) l)
+        (t (mapcar #'upcase l))))
+
+(defun |updateCurrentInterpreterFrame| ()
+  "Update the Current Interpreter Frame"
+  (declare (special |$interpreterFrameRing|))
+  (rplaca |$interpreterFrameRing| (|createCurrentInterpreterFrame|))
+  (|updateFromCurrentInterpreterFrame|))
+
+(defun |updateDatabase| (fname cname systemdirp)
+ (declare (ignore fname))
+ (declare (special |$forceDatabaseUpdate|))
+  (when |$forceDatabaseUpdate|
+   (when (|constructor?| cname)
+    (|clearClams|)
+    (|clearAllSlams| nil)
+    (when (getl cname 'loaded) (|clearConstructorCaches|)))
+   (when (or |$forceDatabaseUpdate| (null systemdirp))
+    (|clearClams|)
+    (|clearAllSlams| nil))))
+
+(defun |updateFromCurrentInterpreterFrame| ()
+ "Update from the Current Frame"
+ (let (tmp1)
+  (declare (special |$interpreterFrameRing| |$interpreterFrameName|
+    |$InteractiveFrame| |$IOindex| |$HiFiAccess| |$HistList| |$HistListLen|
+    |$HistListAct| |$HistRecord| |$internalHistoryTable| |$localExposureData|
+    |$frameMessages|))
+  (setq tmp1 (first |$interpreterFrameRing|))
+  (setq |$interpreterFrameName| (frameName tmp1))
+  (setq |$InteractiveFrame|     (frameInteractive tmp1))
+  (setq |$IOindex|              (frameIOIndex tmp1))
+  (setq |$HiFiAccess|           (frameHiFiAccess tmp1))
+  (setq |$HistList|             (frameHistList tmp1))
+  (setq |$HistListLen|          (frameHistListLen tmp1))
+  (setq |$HistListAct|          (frameHistListAct tmp1))
+  (setq |$HistRecord|           (frameHistRecord tmp1))
+  (setq |$internalHistoryTable| (frameHistoryTable tmp1))
+  (setq |$localExposureData|    (frameExposureData tmp1))
+  (when |$frameMessages| 
+   (format t "   Current interpreter frame is called ~a" 
+     |$interpreterFrameName|))))
+
+(defun |updateHist| () 
+ (declare (special |$IOindex| |$HiFiAccess| |$HistRecord| |$mkTestInputStack|
+   |$currentLine|))
+ (when |$IOindex|
+   (|startTimingProcess| '|history|)
+   (|updateInCoreHist|)
+   (when |$HiFiAccess| 
+      (unwind-protect (|writeHiFi|) (|disableHist|))
+      (setq |$HistRecord| nil))
+   (incf |$IOindex|)
+   (|updateCurrentInterpreterFrame|)
+   (setq |$mkTestInputStack| nil)
+   (setq |$currentLine| nil)
+   (|stopTimingProcess| '|history|)))
+
+(defun |updateInCoreHist| ()
+ (declare (special |$HistList| |$HistListLen| |$HistListAct|))
+  (setq |$HistList| (cdr |$HistList|))
+  (rplaca |$HistList| nil) 
+  (when (> |$HistListLen| |$HistListAct|) 
+    (setq |$HistListAct| (1+ |$HistListAct|))))
+
+(defun |updateSourceFiles| (arg)
+ (declare (special |$sourceFiles|))
+  (setq arg (|pathname| arg))
+  (setq arg (|pathname| (list (|pathnameName| arg) (|pathnameType| arg) "*")))
+  (when (and (makeInputFilename arg)
+             (|member| (|pathnameTypeId| arg) '(boot lisp meta)))
+   (setq |$sourceFiles| (|insert| arg |$sourceFiles|)))
+  arg)
+
+(defun |userLevelErrorMessage| (kind x u)
+ (declare (special |$UserLevel|))
+ (if u
+  (|commandAmbiguityError| kind x u)
+  (progn
+   (|sayKeyedMsg| 
+    "Your %1 is ambiguous. The following are abbreviated by %2 :"
+     (list |$UserLevel| kind))
+   (|terminateSystemCommand|))))
+
+
+(defun |validateOutputDirectory| (x)
+ "Validate the output directory"
+ (let ((dirname (|pathname| (car x))))
+  (when (and (pathname-directory dirname) (null (probe-file dirname)))
+   dirname)))
+
+(defun |valueArgsEqual?| (t1 t2)
+ (let (coSig constrSig tl1 tl2 newVal done value trip)
+  (setq coSig (cdr (getdatabase (car t1) 'cosig)))
+  (setq constrSig (cdr (|getConstructorSignature| (car t1))))
+  (setq tl1 (|replaceSharps| constrSig t1))
+  (setq tl2 (|replaceSharps| constrSig t2))
+  (cond
+   ((null (member nil coSig)) t)
+   (t 
+    (setq done nil)
+    (setq value t)
+    (loop for a1 in (cdr t1) for a2 in (cdr t2) for cs in coSig 
+          for m1 in tl1 for m2 in tl2 while (not done) do
+          (cond
+           ((null cs)
+             (setq trip (mkObjWrap a1 m1))
+             (setq newVal (|coerceInt| trip m2))
+             (cond
+              ((null newVal)
+                (setq done t)
+                (setq value nil))
+              ((null (|algEqual| a2 (|objValUnwrap| newVal) m2))
+                (setq done t)
+                (setq value nil))))))
+     value))))
+
+(defun varp (testItem)
+ (cond
+  ((identp testItem) testItem)
+  ((and (consp testItem)
+        (or (eq (car testItem) 'fluid) (eq (car testItem) 'lex))
+        (consp (cdr testItem)) (identp (cadr testItem)))
+    testItem)
+  (t nil)))
+
+(defun |voidValue| () "()") 
+
+
+(defun |what| (l)
+ (|whatSpad2Cmd| l)) 
+
+(defun |whatCommands| (patterns)
+ (let (label ell)
+ (declare (special |$systemCommands| $linelength |$UserLevel|))
+  (setq label 
+   (concat '|System Commands for User Level: | 
+     (princ-to-string |$UserLevel|)))
+  (format t "~v,,,'-:@< ~a ~>~%" (- $linelength 2) label)
+  (setq ell
+   (|filterListOfStrings| patterns
+    (mapcar #'princ-to-string (|commandsForUserLevel| |$systemCommands|))))
+  (when patterns
+   (if ell
+     (|sayMessage|
+      `("System commands at this level matching patterns:" |%l| "   "
+         ,@(append (|blankList| patterns) (list nil))))
+     (|sayMessage|
+      `("No system commands at this level matching patterns:" |%l| "   "
+        ,@(append (|blankList| patterns) (list nil))))))
+  (when ell
+   (|sayAsManyPerLineAsPossible| ell)
+   (say " "))
+  (unless patterns
+   (|sayKeyedMsg|
+    (format nil
+     "For more information about individual commands, use the )help ~
+      system command followed by the command name or the command name ~
+      followed by a question mark. Some commands (such as )lisp ) may ~
+      require the )help lisp format.  For example, issue )help help or ~
+      )help %x1 ? to find out more about the help command itself.")
+     nil))))
+
+(defun |whatConstructors| (constrType)
+ (prog nil
+  (return 
+   (seq
+    (msort
+     (prog (t0)
+      (setq t0 nil)
+      (return
+       (do ((t1 (|allConstructors|) (cdr t1)) (|con| nil))
+           ((or (atom t1) (progn (setq |con| (car t1)) nil)) (nreverse0 t0))
+        (seq
+         (exit
+          (cond
+           ((equal (getdatabase |con| 'constructorkind) constrType)
+             (setq t0
+              (cons
+               (cons
+                (getdatabase |con| 'abbreviation)
+                (string |con|))
+               t0)))))))))))))) 
+
+(defun |whatSpad2Cmd| (arg)
+ (prog (|$e| |key0| key args)
+  (declare (special |$e| |$whatOptions|))
+  (return
+   (seq
+    (progn
+     (setq |$e| |$EmptyEnvironment|)
+     (cond
+      ((null arg) (|reportWhatOptions|))
+      (t
+        (setq |key0| (car arg))
+        (setq args (cdr arg))
+        (setq key (|selectOptionLC| |key0| |$whatOptions| nil))
+        (cond
+         ((null key)
+          (|sayKeyedMsg|
+           (format nil
+            "Your argument is not valid for the )what system command. %l %l ~
+             Use the )show system command to display the operations for a ~
+             constructor. Use the )display operations system command to see ~
+             information about an operation. These may be abbreviated to ~
+             )sh and )d op, respectively.")
+            nil))
+         (t
+          (setq args
+           (prog (t0)
+            (setq t0 nil)
+            (return
+              (do ((t1 args (cdr t1)) (p nil))
+                  ((or (atom t1)
+                       (progn (setq p (car t1)) nil))
+                 (nreverse0 t0))
+               (seq
+                (exit
+                 (setq t0 (cons (|whatSpad2Cmd,fixpat| p) t0))))))))
+          (seq
+           (cond
+            ((eq key '|things|)
+              (do ((t2 |$whatOptions| (cdr t2)) (opt nil))
+                  ((or (atom t2) (progn (setq opt (CAR t2)) nil)) nil)
+               (seq
+                (exit
+                 (cond
+                  ((null (member opt '(|things|)))
+                    (exit (|whatSpad2Cmd| (cons opt args)))))))))
+            ((eq key '|categories|)
+              (|filterAndFormatConstructors| '|category| "Categories" args))
+            ((eq key '|commands|) (|whatCommands| args))
+            ((eq key '|domains|)
+              (|filterAndFormatConstructors| '|domain| "Domains" args))
+            ((eq key '|operations|)
+               (|apropos| args))
+            ((eq key '|packages|)
+              (|filterAndFormatConstructors| '|package| "Packages" args))
+            (t
+             (cond ((eq key '|synonyms|)
+                      (|printSynonyms| args))))))))))))))) 
+
+(defun |whatSpad2Cmd,fixpat| (x)
+ (let (xp)
+  (if (and (consp x) (progn (setq xp (qcar x)) t))
+   (downcase xp)
+   (downcase x))))
+
+(defun |whichCat| (attr)
+ (let ((found '|catless|) done)
+ (declare (special |$attrCats|))
+  (loop for cat in |$attrCats| do
+    (when (|ListMember?| attr (eval cat))
+     (setq found cat)
+     (setq done t))
+   until done)
+  found))
+
+(defun |workfiles| (l)
+ (|workfilesSpad2Cmd| l)) 
+
+(defun |workfilesSpad2Cmd| (args)
+ (let (deleteflag type flist type1 fl)
+  (declare (special |$options| |$sourceFiles| $linelength))
+  (cond 
+   (args
+    (|throwKeyedMsg|
+     (format nil
+      "Arguments are not allowed for the )workfiles system command. ~
+       The )boot, )lisp, )meta and )delete options may be used with this ~
+       command, however. Issue )help workfiles for more information.")  
+     nil))
+   (t
+     (setq deleteflag nil)
+     (do ((t0 |$options| (cdr t0)) (t1 nil))
+         ((or (atom t0)
+              (progn (setq t1 (car t0)) nil)
+              (progn (progn (setq type (car t1)) t1) nil))
+           nil)
+       (setq type1
+          (|selectOptionLC| type '(|boot| |lisp| |meta| |delete|) nil))
+       (cond
+        ((null type1) 
+         (|throwKeyedMsg|
+          (format nil 
+           "%1 is not an allowable option for the )workfiles system command. ~
+            The )boot, )lisp, )meta and )delete options may be used with this ~
+            command, however. Issue )help workfiles for more information.")
+           (cons type nil)))
+        ((eq type1 '|delete|) (setq deleteflag t))))
+     (do ((t2 |$options| (cdr t2)) (t3 nil))
+         ((or (atom t2)
+          (progn (setq t3 (CAR t2)) nil)
+          (progn
+           (progn 
+            (setq type (car t3))
+            (setq flist (cdr t3)) t3)
+           nil))
+          nil)
+      (setq type1 (|selectOptionLC| type '(|boot| |lisp| |meta| |delete|) nil))
+      (unless (eq type1 '|delete|)
+        (dolist (file flist)
+         (setq fl (|pathname| (list file type1 "*")))
+         (cond 
+          (deleteflag
+           (setq |$sourceFiles| (|delete| fl |$sourceFiles|)))
+          ((null (makeInputFilename fl))
+           (|sayKeyedMsg| 
+            (format nil
+             "The file %1 will not be added to the list of working source ~
+              files because the file does not exist.")
+            (list (|namestring| fl))))
+          (t (|updateSourceFiles| fl))))))
+     (say " ")
+     (format t "~v,,,'-:@<~a~>~%" (- $linelength 2)
+       " User-specified work files ")
+     (say " ")
+     (if (null |$sourceFiles|)
+      (say "   no files specified")
+      (progn
+        (setq |$sourceFiles| (sortby '|pathnameType| |$sourceFiles|))
+        (do ((t5 |$sourceFiles| (cdr t5)) (fl nil))
+            ((or (atom t5) (progn (setq fl (car t5)) nil)) nil)
+           (|sayBrightly| (list "   " (|namestring| fl))))))))))
+
+(defun wrap (list-of-items wrapper)
+ (prog nil
+  (cond
+   ((or (not (consp list-of-items)) (not wrapper))
+    (return list-of-items))
+   ((not (consp wrapper))
+    (setq wrapper (lotsof wrapper))))
+  (return
+    (cons
+     (if (first wrapper)
+      `(,(first wrapper) ,(first list-of-items))
+       (first list-of-items))
+     (wrap (cdr list-of-items) (cdr wrapper))))))
+
+(defun write-browsedb ()
+ "make browse.daase from hash tables"
+ (declare (special $spadroot *sourcefiles*))
+ (let (master masterpos src formpos docpos attpos predpos *print-pretty* out)
+  (declare (special *print-pretty*))
+  (print "building browse.daase")
+  (setq out (open "browse.build" :direction :output))
+  (princ "                              " out)
+  (finish-output out)
+  (dolist (constructor (|allConstructors|))
+   (let (struct)
+    (setq struct (get constructor 'database))
+     ; sourcefile is small. store the string directly
+    (setq src (gethash constructor *sourcefiles*))
+    (setq formpos (file-position out))
+    (print (database-constructorform struct) out)
+    (finish-output out)
+    (setq docpos (file-position out))
+    (print (database-documentation struct) out)
+    (finish-output out)
+    (setq attpos (file-position out))
+    (print (database-attributes struct) out)
+    (finish-output out)
+    (setq predpos (file-position out))
+    (print (database-predicates struct) out)
+    (finish-output out)
+    (push (list constructor src formpos docpos attpos predpos) master)))
+  (finish-output out)
+  (setq masterpos (file-position out))
+  (print master out)
+  (finish-output out)
+  (file-position out 0)
+  (print (cons masterpos (get-universal-time)) out)
+  (finish-output out)
+  (close out)))
+
+(defun write-categorydb ()
+ "make category.daase from scratch. contains the *hasCategory-hash* table"
+ (let (out master pos *print-pretty*)
+  (declare (special *print-pretty* *hasCategory-hash*))
+  (print "building category.daase")
+  (|genCategoryTable|)
+  (setq out (open "category.build" :direction :output))
+  (princ "                              " out)
+  (finish-output out)
+  (maphash #'(lambda (key value)
+    (if (or (null value) (eq value t))
+     (setq pos value)
+     (progn
+      (setq pos (file-position out))
+      (print value out)
+      (finish-output out)))
+     (push (list key pos) master))
+     *hasCategory-hash*)
+  (setq pos (file-position out))
+  (print master out)
+  (finish-output out)
+  (file-position out 0)
+  (print (cons pos (get-universal-time)) out)
+  (finish-output out)
+  (close out)))
+
+(defun |writeHiFi| ()
+ "Writes information of the current step to history file"
+ (let (HiFi)
+ (declare (special |$useInternalHistoryTable| |$internalHistoryTable|
+     |$IOindex| |$HistRecord| |$currentLine|))
+   (if |$useInternalHistoryTable|
+     (setq |$internalHistoryTable|
+      (cons
+       (cons |$IOindex|
+        (cons |$currentLine| |$HistRecord|))
+        |$internalHistoryTable|))
+    (progn
+      (setq HiFi
+        (rdefiostream
+         (cons
+           '(mode . output)
+            (cons (cons 'file (|histFileName|)) nil))))
+      (spadrwrite (|object2Identifier| |$IOindex|)
+        (cons |$currentLine| |$HistRecord|) HiFi)
+      (rshut HiFi)))))
+
+(defun |writeHistModesAndValues| ()
+ (let (a x)
+ (declare (special |$InteractiveFrame|))
+  (do ((tmp0 (caar |$InteractiveFrame|) (cdr tmp0)) (tmp1 nil))
+      ((or (atom tmp0) 
+           (progn
+             (setq tmp1 (car tmp0))
+             nil)
+           (progn
+             (progn
+               (setq a (car tmp1))
+               tmp1)
+           nil))
+       nil)
+     (cond
+      ((setq x (|get| a '|value| |$InteractiveFrame|))
+        (|putHist| a '|value| x |$InteractiveFrame|))
+      ((setq x (|get| a '|mode| |$InteractiveFrame|))
+        (|putHist| a '|mode| x |$InteractiveFrame|))))))
+
+(defun |writeInputLines| (fn initial) 
+ (let (maxn breakChars vecl k svec done n lineList file inp) 
+ (declare (special underbar |$HiFiAccess| |$IOindex|))
+  (cond 
+   ((null |$HiFiAccess|)
+    (|sayKeyedMsg|
+     (format nil 
+      "The history facility is not on, so the .input file containing your ~
+       user input cannot be created.")
+      nil)) 
+   ((null fn)
+    (|throwKeyedMsg| 
+      "You must specify a file name to the history write command" nil))
+   (t 
+     (setq maxn 72)
+     (setq breakChars (cons '| | (cons '+ nil)))
+     (do ((tmp0 (- |$IOindex| 1))
+          (i initial (+ i 1)))
+         ((> i tmp0) nil)
+       (setq vecl (car (|readHiFi| i)))
+       (when (stringp vecl) (setq vecl (cons vecl nil)))
+       (dolist (vec vecl)
+         (setq n (size vec))
+         (do () 
+             ((null (> n maxn)) nil) 
+             (setq done nil)
+             (do ((j 1 (1+ j)))
+                 ((or (> j maxn) (null (null done))) nil)
+               (setq k (- (1+ maxn) j))
+               (when (member (elt vec k) breakChars)
+                 (setq svec (concat (substring vec 0 (1+ k)) underbar))
+                 (setq lineList (cons svec lineList))
+                 (setq done t)
+                 (setq vec (substring vec (1+ k) nil))
+                 (setq n (size vec))))
+             (when done (setq n 0)))
+         (setq lineList (cons vec lineList))))
+     (setq file (|histInputFileName| fn))
+     (|histFileErase| file)
+     (setq inp 
+      (defiostream 
+       (cons 
+        '(mode . output) 
+        (cons (cons 'file file) nil)) 255 0))
+     (dolist (x (|removeUndoLines| (nreverse lineList)))
+       (write-line x inp))
+     (cond 
+      ((not (eq fn '|redo|))
+        (|sayKeyedMsg| "Edit %1 to see the saved input lines."
+          (list (|namestring| file)))))
+     (shut inp)
+     nil))))
+
+(defun write-interpdb ()
+ "build interp.daase from hash tables"
+ (declare (special $spadroot *ancestors-hash*))
+ (let (opalistpos modemapspos cmodemappos master masterpos obj *print-pretty*
+        concategory categorypos kind niladic cosig abbrev defaultdomain
+        ancestors ancestorspos out)
+  (declare (special *print-pretty*))
+  (print "building interp.daase")
+  (setq out (open "interp.build" :direction :output))
+  (princ "                              " out)
+  (finish-output out)
+  (dolist (constructor (|allConstructors|))
+   (let (struct)
+    (setq struct (get constructor 'database))
+    (setq opalistpos (file-position out))
+    (print (database-operationalist struct) out)
+    (finish-output out)
+    (setq cmodemappos (file-position out))
+    (print (database-constructormodemap struct) out)
+    (finish-output out)
+    (setq modemapspos (file-position out))
+    (print (database-modemaps struct) out)
+    (finish-output out)
+    (let ((dob (database-object struct)))
+       (setq obj (if dob (pathname-name (first (last (pathname-directory dob)))) "NIL")))
+    (setq concategory (database-constructorcategory struct))
+    (if concategory  ; if category then write data else write nil
+     (progn
+      (setq categorypos (file-position out))
+      (print concategory out)
+      (finish-output out))
+     (setq categorypos nil))
+    (setq niladic (database-niladic struct))
+    (setq abbrev (database-abbreviation struct))
+    (setq cosig (database-cosig struct))
+    (setq kind (database-constructorkind struct))
+    (setq defaultdomain (database-defaultdomain struct))
+    (setq ancestors (gethash constructor *ancestors-hash*)) ;cattable.boot
+    (if ancestors
+     (progn
+      (setq ancestorspos (file-position out))
+      (print ancestors out)
+      (finish-output out))
+     (setq ancestorspos nil))
+    (push (list constructor opalistpos cmodemappos modemapspos
+      obj categorypos niladic abbrev cosig kind defaultdomain
+      ancestorspos) master)))
+  (finish-output out)
+  (setq masterpos (file-position out))
+  (print master out)
+  (finish-output out)
+  (file-position out 0)
+  (print (cons masterpos (get-universal-time)) out)
+  (finish-output out)
+  (close out)))
+
+(defun write-operationdb ()
+ (let (pos master out)
+  (declare (special leaves *operation-hash*))
+  (setq out (open "operation.build" :direction :output))
+  (princ "                              " out)
+  (finish-output out)
+  (maphash #'(lambda (key value)
+   (setq pos (file-position out))
+   (print value out)
+   (finish-output out)
+   (push (cons key pos) master))
+   *operation-hash*)
+  (finish-output out)
+  (setq pos (file-position out))
+  (print master out)
+  (file-position out 0)
+  (print (cons pos (get-universal-time)) out)
+  (finish-output out)
+  (close out)))
+
+(defun write-warmdata ()
+ "write out information to be loaded into the image at build time"
+ (declare (special |$topicHash|))
+ (with-open-file (out "warm.data" :direction :output)
+  (format out "(in-package \"BOOT\")~%")
+  (format out "(setq |$topicHash| (make-hash-table))~%")
+  (maphash #'(lambda (k v)
+   (format out "(setf (gethash '|~a| |$topicHash|) ~a)~%" k v)) |$topicHash|)))
+
+(defun |writify| (ob)
+ (let (|$seen| |$writifyComplained|)
+ (declare (special |$seen| |$writifyComplained|))
+  (if (null (|ScanOrPairVec| #'|unwritable?| ob))
+    ob
+    (progn
+     (setq |$seen| (make-hash-table :test #'eq))
+     (setq |$writifyComplained| nil)
+     (|writify,writifyInner| ob)))))
+
+(defun |writifyComplain| (s)
+ (declare (special |$writifyComplained|))
+ (unless |$writifyComplained|
+  (setq |$writifyComplained| t)
+  (|sayKeyedMsg|
+   (format nil
+    "A value containing a %1 is being saved in a history file or a ~
+     compiled input file INLIB. This type is not yet usable in other ~
+     history operations.  You might want to issue )history )off")
+    (list s)))) ; cannot save value
+
+(defun |writify,writifyInner| (ob)
+ (prog (e name tmp1 tmp2 tmp3 x qcar qcdr d n keys nob)
+  (declare (special |$seen| |$NonNullStream| |$NullStream|))
+  (return
+   (seq
+    (when (null ob) (exit nil))
+    (when (setq e (hget |$seen| ob)) (exit e))
+    (when (consp ob)
+     (exit
+      (seq
+       (setq qcar (qcar ob))
+       (setq qcdr (qcdr ob))
+       (when (setq name (|spadClosure?| ob))
+        (exit
+         (seq
+          (setq d (|writify,writifyInner| (qcdr ob)))
+          (setq nob 
+           (cons 'writified!!
+            (cons 'spadclosure 
+             (cons d (cons name nil)))))
+          (hput |$seen| ob nob)
+          (hput |$seen| nob nob)
+          (exit nob))))
+       (when 
+        (and 
+         (and (consp ob)
+              (eq (qcar ob) 'lambda-closure)
+              (progn
+               (setq tmp1 (qcdr ob))
+               (and (consp tmp1)
+                    (progn 
+                     (setq tmp2 (qcdr tmp1))
+                     (and 
+                      (consp tmp2)
+                      (progn 
+                       (setq tmp3 (qcdr tmp2))
+                       (and (consp tmp3)
+                            (progn
+                             (setq x (qcar tmp3))
+                             t)))))))) x)
+        (exit
+         (throw '|writifyTag| '|writifyFailed|)))
+       (setq nob (cons qcar qcdr))
+       (hput |$seen| ob nob)
+       (hput |$seen| nob nob)
+       (setq qcar (|writify,writifyInner| qcar))
+       (setq qcdr (|writify,writifyInner| qcdr))
+       (qrplaca nob qcar)
+       (qrplacd nob qcdr)
+       (exit nob))))
+    (when (simple-vector-p ob)
+     (exit
+      (seq
+       (when (|isDomainOrPackage| ob)
+         (setq d (|mkEvalable| (|devaluate| ob)))
+         (setq nob (list 'writified!! 'devaluated (|writify,writifyInner| d)))
+         (hput |$seen| ob nob)
+         (hput |$seen| nob nob)
+         (exit nob))
+       (setq n (qvmaxindex ob))
+       (setq nob (make-array (1+ n)))
+       (hput |$seen| ob nob)
+       (hput |$seen| nob nob)
+       (do ((i 0 (=! i)))
+           ((> i n) nil)
+         (qsetvelt nob i (|writify,writifyInner| (qvelt ob i))))
+       (exit nob))))
+    (when (eq ob 'writified!!)
+     (exit
+      (cons 'writified!! (cons 'self nil))))
+    (when (|constructor?| ob)
+     (exit ob))
+    (when (compiled-function-p ob)
+     (exit
+      (throw '|writifyTag| '|writifyFailed|)))
+    (when (hash-table-p ob)
+       (setq nob (cons 'writified!! nil))
+       (hput |$seen| ob nob)
+       (hput |$seen| nob nob)
+       (setq keys (hkeys ob))
+       (qrplacd nob
+        (cons 
+          'hashtable
+          (cons 
+            (hashtable-class ob)
+            (cons
+              (|writify,writifyInner| keys)
+              (cons
+                (prog (tmp0)
+                  (setq tmp0 nil)
+                  (return
+                   (do ((tmp1 keys (cdr tmp1)) (k nil))
+                       ((or (atom tmp1)
+                            (progn
+                             (setq k (car tmp1))
+                              nil))
+                            (nreverse0 tmp0))
+                    (setq tmp0 
+                     (cons (|writify,writifyInner| (hget ob k)) tmp0)))))
+                nil)))))
+       (exit nob))
+    (when (placep ob)
+       (setq nob (cons 'writified!! (cons 'place nil)))
+       (hput |$seen| ob nob)
+       (hput |$seen| nob nob)
+       (exit nob))
+    (when (readtablep ob)
+     (exit
+      (throw '|writifyTag| '|writifyFailed|)))
+    (when (stringp ob)
+     (exit
+      (seq
+       (when (eq ob |$NullStream|)
+        (exit
+         (cons 'writified!! (cons 'nullstream nil))))
+       (when (eq ob |$NonNullStream|)
+        (exit
+         (cons 'writified!! (cons 'nonnullstream nil))))
+       (exit ob))))
+    (when (floatp ob)
+     (exit
+      (seq
+       (when (boot-equal ob (read-from-string (princ-to-string ob)))
+        (exit ob))
+       (exit
+        (cons 'writified!!
+         (cons 'float 
+          (cons ob 
+           (multiple-value-list (integer-decode-float ob)))))))))
+    (exit ob))))) 
+
+
+(defun |xlCannotRead| (eb str lno ufos fn)
+ (|xlMsg| eb str lno (elt ufos 0) (list (|inclmsgCannotRead| fn) '|error|)))
+
+(defun |xlCmdBug| (eb str lno ufos)
+ (|xlMsg| eb str lno (elt ufos 0) (list (|inclmsgCmdBug|) '|bug|)))
+
+(defun |xlConActive| (eb str lno ufos n)
+ (|xlMsg| eb str lno (elt ufos 0) (list (|inclmsgConActive| n) '|warning|)))
+
+(defun |xlConsole| (eb str lno ufos)
+ (|xlMsg| eb str lno (elt ufos 0) (list (|inclmsgConsole|) '|say|)))
+
+(defun |xlConStill| (eb str lno ufos n)
+ (|xlMsg| eb str lno (elt ufos 0) (list (|inclmsgConStill| n) '|say|)))
+
+(defun |xlFileCycle| (eb str lno ufos fn)
+ (|xlMsg| eb str lno (elt ufos 0) 
+  (list (|inclmsgFileCycle| ufos fn) '|error|)))
+
+(defun |xlIfBug| (eb str lno ufos)
+ (|xlMsg| eb str lno (elt ufos 0) (list (|inclmsgIfBug|) '|bug|)))
+
+(defun |xlIfSyntax| (eb str lno ufos info sts)
+ (let (context found st)
+  (setq st (elt sts 0))
+  (setq found (elt info 2))
+  (setq context
+   (cond
+    ((|Top?| st) '|not in an )if...)endif|)
+    ((|Else?| st) '|after an )else|)
+    (t '|but can't figure out where|)))
+  (|xlMsg| eb str lno (elt ufos 0)
+    (list (|inclmsgIfSyntax| (elt ufos 0) found context) '|error|))))
+
+(defun |xlMsg| (extrablanks string localnum fileobj mess)
+ (let ((globalnum -1))
+  (list (incLine extrablanks string globalnum localnum fileobj) mess)))
+
+(defun |xlNoSuchFile| (eb str lno ufos fn)
+ (|xlMsg| eb str lno (elt ufos 0) (list (|inclmsgNoSuchFile| fn) '|error|)))
+
+(defun |xlOK| (extrablanks string localnum fileobj)
+ (|xlOK1| extrablanks string string localnum fileobj))
+
+(defun |xlOK1| (extrablanks string string1 localnum fileobj)
+ (let ((globalnum -1))
+  (list (incLine1 extrablanks string string1 globalnum localnum fileobj)
+    (list nil '|none|))))
+
+(defun |xlPrematureEOF| (eb str lno ufos)
+ (|xlMsg| eb str lno (elt ufos 0)
+          (list (|inclmsgPrematureEOF| (elt ufos 0)) '|error|)))
+
+(defun |xlPrematureFin| (eb str lno ufos)
+ (|xlMsg| eb str lno (elt ufos 0)
+   (list (|inclmsgPrematureFin| (elt ufos 0)) '|error|)))
+
+(defun |xlSay| (eb str lno ufos x)
+ (|xlMsg| eb str lno (elt ufos 0) (list (|inclmsgSay| x) '|say|)))
+
+(defun |xlSkip| (extrablanks str localnum fileobj)
+ (let ((string (concat "-- Omitting:" str)) (globalnum -1))
+ (list 
+  (incLine extrablanks string globalnum localnum fileobj)
+  (list nil '|none|))))
+
+(defun |xlSkippingFin| (eb str lno ufos)
+ (|xlMsg| eb str lno (elt ufos 0)
+   (list (|inclmsgFinSkipped|) '|warning|)))
+
+(defun |xSearch| (filter)
+  (|constructorSearch| (|checkFilter| filter) '|x| "default package"))
+
+
+(defun yesanswer ()
+ (member
+  (string2id-n
+   (upcase
+    (|queryUserKeyedMsg|
+     (format nil
+      "You have requested that all information about all Axiom operations ~
+       (functions) be displayed.  As there are several hundred operations, ~
+       please confirm your request by typing y or yes and then pressing ~
+       Enter :")
+      nil)) 1) '(y yes)))
+
+(defun |ySearch| (filter)
+  (|constructorSearch| (|checkFilter| filter) '|y| "constructor"))
+
+
+(eval-when (eval load)
+ (put '|coerce| '/TRANSFORM '(& & *))
+ (put '|comp| '/TRANSFORM '(& * * &))
+ (put '|compIf| '/TRANSFORM '(& * * &))
+ ; by having no transform for the 3rd argument, it is simply not printed
+ (put '|compFormWithModemap| '/TRANSFORM '(& * * & &)))
+
+(defvar |$localExposureData|  (copy-seq |$localExposureDataDefault|))
+
+(eval-when (eval load)
+(setq |incCommands|
+ (list "say" "include" "console" "fin" "assert" "if" "elseif" "else" "endif")))
+
+(eval-when (eval load)
+  (setq |StreamNil| (list '|nullstream|)))
+
+(eval-when (eval load)
+(defvar |scanKeyWords|
+ (nconc	
+ (list
+  (list "add" 'add)
+  (list "and" 'and)
+  (list "break" 'break)
+  (list "by" 'by)
+  (list "case" 'case)
+  (list "default" 'default)
+  (list "define" 'defn)
+  (list "do" 'do)
+  (list "else" 'else)
+  (list "exit" 'exit)
+  (list "export" 'export)
+  (list "for" 'for)
+  (list "free" 'free)
+  (list "from" 'from)
+  (list "has" 'has)
+  (list "if" 'if)
+  (list "import" 'import)
+  (list "in" 'in)
+  (list "inline" 'inline)
+  (list "is" 'is)
+  (list "isnt" 'isnt)
+  (list "iterate" 'iterate)
+  (list "local" '|local|)
+  (list "macro" 'macro)
+  (list "mod" 'mod)
+  (list "or" 'or)
+  (list "pretend" 'pretend)
+  (list "quo" 'quo)
+  (list "rem" 'rem)
+  (list "repeat" 'repeat)
+  (list "return" 'return)
+  (list "rule" 'rule)
+  (list "then" 'then)
+  (list "where" 'where)
+  (list "while" 'while)
+  (list "with" 'with)
+  (list "|" 'bar)
+  (list "." 'dot)
+  (list "::" 'coerce)
+  (list ":" 'colon)
+  (list ":-" 'colondash)
+  (list "@" 'at)
+  (list "@@" 'atat)
+  (list "," 'comma)
+  (list ";" 'semicolon)
+  (list "**" 'power)
+  (list "*" 'times)
+  (list "+" 'plus)
+  (list "-" 'minus)
+  (list "<" 'lt)
+  (list ">" 'gt)
+  (list "<=" 'le)
+  (list ">=" 'ge)
+  (list "=" 'equal)
+  (list "~=" 'notequal)
+  (list "~" '~)
+  (list "^" 'carat)
+  (list ".." 'seg)
+  (list "#" '|#|)
+  (list "&" 'ampersand))
+  (list
+  (list "$" '$)
+  (list "/" 'slash)
+  (list "\\" 'backslash)
+  (list "//" 'slashslash)
+  (list "\\\\" 'backslashbackslash)
+  (list "/\\" 'slashbackslash)
+  (list "\\/" 'backslashslash)
+  (list "=>" 'exit)
+  (list ":=" 'becomes)
+  (list "==" 'def)
+  (list "==>" 'mdef)
+  (list "->" 'arrow)
+  (list "<-" 'larrow)
+  (list "+->" 'gives)
+  (list "(" '|(|)
+  (list ")" '|)|)
+  (list "(|" '|(\||)
+  (list "|)" '|\|)|)
+  (list "[" '[)
+  (list "]" '])
+  (list "[_]" '[])
+  (list "{" '{)
+  (list "}" '})
+  (list "{_}" '{})
+  (list "[|" '|[\||)
+  (list "|]" '|\|]|)
+  (list "[|_|]" '|[\|\|]|)
+  (list "{|" '|{\||)
+  (list "|}" '|\|}|)
+  (list "{|_|}" '|{\|\|}|)
+  (list "<<" 'oangle)
+  (list ">>" 'cangle)
+  (list "'" '|'|)
+  (list "`" 'backquote)))))
+
+(eval-when (eval load)
+(prog ()
+  (return
+    ((lambda (var value)
+       (loop
+         (cond
+           ((or (atom var) (progn (setq value (car var)) nil))
+            (return nil))
+           (t
+            (setf (get (car value) 'infgeneric) (cadr value))))
+         (setq var (cdr var))))
+     (list
+      (list 'equal '=)
+      (list 'times '*)
+      (list 'has '|has|)
+      (list 'case '|case|)
+      (list 'rem '|rem|)
+      (list 'mod '|mod|)
+      (list 'quo '|quo|)
+      (list 'slash '/)
+      (list 'backslash '|\\|)
+      (list 'slashslash '//)
+      (list 'backslashbackslash '|\\\\|)
+      (list 'slashbackslash '|/\\|)
+      (list 'backslashslash '|\\/|)
+      (list 'power '**)
+      (list 'carat '^)
+      (list 'plus '+)
+      (list 'minus '-)
+      (list 'lt '<)
+      (list 'gt '>)
+      (list 'oangle '<<)
+      (list 'cangle '>>)
+      (list 'le '<=)
+      (list 'ge '>=)
+      (list 'notequal '~=)
+      (list 'by '|by|)
+      (list 'arrow '->)
+      (list 'larrow '<-)
+      (list 'bar '|\||)
+      (list 'seg '|..|))
+     nil))))
+
+(eval-when (eval load)
+  (defvar |scanCloser| (list '|)| '} '] '|\|)| '|\|}| '|\|]|)))
+
+(eval-when (eval load)
+ (defvar |scanKeyTable| (|scanKeyTableCons|)))
+
+(eval-when (eval load)
+ (defvar |scanDict| (|scanDictCons|)))
+
+(eval-when (eval load)
+ (defvar |scanPun| (|scanPunCons|)))
+
+(eval-when (eval load)
+ (setq |$systemCommands|
+ '(
+   (|abbreviations|                  . |compiler|   )
+   (|boot|                           . |development|)
+   (|browse|                         . |development|)
+   (|cd|                             . |interpreter|)
+   (|clear|                          . |interpreter|)
+   (|close|                          . |interpreter|)
+   (|compiler|                       . |compiler|   )
+   (|copyright|                      . |interpreter|)
+   (|credits|                        . |interpreter|)
+   (|describe|                       . |interpreter|)
+   (|display|                        . |interpreter|)
+   (|edit|                           . |interpreter|)
+   (|fin|                            . |development|)
+   (|frame|                          . |interpreter|)
+   (|help|                           . |interpreter|)
+   (|history|                        . |interpreter|)
+   (|lisp|                           . |development|)
+   (|library|                        . |interpreter|)
+   (|license|                        . |interpreter|)
+   (|load|                           . |interpreter|)
+   (|ltrace|                         . |interpreter|)
+   (|pquit|                          . |interpreter|)
+   (|quit|                           . |interpreter|)
+   (|read|                           . |interpreter|)
+   (|regress|                        . |interpreter|)
+   (|savesystem|                     . |interpreter|)
+   (|set|                            . |interpreter|)
+   (|show|                           . |interpreter|)
+   (|spool|                          . |interpreter|)
+   (|summary|                        . |interpreter|)
+   (|synonym|                        . |interpreter|)
+   (|system|                         . |interpreter|)
+   (|tangle|                         . |interpreter|)
+   (|trace|                          . |interpreter|)
+   (|trademark|                      . |interpreter|)
+   (|undo|                           . |interpreter|)
+   (|what|                           . |interpreter|)
+   (|with|                           . |interpreter|)
+   (|workfiles|                      . |development|)
+ )))
+
+(eval-when (eval load)
+ (setq $syscommands (mapcar #'car |$systemCommands|)))
+
+(eval-when (eval load)
+ (setq |$noParseCommands|
+ '(|boot| |copyright| |credits| |fin| |license| |lisp| |pquit| |quit| 
+   |synonym| |system| |trademark| )))
+
+(eval-when (eval load)
+ (setq |$tokenCommands|
+ '( |abbreviations|
+    |cd|
+    |clear|
+    |close|
+    |compiler|
+    |depends|
+    |display|
+    |describe|
+    |edit|
+    |frame|
+    |frame|
+    |help|
+    |history|
+    |input|
+    |library|
+    |load|
+    |ltrace|
+    |read|
+    |regress|
+    |savesystem|
+    |set|
+    |spool|
+    |tangle|
+    |undo|
+    |what|
+    |with|
+    |workfiles|
+    )))
+
+(eval-when (eval load)
+ (setq |$InitialCommandSynonymAlist|
+   '(
+       (|?|          . "what commands")
+       (|ap|         . "what things")
+       (|apr|        . "what things")
+       (|apropos|    . "what things")
+       (|cache|      . "set functions cache")
+       (|cl|         . "clear")
+       (|cms|        . "system")
+       (|co|         . "compiler")
+       (|d|          . "display")
+       (|dep|        . "display dependents")
+       (|dependents| . "display dependents")
+       (|e|          . "edit")
+       (|expose|     . "set expose add constructor")
+       (|fns|        . "exec spadfn")
+       (|fortran|    . "set output fortran")
+       (|h|          . "help")
+       (|hd|         . "system hypertex &")
+       (|kclam|      . "boot clearClams ( )")
+       (|killcaches| . "boot clearConstructorAndLisplibCaches ( )")
+       (|prompt|     . "set message prompt")
+       (|recurrence| . "set functions recurrence")
+       (|restore|    . "history )restore")
+       (|save|       . "history )save")
+       (|startGraphics|    .  "system $AXIOM/lib/viewman &")
+       (|startNAGLink|     .  "system $AXIOM/lib/nagman &")
+       (|stopGraphics|     .  "lisp (|sockSendSignal| 2 15)")
+       (|stopNAGLink|      .  "lisp (|sockSendSignal| 8 15)")
+       (|time|       . "set message time")
+       (|type|       . "set message type")
+       (|unexpose|   . "set expose drop constructor")
+       (|version|    . "lisp (axiomVersion)")
+       (|w|          . "what")
+       (|wc|         . "what categories")
+       (|wd|         . "what domains")
+       (|who|        . "lisp (pprint credits)")
+       (|wp|         . "what packages")
+       (|ws|         . "what synonyms")
+)))
+
+(eval-when (eval load)
+ (setq |$CommandSynonymAlist| (copy-alist |$InitialCommandSynonymAlist|)))
+
+(eval-when (eval load)
+ (|initializeSetVariables| |$setOptions|))
+
+(eval-when (eval load)
+ (mapcar #'(lambda (alist) 
+            (setf (get (first alist) '|makeFunctionList|) (second alist)))
+ '((|Record| |mkRecordFunList|)
+   (|Union| |mkUnionFunList|)
+   (|Mapping| |mkMappingFunList|)
+   (|Enumeration| |mkEnumerationFunList|))))
+
+(eval-when (eval load) 
+ (unless *monitor-table* (monitor-inittable)))
+
+(eval-when (eval load)
+ (|buildHtMacroTable|))
+
+(eval-when (eval load)
+(put '|Record| '|documentation|
+ (subst message1 'message
+  `((|constructor| (nil message))
+    (= (((|Boolean|) $ $)
+ "\\spad{r = s} tests for equality of two records \\spad{r} and \\spad{s}"))
+    (|coerce| (((|OutputForm|) $)
+ "\\spad{coerce(r)} returns an representation of \\spad{r} as an output form")
+    (($ (|List| (|Any|)))
+   ,(concatenate 'string
+"\\spad{coerce(u)}, where \\spad{u} is the list \\spad{[x,y]} for \\spad{x} "
+"of type \\spad{A} and \\spad{y} of type \\spad{B}, returns the record "
+"\\spad{[a:x,b:y]}")))
+    (|elt| ((A $ "a")
+  ,(concatenate 'string
+    "\\spad{r . a} returns the value stored in record \\spad{r} under "
+    "selector \\spad{a}."))
+    ((B $ "b")
+  ,(concatenate 'string 
+"\\spad{r . b} returns the value stored in record \\spad{r} "
+   "under selector \\spad{b}.")))
+    (|setelt| ((A $ "a" A)
+  ,(concatenate 'string 
+"\\spad{r . a := x} destructively replaces the value stored in "
+"record \\spad{r} under selector \\spad{a} by the value of \\spad{x}. "
+"Error: if \\spad{r} has not been previously assigned a value."))
+    ((B $ "b" B)
+  ,(concatenate 'string 
+"\\spad{r . b := y} destructively replaces the value stored in "
+"record \\spad{r} under selector \\spad{b} by the value of \\spad{y}. "
+"Error: if \\spad{r} has not been previously assigned a value."))))
+ :test #'equal)))
+
+(eval-when (eval load)
+(put '|UntaggedUnion| '|documentation|
+ (subst message2 'message
+  `((|constructor| (nil message))
+    (= (((|Boolean|) $ $)
+  ,(concatenate 'string 
+"\\spad{u = v} tests if two objects of the union are equal, "
+"that is, u and v are hold objects of same branch which are equal.")))
+    (|case| (((|Boolean|) $ "A")
+  ,(concatenate 'string 
+"\\spad{u case A} tests if \\spad{u} is of the type \\spad{A} "
+"branch of the union."))
+    (((|Boolean|) $ "B")
+  ,(concatenate 'string 
+"\\spad{u case B} tests if \\spad{u} is of the \\spad{B} branch "
+"of the union.")))
+    (|coerce| ((A $)
+  ,(concatenate 'string 
+"\\spad{coerce(u)} returns \\spad{x} of type \\spad{A} if "
+"\\spad{x} is of the \\spad{A} branch of the union. "
+"Error: if \\spad{u} is of the \\spad{B} branch of the union."))
+    ((B $)
+  ,(concatenate 'string 
+"\\spad{coerce(u)} returns \\spad{x} of type \\spad{B} if "
+"\\spad{x} is of the \\spad{B} branch of the union. "
+"Error: if \\spad{u} is of the \\spad{A} branch of the union."))
+    (($ A)
+  ,(concatenate 'string 
+"\\spad{coerce(x)}, where \\spad{x} has type \\spad{A}, "
+"returns \\spad{x} as a union type."))
+    (($ B)
+  ,(concatenate 'string 
+"\\spad{coerce(y)}, where \\spad{y} has type \\spad{B}, "
+"returns \\spad{y} as a union type."))))
+ :test #'equal)))
+
+(eval-when (eval load)
+(put '|Union| '|documentation|
+ (subst message3 'message
+  `((|constructor| (NIL MESSAGE))
+     (= (((|Boolean|) $ $)
+  ,(concatenate 'string 
+"\\spad{u = v} tests if two objects of the union are equal, that "
+"is, \\spad{u} and \\spad{v} are objects of same branch which are equal.")))
+    (|case| (((|Boolean|) $ "A")
+   "\\spad{u case a} tests if \\spad{u} is of branch \\spad{a} of the union.")
+    (((|Boolean|) $ "B")
+  "\\spad{u case b} tests if \\spad{u} is of branch \\spad{b} of the union."))
+    (|coerce| ((A $)
+  ,(concatenate 'string 
+"\\spad{coerce(u)} returns \\spad{x} of type \\spad{A} if "
+"\\spad{x} is of branch \\spad{a} of the union. "
+"Error: if \\spad{u} is of branch \\spad{b} of the union."))
+    ((B $)
+  ,(concatenate 'string 
+"\\spad{coerce(u)} returns \\spad{x} of type \\spad{B} if "
+"\\spad{x} is of branch \\spad{b} branch of the union. "
+"Error: if \\spad{u} is of the \\spad{a} branch of the union."))
+    (($ A)
+  ,(concatenate 'string 
+"\\spad{coerce(x)}, where \\spad{x} has type \\spad{A}, returns "
+"\\spad{x} as a union type."))
+    (($ B)
+  ,(concatenate 'string 
+"\\spad{coerce(y)}, where \\spad{y} has type \\spad{B}, returns "
+"\\spad{y} as a union type."))))
+ :test #'equal)))
+
+(eval-when (eval load)
+(put '|Mapping| '|documentation|
+ (subst message4 'message
+  '((|constructor| (NIL MESSAGE))
+    (= (((|Boolean|) $ $)
+   "\\spad{u = v} tests if mapping objects are equal.")))
+ :test #'equal)))
+
+(eval-when (eval load)
+(put '|Enumeration| '|documentation|
+ (subst message5 'message
+  `((|constructor| (nil message))
+    (= (((|Boolean|) $ $)
+  ,(concatenate 'string 
+"\\spad{e = f} tests for equality of two enumerations \\spad{e} "
+"and \\spad{f}")))
+   (^= (((|Boolean|) $ $)
+  ,(concatenate 'string 
+"\\spad{e ^= f} tests that two enumerations \\spad{e} and "
+"\\spad{f} are not equal")))
+   (|coerce| (((|OutputForm|) $)
+  ,(concatenate 'string 
+"\\spad{coerce(e)} returns a representation of enumeration "
+"\\spad{r} as an output form"))
+   (($ (|Symbol|))
+  ,(concatenate 'string 
+"\\spad{coerce(s)} converts a symbol \\spad{s} into an "
+"enumeration which has \\spad{s} as a member symbol"))))
+ :test #'equal)))
+
+
--- /dev/null
+++ axiom-20170501/src/interp/bookvol9.lsp
@@ -0,0 +1,13369 @@
+(in-package "BOOT")
+
+(defvar $index 0 "File line number of most recently read line")
+
+(defvar $linelist nil "Stack of preparsed lines")
+
+(defvar $echolinestack nil "Stack of lines to list")
+
+(defvar $preparse-last-line nil "Most recently read line")
+
+(defstruct stack           "A stack"
+           (store nil)     ; contents of the stack
+           (size 0)        ; number of elements in Store
+           (top nil)       ; first element of Store
+           (updated nil)   ; whether something has been pushed on the stack
+                           ; since this flag was last set to NIL
+)
+
+(defstruct token
+  (symbol nil)
+  (type nil)
+  (nonblank t))
+
+(defvar prior-token (make-token) "What did I see last")
+
+(defvar nonblank t "Is there no blank in front of the current token.")
+
+(defvar current-token (make-token))
+
+(defvar next-token (make-token) "Next token in input stream.")
+
+(defvar valid-tokens 0 "Number of tokens in buffer (0, 1 or 2)")
+
+(defstruct (reduction (:type cl::list))
+  (rule nil)            ; Name of rule
+  (value nil))
+
+(defvar |$NoValueMode| '|NoValueMode|)
+
+(defvar |$EmptyMode| '|EmptyMode|)
+
+(defvar |$BasicPredicates| '(integerp stringp floatp))
+
+(defvar |$FormalMapVariableList|
+  '(\#1 \#2 \#3 \#4 \#5 \#6 \#7 \#8 \#9 \#10 \#11 \#12 \#13 \#14 \#15))
+
+(defvar $defstack nil)
+
+(defvar $is-spill nil)
+
+(defvar $is-spill-list nil)
+
+(defvar $vl nil)
+
+(defvar $is-gensymlist nil)
+
+(defvar initial-gensym (list (gensym)))
+
+(defvar $is-eqlist nil)
+
+(defvar |tmptok| nil)
+
+(defvar tok nil)
+
+(defvar |ParseMode| nil)
+
+(defvar definition-name nil)
+
+(defvar lablasoc nil)
+
+(defvar Escape-Character #\\ "Superquoting character.")
+
+(defvar XTokenReader 'get-meta-token "Name of tokenizing function")
+
+(defvar meta-error-handler 'meta-meta-error-handler)
+
+(defvar reduce-stack (make-stack) )
+
+(defvar $comblocklist nil "a dynamic lists of comments for this block")
+
+(defvar |$newConlist| nil 
+ "A list of new constructors discovered during compile ")
+
+(defvar |$byConstructors| () "list of constructors to be compiled")
+
+(defvar |$constructorsSeen| () "list of constructors found")
+
+(defvar current-fragment nil)
+
+(defstruct line "Line of input file to parse."
+           (buffer (make-string 0) :type string)
+           (current-char #\Return :type character)
+           (current-index 1 :type fixnum)
+           (last-index 0 :type fixnum)
+           (number 0 :type fixnum))
+
+(defvar current-line (make-line))
+
+
+; ** TABLE CREATION
+ 
+(defun makenewop (x y) (makeop x y '|PARSE-NewKEY|))
+ 
+(defun makeop (x y keyname)
+  (if (or (not (cdr x)) (numberp (second x)))
+      (setq x (cons (first x) x)))
+  (if (and (alpha-char-p (elt (princ-to-string (first x)) 0))
+           (not (member (first x) (eval keyname))))
+      (set keyname (cons (first x) (eval keyname))))
+  (put (first x) y x)
+  (second x))
+ 
+(setq |PARSE-NewKEY| nil) ;;list of keywords
+ 
+(mapcar #'(LAMBDA(J) (MAKENEWOP J '|Led|))
+        '((* 800 801)   (|rem| 800 801)   (|mod| 800 801)
+          (|quo| 800 801)   (|div| 800 801)
+          (/ 800 801)    (** 900 901)  (^ 900 901)
+          (|exquo| 800 801) (+ 700 701)
+          (\- 700 701)    (\-\> 1001 1002)  (\<\- 1001 1002)
+          (\: 996 997)    (\:\: 996 997)
+          (\@ 996 997)    (|pretend| 995 996)
+          (\.)            (\! \! 1002 1001)
+          (\, 110 111)
+          (\; 81 82 (|PARSE-SemiColon|))
+          (\< 400 400)    (\> 400 400)
+          (\<\< 400 400)  (\>\> 400 400)
+          (\<= 400 400)   (\>= 400 400)
+          (= 400 400)     (^= 400 400)
+          (\~= 400 400)
+          (|in| 400 400)    (|case| 400 400)
+          (|add| 400 120)   (|with| 2000 400 (|PARSE-InfixWith|))
+          (|has| 400 400)
+          (|where| 121 104)     ; must be 121 for SPAD, 126 for boot--> nboot
+          (|when| 112 190)
+          (|otherwise| 119 190 (|PARSE-Suffix|))
+          (|is| 400 400)    (|isnt| 400 400)
+          (|and| 250 251)   (|or| 200 201)
+          (/\\ 250 251)   (\\/ 200 201)
+          (\.\. SEGMENT 401 699 (|PARSE-Seg|))
+          (=\> 123 103)
+          (+-\> 995 112)
+          (== DEF 122 121)
+          (==\> MDEF 122 121)
+          (\| 108 111)                          ;was 190 190
+          (\:- LETD 125 124) (\:= LET 125 124)))
+ 
+(mapcar #'(LAMBDA (J) (MAKENEWOP J `|Nud|))
+        '((|for| 130 350 (|PARSE-Loop|))
+          (|while| 130 190 (|PARSE-Loop|))
+          (|until| 130 190 (|PARSE-Loop|))
+          (|repeat| 130 190 (|PARSE-Loop|))
+          (|import| 120 0 (|PARSE-Import|) )
+          (|unless|)
+          (|add| 900 120)
+          (|with| 1000 300 (|PARSE-With|))
+          (|has| 400 400)
+          (\- 701 700)  ; right-prec. wants to be -1 + left-prec
+;;        (\+ 701 700)
+          (\# 999 998)
+          (\! 1002 1001)
+          (\' 999 999 (|PARSE-Data|))
+          (\<\< 122 120 (|PARSE-LabelExpr|))
+          (\>\>)
+          (^ 260 259 NIL)
+          (\-\> 1001 1002)
+          (\: 194 195)
+          (|not| 260 259 NIL)
+          (\~ 260 259 nil)
+          (\= 400 700)
+          (|return| 202 201 (|PARSE-Return|))
+          (|leave| 202 201 (|PARSE-Leave|))
+          (|exit| 202 201 (|PARSE-Exit|))
+          (|from|)
+          (|iterate|)
+          (|yield|)
+          (|if| 130 0 (|PARSE-Conditional|))    ; was 130
+          (\| 0 190)
+          (|suchthat|)
+          (|then| 0 114)
+          (|else| 0 114)))
+
+(mapcar #'(lambda (x) (put (car x) 'gliph (cdr x)))
+        `(
+          ( \| (\))        )
+          ( *  (*)         )
+          ( \( (<) (\|)    )
+          ( +  (- (>))     )
+          ( -  (>)         )
+          ( <  (=) (<)     )
+     ;;     ( /  (\\)        ) breaks */xxx
+          ( \\ (/)         )
+          ( >  (=) (>) (\)))
+          ( =  (= (>)) (>) )
+          ( \. (\.)        )
+          ( ^  (=)         )
+          ( \~ (=)         )
+          ( \: (=) (-) (\:))))
+ 
+(mapcar 
+  #'(lambda (x) (put (car x) 'renametok (cadr x)) (makenewop x nil))
+        '((\(\| \[)                     ; (| |) means []
+          (\|\) \])
+          (\(< \{)                      ; (< >) means {}
+          (>\) \})))
+ 
+(mapcar #'(lambda (x) (put x 'generic 'true))
+        '(- = * |rem| |mod| |quo| |div| / ** |exquo| + - < > <= >= ^= ))
+
+
+(defmacro bang (lab prod)
+ `(progn
+   (setf (stack-updated reduce-stack) nil)
+   (let* ((prodvalue ,prod) (updated (stack-updated reduce-stack)))
+    (unless updated (push-reduction ',lab nil))
+    prodvalue)))
+
+(defmacro line-clear (line)
+ `(let ((l ,line))
+   (setf (line-buffer l) (make-string 0))
+   (setf (line-current-char l) #\return)
+   (setf (line-current-index l) 1)
+   (setf (line-last-index l) 0)
+   (setf (line-number l) 0)))
+
+(defmacro must (dothis &optional (this-is nil) (in-rule nil))
+  `(or ,dothis (meta-syntax-error ,this-is ,in-rule)))
+
+(defmacro nth-stack (x)
+  `(reduction-value (nth (1- ,x) (stack-store Reduce-Stack))))
+
+(defmacro pop-stack-1 () '(reduction-value (Pop-Reduction)))
+
+(defmacro pop-stack-2 ()
+  `(let* ((top (Pop-Reduction)) (next (Pop-Reduction)))
+     (stack-push top Reduce-Stack)
+     (reduction-value next)))
+
+(defmacro pop-stack-3 ()
+  `(let* ((top (Pop-Reduction)) (next (Pop-Reduction)) (nnext (Pop-Reduction)))
+     (stack-push next Reduce-Stack)
+     (stack-push top Reduce-Stack)
+     (reduction-value nnext)))
+
+(defmacro pop-stack-4 ()
+  `(let* ((top (Pop-Reduction))
+          (next (Pop-Reduction))
+          (nnext (Pop-Reduction))
+          (nnnext (Pop-Reduction)))
+     (stack-push nnext Reduce-Stack)
+     (stack-push next Reduce-Stack)
+     (stack-push top Reduce-Stack)
+     (reduction-value nnnext)))
+
+(defmacro reduce-stack-clear () `(stack-load nil reduce-stack))
+
+(defmacro stack-/-empty (stack) `(> (stack-size ,stack) 0))
+
+(defmacro star (lab prod)
+  `(prog ((oldstacksize (stack-size reduce-stack)))
+     (if (not ,prod) (return nil))
+loop
+     (if (not ,prod)
+      (let* ((newstacksize (stack-size reduce-stack))
+             (number-of-new-reductions (- newstacksize oldstacksize)))
+        (if (> number-of-new-reductions 0)
+         (return (do ((i 0 (1+ i)) (accum nil))
+                     ((= i number-of-new-reductions)
+                       (push-reduction ',lab accum)
+                       (return t))
+                   (push (pop-stack-1) accum)))
+         (return t)))
+      (go loop))))
+
+
+(defun action (dothis) (or dothis t))
+
+(defun |addArgumentConditions| (|$body| |$functionName|)
+ (declare (special |$body| |$functionName| |$argumentConditionList| |$true|))
+ (labels (
+  (fn (clist)
+   (let (n untypedCondition typedCondition)
+    (cond
+     ((and (consp clist) (consp (qfirst clist)) (consp (qcdar clist))
+           (consp (qcddar clist))
+           (eq (qcdddar clist) nil))
+      (setq n (qcaar clist))
+      (setq untypedCondition (qcadar clist))
+      (setq typedCondition (qcaddar clist))
+      (list 'cond
+       (list typedCondition (fn (cdr clist)))
+        (list |$true|
+         (list '|argumentDataError| n
+          (mkq untypedCondition) (mkq |$functionName|)))))
+     ((null clist) |$body|)
+     (t (|systemErrorHere| "addArgumentConditions"))))))
+ (if |$argumentConditionList|
+   (fn |$argumentConditionList|)
+   |$body|)))
+
+
+(defun addclose (line char)
+ (cond
+  ((char= (char line (maxindex line)) #\; )
+    (setelt line (maxindex line) char)
+    (if (char= char #\;) line (suffix #\; line)))
+  ((suffix char line))))
+
+(defun |addConstructorModemaps| (name form env)
+ (let (|$InteractiveMode| functorName fn tmp1 funList op sig nsig opcode)
+ (declare (special |$InteractiveMode|))
+  (setq functorName (car form))
+  (setq |$InteractiveMode| nil)
+  (setq env (|putDomainsInScope| name env))
+  (setq fn (getl functorName '|makeFunctionList|))
+  (setq tmp1 (funcall fn name form env))
+  (setq funList (car tmp1))
+  (setq env (cadr tmp1))
+  (dolist (item funList)
+    (setq op (first item))
+    (setq sig (second item))
+    (setq opcode (third item))
+    (when (and (consp opcode) (consp (qrest opcode))
+               (consp (qcddr opcode)) 
+               (eq (qcdddr opcode) nil)
+               (eq (qfirst opcode) 'elt))
+       (setq nsig (subst '$$$ name sig :test #'equal))
+       (setq nsig 
+        (subst '$ '$$$ (subst '$$ '$ nsig :test #'equal) :test #'equal))
+       (setq opcode (list (first opcode) (second opcode) nsig)))
+    (setq env (|addModemap| op name sig t opcode env)))
+  env))
+
+(defun |addDomain| (domain env)
+ (let (s name tmp1)
+  (cond
+   ((atom domain)
+     (cond
+      ((eq domain '|$EmptyMode|) env)
+      ((eq domain '|$NoValueMode|) env)
+      ((or (null (identp domain))
+           (and (qslessp 2 (|#| (setq s (princ-to-string domain))))
+                (eq #\# (elt s 0))
+                (eq #\# (elt s 1))))
+            env)
+      ((member domain (|getDomainsInScope| env)) env)
+      ((|isLiteral| domain env) env)
+      (t (|addNewDomain| domain env))))
+   ((eq (setq name (car domain)) '|Category|) env)
+   ((|domainMember| domain (|getDomainsInScope| env)) env)
+   ((and (progn
+          (setq tmp1 (|getmode| name env))
+          (and (consp tmp1) (eq (qfirst tmp1) '|Mapping|)
+               (consp (qrest tmp1))))
+          (|isCategoryForm| (second tmp1) env))
+     (|addNewDomain| domain env))
+   ((or (|isFunctor| name) (|constructor?| name))
+     (|addNewDomain| domain env))
+   (t
+     (when (and (null (|isCategoryForm| domain env))
+                (null (|member| name '(|Mapping| category))))
+       (|unknownTypeError| name))
+     env))))
+
+(defun |addEltModemap| (op mc sig pred fn env)
+ (let (tmp1 v sel lt id)
+ (declare (special |$e| |$insideCapsuleFunctionIfTrue|))
+  (cond
+   ((and (eq op '|elt|) (consp sig))
+     (setq tmp1 (reverse sig))
+     (setq sel (qfirst tmp1))
+     (setq lt (nreverse (qrest tmp1)))
+     (cond
+       ((stringp sel) 
+         (setq id (intern sel))
+         (if |$insideCapsuleFunctionIfTrue|
+           (setq |$e| (|makeLiteral| id |$e|))
+           (setq env (|makeLiteral| id env)))
+         (|addModemap1| op mc (append lt (list id)) pred fn env))
+       (t (|addModemap1| op mc sig pred fn env))))
+   ((and (eq op '|setelt|) (consp sig))
+     (setq tmp1 (reverse sig))
+     (setq v (qfirst tmp1))
+     (setq sel (qsecond tmp1))
+     (setq lt (nreverse (qcddr tmp1)))
+     (cond
+       ((stringp sel) (setq id (intern sel))
+         (if |$insideCapsuleFunctionIfTrue|
+           (setq |$e| (|makeLiteral| id |$e|))
+           (setq env (|makeLiteral| id env)))
+         (|addModemap1| op mc (append lt (list id v)) pred fn env))
+       (t (|addModemap1| op mc sig pred fn env))))
+   (t (|systemErrorHere| "addEltModemap")))))
+
+(defun |addEmptyCapsuleIfNecessary| (target rhs)
+ (declare (special |$SpecialDomainNames|) (ignore target))
+ (if (member (ifcar rhs) |$SpecialDomainNames|) 
+   rhs
+   (list '|add| rhs (list 'capsule))))
+
+(defun |addModemapKnown| (op mc sig pred fn |$e|)
+ (declare (special |$e| |$CapsuleModemapFrame| |$insideCapsuleFunctionIfTrue|))
+  (if (eq |$insideCapsuleFunctionIfTrue| t)
+   (progn
+     (setq |$CapsuleModemapFrame|
+      (|addModemap0| op mc sig pred fn |$CapsuleModemapFrame|))
+     |$e|)
+   (|addModemap0| op mc sig pred fn |$e|)))
+
+(defun |addModemap| (op mc sig pred fn |$e|)
+ (declare (special |$e| |$CapsuleModemapFrame| |$InteractiveMode|
+                   |$insideCapsuleFunctionIfTrue|))
+  (cond
+    (|$InteractiveMode| |$e|)
+    (t 
+     (when (|knownInfo| pred) (setq pred t))
+     (cond
+       ((eq |$insideCapsuleFunctionIfTrue| t)
+        (setq |$CapsuleModemapFrame|
+          (|addModemap0| op mc sig pred fn |$CapsuleModemapFrame|))
+        |$e|)
+       (t
+        (|addModemap0| op mc sig pred fn |$e|))))))
+
+(defun |addModemap0| (op mc sig pred fn env)
+ (declare (special |$functorForm|))
+ (cond
+  ((and (consp |$functorForm|)
+        (eq (qfirst |$functorForm|) '|CategoryDefaults|)
+        (eq mc '$))
+    env)
+  ((or (eq op '|elt|) (eq op '|setelt|))
+    (|addEltModemap| op mc sig pred fn env))
+  (t (|addModemap1| op mc sig pred fn env))))
+
+(defun |addModemap1| (op mc sig pred fn env)
+ (let (currentProplist newModemapList newProplist newProplistp)
+  (when (eq mc '|Rep|) (setq sig (subst '$ '|Rep| sig :test #'equal)))
+  (setq currentProplist (or (|getProplist| op env) nil))
+  (setq newModemapList
+   (|mkNewModemapList| mc sig pred fn
+     (lassoc '|modemap| currentProplist) env nil))
+  (setq newProplist (|augProplist| currentProplist '|modemap| newModemapList))
+  (setq newProplistp (|augProplist| newProplist 'fluid t))
+  (|unErrorRef| op)
+  (|addBinding| op newProplistp env)))
+
+(defun |addNewDomain| (domain env)
+  (|augModemapsFromDomain| domain domain env))
+
+(defun add-parens-and-semis-to-line (slines slocs)
+ (let ((start-column (car slocs)))
+  (when (and start-column (> start-column 0))
+   (let ((count 0) (i 0))
+    (seq
+     (mapl #'(lambda (next-lines nlocs)
+              (let ((next-line (car next-lines)) (next-column (car nlocs)))
+               (incf i)
+               (when next-column
+                (setq next-column (abs next-column))
+                (when (< next-column start-column) (exit nil))
+                (cond
+                 ((and (eq next-column start-column)
+                       (rplaca nlocs (- (car nlocs)))
+                       (not (infixtok next-line)))
+                   (setq next-lines (drop (1- i) slines))
+                   (rplaca next-lines (addclose (car next-lines) #\;))
+                   (setq count (1+ count)))))))
+                 (cdr slines) (cdr slocs)))
+     (when (> count 0)
+      (setf (char (car slines) (1- (nonblankloc (car slines)))) #\( )
+      (setq slines (drop (1- i) slines))
+      (rplaca slines (addclose (car slines) #\) )))))))
+ 
+(defun |addSuffix| (n u)
+ (let (s)
+  (if (alpha-char-p (elt (setq s (princ-to-string u)) (maxindex s)))
+    (intern (strconc s (princ-to-string n)))
+    (internl (strconc s (princ-to-string '|;|) (princ-to-string n))))))
+
+(defun Advance-Char ()
+  "Advances IN-STREAM, invoking Next Line if necessary."
+ (declare (special in-stream))
+ (loop
+  (cond
+   ((not (Line-At-End-P Current-Line))
+    (return (Line-Advance-Char Current-Line)))
+   ((next-line in-stream) 
+    (return (current-char)))
+   ((return nil)))))
+
+(defun advance-token ()
+  (current-token)                        ;don't know why this is needed
+  (case valid-tokens
+    (0 (try-get-token (current-token)))
+    (1 (decf valid-tokens)
+       (setq prior-token (copy-token current-token))
+       (try-get-token current-token))
+    (2 (setq prior-token (copy-token current-token))
+       (setq current-token (copy-token next-token))
+       (decf valid-tokens))))
+
+(defun |alistSize| (c)
+ (labels (
+  (count (x level)
+   (cond
+    ((eql level 2)  (|#| x))
+    ((null x) 0)
+    (+ (count (cdar x) (1+ level))
+       (count (cdr x) level)))))
+ (count c 1)))
+
+(defun |allLASSOCs| (op alist)
+ (loop for value in alist
+  when (equal (car value) op)
+  collect value))
+
+(defun aplTran (x)
+ (let ($genno u)
+ (declare (special $genno $boot))
+  (cond
+   ($boot x)
+   (t
+    (setq $genno 0)
+    (setq u (aplTran1 x))
+    (cond
+     ((containsBang u)
+      (|throwKeyedMsg|
+       (format nil 
+         " AXIOM cannot now process ! in the way you have used it. ~
+          Use parentheses, if appropriate.")
+       nil))
+     (t u))))))
+
+(defun aplTran1 (x)
+ (let (op argl1 argl f y opprime yprime tmp1 arglAssoc futureArgl g)
+ (declare (special $boot))
+  (if (atom x)
+   x
+   (progn
+    (setq op (car x))
+    (setq argl1 (cdr x))
+    (setq argl (aplTranList argl1))
+    (cond
+     ((eq op '!)
+      (cond
+       ((and (consp argl)
+             (progn
+              (setq f (qfirst argl))
+              (setq tmp1 (qrest argl))
+              (and (consp tmp1)
+                   (eq (qrest tmp1) nil)
+                   (progn
+                    (setq y (qfirst tmp1))
+                    t))))
+         (cond
+          ((and (consp y)
+                (progn
+                 (setq opprime (qfirst y))
+                 (setq yprime (qrest y))
+                 t)
+                (eq opprime '!))
+            (aplTran1 (cons op (cons op (cons f yprime)))))
+          ($boot 
+           (cons 'collect
+            (cons
+             (list 'in (setq g (genvar)) (aplTran1 y))
+              (list (list f g ) ))))
+          (t
+           (list 'map f (aplTran1 y) ))))
+       (t x)))
+     ((progn
+       (setq tmp1 (hasAplExtension argl))
+       (and (consp tmp1)
+            (progn
+             (setq arglAssoc (qfirst tmp1))
+             (setq futureArgl (qrest tmp1))
+             t)))
+       (cons '|reshape|
+        (cons
+         (cons 'collect
+          (append
+           (do ((tmp3 arglAssoc (cdr tmp3)) (tmp4 nil))
+               ((or (atom tmp3)
+                    (progn (setq tmp4 (car tmp3)) nil)
+                    (progn
+                      (setq g (car tmp4))
+                      (setq a (cdr tmp4))
+                      nil))
+                   (nreverse0 tmp2))
+              (push (list 'in g (list 'identity a)) tmp2)))
+          (list (aplTran1 (cons op futureArgl)))))
+         (list (cdar arglAssoc))))
+     (t (cons op argl)))))))
+
+(defun aplTranList (x)
+ (if (atom x) 
+  x
+  (cons (aplTran1 (car x)) (aplTranList (cdr x)))))
+
+(defun |applyMapping| (t0 m e ml)
+ (prog (op argl mlp temp1 arglp nprefix opp form pairlis)
+ (declare (special |$FormalMapVariableList| |$form| |$op| |$prefix|
+                   |$formalArgList|))
+  (return
+   (progn
+    (setq op (car t0))
+    (setq argl (cdr t0))
+    (cond
+     ((not (eql (|#| argl) (1- (|#| ml)))) nil)
+     ((|isCategoryForm| (car ml) e)
+      (setq pairlis
+       (loop for a in argl for v in |$FormalMapVariableList|
+        collect (cons v a)))
+      (setq mlp (sublis pairlis ml))
+      (setq arglp
+       (loop for x in argl for mp in (rest mlp)
+        collect (car
+                 (progn
+                  (setq temp1 (or (|comp| x mp e) (return '|failed|)))
+                  (setq e (caddr temp1))
+                  temp1))))
+      (when (eq arglp '|failed|) (return nil))
+      (setq form (cons op arglp))
+      (|convert| (list form (car mlp) e) m))
+     (t
+      (setq arglp
+       (loop for x in argl for mp in (rest ml)
+        collect (car
+                 (progn
+                  (setq temp1 (or (|comp| x mp e) (return '|failed|)))
+                  (setq e (caddr temp1))
+                  temp1))))
+      (when (eq arglp '|failed|) (return nil))
+      (setq form
+       (cond
+        ((and (null (|member| op |$formalArgList|))
+              (atom op)
+              (null (|get| op '|value| e)))
+          (setq nprefix 
+           (or |$prefix| (|getAbbreviation| |$op| (|#| (cdr |$form|)))))
+          (setq opp
+           (intern (strconc
+                    (|encodeItem| nprefix) '|;| (|encodeItem| op))))
+          (cons opp (append arglp (list '$))))
+        (t
+         (cons '|call| (cons (list '|applyFun| op) arglp)))))
+      (setq pairlis
+       (loop for a in arglp for v in |$FormalMapVariableList|
+        collect (cons v a)))
+      (|convert| (list form (sublis pairlis (car ml)) e) m)))))))
+
+(defun |argsToSig| (args)
+ (let (tmp1 v tmp2 tt sig1 arg1 bad)
+  (cond
+   ((and (consp args) (eq (qfirst args) '|:|)
+         (progn
+          (setq tmp1 (qrest args))
+          (and (consp tmp1)
+               (progn
+                (setq v (qfirst tmp1))
+                (setq tmp2 (qrest tmp1))
+                (and (consp tmp2)
+                     (eq (qrest tmp2) nil)
+                     (progn
+                      (setq tt (qfirst tmp2))
+                      t))))))
+    (list (list v) (list tt)))
+   (t 
+    (setq sig1 nil) 
+    (setq arg1 nil)
+    (setq bad nil)
+    (dolist (arg args)
+      (cond
+       ((and (consp arg) (eq (qfirst arg) '|:|)
+             (progn
+              (setq tmp1 (qrest arg))
+              (and (consp tmp1)
+                   (progn
+                    (setq v (qfirst tmp1))
+                    (setq tmp2 (qrest tmp1))
+                    (and (consp tmp2) (eq (qrest tmp2) nil)
+                         (progn
+                          (setq tt (qfirst tmp2))
+                          t))))))
+         (setq sig1 (cons tt sig1))
+         (setq arg1 (cons v arg1)))
+        (t (setq bad t))))
+    (cond
+     (bad (list nil nil ))
+     (t (list (reverse arg1) (reverse sig1))))))))
+
+(defun |assignError| (val mp form m)
+ (let (message)
+  (setq message
+   (if val
+    (list '|CANNOT ASSIGN: | val '|%l| 
+          '|   OF MODE: | mp '|%l| 
+          '|   TO: | form '|%l| '|   OF MODE: | m)
+    (list '|CANNOT ASSIGN: | val '|%l| 
+          '|   TO: | form '|%l| '|   OF MODE: | m)))
+  (|stackMessage| message)))
+
+(defun |AssocBarGensym| (key z)
+ (loop for x in z
+  do (when (and (consp x) (|EqualBarGensym| key (car x))) (return x))))
+
+(defun |augLisplibModemapsFromCategory| (form body signature)
+ (let (argl sl opAlist nonCategorySigAlist domainList catPredList op sig 
+       pred sel predp modemap)
+ (declare (special |$lisplibModemapAlist| |$EmptyEnvironment|
+                   |$domainShell| |$PatternVariableList|))
+  (setq op (car form))
+  (setq argl (cdr form))
+  (setq sl
+   (cons (cons '$ '*1)
+    (loop for a in argl for p in (rest |$PatternVariableList|)
+     collect (cons a p))))
+  (setq form (sublis sl form))
+  (setq body (sublis sl body))
+  (setq signature (sublis sl signature))
+  (when (setq opAlist (sublis sl (elt |$domainShell| 1)))
+   (setq nonCategorySigAlist
+    (|mkAlistOfExplicitCategoryOps| (subst '*1 '$ body :test #'equal)))
+   (setq domainList
+    (loop for a in (rest form) for m in (rest signature)
+     when (|isCategoryForm| m |$EmptyEnvironment|)
+     collect (list a m)))
+  (setq catPredList
+   (loop for u in (cons (list '*1 form) domainList)
+    collect (cons '|ofCategory| u)))
+  (loop for entry in opAlist 
+   when (|member| (cadar entry) (lassoc (caar entry) nonCategorySigAlist))
+   do 
+    (setq op (caar entry))
+    (setq sig (cadar entry))
+    (setq pred (cadr entry))
+    (setq sel (caddr entry))
+    (setq predp (mkpf (cons pred catPredList) 'and))
+    (setq modemap (list (cons '*1 sig) (list predp sel)))
+    (setq |$lisplibModemapAlist|
+      (cons (cons op (|interactiveModemapForm| modemap))
+            |$lisplibModemapAlist|))))))
+
+(defun |augmentLisplibModemapsFromFunctor| (form opAlist signature)
+ (let (argl nonCategorySigAlist op pred sel predList sig predp z skip modemap)
+ (declare (special |$lisplibModemapAlist| |$PatternVariableList| |$e|))
+  (setq form (|formal2Pattern| form))
+  (setq argl (cdr form))
+  (setq opAlist (|formal2Pattern| opAlist))
+  (setq signature (|formal2Pattern| signature))
+  ; We are going to be EVALing categories containing these pattern variables
+  (loop for u in form for v in signature 
+   do (when (member u |$PatternVariableList|)
+       (setq |$e| (|put| u '|mode| v |$e|))))
+  (when 
+   (setq nonCategorySigAlist (|mkAlistOfExplicitCategoryOps| (CAR signature)))
+   (loop for entry in opAlist 
+    do
+     (setq op (caar entry))
+     (setq sig (cadar entry))
+     (setq pred (cadr entry))
+     (setq sel (caddr entry))
+     (when 
+      (let (result)
+       (loop for catSig in (|allLASSOCs| op nonCategorySigAlist)
+        do (setq result (or result  (|member| sig catSig))))
+       result)
+     (setq skip (when (and argl (contained '$ (cdr sig))) 'skip))
+     (setq sel (subst form '$ sel :test #'equal))
+     (setq predList
+      (loop for a in argl for m in (rest signature)
+       when (|member| a |$PatternVariableList|)
+       collect (list a m)))
+     (setq sig (subst form '$ sig :test #'equal))
+     (setq predp
+      (mkpf
+       (cons pred (loop for y in predList collect (|mkDatabasePred| y)))
+       'and))
+     (setq z (|listOfPatternIds| predList))
+     (when (some #'(lambda (u) (null (member u z))) argl)
+       (|sayMSG| (list "cannot handle modemap for " op "by pattern match"))
+       (setq skip 'skip))
+     (setq modemap (list (cons form sig) (cons predp (cons sel skip))))
+     (setq |$lisplibModemapAlist|
+      (cons
+       (cons op (|interactiveModemapForm| modemap))
+       |$lisplibModemapAlist|)))))))
+
+(defun |augModemapsFromCategory| (domainName functorform categoryForm env)
+ (let (tmp1 op sig cond fnsel)
+ (declare (special |$base|))
+  (setq tmp1 (|evalAndSub| domainName domainName functorform categoryForm env))
+  (|compilerMessage| (list '|Adding | domainName '| modemaps|))
+  (setq env (|putDomainsInScope| domainName (second tmp1)))
+  (setq |$base| 4)
+  (dolist (u (first tmp1))
+    (setq op (caar u))
+    (setq sig (cadar u))
+    (setq cond (cadr u))
+    (setq fnsel (caddr u))
+    (setq env (|addModemapKnown| op domainName sig cond fnsel env)))
+  env))
+
+(defun |augModemapsFromCategoryRep|
+         (domainName repDefn functorBody categoryForm env)
+ (labels (
+  (redefinedList (op z)
+   (let (result)
+    (dolist (u z result)
+     (setq result (or result (redefined op u))))))
+  (redefined (opname u)
+   (let (op z result)
+   (when (consp u)
+    (setq op (qfirst u))
+    (setq z (qrest u))
+    (cond
+     ((eq op 'def) (equal opname (caar z)))
+     ((member op '(progn seq)) (redefinedList opname z))
+     ((eq op 'cond)
+       (dolist (v z result)
+         (setq result (or result (redefinedList opname (cdr v)))))))))))
+ (let (fnAlist tmp1 repFnAlist catform lhs op sig cond fnsel u)
+ (declare (special |$base|))
+  (setq tmp1 (|evalAndSub| domainName domainName domainName categoryForm env))
+  (setq fnAlist (car tmp1))
+  (setq env (cadr tmp1))
+  (setq tmp1 (|evalAndSub| '|Rep| '|Rep| repDefn (|getmode| repDefn env) env))
+  (setq repFnAlist (car tmp1))
+  (setq env (cadr tmp1))
+  (setq catform
+    (if (|isCategory| categoryForm) (elt categoryForm 0) categoryForm))
+  (|compilerMessage| (list '|Adding | domainName '| modemaps|))
+  (setq env (|putDomainsInScope| domainName env))
+  (setq |$base| 4)
+  (dolist (term fnAlist)
+    (setq lhs (car term))
+    (setq op (caar term))
+    (setq sig (cadar term))
+    (setq cond (cadr term))
+    (setq fnsel (caddr term))
+    (setq u (|assoc| (subst '|Rep| domainName lhs :test #'equal) repFnAlist))
+    (if (and u (null (redefinedList op functorBody)))
+      (setq env (|addModemap| op domainName sig cond (caddr u) env))
+      (setq env (|addModemap| op domainName sig cond fnsel env))))
+  env)))
+
+(defun |augModemapsFromDomain| (name functorForm env)
+ (let (curDomainsInScope u innerDom)
+ (declare (special |$Category| |$DummyFunctorNames|))
+  (cond
+   ((|member| (or (ifcar name) name) |$DummyFunctorNames|)
+     env)
+   ((or (equal name |$Category|) (|isCategoryForm| name env))
+     env)
+   ((|member| name (setq curDomainsInScope  (|getDomainsInScope| env)))
+     env)
+   (t
+    (when (setq u (getdatabase (|opOf| functorForm) 'superdomain))
+      (setq env (|addNewDomain| (car u) env)))
+    (when (setq innerDom (|listOrVectorElementMode| name))
+      (setq env (|addDomain| innerDom env)))
+    (when (and (consp name) (eq (qfirst name) '|Union|))
+      (dolist (d (|stripUnionTags| (qrest name)))
+        (setq env (|addDomain| d env))))
+    (|augModemapsFromDomain1| name functorForm env)))))
+
+(defun |augModemapsFromDomain1| (name functorForm env)
+ (let (mappingForm categoryForm functArgTypes catform)
+  (cond
+   ((getl (ifcar functorForm) '|makeFunctionList|)
+     (|addConstructorModemaps| name functorForm env))
+   ((and (atom functorForm) (setq catform (|getmode| functorForm env)))
+     (|augModemapsFromCategory| name functorForm catform env))
+   ((setq mappingForm (|getmodeOrMapping| (ifcar functorForm) env))
+     (when (eq (car mappingForm) '|Mapping|) (car mappingForm))
+     (setq categoryForm (cadr mappingForm))
+     (setq functArgTypes (cddr mappingForm))
+     (setq catform
+       (|substituteCategoryArguments| (cdr functorForm) categoryForm))
+     (|augModemapsFromCategory| name functorForm catform env))
+   (t
+     (|stackMessage| (list functorForm '| is an unknown mode|))
+     env))))
+
+(defun |autoCoerceByModemap| (arg1 target)
+ (let (x source e map cexpr u fn y)
+ (declare (special |$fromCoerceable$|))
+  (setq x (first arg1))
+  (setq source (second arg1))
+  (setq e (third arg1))
+  (setq u
+   (loop for modemap in (|getModemapList| '|autoCoerce| 1 e)
+    do
+     (setq map (first modemap))
+     (setq cexpr (second modemap))
+    when
+     (and (consp map) (consp (qrest map)) (consp (qcddr map))
+                     (eq (qcdddr map) nil)
+                     (|modeEqual| (second map) target)
+                     (|modeEqual| (third map) source))
+    collect cexpr))
+  (when u
+   (setq fn
+    (let (result)
+     (loop for item in u
+      do 
+       (when (first item) (setq result (or result (second item)))))
+     result))
+    (when fn
+    (cond
+     ((and (consp source) (eq (qfirst source) '|Union|)
+           (|member| target (qrest source)))
+       (cond
+        ((and (setq y (|get| x '|condition| e))
+              (let (result)
+               (loop for u in y do
+                 (setq result
+                   (or result
+                    (and (consp u) (eq (qfirst u) '|case|) (consp (qrest u))
+                         (consp (qcddr u))
+                         (eq (qcdddr u) nil)
+                         (equal (qthird u) target)))))
+               result))
+          (list (list '|call| fn x) target e))
+        ((eq x '|$fromCoerceable$|) nil)
+        (t
+         (|stackMessage|
+          (list '|cannot coerce: | x '|%l| '|      of mode: | source 
+                '|%l| '|      to: | target '| without a case statement|)))))
+     (t
+       (list (list '|call| fn x) target e)))))))
+
+
+(defun blankp (char)
+ (or (eq char #\Space) (eq char #\tab)))
+
+(defun |bootStrapError| (functorForm sourceFile)
+ (list 'cond
+  (list '|$bootStrapMode|
+   (list 'vector (|mkDomainConstructor| functorForm) nil nil nil nil nil))
+  (list ''t
+   (list '|systemError|
+    (list 'list (MKQ (CAR functorForm)) "from"
+          (mkq (|namestring| sourceFile)) "needs to be compiled")))))
+
+(defun |buildLibAttr| (name argl pred)
+ (let (argPart predString header conname comments)
+ (declare (special |$kind| |$conname| |$doc| |$conform| 
+                   |$FormalMapVariableList| |$exposed?|))
+  (setq header (strconc "a" (princ-to-string name)))
+  (setq argPart (substring (|form2LispString| (cons '|f| argl)) 1 nil))
+  (setq pred (sublislis (cdr |$conform|) |$FormalMapVariableList| pred))
+  (setq predString (if (eq pred t) "" (|form2LispString| pred)))
+  (setq header (strconc "a" (princ-to-string name)))
+  (setq conname (strconc |$kind| (|form2LispString| |$conname|)))
+  (setq comments
+   (|concatWithBlanks| (lassoc (cons '|attribute| argl) (lassoc name |$doc|))))
+  (|checkCommentsForBraces| '|attribute| (princ-to-string name) argl comments)
+  (|writedb|
+   (|buildLibdbString|
+    (list header (|#| argl) |$exposed?| argPart 
+          conname predString comments)))))
+
+(defun |buildLibAttrs| (attrlist)
+ (let (name argl pred)
+  (loop for item in attrlist
+   do (|buildLibAttr| (car item) (cadr item) (cddr item)))))
+
+(defun |buildLibdb| (&rest G168131 &AUX options)
+ (dsetq options G168131)
+ (let (|$OpLst| |$AttrLst| |$DomLst| |$CatLst| |$PakLst| |$DefLst|
+        |$outStream| |$conname| |$conform| |$exposed?| |$doc|
+        |$kind| domainList comments constructorList tmp1 attrlist oplist)
+ (declare (special |$OpLst| |$AttrLst| |$DomLst| |$CatLst| |$PakLst|
+                   |$DefLst| |$outStream| |$conname| |$conform|
+                   |$exposed?| |$doc| |$kind|))
+   (setq domainList (ifcar options))
+   (setq |$OpLst| nil)
+   (setq |$AttrLst| nil)
+   (setq |$DomLst| nil)
+   (setq |$CatLst| nil)
+   (setq |$PakLst| nil)
+   (setq |$DefLst| nil)
+   (|deleteFile| "temp.text")
+   (setq |$outStream| (make-outstream "temp.text"))
+   (unless domainList
+    (setq comments
+     (concatenate 'string
+      "\\spad{Union(A,B,...,C)} is a primitive type in AXIOM used to "
+      "represent objects of type \\spad{A} or of type \\spad{B} or...or "
+      "of type \\spad{C}."))
+    (|writedb|
+     (|buildLibdbString|
+      (list "dUnion" 1 "x" "special" "(A,B,...,C)" 'UNION comments)))
+    (setq comments
+     (concatenate 'string
+       "\\spad{Record(a:A,b:B,...,c:C)} is a primitive type in AXIOM used "
+       "to represent composite objects made up of objects of type "
+       "\\spad{A}, \\spad{B},..., \\spad{C} which are indexed by \"keys\""
+       " (identifiers) \\spad{a},\\spad{b},...,\\spad{c}."))
+    (|writedb|
+     (|buildLibdbString|
+      (list "dRecord" 1 "x" "special" "(a:A,b:B,...,c:C)" 'RECORD comments)))
+    (setq comments
+     (concatenate 'string
+      "\\spad{Mapping(T,S)} is a primitive type in AXIOM used to represent"
+      " mappings from source type \\spad{S} to target type \\spad{T}. "
+      "Similarly, \\spad{Mapping(T,A,B)} denotes a mapping from source "
+      "type \\spad{(A,B)} to target type \\spad{T}."))
+    (|writedb|
+     (|buildLibdbString|
+      (list "dMapping" 1 "x" "special" "(T,S)" 'MAPPING comments)))
+    (setq comments
+     (concatenate 'string
+      "\\spad{Enumeration(a,b,...,c)} is a primitive type in AXIOM used to "
+      "represent the object composed of the symbols \\spad{a},\\spad{b},"
+      "..., and \\spad{c}."))
+    (|writedb|
+     (|buildLibdbString|
+      (list "dEnumeration" 1 "x" "special" "(a,b,...,c)" 'ENUM comments))))
+   (setq |$conname| nil)
+   (setq |$conform| nil)
+   (setq |$exposed?| nil)
+   (setq |$doc| nil)
+   (setq |$kind| nil)
+   (setq constructorList (or domainList (|allConstructors|)))
+   (loop for con in constructorList do
+     (|writedb| (|buildLibdbConEntry| con))
+     (setq tmp1 (|getConstructorExports| |$conform|))
+     (setq attrlist (car tmp1))
+     (setq oplist (cdr tmp1))
+     (|buildLibOps| oplist)
+     (|buildLibAttrs| attrlist))
+   (shut |$outStream|)
+   (unless domainList 
+     (obey "sort  \"temp.text\"  > \"libdb.text\"")
+     (rename-file "libdb.text" "olibdb.text")
+     (|deleteFile| "temp.text"))))
+
+(defun |buildLibdbConEntry| (conname)
+ (let (abb conform pname kind argl tmp1 conComments argpart sigpart header)
+ (declare (special |$exposed?| |$doc| |$kind| |$conname| |$conform|))
+  (cond
+   ((null (getdatabase conname 'constructormodemap)) nil)
+   (t
+    (setq abb (getdatabase conname 'abbreviation))
+    (setq |$conname| conname)
+    (setq conform (or (getdatabase conname 'constructorform) (list conname)))
+    (setq |$conform| (|dbMkForm| (msubst 't 'T$ conform)))
+    (cond
+     ((null |$conform|) nil)
+     (t
+      (setq |$exposed?| (if (|isExposedConstructor| conname) "x" "n"))
+      (setq |$doc| (getdatabase conname 'documentation))
+      (setq pname (pname conname))
+      (setq kind (getdatabase conname 'constructorkind))
+      (cond
+       ((and (eq kind '|domain|)
+             (progn 
+              (setq tmp1 (getdatabase conname 'constructormodemap))
+              (and (consp tmp1)
+                   (consp (qcar tmp1))
+                   (consp (qcdar tmp1))))
+             (consp (qcadar tmp1)) (eq (qcaadar tmp1) 'category)
+             (progn
+              (and (consp (qcdadar tmp1)) 
+                   (eq (qcar (qcdadar tmp1)) '|package|))))
+         (setq kind '|package|)))
+     (setq |$kind|
+       (if (char= (elt pname (maxindex pname)) #\&) 
+        '|x|
+        (downcase (elt (pname kind) 0))))
+     (setq argl (cdr |$conform|))
+     (setq conComments
+      (cond
+       ((progn
+         (setq tmp1 (lassoc '|constructor| |$doc|))
+         (and (consp tmp1)
+              (eq (qcdr tmp1) nil)
+              (consp (qcar tmp1))
+              (equal (qcaar tmp1) nil)))
+         (|libdbTrim| (|concatWithBlanks| (qcdar tmp1))))
+       (t "")))
+     (setq argpart (substring (|form2HtString| (cons '|f| argl)) 1 nil))
+     (setq sigpart (|libConstructorSig| |$conform|))
+     (setq header (strconc |$kind| (pname conname)))
+     (|buildLibdbString|
+       (list header (|#| argl) |$exposed?| 
+             sigpart argpart abb conComments))))))))
+
+(defun |buildLibdbString| (arg)
+ (let (x u)
+  (setq x (car arg))
+  (setq u (cdr arg))
+  (strconc (princ-to-string x)
+   (let ((result ""))
+    (loop for y in u
+     collect (setq result (strconc result (strconc "`" (princ-to-string y)))))
+    result))))
+
+(defun |buildLibOp| (op sig pred)
+ (let (nsig sigpart predString s sop header conform comments)
+ (declare (special |$kind| |$doc| |$exposed?| |$conform|))
+  (setq nsig (sublislis (cdr |$conform|) |$FormalMapVariableList| sig))
+  (setq pred (sublislis (cdr |$conform|) |$FormalMapVariableList| pred))
+  (setq nsig (msubst 't 't$ nsig))
+  (setq pred (msubst 't 't$ pred))
+  (setq sigpart (|form2LispString| (cons '|Mapping| nsig)))
+  (setq predString (if (eq pred t) "" (|form2LispString| pred)))
+  (setq sop
+   (cond
+    ((string= (setq s (princ-to-string op)) "One") "1")
+    ((string= s "Zero") "0")
+    (t s)))
+  (setq header (strconc "o" sop))
+  (setq conform (strconc |$kind| (|form2LispString| |$conform|)))
+  (setq comments
+    (|libdbTrim| (|concatWithBlanks| (lassoc sig (lassoc op |$doc|)))))
+  (|checkCommentsForBraces| '|operation| sop sigpart comments)
+  (|writedb|
+   (|buildLibdbString|
+    (list header (|#| (cdr sig)) |$exposed?| sigpart 
+          conform predString comments)))))
+
+(defun |buildLibOps| (oplist)
+ (loop for item in oplist
+   do (|buildLibOp| (car item) (cadr item) (cddr item))))
+
+(defun bumperrorcount (kind)
+ (declare (special |$InteractiveMode| $spad_errors))
+ (unless |$InteractiveMode|
+  (let ((index (case kind
+                (|syntax| 0)
+                (|precompilation| 1)
+                (|semantic| 2)
+                (t (error (break "BUMPERRORCOUNT: kind=~s~%" kind))))))
+    (setelt $spad_errors index (1+ (elt $spad_errors index))))))
+
+
+(defun |canReturn| (expr level exitCount ValueFlag)
+ (labels (
+  (findThrow (gs expr level exitCount ValueFlag)
+   (cond
+    ((atom expr) nil)
+    ((and (consp expr) (eq (qfirst expr) 'throw) (consp (qrest expr))
+          (equal (qsecond expr) gs) (consp (qcddr expr))
+          (eq (qcdddr expr) nil))
+      t)
+    ((and (consp expr) (eq (qfirst expr) 'seq))
+     (let (result)
+       (loop for u in (qrest expr)
+        do (setq result 
+            (or result
+             (findThrow gs u (1+ level) exitCount ValueFlag))))
+        result))
+    (t 
+     (let (result)
+       (loop for u in (rest expr)
+        do (setq result 
+            (or result
+             (findThrow gs u level exitCount ValueFlag))))
+        result)))))
+ (let (op gs)
+  (cond
+   ((atom expr) (and ValueFlag (equal level exitCount)))
+   ((eq (setq op (car expr)) 'quote) (and ValueFlag (equal level exitCount)))
+   ((eq op '|TAGGEDexit|)
+    (cond
+     ((and (consp expr) (consp (qrest expr)) (consp (qcddr expr))
+           (eq (qcdddr expr) nil))
+       (|canReturn| (car (third expr)) level (second expr)
+                    (equal (second expr) level)))))
+     ((and (equal level exitCount) (null ValueFlag))
+       nil)
+     ((eq op 'seq)
+      (let (result)
+       (loop for u in (rest expr) 
+        do (setq result (or result (|canReturn| u (1+ level) exitCount nil))))
+       result))
+     ((eq op '|TAGGEDreturn|) nil)
+     ((eq op 'catch)
+      (cond
+       ((findThrow (second expr) (third expr) level
+                       exitCount ValueFlag)
+         t)
+       (t
+        (|canReturn| (third expr) level exitCount ValueFlag))))
+     ((eq op 'cond)
+      (cond
+       ((equal level exitCount)
+        (let (result)
+         (loop for u in (rest expr)
+          do (setq result (or result 
+              (|canReturn| (|last| u) level exitCount ValueFlag))))
+         result))
+       (t
+        (let (outer)
+         (loop for v in (rest expr)
+          do (setq outer (or outer
+              (let (inner)
+               (loop for u in v
+                do (setq inner
+                    (or inner
+                     (findThrow gs u level exitCount ValueFlag))))
+               inner))))
+          outer))))
+     ((eq op 'if)
+       (and (consp expr) (consp (qrest expr)) (consp (qcddr expr))
+            (consp (qcdddr expr))
+            (eq (qcddddr expr) nil))
+        (cond
+         ((null (|canReturn| (second expr) 0 0 t))
+           (say "IF statement can not cause consequents to be executed")
+           (|pp| expr)))
+          (or (|canReturn| (second expr) level exitCount nil)
+              (|canReturn| (third expr) level exitCount ValueFlag)
+              (|canReturn| (fourth expr) level exitCount ValueFlag)))
+     ((atom op)
+      (let ((result t))
+       (loop for u in expr
+        do (setq result
+            (and result (|canReturn| u level exitCount ValueFlag))))
+       result))
+     ((and (consp op) (eq (qfirst op) 'xlam) (consp (qrest op))
+           (consp (qcddr op)) (eq (qcdddr op) nil))
+       (let ((result t))
+        (loop for u in expr
+         do (setq result
+              (and result (|canReturn| u level exitCount ValueFlag))))
+        result))
+      (t (|systemErrorHere| "canReturn"))))))
+
+(defun char-eq (x y)
+ (char= (character x) (character y)))
+
+(defun char-ne (x y)
+ (char/= (character x) (character y)))
+
+(defun |checkAddBackSlashes| (s)
+ (let (c m char insertIndex k)
+ (declare (special |$charEscapeList|))
+  (cond
+   ((or (and (charp s) (setq c s))
+        (and (eql (|#| s) 1) (setq c (elt s 0))))
+     (if (member s |$charEscapeList|)
+      (strconc #\\ c)
+      s))
+    (t
+     (setq k 0)
+     (setq m (maxindex s))
+     (setq insertIndex nil)
+     (loop while (< k m)
+      do
+       (setq char (elt s k))
+       (cond
+        ((char= char #\\) (setq k (+ k 2)))
+        ((member char |$charEscapeList|) (return (setq insertIndex k))))
+        (setq k (1+ k)))
+     (cond
+      (insertIndex
+       (|checkAddBackSlashes|
+        (strconc (substring s 0 insertIndex) #\\ (elt s k)
+                 (substring s (1+ insertIndex) nil))))
+      (T s))))))
+
+(defun |checkAddIndented| (x margin)
+ (let (k)
+  (setq k (|firstNonBlankPosition| x))
+  (cond
+    ((eql k -1) "\\blankline ")
+    ((eql margin k) x)
+    (t
+     (strconc "\\indented{" (princ-to-string (- k margin)) "}{"
+      (|checkAddSpaceSegments| (substring x k nil) 0) "}")))))
+
+(defun |checkAddMacros| (u)
+ (let (x verbatim y acc)
+ (declare (special |$HTmacs|))
+  (loop while u
+   do
+   (setq x (car u))
+   (setq acc
+    (cond
+     ((string= x "\\end{verbatim}")
+       (setq verbatim nil)
+       (cons x acc))
+     (verbatim 
+       (cons x acc))
+     ((string= x "\\begin{verbatim}")
+       (setq verbatim t)
+       (cons x acc))
+     ((setq y (lassoc x |$HTmacs|))
+       (append y acc))
+     (t (cons x acc))))
+   (pop u))
+  (nreverse acc)))
+
+(defun |checkAddPeriod| (s)
+ (let (m lastChar)
+  (setq m (maxindex s))
+  (setq lastChar (elt s m))
+  (cond
+   ((or (char= lastChar #\!) (char= lastChar #\?) (char= lastChar #\.)) s)
+   ((or (char= lastChar #\,) (char= lastChar #\;))
+     (setelt s m #\.) 
+     s)
+   (t s))))
+
+(defun |checkAddSpaces| (u)
+ (let (u2 space i)
+ (declare (special |$charFauxNewline|))
+  (cond
+   ((null u) nil)
+   ((null (cdr u)) u)
+   (t
+    (setq space #\space) 
+    (setq i 0)
+    (loop for f in u 
+     do
+      (incf i)
+      (when (string= f "\\begin{verbatim}")
+        (setq space |$charFauxNewline|)
+        (unless u2 (setq u2 (list space))))
+      (if (> i 1) 
+        (setq u2 (append u2 (list space f)))
+        (setq u2 (append u2 (list f))))
+      (when (string= f "\\end{verbatim}")
+        (setq u2 (append u2 (list space)))
+        (setq space #\space)))
+    u2))))
+
+(defun |checkAddSpaceSegments| (u k)
+ (let (m i j n)
+  (setq m (maxindex u))
+  (setq i (|charPosition| #\space u k))
+  (cond
+   ((> i m) u)
+   (t
+    (setq j i)
+    (loop while (and (incf j) (char= (elt u j) #\space)))
+    (setq n (- j i)) ; number of blanks
+    (if (> n 1)
+     (strconc (substring u 0 i) "\\space{" (princ-to-string n) "}"
+               (|checkAddSpaceSegments| (substring u (+ i n) nil) 0))
+     (|checkAddSpaceSegments| u j))))))
+
+(defun |checkAlphabetic| (c)
+ (declare (special |$charIdentifierEndings|))
+ (or (alpha-char-p c) (digitp c) (member c |$charIdentifierEndings|)))
+
+(defun |checkAndDeclare| (argl form sig env)
+ (let (m1 stack)
+  (loop for a in argl for m in (rest sig)
+   do
+    (if (setq m1 (|getArgumentMode| a env))
+     (if (null (|modeEqual| m1 m))
+       (setq stack
+        (cons '|   | (append (|bright| a)
+          (cons "must have type "
+           (cons m
+            (cons " not "
+             (cons m1
+               (cons '|%l| stack)))))))))
+      (setq env (|put| a '|mode| m env))))
+  (when stack
+   (|sayBrightly|
+    (cons "   Parameters of "
+     (append (|bright| (car form))
+       (cons " are of wrong type:"
+        (cons '|%l| stack))))))
+  env))
+
+(defun |checkArguments| (u)
+ (let (x k)
+ (declare (special |$htMacroTable|))
+  (loop while u
+   do (setq x (car u))
+      (cond
+       ((null (setq k (hget |$htMacroTable| x))) '|skip|)
+       ((eql k 0) '|skip|)
+       ((> k 0) (|checkHTargs| x (cdr u) k nil))
+       (t (|checkHTargs| x (cdr u) (- k) t)))
+       (pop u))
+  u))
+
+(defun |checkBalance| (u)
+ (let (x openClose open top restStack stack)
+ (declare (special |$checkPrenAlist|))
+  (|checkBeginEnd| u)
+  (setq stack nil)
+  (loop while u
+   do
+    (setq x (car u))
+    (cond
+     ((setq openClose (|assoc| x |$checkPrenAlist|))
+       (setq stack (cons (car openClose) stack)))
+     ((setq open (|rassoc| x |$checkPrenAlist|))
+       (cond
+        ((consp stack)
+          (setq top (qcar stack))
+          (setq restStack (qcdr stack))
+          (when (not (eq open top))
+            (|checkDocError| 
+              (list "Mismatch: left "  (|checkSayBracket| top) 
+                    " matches right " (|checkSayBracket| open))))
+          (setq stack restStack))
+        (t
+         (|checkDocError|
+          (list "Missing left " (|checkSayBracket| open)))))))
+    (pop u))
+   (when stack
+    (loop for x in (nreverse stack)
+     do
+      (|checkDocError| (list "Missing right " (|checkSayBracket| x)))))
+  u))
+
+(defun |checkBeginEnd| (u)
+ (let (x y beginEndStack)
+ (declare (special |$beginEndList| |$htMacroTable|))
+  (loop while u
+   do
+    (setq x (car u))
+    (cond
+     ((and (stringp x) (equal (elt x 0) #\\) (> (|#| x) 2)
+           (null (hget |$htMacroTable| x)) (null (equal x "\\spadignore"))
+           (equal (ifcar (ifcdr u)) #\{)
+           (null (or (|substring?| "\\radiobox" x 0)
+                     (|substring?| "\\inputbox" x 0))))
+       (|checkDocError| (list '|Unexpected HT command: | x)))
+     ((equal x "\\beginitems")
+      (setq beginEndStack (cons '|items| beginEndStack)))
+     ((equal x "\\begin")
+      (cond
+       ((and (consp u) (consp (qcdr u)) (equal (qcar (qcdr u)) #\{)
+             (consp (qcddr u)) (equal (car (qcdddr u)) #\}))
+         (setq y (qcaddr u))
+         (cond
+          ((null (|member| y |$beginEndList|))
+            (|checkDocError| (list "Unknown begin type: \\begin{" y "}"))))
+         (setq beginEndStack (cons y beginEndStack))
+         (setq u (qcdddr u)))
+       (t (|checkDocError| (list "Improper \\begin command")))))
+     ((equal x "\\item")
+      (cond
+       ((|member| (ifcar beginEndStack) '("items" "menu")) nil)
+       ((null beginEndStack)
+         (|checkDocError| (list "\\item appears outside a \\begin-\\end")))
+       (t
+         (|checkDocError|
+          (list "\\item appears within a \\begin{" 
+                (ifcar beginEndStack) "}..")))))
+     ((equal x "\\end")
+      (cond
+       ((and (consp u) (consp (qcdr u)) (equal (qcar (qcdr u)) #\{)
+             (consp (qcddr u)) (equal (car (qcdddr u)) #\}))
+         (setq y (qcaddr u))
+         (cond
+          ((equal y (ifcar beginEndStack))
+            (setq beginEndStack (cdr beginEndStack))
+            (setq u (qcdddr u)))
+          (t
+           (|checkDocError|
+            (list "Trying to match \\begin{" (ifcar beginEndStack) 
+                  "} with \\end{" y "}")))))
+        (t
+         (|checkDocError| (list "Improper \\end command"))))))
+   (pop u))
+   (cond
+    (beginEndStack
+      (|checkDocError| (list "Missing \\end{" (car beginEndStack) "}")))
+    (t '|ok|))))
+
+(defun |checkComments| (nameSig lines)
+ (let (|$checkErrorFlag| margin w verbatim u2 okBefore u v res)
+ (declare (special |$checkErrorFlag| |$argl| |$attribute?|))
+  (setq |$checkErrorFlag| nil)
+  (setq margin (|checkGetMargin| lines))
+  (cond
+   ((and (or (null (boundp '|$attribute?|)) (null |$attribute?|))
+         (not (eq nameSig '|constructor|)))
+     (setq lines
+      (cons 
+       (|checkTransformFirsts| (car nameSig) (car lines) margin)
+       (cdr lines)))))
+     (setq u (|checkIndentedLines| lines margin))
+     (setq |$argl| (|checkGetArgs| (car u)))
+     (setq u2 nil)
+     (setq verbatim nil)
+     (loop for x in u
+      do (setq w (|newString2Words| x))
+         (cond
+          (verbatim
+           (cond
+            ((and w (equal (car w) "\\end{verbatim}"))
+              (setq verbatim nil)
+              (setq u2 (append u2 w)))
+            (t
+             (setq u2 (append u2 (list x))))))
+          ((and w (equal (car w) "\\begin{verbatim}"))
+            (setq verbatim t)
+            (setq u2 (append u2 w)))
+          (t (setq u2 (append u2 w)))))
+     (setq u u2)
+     (setq u (|checkAddSpaces| u))
+     (setq u (|checkIeEg| u))
+     (setq u (|checkSplit2Words| u))
+     (|checkBalance| u)
+     (setq okBefore (null |$checkErrorFlag|))
+     (|checkArguments| u)
+     (when |$checkErrorFlag| (setq u (|checkFixCommonProblem| u)))
+     (setq v (|checkDecorate| u))
+     (setq res
+      (let ((result ""))
+       (loop for y in v
+        do (setq result (strconc result y)))
+      result))
+     (setq res (|checkAddPeriod| res))
+     (when |$checkErrorFlag| (|pp| res))
+     res))
+
+(defun |checkDecorate| (u)
+ (let (x count mathSymbolsOk spadflag verbatim v xcount acc)
+ (declare (special |$argl| |$charExclusions| |$checkingXmptex?|))
+  (setq count 0)
+  (loop while u 
+   do
+    (setq x (car u))
+    (cond
+     ((null verbatim)
+      (cond
+       ((string= x "\\em")
+        (cond
+         ((> count 0)
+           (setq mathSymbolsOk (1- count))
+           (setq spadflag (1- count)))
+         (t
+          (|checkDocError| (list "\\em must be enclosed in braces"))))))
+      (when (|member| x '("\\spadpaste" "\\spad" "\\spadop"))
+        (setq mathSymbolsOk count))
+      (cond
+       ((|member| x '("\\s" "\\spadtype" "\\spadsys" "\\example" "\\andexample"
+                      "\\spadop" "\\spad" "\\spadignore" "\\spadpaste"
+                      "\\spadcommand" "\\footnote"))
+         (setq spadflag count))
+       ((equal x #\{)
+         (setq count (1+ count)))
+       ((equal x #\})
+         (setq count (1- count))
+         (when (eql mathSymbolsOk count) (setq mathSymbolsOk nil))
+         (when (eql spadflag count) (setq spadflag nil)))
+       ((and (null mathSymbolsOk)
+             (|member| x '("+" "*" "=" "==" "->")))
+        (when |$checkingXmptex?|
+          (|checkDocError| 
+           (list '|Symbol | x " appearing outside \\spad{}")))))))
+    (setq acc
+     (cond
+      ((string= x "\\end{verbatim}")
+        (setq verbatim nil)
+        (cons x acc))
+      (verbatim (cons x acc))
+      ((string= x "\\begin{verbatim}")
+       (setq verbatim t)
+       (cons x acc))
+      ((and (string= x "\\begin")
+            (equal (car (setq v (ifcdr u))) #\{)
+            (string= (car (setq v (ifcdr v))) "detail")
+            (equal (car (setq v (ifcdr v))) #\}))
+        (setq u v)
+        (cons "\\blankline " acc))
+      ((and (string= x "\\end")
+            (equal (car (setq v (ifcdr u))) #\{)
+            (string= (car (setq v (ifcdr v))) "detail")
+            (equal (car (setq v (ifcdr v))) #\}))
+        (setq u v) 
+        acc)
+      ((string= x "$");(or (char= x #\$) )
+        (cons "\\$" acc))
+      ((string= x "%");(or (char= x #\%))
+        (cons "\\%" acc))
+      ( (string= x ",");(or (char= x #\,))
+        (cons ",{}" acc))
+      ((string= x "\\spad")
+        (cons "\\spad" acc))
+      ((and (stringp x) (digitp (elt x 0)))
+        (cons x acc))
+      ((and (null spadflag)
+            (or (and (charp x) 
+                     (alpha-char-p x) 
+                     (null (member x |$charExclusions|)))
+                (|member| x |$argl|)))
+        (cons #\} (cons x (cons #\{ (cons "\\spad" acc)))))
+      ((and (null spadflag)
+            (or (and (stringp x)
+                     (null (equal (elt x 0) #\\))
+                     (digitp (elt x (maxindex x))))
+                (|member| x '("true" "false"))))
+        (cons #\} (cons x (cons #\{ (cons "\\spad" acc)))))
+      (t
+       (setq xcount (|#| x))
+       (cond
+        ((and (eql xcount 3)
+              (char= (elt x 1) #\t)
+              (char= (elt x 2) #\h))
+          (cons "th" (cons #\}
+            (cons (elt x 0) (cons #\{ (cons "\\spad" acc))))))
+        ((and (eql xcount 4)
+              (char= (elt x 1) #\-)
+              (char= (elt x 2) #\t)
+              (char= (elt x 3) #\h))
+         (cons "-th" (cons #\}
+           (cons (elt x 0) (cons #\{ (cons "\\spad" acc))))))
+        ((or (and (eql xcount 2)
+                  (char= (elt x 1) #\i))
+             (and (null spadflag)
+                  (> xcount 0)
+                  (> 4 xcount)
+                  (null (|member| x '("th" "rd" "st")))
+                  (|hasNoVowels| x)))
+         (cons #\}
+           (cons x (cons #\{ (cons "\\spad" acc)))))
+        (t
+         (cons (|checkAddBackSlashes| x) acc))))))
+    (setq u (cdr u)))
+  (nreverse acc)))
+
+(defun |checkDecorateForHt| (u)
+ (let (x count spadflag)
+ (declare (special |$checkingXmptex?|))
+  (setq count 0)
+  (setq spadflag nil)
+  (loop while u
+   do
+   (setq x (car u))
+   (when (equal x "\\em")
+    (if (> count 0) 
+     (setq spadflag (1- count))
+     (|checkDocError| (list "\\em must be enclosed in braces"))))
+   (cond
+    ((|member| x '("\\s" "\\spadop" "\\spadtype" "\\spad" "\\spadpaste"
+                   "\\spadcommand" "\\footnote"))
+     (setq spadflag count))
+    ((equal x #\{)
+     (setq count (1+ count)))
+    ((equal x #\})
+     (setq count (1- count))
+     (when (equal spadflag count) (setq spadflag nil)))
+    ((and (null spadflag) (|member| x '("+" "*" "=" "==" "->")))
+     (when |$checkingXmptex?|
+       (|checkDocError| (list '|Symbol | x " appearing outside \\spad{}"))))
+    (t nil))
+   (when (or (equal x "$") (equal x "%"))
+      (|checkDocError| (list "Unescaped " x)))
+   (pop u))
+  u))
+
+(defun |checkDocError| (u)
+ (let (msg)
+ (declare (special |$outStream| |$exposeFlag| |$exposeFlagHeading|
+                   |$constructorName| |$recheckingFlag| |$checkErrorFlag|))
+  (setq |$checkErrorFlag| t)
+  (setq msg
+   (cond
+    (|$recheckingFlag|
+      (if |$constructorName| 
+        (|checkDocMessage| u)
+        (|concat| "> " u)))
+    (|$constructorName| (|checkDocMessage| u))
+    (t u)))
+  (when (and |$exposeFlag| |$exposeFlagHeading|)
+     (saybrightly1 |$exposeFlagHeading| |$outStream|)
+     (|sayBrightly| |$exposeFlagHeading|)
+     (setq |$exposeFlagHeading| nil))
+  (|sayBrightly| msg)
+  (when |$exposeFlag| (saybrightly1 msg |$outStream|))))
+
+(defun |checkDocError1| (u)
+ (declare (special |$compileDocumentation|))
+ (if (and (boundp '|$compileDocumentation|) |$compileDocumentation|) 
+  nil
+  (|checkDocError| u)))
+
+(defun |checkDocMessage| (u)
+ (let (sourcefile person middle)
+ (declare (special |$constructorName| |$x|))
+  (setq sourcefile (getdatabase |$constructorName| 'sourcefile))
+  (setq person (or (|whoOwns| |$constructorName|) "---"))
+  (setq middle
+   (if (boundp '|$x|)
+    (list "(" |$x| "): ")
+    (list ": ")))
+  (|concat| person ">" sourcefile "-->" |$constructorName| middle u)))
+
+(defun |checkExtract| (header lines)
+ (let (line u margin firstLines m k j i acc)
+  (loop while lines
+   do
+    (setq line (car lines))
+    (setq k (|firstNonBlankPosition| line)) ; gives margin of description
+    (if (|substring?| header line k) 
+      (return nil)
+      (setq lines (cdr lines))))
+  (cond
+   ((null lines) nil)
+   (t
+    (setq u (car lines))
+    (setq j (|charPosition| #\: u k))
+    (setq margin k)
+    (setq firstLines
+     (if (not (eql (setq k (|firstNonBlankPosition| u (1+ j))) -1))
+       (cons (substring u (1+ j) nil) (cdr lines))
+       (cdr lines)))
+    ; now look for another header; if found skip all rest of these lines
+    (setq acc nil)
+    (loop for line in firstLines
+     do
+      (setq m (|#| line))
+      (cond
+       ((eql (setq k (|firstNonBlankPosition| line)) -1) '|skip|)
+       ((> k margin) '|skip|)
+       ((null (upper-case-p (elt line k))) '|skip|)
+       ((equal (setq j (|charPosition| #\: line k)) m) '|skip|)
+       ((> j (setq i (|charPosition| #\space line (1+ k)))) '|skip|)
+       (t (return nil)))
+      (setq acc (cons line acc)))
+    (nreverse acc)))))
+
+(defun |checkFixCommonProblem| (u)
+ (let (x next acc)
+ (declare (special |$HTspadmacros|))
+  (loop while u
+   do
+    (setq x (car u))
+    (cond
+     ((and (equal x #\{)
+           (|member| (setq next (ifcar (cdr u))) |$HTspadmacros|)
+           (not (equal (ifcar (ifcdr (cdr u))) #\{)))
+       (|checkDocError| (list "Reversing " next " and left brace"))
+       (setq acc (cons #\{ (cons next acc)))
+       (setq u (cddr u)))
+     (t
+      (setq acc (cons x acc))
+      (setq u (cdr u)))))
+  (nreverse acc)))
+
+(defun |checkGetArgs| (u)
+ (let (m k acc i)
+  (cond
+   ((null (stringp u)) nil)
+   (t
+    (setq m (maxindex u))
+    (setq k (|firstNonBlankPosition| u))
+    (cond
+     ((> k 0)
+      (|checkGetArgs| (substring u k nil)))
+     ((|stringPrefix?| "\\spad{" u)
+      (setq k (or (|getMatchingRightPren| u 6 #\{ #\}) m))
+      (|checkGetArgs| (substring u 6 (- k 6))))
+     ((> (setq i (|charPosition| #\( u 0)) m)
+      nil)
+     ((not (eql (elt u m) #\)))
+      nil)
+     (t
+      (do ()
+          ((null (> m (setq k (|charPosition| #\, u (1+ i))))) nil)
+        (setq acc 
+         (cons (|trimString| (substring u (1+ i) (1- (- k i)))) acc))
+        (setq i k))
+      (nreverse (cons (substring u (1+ i) (1- (- m i))) acc))))))))
+
+(defun |checkGetLispFunctionName| (s)
+ (let (n k j)
+  (setq n (|#| s))
+  (cond
+   ((and (setq k (|charPosition| #\| s 1))
+         (> n k)
+         (setq j (|charPosition| #\| s (1+ k)))
+         (> n j))
+     (substring s (1+ k) (1- (- j k))))
+   (t
+    (|checkDocError| (cons "Ill-formed lisp expression : " (list s)))
+    '|illformed|))))
+
+(defun |checkGetMargin| (lines)
+ (let (x k margin)
+  (loop while lines
+   do
+    (setq x (car lines))
+    (setq k (|firstNonBlankPosition| x))
+    (unless (= k -1) (setq margin (if margin (min margin k) k)))
+    (pop lines))
+  (or margin 0)))
+
+(defun |checkGetParse| (s)
+  (|ncParseFromString| (|removeBackslashes| s)))
+
+(defun |checkGetStringBeforeRightBrace| (u)
+ (prog (x acc)
+  (return
+   (loop while u
+    do
+     (setq x (car u))
+     (cond
+      ((equal x #\})
+       (let ((result ""))
+        (loop for item in acc
+         do (setq result (concatenate 'string item result)))
+        (return result)))
+      (t
+       (setq acc (cons x acc))
+       (setq u (cdr u))))))))
+
+(defun |checkHTargs| (keyword u nargs inteerValue?)
+  (cond
+   ((eql nargs 0) '|ok|)
+   ((null (setq u (|checkLookForLeftBrace| u)))
+      (|checkDocError| (list "Missing argument for " keyword)))
+   ((null (setq u (|checkLookForRightBrace| (ifcdr u))))
+      (|checkDocError| (list "Missing right brace for " keyword)))
+    (t
+     (|checkHTargs| keyword (cdr u) (1- nargs) inteerValue?))))
+
+(defun |checkIeEg| (u)
+ (let (x verbatim z acc)
+  (setq acc nil)
+  (setq verbatim nil)
+  (loop while u
+   do
+    (setq x (car u))
+    (setq acc
+     (cond
+      ((equal x "\\end{verbatim}")
+       (setq verbatim nil)
+       (cons x acc))
+      (verbatim (cons x acc))
+      ((equal x "\\begin{verbatim}")
+       (setq verbatim t)
+       (cons x acc))
+      ((setq z (|checkIeEgfun| x))
+       (append (nreverse z) acc))
+      (t (cons x acc))))
+    (setq u (cdr u)))
+   (nreverse acc)))
+
+(defun |checkIeEgfun| (x)
+ (let (m key firstPart result)
+  (cond
+   ((characterp x) nil)
+   ((equal x "") nil)
+   (t
+    (setq m (maxindex x))
+    (loop for k from 0 to (- m 3) 
+     do
+      (cond
+       ((and
+          (equal (elt x (1+ k)) #\.)
+          (equal (elt x (+ k 3)) #\.)
+          (or
+           (and
+            (equal (elt x k) #\i)
+            (equal (elt x (+ k 2)) #\e)
+            (setq key "that is"))
+           (and
+            (equal (elt x k) #\e)
+            (equal (elt x (+ k 2)) #\g)
+            (setq key "for example"))))
+         (progn
+          (setq firstPart (when (> k 0) (cons (substring x 0 k) nil)))
+          (setq result
+           (append firstPart
+            (cons "\\spadignore{"
+             (cons (substring x k 4)
+              (cons "}"
+               (|checkIeEgfun| (substring x (+ k 4) nil)))))))))))
+    result))))
+
+(defun |checkIndentedLines| (u margin)
+ (let (k s verbatim u2)
+ (declare (special |$charFauxNewline|))
+  (loop for x in u
+   do
+    (setq k (|firstNonBlankPosition| x))
+    (cond
+     ((eql k -1)
+      (if verbatim 
+       (setq u2 (append u2 (list |$charFauxNewline|)))
+       (setq u2 (append u2 (list "\\blankline ")))))
+     (t 
+      (setq s (substring x k nil))
+      (cond
+       ((string= s "\\begin{verbatim}")
+         (setq verbatim t)
+         (setq u2 (append u2 (list s))))
+       ((string= s "\\end{verbatim}")
+         (setq verbatim nil)
+         (setq u2 (append u2 (list s))))
+       (verbatim
+         (setq u2 (append u2 (list (substring x margin nil)))))
+       ((eql margin k)
+         (setq u2 (append u2 (list s))))
+       (t
+         (setq u2 
+          (append u2 
+           (list (strconc "\\indented{" (princ-to-string (- k margin))
+                          "}{" (|checkAddSpaceSegments| s 0) "}")))))))))
+  u2))
+
+(defun |checkIsValidType| (form)
+ (labels (
+  (fn (form coSig)
+   (cond
+    ((not (eql (|#| form) (|#| coSig))) form)
+    ((let (result)
+      (loop for x in (rest form)
+            for flag in (rest coSig)
+       do (when flag (setq result (or result (null (|checkIsValidType| x))))))
+      result)
+     nil)
+    (t '|ok|))))
+ (let (op args conname)
+  (cond
+   ((atom form) '|ok|)
+   (t
+    (setq op (car form))
+    (setq args (cdr form))
+    (setq conname
+     (if (|constructor?| op) 
+      op
+      (|abbreviation?| op)))
+    (when conname (fn form (getdatabase conname 'cosig))))))))
+
+(defun |checkLookForLeftBrace| (u)
+  (loop while u
+   do
+    (cond
+     ((equal (car u) #\{) (return (car u)))
+     ((not (eql (car u) #\space)) (return nil))
+     (t (pop u))))
+  u)
+
+(defun |checkLookForRightBrace| (u)
+ (let (found count)
+  (setq count 0)
+  (loop while u 
+   do
+   (cond
+    ((equal (car u) #\})
+     (if (eql count 0) 
+      (return (setq found u))
+      (setq count (1- count))))
+    ((equal (car u) #\{)
+      (setq count (1+ count))))
+    (pop u))
+  found))
+
+(defun |checkNumOfArgs| (conform)
+ (let (conname)
+  (setq conname (|opOf| conform))
+  (when (or (|constructor?| conname) (setq conname (|abbreviation?| conname)))
+     (|#| (getdatabase conname 'constructorargs)))))
+
+(defun |checkRecordHash| (u)
+ (let (p q htname entry s parse n key x)
+ (declare (special |$origin| |$name| |$sysHash| |$setOptions| |$glossHash|
+                   |$currentSysList| |$lispHash| |$HTlisplinks| |$htHash|
+                   |$HTlinks|))
+  (loop while u
+   do
+   (setq x (car u))
+   (when (and (stringp x) (equal (elt x 0) #\\))
+    (cond
+     ((and (|member| x |$HTlinks|)
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (|checkLookForRightBrace| (ifcdr u)))
+           (setq u (|checkLookForLeftBrace|  (ifcdr u)))
+           (setq u (ifcdr u)))
+       (setq htname (|intern| (ifcar u)))
+       (setq entry (or (hget |$htHash| htname) (list nil)))
+       (hput |$htHash| htname
+        (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
+     ((and (|member| x |$HTlisplinks|)
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (|checkLookForRightBrace| (ifcdr u)))
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (ifcdr u)))
+       (setq htname
+        (|intern| 
+         (|checkGetLispFunctionName| 
+          (|checkGetStringBeforeRightBrace| u))))
+       (setq entry (or (hget |$lispHash| htname) (list nil)))
+       (hput |$lispHash| htname
+        (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
+     ((and (or (setq p (|member| x '("\\gloss" "\\spadglos")))
+               (setq q (|member| x '("\\glossSee" "\\spadglosSee"))))
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (ifcdr u)))
+       (when q
+        (setq u (|checkLookForRightBrace| u))
+        (setq u (|checkLookForLeftBrace| (ifcdr u)))
+        (setq u (ifcdr u)))
+       (setq htname (|intern| (|checkGetStringBeforeRightBrace| u)))
+       (setq entry 
+        (or (hget |$glossHash| htname) (list nil)))
+            (hput |$glossHash| htname
+             (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
+     ((and (boot-equal x "\\spadsys")
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (ifcdr u)))
+       (setq s (|checkGetStringBeforeRightBrace| u))
+       (when (char= (elt s 0) #\)) (setq s (substring s 1 nil)))
+       (setq parse (|checkGetParse| s))
+       (cond
+        ((null parse)
+         (|checkDocError| (list "Unparseable \\spadtype: " s)))
+        ((null (|member| (|opOf| parse) |$currentSysList|))
+         (|checkDocError| (list "Bad system command: " s)))
+        ((or (atom parse)
+             (null (and (consp parse) (eq (qcar parse) '|set|)
+                        (consp (qcdr parse)) 
+                        (eq (qcddr parse) nil))))
+         '|ok|)
+        ((null (|spadSysChoose| |$setOptions| (qcadr parse)))
+          (progn
+           (|checkDocError| (list "Incorrect \\spadsys: " s))
+           (setq entry (or (hget |$sysHash| htname) (list nil)))
+           (hput |$sysHash| htname
+            (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry))))))))
+     ((and (boot-equal x "\\spadtype")
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (ifcdr u)))
+       (setq s (|checkGetStringBeforeRightBrace| u))
+       (setq parse (|checkGetParse| s))
+       (cond
+        ((null parse)
+         (|checkDocError| (list "Unparseable \\spadtype: " s)))
+        (t
+         (setq n (|checkNumOfArgs| parse))
+         (cond
+          ((null n)
+           (|checkDocError| (list "Unknown \\spadtype: " s)))
+          ((and (atom parse) (> n 0))
+           '|skip|)
+          ((null (setq key (|checkIsValidType| parse)))
+            (|checkDocError| (list "Unknown \\spadtype: " s)))
+          ((atom key) '|ok|)
+          (t
+           (|checkDocError| 
+            (list "Wrong number of arguments: " (|form2HtString| key))))))))
+     ((and (|member| x '("\\spadop" "\\keyword"))
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (ifcdr u)))
+      (setq x (|intern| (|checkGetStringBeforeRightBrace| u)))
+      (when (null (or (getl x '|Led|) (getl x '|Nud|)))
+         (|checkDocError| (list "Unknown \\spadop: " x))))))
+   (pop u))
+  '|done|))
+
+(defun |checkRemoveComments| (lines)
+ (let (line acc)
+  (loop while lines
+   do
+   (setq line (|checkTrimCommented| (car lines)))
+   (when (>= (|firstNonBlankPosition| line) 0) (push line acc))
+   (pop lines))
+  (nreverse acc)))
+
+(defun |checkRewrite| (name lines)
+ (declare (ignore name))
+ (prog (|$checkErrorFlag| margin w verbatim u2 okBefore u)
+ (declare (special |$checkErrorFlag| |$argl| |$checkingXmptex?|))
+  (setq |$checkErrorFlag| t)
+  (setq margin 0)
+  (setq lines (|checkRemoveComments| lines))
+  (setq u lines)
+  (when |$checkingXmptex?|
+   (setq u
+    (loop for x in u
+     collect (|checkAddIndented| x margin))))
+  (setq |$argl| (|checkGetArgs| (car u)))
+  (setq u2 nil)
+  (setq verbatim nil)
+  (loop for x in u
+   do
+    (setq w (|newString2Words| x))
+    (cond
+     (verbatim
+      (cond
+       ((and w (equal (car w) "\\end{verbatim}"))
+         (setq verbatim nil)
+         (setq u2 (append u2 w)))
+       (t
+         (setq u2 (append u2 (list x))))))
+     ((and w (equal (car w) "\\begin{verbatim}"))
+      (setq verbatim t)
+      (setq u2 (append u2 w)))
+     (t (setq u2 (append u2 w)))))
+  (setq u u2)
+  (setq u (|checkAddSpaces| u))
+  (setq u (|checkSplit2Words| u))
+  (setq u (|checkAddMacros| u))
+  (setq u (|checkTexht| u))
+  (setq okBefore (null |$checkErrorFlag|))
+  (|checkArguments| u)
+  (when |$checkErrorFlag| (setq u (|checkFixCommonProblem| u)))
+  (|checkRecordHash| u)
+  (|checkDecorateForHt| u)))
+
+(defun |checkSayBracket| (x)
+ (cond
+  ((or (char= x #\() (char= x #\))) "pren")
+  ((or (char= x #\{) (char= x #\})) "brace")
+  (t "bracket")))
+
+(defun |checkSkipBlanks| (u i m)
+  (do ()
+      ((null (and (> m i) (equal (elt u i) #\space))) nil)
+   (setq i (1+ i)))
+  (unless (= i m) i))
+
+(defun |checkSkipIdentifierToken| (u i m)
+ (do ()
+   ((null (and (> m i) (|checkAlphabetic| (elt u i)))) nil)
+  (setq i (1+ i)))
+  (unless (= i m) i))
+
+(defun |checkSkipOpToken| (u i m)
+ (declare (special |$charDelimiters|))
+  (do () 
+      ((null (and (> m i)
+                  (null (|checkAlphabetic| (elt u i)))
+                  (null (|member| (elt u i) |$charDelimiters|))))
+         nil)
+   (setq i (1+ i)))
+   (unless (= i m) i))
+
+(defun |checkSkipToken| (u i m)
+ (let ((str (string-trim '(#\space) u))) ; ignore leading spaces
+  (if (alpha-char-p (elt str i)) 
+  (|checkSkipIdentifierToken| str i m)
+  (|checkSkipOpToken| str i m))))
+
+(defun |checkSplitBackslash| (x)
+ (let (m k u v)
+  (cond
+   ((null (stringp x)) (list x))
+   (t
+    (setq m (maxindex x))
+    (cond
+     ((> m (setq k (|charPosition| #\\ x 0)))
+      (cond
+       ((or (eql m 1) (alpha-char-p (elt x (1+ k)))) ;starts with backslash so
+        (if (> m (setq k (|charPosition| #\\ x 1))) 
+         ; yes, another backslash
+         (cons (substring x 0 k) (|checkSplitBackslash| (substring x k nil)))
+         ; no, just return the line
+         (list x)))
+       ((eql k 0)
+         ; starts with backspace but x.1 is not a letter; break it up
+         (cons (substring x 0 2)
+           (|checkSplitBackslash| (substring x 2 nil))))
+       (t 
+         (setq u (substring x 0 k))
+         (setq v (substring x k 2))
+         (if (= (1+ k) m)
+            (list u v)
+           (cons u
+            (cons v
+             (|checkSplitBackslash|
+              (substring x (+ k 2) nil))))))))
+     (t (list x)))))))
+
+(defun |checkSplitBrace| (x)
+ (let (m u)
+  (cond
+   ((charp x) (list x))
+   ((eql (|#| x) 1) (list (elt x 0)))
+   ((and (setq u (|checkSplitBackslash| x)) (cdr u))
+     (let (result)
+      (loop for y in u do (append result (|checkSplitBrace| y)))
+      result))
+    (t
+      (setq m (maxindex x))
+      (cond
+        ((and (setq u (|checkSplitOn| x)) (cdr u))
+         (let (result)
+          (loop for y in u do (append result (|checkSplitBrace| y)))
+          result))
+        ((and (setq u (|checkSplitPunctuation| x)) (cdr u))
+         (let (result)
+          (loop for y in u do (append result (|checkSplitBrace| y)))
+          result))
+        (t (list x)))))))
+
+(defun |checkSplitOn| (x)
+ (let (m char k z)
+ (declare (special |$charSplitList|))
+  (cond
+   ((charp x) (list x))
+   (t
+    (setq z |$charSplitList|)
+    (setq m (maxindex x))
+    (loop while z
+     do
+      (setq char (car z))
+      (cond
+       ((and (eql m 0) (equal (elt x 0) char))
+         (return (setq k -1)))
+       (t
+         (setq k (|charPosition| char x 0))
+         (cond
+          ((and (> k 0) (equal (elt x (1- k)) #\\)) (list x))
+          ((<= k m) (return k)))))
+      (pop z))
+    (cond
+     ((null z) (list x))
+     ((eql k -1) (list char))
+     ((eql k 0) (list char (substring x 1 nil)))
+     ((eql k (maxindex x)) (list (substring x 0 k) char))
+     (t
+       (cons (substring x 0 k)
+             (cons char (|checkSplitOn| (substring x (1+ k) nil))))))))))
+
+(defun |checkSplitPunctuation| (x)
+ (let (m lastchar v k u)
+ (declare (special |$htMacroTable|))
+  (cond
+   ((charp x) (list x))
+   (t
+     (setq m (maxindex x))
+     (cond
+      ((> 1 m) (list x))
+      (t
+       (setq lastchar (elt x m))
+       (cond
+        ((and (equal lastchar #\.)
+              (equal (elt x (1- m)) #\.))
+          (cond
+           ((eql m 1) (list x))
+           ((and (> m 3) (equal (elt x (- m 2)) #\.))
+             (append (|checkSplitPunctuation| (substring x 0 (- m 2)))
+                     (list "...")))
+           (t
+             (append (|checkSplitPunctuation| (substring x 0 (1- m)))
+                     (list "..")))))
+        ((or (equal lastchar #\.)
+             (equal lastchar #\;)
+             (equal lastchar #\,))
+          (list (substring x 0 m) lastchar))
+        ((and (> m 1) (equal (elt x (1- m)) #\'))
+          (list (substring x 0 (1- m)) (substring x (1- m) nil)))
+        ((> m (setq k (|charPosition| #\\ x 0)))
+          (cond
+           ((eql k 0)
+            (cond
+             ((or (eql m 1) (hget |$htMacroTable| x) (alpha-char-p (elt x 1)))
+               (list x))
+             (t
+              (setq v (substring x 2 nil))
+                (cons (substring x 0 2) (|checkSplitPunctuation| v)))))
+           (t
+             (setq u (substring x 0 k))
+             (setq v (substring x k nil))
+             (append (|checkSplitPunctuation| u)
+                     (|checkSplitPunctuation| v)))))
+        ((> m (setq k (|charPosition| #\- x 1)))
+             (setq u (substring x (1+ k) nil))
+             (cons (substring x 0 k)
+               (cons #\- (|checkSplitPunctuation| u))))
+        (t
+         (list x)))))))))
+
+(defun |checkSplit2Words| (u)
+ (let (x verbatim z acc)
+  (setq acc nil)
+  (loop while u
+   do
+    (setq x (car u))
+    (setq acc
+     (cond
+      ((string= x "\\end{verbatim}")
+       (setq verbatim nil)
+       (cons x acc))
+      (verbatim (cons x acc))
+      ((string= x "\\begin{verbatim}")
+        (setq verbatim t)
+        (cons x acc))
+      ((setq z (|checkSplitBrace| x))
+        (append (nreverse z) acc))
+      (t (cons x acc))))
+    (pop u))
+  (nreverse acc)))
+
+(defun |checkTexht| (u)
+ (let (count y x acc)
+  (setq count 0)
+  (loop while u 
+   do
+    (setq x (car u))
+    (when (and (string= x "\\texht") (setq u (ifcdr u)))
+     (unless  (equal (ifcar u) #\{)
+       (|checkDocError| "First left brace after \\texht missing"))
+     ; drop first argument including braces of \texht
+     (setq count 1)
+     (loop while 
+            (or (not (equal (setq y (ifcar (setq u (cdr u)))) #\}))
+                (> count 1))
+     do
+       (when (equal y #\{) (setq count (1+ count)))
+       (when (equal y #\}) (setq count (1- count))))
+     ; drop first right brace of 1st arg
+     (setq x (ifcar (setq u (cdr u)))))
+    (when (and (string= x "\\httex")
+               (setq u (ifcdr u))
+               (equal (ifcar u) #\{))
+       ; left  brace: add it
+       (setq acc (cons (ifcar u) acc))
+       (loop while 
+              (not (equal (setq y (ifcar (setq u (cdr u)))) #\}))
+         do (setq acc (cons y acc)))
+       ; right brace: add it
+       (setq acc (cons (ifcar u) acc))
+       ; left brace:  forget it
+       (setq x (ifcar (setq u (cdr u))))
+       (loop while (not (equal (ifcar (setq u (cdr u))) #\}))
+        do '|skip|)
+       ; forget right brace: move to next char
+       (setq x (ifcar (setq u (cdr u)))))
+    (setq acc (cons x acc))
+    (setq u (cdr u)))
+  (nreverse acc)))
+
+(defun |checkTransformFirsts| (opname u margin)
+ (prog (namestring s m infixOp p open close z n i prefixOp j k firstWord)
+ (declare (special |$checkPrenAlist|))
+  (return 
+   (progn
+; case 1: \spad{...
+; case 2: form(args)
+    (setq u (string-trim '(#\space) u)) ; spaces confuse us
+    (setq namestring (pname opname))
+    (cond
+     ((equal namestring "Zero") (setq namestring "0"))
+     ((equal namestring "One")  (setq namestring "1"))
+     (t nil))
+    (cond
+     ((> margin 0) 
+      (setq s (|leftTrim| u))
+      (strconc (|fillerSpaces| margin) (|checkTransformFirsts| opname s 0)))
+     (t 
+      (setq m (maxindex u))
+      (cond
+       ((> 2 m) u)
+       ((equal (elt u 0) #\\) u)
+       ((alpha-char-p (elt u 0))
+         (setq i (or (|checkSkipToken| u 0 m) (return u)))
+         (setq j (or (|checkSkipBlanks| u i m) (return u)))
+         (setq open (elt u j))
+         (cond
+          ((or (and (equal open #\[) (setq close #\]))
+               (and (equal open #\() (setq close #\))))
+            (setq k (|getMatchingRightPren| u (1+ j) open close))
+            (cond
+             ((not (equal namestring (setq firstWord (substring u 0 i))))
+               (|checkDocError| 
+                 (list "(1) Improper first word in comments: " firstWord))
+                 u)
+             ((null k)
+              (cond
+               ((equal open #\[)
+                 (|checkDocError| 
+                   (list "Missing close bracket on first line: " u)))
+               (t
+                 (|checkDocError|
+                   (list "Missing close parenthesis on first line: " u))))
+                    u)
+             (t
+              (strconc "\\spad{" (substring u 0 (1+ k)) "}"
+                                 (substring u (1+ k) nil)))))
+          (t
+           (setq k (or (|checkSkipToken| u j m) (return u)))
+           (setq infixOp (intern (substring u j (- k j))))
+           (cond
+; case 3: form arg
+            ((null (getl infixOp '|Led|))
+             (cond
+              ((not (equal namestring (setq firstWord (substring u 0 i))))
+               (|checkDocError|
+                (list "(2) Improper first word in comments: " firstWord))
+               u)
+              ((and (eql (|#| (setq p (pname infixOp))) 1)
+                (setq open (elt p 0))
+                (setq close (lassoc open |$checkPrenAlist|)))
+               (setq z (|getMatchingRightPren| u (1+ k) open close))
+               (when (> z (maxindex u)) (setq z (1- k)))
+               (strconc "\\spad{" (substring u 0 (1+ z)) "}"
+                                  (substring u (1+ z) nil)))
+              (t
+               (strconc "\\spad{" (substring u 0 k) "}"
+                                  (substring u k nil)))))
+            (t
+             (setq z (or (|checkSkipBlanks| u k m) (return u)))
+             (setq n (or (|checkSkipToken| u z m) (return u)))
+             (cond
+              ((not (equal namestring (pname infixOp)))
+                (|checkDocError|
+                 (list "(3) Improper initial operator in comments: " infixOp))
+                u)
+              (t
+                (strconc "\\spad{" (substring u 0 n) "}"
+                                   (substring u n nil)))))))))
+; case 4: arg op arg
+       (t
+        (setq i (or (|checkSkipToken| u 0 m) (return u)))
+        (cond
+         ((not (equal namestring (setq firstWord (substring u 0 i))))
+           (|checkDocError|
+            (list "(4) Improper first word in comments: " firstWord))
+           u)
+         (t 
+           (setq prefixOp (intern (substring u 0 i)))
+           (cond
+            ((null (getl prefixOp '|Nud|)) u)
+            (t
+             (setq j (or (|checkSkipBlanks| u i m) (return u)))
+             (cond
+; case 5: op arg
+              ((equal (elt u j) #\( )
+                (setq j
+                 (|getMatchingRightPren| u (1+ j) #\( #\) ))
+                (cond
+                 ((> j m) u)
+                 (t
+                  (strconc "\\spad{" (substring u 0 (1+ j)) "}"
+                                     (substring u (1+ j) nil)))))
+              (t
+               (setq k (or (|checkSkipToken| u j m) (return u)))
+               (cond
+                ((not (equal namestring (setq firstWord (substring u 0 i))))
+                  (|checkDocError|
+                   (list "(5) Improper first word in comments: " firstWord))
+                  u)
+                (t
+                 (strconc "\\spad{" (substring u 0 k) "}"
+                                    (substring u k nil))))))))))))))))))
+
+(defun |checkTrim| (|$x| lines)
+ (declare (special |$x|))
+ (labels (
+  (trim (s)
+   (let (k)
+    (setq k (wherePP s))
+    (substring s (+ k 2) nil)))
+  (wherePP (u)
+   (let (k)
+    (setq k (|charPosition| #\+ u 0))
+    (if (or (eql k (|#| u))
+            (not (eql (|charPosition| #\+ u (1+ k)) (1+ k))))
+      (|systemError| " Improper comment found")
+      k))))
+ (let (j s)
+  (setq s  (list (wherePP (car lines))))
+  (loop for x in (rest lines)
+   do
+    (setq j (wherePP x))
+    (unless (member j s)
+      (|checkDocError| (list |$x| " has varying indentation levels"))
+      (setq s (cons j s))))
+  (loop for y in lines
+   collect (trim y)))))
+
+(defun |checkTrimCommented| (line)
+ (let (n k)
+  (setq n (|#| line))
+  (setq k (|htcharPosition| #\% line 0))
+  (cond
+   ((eql k 0) "")
+   ((or (>= k (1- n)) (not (eql (elt line (1+ k)) #\%))) line)
+   ((> (|#| line) k) (substring line 0 k))
+   (t line))))
+
+(defun |checkWarning| (msg)
+ (postError (|concat| "Parsing error: " msg))) 
+
+(defun |coerce| (tt mode)
+ (labels (
+  (fn (x m1 m2)
+   (list '|Cannot coerce| x '|%l| '|      of mode| m1 
+         '|%l| '|      to mode| m2)))
+ (let (tp)
+ (declare (special |$fromCoerceable$| |$Rep| |$InteractiveMode|))
+  (if |$InteractiveMode|
+   (|keyedSystemError| 
+      "Unexpected error or improper call to system function %1: %2"
+    (list "coerce" "function coerce called from the interpreter."))
+   (progn
+    (|rplac| (cadr tt) (subst '$ |$Rep| (cadr tt) :test #'equal))
+    (cond
+     ((setq tp (|coerceEasy| tt mode)) tp)
+     ((setq tp (|coerceSubset| tt mode)) tp)
+     ((setq tp (|coerceHard| tt mode)) tp)
+     ((or (eq (car tt) '|$fromCoerceable$|) (|isSomeDomainVariable| mode)) nil)
+     (t (|stackMessage| (fn (first tt) (second tt) mode)))))))))
+
+(defun |coerceable| (m mp env)
+ (let (sl)
+ (declare (special |$fromCoerceable$|))
+  (cond
+   ((equal m mp) m)
+   ((setq sl (|pmatch| mp m)) (sublis sl mp))
+   ((|coerce| (list '|$fromCoerceable$| m env) mp) mp)
+   (t nil))))
+
+(defun |coerceByModemap| (arg1 mp)
+ (let (x m env map cexpr u mm fn)
+  (setq x (first arg1))
+  (setq m (second arg1))
+  (setq env (third arg1))
+  (setq u
+   (loop for modemap in (|getModemapList| '|coerce| 1 env) 
+    do
+      (setq map (first modemap))
+      (setq cexpr (second modemap))
+    when
+      (and (consp map) (consp (qrest map))
+           (consp (qcddr map))
+           (eq (qcdddr map) nil)
+           (or (|modeEqual| (second map) mp) (|isSubset| (second map) mp env))
+           (or (|modeEqual| (third map) m) (|isSubset| m (third map) env)))
+    collect modemap))
+  (when u
+   (setq mm (first u))
+   (setq fn (|genDeltaEntry| (cons '|coerce| mm)))
+   (list (list '|call| fn x) mp env))))
+
+(defun |coerceEasy| (tt m)
+  (declare (special |$EmptyMode| |$Exit| |$NoValueMode| |$Void|))
+  (cond
+    ((equal m |$EmptyMode|) tt)
+    ((or (equal m |$NoValueMode|) (equal m |$Void|))
+     (list (car tt) m (third tt)))
+    ((equal (second tt) m) tt)
+    ((equal (second tt) |$NoValueMode|) tt)
+    ((equal (second tt) |$Exit|)
+     (list
+       (list 'progn (car tt) (list '|userError| "Did not really exit."))
+       m (third tt)))
+    ((or (equal (second tt) |$EmptyMode|)
+         (|modeEqualSubst| (second tt) m (third tt)))
+     (list (car tt) m (third tt)))))
+
+(defun |coerceExit| (arg1 mp)
+ (let (x m e catchTag xp)
+ (declare (special |$exitMode|))
+  (setq x (first arg1))
+  (setq m (second arg1))
+  (setq e (third arg1))
+  (setq mp (|resolve| m mp))
+  (setq xp
+    (|replaceExitEtc| x 
+      (setq catchTag (mkq (gensym))) '|TAGGEDexit| |$exitMode|))
+  (|coerce| (list (list 'catch catchTag xp) m e) mp)))
+
+(defun |coerceExtraHard| (tt m)
+ (let (x mp e tmp1 z ta tp tpp)
+ (declare (special |$Expression|))
+  (setq x (first tt))
+  (setq mp (second tt))
+  (setq e (third tt))
+  (cond
+   ((setq tp (|autoCoerceByModemap| tt m)) tp)
+   ((and (progn
+          (setq tmp1 (|isUnionMode| mp e))
+          (and (consp tmp1) (eq (qfirst tmp1) '|Union|)
+          (progn 
+           (setq z (qrest tmp1)) t)))
+           (setq ta (|hasType| x e))
+           (|member| ta z)
+           (setq tp (|autoCoerceByModemap| tt ta))
+           (setq tpp (|coerce| tp m)))
+       tpp)
+   ((and (consp mp) (eq (qfirst mp) '|Record|) (equal m |$Expression|))
+     (list (list '|coerceRe2E| x (list 'elt (copy mp) 0)) m e))
+   (t nil))))
+
+(defun |coerceHard| (tt m)
+ (let (|$e| mp tmp1 mpp)
+ (declare (special |$e| |$String| |$bootStrapMode|))
+  (setq |$e| (third tt))
+  (setq mp (second tt))
+  (cond
+   ((and (stringp mp) (|modeEqual| m |$String|))
+     (list (car tt) m  |$e|))
+   ((or (|modeEqual| mp m)
+        (and (or (progn
+                  (setq tmp1 (|get| mp '|value| |$e|))
+                  (and (consp tmp1)
+                  (progn (setq mpp (qfirst tmp1)) t)))
+                 (progn
+                   (setq tmp1 (|getmode| mp |$e|))
+                   (and (consp tmp1)
+                        (eq (qfirst tmp1) '|Mapping|)
+                        (and (consp (qrest tmp1))
+                             (eq (qcddr tmp1) nil)
+                             (progn (setq mpp (qsecond tmp1)) t)))))
+              (|modeEqual| mpp m))
+        (and (or (progn
+                  (setq tmp1 (|get| m '|value| |$e|))
+                  (and (consp tmp1)
+                  (progn (setq mpp (qfirst tmp1)) t)))
+                 (progn
+                  (setq tmp1 (|getmode| m |$e|))
+                  (and (consp tmp1)
+                       (eq (qfirst tmp1) '|Mapping|)
+                       (and (consp (qrest tmp1))
+                            (eq (qcddr tmp1) nil)
+                            (progn (setq mpp (qsecond tmp1)) t)))))
+               (|modeEqual| mpp mp)))
+     (list (car tt) m (third tt)))
+   ((and (stringp (car tt)) (equal (car tt) m))
+     (list (car tt) m |$e|))
+   ((|isCategoryForm| m |$e|)
+     (cond
+      ((eq |$bootStrapMode| t)
+        (list (car tt) m |$e|))
+      ((|extendsCategoryForm| (car tt) (cadr tt) m)
+        (list (car tt) m |$e|))
+      (t (|coerceExtraHard| tt m))))
+   (t (|coerceExtraHard| tt m)))))
+
+(defun |coerceSubset| (arg1 mp)
+ (let (x m env pred)
+  (setq x (first arg1))
+  (setq m (second arg1))
+  (setq env (third arg1))
+  (cond
+   ((or (|isSubset| m mp env) (and (eq m '|Rep|) (eq mp '$)))
+     (list x mp env))
+   ((and (consp m) (eq (qfirst m) '|SubDomain|)
+         (consp (qrest m)) (equal (qsecond m) mp))
+     (list x mp env))
+   ((and (setq pred (lassoc (|opOf| mp) (|get| (|opOf| m) '|SubDomain| env)))
+          (integerp x) (|eval| (subst x '|#1| pred :test #'equal)))
+     (list x mp env))
+   ((and (setq pred (|isSubset| mp (|maxSuperType| m env) env))
+          (integerp x) (|eval| (subst x '* pred :test #'equal)))
+     (list x mp env))
+   (t nil))))
+
+(defun |collectAndDeleteAssoc| (x)
+ (let (r res s)
+ (declare (special $comblocklist))
+  (maplist 
+   #'(lambda (y) 
+      (when (setq s (cdr y))
+       (do ()
+           ((null (and s (consp (car s)) (equal (qcar (car s)) x))) nil)
+        (setq r (qcdr (car s)))
+        (setq res (append res r))
+        (setq s (cdr s))
+        (rplacd y s))))
+    $comblocklist)
+  res))
+
+(defun |collectComBlock| (x)
+ (let (val u)
+ (declare (special $comblocklist))
+  (cond
+   ((and (consp $comblocklist)
+         (consp (qcar $comblocklist)) 
+         (equal (qcaar $comblocklist) x))
+     (setq val (qcdar $comblocklist))
+     (setq u (append val (|collectAndDeleteAssoc| x)))
+     (setq $comblocklist (cdr $comblocklist))
+     u)
+   (t (|collectAndDeleteAssoc| x)))))
+
+(defun |comma2Tuple| (u)
+ (cons '|@Tuple| (|postFlatten| u '|,|))) 
+
+(defun |comp| (form mode env)
+ (let (td)
+ (declare (special |$compStack| |$exitModeStack|))
+  (if (setq td (|compNoStacking| form mode env))
+    (setq |$compStack| nil) 
+    (push (list form mode env |$exitModeStack|) |$compStack|))
+  td))
+
+(defun |comp2| (form mode env)
+ (let (tmp1)
+  (declare (special |$bootStrapMode| |$packagesUsed| $lisplib))
+   (when (setq tmp1 (|comp3| form mode env))
+    (destructuring-bind (y mprime env) tmp1
+     (when (and $lisplib (|isDomainForm| form env) (|isFunctor| form))
+       (setq |$packagesUsed| (|insert| (list (|opOf| form)) |$packagesUsed|)))
+     ; isDomainForm test needed to prevent error while compiling Ring
+     ; $bootStrapMode-test necessary for compiling Ring in $bootStrapMode
+     (if (and (not (equal mode mprime))
+              (or |$bootStrapMode| (|isDomainForm| mprime env)))
+       (list y mprime (|addDomain| mprime env))
+       (list y mprime env))))))
+
+(defun |comp3| (form mode |$e|)
+ (declare (special |$e|))
+ (let (env op ml u tt tmp1)
+ (declare (special |$insideCompTypeOf|))
+  (setq |$e| (|addDomain| mode |$e|))
+  (setq env |$e|)
+  (cond
+   ((and (consp mode) (eq (qfirst mode) '|Mapping|))
+     (|compWithMappingMode| form mode env))
+   ((and (consp mode) (eq (qfirst mode) 'quote)
+         (consp (qcdr mode)) (eq (qcddr mode) nil))
+    (when (equal form (qcadr mode)) (list form mode |$e|)))
+   ((stringp mode)
+    (when (and (atom form)
+               (or (equal mode form) (equal mode (princ-to-string form))))
+     (list mode mode env )))
+   ((or (null form) (atom form)) (|compAtom| form mode env))
+   (t 
+    (setq op (car form))
+    (cond
+     ((and (progn
+            (setq tmp1 (|getmode| op env))
+            (and (consp tmp1)
+                 (eq (qfirst tmp1) '|Mapping|)
+                 (progn (setq ml (qrest tmp1)) t)))
+            (setq u (|applyMapping| form mode env ml)))
+        u)
+     ((and (consp op) (eq (qfirst op) 'kappa)
+           (consp (qcdr op)) (consp (qcddr op))
+           (consp (qcdddr op)) (eq (qcddddr op) nil))
+       (|compApply| (qcadr op) (qcaddr op) (qcadddr op) (cdr form) mode env))
+     ((eq op '|:|)  (|compColon| form mode env))
+     ((eq op '|::|) (|compCoerce| form mode env))
+     ((and (null (eq |$insideCompTypeOf| t))
+           (|stringPrefix?| "TypeOf" (pname op)))
+       (|compTypeOf| form mode env))
+      (t
+       (setq tt (|compExpression| form mode env))
+       (cond
+        ((and (consp tt) (consp (qcdr tt)) (consp (qcddr tt))
+              (eq (qcdddr tt) nil)
+              (null (|member| (qcadr tt) (|getDomainsInScope| (qcaddr tt)))))
+         (list (qcar tt) (qcadr tt) (|addDomain| (qcadr tt) (qcaddr tt))))
+        (t tt))))))))
+
+(defun compAdd (form mode env)
+ (let (|$addForm| |$addFormLhs| code domainForm predicate tmp3 tmp4)
+ (declare (special |$addForm| |$addFormLhs| |$EmptyMode| |$NRTaddForm|
+                   |$packagesUsed| |$functorForm| |$bootStrapMode| /editfile))
+  (setq |$addForm| (second form))
+  (cond
+   ((eq |$bootStrapMode| t)
+    (cond
+     ((and (consp |$addForm|) (eq (qfirst |$addForm|) '|@Tuple|))
+       (setq code nil))
+     (t
+       (setq tmp3 (|comp| |$addForm| mode env))
+       (setq code (first tmp3))
+       (setq mode (second tmp3))
+       (setq env (third tmp3)) tmp3))
+    (list
+      (list 'cond
+        (list '|$bootStrapMode| code)
+         (list 't
+          (list '|systemError|
+           (list 'list (mkq (car |$functorForm|)) "from"
+                 (mkq (|namestring| /editfile))
+                 "needs to be compiled"))))
+         mode env))
+   (t
+    (setq |$addFormLhs| |$addForm|)
+    (cond
+     ((and (consp |$addForm|) (eq (qfirst |$addForm|) '|SubDomain|)
+           (consp (qrest |$addForm|)) (consp (qcddr |$addForm|))
+           (eq (qcdddr |$addForm|) nil))
+       (setq domainForm (second |$addForm|))
+       (setq predicate (third |$addForm|))
+       (setq |$packagesUsed| (cons domainForm |$packagesUsed|))
+       (setq |$NRTaddForm| domainForm)
+       (|NRTgetLocalIndex| domainForm)
+       ; need to generate slot for add form since all $ go-get
+       ; slots will need to access it
+       (setq tmp3 (|compSubDomain1| domainForm predicate mode env))
+       (setq |$addForm| (first tmp3))
+       (setq env (third tmp3)) tmp3)
+     (t
+      (setq |$packagesUsed|
+       (if (and (consp |$addForm|) (eq (qfirst |$addForm|) '|@Tuple|))
+         (append (qrest |$addForm|) |$packagesUsed|)
+         (cons |$addForm| |$packagesUsed|)))
+      (setq |$NRTaddForm| |$addForm|)
+      (setq tmp3
+       (cond
+        ((and (consp |$addForm|) (eq (qfirst |$addForm|) '|@Tuple|))
+         (setq |$NRTaddForm|
+          (cons '|@Tuple|
+           (dolist (x (cdr |$addForm|) (nreverse0 tmp4))
+            (push (|NRTgetLocalIndex| x) tmp4))))
+         (|compOrCroak| (|compTuple2Record| |$addForm|) |$EmptyMode| env))
+        (t 
+        (|compOrCroak| |$addForm| |$EmptyMode| env))))
+      (setq |$addForm| (first tmp3))
+      (setq env (third tmp3))
+      tmp3))
+    (|compCapsule| (third form) mode env)))))
+
+(defun compAndDefine (arg)
+ (declare (ignore arg))
+ nil)
+
+(defun |compApplication| (op argl m env tt)
+ (let (argml retm temp1 argTl nprefix opp form eltForm)
+  (declare (special |$form| |$op| |$prefix| |$formalArgList| |$Category|))
+  (cond
+   ((and (consp (cadr tt)) (eq (qcar (cadr tt)) '|Mapping|)
+         (consp (qcdr (cadr tt))))
+     (setq retm (qcadr (cadr tt)))
+     (setq argml (qcddr (cadr tt)))
+     (cond
+      ((not (eql (|#| argl) (|#| argml))) nil)
+      (t
+       (setq retm (|resolve| m retm))
+       (cond
+        ((or (equal retm |$Category|) (|isCategoryForm| retm env))
+          nil)
+        (t
+         (setq argTl
+          (loop for x in argl for m in argml 
+           collect (progn
+                    (setq temp1 (or (|comp| x m env) (return '|failed|)))
+                    (setq env (caddr temp1))
+                    temp1)))
+         (cond
+          ((eq argTl '|failed|) nil)
+          (t 
+           (setq form
+            (cond
+             ((and
+               (null
+                (or (|member| op |$formalArgList|)
+                    (|member| (car tt) |$formalArgList|)))
+               (atom (car tt)))
+              (setq nprefix
+               (or |$prefix| (|getAbbreviation| |$op| (|#| (cdr |$form|)))))
+              (setq opp
+               (intern
+                (strconc (|encodeItem| nprefix) '|;| (|encodeItem| (car tt)))))
+              (cons opp
+               (append
+                (loop for item in argTl collect (car item))
+                (list '$))))
+             (t
+              (cons '|call|
+               (cons  (list '|applyFun| (car tt))
+                (loop for item in argTl collect (car item)))))))
+              (|coerce| (list form retm env) (|resolve| retm m)))))))))
+   ((eq op '|elt|) nil)
+   (t
+    (setq eltForm (cons '|elt| (cons op argl)))
+    (|comp| eltForm m env)))))
+
+(defun |compApply| (sig varl body argl m e)
+ (let (temp1 argtl contour code mq bodyq)
+ (declare (special |$EmptyMode|))
+  (setq argtl
+   (loop for x in argl
+    collect (progn
+             (setq temp1 (|comp| x |$EmptyMode| e))
+             (setq e (caddr temp1))
+             temp1)))
+  (setq contour
+   (loop for x in varl
+         for mq in (cdr sig)
+         for a in argl
+    collect 
+     (|Pair| x
+       (list
+        (list '|mode| mq)
+        (list '|value| (|removeEnv| (|comp| a mq e)))))))
+  (setq code
+   (cons (list 'lambda varl bodyq)
+    (loop for tt in argtl
+     collect (car tt))))
+  (setq mq (|resolve| m (car sig)))
+  (setq bodyq (car (|comp| body mq (|addContour| contour e))))
+  (list code mq e)))
+
+(defun |compApplyModemap| (form modemap |$e| sl)
+ (declare (special |$e|))
+ (let (op argl mc mr margl fnsel g mp lt ltp temp1 f)
+ (declare (special |$bindings| |$e|))
+  ;  -- $e     is the current environment
+  ;  -- sl     substitution list, nil means bottom-up, otherwise top-down
+  ;  -- 0.  fail immediately if #argl=#margl
+  (setq op (car form))
+  (setq argl (cdr form))
+  (setq mc (caar modemap))
+  (setq mr (cadar modemap))
+  (setq margl (cddar modemap))
+  (setq fnsel (cdr modemap))
+  (when (= (|#| argl) (|#| margl))
+   ; 1.  use modemap to evaluate arguments, returning failed if not possible
+   (setq lt
+    (prog (t0)
+     (return
+      (do ((t1 argl (cdr t1)) (y NIL) (t2 margl (cdr t2)) (m nil))
+          ((or (atom t1) (atom t2)) (nreverse0 t0))
+        (setq y (car t1))
+        (setq m (car t2))
+        (setq t0
+         (cons
+          (progn
+           (setq sl (|pmatchWithSl| mp m sl))
+           (setq g (sublis sl m))
+           (setq temp1 (or (|comp| y g |$e|) (return '|failed|)))
+           (setq mp (cadr temp1))
+           (setq |$e| (caddr temp1))
+           temp1)
+            t0)))))))
+   ; 2.  coerce each argument to final domain, returning failed
+   ;     if not possible
+   (unless (eq lt '|failed|)
+     (setq ltp
+      (loop for y in lt for d in (sublis sl margl)
+       collect (or (|coerce| y d) (return '|failed|))))
+     (unless (eq ltp '|failed|)
+       ; 3.  obtain domain-specific function, if possible, and return
+       ; $bindings is bound by compMapCond
+       (setq temp1 (|compMapCond| op mc sl fnsel))
+       (when temp1
+        ; can no longer trust what the modemap says for a reference into
+        ; an exterior domain (it is calculating the displacement based on view
+        ; information which is no longer valid; thus ignore this index and
+        ; store the signature instead.)
+        (setq f (car temp1))
+        (setq |$bindings| (cadr temp1))
+        (if (and (consp f) (consp (qcdr f)) (consp (qcddr f)) ; f is [op1,.]
+                 (eq (qcdddr f) nil)
+                 (|member| (qcar f) '(elt const |Subsumed|)))
+          (list (|genDeltaEntry| (cons op modemap)) ltp |$bindings|)
+          (list f ltp |$bindings|)))))))
+
+(defun |compArgumentConditions| (env)
+ (let (n a x y tmp1)
+ (declare (special |$Boolean| |$argumentConditionList|))
+  (setq |$argumentConditionList|
+   (loop for item in |$argumentConditionList|
+    do 
+     (setq n (first item))
+     (setq a (second item))
+     (setq x (third item))
+     (setq y (subst a '|#1| x :test #'equal))
+     (setq tmp1 (|compOrCroak| y |$Boolean| env))
+     (setq env (third tmp1))
+    collect
+     (list n x (first tmp1))))
+  env))
+
+(defun |compArgumentsAndTryAgain| (form mode env)
+ (let (argl tmp1 a tmp2 tmp3 u)
+ (declare (special |$EmptyMode|))
+  (setq argl (cdr form))
+  (cond
+   ((and (consp form) (eq (qfirst form) '|elt|)
+         (progn
+           (setq tmp1 (qrest form))
+           (and (consp tmp1)
+                (progn
+                 (setq a (qfirst tmp1))
+                 (setq tmp2 (qrest tmp1))
+                 (and (consp tmp2) (eq (qrest tmp2) nil))))))
+    (when (setq tmp3 (|comp| a |$EmptyMode| env))
+      (setq env (third tmp3))
+      (|compForm1| form mode env)))
+   (t
+     (setq u
+      (dolist (x argl)
+       (setq tmp3 (or (|comp| x |$EmptyMode| env) (return '|failed|)))
+       (setq env (third tmp3))
+       tmp3))
+     (unless (eq u '|failed|)
+       (|compForm1| form mode env))))))
+
+(defun |compAtom| (form mode env)
+ (prog (tmp1 tmp2 r td tt)
+  (declare (special |$Expression|))
+   (return
+   (cond
+    ((setq td 
+      (|compAtomWithModemap| form mode env (|get| form '|modemap| env))) td)
+    ((eq form '|nil|)
+     (setq td
+      (cond
+       ((progn
+         (setq tmp1 (|modeIsAggregateOf| '|List| mode env))
+         (and (consp tmp1)
+              (progn
+               (setq tmp2 (qrest tmp1))
+               (and (consp tmp2)
+                    (eq (qrest tmp2) nil)
+                    (progn
+                      (setq r (qfirst tmp2)) t)))))
+         (|compList| form (list '|List| r) env))
+       ((progn
+         (setq tmp1 (|modeIsAggregateOf| '|Vector| mode env))
+         (and (consp tmp1)
+              (progn
+               (setq tmp2 (qrest tmp1))
+               (and (consp tmp2) (eq (qrest tmp2) nil)
+               (progn
+                 (setq r (qfirst tmp2)) t)))))
+         (|compVector| form (list '|Vector| r) env))))
+      (when td (|convert| td mode)))
+    (t
+     (setq tt
+      (cond
+       ((|isSymbol| form) (or (|compSymbol| form mode env) (return nil)))
+       ((and (equal mode |$Expression|) 
+             (|primitiveType| form)) (list form mode env ))
+       ((stringp form) (list form form env ))
+       (t (list form (or (|primitiveType| form) (return nil)) env ))))
+     (|convert| tt mode))))))
+
+(defun |compAtomWithModemap| (x m env v)
+ (let (tt transimp y)
+ (declare (special |$NoValueMode|))
+  (cond
+   ((setq transimp
+    (loop for map in v
+     when  ; map is [[.,target],[.,fn]]]
+          (and (consp map) (consp (qcar map)) (consp (qcdar map))
+               (eq (qcddar map) nil)
+               (consp (qcdr map)) (eq (qcddr map) nil)
+               (consp (qcadr map)) (consp (qcdadr map))
+               (eq (qcddadr map) nil))
+     collect
+      (list (|transImplementation| x map (qcadadr map)) (qcadar map) env)))
+    (cond
+     ((setq tt
+       (let (result)
+        (loop for item in transimp
+         when (|modeEqual| m (cadr item))
+         do (setq result (or result item)))
+        result))
+       tt)
+     ((eql 1 (|#| (setq transimp
+                   (loop for ta in transimp
+                    when (setq y (|convert| ta m))
+                    collect y))))
+       (car transimp))
+     ((and (< 0 (|#| transimp)) (equal m |$NoValueMode|))
+       (car transimp))
+     (t nil))))))
+
+(defun compAtSign (form mode env)
+  (let ((newform (second form)) (mprime (third form)) tmp)
+   (setq env (|addDomain| mprime env))
+   (when (setq tmp (|comp| newform mprime env)) (|coerce| tmp mode))))
+
+(defun |compBoolean| (p mode env)
+ (let (tmp1 pp)
+  (when (setq tmp1 (OR (|comp| p mode env))) 
+   (setq pp (car tmp1))
+   (setq mode (cadr tmp1))
+   (setq env (caddr tmp1))
+   (list pp mode (|getSuccessEnvironment| p env)
+                 (|getInverseEnvironment| p env)))))
+
+(defun |compCapsule| (form mode env)
+ (let (|$insideExpressionIfTrue| itemList)
+ (declare (special |$insideExpressionIfTrue| |$functorForm| /editfile
+                   |$bootStrapMode|))
+  (setq itemList (cdr form))
+  (cond
+   ((eq |$bootStrapMode| t)
+     (list (|bootStrapError| |$functorForm| /editfile) mode env))
+   (t
+    (setq |$insideExpressionIfTrue| nil)
+    (|compCapsuleInner| itemList mode (|addDomain| '$ env))))))
+
+(defun |compCapsuleInner| (form mode env)
+ (let (localParList data code)
+ (declare (special |$getDomainCode| |$signature| |$form| |$addForm|
+                   |$insideCategoryPackageIfTrue| |$insideCategoryIfTrue|
+                   |$functorLocalParameters|))
+  (setq env (|addInformation| mode env))
+  (setq data (cons 'progn form))
+  (setq env (|compCapsuleItems| form nil env))
+  (setq localParList |$functorLocalParameters|)
+  (when |$addForm| (setq data (list '|add| |$addForm| data)))
+  (setq code
+   (if (and |$insideCategoryIfTrue| (null |$insideCategoryPackageIfTrue|))
+    data
+    (|processFunctor| |$form| |$signature| data localParList env)))
+  (cons (mkpf (append |$getDomainCode| (list code)) 'progn) (list mode env))))
+
+(defun |compCapsuleItems| (itemlist |$predl| |$e|)
+ (declare (special |$predl| |$e|))
+ (let ($top_level |$myFunctorBody| |$signatureOfForm| |$suffix|)
+ (declare (special $top_level |$myFunctorBody| |$signatureOfForm| |$suffix|))
+  (setq $top_level nil)
+  (setq |$myFunctorBody| nil)
+  (when (boundp '|data|) (setq |$myFunctorBody| |data|))
+  (setq |$signatureOfForm| nil)
+  (setq |$suffix| 0)
+  (loop for item in itemlist do
+   (setq |$e| (|compSingleCapsuleItem| item |$predl| |$e|)))
+  |$e|))
+
+(defun |compCase| (form mode env)
+ (let (mp td)
+  (setq mp (third form))
+  (setq env (|addDomain| mp env))
+  (when (setq td (|compCase1| (second form) mp env)) (|coerce| td mode))))
+
+(defun |compCase1| (form mode env)
+ (let (xp mp ep map tmp3 tmp5 tmp6 u fn)
+ (declare (special |$Boolean| |$EmptyMode|))
+  (when (setq tmp3 (|comp| form |$EmptyMode| env))
+   (setq xp (first tmp3))
+   (setq mp (second tmp3))
+   (setq ep (third tmp3))
+   (when 
+    (setq u
+     (dolist (modemap (|getModemapList| '|case| 2 ep) (nreverse0 tmp5))
+        (setq map (first modemap))
+        (when
+          (and (consp map) (consp (qrest map)) (consp (qcddr map))
+                (consp (qcdddr map))
+                (eq (qcddddr map) nil)
+                (|modeEqual| (fourth map) mode)
+                (|modeEqual| (third map) mp))
+            (push (second modemap) tmp5))))
+    (when
+     (setq fn
+      (dolist (onepair u tmp6)
+        (when (first onepair) (setq tmp6 (or tmp6 (second onepair))))))
+      (list (list '|call| fn xp) |$Boolean| ep))))))
+
+(defun |compCat| (form mode env)
+ (declare (ignore mode))
+ (let (functorName fn tmp1 tmp2 funList op sig catForm)
+  (setq functorName (first form))
+  (when (setq fn (getl functorName '|makeFunctionList|))
+   (setq tmp1 (funcall fn form form env))
+   (setq funList (first tmp1))
+   (setq env (second tmp1))
+   (setq catForm
+    (list '|Join| '(|SetCategory|)
+     (cons 'category
+      (cons '|domain|
+       (dolist (item funList (nreverse0 tmp2))
+        (setq op (first item))
+        (setq sig (second item))
+        (unless (eq op '=) (push (list 'signature op sig) tmp2)))))))
+   (list form catForm env))))
+
+(defun |compCategory| (form mode env)
+ (let ($top_level |$sigList| |$atList| domainOrPackage z rep)
+ (declare (special $top_level |$sigList| |$atList|))
+  (setq $top_level t)
+  (cond
+   ((and 
+      (equal (setq mode (|resolve| mode (list '|Category|)))
+             (list '|Category|))
+      (consp form)
+      (eq (qfirst form) 'category)
+      (consp (qrest form)))
+    (setq domainOrPackage (second form))
+    (setq z (qcddr form))
+    (setq |$sigList| nil)
+    (setq |$atList| nil)
+    (dolist (x z) (|compCategoryItem| x nil))
+    (setq rep
+      (|mkExplicitCategoryFunction| domainOrPackage |$sigList| |$atList|))
+    (list rep mode env))
+   (t
+    (|systemErrorHere| "compCategory")))))
+
+(defun |compCategoryItem| (x predl)
+ (let (p e a b c predlp pred y z op sig)
+ (declare (special |$sigList| |$atList|))
+ (cond
+  ((null x) nil)
+; 1. if x is a conditional expression, recurse; otherwise, form the predicate
+  ((and (consp x) (eq (qfirst x) 'cond)
+        (consp (qrest x)) (eq (qcddr x) nil)
+        (consp (qsecond x))
+        (consp (qcdadr x))
+        (eq (qcddadr x) nil))
+     (setq p (qcaadr x))
+     (setq e (qcadadr x))
+     (setq predlp (cons p predl))
+     (cond
+      ((and (consp e) (eq (qfirst e) 'progn))
+        (setq z (qrest e))
+        (dolist (y z) (|compCategoryItem| y predlp)))
+      (t (|compCategoryItem| e predlp))))
+  ((and (consp x) (eq (qfirst x) 'if) (consp (qrest x))
+        (consp (qcddr x)) (consp (qcdddr x))
+        (eq (qcddddr x) nil))
+     (setq a (qsecond x))
+     (setq b (qthird x))
+     (setq c (qfourth x))
+     (setq predlp (cons a predl))
+     (unless (eq b '|noBranch|)
+      (cond
+       ((and (consp b) (eq (qfirst b) 'progn))
+        (setq z (qrest b))
+        (dolist (y z) (|compCategoryItem| y predlp)))
+       (t (|compCategoryItem| b predlp))))
+     (cond
+      ((eq c '|noBranch|) nil)
+      (t
+       (setq predlp (cons (list '|not| a) predl))
+       (cond
+        ((and (consp c) (eq (qfirst c) 'progn))
+         (setq z (qrest c))
+         (dolist (y z) (|compCategoryItem| y predlp)))
+        (t (|compCategoryItem| c predlp))))))
+  (t
+   (setq pred (if predl (mkpf predl 'and) t))
+   (cond
+; 2. if attribute, push it and return
+     ((and (consp x) (eq (qfirst x) 'attribute)
+           (consp (qrest x)) (eq (qcddr x) nil))
+       (setq y (qsecond x))
+       (push (mkq (list y pred)) |$atList|))
+; 3. it may be a list, with PROGN as the CAR, and some information as the CDR
+     ((and (consp x) (eq (qfirst x) 'progn))
+       (setq z (qrest x))
+       (dolist (u z) (|compCategoryItem| u predl)))
+     (t
+; 4. otherwise, x gives a signature for a single operator name or a list of 
+; names; if a list of names, recurse
+      (cond ((eq (car x) 'signature) (car x)))
+      (setq op (cadr x))
+      (setq sig (cddr x))
+      (cond
+       ((null (atom op))
+        (dolist (y op) 
+          (|compCategoryItem| (cons 'signature (cons y sig)) predl)))
+       (t
+; 5. branch on a single type or a signature %with source and target
+        (push (mkq (list (cdr x) pred)) |$sigList|)))))))))
+
+(defun |compCoerce| (form mode env)
+ (let (newform newmode tmp1 tmp4 z td)
+  (setq newform (second form))
+  (setq newmode (third form))
+  (setq env (|addDomain| newmode env))
+  (setq tmp1 (|getmode| newmode env))
+  (cond
+   ((setq td (|compCoerce1| newform newmode env))
+    (|coerce| td mode))
+   ((and (consp tmp1) (eq (qfirst tmp1) '|Mapping|)
+         (consp (qrest tmp1)) (eq (qcddr tmp1) nil)
+         (consp (qsecond tmp1))
+         (eq (qcaadr tmp1) '|UnionCategory|))
+    (setq z (qcdadr tmp1))
+    (when
+     (setq td
+      (dolist (mode1 z tmp4)
+        (setq tmp4 (or tmp4 (|compCoerce1| newform mode1 env)))))
+     (|coerce| (list (car td) newmode (third td)) mode))))))
+
+(defun |compCoerce1| (form mode env)
+ (let (m1 td tp gg pred code)
+ (declare (special |$String| |$EmptyMode|))
+  (when (setq td (or (|comp| form mode env) (|comp| form |$EmptyMode| env)))
+    (setq m1 (if (stringp (second td)) |$String| (second td)))
+    (setq mode (|resolve| m1 mode))
+    (setq td (list (car td) m1 (third td)))
+    (cond
+     ((setq tp (|coerce| td mode)) tp)
+     ((setq tp (|coerceByModemap| td mode)) tp)
+     ((setq pred (|isSubset| mode (second td) env))
+       (setq gg (gensym))
+       (setq pred (subst gg '* pred :test #'equal))
+       (setq code
+        (list 'prog1
+         (list 'let gg (first td))
+          (cons '|check-subtype| (cons pred (list (mkq mode) gg)))))
+       (list code mode (third td)))))))
+
+(defun |compColon| (form mode env)
+  (let (|$lhsOfColon| argf argt tprime mprime r td op argl newTarget a 
+        signature tmp2 catform tmp3 g2 g5)
+  (declare (special |$lhsOfColon| |$noEnv| |$insideFunctorIfTrue|
+                    |$bootStrapMode| |$FormalMapVariableList|
+                    |$insideCategoryIfTrue| |$insideExpressionIfTrue|))
+    (setq argf (second form))
+    (setq argt (third form))
+    (if |$insideExpressionIfTrue|
+      (|compColonInside| argf mode env argt)
+      (progn
+        (setq |$lhsOfColon| argf)
+        (setq argt
+         (cond
+          ((and (atom argt)
+                (setq tprime (|assoc| argt (|getDomainsInScope| env))))
+            tprime)
+          ((and (|isDomainForm| argt env) (null |$insideCategoryIfTrue|))
+            (unless (|member| argt (|getDomainsInScope| env))
+               (setq env (|addDomain| argt env)))
+            argt)
+          ((or (|isDomainForm| argt env) (|isCategoryForm| argt env))
+            argt)
+          ((and (consp argt) (eq (qfirst argt) '|Mapping|)
+                (progn
+                  (setq tmp2 (qrest argt))
+                  (and (consp tmp2)
+                       (progn
+                        (setq mprime (qfirst tmp2))
+                        (setq r (qrest tmp2))
+                        t))))
+            argt)
+          (t
+            (|unknownTypeError| argt)
+            argt)))
+        (cond
+         ((when (consp argf) (eq (car argf) 'listof))
+           (dolist (x (cdr argf) td)
+             (setq td (|compColon| (list '|:| x argt) mode env))
+             (setq env (third td))))
+         (t
+          (setq env
+           (cond
+            ((and (consp argf)
+                  (progn
+                   (setq op (qfirst argf))
+                   (setq argl (qrest argf))
+                   t)
+                  (null (and (consp argt) (eq (qfirst argt) '|Mapping|))))
+             (setq newTarget
+              (eqsubstlist (take (|#| argl) |$FormalMapVariableList|)
+              (dolist (x argl (nreverse0 g2))
+                (setq g2
+                 (cons
+                  (cond
+                   ((and (consp x) (eq (qfirst x) '|:|)
+                         (progn
+                          (setq tmp2 (qrest x))
+                          (and (consp tmp2)
+                               (progn
+                                (setq a (qfirst tmp2))
+                                (setq tmp3 (qrest tmp2))
+                                (and (consp tmp3)
+                                     (eq (qrest tmp3) nil)
+                                     (progn
+                                      (setq mode (qfirst tmp3))
+                                      t))))))
+                       a)
+                      (t x))
+               g2)))
+              argt))
+             (setq signature
+              (cons '|Mapping|
+               (cons newTarget
+                (dolist (x argl (nreverse0 g5))
+                  (setq g5
+                   (cons
+                    (cond
+                     ((and (consp x) (eq (qfirst x) '|:|)
+                      (progn
+                       (setq tmp2 (qrest x))
+                       (and (consp tmp2)
+                            (progn
+                             (setq a (qfirst tmp2))
+                             (setq tmp3 (qrest tmp2))
+                             (and (consp tmp3)
+                                  (eq (qrest tmp3) nil)
+                                  (progn
+                                   (setq mode (qfirst tmp3))
+                                   t))))))
+                       mode)
+                     (t
+                      (or (|getmode| x env)
+                          (|systemErrorHere| "compColonOld"))))
+                     g5))))))
+             (|put| op '|mode| signature env))
+            (t (|put| argf '|mode| argt env))))
+         (cond
+           ((and (null |$bootStrapMode|) |$insideFunctorIfTrue|
+                 (progn
+                  (setq tmp2 (|makeCategoryForm| argt env))
+                  (and (consp tmp2)
+                       (progn
+                        (setq catform (qfirst tmp2))
+                        (setq tmp3 (qrest tmp2))
+                        (and (consp tmp3)
+                             (eq (qrest tmp3) nil)
+                             (progn
+                               (setq env (qfirst tmp3))
+                                       t))))))
+            (setq env 
+             (|put| argf '|value| (list (|genSomeVariable|) argt |$noEnv|)
+              env))))
+         (list '|/throwAway| (|getmode| argf env) env )))))))
+
+(defun |compColonInside| (form mode env mprime)
+ (let (mpp warningMessage td tprime)
+ (declare (special |$newCompilerUnionFlag| |$EmptyMode|))
+    (setq env (|addDomain| mprime env))
+    (when (setq td (|comp| form |$EmptyMode| env))
+     (cond
+      ((equal (setq mpp (second td)) mprime)
+       (setq warningMessage
+        (list '|:| mprime '| -- should replace by @|))))
+     (setq td (list (car td) mprime (third td)))
+     (when (setq tprime (|coerce| td mode))
+      (cond
+       (warningMessage (|stackWarning| warningMessage))
+       ((and |$newCompilerUnionFlag| (eq (|opOf| mpp) '|Union|))
+        (setq tprime
+         (|stackSemanticError|
+          (list '|cannot pretend | form '| of mode | mpp '| to mode | mprime )
+          nil)))
+       (t
+        (|stackWarning|
+         (list '|:| mprime '| -- should replace by pretend|))))
+      tprime))))
+
+(defun |compCons| (form mode env)
+  (or (|compCons1| form mode env) (|compForm| form mode env)))
+
+(defun |compCons1| (arg mode env)
+ (let (mx y my yt mp mr ytp tmp1 x td)
+ (declare (special |$EmptyMode|))
+  (setq x (second arg))
+  (setq y (third arg))
+  (when (setq tmp1 (|comp| x |$EmptyMode| env))
+   (setq x (first tmp1))
+   (setq mx (second tmp1))
+   (setq env (third tmp1))
+   (cond
+    ((null y)
+     (|convert| (list (list 'list x) (list '|List| mx) env ) mode))
+    (t
+     (when (setq yt (|comp| y |$EmptyMode| env))
+      (setq y (first yt))
+      (setq my (second yt))
+      (setq env (third yt))
+      (setq td
+       (cond
+        ((and (consp my) (eq (qfirst my) '|List|) (consp (qrest my)))
+          (setq mp (second my))
+          (when (setq mr (list '|List| (|resolve| mp mx)))
+           (when (setq ytp (|convert| yt mr))
+            (when (setq tmp1 (|convert| (list x mx (third ytp)) (second mr)))
+             (setq x (first tmp1))
+             (setq env (third tmp1))
+             (cond
+              ((and (consp (car ytp)) (eq (qfirst (car ytp)) 'list))
+               (list (cons 'list (cons x (cdr (car ytp)))) mr env))
+              (t
+               (list (list 'cons x (car ytp)) mr env)))))))
+        (t
+         (list (list 'cons x y) (list '|Pair| mx my) env ))))
+      (|convert| td mode)))))))
+
+(defun |compConstruct| (form mode env)
+ (let (z y td tp)
+  (setq z (cdr form))
+  (cond
+   ((setq y (|modeIsAggregateOf| '|List| mode env))
+    (if (setq td (|compList| z (list '|List| (cadr y)) env))
+      (|convert| td mode)
+      (|compForm| form mode env)))
+   ((setq y (|modeIsAggregateOf| '|Vector| mode env))
+    (if (setq td (|compVector| z (list '|Vector| (cadr y)) env))
+      (|convert| td mode)
+      (|compForm| form mode env)))
+   ((setq td (|compForm| form mode env)) td)
+   (t
+    (dolist (d (|getDomainsInScope| env))
+     (cond
+      ((and (setq y (|modeIsAggregateOf| '|List| d env))
+            (setq td (|compList| z (list '|List| (cadr y)) env))
+            (setq tp (|convert| td mode)))
+       (return tp))
+      ((and (setq y (|modeIsAggregateOf| '|Vector| d env))
+            (setq td (|compVector| z (list '|Vector| (cadr y)) env))
+            (setq tp (|convert| td mode)))
+        (return tp))))))))
+
+(defun |compConstructorCategory| (form mode env)
+ (declare (special |$Category|))
+ (list form (|resolve| |$Category| mode) env))
+
+(defun |compDefine| (form mode env)
+ (let (|$tripleCache| |$tripleHits| |$macroIfTrue| |$packagesUsed|)
+ (declare (special |$tripleCache| |$tripleHits| |$macroIfTrue|
+                    |$packagesUsed|))
+  (setq |$tripleCache| nil)
+  (setq |$tripleHits| 0)
+  (setq |$macroIfTrue| nil)
+  (setq |$packagesUsed| nil)
+  (|compDefine1| form mode env)))
+
+(defun |compDefine1| (form mode env)
+ (let (|$insideExpressionIfTrue| lhs specialCases sig signature rhs newPrefix
+       (tmp1 t))
+ (declare (special |$insideExpressionIfTrue| |$formalArgList| |$form| 
+                   |$op| |$prefix| |$insideFunctorIfTrue| |$Category|
+                   |$insideCategoryIfTrue| |$insideCapsuleFunctionIfTrue|
+                   |$ConstructorNames| |$NoValueMode| |$EmptyMode|
+                   |$insideWhereIfTrue| |$insideExpressionIfTrue|))
+  (setq |$insideExpressionIfTrue| nil)
+  (setq form (|macroExpand| form env))
+  (setq lhs (second form))
+  (setq signature (third form))
+  (setq specialCases (fourth form))
+  (setq rhs (fifth form))
+  (cond
+   ((and |$insideWhereIfTrue| 
+         (|isMacro| form env)
+         (or (equal mode |$EmptyMode|) (equal mode |$NoValueMode|)))
+     (list lhs mode (|put| (car lhs) '|macro| rhs env)))
+   ((and (null (car signature)) (consp rhs)
+         (null (member (qfirst rhs) |$ConstructorNames|))
+         (setq sig (|getSignatureFromMode| lhs env)))
+    (|compDefine1|
+      (list 'def lhs (cons (car sig) (cdr signature)) specialCases rhs)
+      mode env))
+   (|$insideCapsuleFunctionIfTrue| (|compInternalFunction| form mode env))
+   (t
+    (when (equal (car signature) |$Category|) (setq |$insideCategoryIfTrue| t))
+    (setq env (|compDefineAddSignature| lhs signature env))
+    (cond
+     ((null (dolist (x (rest signature) tmp1) (setq tmp1 (and tmp1 (null x)))))
+      (|compDefWhereClause| form mode env))
+     ((equal (car signature) |$Category|)
+      (|compDefineCategory| form mode env nil |$formalArgList|))
+     ((and (|isDomainForm| rhs env) (null |$insideFunctorIfTrue|))
+      (when (null (car signature))
+        (setq signature
+         (cons (|getTargetFromRhs| lhs rhs
+                 (|giveFormalParametersValues| (cdr lhs) env))
+               (cdr signature))))
+      (setq rhs (|addEmptyCapsuleIfNecessary| (car signature) rhs))
+      (|compDefineFunctor|
+        (list 'def lhs signature specialCases rhs) 
+        mode env NIL |$formalArgList|))
+     ((null |$form|)
+      (|stackAndThrow| (list "bad == form " form)))
+     (t
+      (setq newPrefix
+       (if |$prefix|
+         (intern (strconc (|encodeItem| |$prefix|) "," (|encodeItem| |$op|)))
+         (|getAbbreviation| |$op| (|#| (cdr |$form|)))))
+      (|compDefineCapsuleFunction| 
+         form mode env newPrefix |$formalArgList|)))))))
+
+(defun |compDefineAddSignature| (form signature env)
+ (let (sig declForm)
+ (declare (special |$EmptyMode|))
+  (if
+   (and (setq sig (|hasFullSignature| (rest form) signature env))
+         (null (|assoc| (cons '$ sig) 
+                        (lassoc '|modemap| (|getProplist| (car form) env)))))
+    (progn
+     (setq declForm
+      (list '|:|
+        (cons (car form)
+              (loop for x in (rest form) 
+                    for m in (rest sig)
+                collect (list '|:| x m)))
+        (car signature)))
+      (third (|comp| declForm |$EmptyMode| env)))
+    env)))
+
+(defun |compDefineCapsuleFunction| (df m oldE |$prefix| |$formalArgList|)
+ ; df is ['DEF,form,signature,specialCases,body]
+ (declare (special |$prefix| |$formalArgList|))
+ (let (|$form| |$op| |$functionStats| |$argumentConditionList| |$finalEnv|
+       |$initCapsuleErrorCount| |$insideCapsuleFunctionIfTrue|
+       |$CapsuleModemapFrame| |$CapsuleDomainsInScope|
+       |$insideExpressionIfTrue| form signature body tmp1 lineNumber
+       specialCases argl identSig argModeList signaturep e rettype tmp2
+       localOrExported formattedSig tt catchTag bodyp finalBody fun val)
+ (declare (special |$form| |$op| |$functionStats| |$functorStats| 
+                   |$argumentConditionList| |$finalEnv| |$returnMode|
+                   |$initCapsuleErrorCount| |$newCompCompare| |$NoValueMode|
+                   |$insideCapsuleFunctionIfTrue|
+                   |$CapsuleModemapFrame| |$CapsuleDomainsInScope|
+                   |$insideExpressionIfTrue| |$compileOnlyCertainItems|
+                   |$profileCompiler| |$functionLocations| |$finalEnv|
+                   |$signatureOfForm| |$semanticErrorStack|))
+  (setq form (second df))
+  (setq signature (third df))
+  (setq specialCases (fourth df))
+  (setq body (fifth df))
+  (setq tmp1 specialCases)
+  (setq lineNumber (first tmp1))
+  (setq specialCases (rest tmp1))
+  (setq e oldE)
+;-1. bind global variables
+  (setq |$form| nil)
+  (setq |$op| nil)
+  (setq |$functionStats| (list 0 0))
+  (setq |$argumentConditionList| nil)
+  (setq |$finalEnv| nil)
+; used by ReplaceExitEtc to get a common environment
+  (setq |$initCapsuleErrorCount| (|#| |$semanticErrorStack|))
+  (setq |$insideCapsuleFunctionIfTrue| t)
+  (setq |$CapsuleModemapFrame| e)
+  (setq |$CapsuleDomainsInScope| (|get| '|$DomainsInScope| 'special e))
+  (setq |$insideExpressionIfTrue| t)
+  (setq |$returnMode| m)
+  (setq |$op| (first form))
+  (setq argl (rest form))
+  (setq |$form| (cons |$op| argl))
+  (setq argl (|stripOffArgumentConditions| argl))
+  (setq |$formalArgList| (append argl |$formalArgList|))
+; let target and local signatures help determine modes of arguments
+  (setq argModeList
+   (cond
+    ((setq identSig (|hasSigInTargetCategory| argl form (car signature) e))
+      (setq e (|checkAndDeclare| argl form identSig e))
+      (cdr identSig))
+    (t
+     (loop for a in argl 
+      collect (|getArgumentModeOrMoan| a form e)))))
+  (setq argModeList (|stripOffSubdomainConditions| argModeList argl))
+  (setq signaturep (cons (car signature) argModeList))
+  (unless identSig
+    (setq oldE (|put| |$op| '|mode| (cons '|Mapping| signaturep) oldE)))
+; obtain target type if not given
+  (cond
+   ((null (car signaturep))
+     (setq signaturep
+      (cond
+       (identSig identSig)
+       (t (|getSignature| |$op| (cdr signaturep) e))))))
+  (when signaturep
+   (setq e (|giveFormalParametersValues| argl e))
+   (setq |$signatureOfForm| signaturep)
+   (setq |$functionLocations|
+     (cons (cons (list |$op| |$signatureOfForm|) lineNumber)
+           |$functionLocations|))
+   (setq e (|addDomain| (car signaturep) e))
+   (setq e (|compArgumentConditions| e))
+   (when |$profileCompiler|
+    (loop for x in argl for y in signaturep 
+     do (|profileRecord| '|arguments| x y)))
+; 4. introduce needed domains into extendedEnv
+   (loop for domain in signaturep
+    do (setq e (|addDomain| domain e)))
+; 6. compile body in environment with extended environment
+   (setq rettype (|resolve| (car signaturep) |$returnMode|))
+   (setq localOrExported
+    (if (and (null (|member| |$op| |$formalArgList|))
+             (eq (first tmp2) '|Mapping|))
+       '|local|
+       '|exported|))
+; 6a skip if compiling only certain items but not this one
+; could be moved closer to the top
+   (setq formattedSig (|formatUnabbreviated| (cons '|Mapping| signaturep)))
+   (cond
+    ((and |$compileOnlyCertainItems|
+          (null (|member| |$op| |$compileOnlyCertainItems|)))
+     (|sayBrightly|
+      (cons "   skipping " (cons localOrExported (|bright| |$op|))))
+     (list nil (cons '|Mapping| signaturep) oldE))
+    (t
+     (|sayBrightly|
+      (cons "   compiling " (cons localOrExported (append (|bright| |$op|)
+         (cons ": " formattedSig)))))
+     (setq tt (catch '|compCapsuleBody| (|compOrCroak| body rettype e)))
+     (|NRTassignCapsuleFunctionSlot| |$op| signaturep)
+; A THROW to the above CATCH occurs if too many semantic errors occur
+; see stackSemanticError
+     (setq catchTag (mkq (gensym)))
+     (setq fun
+      (progn
+       (setq bodyp
+        (|replaceExitEtc| (car tt) catchTag '|TAGGEDreturn| |$returnMode|))
+       (setq bodyp (|addArgumentConditions| bodyp |$op|))
+       (setq finalBody (list 'catch catchTag bodyp))
+       (|compileCases|
+         (list |$op| (list 'lam (append argl (list '$)) finalBody))
+         oldE)))
+     (setq |$functorStats| (|addStats| |$functorStats| |$functionStats|))
+; 7. give operator a 'value property
+     (setq val (list fun signaturep e))
+     (list fun (list '|Mapping| signaturep) oldE))))))
+
+(defun |compDefineCategory| (df mode env prefix fal)
+ (let (|$domainShell| |$lisplibCategory|)
+ (declare (special |$domainShell| |$lisplibCategory| $lisplib
+                   |$insideFunctorIfTrue|))
+  (setq |$domainShell| nil) ; holds the category of the object being compiled
+  (setq |$lisplibCategory| nil)
+  (if (and (null |$insideFunctorIfTrue|) $lisplib)
+    (|compDefineLisplib| df mode env prefix fal '|compDefineCategory1|)
+    (|compDefineCategory1| df mode env prefix fal))))
+
+(defun |compDefineCategory1| (df mode env prefix fal)
+ (let (|$insideCategoryPackageIfTrue| |$categoryPredicateList| form
+       sig sc cat body categoryCapsule d tmp1 tmp3)
+ (declare (special |$insideCategoryPackageIfTrue| |$EmptyMode|
+                   |$categoryPredicateList| |$lisplibCategory|
+                   |$bootStrapMode|))
+  ;; a category is a DEF form with 4 parts:
+  ;; ((DEF (|BasicType|) ((|Category|)) (NIL)
+  ;;    (|add| (CATEGORY |domain| (SIGNATURE = ((|Boolean|) $ $))
+  ;;               (SIGNATURE ~= ((|Boolean|) $ $)))
+  ;;           (CAPSULE (DEF (~= |x| |y|) ((|Boolean|) $ $) (NIL NIL NIL)
+  ;;                         (IF (= |x| |y|) |false| |true|))))))
+  (setq form (second df))
+  (setq sig (third df))
+  (setq sc (fourth df))
+  (setq body (fifth df))
+  (setq categoryCapsule
+   (when (and (consp body) (eq (qfirst body) '|add|)
+              (consp (qrest body)) (consp (qcddr body))
+              (eq (qcdddr body) nil))
+     (setq tmp1 (third body))
+     (setq body (second body))
+     tmp1))
+  (setq tmp3 (|compDefineCategory2| form sig sc body mode env prefix fal))
+  (setq d (first tmp3))
+  (setq mode (second tmp3))
+  (setq env (third tmp3))
+  (when (and categoryCapsule (null |$bootStrapMode|))
+    (setq |$insideCategoryPackageIfTrue| t)
+    (setq |$categoryPredicateList|
+       (|makeCategoryPredicates| form |$lisplibCategory|))
+    (setq env (third
+     (|compDefine1|
+       (|mkCategoryPackage| form cat categoryCapsule) |$EmptyMode| env))))
+  (list d mode env)))
+
+(defun |compDefineCategory2|
+       (form signature specialCases body mode env |$prefix| |$formalArgList|)
+ (declare (special |$prefix| |$formalArgList|) (ignore specialCases))
+ (let (|$insideCategoryIfTrue| $TOP_LEVEL |$definition| |$form| |$op|
+       |$extraParms| |$functionStats| |$functorStats| |$frontier|
+       |$getDomainCode| |$addForm| argl sargl aList signaturep opp  formp
+       formalBody formals actuals g fun pairlis parSignature parForm modemap)
+ (declare (special |$insideCategoryIfTrue| $top_level |$definition|
+                    |$form| |$op| |$extraParms| |$functionStats|
+                    |$functorStats| |$frontier| |$getDomainCode|
+                    |$addForm| |$lisplibAbbreviation| |$functorForm|
+                    |$lisplibAncestors| |$lisplibCategory|
+                    |$FormalMapVariableList| |$lisplibParents|
+                    |$lisplibModemap| |$lisplibKind| |$lisplibForm|
+                    $lisplib |$domainShell| |$libFile|
+                    |$TriangleVariableList|))
+; 1. bind global variables
+  (setq |$insideCategoryIfTrue| t)
+  (setq $top_level nil)
+  (setq |$definition| nil)
+  (setq |$form| nil)
+  (setq |$op| nil)
+  (setq |$extraParms| nil)
+; 1.1  augment e to add declaration $: <form>
+  (setq |$definition| form)
+  (setq |$op| (car |$definition|))
+  (setq argl (cdr |$definition|))
+  (setq env (|addBinding| '$  (list (cons '|mode| |$definition|)) env))
+; 2. obtain signature
+  (setq signaturep
+    (cons (car signature)
+     (loop for a in argl
+      collect (|getArgumentModeOrMoan| a |$definition| env))))
+  (setq env (|giveFormalParametersValues| argl env))
+; 3. replace arguments by $1,..., substitute into body,
+;    and introduce declarations into environment
+  (setq sargl (take (|#| argl) |$TriangleVariableList|))
+  (setq |$form| (cons |$op| sargl))
+  (setq |$functorForm| |$form|)
+  (setq |$formalArgList| (append sargl |$formalArgList|))
+  (setq aList (loop for a in argl for sa in sargl collect (cons a sa)))
+  (setq formalBody (sublis aList body))
+  (setq signaturep (sublis aList signaturep))
+  ; Begin lines for category default definitions
+  (setq |$functionStats| (list 0 0))
+  (setq |$functorStats| (list 0 0))
+  (setq |$frontier| 0)
+  (setq |$getDomainCode| nil)
+  (setq |$addForm| nil)
+  (loop for x in sargl for r in (rest signaturep)
+   do (setq env (third (|compMakeDeclaration| (list '|:| x r) mode env))))
+; 4. compile body in environment of %type declarations for arguments
+  (setq opp |$op|)
+  (when (and (not (eq (|opOf| formalBody) '|Join|))
+             (not (eq (|opOf| formalBody) '|mkCategory|)))
+    (setq formalBody (list '|Join| formalBody)))
+  (setq body 
+    (|optFunctorBody| (car (|compOrCroak| formalBody (car signaturep) env))))
+  (when |$extraParms|
+    (setq actuals nil)
+    (setq formals nil)
+    (loop for u in |$extraParms| do
+      (setq formals (cons (car u) formals))
+      (setq actuals (cons (mkq (cdr u)) actuals)))
+    (setq body
+     (list '|sublisV| (list 'pair (list 'quote formals) (cons 'list actuals))
+            body)))
+;  always subst for args after extraparms
+  (when argl
+    (setq body
+     (list '|sublisV|
+      (list 'pair
+       (list 'quote sargl)
+        (cons 'list (loop for u in sargl collect (list '|devaluate| u))))
+        body)))
+  (setq body
+   (list 'prog1 (list 'let (setq g (gensym)) body)
+                (list 'setelt g 0 (|mkConstructor| |$form|))))
+  (setq fun (|compile| (list opp (list 'lam sargl body))))
+; 5. give operator a 'modemap property
+  (setq pairlis
+   (loop for a in argl for v in |$FormalMapVariableList|
+    collect (cons a v)))
+  (setq parSignature (sublis pairlis signaturep))
+  (setq parForm (sublis pairlis form))
+  (|lisplibWrite| "compilerInfo"
+    (|removeZeroOne|
+     (list 'setq '|$CategoryFrame|
+       (list '|put| (list 'quote opp) ''|isCategory| t 
+              (list '|addModemap| (mkq opp) (mkq parForm)
+                     (mkq parSignature) t (mkq fun) '|$CategoryFrame|))))
+    |$libFile|)
+  (unless sargl
+   (|evalAndRwriteLispForm| 'niladic
+    `(setf (get ',opp 'niladic) t)))
+;; 6 put modemaps into InteractiveModemapFrame
+ (setq |$domainShell| (|eval| (cons opp (mapcar 'mkq sargl))))
+ (setq |$lisplibCategory| formalBody)
+ (when $lisplib
+   (setq |$lisplibForm| form)
+   (setq |$lisplibKind| '|category|)
+   (setq modemap (list (cons parForm parSignature) (list t opp)))
+   (setq |$lisplibModemap| modemap)
+   (setq |$lisplibParents|
+     (|getParentsFor| |$op| |$FormalMapVariableList| |$lisplibCategory|))
+   (setq |$lisplibAncestors| (|computeAncestorsOf| |$form| nil))
+   (setq |$lisplibAbbreviation| (|constructor?| |$op|))
+   (setq formp (cons opp sargl))
+   (|augLisplibModemapsFromCategory| formp formalBody signaturep))
+ (list fun '(|Category|) env)))
+
+(defun |compDefineFunctor| (df mode env prefix fal)
+ (let (|$domainShell| |$profileCompiler| |$profileAlist|)
+ (declare (special |$domainShell| |$profileCompiler| $lisplib |$profileAlist|))
+  (setq |$domainShell| nil)
+  (setq |$profileCompiler| t)
+  (setq |$profileAlist| nil)
+  (if $lisplib
+   (|compDefineLisplib| df mode env prefix fal '|compDefineFunctor1|)
+   (|compDefineFunctor1| df mode env prefix fal))))
+
+(defun |compDefineFunctor1| (df mode |$e| |$prefix| |$formalArgList|)
+ (declare (special |$e| |$prefix| |$formalArgList|))
+ (labels (
+  (FindRep (cb)
+   (loop while cb do
+     (when (atom cb) (return nil))
+     (when (and (consp cb) (consp (qfirst cb)) (eq (qcaar cb) 'let)
+                (consp (qcdar cb)) (eq (qcadar cb) '|Rep|)
+                (consp (qcddar cb)))
+      (return (caddar cb)))
+      (pop cb))))
+  (let (|$addForm| |$viewNames| |$functionStats| |$functorStats|
+            |$form| |$op| |$signature| |$functorTarget|
+            |$Representation| |$LocalDomainAlist| |$functorForm|
+            |$functorLocalParameters| |$CheckVectorList|
+            |$getDomainCode| |$insideFunctorIfTrue| |$functorsUsed|
+            |$setelt| $TOP_LEVEL |$genFVar| |$genSDVar|
+            |$mutableDomain| |$attributesName| |$goGetList|
+            |$condAlist| |$uncondAlist| |$NRTslot1PredicateList|
+            |$NRTattributeAlist| |$NRTslot1Info| |$NRTbase|
+            |$NRTaddForm| |$NRTdeltaList| |$NRTdeltaListComp|
+            |$NRTaddList| |$NRTdeltaLength| |$NRTloadTimeAlist|
+            |$NRTdomainFormList| |$template| |$functionLocations|
+            |$isOpPackageName| |$lookupFunction| |$byteAddress|
+            |$byteVec| form signature body originale argl signaturep target ds
+            attributeList parSignature parForm
+            argPars opp rettype tt bodyp lamOrSlam fun
+            operationAlist modemap libFn tmp1)
+ (declare (special $lisplib $top_level |$bootStrapMode| |$CategoryFrame|
+                  |$CheckVectorList| |$FormalMapVariableList| 
+                  |$LocalDomainAlist| |$NRTaddForm| |$NRTaddList| 
+                  |$NRTattributeAlist| |$NRTbase| |$NRTdeltaLength| 
+                  |$NRTdeltaListComp| |$NRTdeltaList| |$NRTdomainFormList| 
+                  |$NRTloadTimeAlist| |$NRTslot1Info| |$NRTslot1PredicateList| 
+                  |$Representation| |$addForm| |$attributesName| 
+                  |$byteAddress| |$byteVec| |$compileOnlyCertainItems|
+                  |$condAlist| |$domainShell| |$form| |$functionLocations| 
+                  |$functionStats| |$functorForm| |$functorLocalParameters| 
+                  |$functorStats| |$functorSpecialCases| |$functorTarget| 
+                  |$functorsUsed| |$genFVar| |$genSDVar| |$getDomainCode| 
+                  |$goGetList| |$insideCategoryPackageIfTrue|
+                  |$insideFunctorIfTrue| |$isOpPackageName| |$libFile|
+                  |$lisplibAbbreviation| |$lisplibAncestors|
+                  |$lisplibCategoriesExtended| |$lisplibCategory|
+                  |$lisplibForm| |$lisplibKind| |$lisplibMissingFunctions|
+                  |$lisplibModemap| |$lisplibOperationAlist| |$lisplibParents|
+                  |$lisplibSlot1| |$lookupFunction| |$myFunctorBody|
+                  |$mutableDomain| |$mutableDomains| |$op| |$pairlis|
+                  |$QuickCode| |$setelt| |$signature| |$template| 
+                  |$uncondAlist| |$viewNames| |$lisplibFunctionLocations|))
+  (setq form (second df))
+  (setq signature (third df))
+  (setq |$functorSpecialCases| (fourth df))
+  (setq body (fifth df))
+  (setq |$addForm| nil)
+  (setq |$viewNames| nil)
+  (setq |$functionStats| (list 0 0))
+  (setq |$functorStats| (list 0 0))
+  (setq |$form| nil)
+  (setq |$op| nil)
+  (setq |$signature| nil)
+  (setq |$functorTarget| nil)
+  (setq |$Representation| nil)
+  (setq |$LocalDomainAlist| nil)
+  (setq |$functorForm| nil)
+  (setq |$functorLocalParameters| nil)
+  (setq |$myFunctorBody| body)
+  (setq |$CheckVectorList| nil)
+  (setq |$getDomainCode| nil)
+  (setq |$insideFunctorIfTrue| t)
+  (setq |$functorsUsed| nil)
+  (setq |$setelt| (if  |$QuickCode| 'qsetrefv 'setelt))
+  (setq $top_level nil)
+  (setq |$genFVar| 0)
+  (setq |$genSDVar| 0)
+  (setq originale |$e|)
+  (setq |$op| (first form))
+  (setq argl (rest form))
+  (setq |$formalArgList| (append argl |$formalArgList|))
+  (setq |$pairlis|
+   (loop for a in argl for v in |$FormalMapVariableList|
+    collect (cons a v)))
+  (setq |$mutableDomain|
+                      (OR (|isCategoryPackageName| |$op|)
+                          (COND
+                            ((boundp '|$mutableDomains|)
+                             (member |$op| |$mutableDomains|))
+                            ('T NIL))))
+  (setq signaturep
+    (cons (car signature)
+          (loop for a in argl collect (|getArgumentModeOrMoan| a form |$e|))))
+   (setq |$form| (cons |$op| argl))
+   (setq |$functorForm| |$form|)
+   (unless (car signaturep)
+     (setq signaturep (cdar (|getModemap| |$form| |$e|))))
+   (setq target (first signaturep))
+   (setq |$functorTarget| target)
+   (setq |$e| (|giveFormalParametersValues| argl |$e|))
+   (setq tmp1 (|compMakeCategoryObject| target |$e|))
+   (if tmp1 
+    (progn     
+     (setq ds (first tmp1))
+     (setq |$e| (third tmp1))
+     (setq |$domainShell| (copy-seq ds))
+     (setq |$attributesName| (intern (strconc (pname |$op|) ";attributes")))
+     (setq attributeList (|disallowNilAttribute| (elt ds 2)))
+     (setq |$goGetList| nil)
+     (setq |$condAlist| nil)
+     (setq |$uncondAlist| nil)
+     (setq |$NRTslot1PredicateList|
+      (remdup (loop for x in attributeList collect (second x))))
+     (setq |$NRTattributeAlist| (|NRTgenInitialAttributeAlist| attributeList))
+     (setq |$NRTslot1Info| nil)
+     (setq |$NRTbase| 6)
+     (setq |$NRTaddForm| nil)
+     (setq |$NRTdeltaList| nil)
+     (setq |$NRTdeltaListComp| nil)
+     (setq |$NRTaddList| nil)
+     (setq |$NRTdeltaLength| 0)
+     (setq |$NRTloadTimeAlist| nil)
+     (setq |$NRTdomainFormList| nil)
+     (setq |$template| nil)
+     (setq |$functionLocations| nil)
+     (loop for x in argl do (|NRTgetLocalIndex| x))
+     (setq |$e|
+       (third (|compMakeDeclaration| (list '|:| '$ target) mode |$e|)))
+     (unless |$insideCategoryPackageIfTrue|
+      (if
+        (and (consp body) (eq (qfirst body) '|add|)
+             (consp (qrest body))
+             (consp (qsecond body))
+             (consp (qcddr body))
+             (eq (qcdddr body) nil)
+             (consp (qthird body))
+             (eq (qcaaddr body) 'capsule)
+             (member (qcaadr body) '(|List| |Vector|))
+             (equal (FindRep (qcdaddr body)) (second body)))
+        (setq |$e| (|augModemapsFromCategoryRep| '$ 
+          (second body) (cdaddr body) target |$e|))
+        (setq |$e| (|augModemapsFromCategory| '$ '$ target |$e|))))
+     (setq |$signature| signaturep)
+     (setq operationAlist (sublis |$pairlis| (elt |$domainShell| 1)))
+     (setq parSignature (sublis |$pairlis| signaturep))
+     (setq parForm (sublis |$pairlis| form))
+     (setq argPars (|makeFunctorArgumentParameters| argl
+                     (cdr signaturep) (car signaturep)))
+     (setq |$functorLocalParameters| argl)
+     (setq opp |$op|)
+     (setq rettype (CAR signaturep))
+     (setq tt (|compFunctorBody| body rettype |$e| parForm))
+     (cond
+      (|$compileOnlyCertainItems|
+       (|reportOnFunctorCompilation|)
+       (list nil (cons '|Mapping| signaturep) originale))
+      (t
+       (setq bodyp (first tt))
+       (setq lamOrSlam (if |$mutableDomain| 'lam 'spadslam))
+       (setq fun
+        (|compile| (sublis |$pairlis| (list opp (list lamOrSlam argl bodyp)))))
+       (setq operationAlist (sublis |$pairlis| |$lisplibOperationAlist|))
+       (cond
+        ($lisplib
+         (|augmentLisplibModemapsFromFunctor| parForm
+             operationAlist parSignature)))
+       (|reportOnFunctorCompilation|)
+       (cond
+        ($lisplib
+         (setq modemap (list (cons parForm parSignature) (list t opp)))
+         (setq |$lisplibModemap| modemap)
+         (setq |$lisplibCategory| (cadar modemap))
+         (setq |$lisplibParents|
+           (|getParentsFor| |$op| |$FormalMapVariableList| |$lisplibCategory|))
+         (setq |$lisplibAncestors| (|computeAncestorsOf| |$form| NIL))
+         (setq |$lisplibAbbreviation| (|constructor?| |$op|))))
+       (setq |$insideFunctorIfTrue| NIL)
+       (cond
+        ($lisplib
+         (setq |$lisplibKind|
+          (if (and (consp |$functorTarget|)
+                   (eq (qfirst |$functorTarget|) 'category)
+                   (consp (qrest |$functorTarget|))
+                   (not (eq (qsecond |$functorTarget|) '|domain|)))
+            '|package|
+            '|domain|))
+         (setq |$lisplibForm| form)
+         (cond
+          ((null |$bootStrapMode|)
+           (setq |$NRTslot1Info| (|NRTmakeSlot1Info|))
+           (setq |$isOpPackageName| (|isCategoryPackageName| |$op|))
+           (when |$isOpPackageName|
+             (|lisplibWrite| "slot1DataBase"
+               (list '|updateSlot1DataBase| (mkq |$NRTslot1Info|))
+               |$libFile|))
+           (setq |$lisplibFunctionLocations|
+              (sublis |$pairlis| |$functionLocations|))
+           (setq |$lisplibCategoriesExtended|
+              (sublis |$pairlis| |$lisplibCategoriesExtended|))
+           (setq libFn (getdatabase opp 'abbreviation))
+           (setq |$lookupFunction|
+             (|NRTgetLookupFunction| |$functorForm|
+               (cadar |$lisplibModemap|) |$NRTaddForm|))
+           (setq |$byteAddress| 0)
+           (setq |$byteVec| NIL)
+           (setq |$NRTslot1PredicateList|
+            (loop for x in |$NRTslot1PredicateList|
+             collect (|simpBool| x)))
+           (|rwriteLispForm| '|loadTimeStuff|
+            `(setf (get ,(mkq |$op|) '|infovec|) ,(|getInfovecCode|)))))
+         (setq |$lisplibSlot1| |$NRTslot1Info|)
+         (setq |$lisplibOperationAlist| operationAlist)
+         (setq |$lisplibMissingFunctions| |$CheckVectorList|)))
+       (|lisplibWrite| "compilerInfo"
+        (|removeZeroOne|
+         (list 'setq '|$CategoryFrame| 
+          (list '|put| (list 'quote opp) ''|isFunctor| 
+                 (list 'quote operationAlist)
+                 (list '|addModemap| 
+                   (list 'quote opp)
+                   (list 'quote parForm)
+                   (list 'quote parSignature)
+                   t
+                   (list 'quote opp)
+                   (list '|put| (list 'quote opp) ''|mode|
+                          (list 'quote (cons '|Mapping| parSignature))
+                          '|$CategoryFrame|)))))
+                     |$libFile|)
+       (unless argl
+        (|evalAndRwriteLispForm| 'niladic
+          `(setf (get ',opp 'niladic) t)))
+       (list fun (cons '|Mapping| signaturep) originale))))
+     (progn
+     (|sayBrightly| "   cannot produce category object:")
+     (|pp| target)
+     nil)))))
+
+(defun |compDefineLisplib| (df m env prefix fal fn)
+ (let ($LISPLIB |$op| |$lisplibAttributes| |$lisplibPredicates|
+       |$lisplibCategoriesExtended| |$lisplibForm| |$lisplibKind|
+       |$lisplibAbbreviation| |$lisplibParents| |$lisplibAncestors| 
+       |$lisplibModemap| |$lisplibModemapAlist| |$lisplibSlot1|
+       |$lisplibOperationAlist| |$lisplibSuperDomain| |$libFile|
+       |$lisplibVariableAlist| |$lisplibCategory| op libname res ok filearg)
+ (declare (special $lisplib |$op| |$lisplibAttributes| |$newConlist|
+                   |$lisplibPredicates| |$lisplibCategoriesExtended|
+                   |$lisplibForm| |$lisplibKind| |$algebraOutputStream|
+                   |$lisplibAbbreviation| |$lisplibParents| |$spadLibFT|
+                   |$lisplibAncestors| |$lisplibModemap| $filep
+                   |$lisplibModemapAlist| |$lisplibSlot1|
+                   |$lisplibOperationAlist| |$lisplibSuperDomain|
+                   |$libFile| |$lisplibVariableAlist| 
+                   |$lisplibCategory| |$compileDocumentation|))
+  (when (eq (car df) 'def) (car df))
+  (setq op (caadr df))
+  (|sayMSG| (|fillerSpaces| 72 "-"))
+  (setq $lisplib t)
+  (setq |$op| op)
+  (setq |$lisplibAttributes| nil)
+  (setq |$lisplibPredicates| nil)
+  (setq |$lisplibCategoriesExtended| nil)
+  (setq |$lisplibForm| nil)
+  (setq |$lisplibKind| nil)
+  (setq |$lisplibAbbreviation| nil)
+  (setq |$lisplibParents| nil)
+  (setq |$lisplibAncestors| nil)
+  (setq |$lisplibModemap| nil)
+  (setq |$lisplibModemapAlist| nil)
+  (setq |$lisplibSlot1| nil)
+  (setq |$lisplibOperationAlist| nil)
+  (setq |$lisplibSuperDomain| nil)
+  (setq |$libFile| nil)
+  (setq |$lisplibVariableAlist| nil)
+  (setq |$lisplibCategory| nil)
+  (setq libname (|getConstructorAbbreviation| op))
+  (cond
+   ((and (boundp '|$compileDocumentation|) |$compileDocumentation|)
+      (|compileDocumentation| libname))
+   (t
+    (|sayMSG| (cons "   initializing " (cons |$spadLibFT|
+              (append (|bright| libname) (cons "for" (|bright| op))))))
+    (|initializeLisplib| libname)
+    (|sayMSG|
+     (cons "   compiling into " (cons |$spadLibFT| (|bright| libname))))
+    (setq ok nil)
+    (unwind-protect
+     (progn
+      (setq res (funcall fn df m env prefix fal))
+      (|sayMSG| (cons "   finalizing " (cons |$spadLibFT| (|bright| libname))))
+      (|finalizeLisplib| libname)
+      (setq ok t))
+      (rshut |$libFile|))
+    (when ok (|lisplibDoRename| libname))
+    (setq filearg ($filep libname |$spadLibFT| 'a))
+    (rpackfile filearg)
+    (fresh-line |$algebraOutputStream|)
+    (|sayMSG| (|fillerSpaces| 72 "-"))
+    (|unloadOneConstructor| op libname)
+    (localdatabase (list (getdatabase op 'abbreviation)) nil)
+    (setq |$newConlist| (cons op |$newConlist|))
+    (when (eq |$lisplibKind| '|category|)
+     (|updateCategoryFrameForCategory| op)
+     (|updateCategoryFrameForConstructor| op))
+    res))))
+
+(defun |compDefWhereClause| (arg mode env)
+ (labels (
+  (transformType (x)
+   (declare (special |$sigAlist|))
+   (cond
+    ((atom x) x)
+    ((and (consp x) (eq (qfirst x) '|:|) (consp (qrest x))
+          (consp (qcddr x)) (eq (qcdddr x) nil))
+     (setq |$sigAlist|
+      (cons (cons (second x) (transformType (third x)))
+      |$sigAlist|))
+     x)
+   ((and (consp x) (eq (qfirst x) '|Record|)) x)
+   (t
+    (cons (first x)
+     (loop for y in (rest x) 
+      collect (transformType y))))))
+  (removeSuchthat (x)
+   (declare (special |$predAlist|))
+    (if (and (consp x) (eq (qfirst x) '|\||) (consp (qrest x))
+             (consp (qcddr x)) (eq (qcdddr x) nil))
+     (progn
+      (setq |$predAlist| (cons (cons (second x) (third x)) |$predAlist|))
+      (second x))
+     x))
+  (fetchType (a x env form)
+   (if x 
+    x
+    (or (|getmode| a env)
+        (|userError| (|concat|
+         "There is no mode for argument" a "of function" (first form))))))
+  (addSuchthat (x y)
+   (let (p)
+   (declare (special |$predAlist|))
+     (if (setq p (lassoc x |$predAlist|)) (list '|\|| y p) y)))
+ )
+ (let (|$sigAlist| |$predAlist| form signature specialCases body sigList 
+       argList argSigAlist argDepAlist varList whereList formxx signaturex
+       defform formx)
+ (declare (special |$sigAlist| |$predAlist|))
+; form is lhs (f a1 ... an) of definition; body is rhs;
+; signature is (t0 t1 ... tn) where t0= target type, ti=type of ai, i > 0;
+; specialCases is (NIL l1 ... ln) where li is list of special cases
+; which can be given for each ti
+;
+; removes declarative and assignment information from form and
+; signature, placing it in list L, replacing form by ("where",form',:L),
+; signature by a list of NILs (signifying declarations are in e)
+  (setq form (second arg))
+  (setq signature (third arg))
+  (setq specialCases (fourth arg))
+  (setq body (fifth arg))
+  (setq |$sigAlist| nil)
+  (setq |$predAlist| nil)
+; 1. create sigList= list of all signatures which have embedded
+;    declarations moved into global variable $sigAlist
+  (setq sigList
+   (loop for a in (rest form) for x in (rest signature) 
+    collect (transformType (fetchType a x env form))))
+; 2. replace each argument of the form (|| x p) by x, recording
+;    the given predicate in global variable $predAlist
+  (setq argList
+   (loop for a in (rest form)
+    collect (removeSuchthat a)))
+  (setq argSigAlist (append |$sigAlist| (pairList argList sigList)))
+  (setq argDepAlist
+   (loop for pear in argSigAlist 
+    collect
+     (cons (car pear)
+      (|union| (|listOfIdentifiersIn| (cdr pear))
+       (|delete| (car pear) 
+                 (|listOfIdentifiersIn| (lassoc (car pear) |$predAlist|)))))))
+; 3. obtain a list of parameter identifiers (x1 .. xn) ordered so that
+;       the type of xi is independent of xj if i < j
+  (setq varList
+   (|orderByDependency| (assocleft argDepAlist) (assocright argDepAlist)))
+; 4. construct a WhereList which declares and/or defines the xi's in
+;    the order constructed in step 3
+  (setq whereList
+   (loop for x in varList
+    collect (addSuchthat x (list '|:| x (lassoc x argSigAlist)))))
+  (setq formxx (cons (car form) argList))
+  (setq signaturex
+   (cons (car signature)
+    (loop for x in (rest signature) collect nil)))
+  (setq defform (list 'def formxx signaturex specialCases body))
+  (setq formx (cons '|where| (cons defform whereList)))
+; 5. compile new ('DEF,("where",form',:WhereList),:.) where
+;    all argument parameters of form' are bound/declared in WhereList
+  (|comp| formx mode env))))
+
+(defun |compElt| (form mode env)
+ (let (aDomain anOp mmList n modemap sig pred val)
+ (declare (special |$One| |$Zero|))
+ (setq anOp (third form))
+ (setq aDomain (second form))
+ (cond
+  ((null (and (consp form) (eq (qfirst form) '|elt|)
+              (consp (qrest form)) (consp (qcddr form))
+              (eq (qcdddr form) nil)))
+   (|compForm| form mode env))
+  ((eq aDomain '|Lisp|)
+   (list (cond
+          ((equal anOp |$Zero|) 0)
+          ((equal anOp |$One|) 1)
+          (t anOp))
+      mode env))
+  ((|isDomainForm| aDomain env)
+   (setq env (|addDomain| aDomain env))
+   (setq mmList (|getModemapListFromDomain| anOp 0 aDomain env))
+   (setq modemap
+    (progn
+     (setq n (|#| mmList))
+     (cond
+      ((eql 1 n) (elt mmList 0))
+      ((eql 0 n)
+        (|stackMessage|
+          (list "Operation " anOp "missing from domain: " 
+                aDomain nil))
+        nil)
+      (t
+       (|stackWarning|
+        (list "more than 1 modemap for: " anOp " with dc=" 
+               aDomain " ===>" mmList ))
+        (elt mmList 0)))))
+   (when modemap
+    (setq sig (first modemap))
+    (setq pred (caadr modemap))
+    (setq val (cadadr modemap))
+    (unless (and (not (eql (|#| sig) 2))
+                 (null (and (consp val) (eq (qfirst val) '|elt|))))
+       (setq val (|genDeltaEntry| (cons (|opOf| anOp) modemap)))
+       (|convert| (list (list '|call| val) (second sig) env) mode))))
+  (t
+    (|compForm| form mode env)))))
+
+(defun |compExit| (form mode env)
+ (let (exitForm index m1 u)
+ (declare (special |$exitModeStack|))
+  (setq index (1- (second form)))
+  (setq exitForm (third form))
+  (cond
+   ((null |$exitModeStack|)
+    (|comp| exitForm mode env))
+   (t
+    (setq m1 (elt |$exitModeStack| index))
+    (setq u (|comp| exitForm m1 env))
+    (cond
+     (u
+      (|modifyModeStack| (second u) index)
+      (list (list '|TAGGEDexit| index u) mode env))
+     (t
+       (|stackMessageIfNone|
+        (list '|cannot compile exit expression| exitForm '|in mode| m1))))))))
+
+(defun |compExpression| (form mode env)
+ (let (|$insideExpressionIfTrue| fn)
+ (declare (special |$insideExpressionIfTrue|))
+  (setq |$insideExpressionIfTrue| t)
+  (if (and (atom (car form)) (setq fn (getl (car form) 'special)))
+    (funcall fn form mode env)
+    (|compForm| form mode env))))
+
+(defun |compExpressionList| (argl m env)
+ (let (tmp1 tlst)
+ (declare (special |$Expression|))
+  (setq tlst
+   (prog (result)
+    (return
+     (do ((tmp2 argl (cdr tmp2)) (x nil))
+         ((or (atom tmp2)) (nreverse0 result))
+      (setq x (car tmp2))
+      (setq result
+       (cons
+        (progn
+         (setq tmp1 (or (|comp| x |$Expression| env) (return '|failed|)))
+         (setq env (third tmp1))
+         tmp1)
+        result))))))
+  (unless (eq tlst '|failed|)
+   (|convert|
+    (list (cons 'list
+     (prog (result)
+      (return
+       (do ((tmp3 tlst (cdr tmp3)) (y nil))
+           ((or (atom tmp3)) (nreverse0 result))
+        (setq y (car tmp3))
+        (setq result (cons (car y) result))))))
+      |$Expression| env)
+    m))))
+
+(defun |compForm| (form mode env)
+ (cond
+  ((|compForm1| form mode env))
+  ((|compArgumentsAndTryAgain| form mode env))
+  (t (|stackMessageIfNone| (list '|cannot compile| form)))))
+
+(defun |compForm1| (form mode env)
+ (let (|$NumberOfArgsIfInteger| op argl domain tmp1 opprime ans mmList td 
+       tmp2 tmp3 tmp4 tmp5 tmp6 tmp7)
+ (declare (special |$NumberOfArgsIfInteger| |$Expression| |$EmptyMode|))
+    (setq op (car form))
+    (setq argl (cdr form))
+    (setq |$NumberOfArgsIfInteger| (|#| argl))
+    (cond
+     ((eq op '|error|)
+      (list
+       (cons op
+        (dolist (x argl (nreverse0 tmp4))
+          (setq tmp2 (|outputComp| x env))
+          (setq env (third tmp2))
+          (push (car tmp2) tmp4)))
+       mode env))
+     ((and (consp op) (eq (qfirst op) '|elt|)
+           (progn
+            (setq tmp3 (qrest op))
+            (and (consp tmp3)
+                 (progn
+                  (setq domain (qfirst tmp3))
+                  (setq tmp1 (qrest tmp3))
+                  (and (consp tmp1)
+                       (eq (qrest tmp1) nil)
+                       (progn
+                        (setq opprime (qfirst tmp1))
+                        t))))))
+       (cond
+        ((eq domain '|Lisp|)
+          (list 
+           (cons opprime
+            (dolist (x argl (nreverse tmp7))
+             (setq tmp2 (|compOrCroak| x |$EmptyMode| env))
+             (setq env (third tmp2))
+             (push (car tmp2) tmp7)))
+           mode env))
+        ((and (equal domain |$Expression|) (eq opprime '|construct|))
+          (|compExpressionList| argl mode env))
+        ((and (eq opprime 'collect) (|coerceable| domain mode env))
+          (when (setq td (|comp| (cons opprime argl) domain env))
+           (|coerce| td mode)))
+        ((and (consp domain) (eq (qfirst domain) '|Mapping|)
+              (setq ans
+               (|compForm2| (cons opprime argl) mode
+                (setq env (|augModemapsFromDomain1| domain domain env))
+                (dolist (x (|getFormModemaps| (cons opprime argl) env)
+                                          (nreverse0 tmp6))
+                 (when
+                  (and (consp x)
+                       (and (consp (qfirst x)) (equal (qcaar x) domain)))
+                    (push x tmp6))))))
+          ans)
+        ((setq ans
+          (|compForm2| (cons opprime argl) mode
+           (setq env (|addDomain| domain env))
+           (dolist (x (|getFormModemaps| (cons opprime argl) env)
+                   (nreverse0 tmp5))
+             (when
+               (and (consp x)
+                    (and (consp (qfirst x)) (equal (qcaar x) domain)))
+                (push x tmp5)))))
+          ans)
+        ((and (eq opprime '|construct|) (|coerceable| domain mode env))
+          (when (setq td (|comp| (cons opprime argl) domain env))
+           (|coerce| td mode)))
+        (t nil)))
+     (t
+      (setq env (|addDomain| mode env))
+      (cond
+       ((and (setq mmList (|getFormModemaps| form env))
+             (setq td (|compForm2| form mode env mmList)))
+         td)
+       (t
+         (|compToApply| op argl mode env)))))))
+
+(defun |compForm2| (form mode env modemapList)
+ (let (op argl sargl aList dc cond nsig v ncond deleteList newList td tl
+       partialModeList tmp1 tmp2 tmp3 tmp4 tmp5 tmp6 tmp7)
+ (declare (special |$EmptyMode| |$TriangleVariableList|))
+  (setq op (car form))
+  (setq argl (cdr form))
+  (setq sargl (take (|#| argl) |$TriangleVariableList|))
+  (setq aList (mapcar #'(lambda (x y) (cons x y)) sargl argl))
+  (setq modemaplist (sublis aList modemapList))
+  ; now delete any modemaps that are subsumed by something else, provided 
+  ; the conditions are right (i.e. subsumer true whenever subsumee true)
+  (dolist (u modemapList)
+   (cond
+    ((and (consp u)
+          (progn
+           (setq tmp6 (qfirst u))
+           (and (consp tmp6) (progn (setq dc (qfirst tmp6)) t)))
+          (progn
+           (setq tmp7 (qrest u))
+           (and (consp tmp7) (eq (qrest tmp7) nil)
+                (progn
+                 (setq tmp1 (qfirst tmp7))
+                 (and (consp tmp1)
+                      (progn
+                       (setq cond (qfirst tmp1))
+                       (setq tmp2 (qrest tmp1))
+                       (and (consp tmp2) (eq (qrest tmp2) nil)
+                            (progn
+                             (setq tmp3 (qfirst tmp2))
+                             (and (consp tmp3) (eq (qfirst tmp3) '|Subsumed|)
+                                  (progn
+                                   (setq tmp4 (qrest tmp3))
+                                   (and (consp tmp4)
+                                        (progn
+                                         (setq tmp5 (qrest tmp4))
+                                         (and (consp tmp5) 
+                                              (eq (qrest tmp5) nil)
+                                              (progn
+                                               (setq nsig (qfirst tmp5))
+                                               t)))))))))))))
+          (setq v (|assoc| (cons dc nsig) modemapList))
+          (consp v)
+          (progn
+           (setq tmp6 (qrest v))
+           (and (consp tmp6) (eq (qrest tmp6) nil)
+                (progn
+                 (setq tmp7 (qfirst tmp6))
+                 (and (consp tmp7)
+                      (progn
+                       (setq ncond (qfirst tmp7))
+                       t))))))
+      (setq deleteList (cons u deleteList))
+      (unless  (|PredImplies| ncond cond)
+         (setq newList (push `(,(car u) (,cond (elt ,dc nil))) newList))))))
+  (when deleteList
+   (setq modemapList 
+    (remove-if #'(lambda (x) (member x deletelist)) modemapList)))
+  ; it is important that subsumed ops (newList) be considered last
+  (when newList (setq modemapList (append modemapList newList)))
+  (setq tl
+   (loop for x in argl 
+         while (and (|isSimple| x)
+                    (setq td (|compUniquely| x |$EmptyMode| env)))
+         collect td
+         do (setq env (third td))))
+  (cond
+   ((some #'identity tl)
+     (setq partialModeList (loop for x in tl collect (when x (second x))))
+     (or 
+       (|compFormPartiallyBottomUp| form mode env modemapList partialModeList)
+       (|compForm3| form mode env modemapList)))
+   (t (|compForm3| form mode env modemapList)))))
+
+(defun |compForm3| (form mode env modemapList)
+ (let (op argl mml tt)
+ (declare (special |$compUniquelyIfTrue|))
+  (setq op (car form))
+  (setq argl (cdr form))
+  (setq tt
+   (let (result)
+    (maplist #'(lambda (mlst)
+     (setq result (or result
+       (|compFormWithModemap| form mode env (car (setq mml mlst))))))
+     modemapList)
+    result))
+   (when |$compUniquelyIfTrue|
+    (if (let (result)
+         (mapcar #'(lambda (mm) 
+            (setq result (or result (|compFormWithModemap| form mode env mm))))
+           (rest mml))
+          result)
+     (throw '|compUniquely| nil)
+     tt))
+  tt))
+
+(defun |compFormMatch| (mm partialModeList)
+ (labels (
+  (ismatch (a b)
+   (cond
+    ((null b) t)
+    ((null (car b)) (|compFormMatch,match| (cdr a) (cdr b)))
+    ((and (equal (car a) (car b)) (ismatch (cdr a) (cdr b)))))))
+  (and (consp mm) (consp (qfirst mm)) (consp (qcdar mm))
+       (ismatch (qcddar mm) partialModeList))))
+
+(defun |compForMode| (x m e)
+ (let (|$compForModeIfTrue|)
+ (declare (special |$compForModeIfTrue|))
+  (setq |$compForModeIfTrue| t)
+  (|comp| x m e)))
+
+(defun |compFormPartiallyBottomUp| (form mode env modemapList partialModeList)
+ (let (mmList)
+  (when (setq mmList (loop for mm in modemapList
+                      when (|compFormMatch| mm partialModeList)
+                      collect mm))
+   (|compForm3| form mode env mmList))))
+
+(defun |compFormWithModemap| (form m env modemap)
+ (prog (op argl sv target cexpr targetp map temp1 f transimp sl mp formp z c 
+       xp ep tt)
+ (declare (special |$Category| |$FormalMapVariableList|))
+ (return
+  (progn
+   (setq op (car form))
+   (setq argl (cdr form))
+   (setq map (car modemap))
+   (setq target (cadar modemap))
+   (when (and (|isCategoryForm| target env) (|isFunctor| op))
+     (setq temp1 (or (|substituteIntoFunctorModemap| argl modemap env)
+                     (return nil)))
+     (setq modemap (car temp1))
+     (setq env (cadr temp1))
+     (setq map (car modemap))
+     (setq target (cadar modemap))
+     (setq cexpr (cdr modemap))
+     modemap)
+   (setq sv (|listOfSharpVars| map))
+   (when sv
+     (loop for x in argl for ss in |$FormalMapVariableList|
+      do (when (|member| ss sv)
+            (setq modemap (subst x ss modemap :test #'equal))
+            (setq map (car modemap))
+            (setq target (cadar modemap))
+            (setq cexpr (cdr modemap))
+            modemap)))
+   (cond
+    ((null (setq targetp (|coerceable| target m env))) nil)
+    (t
+     (setq map (cons targetp (cdr map)))
+     (setq temp1 (or (|compApplyModemap| form modemap env nil)
+                     (return nil)))
+     (setq f (car temp1))
+     (setq transimp (cadr temp1))
+     (setq sl (caddr temp1))
+     (setq mp (sublis sl (elt map 1)))
+     (setq xp
+      (progn
+       (setq formp (cons f (loop for tt in transimp collect (car tt))))
+       (cond
+        ((or (equal mp |$Category|) (|isCategoryForm| mp env)) formp)
+        ((and (eq op '|elt|) (consp f) (eq (qcar f) 'xlam)
+              (identp (car argl))
+              (setq c (|get| (car argl) '|condition| env))
+              (consp c) (eq (qcdr c) nil)
+              (consp (qcar c)) (eq (qcaar c) '|case|)
+              (consp (qcdar c)) (equal (qcadar c) z)
+              (consp (qcddar c)) (eq (qcdr (qcddar c)) nil)
+              (or (and (consp (qcaddar c))
+                       (eq (qcar (qcaddar c)) '|:|)
+                       (consp (qcdr (qcaddar c)))
+                       (equal (qcadr (qcaddar c)) (cadr argl))
+                       (consp (qcddr (qcaddar c)))
+                       (eq (qcdddr (qcaddar c)) nil)
+                       (equal (qcaddr (qcaddar c)) m))
+                  (eq (qcaddar c) (cadr argl))))
+          (list 'cdr (car argl)))
+        (t (cons '|call| formp)))))
+     (setq ep
+      (if transimp 
+       (caddr (|last| transimp))
+       env))
+     (setq tt (list xp mp ep))
+     (|convert| tt m)))))))
+ 
+(defun |compFromIf| (a m env)
+  (if (eq a '|noBranch|)
+    (list '|noBranch| m env)
+    (|comp| a m env)))
+
+(defun |compFunctorBody| (form mode env parForm)
+ (declare (ignore parForm))
+ (let (tt)
+ (declare (special |$NRTaddForm| |$functorForm| |$bootStrapMode| /editfile))
+  (if |$bootStrapMode|
+   (list (|bootStrapError| |$functorForm| /editfile) mode env)
+   (progn
+    (setq tt (|compOrCroak| form mode env))
+    (if (and (consp form)  (member (qfirst form) '(|add| capsule)))
+     tt
+     (progn
+      (setq |$NRTaddForm|
+       (if  (and (consp form) (eq (qfirst form) '|SubDomain|)
+                  (consp (qrest form)) (consp (qcddr form))
+                  (eq (qcdddr form) nil))
+         (qsecond form)
+         form))
+      tt))))))
+
+(defun |compHas| (pred mode |$e|)
+ (declare (special |$e| |$Boolean|))
+ (let (a b predCode)
+  (setq a (second pred))
+  (setq b (third pred))
+  (setq |$e| (|chaseInferences| pred |$e|))
+  (setq predCode (|compHasFormat| pred))
+  (|coerce| (list predCode |$Boolean| |$e|) mode)))
+
+(defun |compHasFormat| (pred)
+ (let (olda b argl formals tmp1 a)
+ (declare (special |$EmptyEnvironment| |$e| |$EmptyMode|
+                    |$FormalMapVariableList| |$form|))
+  (when (eq (car pred) '|has|) (car pred))
+  (setq olda (second pred))
+  (setq b (third pred))
+  (setq argl (rest |$form|))
+  (setq formals (take (|#| argl) |$FormalMapVariableList|))
+  (setq a (sublislis argl formals olda))
+  (setq tmp1 (|comp| a |$EmptyMode| |$e|))
+  (when tmp1
+   (setq a (car tmp1))
+   (setq a (sublislis formals argl a))
+   (cond
+    ((and (consp b) (eq (qfirst b) 'attribute) (consp (qrest b))
+          (eq (qcddr b) nil))
+      (list '|HasAttribute| a (list 'quote (qsecond b))))
+    ((and (consp b) (eq (qfirst b) 'signature) (consp (qrest b))
+          (consp (qcddr b)) (eq (qcdddr b) NIL))
+       (list '|HasSignature| a
+         (|mkList|
+          (list (MKQ (qsecond b))
+           (|mkList|
+            (loop for type in (qthird b)
+             collect (|mkDomainConstructor| type)))))))
+    ((|isDomainForm| b |$EmptyEnvironment|)
+      (list 'equal a b))
+    (t
+      (list '|HasCategory| a (|mkDomainConstructor| b)))))))
+
+(defun |compIf| (form mode env)
+ (labels (
+  (environ (bEnv cEnv b c env)
+   (cond
+    ((|canReturn| b 0 0 t)
+     (if (|canReturn| c 0 0 t) (|intersectionEnvironment| bEnv cEnv) bEnv))
+    ((|canReturn| c 0 0 t) cEnv)
+    (t env))))
+  (let (a b c tmp1 xa ma Ea Einv Tb xb mb Eb Tc xc mc Ec xbp x returnEnv)
+  (declare (special |$Boolean|))
+   (setq a (second form))
+   (setq b (third form))
+   (setq c (fourth form))
+   (when  (setq tmp1 (|compBoolean| a |$Boolean| env))
+    (setq xa (first tmp1))
+    (setq ma (second tmp1))
+    (setq Ea (third tmp1))
+    (setq Einv (fourth tmp1))
+    (when (setq Tb (|compFromIf| b mode Ea))
+     (setq xb (first Tb))
+     (setq mb (second Tb))
+     (setq Eb (third Tb))
+     (when (setq Tc (|compFromIf| c (|resolve| mb mode) Einv))
+      (setq xc (first Tc))
+      (setq mc (second Tc))
+      (setq Ec (third Tc))
+      (when (setq xbp (|coerce| Tb mc))
+       (setq x (list 'if xa (first xbp) xc))
+       (setq returnEnv (environ (third xbp) Ec (first xbp) xc env))
+       (list x mc returnEnv))))))))
+
+(defun |compile| (u)
+ (labels (
+  (isLocalFunction (op)
+   (let (tmp1)
+   (declare (special |$e| |$formalArgList|))
+    (and (null (|member| op |$formalArgList|))
+         (progn
+          (setq tmp1 (|getmode| op |$e|))
+          (and (consp tmp1) (eq (qfirst tmp1) '|Mapping|)))))))
+ (let (op lamExpr DC sig sel opexport opmodes opp parts s tt unew 
+       optimizedBody stuffToCompile result functionStats)
+ (declare (special |$functionStats| |$macroIfTrue| |$doNotCompileJustPrint|
+                   |$insideCapsuleFunctionIfTrue| |$saveableItems| |$e|
+                   |$lisplibItemsAlreadyThere| |$splitUpItemsAlreadyThere|
+                   |$compileOnlyCertainItems| $LISPLIB |$suffix|
+                   |$signatureOfForm| |$functorForm| |$prefix| 
+                   |$savableItems|))
+   (setq op (first u))
+   (setq lamExpr (second u))
+   (when |$suffix|
+    (setq |$suffix| (1+ |$suffix|))
+    (setq opp
+     (progn
+      (setq opexport nil)
+      (setq opmodes
+       (loop for item in (|get| op '|modemap| |$e|)
+        do 
+         (setq dc (caar item))
+         (setq sig (cdar item))
+         (setq sel (cadadr item))
+        when (and (eq dc '$)
+                    (setq opexport t)
+                    (let ((result t))
+                     (loop for x in sig for y in |$signatureOfForm|
+                      do (setq result (|modeEqual| x y)))
+                     result))
+        collect sel))
+      (cond
+       ((isLocalFunction op)
+        (when opexport
+         (|userError| (list op " is local and exported")))
+        (intern (strconc (|encodeItem| |$prefix|) ";" (|encodeItem| op))))
+       (t
+        (|encodeFunctionName| op |$functorForm| |$signatureOfForm|
+                              '|;| |$suffix|)))))
+    (setq u (list opp lamExpr)))
+   (when (and $lisplib |$compileOnlyCertainItems|)
+    (setq parts (|splitEncodedFunctionName| (elt u 0) '|;|))
+    (cond
+     ((eq parts '|inner|)
+       (setq |$savableItems| (cons (elt u 0) |$savableItems|)))
+     (t
+       (setq unew nil)
+       (loop for item in |$splitUpItemsAlreadyThere|
+        do
+         (setq s (first item))
+         (setq tt (second item))
+         (when 
+          (and (equal (elt parts 0) (elt s 0))
+               (equal (elt parts 1) (elt s 1))
+               (equal (elt parts 2) (elt s 2)))
+            (setq unew tt)))
+       (cond
+        ((null unew)
+         (|sayBrightly| (list "   Error: Item did not previously exist"))
+         (|sayBrightly| (cons "   Item not saved: " (|bright| (elt u 0))))
+         (|sayBrightly| 
+           (list "   What's there is: " |$lisplibItemsAlreadyThere|))
+         nil)
+        (t
+         (|sayBrightly| (list "   Renaming " (elt u 0) " as " unew))
+         (setq u (cons unew (cdr u)))
+         (setq |$savableItems| (cons unew |$saveableItems|)))))))
+   (setq optimizedBody (|optimizeFunctionDef| u))
+   (setq stuffToCompile
+    (if |$insideCapsuleFunctionIfTrue|
+     (|putInLocalDomainReferences| optimizedBody)
+     optimizedBody))
+   (cond
+    ((eq |$doNotCompileJustPrint| t)
+      (prettyprint stuffToCompile)
+      opp)
+    (|$macroIfTrue| (|constructMacro| stuffToCompile))
+    (t
+     (setq result (|spadCompileOrSetq| stuffToCompile))
+     (setq functionStats (list 0 (|elapsedTime|)))
+     (setq |$functionStats| (|addStats| |$functionStats| functionStats))
+     (|printStats| functionStats)
+      result)))))
+
+(defun |compileCases| (x |$e|)
+ (declare (special |$e|))
+ (labels (
+  (isEltArgumentIn (Rlist x)
+    (cond
+     ((atom x) nil)
+     ((and (consp x) (eq (qfirst x) 'elt) (consp (qrest x))
+           (consp (qcddr x)) (eq (qcdddr x) nil))
+      (or (member (second x) Rlist)
+          (isEltArgumentIn Rlist (cdr x))))
+     ((and (consp x) (eq (qfirst x) 'qrefelt) (consp (qrest x))
+           (consp (qcddr x)) (eq (qcdddr x) nil))
+      (or (member (second x) Rlist)
+          (isEltArgumentIn Rlist (cdr x))))
+     (t
+      (or (isEltArgumentIn Rlist (car x))
+          (isEltArgumentIn Rlist (CDR x))))))
+  (FindNamesFor (r rp)
+   (let (v u)
+   (declare (special |$getDomainCode|))
+    (cons r
+     (loop for item in |$getDomainCode|
+      do
+        (setq v (second item))
+        (setq u (third item))
+      when (and (equal (second u) r) (|eval| (subst rp r u :test #'equal)))
+      collect v)))))
+ (let (|$specialCaseKeyList| specialCaseAssoc listOfDomains listOfAllCases cl)
+ (declare (special |$specialCaseKeyList| |$true| |$insideFunctorIfTrue|))
+  (setq |$specialCaseKeyList| nil)
+  (cond
+   ((null (eq |$insideFunctorIfTrue| t)) (|compile| x))
+   (t
+     (setq specialCaseAssoc
+      (loop for y in (|getSpecialCaseAssoc|)
+       when (and (null (|get| (first y) '|specialCase| |$e|))
+                 (isEltArgumentIn (FindNamesFor (first y) (second y)) x))
+       collect y))
+      (cond
+       ((null specialCaseAssoc) (|compile| x))
+       (t
+         (setq listOfDomains (assocleft specialCaseAssoc))
+         (setq listOfAllCases (|outerProduct| (assocright specialCaseAssoc)))
+         (setq cl
+          (loop for z in listOfAllCases
+           collect
+            (progn
+             (setq |$specialCaseKeyList|
+              (loop for d in listOfDomains for c in z
+               collect (cons d c)))
+              (cons
+               (mkpf
+                (loop for d in listOfDomains for c in z
+                 collect (list 'equal d c))
+                'and)
+                (list (|compile| (copy x)))))))
+         (setq |$specialCaseKeyList| nil)
+         (cons 'cond (append cl (list (list |$true| (|compile| x))))))))))))
+
+(defun |compileConstructor| (form)
+ (let (u)
+  (setq u (|compileConstructor1| form))
+  (|clearClams|)
+  u))
+
+(defun |compileConstructor1| (form)
+ (let (|$clamList| fn key vl bodyl lambdaOrSlam compForm u)
+ (declare (special |$clamList| |$ConstructorCache| |$mutableDomain|))
+  (setq fn (car form))
+  (setq key (caadr form))
+  (setq vl (cadadr form))
+  (setq bodyl (cddadr form))
+  (setq |$clamList| nil)
+  (setq lambdaOrSlam
+   (cond
+    ((eq (getdatabase fn 'constructorkind) '|category|) 'spadslam)
+    (|$mutableDomain| 'lambda)
+    (t
+     (setq |$clamList|
+      (cons (list fn '|$ConstructorCache| '|domainEqualList| '|count|)
+            |$clamList|))
+     'lambda)))
+  (setq compForm (list (list fn (cons lambdaorslam (cons vl bodyl)))))
+  (if (eq (getdatabase fn 'constructorkind) '|category|)
+   (setq u (|compAndDefine| compForm))
+   (setq u (comp compForm)))
+  (|clearConstructorCache| fn)
+  (car u)))
+
+(defun |compileDocumentation| (libName)
+ (let (filename stream)
+ (declare (special |$e| |$EmptyMode| |$spadLibFT| $fcopy))
+  (setq filename (makeInputFilename libName |$spadLibFT|))
+  ($fcopy filename (cons libname (list 'doclb)))
+  (setq stream
+   (rdefiostream (cons (list 'file libName 'doclb) (list (cons 'mode 'o)))))
+  (|lisplibWrite| "documentation" (|finalizeDocumentation|) stream)
+  (rshut stream)
+  (rpackfile (list libName 'doclb))
+  (replaceFile (list libName |$spadLibFT|) (list libName 'doclb))
+  (list '|dummy| |$EmptyMode| |$e|)))
+
+(defun |compileFileQuietly| (fn) 
+  (let (
+         (*standard-output*
+         (if |$InteractiveMode| (make-broadcast-stream)
+           *standard-output*)))
+  (declare (special *standard-output* |$InteractiveMode|))
+  (compile-file fn)))
+
+(defun compile-lib-file (fn &rest opts)
+ (unwind-protect
+  (progn
+   (trace (compiler::fast-link-proclaimed-type-p
+           :exitcond nil
+           :entrycond (spad-fixed-arg (car system::arglist))))
+   (trace (compiler::t1defun 
+           :exitcond nil
+           :entrycond (spad-fixed-arg (caar system::arglist))))
+   (apply #'compile-file fn opts))
+  (untrace compiler::fast-link-proclaimed-type-p compiler::t1defun)))
+
+(defun |compiler| (args)
+ "The top level compiler command"
+ (let (|$newConlist| ef thefile pathname pathtype)
+  (declare (special |$newConlist| |$options| /editfile))
+  (setq |$newConlist| nil)
+  (if (and (null args) (null |$options|) (null /editfile))
+   (|helpSpad2Cmd| '(|compiler|))
+   (progn
+    (unless args (setq args (cons /editfile nil)))
+    (setq pathname (|pathname| args))
+    (setq pathtype (|pathnameType| pathname))
+    (cond
+     ; have we been given a spad file?
+     ((string= pathtype "spad")
+      (if (null (setq thefile ($findfile pathname '(|spad|))))
+         (|throwKeyedMsg| "The spad file %1 is needed but does not exist."
+           (cons (namestring pathname) nil))
+         (|compileSpad2Cmd| (list thefile))))
+     ; have we been given an nrlib?
+     ((string= pathtype "nrlib")
+      (if (null (setq thefile ($findfile pathname '(|nrlib|))))
+        (|throwKeyedMsg| "The nrlib file %1 is needed but does not exist."
+         (cons (namestring pathname) nil))
+        (|compileSpadLispCmd| (list thefile))))
+     (t
+      (setq thefile ($findfile pathname '(|spad|)))
+      (cond
+       ((and thefile (string= (|pathnameType| thefile) "spad"))
+        (|compileSpad2Cmd| (list thefile)))
+       (t
+        (setq ef (|pathname| /editfile))
+        (setq ef (|mergePathnames| pathname ef))
+        (cond
+         ((equal ef pathname)
+          (|throwKeyedMsg| 
+            (format nil "Only AXIOM source files with file extension ~
+                         .spad can be compiled.")
+             nil))
+         (t
+          (setq pathname ef)
+          (cond
+           ((string= (|pathnameType| pathname) "spad")
+            (|compileSpad2Cmd| args))
+           (t
+            (setq thefile ($findfile pathname '(|spad|)))
+            (cond
+             ((and thefile (string= (|pathnameType| thefile) "spad"))
+               (|compileSpad2Cmd| (cons thefile nil)))
+             (t (|throwKeyedMsg| 
+                 (format nil "Only AXIOM source files with file extension ~
+                              .spad can be compiled.")
+                  nil)))))))))))))))
+
+(defun |compilerDoit| (constructor fun)
+ (let (|$byConstructors| |$constructorsSeen|)
+ (declare (special |$byConstructors| |$constructorsSeen|))
+  (cond
+   ((equal fun '(|rf| |lib|))   (|/RQ,LIB|))   ; Ignore "noquiet"
+   ((equal fun '(|rf| |nolib|)) (/rf))
+   ((equal fun '(|rq| |lib|))   (|/RQ,LIB|))
+   ((equal fun '(|rq| |nolib|)) (/rq))
+   ((equal fun '(|c| |lib|))
+    (setq |$byConstructors| (loop for x in constructor collect (|opOf| x)))
+    (|/RQ,LIB|)
+    (dolist (x |$byConstructors|)
+     (unless (|member| x |$constructorsSeen|)
+      (|sayBrightly| `(">>> Warning " ,x " was not found"))))))))
+
+(defun |compilerDoitWithScreenedLisplib| (constructor fun)
+ (declare (special |$saveableItems| |$libFile|))
+  (embed 'rwrite
+           '(lambda (key value stream)
+              (cond
+                ((and (eq stream |$libFile|)
+                      (not (member key |$saveableItems|)))
+                 value)
+                ((not nil) (rwrite key value stream)))))
+    (unwind-protect
+      (|compilerDoit| constructor fun)
+      (unembed 'rwrite)))
+
+(defun |compileSpad2Cmd| (args)
+ (let (|$newComp| |$scanIfTrue| 
+       |$compileOnlyCertainItems| |$f| |$m| |$QuickLet| |$QuickCode| 
+       |$sourceFileTypes| |$InteractiveMode| path optlist fun optname 
+       optargs fullopt constructor)
+  (declare (special |$newComp| |$scanIfTrue| 
+       |$compileOnlyCertainItems| |$f| |$m| |$QuickLet| |$QuickCode| 
+       |$sourceFileTypes| |$InteractiveMode| /editfile |$options|
+       |$newConlist|)) 
+   (setq path (|pathname| args))
+   (cond
+    ((not (string= (|pathnameType| path) "spad"))
+      (|throwKeyedMsg| 
+       (format nil "The old AXIOM system compiler can only compile files ~
+                    with file extension '.spad'.")
+        nil))
+    ((null (probe-file path))
+      (|throwKeyedMsg| "The file %1 is needed but does not exist."
+       (cons (|namestring| args) nil)))
+    (t
+     (setq /editfile path)
+     (|updateSourceFiles| path)
+     (|sayKeyedMsg| "Compiling AXIOM source code from %1"
+       (list (file-namestring (|namestring| args))))
+     (setq optlist '(|break| |constructor| |functions| |library| |lisp|
+         |nobreak| |nolibrary| |noquiet| |vartrace| |quiet|))
+     (setq |$QuickLet| t)
+     (setq |$QuickCode| t)
+     (setq fun '(|rq| |lib|))
+     (setq |$sourceFileTypes| '("SPAD"))
+     (dolist (opt |$options|)
+      (setq optname (car opt))
+      (setq optargs (cdr opt))
+      (setq fullopt (|selectOptionLC| optname optlist nil))
+      (case fullopt
+
+       ; library exposes the result
+       (|library| (setelt fun 1 '|lib|))
+
+       ; nolibrary compiles but does not expose the reslt
+       (|nolibrary| (setelt fun 1 '|nolib|))
+
+       ; quiet surpresses compiler output
+       (|quiet| (when (not (eq (elt fun 0) '|c|)) (setelt fun 0 '|rq|)))
+
+       ; noquiet shows compiler output
+       (|noquiet| (when (not (eq (elt fun 0) '|c|)) (setelt fun 0 '|rf|)))
+
+       ; compiled code will not cause a break if it fails
+       (|nobreak| (setq |$scanIfTrue| t))
+
+       ; compiled code will cause a break if it fails
+       (|break| (setq |$scanIfTrue| nil))
+
+       ; allow variable tracing, otherwise lets are inlined
+       (|vartrace| (setq |$QuickLet| nil))
+
+       ; compile functions from a domain, e.g. 
+       ; )co dh )constructor DHMATRIX )functions identity
+       (|functions|
+        (if (null optargs) 
+         (|throwKeyedMsg| ")functions requires and argument and you do not give one." nil)
+         (setq |$compileOnlyCertainItems| optargs)))
+
+       ; compile a single constructor from a file
+       ; )co dh )constructor DHMATRIX
+       (|constructor|
+        (if (null optargs)
+         (|throwKeyedMsg| ")constructor requires and argument and you do not give one." nil)
+         (progn
+          (setelt fun 0 '|c|)
+          (setq constructor (mapcar #'|unabbrev| optargs)))))
+       (t
+        (|throwKeyedMsg| 
+           "%1 is an unknown or unavailable for the )compile command."
+         (list (concatenate 'string ")" (string optname)))))))
+    (setq |$InteractiveMode| nil)
+    (cond
+     (|$compileOnlyCertainItems|
+      (if (null constructor)
+       (|sayKeyedMsg| 
+        (format nil "The )constructor option to )compile must also be ~
+                     specified when the )functions option is used.")
+         nil)
+       (|compilerDoitWithScreenedLisplib| constructor fun)))
+     (t (|compilerDoit| constructor fun)))
+    (|extendLocalLibdb| |$newConlist|)
+    (|terminateSystemCommand|)
+    (|spadPrompt|)))))
+
+(defun |compileSpadLispCmd| (args)
+ (let (path optlist optname optargs beQuiet dolibrary lsp)
+  (declare (special |$options|))
+  (setq path (|pathname| (|fnameMake| (car args) "code" "lsp")))
+  (cond
+   ((null (probe-file path))
+     (|throwKeyedMsg| "The file %1 is needed but does not exist."
+      (cons (|namestring| args) nil)))
+   (t
+    (setq optlist '(|quiet| |noquiet| |library| |nolibrary|))
+    (setq beQuiet nil)
+    (setq dolibrary t)
+    (dolist (opt |$options|)
+      (setq optname (car opt))
+      (setq optargs (cdr opt))
+      (case (|selectOptionLC| optname optlist nil)
+         (|quiet|     (setq beQuiet t))
+         (|noquiet|   (setq beQuiet nil))
+         (|library|   (setq dolibrary t))
+         (|nolibrary| (setq dolibrary nil))
+         (t
+          (|throwKeyedMsg| 
+            "%1 is an unknown or unavailable for the )compile command."
+           (list (strconc ")" (|object2String| optname)))))))
+    (setq lsp
+     (|fnameMake|
+      (|pathnameDirectory| path)
+      (|pathnameName| path)
+      (|pathnameType| path)))
+    (cond
+     ((|fnameReadable?| lsp)
+      (unless beQuiet
+       (|sayKeyedMsg| "Compiling Lisp source code from file %1"
+        (list (|namestring| lsp))))
+       (recompile-lib-file-if-necessary lsp))
+     (t
+      (|sayKeyedMsg| "The file %1 is needed but does not exist."
+       (list (|namestring| lsp)))))
+    (cond
+     (dolibrary
+      (unless beQuiet (|sayKeyedMsg| "Issuing )library command for %1"
+                       (list (|pathnameName| path))))
+      (localdatabase (list (|pathnameName| (car args))) nil))
+     ((null beQuiet)
+      (|sayKeyedMsg| 
+       "The )library system command was not called after compilation." nil))
+     (t nil))
+    (|terminateSystemCommand|)
+    (|spadPrompt|)))))
+
+(defun |compileTimeBindingOf| (u)
+ (let (name)
+  (cond
+   ((null (setq name (bpiname u)))
+     (|keyedSystemError| "Irregular slot entry: %1s" (list u)))
+   ((eq name '|Undef|)
+     (moan "optimiser found unknown function"))
+   (t name))))
+
+(defun |compImport| (form mode env)
+ (declare (ignore mode))
+ (declare (special |$NoValueMode|))
+  (dolist (dom (cdr form)) (setq env (|addDomain| dom env)))
+  (list '|/throwAway| |$NoValueMode| env))
+
+(defun |compInternalFunction| (df m env)
+ (let (form signature specialCases body op argl nbody nf ress)
+  (setq form (second df))
+  (setq signature (third df))
+  (setq specialCases (fourth df))
+  (setq body (fifth df))
+  (setq op (first form))
+  (setq argl (rest form))
+  (cond
+   ((null (identp op))
+     (|stackAndThrow| (list '|Bad name for internal function:| op)))
+   ((eql (|#| argl) 0)
+     (|stackAndThrow|
+      (list '|Argumentless internal functions unsupported:| op )))
+   (t
+    (setq nbody (list '+-> argl body))
+    (setq nf (list 'let (list '|:| op (cons '|Mapping| signature)) nbody))
+    (setq ress (|comp| nf m env)) ress))))
+
+(defun |compIs| (form mode env)
+ (let (a b aval am tmp1 bval bm td)
+ (declare (special |$Boolean| |$EmptyMode|))
+  (setq a (second form))
+  (setq b (third form))
+  (when (setq tmp1 (|comp| a |$EmptyMode| env))
+   (setq aval (first tmp1))
+   (setq am (second tmp1))
+   (setq env (third tmp1))
+   (when (setq tmp1 (|comp| b |$EmptyMode| env))
+    (setq bval (first tmp1))
+    (setq bm (second tmp1))
+    (setq env (third tmp1))
+    (setq td (list (list '|domainEqual| aval bval) |$Boolean| env ))
+    (|coerce| td mode)))))
+
+(defun |compJoin| (form mode env)
+ (labels (
+  (getParms (y env)
+   (cond
+    ((atom y)
+     (when (|isDomainForm| y env) (list y)))
+    ((and (consp y) (eq (qfirst y) 'length)
+          (consp (qrest y)) (eq (qcddr y) nil))
+     (list y (second y)))
+    (t (list y)))) )
+ (let (argl catList pl tmp3 tmp4 tmp5 body parameters catListp td)
+ (declare (special |$Category|))
+  (setq argl (cdr form))
+  (setq catList
+   (dolist (x argl (nreverse0 tmp3))
+    (push (car (or (|compForMode| x |$Category| env) (return '|failed|)))
+       tmp3)))
+  (cond
+   ((eq catList '|failed|)
+    (|stackSemanticError| (list '|cannot form Join of: | argl) nil))
+   (t
+    (setq catListp
+     (dolist (x catList (nreverse0 tmp4))
+       (setq tmp4
+        (cons
+         (cond
+          ((|isCategoryForm| x env)
+           (setq parameters
+            (|union|
+              (dolist (y (cdr x) tmp5)
+               (setq tmp5 (append tmp5 (getParms y env))))
+              parameters))
+           x)
+          ((and (consp x) (eq (qfirst x) '|DomainSubstitutionMacro|)
+                (consp (qrest x)) (consp (qcddr x))
+                (eq (qcdddr x) nil))
+           (setq pl (second x))
+           (setq body (third x))
+           (setq parameters (|union| pl parameters)) body)
+          ((and (consp x) (eq (qfirst x) '|mkCategory|))
+            x)
+          ((and (atom x) (equal (|getmode| x env) |$Category|))
+            x)
+          (t
+           (|stackSemanticError| (list '|invalid argument to Join: | x) nil)
+           x))
+         tmp4))))
+    (setq td (list (|wrapDomainSub| parameters (cons '|Join| catListp))
+               |$Category| env))
+    (|convert| td mode))))))
+
+(defun |compLambda| (form mode env)
+ (let (vl body tmp1 tmp2 tmp3 target args arg1 sig1 ress)
+  (setq vl (second form))
+  (setq body (third form))
+  (cond
+   ((and (consp vl) (eq (qfirst vl) '|:|)
+         (progn
+          (setq tmp1 (qrest vl))
+          (and (consp tmp1)
+               (progn
+                (setq args (qfirst tmp1))
+                (setq tmp2 (qrest tmp1))
+                (and (consp tmp2)
+                     (eq (qrest tmp2) nil)
+                     (progn
+                      (setq target (qfirst tmp2))
+                      t))))))
+     (when (and (consp args) (eq (qfirst args) '|@Tuple|))
+      (setq args (qrest args)))       
+     (cond
+      ((listp args)
+       (setq tmp3 (|argsToSig| args))
+       (setq arg1 (first tmp3))
+       (setq sig1 (second tmp3))
+       (cond
+        (sig1 
+         (setq ress
+          (compAtSign
+           (list '@
+            (list '+-> arg1 body)
+            (cons '|Mapping| (cons target sig1))) mode env))
+          ress)
+        (t (|stackAndThrow| (list '|compLambda| form )))))
+      (t (|stackAndThrow| (list '|compLambda| form )))))
+    (t (|stackAndThrow| (list '|compLambda| form ))))))
+
+(defun |compLeave| (form mode env)
+ (let (level x index u)
+  (declare (special |$exitModeStack| |$leaveLevelStack|))
+   (setq level (second form))
+   (setq x (third form))
+   (setq index 
+     (- (1- (|#| |$exitModeStack|)) (elt |$leaveLevelStack| (1- level))))
+   (when (setq u (|comp| x (elt |$exitModeStack| index) env))
+    (|modifyModeStack| (second u) index)
+    (list (list '|TAGGEDexit| index u) mode env ))))
+
+(defun |compList| (form mode env)
+ (let (tmp1 tmp2 t0 failed (newmode (second mode)))
+  (if (null form)
+   (list nil mode env)
+   (progn
+    (setq t0
+     (do ((t3 form (cdr t3)) (x nil))
+         ((or (atom t3) failed) (unless failed (nreverse0 tmp2)))
+       (setq x (car t3))
+       (if (setq tmp1 (|comp| x newmode env))
+        (progn
+         (setq newmode (second tmp1))
+         (setq env (third tmp1))
+         (push tmp1 tmp2))
+        (setq failed t))))
+    (unless failed
+     (cons 
+       (cons 'list (loop for texpr in t0 collect (car texpr)))
+       (list (list '|List| newmode) env)))))))
+
+(defun |compMacro| (form mode env)
+ (let (|$macroIfTrue| lhs signature specialCases rhs prhs)
+ (declare (special |$macroIfTrue| |$NoValueMode| |$EmptyMode|))
+  (setq |$macroIfTrue| t)
+  (setq lhs (second form))
+  (setq signature (third form))
+  (setq specialCases (fourth form))
+  (setq rhs (fifth form))
+  (setq prhs
+   (cond
+    ((and (consp rhs) (eq (qfirst rhs) 'category))
+      (list "-- the constructor category"))
+    ((and (consp rhs) (eq (qfirst rhs) '|Join|))
+      (list "-- the constructor category"))
+    ((and (consp rhs) (eq (qfirst rhs) 'capsule))
+      (list "-- the constructor capsule"))
+    ((and (consp rhs) (eq (qfirst rhs) '|add|))
+      (list "-- the constructor capsule"))
+    (t (|formatUnabbreviated| rhs))))
+  (|sayBrightly|
+   (cons "   processing macro definition "
+     (append (|formatUnabbreviated| lhs)
+      (cons " ==> "
+       (append prhs (list " "))))))
+  (when (or (equal mode |$EmptyMode|) (equal mode |$NoValueMode|))
+    (list '|/throwAway| |$NoValueMode| 
+     (|put| (CAR lhs) '|macro| (|macroExpand| rhs env) env)))))
+
+(defun |compMakeCategoryObject| (c |$e|)
+ (declare (special |$e|))
+ (let (u)
+ (declare (special |$Category|))
+  (cond
+   ((null (|isCategoryForm| c |$e|)) nil)
+   ((setq u (|mkEvalableCategoryForm| c)) (list (|eval| u) |$Category| |$e|))
+   (t nil))))
+
+(defun |compMakeDeclaration| (form mode env)
+ (let (|$insideExpressionIfTrue|)
+ (declare (special |$insideExpressionIfTrue|))
+  (setq |$insideExpressionIfTrue| nil)
+  (|compColon| form mode env)))
+
+(defun |compMapCond| (op mc |$bindings| fnsel)
+ (declare (special |$bindings|))
+ (let (t0)
+  (do ((t1 nil t0) (t2 fnsel (cdr t2)) (u nil))
+      ((or t1 (atom t2) (progn (setq u (car t2)) nil)) t0)
+   (setq t0 (or t0 (|compMapCond'| u op mc |$bindings|))))))
+
+(defun |compMapCond'| (t0 op dc bindings)
+ (let ((cexpr (car t0)) (fnexpr (cadr t0)))
+  (if (|compMapCond''| cexpr dc)
+    (|compMapCondFun| fnexpr op dc bindings)
+    (|stackMessage| `("not known that" ,dc "has" ,cexpr)))))
+
+(defun |compMapCond''| (cexpr dc)
+ (let (l u tmp1 tmp2)
+ (declare (special |$Information| |$e|))
+  (cond
+   ((eq cexpr t) t)
+   ((and (consp cexpr) 
+         (eq (qcar cexpr) 'and)
+         (progn (setq l (qcdr cexpr)) t))
+     (prog (t0)
+      (setq t0 t)
+      (return
+       (do ((t1 nil (null t0)) (t2 l (cdr t2)) (u nil))
+           ((or t1 (atom t2) (progn (setq u (car t2)) nil)) t0)
+        (setq t0 (and t0 (|compMapCond''| u dc)))))))
+   ((and (consp cexpr) 
+         (eq (qcar cexpr) 'or)
+         (progn (setq l (qcdr cexpr)) t))
+    (prog (t3)
+     (setq t3 nil)
+     (return
+      (do ((t4 nil t3) (t5 l (cdr t5)) (u nil))
+          ((or t4 (atom t5) (progn (setq u (car t5)) nil)) t3)
+         (setq t3 (or t3 (|compMapCond''| u dc)))))))
+   ((and (consp cexpr)
+         (eq (qcar cexpr) '|not|)
+         (progn 
+          (setq tmp1 (qcdr cexpr))
+          (and (consp tmp1)
+               (eq (qcdr tmp1) nil)
+               (progn (setq u (qcar tmp1)) t))))
+     (null (|compMapCond''| u dc)))
+   ((and (consp cexpr)
+         (eq (qcar cexpr) '|has|)
+         (progn
+          (setq tmp1 (qcdr cexpr))
+          (and (consp tmp1)
+               (progn
+                (setq tmp2 (qcdr tmp1))
+                (and (consp tmp2)
+                     (eq (qcdr tmp2) nil))))))
+     (cond
+      ((|knownInfo| cexpr) t)
+      (t nil)))
+   ((|member| 
+      (cons 'attribute (cons dc (cons cexpr nil)))
+      (|get| '|$Information| 'special |$e|))
+     t)
+   (t 
+    (|stackMessage| `("not known that" ,dc "has" ,cexpr))
+    nil))))
+
+(defun |compMapCondFun| (fnexpr op dc bindings)
+ (declare (ignore op) (ignore dc))
+ (cons fnexpr (cons bindings nil)))
+
+(defun |compNoStacking| (form mode env)
+ (let (td)
+ (declare (special |$compStack| |$Representation| |$EmptyMode|))
+  (if (setq td (|comp2| form mode env))
+    (if (and (equal mode |$EmptyMode|) (equal (second td) |$Representation|))
+      (list (car td) '$ (third td))
+      td)
+   (|compNoStacking1| form mode env |$compStack|))))
+
+(defun |compNoStacking1| (form mode env |$compStack|)
+ (declare (special |$compStack|))
+ (let (u td)
+  (if (setq u (|get| (if (eq mode '$) '|Rep| mode) '|value| env))
+    (if (setq td (|comp2| form (car u) env))
+      (list (car td) mode (third td))
+      nil)
+    nil)))
+
+(defun |compOrCroak| (form mode env)
+  (|compOrCroak1| form mode env nil nil))
+
+(defun |compOrCroak1| (form mode env |$compStack| |$compErrorMessageStack|)
+ (declare (special |$compStack| |$compErrorMessageStack|))
+ (let (td errorMessage)
+  (declare (special |$level| |$s| |$scanIfTrue| |$exitModeStack|))
+  (cond
+   ((setq td (catch '|compOrCroak| (|comp| form mode env))) td)
+   (t
+     (setq |$compStack|
+       (cons (list form mode env |$exitModeStack|) |$compStack|))
+     (setq |$s| (|compOrCroak1,compactify| |$compStack|))
+     (setq |$level| (|#| |$s|))
+     (setq errorMessage
+       (if |$compErrorMessageStack|
+         (car |$compErrorMessageStack|)
+         '|unspecified error|))
+     (cond 
+      (|$scanIfTrue|
+        (|stackSemanticError| errorMessage (|mkErrorExpr| |$level|))
+        (list '|failedCompilation| mode env ))
+      (t
+       (|displaySemanticErrors|)
+       (say "****** comp fails at level " |$level| " with expression: ******")
+       (|displayComp| |$level|)
+       (|userError| errorMessage)))))))
+
+(defun |compOrCroak1,compactify| (al)
+ (cond
+  ((null al) nil)
+  ((lassoc (caar al) (cdr al)) (|compOrCroak1,compactify| (cdr al)))
+  (t (cons (car al) (|compOrCroak1,compactify| (cdr al))))))
+
+(defun |compPretend| (form mode env)
+ (let (x tt warningMessage td tp)
+ (declare (special |$newCompilerUnionFlag| |$EmptyMode|))
+  (setq x (second form))
+  (setq tt (third form))
+  (setq env (|addDomain| tt env))
+  (when (setq td (or (|comp| x tt env) (|comp| x |$EmptyMode| env)))
+   (when (equal (second td) tt)
+    (setq warningMessage (list '|pretend| tt '| -- should replace by @|)))
+   (cond
+     ((and |$newCompilerUnionFlag|
+           (eq (|opOf| (second td)) '|Union|)
+           (not (eq (|opOf| mode) '|Union|)))
+       (|stackSemanticError|
+        (list '|cannot pretend | x '| of mode | (second td) '| to mode | mode)
+         nil))
+     (t
+      (setq td (list (first td) tt (third td)))
+      (when (setq tp (|coerce| td mode))
+        (when warningMessage (|stackWarning| warningMessage))
+        tp))))))
+
+(defun |compQuote| (form mode env)
+ (list form mode env))
+
+(defun |compRepeatOrCollect| (form mode env)
+ (labels (
+  (fn (form |$exitModeStack| |$leaveLevelStack| |$formalArgList| env)
+  (declare (special |$exitModeStack| |$leaveLevelStack| |$formalArgList|))
+  (let (|$until| body itl xp targetMode repeatOrCollect bodyMode bodyp mp tmp1 
+         untilCode ep itlp formp u mpp tmp2)
+  (declare (special  |$Boolean| |$until| |$NoValueMode| ))
+   (setq |$until| nil)
+   (setq repeatOrCollect (car form))
+   (setq tmp1 (reverse (cdr form)))
+   (setq body (car tmp1))
+   (setq itl (nreverse (cdr tmp1)))
+   (setq itlp
+    (dolist (x itl (nreverse0 tmp2))
+     (setq tmp1 (or (|compIterator| x env) (return '|failed|)))
+     (setq xp (first tmp1))
+     (setq env (second tmp1))
+     (push xp tmp2)))
+   (unless (eq itlp '|failed|)
+    (setq targetMode (car |$exitModeStack|))
+    (setq bodyMode
+      (if (eq repeatOrCollect 'collect)
+       (cond
+        ((eq targetMode '|$EmptyMode|)
+          '|$EmptyMode|)
+        ((setq u (|modeIsAggregateOf| '|List| targetMode env))
+          (second u))
+        ((setq u (|modeIsAggregateOf| '|PrimitiveArray| targetMode env))
+         (setq repeatOrCollect 'collectv) 
+         (second u))
+        ((setq u (|modeIsAggregateOf| '|Vector| targetMode env))
+         (setq repeatOrCollect 'collectvec)
+         (second u))
+        (t
+         (|stackMessage| "Invalid collect bodytype")
+         '|failed|))
+        |$NoValueMode|))
+     (unless (eq bodyMode '|failed|)
+      (when (setq tmp1 (|compOrCroak| body bodyMode env))
+       (setq bodyp (first tmp1))
+       (setq mp (second tmp1))
+       (setq ep (third tmp1))
+       (when |$until|
+         (setq tmp1 (|comp| |$until| |$Boolean| ep))
+         (setq untilCode (first tmp1))
+         (setq ep (third tmp1))
+         (setq itlp 
+           (subst (list 'until untilCode) '|$until| itlp :test #'equal)))
+       (setq formp (cons repeatOrCollect (append itlp (list bodyp))))
+       (setq mpp
+        (cond
+         ((eq repeatOrCollect 'collect)
+           (if (setq u (|modeIsAggregateOf| '|List| targetMode env))
+             (car u)
+             (list '|List| mp)))
+         ((eq repeatOrCollect 'collectv)
+           (if (setq u (|modeIsAggregateOf| '|PrimitiveArray| targetMode env))
+             (car u)
+             (list '|PrimitiveArray| mp)))
+         ((eq repeatOrCollect 'collectvec)
+           (if (setq u (|modeIsAggregateOf| '|Vector| targetMode env))
+             (car u)
+             (list '|Vector| mp)))
+         (t mp)))
+       (|coerceExit| (list formp  mpp ep) targetMode)))))) )
+ (declare (special |$exitModeStack| |$leaveLevelStack| |$formalArgList|))
+ (fn form
+   (cons mode |$exitModeStack|)
+   (cons (|#| |$exitModeStack|) |$leaveLevelStack|)
+   |$formalArgList|
+   env)))
+
+(defun |compReduce| (form mode env)
+  (declare (special |$formalArgList|))
+  (|compReduce1| form mode env |$formalArgList|))
+
+(defun |compReduce1| (form mode env |$formalArgList|)
+ (declare (special |$formalArgList|))
+ (let (|$sideEffectsList| |$until| |$initList| |$endTestList| collectForm 
+       collectOp body op itl acc afterFirst bodyVal part1 part2 part3 id
+       identityCode untilCode finalCode tmp1 tmp2)
+ (declare (special |$sideEffectsList| |$until| |$initList| |$Boolean| |$e|
+                   |$endTestList|))
+  (setq op (second form))
+  (setq collectForm (fourth form))
+  (setq collectOp (first collectForm))
+  (setq tmp1 (reverse (cdr collectForm)))
+  (setq body (first tmp1))
+  (setq itl (nreverse (cdr tmp1)))
+  (when (stringp op) (setq op (intern op)))
+  (cond
+   ((null (member collectOp '(collect collectv collectvec)))
+    (|systemError| (list '|illegal reduction form:| form)))
+   (t 
+    (setq |$sideEffectsList| nil)
+    (setq |$until| nil)
+    (setq |$initList| nil)
+    (setq |$endTestList| nil)
+    (setq |$e| env)
+    (setq itl
+     (dolist (x itl (nreverse0 tmp2))
+      (setq tmp1 (or (|compIterator| x |$e|) (return '|failed|)))
+      (setq |$e| (second tmp1))
+      (push (elt tmp1 0) tmp2)))
+    (unless (eq itl '|failed|)
+     (setq env |$e|)
+     (setq acc (gensym))
+     (setq afterFirst (gensym))
+     (setq bodyVal (gensym))
+     (when (setq tmp1 (|comp| (list 'let bodyVal body ) mode env))
+      (setq part1 (first tmp1))
+      (setq mode (second tmp1))
+      (setq env (third tmp1))
+      (when (setq tmp1 (|comp| (list 'let acc bodyVal) mode env))
+       (setq part2 (first tmp1))
+       (setq env (third tmp1))
+       (when (setq tmp1 
+              (|comp| (list 'let acc (|parseTran| (list op acc bodyVal)))
+                      mode env))
+        (setq part3 (first tmp1))
+        (setq env (third tmp1))
+        (when (setq identityCode
+               (if (setq id (|getIdentity| op env)) 
+                (car (|comp| id mode env))
+                (list '|IdentityError| (mkq op))))
+         (setq finalCode
+          (cons 'progn
+           (cons (list 'let afterFirst nil)
+            (cons
+             (cons 'repeat
+              (append itl
+               (list
+                (list 'progn part1
+                 (list 'if afterFirst part3 
+                  (list 'progn part2 (list 'let afterFirst (mkq t)))) nil))))
+                   (list (list 'if afterFirst acc identityCode ))))))
+         (when |$until|
+          (setq tmp1 (|comp| |$until| |$Boolean| env))
+          (setq untilCode (first tmp1))
+          (setq env (third tmp1))
+          (setq finalCode
+           (subst (list 'until untilCode) '|$until| finalCode :test #'equal)))
+          (list finalCode mode env ))))))))))
+
+(defun |compReturn| (form mode env)
+ (let (level x index u xp mp ep)
+ (declare (special |$returnMode| |$exitModeStack|))
+  (setq level (second form))
+  (setq x (third form))
+  (cond
+   ((null |$exitModeStack|)
+    (|stackSemanticError|
+      (list '|the return before| x '|is unneccessary|) nil)
+    nil)
+   ((not (eql level 1))
+     (|userError| "multi-level returns not supported"))
+   (t
+    (setq index (max 0 (1- (|#| |$exitModeStack|))))
+    (when (>= index 0)
+      (setq |$returnMode|
+       (|resolve| (elt |$exitModeStack| index) |$returnMode|)))
+    (when (setq u (|comp| x |$returnMode| env))
+     (setq xp (first u))
+     (setq mp (second u))
+     (setq ep (third u))
+     (when (>= index 0)
+       (setq |$returnMode| (|resolve| mp |$returnMode|))
+       (|modifyModeStack| mp index))
+     (list (list '|TAGGEDreturn| 0 u) mode ep))))))
+
+(defun |compSeq| (form mode env)
+ (declare (special |$exitModeStack|))
+ (|compSeq1| (cdr form) (cons mode |$exitModeStack|) env))
+
+(defun |compSeqItem| (form mode env)
+  (|comp| (|macroExpand| form env) mode env))
+
+(defun |compSeq1| (form |$exitModeStack| env)
+ (declare (special |$exitModeStack|))
+ (let (|$insideExpressionIfTrue| |$finalEnv| tmp1 tmp2 c catchTag newform)
+ (declare (special |$insideExpressionIfTrue| |$finalEnv| |$NoValueMode|))
+  (setq |$insideExpressionIfTrue| nil)
+  (setq |$finalEnv| nil)
+  (when
+    (setq c (dolist (x form (nreverse0 tmp2))
+             (setq |$insideExpressionIfTrue| nil)
+             (setq tmp1 (|compSeqItem| x |$NoValueMode| env))
+             (unless tmp1 (return nil))
+             (setq env (third tmp1))
+             (push (first tmp1) tmp2)))
+   (setq catchTag (mkq (gensym)))
+   (setq newform
+    (cons 'seq
+     (|replaceExitEtc| c catchTag '|TAGGEDexit| (elt |$exitModeStack| 0))))
+   (list (list 'catch catchTag newform)
+         (elt |$exitModeStack| 0) |$finalEnv|))))
+
+(defun |compSetq| (form mode env)
+ (|compSetq1| (second form) (third form) mode env))
+
+(defun |compSetq1| (form val mode env)
+ (let (x y ep op z)
+ (declare (special |$EmptyMode|))
+ (cond
+  ((identp form) (|setqSingle| form val mode env))
+  ((and (consp form) (eq (qfirst form) '|:|) (consp (qrest form))
+        (consp (qcddr form)) (eq (qcdddr form) nil))
+    (setq x (second form))
+    (setq y (third form))
+    (setq ep (third (|compMakeDeclaration| form |$EmptyMode| env)))
+    (|compSetq| (list 'let x val) mode ep))
+  ((consp form)
+    (setq op (qfirst form))
+    (setq z (qrest form))
+    (cond
+     ((eq op 'cons)     (|setqMultiple| (|uncons| form) val mode env))
+     ((eq op '|@Tuple|) (|setqMultiple| z val mode env))
+     (t                 (|setqSetelt| form val mode env)))))))
+
+(defun |compSingleCapsuleItem| (item |$predl| |$e|)
+ (declare (special |$predl| |$e|))
+  (|doIt| (|macroExpandInPlace| item |$e|) |$predl|)
+  |$e|)
+
+(defun |compString| (form mode env)
+ (declare (special |$StringCategory|))
+ (list form (|resolve| |$StringCategory| mode) env))
+
+(defun |compSubDomain| (form mode env)
+ (let (|$addFormLhs| |$addForm| domainForm predicate tmp1)
+ (declare (special |$addFormLhs| |$addForm| |$NRTaddForm| |$addFormLhs|))
+  (setq domainForm (second form))
+  (setq predicate (third form))
+  (setq |$addFormLhs| domainForm)
+  (setq |$addForm| nil)
+  (setq |$NRTaddForm| domainForm)
+  (setq tmp1 (|compSubDomain1| domainForm predicate mode env))
+  (setq |$addForm| (first tmp1))
+  (setq env (third tmp1))
+  (|compCapsule| (list 'capsule) mode env)))
+
+(defun |compSubDomain1| (domainForm predicate mode env)
+ (let (u prefixPredicate opp dFp)
+ (declare (special |$CategoryFrame| |$op| |$lisplibSuperDomain| |$Boolean|
+                   |$EmptyMode|))
+  (setq env (third
+   (|compMakeDeclaration| (list '|:| '|#1| domainForm)
+     |$EmptyMode| (|addDomain| domainForm env))))
+   (setq u (|compOrCroak| predicate |$Boolean| env))
+   (unless u
+    (|stackSemanticError|
+     (list '|predicate: | predicate 
+           '| cannot be interpreted with #1: | domainForm) nil))
+   (setq prefixPredicate (|lispize| (first u)))
+   (setq |$lisplibSuperDomain| (list domainForm predicate))
+   (|evalAndRwriteLispForm| '|evalOnLoad2|
+    (list 'setq '|$CategoryFrame|
+     (list '|put|
+      (setq opp (list 'quote |$op|))
+       ''|SuperDomain|
+        (setq dFp (list 'quote domainForm))
+         (list '|put| dFp ''|SubDomain|
+          (list 'cons (list 'quote (cons |$op| prefixPredicate))
+          (list 'delasc opp (list '|get| dFp ''|SubDomain| '|$CategoryFrame|)))
+          '|$CategoryFrame|))))
+   (list domainForm mode env)))
+
+(defun |compSymbol| (form mode env)
+ (let (v mprime newmode)
+  (declare (special |$Symbol| |$Expression| |$FormalMapVariableList|
+                    |$compForModeIfTrue| |$formalArgList| |$NoValueMode|
+                    |$functorLocalParameters| |$Boolean| |$NoValue|))
+   (cond
+     ((eq form '|$NoValue|) (list '|$NoValue| |$NoValueMode| env ))
+     ((|isFluid| form)
+      (setq newmode (|getmode| form env))
+      (when newmode (list form (|getmode| form env) env)))
+     ((eq form '|true|) (list '(quote t) |$Boolean| env ))
+     ((eq form '|false|) (list nil |$Boolean| env ))
+     ((or (equal form mode)
+          (|get| form '|isLiteral| env)) (list (list 'quote form) form env))
+     ((setq v (|get| form '|value| env))
+      (cond
+        ((member form |$functorLocalParameters|)
+         ; s will be replaced by an ELT form in beforeCompile
+         (|NRTgetLocalIndex| form) 
+         (list form (second v) env))
+        (t
+         ; form has been SETQd
+         (list form (second v) env))))
+     ((setq mprime (|getmode| form env))
+      (cond
+        ((and (null (|member| form |$formalArgList|))
+              (null (member form |$FormalMapVariableList|))
+              (null (|isFunction| form env))
+              (null (eq |$compForModeIfTrue| t)))
+         (|errorRef| form)))
+      (list form mprime env ))
+     ((member form |$FormalMapVariableList|)
+      (|stackMessage| (list '|no mode found for| form )))
+     ((or (equal mode |$Expression|) (equal mode |$Symbol|))
+      (list (list 'quote form) mode env ))
+     ((null (|isFunction| form env)) (|errorRef| form)))))
+
+(defun |compSubsetCategory| (form mode env)
+ (let (cat r)
+ (declare (special |$lhsOfColon|))
+  (setq cat (second form))
+  (setq r (third form))
+  ;  --1. put "Subsets" property on R to allow directly coercion to subset;
+  ;  --   allow automatic coercion from subset to R but not vice versa
+  (setq env (|put| r '|Subsets| (list (list |$lhsOfColon| '|isFalse|)) env))
+  ;  --2. give the subset domain modemaps of cat plus 3 new functions
+  (|comp|
+    (list '|Join| cat
+      (subst |$lhsOfColon| '$
+             (list 'category '|domain|
+              (list 'signature '|coerce| (list r '$))
+               (list 'signature '|lift| (list r '$))
+                (list 'signature '|reduce| (list '$ r))) :test #'equal))
+     mode env)))
+
+(defun |compSuchthat| (form mode env)
+ (let (x p xp mp tmp1 pp)
+ (declare (special |$Boolean|))
+  (setq x (second form))
+  (setq p (third form))
+  (when (setq tmp1 (|comp| x mode env))
+   (setq xp (first tmp1))
+   (setq mp (second tmp1))
+   (setq env (third tmp1))
+   (when (setq tmp1 (|comp| p |$Boolean| env))
+    (setq pp (first tmp1))
+    (setq env (third tmp1))
+    (setq env (|put| xp '|condition| pp env))
+    (list xp mp env)))))
+
+(defun |compToApply| (op argl m e)
+ (let (tt m1)
+ (declare (special |$EmptyMode|))
+  (setq tt (|compNoStacking| op |$EmptyMode| e))
+  (when tt
+   (setq m1 (cadr tt))
+   (cond
+    ((and (consp (car tt)) (eq (qcar (car tt)) 'quote)
+          (consp (qcdr (car tt))) (eq (qcddr (car tt)) nil)
+          (equal (qcadr (car tt)) m1))
+      nil)
+    (t
+     (|compApplication| op argl m (caddr tt) tt))))))
+
+(defun |compTopLevel| (form mode env)
+ (let (|$NRTderivedTargetIfTrue| |$killOptimizeIfTrue| |$forceAdd|
+       |$compTimeSum| |$resolveTimeSum| |$packagesUsed| |$envHashTable|
+        t1 t2 t3 val newmode)
+ (declare (special |$NRTderivedTargetIfTrue| |$killOptimizeIfTrue|
+                   |$forceAdd| |$compTimeSum| |$resolveTimeSum|
+                   |$packagesUsed| |$envHashTable| ))
+   (setq |$NRTderivedTargetIfTrue| nil)
+   (setq |$killOptimizeIfTrue| nil)
+   (setq |$forceAdd| nil)
+   (setq |$compTimeSum| 0)
+   (setq |$resolveTimeSum| 0)
+   (setq |$packagesUsed| NIL)
+   (setq |$envHashTable| (make-hashtable 'equal))
+   (dolist (u (car (car env)))
+    (dolist (v (cdr u))
+     (hput |$envHashTable| (cons (car u) (cons (car v) nil)) t)))
+   (cond
+    ((or (and (consp form) (eq (qfirst form) 'def))
+         (and (consp form) (eq (qfirst form) '|where|)
+              (progn
+                (setq t1 (qrest form))
+                (and (consp t1)
+                (progn
+                 (setq t2 (qfirst t1))
+                 (and (consp t2) (eq (qfirst t2) 'def)))))))
+      (setq t3 (|compOrCroak| form mode env))
+      (setq val (car t3))
+      (setq newmode (second t3))
+      (cons val (cons newmode (cons env nil))))
+    (t (|compOrCroak| form mode env)))))
+
+(defun |compTuple2Record| (u)
+ (let ((i 0))
+  (cons '|Record|
+   (loop for x in (rest u)
+    collect (list '|:| (incf i) x)))))
+
+(defun |compTypeOf| (form mode env)
+ (let (|$insideCompTypeOf| op argl newModemap)
+ (declare (special |$insideCompTypeOf| |$FormalMapVariableList|))
+  (setq op (car form))
+  (setq argl (cdr form))
+  (setq |$insideCompTypeOf| t)
+  (setq newModemap
+    (eqsubstlist argl |$FormalMapVariableList| (|get| op '|modemap| env)))
+  (setq env (|put| op '|modemap| newModemap env))
+  (|comp3| form mode env)))
+
+(defun |compUniquely| (x m env)
+ (let (|$compUniquelyIfTrue|)
+ (declare (special |$compUniquelyIfTrue|))
+  (setq |$compUniquelyIfTrue| t)
+  (catch '|compUniquely| (|comp| x m env))))
+
+(defun |compVector| (form mode env)
+ (let (tmp1 tmp2 t0 failed (newmode (second mode)))
+  (declare (special |$EmptyVector|))
+   (if (null form)
+    (list |$EmptyVector| mode env)
+    (progn
+     (setq t0
+      (do ((t3 form (cdr t3)) (x nil))
+          ((or (atom t3) failed) (unless failed (nreverse0 tmp2)))
+        (setq x (car t3))
+        (if (setq tmp1 (|comp| x newmode env))
+          (progn
+           (setq newmode (second tmp1))
+           (setq env (third tmp1))
+           (push tmp1 tmp2))
+          (setq failed t))))
+     (unless failed      
+      (list (cons 'vector 
+                  (loop for texpr in t0 collect (car texpr))) mode env))))))
+
+(defun |compWhere| (form mode eInit)
+ (let (|$insideExpressionIfTrue| |$insideWhereIfTrue| newform exprList e
+       eBefore tmp1 x eAfter del eFinal)
+ (declare (special |$insideExpressionIfTrue| |$insideWhereIfTrue|
+                   |$EmptyMode|))
+  (setq newform (second form))
+  (setq exprlist (cddr form))
+  (setq |$insideExpressionIfTrue| nil)
+  (setq |$insideWhereIfTrue| t)
+  (setq e eInit)
+  (when (dolist (item exprList t)
+          (setq tmp1 (|comp| item |$EmptyMode| e))
+          (unless tmp1 (return nil))
+          (setq e (third tmp1)))
+  (setq |$insideWhereIfTrue| nil)
+  (setq tmp1 (|comp| (|macroExpand| newform (setq eBefore e)) mode e))
+  (when tmp1
+    (setq x (first tmp1))
+    (setq mode (second tmp1))
+    (setq eAfter (third tmp1))
+    (setq del (|deltaContour| eAfter eBefore))
+    (if del
+      (setq eFinal (|addContour| del eInit))
+      (setq eFinal eInit))
+    (list x mode eFinal)))))
+
+(defun |compWithMappingMode| (form mode oldE)
+  (declare (special |$formalArgList|))
+  (|compWithMappingMode1| form mode oldE |$formalArgList|))
+
+(defun |compWithMappingMode1| (form mode oldE |$formalArgList|)
+ (declare (special |$formalArgList|))
+  (prog (|$killOptimizeIfTrue| $funname $funnameTail mprime sl tmp1 tmp2 
+         tmp3 tmp4 tmp5 tmp6 target argModeList nx oldstyle ress vl1 vl e tt
+             u frees i scode locals body vec expandedFunction fname uu)
+  (declare (special |$killOptimizeIfTrue| $funname $funnameTail
+                    |$QuickCode| |$EmptyMode| |$FormalMapVariableList|
+                    |$CategoryFrame| |$formatArgList|))
+   (return
+    (seq
+     (progn
+      (setq mprime (second mode))
+      (setq sl (cddr mode))
+      (setq |$killOptimizeIfTrue| t)
+      (setq e oldE)
+      (cond
+       ((|isFunctor| form)
+        (cond
+         ((and (progn
+                (setq tmp1 (|get| form '|modemap| |$CategoryFrame|))
+                (and (consp tmp1)
+                     (progn
+                      (setq tmp2 (qfirst tmp1))
+                      (and (consp tmp2)
+                           (progn
+                            (setq tmp3 (qfirst tmp2))
+                            (and (consp tmp3)
+                                 (progn
+                                  (setq tmp4 (qrest tmp3))
+                                  (and (consp tmp4)
+                                       (progn 
+                                        (setq target (qfirst tmp4))
+                                        (setq argModeList (qrest tmp4))
+                                        t)))))
+                           (progn
+                            (setq tmp5 (qrest tmp2))
+                            (and (consp tmp5) (eq (qrest tmp5) nil)))))))
+               (prog (t1)
+                (setq t1 t)
+                (return
+                 (do ((t2 nil (null t1))
+                      (t3 argModeList (cdr t3))
+                      (newmode nil)
+                      (t4 sl (cdr t4))
+                      (s nil))
+                    ((or t2 (atom t3)
+                         (progn (setq newmode (car t3)) nil)
+                         (atom t4)
+                         (progn (setq s (car t4)) nil))
+                        t1)
+                   (seq (exit
+                     (setq t1 
+                      (and t1 (|extendsCategoryForm| '$ s newmode))))))))
+                        (|extendsCategoryForm| '$ target mprime))
+               (return (list form mode e )))
+         (t nil)))
+       (t 
+        (when (stringp form) (setq form (intern form)))
+        (setq ress nil) 
+        (setq oldstyle t)
+        (cond
+         ((and (consp form) 
+               (eq (qfirst form) '+->)
+               (progn
+                (setq tmp1 (qrest form))
+                (and (consp tmp1)
+                     (progn
+                      (setq vl (qfirst tmp1))
+                      (setq tmp2 (qrest tmp1))
+                      (and (consp tmp2)
+                           (eq (qrest tmp2) nil)
+                           (progn (setq nx (qfirst tmp2)) t))))))
+            (setq oldstyle nil)
+            (cond
+             ((and (consp vl) (eq (qfirst vl) '|:|))
+               (setq ress (|compLambda| form mode oldE))
+               ress)
+             (t
+              (setq vl
+               (cond
+                ((and (consp vl)
+                      (eq (qfirst vl) '|@Tuple|)
+                      (progn (setq vl1 (qrest vl)) t))
+                  vl1)
+                (t vl)))
+              (setq vl
+               (cond
+                ((symbolp vl) (cons vl nil))
+                ((and 
+                  (listp vl)
+                  (prog (t5)
+                   (setq t5 t)
+                   (return
+                    (do ((t7 nil (null t5))
+                         (t6 vl (cdr t6))
+                         (v nil))
+                       ((or t7 (atom t6) (progn (setq v (car t6)) nil)) t5)
+                      (seq
+                       (exit
+                        (setq t5 (and t5 (symbolp v)))))))))
+                  vl)
+                (t
+                 (|stackAndThrow| (cons '|bad +-> arguments:| (list vl ))))))
+              (setq |$formatArgList| (append vl |$formalArgList|))
+              (setq form nx))))
+         (t
+          (setq vl (take (|#| sl) |$FormalMapVariableList|))))
+        (cond
+         (ress ress)
+         (t
+          (do ((t8 sl (cdr t8)) (m nil) (t9 vl (cdr t9)) (v nil))
+              ((or (atom t8)
+                   (progn (setq m (car t8)) nil)
+                   (atom t9)
+                   (progn (setq v (car t9)) nil))
+                 nil)
+              (seq (exit (progn
+               (setq tmp6 
+                (|compMakeDeclaration| (list '|:| v m ) |$EmptyMode| e))
+               (setq e (third tmp6))
+               tmp6))))
+          (cond
+           ((and oldstyle 
+                 (null (null vl))
+                 (null (|hasFormalMapVariable| form vl)))
+            (return
+             (progn
+              (setq tmp6 (or (|comp| (cons form vl) mprime e) (return nil)))
+              (setq u (car tmp6))
+              (|extractCodeAndConstructTriple| u mode oldE))))
+           ((and (null vl) (setq tt (|comp| (cons form nil) mprime e)))
+            (return
+             (progn
+               (setq u (car tt))
+               (|extractCodeAndConstructTriple| u mode oldE))))
+           (t
+            (setq tmp6 (or (|comp| form mprime e) (return nil)))
+            (setq u (car tmp6))
+            (setq uu (|optimizeFunctionDef| `(nil (lambda ,vl ,u))))
+;  --  At this point, we have a function that we would like to pass.
+;  --  Unfortunately, it makes various free variable references outside
+;  --  itself.  So we build a mini-vector that contains them all, and
+;  --  pass this as the environment to our inner function.
+            (setq $funname nil)
+            (setq $funnameTail (list nil))
+            (setq expandedFunction (comp-tran (second uu)))
+            (setq frees (freelist expandedFunction vl nil e))
+            (setq expandedFunction
+             (cond
+              ((eql (|#| frees) 0)
+               (cons 'lambda (cons (append vl (list '$$))
+                                         (cddr expandedFunction))))
+              ((eql (|#| frees) 1)
+               (setq vec (caar frees))
+                (cons 'lambda (cons (append vl (list vec))
+                                         (cddr expandedFunction))))
+              (t 
+               (setq scode nil)
+               (setq vec nil)
+               (setq locals nil)
+               (setq i -1)
+               (do ((t0 frees (cdr t0)) (v nil))
+                   ((or (atom t0) (progn (setq v (car t0)) nil)) nil)
+                 (seq
+                  (exit
+                   (progn
+                    (setq i (plus i 1))
+                    (setq vec (cons (car v) vec))
+                    (setq scode
+                     (cons
+                      (cons 'setq 
+                       (cons (car v) 
+                        (cons
+                         (cons
+                          (cond
+                           (|$QuickCode| 'qrefelt)
+                           (t 'elt))
+                          (cons '$$ (cons i nil)))
+                         nil)))
+                       scode))
+                    (setq locals (cons (car v) locals))))))
+               (setq body (cddr expandedFunction))
+               (cond
+                (locals
+                 (cond
+                  ((and (consp body)
+                        (progn
+                         (setq tmp1 (qfirst body))
+                         (and (consp tmp1)
+                              (eq (qfirst tmp1) 'declare))))
+                    (setq body
+                     (cons (car body)
+                      (cons
+                       (cons 'prog
+                        (cons locals
+                         (append scode
+                          (cons
+                           (cons 'return
+                            (cons
+                             (cons 'progn
+                              (cdr body))
+                             nil))
+                           nil))))
+                        nil))))
+                  (t
+                   (setq body
+                    (cons
+                     (cons 'prog
+                      (cons locals
+                       (append scode
+                        (cons
+                         (cons 'return
+                          (cons
+                           (cons 'progn body)
+                           nil))
+                         nil))))
+                     nil))))))
+               (setq vec (cons 'vector (nreverse vec)))
+               (cons 'lambda (cons (append vl (list '$$)) body)))))
+            (setq fname (list 'closedfn expandedFunction))
+            (setq uu
+             (cond
+              (frees (list 'cons fname vec))
+              (t (list 'list fname))))
+            (list uu mode oldE))))))))))))
+
+(defun |constructMacro| (form)
+ (let (vl body)
+  (setq vl (cadadr form))
+  (setq body (car (cddadr form)))
+  (cond
+   ((null (let ((result t))
+           (loop for x in vl 
+            do (setq result (and result (atom x))))
+           result))
+     (|stackSemanticError| (list '|illegal parameters for macro: | vl) nil))
+   (t
+     (list 'xlam (loop for x in vl when (identp x) collect x) body)))))
+
+(defun containsBang (u)
+ (let (tmp2)
+  (cond
+   ((atom u) (eq u '!))
+   ((and (consp u) (equal (qfirst u) 'quote)
+         (consp (qrest u)) (eq (qcddr u) nil))
+     nil)
+   (t
+     (dolist (x u tmp2)
+       (setq tmp2 (or tmp2 (containsBang x))))))))
+
+(defun |convert| (td mode)
+ (let (res)
+  (when (setq res (|resolve| (second td) mode))
+   (|coerce| td res))))
+
+(defun |convertOpAlist2compilerInfo| (opalist)
+ (labels (
+  (formatSig (op arg2)
+   (let (typelist slot stuff pred impl)
+    (setq typelist (car arg2))
+    (setq slot (cadr arg2))
+    (setq stuff (cddr arg2))
+    (setq pred (if stuff (car stuff) t))
+    (setq impl (if (cdr stuff) (cadr stuff) 'elt))
+    (list (list op typelist) pred (list impl '$ slot)))))
+ (let (data result)
+  (setq data
+   (loop for item in opalist 
+    collect
+     (loop for sig in (rest item)
+      collect (formatSig (car item) sig))))
+  (dolist (term data result)
+   (setq result (append result term))))))
+
+(defun |convertOrCroak| (tt m)
+ (let (u)
+ (if (setq u (|convert| tt m))
+   u
+   (|userError|
+    (list '|CANNOT CONVERT: | (first tt) '|%l| '| OF MODE: | (second tt) 
+          '|%l| '| TO MODE: | m  '|%l|)))))
+
+(defun current-char ()
+  (if (line-past-end-p current-line)
+   #\return
+   (line-current-char current-line)))
+
+(defun current-symbol ()
+ (make-symbol-of (current-token)))
+
+(defun current-token ()
+ (declare (special valid-tokens current-token))
+ (if (> valid-tokens 0)
+  current-token
+  (try-get-token current-token)))
+
+
+(defun |dbReadLines| (target)
+ (let (instream lines)
+  (setq instream (open target))
+  (setq lines
+   (loop while (not (eofp instream))
+    collect (readline instream)))
+   (close instream)
+   lines))
+
+(defun |dbWriteLines| (&rest G176369 &aux options s)
+ (dsetq (s . options) G176369)
+ (let (|$outStream| pathname)
+ (declare (special |$outStream|))
+  (setq pathname (or (ifcar options) (|getTempPath| '|source|)))
+  (setq |$outStream| (make-outstream pathname))
+  (loop for x in s do (|writedb| x))
+  (shut |$outStream|)
+  pathname))
+
+(defun decodeScripts (a)
+ (labels (
+  (fn (a)
+   (let ((tmp1 0))
+    (if (and (consp a) (eq (qfirst a) '|,|))
+     (dolist (x (qrest a) tmp1) (setq tmp1 (+ tmp1 (fn x))))
+     1))))
+  (cond
+   ((and (consp a) (eq (qfirst a) '|PrefixSC|)
+         (consp (qrest a)) (eq (qcddr a) nil))
+    (strconc (princ-to-string 0) (decodeScripts (qsecond a))))
+   ((and (consp a) (eq (qfirst a) '|;|))
+    (apply 'strconc (loop for x in (qrest a) collect (decodeScripts x))))
+   ((and (consp a) (eq (qfirst a) '|,|))
+    (princ-to-string (fn a)))
+   (t
+    (princ-to-string 1)))))
+
+(defun deepestExpression (x)
+ (if (and (consp x) (eq (qfirst x) '!)
+          (consp (qrest x)) (eq (qcddr x) nil))
+   (deepestExpression (qsecond x))
+   x))
+
+(defun def-rename (x)
+ (cond
+  ((symbolp x)
+   (let ((y (get x 'rename))) (if y (first y) x)))
+  ((and (listp x) x)
+   (if (eqcar x 'quote)
+       x
+       (cons (def-rename (first x)) (def-rename (cdr x)))))
+  (x)))
+
+(defun |disallowNilAttribute| (x)
+ (loop for y in x when (and (car y) (not (eq (car y) '|nil|)))
+  collect y))
+
+(defun |displayMissingFunctions| ()
+ (let (i loc exp)
+ (declare (special |$env| |$formalArgList| |$CheckVectorList|))
+ (unless |$CheckVectorList|
+  (setq loc nil)
+  (setq exp nil)
+  (loop for cvl in |$CheckVectorList| do
+   (unless (cdr cvl)
+    (if (and (null (|member| (caar cvl) |$formalArgList|))
+             (consp (|getmode| (caar cvl) |$env|))
+             (eq (qfirst (|getmode| (caar cvl) |$env|)) '|Mapping|))
+      (push (list (caar cvl) (cadar cvl)) loc)
+      (push (list (caar cvl) (cadar cvl)) exp))))
+  (when loc
+   (|sayBrightly| (cons '|%l| (|bright| "  Missing Local Functions:")))
+   (setq i 0)
+   (loop for item in loc do
+    (|sayBrightly|
+     (cons "      [" (cons (incf i) (cons "]"
+      (append (|bright| (first item))
+       (cons '|: | (|formatUnabbreviatedSig| (second item))))))))))
+ (when exp
+  (|sayBrightly| (cons '|%l| (|bright| "  Missing Exported Functions:")))
+  (setq i 0)
+  (loop for item in exp do
+   (|sayBrightly|
+    (cons "      [" (cons (incf i) (cons "]"
+     (append (|bright| (first item))
+      (cons '|: | (|formatUnabbreviatedSig| (second item)))))))))))))
+
+(defun |displayPreCompilationErrors| ()
+ (let (n errors heading)
+  (declare (special |$postStack| |$topOp| |$InteractiveMode|))
+  (setq n (|#| (setq |$postStack| (remdup (nreverse |$postStack|)))))
+  (unless (eql n 0)
+    (setq errors (cond ((> n 1) "errors") (t "error")))
+    (cond
+     (|$InteractiveMode|
+      (|sayBrightly| (list "   Semantic " errors " detected: ")))
+     (t
+      (setq heading
+       (if (not (eq |$topOp| '|$topOp|))
+        (list "   " |$topOp| " has")
+        (list "   You have")))
+      (|sayBrightly|
+       (append heading (list n "precompilation " errors ":" )))))
+    (cond
+     ((> n 1)
+       (let ((i 1))
+        (dolist (x |$postStack|)
+          (|sayMath| (cons "   " (cons i (cons ") " x)))))))
+     (t (|sayMath| (cons "    " (car |$postStack|)))))
+    (terpri))))
+
+(defun |doIt| (item |$predl|)
+ (declare (special |$predl|))
+ (prog ($genno x rhs lhsp lhs rhsp rhsCode z tmp1 tmp2 tmp6 op body tt
+        functionPart u code)
+ (declare (special $genno |$e| |$EmptyMode| |$signatureOfForm| 
+                   |$QuickCode| |$LocalDomainAlist| |$Representation|
+                   |$NRTopt| |$packagesUsed| |$functorsUsed|
+                   |$functorLocalParameters| |$NonMentionableDomainNames|))
+  (setq $genno 0)
+  (cond
+   ((and (consp item) (eq (qfirst item) 'seq) (consp (qrest item))
+          (progn (setq tmp6 (reverse (qrest item))) t)
+          (consp tmp6) (consp (qfirst tmp6))
+          (eq (qcaar tmp6) '|exit|)
+          (consp (qcdar tmp6))
+          (equal (qcadar tmp6) 1)
+          (consp (qcddar tmp6))
+          (eq (qcdddar tmp6) nil))
+      (setq x (qcaddar tmp6))
+      (setq z (qrest tmp6))
+      (setq z (nreverse z))
+      (rplaca item 'progn)
+      (rplaca (lastnode item) x)
+      (loop for it1 in (rest item)
+       do (setq |$e| (|compSingleCapsuleItem| it1 |$predl| |$e|))))
+   ((|isDomainForm| item |$e|)
+    (setq u (list '|import| (cons (car item) (cdr item))))
+    (|stackWarning| (list '|Use: import | (cons (car item) (cdr item))))
+    (rplaca item (car u))
+    (rplacd item (cdr u))
+    (|doIt| item |$predl|))
+   ((and (consp item) (eq (qfirst item) 'let) (consp (qrest item))
+         (consp (qcddr item)))
+    (setq lhs (qsecond item))
+    (setq rhs (qthird item))
+    (cond
+     ((null (progn
+             (setq tmp2 (|compOrCroak| item |$EmptyMode| |$e|))
+             (and (consp tmp2)
+                  (progn
+                   (setq code (qfirst tmp2))
+                   (and (consp (qrest tmp2))
+                        (progn
+                         (and (consp (qcddr tmp2))
+                              (eq (qcdddr tmp2) nil)
+                              (PROGN
+                               (setq |$e| (qthird tmp2))
+                               t))))))))
+      (|stackSemanticError|
+       (cons '|cannot compile assigned value to| (|bright| lhs))
+        nil))
+     ((null (and (consp code) (eq (qfirst code) 'let)
+                 (progn
+                   (and (consp (qrest code))
+                        (progn
+                         (setq lhsp (qsecond code))
+                         (and (consp (qcddr code))))))
+                              (atom (qsecond code))))
+      (cond
+       ((and (consp code) (eq (qfirst code) 'progn))
+        (|stackSemanticError|
+         (list '|multiple assignment | item '| not allowed|)
+         nil))
+       (t
+        (rplaca item (car code))
+        (rplacd item (cdr code)))))
+     (t
+      (setq lhs lhsp)
+      (cond
+       ((and (null (|member| (ifcar rhs) |$NonMentionableDomainNames|))
+             (null (member lhs |$functorLocalParameters|)))
+        (setq |$functorLocalParameters|
+         (append |$functorLocalParameters| (list lhs)))))
+      (cond
+       ((and (consp code) (eq (qfirst code) 'let)
+             (progn
+              (setq tmp2 (qrest code))
+              (and (consp tmp2)
+                   (progn
+                    (setq tmp6 (qrest tmp2))
+                    (and (consp tmp6)
+                         (progn
+                          (setq rhsp (qfirst tmp6))
+                          t)))))
+             (|isDomainForm| rhsp |$e|))
+        (cond
+         ((|isFunctor| rhsp)
+          (setq |$functorsUsed| (|insert| (|opOf| rhsp) |$functorsUsed|))
+          (setq |$packagesUsed| (|insert| (list (|opOf| rhsp))
+            |$packagesUsed|))))
+        (cond
+         ((eq lhs '|Rep|)
+          (setq |$Representation| (elt (|get| '|Rep| '|value| |$e|) 0))
+          (cond
+           ((eq |$NRTopt| t)
+            (|NRTgetLocalIndex| |$Representation|))
+           (t nil))))
+        (setq |$LocalDomainAlist|
+         (cons (cons lhs
+          (sublis |$LocalDomainAlist| (elt (|get| lhs '|value| |$e|) 0)))
+           |$LocalDomainAlist|))))
+      (cond
+       ((and (consp code) (eq (qfirst code) 'let))
+        (rplaca item (if |$QuickCode| 'qsetrefv 'setelt))
+        (setq rhsCode rhsp)
+        (rplacd item (list '$ (|NRTgetLocalIndex| lhs) rhsCode)))
+       (t
+        (rplaca item (car code))
+        (rplacd item (cdr code)))))))
+   ((and (consp item) (eq (qfirst item) '|:|) (consp (qrest item))
+         (consp (qcddr item)) (eq (qcdddr item) nil))
+    (setq tmp1 (|compOrCroak| item |$EmptyMode| |$e|))
+    (setq |$e| (caddr tmp1))
+    tmp1)
+   ((and (consp item) (eq (qfirst item) '|import|))
+    (loop for dom in (qrest item)
+     do (|sayBrightly| (cons "   importing " (|formatUnabbreviated| dom))))
+    (setq tmp1 (|compOrCroak| item |$EmptyMode| |$e|))
+    (setq |$e| (caddr tmp1))
+    (rplaca item 'progn)
+    (rplacd item nil))
+   ((and (consp item) (eq (qfirst item) 'if))
+    (|doItIf| item |$predl| |$e|))
+   ((and (consp item) (eq (qfirst item) '|where|) (consp (qrest item)))
+    (|compOrCroak| item |$EmptyMode| |$e|))
+   ((and (consp item) (eq (qfirst item) 'mdef))
+    (setq tmp1 (|compOrCroak| item |$EmptyMode| |$e|))
+    (setq |$e| (caddr tmp1)) tmp1)
+   ((and (consp item) (eq (qfirst item) 'def) (consp (qrest item))
+         (consp (qsecond item)))
+    (setq op (qcaadr item))
+    (cond
+     ((setq body (|isMacro| item |$e|))
+      (setq |$e| (|put| op '|macro| body |$e|)))
+     (t
+      (setq tt (|compOrCroak| item |$EmptyMode| |$e|))
+      (setq |$e| (caddr tt))
+      (rplaca item '|CodeDefine|)
+      (rplacd (cadr item) (list |$signatureOfForm|))
+      (setq functionPart (list '|dispatchFunction| (car tt)))
+      (rplaca (cddr item) functionPart)
+      (rplacd (cddr item) nil))))
+   ((setq u (|compOrCroak| item |$EmptyMode| |$e|))
+     (setq code (car u))
+     (setq |$e| (caddr u))
+     (rplaca item (car code))
+     (rplacd item (cdr code)))
+   (t (|cannotDo|)))))
+
+(defun |doItIf| (item |$predl| |$e|)
+ (declare (special |$predl| |$e|))
+ (labels (
+  (localExtras (oldFLP)
+   (let (oldFLPp flp1 gv ans nils n)
+   (declare (special |$functorLocalParameters| |$getDomainCode|))
+    (unless (eq oldFLP |$functorLocalParameters|) 
+     (setq flp1 |$functorLocalParameters|)
+     (setq oldFLPp oldFLP)
+     (setq n 0)
+     (loop while oldFLPp 
+      do
+       (setq oldFLPp (cdr oldFLPp))
+       (setq n (1+ n)))
+     (setq nils (setq ans nil))
+     (loop for u in flp1
+      do
+       (if (or (atom u)
+               (let (result)
+                (loop for v in |$getDomainCode|
+                 do
+                 (setq result (or result
+                  (and (consp v) (consp (qrest v))
+                       (equal (qsecond v) u)))))
+                result))
+  ; Now we have to add code to compile all the elements of 
+  ; functorLocalParameters that were added during the conditional compilation
+        (setq nils (cons u nils))
+        (progn
+         (setq gv (gensym))
+         (setq ans (cons (list 'let gv u) ans))
+         (setq nils (CONS gv nils))))
+       (setq n (1+ n)))
+     (setq |$functorLocalParameters| (append oldFLP (nreverse nils)))
+     (nreverse ans)))))
+ (let (p x y olde tmp1 pp xp oldFLP yp)
+ (declare (special |$functorLocalParameters| |$Boolean|))
+   (setq p (second item))
+   (setq x (third item))
+   (setq y (fourth item))
+   (setq olde |$e|)
+   (setq tmp1
+    (or (|comp| p |$Boolean| |$e|)
+        (|userError| (list "not a Boolean:" p))))
+   (setq pp (first tmp1))
+   (setq |$e| (third tmp1))
+   (setq oldFLP |$functorLocalParameters|)
+   (unless (eq x '|noBranch|)
+     (|compSingleCapsuleItem| x |$predl| (|getSuccessEnvironment| p |$e|))
+     (setq xp (localExtras oldFLP)))
+   (setq oldFLP |$functorLocalParameters|)
+   (unless (eq y '|noBranch|)
+     (|compSingleCapsuleItem| y |$predl| (|getInverseEnvironment| p olde))
+     (setq yp (localExtras oldFLP)))
+   (rplaca item 'cond)
+   (rplacd item (list (cons pp (cons x xp)) (cons ''t (cons y yp)))))))
+
+(defun |dollarTran| (dom rand)
+ (let ((eltWord (if |$InteractiveMode| '|$elt| '|elt|)))
+  (declare (special |$InteractiveMode|))
+  (if (and (not (atom rand)) (cdr rand))
+   (cons (list eltWord dom (car rand)) (cdr rand))
+   (list eltWord dom rand))))
+
+(defun |domainMember| (dom domList)
+ (let (result)
+  (dolist (d domList result)
+   (setq result (or result (|modeEqual| dom d))))))
+
+(defun drop (n x &aux m)
+ (cond
+  ((eql n 0) x)
+  ((> n 0) (drop (1- n) (cdr x)))
+  ((>= (setq m (+ (length x) n)) 0) (take m x))
+  ((croak (list "Bad args to DROP" n x)))))
+
+
+(defun |eltModemapFilter| (name mmList env)
+ (let (z)
+  (if (|isConstantId| name env)
+   (cond
+    ((setq z
+      (loop for mm in mmList
+       when (and (consp mm) (consp (qfirst mm)) (consp (qcdar mm))
+                 (consp (qcddar mm))
+                 (consp (qcdddar mm))
+                 (equal (fourth (first mm)) name))
+       collect mm))
+      z)
+    (t
+     (|stackMessage| 
+      (list '|selector variable: | name '| is undeclared and unbound|))
+     nil))
+    mmList)))
+
+(defun |encodeItem| (x)
+ (cond
+  ((consp x) (|getCaps| (qfirst x)))
+  ((identp x) (pname x))
+  (t (princ-to-string x))))
+
+(defun |encodeFunctionName| (fun package signature sep count)
+ (let (packageName arglist signaturep reducedSig n x encodedSig encodedName)
+ (declare (special |$lisplibSignatureAlist| $lisplib))
+  (setq packageName (car package))
+  (setq arglist (cdr package))
+  (setq signaturep (subst '$ package signature  :test #'equal))
+  (setq reducedSig
+   (|mkRepititionAssoc| (append (cdr signaturep) (list (car signaturep)))))
+  (setq encodedSig
+   (let ((result ""))
+    (loop for item in reducedSig
+     do
+      (setq n (car item))
+      (setq x (cdr item))
+      (setq result 
+       (strconc result
+        (if (eql n 1)
+          (|encodeItem| x)
+          (strconc (princ-to-string n) (|encodeItem| x))))))
+     result))
+  (setq encodedName
+   (internl (|getAbbreviation| packageName (|#| arglist))
+            '|;| (|encodeItem| fun) '|;| encodedSig sep (princ-to-string count)))
+  (when $lisplib
+   (setq |$lisplibSignatureAlist|
+     (cons (cons encodedName signaturep) |$lisplibSignatureAlist|)))
+  encodedName))
+
+(defun |EqualBarGensym| (x y)
+ (labels (
+  (fn (x y)
+   (let (z)
+   (declare (special |$GensymAssoc|))
+    (cond
+     ((equal x y) t)
+     ((and (gensymp x) (gensymp y))
+      (if (setq z (|assoc| x |$GensymAssoc|))
+        (if (equal y (cdr z)) t nil)
+        (progn
+         (setq |$GensymAssoc| (cons (cons x y) |$GensymAssoc|))
+         t)))
+     ((null x) (and (consp y) (eq (qrest y) nil) (gensymp (qfirst y))))
+     ((null y) (and (consp x) (eq (qrest x) nil) (gensymp (qfirst x))))
+     ((or (atom x) (atom y)) nil)
+     (t
+      (and (fn (car x) (car y))
+           (fn (cdr x) (cdr y))))))))
+ (let (|$GensymAssoc|)
+ (declare (special |$GensymAssoc|))
+  (setq |$GensymAssoc| NIL)
+  (fn x y))))
+
+(defun escape-keywords (pname id)
+ (declare (special keywords))
+  (if (member id keywords)
+   (concatenate 'string "_" pname)
+   pname))
+
+(defun escaped (str n)
+ (and (> n 0) (eq (char str (1- n)) #\_)))
+
+(defun |evalAndRwriteLispForm| (key form)
+ (|eval| form)
+ (|rwriteLispForm| key form))
+
+(defun |evalAndSub| (domainName viewName functorForm form |$e|)
+ (declare (special |$e|))
+ (let (|$lhsOfColon| opAlist substAlist)
+  (declare (special |$lhsOfColon|))
+   (setq |$lhsOfColon| domainName)
+   (cond
+    ((|isCategory| form)
+      (list (|substNames| domainName viewName functorForm (elt form 1)) |$e|))
+    (t
+     (when (contained '$$ form)
+       (setq |$e| (|put| '$$ '|mode| (|get| '$ '|mode| |$e|) |$e|)))
+     (setq opAlist (|getOperationAlist| domainName functorForm form))
+     (setq substAlist (|substNames| domainName viewName functorForm opAlist))
+     (list substAlist |$e|)))))
+
+(defun expand-tabs (str)
+ (if (and (stringp str) (> (length str) 0))
+  (let ((bpos (nonblankloc str))
+        (tpos (indent-pos str)))
+   (setq str 
+    (if (eql bpos tpos)
+      str
+     (concatenate 'string (make-string tpos :initial-element #\space)
+                          (subseq str bpos))))
+   ;; remove dos CR
+   (let ((lpos (maxindex str)))
+    (if (eq (char str lpos) #\Return) 
+      (subseq str 0 lpos) 
+      str)))
+    str))
+
+(defun |extendLocalLibdb| (conlist)
+ (let (localLibdb oldlines newlines)
+ (declare (special |$createLocalLibDb| |$newConstructorList|))
+  (cond
+   ((null |$createLocalLibDb|) nil)
+   ((null conlist) nil)
+   (t
+     (|buildLibdb| conlist)
+     (setq |$newConstructorList| (|union| conlist |$newConstructorList|))
+     (setq localLibdb "libdb.text")
+     (cond
+      ((null (probe-file "libdb.text"))
+        (rename-file "temp.text" "libdb.text"))
+      (t
+       (setq oldlines 
+         (|purgeNewConstructorLines| (|dbReadLines| localLibdb) conlist))
+       (setq newlines (|dbReadLines| "temp.text"))
+       (|dbWriteLines| (msort (|union| oldlines newlines)) "libdb.text")
+       (|deleteFile| "temp.text")))))))
+
+(defun |extractCodeAndConstructTriple| (form mode oldE)
+ (let (tmp1 a fn op env)
+  (cond
+   ((and (consp form) (eq (qfirst form) '|call|)
+         (progn
+          (setq tmp1 (qrest form))
+          (and (consp tmp1)
+               (progn (setq fn (qfirst tmp1)) t))))
+    (cond
+     ((and (consp fn) (eq (qfirst fn) '|applyFun|)
+           (progn
+            (setq tmp1 (qrest fn))
+            (and (consp tmp1) (eq (qrest tmp1) nil)
+                 (progn (setq a (qfirst tmp1)) t))))
+            (setq fn a)))
+    (list fn mode oldE))
+   (t
+    (setq op (car form))
+    (setq env (car (reverse (cdr form))))
+    (list (list 'cons  (list 'function op) env) mode oldE)))))
+
+
+(defun |flattenSignatureList| (x)
+ (let (zz)
+  (cond
+   ((atom x) nil)
+   ((and (consp x) (eq (qfirst x) 'signature)) (list x))
+   ((and (consp x) (eq (qfirst x) 'if) (consp (qrest x))
+         (consp (qcddr x)) (consp (qcdddr x))
+         (eq (qcddddr x) nil))
+    (append (|flattenSignatureList| (third x))
+            (|flattenSignatureList| (fourth x))))
+   ((and (consp x) (eq (qfirst x) 'progn))
+     (loop for x in (qrest x)
+      do
+        (if (and (consp x) (eq (qfirst x) 'signature))
+          (setq zz (cons x zz))
+          (setq zz (append (|flattenSignatureList| x) zz))))
+     zz)
+   (t nil))))
+
+(defun |finalizeDocumentation| ()
+ (labels (
+  (fn (x env)
+   (declare (special |$lisplibForm| |$FormalMapVariableList|))
+   (cond
+    ((atom x) (list x nil))
+    (t
+     (when (> (|#| x) 2) (setq x (take 2 x)))
+     (sublislis |$FormalMapVariableList| (cdr |$lisplibForm|)
+                   (|macroExpand| x env)))))
+  (hn (u)
+    ; ((op,sig,doc), ...)  --> ((op ((sig doc) ...)) ...)
+   (let (opList op1 sig doc)
+    (setq oplist (remdup (assocleft u)))
+    (loop for op in opList
+     collect
+      (cons op
+       (loop for item in u
+        do (setq op1 (first item))
+           (setq sig (second item))
+           (setq doc (third item))
+        when (equal op op1)
+        collect
+          (list sig doc)))))))
+ (let (unusedCommentLineNumbers docList u noHeading attributes 
+       signatures name bigcnt op s litcnt a n r sig)
+ (declare (special |$e| |$lisplibForm| |$docList| |$op| $comblocklist))
+  (setq unusedCommentLineNumbers
+   (loop for x in $comblocklist
+    when (cdr x)
+    collect x))
+  (setq docList (subst '$ '% (|transDocList| |$op| |$docList|) :test #'equal))
+  (cond
+   ((setq u
+     (loop for item in docList
+      when (null (cdr item))
+      collect (car item)))
+    (loop for y in u
+     do
+      (cond
+       ((eq y '|constructor|) (setq noHeading t))
+       ((and (consp y) (consp (qcdr y)) (eq (qcddr y) nil)
+             (consp (qcadr y)) (eq (qcaadr y) '|attribute|))
+         (setq attributes (cons (cons (qcar y) (qcdadr y)) attributes)))
+        (t (setq signatures (cons y signatures)))))
+    (setq name (CAR |$lisplibForm|))
+    (when (or noHeading signatures attributes unusedCommentLineNumbers)
+      (|sayKeyedMsg| "Constructor documentation warnings (++ comments):" nil)
+      (setq bigcnt 1)
+      (when (or noHeading signatures attributes)
+       (|sayKeyedMsg|
+         " %1 The constructor %2 has missing documentation."
+         (list (strconc (princ-to-string bigcnt) ".") name))
+       (setq bigcnt (1+ bigcnt))
+       (setq litcnt 1)
+       (when noHeading
+         (|sayKeyedMsg| 
+          " %x3 %1 The constructor %2 is missing the heading description."
+          (list (strconc "(" (princ-to-string litcnt) ")") name))
+         (setq litcnt (1+ litcnt)))
+       (when signatures
+         (|sayKeyedMsg|
+          " %x3 %1 The following functions do not have documentation:"
+          (list (strconc "(" (princ-to-string litcnt) ")")))
+         (setq litcnt (1+ litcnt))
+         (loop for item in signatures
+          do
+           (setq op (first item))
+           (setq sig (second item))
+           (setq s (|formatOpSignature| op sig))
+           (|sayMSG|
+            (if (atom s) 
+              (list '|%x9| s)
+              (cons '|%x9| s)))))
+       (when attributes
+         (|sayKeyedMsg| 
+          " %x3 %1 The following attributes do not have documentation:"
+          (list (strconc "(" (princ-to-string litcnt) ")")))
+         (setq litcnt (1+ litcnt))
+                            (DO ((G166491 attributes
+                                     (CDR G166491))
+                                 (x NIL))
+                                ((OR (ATOM G166491)
+                                     (PROGN
+                                       (SETQ x (CAR G166491))
+                                       NIL))
+                                 NIL)
+                              (SEQ (EXIT
+                                    (PROGN
+                                      (setq a (|form2String| x))
+                                      (|sayMSG|
+                                       (COND
+                                         ((ATOM a)
+                                          (CONS '|%x9| (CONS a NIL)))
+                                         ('T (CONS '|%x9| a))))))))))
+        (when unusedCommentLineNumbers
+         (|sayKeyedMsg| 
+          " %1 The constructor %2 has incorrectly placed documentation."
+          (list (strconc (princ-to-string bigcnt) ".") name))
+         (loop for item in unusedCommentLineNumbers
+          do
+           (setq r (second item))
+           (|sayMSG| (cons "   " (append (|bright| n) (list "   " r)))))))))
+  (hn
+   (loop for item in docList
+    collect (append (fn (car item) |$e|) (cdr item)))))))
+
+(defun |finalizeLisplib| (libName)
+ (let (|$pairlis| |$NRTslot1PredicateList| kind opsAndAtts)
+ (declare (special |$pairlis| |$NRTslot1PredicateList| |$spadLibFT|
+                   |$lisplibForm| |$profileCompiler| |$libFile|
+                   |$lisplibSlot1| |$lisplibAncestors| |$lisplibParents|
+                   |$lisplibAbbreviation| |$lisplibPredicates|
+                   |$lisplibAttributes| |$lisplibVariableAlist|
+                   |$lisplibSignatureAlist| |$lisplibSuperDomain|
+                   |$FormalMapVariableList| |$lisplibModemap|
+                   |$lisplibModemapAlist| /editfile |$lisplibCategory|
+                   |$lisplibKind| errors))
+  (|lisplibWrite| "constructorForm"
+    (|removeZeroOne| |$lisplibForm|) |$libFile|)
+  (|lisplibWrite| "constructorKind"
+    (setq kind (|removeZeroOne| |$lisplibKind|)) |$libFile|)
+  (|lisplibWrite| "constructorModemap"
+    (|removeZeroOne| |$lisplibModemap|) |$libFile|)
+  (setq |$lisplibCategory| (or |$lisplibCategory| (cadar |$lisplibModemap|)))
+  (|lisplibWrite| "constructorCategory" |$lisplibCategory| |$libFile|)
+  (|lisplibWrite| "sourceFile" (|namestring| /editfile) |$libFile|)
+  (|lisplibWrite| "modemaps"
+    (|removeZeroOne| |$lisplibModemapAlist|) |$libFile|)
+  (setq opsAndAtts
+    (|getConstructorOpsAndAtts| |$lisplibForm| kind |$lisplibModemap|))
+  (|lisplibWrite| "operationAlist"
+    (|removeZeroOne| (car opsAndAtts)) |$libFile|)
+  (when (eq kind '|category|)
+    (setq |$pairlis|
+      (loop for a in (rest |$lisplibForm|)
+            for v in |$FormalMapVariableList|
+        collect (cons a v)))
+    (setq |$NRTslot1PredicateList| nil)
+    (|NRTgenInitialAttributeAlist| (cdr opsAndAtts)))
+  (|lisplibWrite| "superDomain"
+    (|removeZeroOne| |$lisplibSuperDomain|) |$libFile|)
+  (|lisplibWrite| "signaturesAndLocals"
+    (|removeZeroOne|
+     (|mergeSignatureAndLocalVarAlists| |$lisplibSignatureAlist|
+                                        |$lisplibVariableAlist|))
+        |$libFile|)
+  (|lisplibWrite| "attributes"
+    (|removeZeroOne| |$lisplibAttributes|) |$libFile|)
+  (|lisplibWrite| "predicates"
+    (|removeZeroOne| |$lisplibPredicates|) |$libFile|)
+  (|lisplibWrite| "abbreviation" |$lisplibAbbreviation| |$libFile|)
+  (|lisplibWrite| "parents" (|removeZeroOne| |$lisplibParents|) |$libFile|)
+  (|lisplibWrite| "ancestors" (|removeZeroOne| |$lisplibAncestors|) |$libFile|)
+  (|lisplibWrite| "documentation" (|finalizeDocumentation|) |$libFile|)
+  (|lisplibWrite| "slot1Info" (|removeZeroOne| |$lisplibSlot1|) |$libFile|)
+  (when |$profileCompiler| (|profileWrite|))
+  (when (and |$lisplibForm| (null (cdr |$lisplibForm|)))
+    (setf (get (car |$lisplibForm|) 'niladic) t))
+  (unless (eql errors 0)
+    (|sayMSG| (list "   Errors in processing " kind " " libName ":"))
+    (|sayMSG| (list "     not replacing " |$spadLibFT| " for" libName)))))
+
+(defun fincomblock (num oldnums oldlocs ncblock linelist)
+ (declare (special $EchoLineStack $comblocklist))
+ (push
+  (cond 
+   ((eql (car ncblock) 0) (cons (1- num) (reverse (cdr ncblock))))
+    ;; comment for constructor itself paired with 1st line -1
+   (t
+    (when $EchoLineStack
+     (setq num (pop $EchoLineStack))
+     (preparse-echo linelist)
+     (setq $EchoLineStack (list num)))
+    (cons            ;; scan backwards for line to left of current
+     (do ((onums oldnums (cdr onums))
+          (olocs oldlocs (cdr olocs))
+          (sloc (car ncblock)))
+         ((null onums) nil)
+       (when (and (numberp (car olocs)) (<= (car olocs) sloc))
+         (return (car onums))))
+     (reverse (cdr ncblock)))))
+   $comblocklist))
+
+(defun |firstNonBlankPosition| (&rest therest)
+ (let ((x (car therest)) (options (cdr therest)) start k)
+  (setq start (or (ifcar options) 0))
+  (setq k -1)
+  (loop for i from start to (maxindex x)
+   do (when (not (eql (elt x i) #\space)) (return (setq k i))))
+  k))
+
+(defun |fixUpPredicate| (predClause domainPreds partial sig)
+ (let (predicate fn skip predicates tmp1 dependList pred)
+  (setq predicate (car predClause))
+  (setq fn (cadr predClause))
+  (setq skip (cddr predClause))
+  (cond
+   ((eq (car predicate) 'and)
+     (setq predicates (append domainPreds (cdr predicate))))
+   ((not (equal predicate (mkq t)))
+     (setq predicates (cons predicate domainPreds)))
+   (t
+     (setq predicates (or domainPreds (list predicate)))))
+  (cond
+   ((> (|#| predicates) 1)
+     (setq pred (cons 'and predicates))
+     (setq tmp1 (|orderPredicateItems| pred sig skip))
+     (setq pred (car tmp1))
+     (setq dependlist (cdr tmp1))
+     tmp1)
+   (t
+     (setq pred (|orderPredicateItems| (car predicates) sig skip))
+     (setq dependList
+      (when (and (consp pred) (eq (qfirst pred) '|isDomain|)
+                (consp (qrest pred)) (consp (qcddr pred))
+                (eq (qcdddr pred) nil)
+                (consp (qthird pred)) 
+                (eq (qcdaddr pred) nil))
+       (list (second pred))))))
+  (setq pred (|moveORsOutside| pred))
+  (when partial (setq pred (cons '|partial| pred)))
+  (cons (cons pred (cons fn skip)) dependList)))
+
+(defun floatexpid (x &aux s)
+ (when (and (identp x) (char= (char-upcase (elt (setq s (pname x)) 0)) #\E)
+            (> (length s) 1)
+            (spadreduce and 0 (collect (step i 1 1 (maxindex s))
+                                       (digitp (elt s i)))))
+   (read-from-string s t nil :start 1)))
+
+(defun |formal2Pattern| (x)
+ (declare (special |$PatternVariableList|))
+ (sublis (pairList |$FormalMapVariableList| (cdr |$PatternVariableList|)) x))
+
+(defun freelist (u bound free e)
+ (let (v op)
+  (if (atom u)
+   (cond
+    ((null (identp u)) free)
+    ((member u bound) free)
+    ; more than 1 free becomes alist (name . number)
+    ((setq v (assq u free)) (rplacd v (+ 1 (cdr v))) free)
+    ((null (|getmode| u e)) free)
+    (t (cons (cons u 1) free)))
+   (progn
+    (setq op (car u))
+    (cond
+     ((member op '(quote go function)) free)
+     ((eq op 'lambda) ; lambdas bind symbols
+      (setq bound (unionq bound (second u)))
+      (dolist (v (cddr u))
+       (setq free (freelist v bound free e))))
+     ((eq op 'prog) ; progs bind symbols
+      (setq bound (unionq bound (second u)))
+      (dolist (v (cddr u))
+       (unless (atom v)
+        (setq free (freelist v bound free e)))))
+     ((eq op 'seq)
+      (dolist (v (cdr u))
+       (unless (atom v)
+        (setq free (freelist v bound free e)))))
+     ((eq op 'cond)
+      (dolist (v (cdr u))
+       (dolist (vv v)
+        (setq free (freelist vv bound free e)))))
+     (t
+      (when (atom op) (setq u (cdr u))) ; atomic functions aren't descended
+      (dolist (v u)
+       (setq free (freelist v bound free e)))))
+    free))))
+
+
+(defun get-a-line (stream)
+ (when (is-console stream) (princ (mkprompt)))
+ (let ((ll (read-a-line stream)))
+  (if (and (stringp ll) (adjustable-array-p ll))
+   (make-array (array-dimensions ll) :element-type 'string-char
+                  :adjustable t :initial-contents ll)
+   ll)))
+
+(defun |getAbbreviation| (name c)
+ (let (cname x n upc newAbbreviation)
+ (declare (special |$abbreviationTable|))
+  (setq cname (|constructor?| name))
+  (cond
+   ((setq x (assq cname |$abbreviationTable|))
+    (cond
+     ((setq n (assq name (cdr x)))
+      (cond
+       ((setq upc (assq c (cdr n)))
+        (cdr upc))
+       (t
+        (setq newAbbreviation (|mkAbbrev| x cname))
+        (rplac (cdr n) (cons (cons c newAbbreviation) (cdr n)))
+        newAbbreviation)))
+     (t
+      (setq newAbbreviation (|mkAbbrev| x x))
+      (rplac (cdr x)
+             (cons (cons name (list (cons c newAbbreviation))) (cdr x)))
+      newAbbreviation)))
+   (t
+    (setq |$abbreviationTable|
+     (cons (list cname (list name (cons c cname))) |$abbreviationTable|))
+    cname))))
+
+(defun |getArgumentMode| (x e)
+  (if (stringp x) x (|get| x '|mode| e)))
+
+(defun |getArgumentModeOrMoan| (x form env)
+ (or (|getArgumentMode| x env)
+     (|stackSemanticError|
+        (list '|argument | x '| of | form '| is not declared|) nil)))
+
+(defun |getCaps| (x)
+ (let (s c clist tmp1)
+  (setq s (princ-to-string x))
+  (setq clist
+   (loop for i from 0 to (maxindex s) 
+    when (upper-case-p (setq c (elt s i)))
+    collect c))
+  (cond
+   ((null clist) "_")
+   (t
+    (setq tmp1
+     (cons (first clist) (loop for u in (rest clist) collect (downcase u))))
+    (let ((result ""))
+     (loop for u in tmp1
+      do (setq result (strconc result u)))
+     result)))))
+
+(defun |getCategoryOpsAndAtts| (catForm)
+ (cons (|transformOperationAlist| (|getSlotFromCategoryForm| catForm 1))
+       (|getSlotFromCategoryForm| catForm 2)))
+
+(defun |getConstructorExports| (&rest arg)
+ (let (options conform)
+  (setq conform (car arg))
+  (setq options (cdr arg))
+  (|categoryParts| conform
+   (getdatabase (|opOf| conform) 'constructorcategory)
+    (ifcar options))))
+
+(defun |getConstructorOpsAndAtts| (form kind modemap)
+ (if (eq kind '|category|)
+  (|getCategoryOpsAndAtts| form)
+  (|getFunctorOpsAndAtts| form modemap)))
+
+(defun |getDomainsInScope| (env)
+  (declare (special |$CapsuleDomainsInScope| |$insideCapsuleFunctionIfTrue|))
+  (if |$insideCapsuleFunctionIfTrue|
+     |$CapsuleDomainsInScope|
+     (|get| '|$DomainsInScope| 'special env)))
+
+(defun |getFormModemaps| (form env)
+ (let (op argl domain op1 modemapList nargs finalModemapList)
+ (declare (special |$insideCategoryPackageIfTrue|))
+  (setq op (car form))
+  (setq argl (cdr form))
+  (cond
+   ((and (consp op) (eq (qfirst op) '|elt|) (CONSP (qrest op))
+         (consp (qcddr op)) (eq (qcdddr op) nil))
+     (setq op1 (third op))
+     (setq domain (second op))
+     (loop for x in (|getFormModemaps| (cons op1 argl) env)
+      when (and (consp x) (consp (qfirst x)) (equal (qcaar x) domain))
+      collect x))
+   ((null (atom op)) nil)
+   (t
+    (setq modemapList (|get| op '|modemap| env))
+    (when |$insideCategoryPackageIfTrue|
+     (setq modemapList
+      (loop for x in modemapList
+       when (and (consp x) (consp (qfirst x)) (not (eq (qcaar x) '$)))
+       collect x)))))
+  (cond
+   ((eq op '|elt|)
+    (setq modemapList (|eltModemapFilter| (|last| argl) modemapList env)))
+   ((eq op '|setelt|)
+    (setq modemapList (|seteltModemapFilter| (CADR argl) modemapList env))))
+   (setq nargs (|#| argl))
+   (setq finalModemapList
+    (loop for mm in modemapList
+     when (equal (|#| (cddar mm)) nargs)
+     collect mm))
+ (when (and modemapList (null finalModemapList))
+  (|stackMessage|
+   (list '|no modemap for| op '|with | nargs '| arguments|)))
+  finalModemapList))
+
+(defun |getFunctorOpsAndAtts| (form modemap)
+ (cons (|transformOperationAlist| (|getSlotFromFunctor| form 1 modemap))
+       (|getSlotFromFunctor| form 2 modemap)))
+
+(defun |getInverseEnvironment| (a env)
+ (let (op argl x m oldpred tmp1 zz newpred)
+ (declare (special |$EmptyEnvironment|))
+  (cond
+   ((atom a) env)
+   (t 
+    (setq op (car a))
+    (setq argl (cdr a))
+    (cond
+     ((eq op '|has|) 
+       (setq x (car argl))
+       (setq m (cadr argl))
+       (cond
+        ((and (identp x) (|isDomainForm| m |$EmptyEnvironment|))
+           (|put| x '|specialCase| m env))
+        (t env)))
+     ((and (consp a) (eq (qfirst a) '|case|) (consp (qrest a))
+           (consp (qcddr a)) (eq (qcdddr a) nil)
+           (identp (qsecond a)))
+       (setq x (qsecond a))
+       (setq m (qthird a))
+       (setq tmp1 (|get| x '|condition| env))
+       (cond
+        ((and tmp1 (consp tmp1) (eq (qrest tmp1) nil) (consp (qfirst tmp1))
+              (eq (qcaar tmp1) 'or) (|member| a (qcdar tmp1)))
+          (setq oldpred (qcdar tmp1))
+          (|put| x '|condition| (list (mkpf (|delete| a oldpred) 'or)) env))
+        (t
+         (setq tmp1 (|getUnionMode| x env))
+         (setq zz (|delete| m (qrest tmp1)))
+         (loop for u in zz
+          when (and (consp u) (eq (qfirst u) '|:|)
+                    (consp (qrest u)) (equal (qsecond u) m))
+          do (setq zz (|delete| u zz)))
+         (setq newpred 
+          (mkpf (loop for mp in zz collect (list '|case| x mp)) 'or))
+         (|put| x '|condition|
+                   (cons newpred (|get| x '|condition| env)) env))))
+     (t env))))))
+
+(defun |getMatchingRightPren| (u j open close)
+ (let (m c found count)
+  (setq count 0)
+  (setq m (maxindex u))
+  (loop for i from j to m
+   do
+    (setq c (elt u i))
+    (cond
+     ((equal c close)
+      (if (eql count 0) 
+       (return (setq found i))
+       (setq count (1- count))))
+     ((equal c open)
+       (setq count (1+ count)))))
+  found))
+
+(defun |getModemap| (x env)
+ (let (u)
+  (dolist (modemap (|get| (first x) '|modemap| env))
+   (when (setq u (|compApplyModemap| x modemap env nil))
+     (return (sublis (third u) modemap))))))
+
+(defun |getModemapList| (op numOfArgs env)
+ (let (result)
+  (cond
+   ((and (consp op) (eq (qfirst op) '|elt|) (consp (qrest op))
+         (consp (qcddr op)) (eq (qcdddr op) nil))
+     (|getModemapListFromDomain| (third op) numOfArgs (second op) env))
+  (t
+   (dolist (term (|get| op '|modemap| env) (nreverse0 result))
+     (when (eql numOfArgs (|#| (cddar term))) (push term result)))))))
+
+(defun |getModemapListFromDomain| (op numOfArgs d env)
+ (loop for term in (|get| op '|modemap| env) 
+       when (and (equal (caar term) d) (eql (|#| (cddar term)) numOfArgs))
+       collect term))
+ 
+(defun |getOperationAlist| (name functorForm form)
+ (let (u tt)
+ (declare (special |$e| |$domainShell| |$insideFunctorIfTrue| |$functorForm|))
+  (when (and (atom name) (getdatabase name 'niladic))
+    (setq functorform (list functorForm)))
+  (cond
+   ((and (setq u (|isFunctor| functorForm))
+         (null (and |$insideFunctorIfTrue|
+                    (equal (first functorForm) (first |$functorForm|)))))
+    u)
+   ((and |$insideFunctorIfTrue| (eq name '$))
+    (if |$domainShell|
+     (elt |$domainShell| 1)
+     (|systemError| "$ has no shell now")))
+   ((setq tt (|compMakeCategoryObject| form |$e|))
+    (setq |$e| (third tt))
+    (elt (first tt) 1))
+   (t
+    (|stackMessage| (list '|not a category form: | form))))))
+
+(defun getScriptName (op a numberOfFunctionalArgs)
+ (when (null (identp op))
+   (postError (list "   " op " cannot have scripts" )))
+ (internl '* (princ-to-string numberOfFunctionalArgs)
+             (decodeScripts a) (pname op)))
+
+(defun |getSignature| (op argModeList |$e|)
+ (declare (special |$e|))
+ (let (mmList pred u tmp1 dc sig sigl)
+  (setq mmList (|get| op '|modemap| |$e|))
+  (cond
+   ((eql 1 
+     (|#| (setq sigl (remdup
+       (loop for item in mmList
+        do
+         (setq dc (caar item))
+         (setq sig (cdar item))
+         (setq pred (caadr item))
+        when (and (eq dc '$) (equal (cdr sig) argModeList) (|knownInfo| pred))
+        collect sig)))))
+     (car sigl))
+   ((null sigl)
+     (cond
+      ((progn
+        (setq tmp1 (setq u (|getmode| op |$e|)))
+        (and (consp tmp1) (eq (qfirst tmp1) '|Mapping|)))
+       (qrest tmp1))
+      (t
+       (say "************* USER ERROR **********")
+       (say "available signatures for " op ": ")
+       (cond
+        ((null mmList) (say "    NONE"))
+        (t
+         (loop for item in mmList
+          do (|printSignature| '|     | op (cdar item)))
+         (|printSignature| '|NEED | op (cons '? argModeList))))
+       nil)))
+   (t
+    ; Before we complain about duplicate signatures, we should
+    ;  check that we do not have for example, a partial - as
+    ;  well as a total one.  SourceLevelSubsume should do this
+    (loop for u in sigl do
+     (loop for v in sigl 
+      when (null (equal u v))
+      do (when (|SourceLevelSubsume| u v) (setq sigl (|delete| v sigl)))))
+    (cond
+     ((eql 1 (|#| sigl)) (car sigl))
+     (t
+      (|stackSemanticError|
+       (list '|duplicate signatures for | op '|: | argModeList) nil)))))))
+
+(defun |getSignatureFromMode| (form env)
+ (let (tmp1 signature)
+ (declare (special |$FormalMapVariableList|))
+  (setq tmp1 (|getmode| (|opOf| form) env))
+  (when (and (consp tmp1) (eq (qfirst tmp1) '|Mapping|))
+   (setq signature (qrest tmp1))
+   (if (not (eql (|#| form) (|#| signature)))
+     (|stackAndThrow| (list '|Wrong number of arguments: | form))
+     (eqsubstlist (cdr form)
+       (take (|#| (cdr form)) |$FormalMapVariableList|)
+       signature)))))
+
+(defun |getSlotFromCategoryForm| (opargs index)
+ (let (op argl u)
+ (declare (special |$FormalMapVariableList|))
+  (setq op (first opargs))
+  (setq argl (rest opargs))
+  (setq u 
+   (|eval| (cons op (mapcar 'mkq (take (|#| argl) |$FormalMapVariableList|)))))
+  (if (null (vecp u))
+    (|systemErrorHere| "getSlotFromCategoryForm")
+    (elt u index))))
+
+(defun |getSlotFromFunctor| (arg1 slot arg2)
+ (declare (ignore arg1))
+ (let (tt)
+ (declare (special |$e| |$lisplibOperationAlist|))
+  (cond
+   ((eql slot 1) |$lisplibOperationAlist|)
+   (t
+    (setq tt (or (|compMakeCategoryObject| (cadar arg2) |$e|)
+                 (|systemErrorHere| "getSlotFromFunctor")))
+    (elt (car tt) slot)))))
+
+(defun |getSpecialCaseAssoc| ()
+ (declare (special |$functorSpecialCases| |$functorForm|))
+  (loop for r in (rest |$functorForm|)
+        for z in (rest |$functorSpecialCases|)
+   when z
+   collect (cons r z)))
+
+(defun |getSuccessEnvironment| (a env)
+ (let (id currentProplist tt newProplist x m)
+  (declare (special |$EmptyMode| |$EmptyEnvironment|))
+   (cond
+    ((and (consp a) (eq (qfirst a) '|has|) (CONSP (qrest a))
+          (consp (qcddr a)) (eq (qcdddr a) nil))
+     (if
+      (and (identp (second a)) (|isDomainForm| (third a) |$EmptyEnvironment|))
+        (|put| (second a) '|specialCase| (third a) env)
+        env))
+    ((and (consp a) (eq (qfirst a) '|is|) (consp (qrest a))
+          (consp (qcddr a)) (eq (qcdddr a) nil))
+       (setq id (qsecond a))
+       (setq m (qthird a))
+       (cond
+         ((and (identp id) (|isDomainForm| m |$EmptyEnvironment|))
+          (setq env (|put| id '|specialCase| m env))
+          (setq currentProplist (|getProplist| id env))
+          (setq tt (|comp| m |$EmptyMode| env))
+          (when tt
+           (setq env (caddr tt))
+           (setq newProplist
+             (|consProplistOf| id currentProplist '|value|
+                         (cons m (cdr (|removeEnv| tt)))))
+             (|addBinding| id newProplist env)))
+         (t env)))
+    ((and (consp a) (eq (qfirst a) '|case|) (consp (qrest a))
+          (consp (qcddr a)) (eq (qcdddr a) nil)
+          (identp (qsecond a)))
+      (setq x (qsecond a))
+      (setq m (qthird a))
+      (|put| x '|condition| (cons a (|get| x '|condition| env)) env))
+    (t env))))
+
+(defun |getTargetFromRhs| (lhs rhs env)
+ (declare (special |$EmptyMode|))
+  (cond
+   ((and (consp rhs) (eq (qfirst rhs) 'capsule))
+     (|stackSemanticError|
+      (list "target category of " lhs
+            " cannot be determined from definition")
+     nil))
+   ((and (consp rhs) (eq (qfirst rhs) '|SubDomain|) (consp (qrest rhs)))
+    (|getTargetFromRhs| lhs (second rhs) env))
+   ((and (consp rhs) (eq (qfirst rhs) '|add|)
+         (consp (qrest rhs)) (consp (qcddr rhs))
+         (eq (qcdddr rhs) nil)
+         (consp (qthird rhs))
+         (eq (qcaaddr rhs) 'capsule))
+     (|getTargetFromRhs| lhs (second rhs) env))
+   ((and (consp rhs) (eq (qfirst rhs) '|Record|))
+     (cons '|RecordCategory| (rest rhs)))
+   ((and (consp rhs) (eq (qfirst rhs) '|Union|))
+     (cons '|UnionCategory| (rest rhs)))
+   ((and (consp rhs) (eq (qfirst rhs) '|List|))
+     (cons '|ListCategory| (rest rhs)))
+   ((and (consp rhs) (eq (qfirst rhs) '|Vector|))
+     (cons '|VectorCategory| (rest rhs)))
+   (t 
+     (second (|compOrCroak| rhs |$EmptyMode| env)))))
+
+(defun get-token (token)
+ (funcall XTokenReader token))
+
+(defun |getToken| (x)
+ (if (eqcar x '|elt|) (third x) x))
+
+(defun |getUnionMode| (x env)
+ (let (m)
+  (setq m (when (atom x) (|getmode| x env)))
+  (when m (|isUnionMode| m env))))
+
+(defun |getUniqueModemap| (op numOfArgs env)
+ (let (mml)
+  (cond
+   ((eql 1 (|#| (setq mml (|getModemapList| op numOfArgs env))))
+     (car mml))
+   ((qslessp 1 (|#| mml))
+     (|stackWarning|
+       (list numOfArgs " argument form of: " op " has more than one modemap"))
+     (car mml))
+   (t nil))))
+
+(defun |getUniqueSignature| (form env)
+  (cdar (|getUniqueModemap| (first form) (|#| (rest form)) env)))
+
+(defun |genDomainOps| (viewName dom cat)
+ (let (siglist oplist cd i)
+ (declare (special |$e| |$ConditionalOperators| |$getDomainCode|))
+  (setq oplist (|getOperationAlist| dom dom cat))
+  (setq siglist (loop for lst in oplist collect (first lst)))
+  (setq oplist (|substNames| dom viewName dom oplist))
+  (setq cd
+   (list 'let viewName
+    (list '|mkOpVec| dom 
+     (cons 'list
+      (loop for opsig in siglist 
+       collect
+        (list 'list (mkq (first opsig)) 
+         (cons 'list 
+          (loop for mode in (rest opsig)
+           collect (|mkDomainConstructor| mode)))))))))
+  (setq |$getDomainCode| (cons cd |$getDomainCode|))
+  (setq i 0)
+  (loop for item in oplist do
+   (if (|member| (first item) |$ConditionalOperators|)
+    (setq |$e| (|addModemap| (caar item) dom (cadar item) nil
+                (list 'elt viewName (incf i)) |$e|))
+    (setq |$e| (|addModemap| (caar item) dom (cadar item) (second item)
+                (list 'elt viewName (incf i)) |$e|))))
+  viewName))
+
+(defun |genDomainViewList0| (id catlist)
+ (|genDomainViewList| id catlist t))
+
+(defun |genDomainViewList| (id catlist firsttime)
+ (declare (special |$EmptyEnvironment|) (ignore firsttime))
+  (cond
+   ((null catlist) nil)
+   ((and (consp catlist) (eq (qrest catlist) nil)
+         (null (|isCategoryForm| (first catlist) |$EmptyEnvironment|)))
+      nil)
+   (t
+    (cons
+     (|genDomainView| id (first catlist) '|getDomainView|)
+     (|genDomainViewList| id (rest catlist) nil)))))
+
+(defun |genDomainView| (name c viewSelector)
+ (let (code cd)
+ (declare (special |$getDomainCode| |$e|))
+ (cond
+  ((and (consp c) (eq (qfirst c) 'category) (consp (qrest c)))
+    (|genDomainOps| name name c))
+   (t
+    (setq code
+     (if (and (consp c) (eq (qfirst c) '|SubsetCategory|)
+              (consp (qrest c)) (consp (qcddr c))
+              (eq (qcdddr c) nil))
+       (second c)
+       c))
+    (setq |$e| (|augModemapsFromCategory| name nil c |$e|))
+    (setq cd
+     (list 'let name (list viewSelector name (|mkDomainConstructor| code))))
+    (unless (|member| cd |$getDomainCode|)
+      (setq |$getDomainCode| (cons cd |$getDomainCode|)))
+    name))))
+
+(defun |giveFormalParametersValues| (argl env)
+ (dolist (x argl)
+  (setq env
+   (|put| x '|value| 
+      (list (|genSomeVariable|) (|get| x '|mode| env) nil) env)))
+ env)
+
+
+(defun hackforis (l) (mapcar #'hackforis1 L))
+
+(defun hackforis1 (x)
+ (if (and (member (ifcar x) '(in on)) (eqcar (second x) 'is))
+  (cons (first x) (cons (cons 'setq (cdadr x)) (cddr x)))
+  x))
+
+(defun hasAplExtension (argl)
+ (let (tmp2 tmp3 y z g arglAssoc u)
+  (when
+   (dolist (x argl tmp2)
+      (setq tmp2 (or tmp2 (and (consp x) (eq (qfirst x) '!)))))
+    (setq u
+     (dolist (x argl (nreverse0 tmp3))
+      (push
+        (if (and (consp x) (eq (qfirst x) '!)
+                 (consp (qrest x)) (eq (qcddr x) nil))
+         (progn
+           (setq y (qsecond x))
+           (setq z (deepestExpression y))
+           (setq arglAssoc
+            (cons (cons (setq g (genvar)) (aplTran1 z)) arglAssoc))
+           (subst g z y :test #'equal))
+          x)
+         tmp3)))
+    (cons arglAssoc u))))
+
+(defun |hasFormalMapVariable| (x vl)
+ (let (|$formalMapVariables|)
+ (declare (special |$formalMapVariables|))
+ (when (setq |$formalMapVariables| vl)
+  (|ScanOrPairVec| #'(lambda (y) (member y |$formalMapVariables|)) x))))
+
+(defun |hasFullSignature| (argl signature env)
+ (let (target ml u)
+  (setq target (first signature))
+  (setq ml (rest signature))
+  (when target
+   (setq u
+     (loop for x in argl for m in ml 
+      collect (or m (|get| x '|mode| env) (return 'failed))))
+   (unless (eq u 'failed) (cons target u)))))
+
+(defun |hasNoVowels| (x)
+ (labels (
+  (isVowel (c)
+   (or (eq c #\a) (eq c #\e) (eq c #\i) (eq c #\o) (eq c #\u)
+       (eq c #\A) (eq c #\E) (eq c #\I) (eq c #\O) (eq c #\U))))
+ (let (max)
+  (setq max (maxindex x))
+  (cond
+   ((char= (elt x max) #\y) nil)
+   (t
+    (let ((result t))
+     (loop for i from 0 to max
+      do (setq result (and result (null (isVowel (elt x i))))))
+     result))))))
+
+(defun |hasSigInTargetCategory| (argl form opsig env)
+ (labels (
+  (fn (opName sig opsig mList form)
+   (declare (special |$op|))
+    (and
+     (and
+      (and (equal opName |$op|) (equal (|#| sig) (|#| form)))
+      (or (null opsig) (equal opsig (car sig))))
+     (let ((result t))
+      (loop for x in mList for y in (rest sig) 
+       do (setq result (and result (or (null x) (|modeEqual| x y)))))
+      result))))
+ (let (mList potentialSigList c sig)
+ (declare (special |$domainShell|))
+  (setq mList
+   (loop for x in argl
+    collect (|getArgumentMode| x env)))
+  (setq potentialSigList
+   (remdup
+    (loop for item in (elt |$domainShell| 1)
+     when (fn (caar item) (cadar item) opsig mList form)
+     collect (cadar item))))
+  (setq c (|#| potentialSigList))
+  (cond
+   ((eql 1 c) (car potentialSigList))
+   ((eql 0 c)
+    (when (equal (|#| (setq sig (|getSignatureFromMode| form env))) (|#| form))
+      sig))
+   ((> c 1)
+    (setq sig (car potentialSigList))
+    (|stackWarning|
+     (cons '|signature of lhs not unique:|
+      (append (|bright| sig) (list '|chosen|))))
+    sig)
+   (t nil)))))
+
+(defun |hasType| (x e)
+ (labels (
+  (fn (x)
+   (cond
+    ((null x) nil)
+    ((and (consp x) (consp (qfirst x)) (eq (qcaar x) '|case|)
+          (consp (qcdar x)) (consp (qcddar x))
+          (eq (qcdddar x) nil))
+       (qcaddar x))
+    (t (fn (cdr x))))))
+  (fn (|get| x '|condition| e))))
+
+(defun |htcharPosition| (char line i)
+ (let (m k)
+  (setq m (|#| line))
+  (setq k (|charPosition| char line i))
+  (cond
+   ((eql k m) k)
+   ((> k 0)
+    (if (not (eql (elt line (1- k)) #\\))
+     k
+     (|htcharPosition| char line (1+ k))))
+   (t 0))))
+
+
+(defun indent-pos (str)
+  (do ((i 0 (1+ i)) (pos 0))
+      ((>= i (length str)) nil)
+   (case (char str i)
+    (#\space (incf pos))
+    (#\tab (setq pos (next-tab-loc pos)))
+    (otherwise (return pos)))))
+
+(defun infixtok (s)
+ (member (string2id-n s 1) '(|then| |else|) :test #'eq))
+
+(defun initialize-preparse (strm)
+  (setq $index 0)
+  (setq $linelist nil)
+  (setq $echolinestack nil)
+  (setq $preparse-last-line (get-a-line strm)))
+
+(defun initial-substring (pattern line)
+   (let ((ind (mismatch pattern line)))
+     (or (null ind) (eql ind (size pattern)))))
+
+(defun initial-substring-p (part whole)
+  "Returns length of part if part matches initial segment of whole."
+  (let ((x (string-not-greaterp part whole)))
+    (and x (= x (length part)) x)))
+
+(defun |initializeLisplib| (libName)
+  (declare (special $erase |$libFile| |$lisplibForm|
+                    |$lisplibModemap| |$lisplibKind| |$lisplibModemapAlist|
+                    |$lisplibAbbreviation| |$lisplibAncestors|
+                    |$lisplibOpAlist| |$lisplibOperationAlist|
+                    |$lisplibSuperDomain| |$lisplibVariableAlist| errors
+                    |$lisplibSignatureAlist| /editfile /major-version errors))
+   ($erase libName 'errorlib 'a)
+   (setq errors 0)
+   (setq |$libFile| (|writeLib1| libname 'errorlib 'a))
+   (addoptions 'file |$libFile|)
+   (setq |$lisplibForm| nil)
+   (setq |$lisplibModemap| nil)
+   (setq |$lisplibKind| nil)
+   (setq |$lisplibModemapAlist| nil)
+   (setq |$lisplibAbbreviation| nil)
+   (setq |$lisplibAncestors| nil)
+   (setq |$lisplibOpAlist| nil)
+   (setq |$lisplibOperationAlist| nil)
+   (setq |$lisplibSuperDomain| nil)
+   (setq |$lisplibVariableAlist| nil)
+   (setq |$lisplibSignatureAlist| nil)
+   (when (eq (|pathnameTypeId| /editfile) 'spad)
+     (|LAM,FILEACTQ| 'version (list '/versioncheck /major-version))))
+
+(defun |insertModemap| (new mmList)
+ (if (null mmList) (list new) (cons new mmList)))
+
+(defun |interactiveModemapForm| (mm)
+ (labels (
+  (fn (x)
+    (if (and (consp x) (consp (qrest x))
+             (consp (qcddr x)) (eq (qcdddr x) nil)
+             (not (eq (qfirst x) '|isFreeFunction|))
+             (atom (qthird x)))
+     (list (first x) (second x) (list (third x)))
+     x)))
+ (let (pattern dc sig mmpat patternAlist partial patvars
+       domainPredicateList tmp1 pred dependList cond)
+ (declare (special |$PatternVariableList| |$FormalMapVariableList|))
+  (setq mm 
+   (|replaceVars| (copy mm) |$PatternVariableList| |$FormalMapVariableList|))
+  (setq pattern (car mm))
+  (setq dc (caar mm))
+  (setq sig (cdar mm))
+  (setq pred (cadr mm))
+  (setq pred
+   (prog ()
+    (return
+     (do ((x pred (cdr x)) (result nil))
+         ((atom x) (nreverse0 result))
+       (setq result (cons (fn (car x)) result))))))
+  (setq tmp1 (|modemapPattern| pattern sig))
+  (setq mmpat (car tmp1))
+  (setq patternAlist (cadr tmp1))
+  (setq partial (caddr tmp1))
+  (setq patvars (cadddr tmp1))
+  (setq tmp1 (|substVars| pred patternAlist patvars))
+  (setq pred (car tmp1))
+  (setq domainPredicateList (cadr tmp1))
+  (setq tmp1 (|fixUpPredicate| pred domainPredicateList partial (cdr mmpat)))
+  (setq pred (car tmp1))
+  (setq dependList (cdr tmp1))
+  (setq cond (car pred))
+  (list mmpat cond))))
+
+(defun |isCategoryPackageName| (nam)
+ (let (p)
+  (setq p (pname (|opOf| nam)))
+  (equal (elt p (maxindex p)) #\&)))
+
+(defun is-console (stream)
+  (and (streamp stream) (output-stream-p stream)
+       (eq (system:fp-output-stream stream)
+           (system:fp-output-stream *terminal-io*))))
+
+(defun |isDomainConstructorForm| (d env)
+ (let (u)
+ (declare (special |$FormalMapVariableList|))
+  (when
+   (and (consp d)
+        (setq u (|get| (qfirst d) '|value| env))
+        (consp u)
+        (consp (qrest u))
+        (consp (qsecond u))
+        (eq (qcaadr u) '|Mapping|)
+        (consp (qcdadr u)))
+    (|isCategoryForm| 
+     (eqsubstlist (rest d) |$FormalMapVariableList| (cadadr u)) env))))
+
+(defun |isDomainForm| (d env)
+ (let (tmp1)
+ (declare (special |$SpecialDomainNames|))
+  (or (member (ifcar d) |$SpecialDomainNames|) (|isFunctor| d)
+      (and (progn
+            (setq tmp1 (|getmode| d env))
+            (and (consp tmp1) (eq (qfirst tmp1) '|Mapping|) (consp (qrest tmp1))))
+           (|isCategoryForm| (qsecond tmp1) env))
+    (|isCategoryForm| (|getmode| d env) env)
+    (|isDomainConstructorForm| d env))))
+
+(defun |isDomainSubst| (u)
+ (labels (
+  (findSub (x alist)
+  (cond
+   ((null alist) nil)
+   ((and (consp alist) (consp (qfirst alist))
+         (eq (qcaar alist) '|isDomain|)
+         (consp (qcdar alist))
+         (consp (qcddar alist))
+         (eq (qcdddar alist) nil)
+         (equal x (cadar alist)))
+         (caddar alist))
+    (t (findSub x (cdr alist)))))
+  (fn (x alist)
+   (let (s)
+    (declare (special |$PatternVariableList|))
+    (if (atom x)
+     (if 
+      (and (identp x)
+           (member x |$PatternVariableList|)
+           (setq s (findSub x alist)))
+         s
+         x)
+     (cons (car x)
+      (loop for y in (cdr x)
+       collect (fn y alist)))))))
+ (let (head tail nhead)
+  (if (consp u)
+   (progn
+    (setq head (qfirst u))
+    (setq tail (qrest u))
+    (setq nhead
+     (cond
+      ((and (consp head) (eq (qfirst head) '|isDomain|)
+            (consp (qrest head)) (consp (qcddr head))
+            (eq (qcdddr head) nil))
+        (list '|isDomain| (second head)
+           (fn (third head) tail)))
+      (t head)))
+     (cons nhead (|isDomainSubst| (cdr u))))
+   u))))
+
+(defun |isFunctor| (x)
+ (let (op u prop)
+ (declare (special |$CategoryFrame| |$InteractiveMode|))
+  (setq op (|opOf| x))
+  (cond
+   ((null (identp op)) nil)
+   (|$InteractiveMode|
+    (if (member op '(|Union| |SubDomain| |Mapping| |Record|)) 
+     t
+     (member (getdatabase op 'constructorkind) '(|domain| |package|))))
+   ((setq u
+     (or (|get| op '|isFunctor| |$CategoryFrame|)
+         (member op '(|SubDomain| |Union| |Record|))))
+      u)
+   ((|constructor?| op)
+     (cond
+      ((setq prop (|get| op '|isFunctor| |$CategoryFrame|)) prop)
+      (t
+       (if (eq (getdatabase op 'constructorkind) '|category|)
+         (|updateCategoryFrameForCategory| op)
+         (|updateCategoryFrameForConstructor| op))
+       (|get| op '|isFunctor| |$CategoryFrame|))))
+   (t nil))))
+
+(defun |isListConstructor| (u)
+ (and (consp u) (|member| (qfirst u) '(|construct| |append| |cons|))))
+
+(defun |isMacro| (x env)
+ (let (op args signature body)
+  (when
+   (and (consp x) (eq (qfirst x) 'def) (consp (qrest x)) 
+        (consp (qsecond x)) (consp (qcddr x))
+        (consp (qcdddr x))
+        (consp (qcddddr x))
+        (eq (qrest (qcddddr x)) nil))
+     (setq op (qcaadr x))
+     (setq args (qcdadr x))
+     (setq signature (qthird x))
+     (setq body (qfirst (qcddddr x)))
+     (when 
+      (and (null (|get| op '|modemap| env))
+           (null args)
+           (null (|get| op '|mode| env))
+           (consp signature)
+           (eq (qrest signature) nil)
+           (null (qfirst signature)))
+       body))))
+
+(defun |isSuperDomain| (domainForm domainFormp env)
+ (cond
+   ((|isSubset| domainFormp domainForm env) t)
+   ((and (eq domainForm '|Rep|) (eq domainFormp '$)) t)
+   (t (lassoc (|opOf| domainFormp) (|get| domainForm '|SubDomain| env)))))
+
+(defun |isTokenDelimiter| ()
+ (member (current-symbol) '(\) end\_unit nil)))
+
+(defun |isUnionMode| (m env)
+ (let (mp v tmp1)
+  (cond
+   ((and (consp m) (eq (qfirst m) '|Union|)) m)
+   ((progn
+     (setq tmp1 (setq mp (|getmode| m env)))
+     (and (consp tmp1) (eq (qfirst tmp1) '|Mapping|)
+          (consp (qrest tmp1)) (eq (qcddr tmp1) nil)
+          (consp (qsecond tmp1))
+          (eq (qcaadr tmp1) '|UnionCategory|)))
+      (second mp))
+   ((setq v (|get| (if (eq m '$) '|Rep| m) '|value| env))
+     (when  (and (consp (car v)) (eq (qfirst (car v)) '|Union|)) (car v))))))
+
+
+(defun |killColons| (x)
+ (cond
+  ((atom x) x)
+  ((and (consp x) (eq (qfirst x) '|Record|)) x)
+  ((and (consp x) (eq (qfirst x) '|Union|)) x)
+  ((and (consp x) (eq (qfirst x) '|:|) (consp (qrest x)) 
+        (consp (qcddr x)) (eq (qcdddr x) nil))
+   (|killColons| (third x)))
+  (t (cons (|killColons| (car x)) (|killColons| (cdr x))))))
+
+
+(defun line-advance-char (line)
+  (setf (line-current-char line)
+        (elt (line-buffer line) (incf (line-current-index line)))))
+
+(defun line-at-end-p (line)
+  "Tests if line is empty or positioned past the last character."
+  (>= (line-current-index line) (line-last-index line)))
+
+(defun line-current-segment (line)
+  "Buffer from current index to last index."
+  (if (line-at-end-p line) 
+   (make-string 0)
+   (subseq (line-buffer line)
+           (line-current-index line)
+           (line-last-index line))))
+
+(defun line-next-char (line)
+  (elt (line-buffer line) (1+ (line-current-index line))))
+
+(defun line-past-end-p (line)
+  "Tests if line is empty or positioned past the last character."
+  (> (line-current-index line) (line-last-index line)))
+
+(defun line-print (line)
+ (declare (special out-stream))
+  (format out-stream "~&~5D> ~A~%" (Line-Number line) (Line-Buffer Line))
+  (format out-stream "~v@T^~%" (+ 7 (Line-Current-Index line))))
+
+(defun line-new-line (string line &optional (linenum nil))
+  "Sets string to be the next line stored in line."
+  (setf (line-last-index line) (1- (length string)))
+  (setf (line-current-index line) 0)
+  (setf (line-current-char line)
+        (or (and (> (length string) 0) (elt string 0)) #\Return))
+  (setf (line-buffer line) string)
+  (setf (line-number line) (or linenum (1+ (line-number line)))))
+
+(defun |lispize| (x)
+ (car (|optimize| (list x))))
+
+(defun |lisplibDoRename| (libName)
+ (declare (special |$spadLibFT|))
+ (replaceFile (list libName |$spadLibFT| 'a) (list libName 'errorlib 'a)))
+
+(defun |lisplibWrite| (prop val filename)
+ (declare (special $lisplib))
+ (when $lisplib (|rwrite| prop val filename)))
+
+(defun |loadIfNecessary| (u)
+ (|loadLibIfNecessary| u t))
+
+(defun |loadLibIfNecessary| (u mustExist)
+ (let (value y)
+ (declare (special |$CategoryFrame| |$InteractiveMode|))
+  (cond
+   ((eq u '|$EmptyMode|) u)
+   ((null (atom u)) (|loadLibIfNecessary| (car u) mustExist))
+   (t
+    (setq value
+     (cond
+       ((or (canFuncall? u) (|macrop| u)) u)
+       ((getl u 'loaded) u)
+       ((|loadLib| u) u)))
+    (cond
+     ((and (null |$InteractiveMode|)
+           (or (null (setq y (|getProplist| u |$CategoryFrame|)))
+               (and (null (lassoc '|isFunctor| y))
+                    (null (lassoc '|isCategory| y)))))
+      (if (setq y (getdatabase u 'constructorkind))
+        (if (eq y '|category|)
+          (|updateCategoryFrameForCategory| u)
+          (|updateCategoryFrameForConstructor| u))
+       (|throwKeyedMsg| " %1p is not a known type." (list u))))
+     (t value))))))
+
+
+(defun |macroExpand| (form env)
+ (let (u)
+ (cond
+  ((atom form)
+   (if (setq u (|get| form '|macro| env))
+    (|macroExpand| u env)
+    form))
+  ((and (consp form) (eq (qfirst form) 'def)
+        (consp (qrest form))
+        (consp (qcddr form))
+        (consp (qcdddr form))
+        (consp (qcddddr form))
+        (eq (qrest (qcddddr form)) nil))
+   (list 'def (|macroExpand| (second form) env)
+              (|macroExpandList| (third form) env)
+              (|macroExpandList| (fourth form) env)
+              (|macroExpand| (fifth form) env)))
+  (t (|macroExpandList| form env)))))
+
+(defun |macroExpandInPlace| (form env)
+ (let (y)
+  (setq y (|macroExpand| form env))
+  (if (or (atom form) (atom y)) 
+    y
+    (progn
+      (rplaca form (car y))
+      (rplacd form (cdr y))
+      form
+    ))))
+
+(defun |macroExpandList| (lst env)
+ (let (tmp)
+  (if (and (consp lst) (eq (qrest lst) nil)
+           (identp (qfirst lst)) (getdatabase (qfirst lst) 'niladic)
+           (setq tmp (|get| (qfirst lst) '|macro| env)))
+    (|macroExpand| tmp env)
+    (loop for x in lst collect (|macroExpand| x env)))))
+
+(defun |makeCategoryForm| (c env)
+ (let (tmp1)
+ (declare (special |$EmptyMode|))
+  (when (|isCategoryForm| c env)
+    (setq tmp1 (|compOrCroak| c |$EmptyMode| env))
+    (list (first tmp1) (third tmp1)))))
+
+(defun |makeCategoryPredicates| (form u)
+ (labels (
+  (fn (u pl)
+   (declare (special |$tvl| |$mvl|))
+   (cond
+    ((and (consp u) (eq (qfirst u) '|Join|) (consp (qrest u)))
+      (fn (car (reverse (qrest u))) pl))
+    ((and (consp u) (eq (qfirst u) '|has|))
+      (|insert| (eqsubstlist |$mvl| |$tvl| u) pl))
+    ((and (consp u) (member (qfirst u) '(signature attribute))) pl)
+    ((atom u) pl)
+    (t (fnl u pl))))
+  (fnl (u pl)
+   (dolist (x u) (setq pl (fn x pl)))
+   pl))
+ (declare (special |$FormalMapVariableList| |$mvl| |$tvl|
+                   |$TriangleVariableList|))
+  (setq |$tvl| (take (|#| (cdr form)) |$TriangleVariableList|))
+  (setq |$mvl| (take (|#| (cdr form)) (cdr |$FormalMapVariableList|)))
+  (fn u nil)))
+
+(defun |makeFunctorArgumentParameters| (argl sigl target)
+ (labels (
+  (augmentSig (s ss)
+   (let (u)
+   (declare (special |$ConditionalOperators|))
+    (if ss
+     (progn
+      (loop for u in ss do (push (rest u) |$ConditionalOperators|))
+      (if (and (consp s) (eq (qfirst s) '|Join|))
+       (progn 
+        (if (setq u (assq 'category ss))
+         (subst (append u ss) u s :test #'equal)
+         (cons '|Join|
+          (append (rest s) (list (cons 'category (cons '|package| ss)))))))
+       (list '|Join| s (cons 'category (cons '|package| ss)))))
+     s)))
+  (fn (a s)
+   (declare (special |$CategoryFrame|))
+    (if (|isCategoryForm| s |$CategoryFrame|)
+     (if (and (consp s) (eq (qfirst s) '|Join|))
+      (|genDomainViewList0| a (rest s))
+      (list (|genDomainView| a s '|getDomainView|)))
+     (list a)))
+  (findExtras (a target)
+   (cond
+    ((and (consp target) (eq (qfirst target) '|Join|))
+     (reduce #'|union|
+      (loop for x in (qrest target)
+        collect (findExtras a x))))
+    ((and (consp target) (eq (qfirst target) 'category))
+     (reduce #'|union|
+      (loop for x in (qcddr target)
+       collect (findExtras1 a x))))))
+  (findExtras1 (a x)
+   (cond 
+    ((and (consp x) (or (eq (qfirst x) 'and)) (eq (qfirst x) 'or))
+      (reduce #'|union|
+        (loop for y in (rest x) collect (findExtras1 a y))))
+    ((and (consp x) (eq (qfirst x) 'if)
+          (consp (qrest x)) (consp (qcddr x))
+          (consp (qcdddr x))
+          (eq (qcddddr x) nil))
+      (|union| (findExtrasP a (second x))
+               (|union|
+                (findExtras1 a (third x))
+                (findExtras1 a (fourth x)))))))
+  (findExtrasP (a x)
+   (cond 
+    ((and (consp x) (or (eq (qfirst x) 'and)) (eq (qfirst x) 'or))
+      (reduce #'|union|
+        (loop for y in (rest x) collect (findExtrasP a y))))
+    ((and (consp x) (eq (qfirst x) '|has|)
+          (consp (qrest x)) (consp (qcddr x))
+          (consp (qcdddr x))
+          (eq (qcddddr x) nil))
+      (|union| (findExtrasP a (second x))
+               (|union|
+                (findExtras1 a (third x))
+                (findExtras1 a (fourth x)))))
+    ((and (consp x) (eq (qfirst x) '|has|)
+          (consp (qrest x)) (equal (qsecond x) a)
+          (consp (qcddr x))
+          (eq (qcdddr x) nil)
+          (consp (qthird x))
+          (eq (qcaaddr x) 'signature))
+      (list (third x)))))
+
+ )
+ (let (|$alternateViewList| |$forceAdd| |$ConditionalOperators|)
+ (declare (special |$alternateViewList| |$forceAdd| |$ConditionalOperators|))
+  (setq |$alternateViewList| nil)
+  (setq |$forceAdd| t)
+  (setq |$ConditionalOperators| nil)
+  (mapcar #'reduce
+   (loop for a in argl for s in sigl do
+     (fn a (augmentSig s (findExtras a target))))))))
+
+(defun |makeSimplePredicateOrNil| (p)
+ (let (u g)
+  (cond
+   ((|isSimple| p) nil)
+   ((setq u (|isAlmostSimple| p)) u)
+   (t (|wrapSEQExit| (list (list 'let (setq g (gensym)) p) g))))))
+
+(defun make-symbol-of (token)
+ (let ((u (and token (token-symbol token))))
+  (cond
+   ((not u) nil)
+   ((characterp u) (intern (string u)))
+   (u))))
+
+(defun match-advance-string (x)
+  (let ((y (if (>= (length (string x))
+                   (length (string (quote-if-string (current-token)))))
+               (match-string x)
+               nil))) ; must match at least the current token
+    (when y
+      (incf (line-current-index current-line) y)
+      (if (not (line-past-end-p current-line))
+       (setf (line-current-char current-line)
+             (elt (line-buffer current-line)
+                  (line-current-index current-line)))
+       (setf (line-current-char current-line) #\space))
+      (setq prior-token
+       (make-token :symbol (intern (string x))
+                   :type 'identifier
+                   :nonblank nonblank))
+      t)))
+
+(defun match-current-token (type &optional (symbol nil))
+  (match-token (current-token) type symbol))
+
+(defun match-next-token (type &optional (symbol nil))
+  (match-token (next-token) type symbol))
+
+(defun match-string (x)
+  (unget-tokens) ; So we don't get out of synch with token stream
+  (skip-blanks)
+  (if (and (not (line-past-end-p current-line)) (current-char) )
+    (initial-substring-p x
+     (subseq (line-buffer current-line) (line-current-index current-line)))))
+
+(defun match-token (token type &optional (symbol nil))
+  (when (and token (eq (token-type token) type))
+   (if symbol
+    (when (equal symbol (token-symbol token)) token)
+    token)))
+
+(defun |maxSuperType| (m env)
+ (let (typ)
+  (if (setq typ (|get| m '|SuperDomain| env))
+   (|maxSuperType| typ env)
+   m)))
+
+(defun |mergeModemap| (entry modemapList env)
+ (let (mc sig pred mcp sigp predp newmm mm)
+ (declare (special |$forceAdd|))
+  ; break out the condition, signature, and predicate fields of the new entry
+  (setq mc (caar entry))
+  (setq sig (cdar entry))
+  (setq pred (caadr entry))
+  (seq 
+   ; walk across the successive tails of the modemap list
+   (do ((mmtail modemapList (cdr mmtail)))
+       ((atom mmtail) nil)
+     (setq mcp (caaar mmtail))
+     (setq sigp (cdaar mmtail))
+     (setq predp (caadar mmtail))
+     (cond
+      ((or (equal mc mcp) (|isSuperDomain| mcp mc env))
+        ; if this is a duplicate condition
+        (exit 
+         (progn
+          (setq newmm nil)
+          (setq mm modemapList)
+          ; copy the unique modemap terms
+          (loop while (not (eq mm mmtail)) do
+            (setq newmm (cons (car mm) newmm))
+            (setq mm (cdr mm)))
+          ; if the conditions and signatures are equal
+          (when (and (equal mc mcp) (equal sig sigp))
+            ; we only need one of these unless the conditions are hairy
+            (cond
+             ((and (null |$forceAdd|) (|TruthP| predp))
+               ; the new predicate buys us nothing
+               (setq entry nil)
+               (return modemapList))
+             ((|TruthP| pred)
+               ; the thing we matched against is useless, by comparison
+               (setq mmtail (cdr mmtail)))))
+          (setq modemapList (nconc (nreverse newmm) (cons entry mmtail)))
+          (setq entry nil)
+          (return modemapList))))))
+   ; if the entry is still defined, add it to the modemap
+   (if entry 
+     (append modemapList (list entry))
+     modemapList))))
+
+(defun |mergeSignatureAndLocalVarAlists| (signatureAlist localVarAlist)
+ (loop for item in signatureAlist 
+  collect
+   (cons (first item)
+    (cons (rest item)
+     (lassoc (first item) localVarAlist)))))
+
+(defun meta-syntax-error (&optional (wanted nil) (parsing nil))
+  (declare (special meta-error-handler))
+  (funcall meta-error-handler wanted parsing))
+
+(defun |mkAbbrev| (x z)
+ (|addSuffix| (|alistSize| (cdr x)) z))
+
+(defun |mkAlistOfExplicitCategoryOps| (target)
+ (labels (
+  (atomizeOp (op)
+   (cond
+    ((atom op) op)
+    ((and (consp op) (eq (qrest op) nil)) (qfirst op))
+    (t (|keyedSystemError| 
+          "Unexpected error or improper call to system function %1: %2"
+        (list "mkAlistOfExplicitCategoryOps" "bad signature")))))
+  (fn (op u)
+   (if (and (consp u) (consp (qfirst u)))
+    (if (equal (qcaar u) op)
+     (cons (qcdar u) (fn op (qrest u)))
+     (fn op (qrest u))))))
+ (let (z tmp1 op sig u opList)
+ (declare (special |$e|))
+  (when (and (consp target) (eq (qfirst target) '|add|) (consp (qrest target)))
+    (setq target (second target)))
+  (cond
+   ((and (consp target) (eq (qfirst target) '|Join|))
+    (setq z (qrest target))
+    (PROG (tmp1)
+     (RETURN
+       (DO ((G167566 z (CDR G167566)) (cat nil))
+           ((OR (ATOM G167566) (PROGN (setq cat (CAR G167566)) nil))
+             tmp1)
+         (setq tmp1 (|union| tmp1 (|mkAlistOfExplicitCategoryOps| cat)))))))
+   ((and (consp target) (eq (qfirst target) 'category)
+         (progn
+           (setq tmp1 (qrest target))
+           (and (consp tmp1)
+                (progn (setq z (qrest tmp1)) t))))
+     (setq z (|flattenSignatureList| (cons 'progn z)))
+     (setq u
+      (prog (G167577)
+       (return
+        (do ((G167583 z (cdr G167583)) (x nil))
+            ((or (atom G167583)) (nreverse0 G167577))
+          (setq x (car G167583))
+          (cond
+            ((and (consp x) (eq (qfirst x) 'signature) (consp (qrest x))
+                   (consp (qcddr x)))
+              (setq op (qsecond x))
+              (setq sig (qthird x))
+              (setq G167577 (cons (cons (atomizeOp op) sig) G167577))))))))
+     (setq opList (remdup (assocleft u)))
+     (prog (G167593)
+      (return
+       (do ((G167598 opList (cdr G167598)) (x nil))
+           ((or (atom G167598)) (nreverse0 G167593))
+          (setq x (car G167598))
+          (setq G167593 (cons (cons x (fn x u)) G167593))))))
+   ((|isCategoryForm| target |$e|) nil)
+   (t
+     (|keyedSystemError| 
+        "Unexpected error or improper call to system function %1: %2"
+      (list "mkAlistOfExplicitCategoryOps" "bad signature")))))))
+
+(defun |mkCategoryPackage| (form cat def)
+ (labels (
+  (fn (x oplist)
+   (cond
+    ((atom x) oplist)
+    ((and (consp x) (eq (qfirst x) 'def) (consp (qrest x)))
+      (cons (second x) oplist))
+    (t
+     (fn (cdr x) (fn (car x) oplist)))))
+  (gn (cat)
+   (cond 
+    ((and (consp cat) (eq (qfirst cat) 'category)) (cddr cat))
+    ((and (consp cat) (eq (qfirst cat) '|Join|))   (gn (|last| (qrest cat))))
+    (t nil))))
+ (let (|$options| op argl packageName packageAbb nameForDollar packageArgl
+       capsuleDefAlist explicitCatPart catvec fullCatOpList op1 sig
+       catOpList packageCategory nils packageSig)
+  (declare (special |$options| |$categoryPredicateList| |$e|
+                    |$FormalMapVariableList|))
+  (setq op (car form))
+  (setq argl (cdr form))
+  (setq packageName (intern (strconc (pname op) "&")))
+  (setq packageAbb  (intern (strconc (getdatabase op 'abbreviation) "-")))
+  (setq |$options| nil)
+  (|abbreviationsSpad2Cmd| (list '|domain| packageAbb packageName))
+  (setq nameForDollar (car (setdifference '(s a b c d e f g h i) argl)))
+  (setq packageArgl (cons nameForDollar argl))
+  (setq capsuleDefAlist (fn def nil))
+  (setq explicitCatPart (gn cat))
+  (setq catvec (|eval| (|mkEvalableCategoryForm| form)))
+  (setq fullCatOpList (elt (|JoinInner| (list catvec) |$e|) 1))
+  (setq catOpList
+   (loop for x in fullCatOpList do
+     (setq op1 (caar x))
+     (setq sig (cadar x))
+    when (|assoc| op1 capsuleDefAlist)
+    collect (list 'signature op1 sig)))
+  (when catOpList
+   (setq packageCategory
+    (cons 'category 
+     (cons '|domain| (sublislis argl |$FormalMapVariableList| catOpList))))
+   (setq nils (loop for x in argl collect nil))
+   (setq packageSig (cons packageCategory (cons form nils)))
+   (setq |$categoryPredicateList|
+     (subst nameForDollar '$ |$categoryPredicateList| :test #'equal))
+   (subst nameForDollar '$
+     (list 'def (cons packageName packageArgl) 
+           packageSig (cons nil nils) def)  :test #'equal)))))
+
+(defun |mkConstructor| (form)
+ (cond
+  ((atom form) (list '|devaluate| form))
+  ((null (rest form)) (list 'quote (list (first form))))
+  (t 
+   (cons 'list 
+    (cons (mkq (first form))
+     (loop for x in (rest form) collect (|mkConstructor| x)))))))
+
+(defun |mkDatabasePred| (arg)
+ (let (a z)
+ (declare (special |$e|))
+  (setq a (car arg))
+  (setq z (cadr arg))
+  (if (|isCategoryForm| z |$e|)
+    (list '|ofCategory| a z)
+    (list '|ofType| a z))))
+
+(defun |mkEvalableCategoryForm| (c)
+ (let (op argl tmp1 x m)
+ (declare (special |$Category| |$e| |$EmptyMode| |$CategoryFrame|
+                   |$CategoryNames|))
+  (if (consp c)
+   (progn
+    (setq op (qfirst c))
+    (setq argl (qrest c))
+    (cond
+     ((eq op '|Join|)
+      `(|JoinInner|
+	 (list ,@(loop for x in argl collect (|mkEvalableCategoryForm| x)))
+	 (if (or (not (boundp '|$e|)) (null |$e|) |$InteractiveMode|)
+             |$CategoryFrame|
+             |$e|)))
+     ((eq op '|DomainSubstitutionMacro|)
+       (|mkEvalableCategoryForm| (cadr argl)))
+     ((eq op '|mkCategory|) c)
+     ((member op |$CategoryNames|)
+       (setq tmp1 (|compOrCroak| c |$EmptyMode| |$e|))
+       (setq x (car tmp1))
+       (setq m (cadr tmp1))
+       (setq |$e| (caddr tmp1))
+       (when (equal m |$Category|) x))
+     ((or (eq (getdatabase op 'constructorkind) '|category|)
+          (|get| op '|isCategory| |$CategoryFrame|))
+       (cons op
+        (loop for x in argl
+         collect (mkq x))))
+     (t
+       (setq tmp1 (|compOrCroak| c |$EmptyMode| |$e|))
+       (setq x (car tmp1))
+       (setq m (cadr tmp1))
+       (setq |$e| (caddr tmp1))
+       (when (equal m |$Category|) x))))
+   (mkq c))))
+
+(defun |mkExplicitCategoryFunction| (domainOrPackage sigList atList)
+ (let (body sig parameters)
+  (setq body
+   (list '|mkCategory| (mkq domainOrPackage)
+      (cons 'list (reverse sigList))
+      (cons 'list (reverse atList))
+      (mkq
+        (let (result)
+         (loop for item in sigList
+          do
+           (setq sig (car (cdaadr item)))
+           (setq result 
+             (|union| result 
+               (loop for d in sig
+                when (|mustInstantiate| d)
+                collect d))))
+         result))
+      nil))
+   (setq parameters
+    (remdup
+     (let (result)
+      (loop for item in sigList
+       do
+        (setq sig (car (cdaadr item)))
+        (setq result
+         (append result
+          (loop for x in sig
+           when (and (identp x) (not (eq x '$)))
+           collect x))))
+      result)))
+   (|wrapDomainSub| parameters body)))
+
+(defun |mkList| (u) 
+ (when u (cons 'list u)))
+
+(defun |mkNewModemapList| (mc sig pred fn curModemapList env filenameOrNil)
+ (let (map entry oldMap opred result)
+ (declare (special |$InteractiveMode| |$forceAdd|))
+   (setq entry
+    (cons (setq map (cons mc sig)) (cons (list pred fn) filenameOrNil)))
+   (cond
+    ((|member| entry curModemapList) curModemapList)
+    ((and (setq oldMap (|assoc| map curModemapList))
+          (consp oldMap) (consp (qrest oldMap))
+          (consp (qsecond oldMap))
+          (consp (qcdadr oldMap))
+          (eq (qcddadr oldMap) nil)
+          (equal (qcadadr oldMap) fn))
+      (setq opred (qcaadr oldMap))
+      (cond
+       (|$forceAdd| (|mergeModemap| entry curModemapList env))
+       ((eq opred t) curModemapList)
+       (t
+         (when (and (not (eq pred t)) (not (equal pred opred)))
+            (setq pred (list 'or pred opred)))
+         (dolist (x curModemapList (nreverse0 result))
+          (push
+           (if (equal x oldMap)
+             (cons map (cons (list pred fn) filenameOrNil))
+             x)
+           result)))))
+    (|$InteractiveMode|
+     (|insertModemap| entry curModemapList))
+    (t
+     (|mergeModemap| entry curModemapList env)))))
+
+(defun |mkOpVec| (dom siglist)
+ (let (substargs oplist ops u noplist i tmp1)
+ (declare (special |$FormalMapVariableList| |Undef|))
+  (setq dom (|getPrincipalView| dom))
+  (setq substargs
+    (cons (cons '$ (elt dom 0))
+          (loop for a in |$FormalMapVariableList| for x in (rest (elt dom 0))
+           collect (cons a x))))
+  (setq oplist (|getOperationAlistFromLisplib| (|opOf| (elt dom 0))))
+  (setq ops (make-array (|#| siglist)))
+  (setq i -1)
+  (loop for opSig in siglist do
+    (incf i)
+    (setq u (assq (first opSig) oplist))
+    (setq tmp1 (|assoc| (second opSig) u))
+    (cond
+     ((and (consp tmp1) (consp (qrest tmp1))
+           (consp (qcddr tmp1)) (consp (qcdddr tmp1))
+           (eq (qcddddr tmp1) nil)
+           (eq (qfourth tmp1) 'elt))
+      (setelt ops i (elt dom (second tmp1))))
+     (t
+      (setq noplist (sublis substargs u))
+      (setq tmp1
+        (|AssocBarGensym| 
+          (subst (elt dom 0) '$ (second opSig) :test #'equal) noplist))
+      (cond
+       ((and (consp tmp1) (consp (qrest tmp1)) (consp (qcddr tmp1))
+             (consp (qcdddr tmp1))
+             (eq (qcddddr tmp1) nil)
+             (eq (qfourth tmp1) 'elt))
+         (setelt ops i (elt dom (second tmp1))))
+       (t
+         (setelt ops i (cons |Undef| (cons (list (elt dom 0) i) opSig))))))))
+  ops))
+
+(defun |mkRepititionAssoc| (z)
+ (labels (
+  (mkRepfun (z n)
+    (cond
+     ((null z) nil)
+     ((and (consp z) (eq (qrest z) nil) (list (cons n (qfirst z)))))
+     ((and (consp z) (consp (qrest z)) (equal (qsecond z) (qfirst z)))
+      (mkRepfun (cdr z) (1+ n)))
+     (t (cons (cons n (car z)) (mkRepfun (cdr z) 1))))))
+ (mkRepfun z 1)))
+
+(defun |mkUnion| (a b)
+ (declare (special |$Rep|))
+  (cond
+   ((and (eq b '$) (consp |$Rep|) (eq (qfirst |$Rep|) '|Union|))
+     (qrest |$Rep|))
+   ((and (consp a) (eq (qfirst a) '|Union|))
+     (cond
+      ((and (consp b) (eq (qfirst b) '|Union|))
+        (cons '|Union| (|union| (qrest a) (qrest b))))
+      (t (cons '|Union| (|union| (list b) (qrest a))))))
+   ((and (consp b) (eq (qfirst b) '|Union|))
+     (cons '|Union| (|union| (list a) (qrest b))))
+   (t (list '|Union| a b))))
+
+(defun |modifyModeStack| (m index)
+ (declare (special |$exitModeStack| |$reportExitModeStack|))
+ (if |$reportExitModeStack|
+   (say "exitModeStack: " (copy |$exitModeStack|)
+    " ====> "
+    (progn
+     (setelt |$exitModeStack| index
+      (|resolve| m (elt |$exitModeStack| index)))
+     |$exitModeStack|))
+   (setelt |$exitModeStack| index
+      (|resolve| m (elt |$exitModeStack| index)))))
+
+(defun |modeEqual| (x y)
+ (let (xl yl)
+  (cond
+   ((or (atom x) (atom y)) (equal x y))
+   ((not (eql (|#| x) (|#| y))) nil)
+   ((and (consp x) (eq (qfirst x) '|Union|) (consp y) (eq (qfirst y) '|Union|))
+    (setq xl (qrest x))
+    (setq yl (qrest y))
+    (loop for a in xl do
+     (loop for b in yl do
+       (when (|modeEqual| a b)
+         (setq xl (|delete| a xl))
+         (setq yl (|delete| b yl))
+         (return nil))))
+    (unless (or xl yl) t))
+  (t
+   (let ((result t))
+    (loop for u in x for v in y 
+     do (setq result (and result (|modeEqual| u v))))
+    result)))))
+
+(defun |modeEqualSubst| (m1 m env)
+ (let (mp op z1 z2)
+  (cond
+   ((|modeEqual| m1 m) t)
+   ((atom m1)
+    (when (setq mp (car (|get| m1 '|value| env))) 
+     (|modeEqual| mp m)))
+   ((and (consp m1) (consp m) (equal (qfirst m) (qfirst m1))
+         (equal (|#| (qrest m1)) (|#| (qrest m))))
+      (setq op (qfirst m1))
+      (setq z1 (qrest m1))
+      (setq z2 (qrest m))
+      (let ((result t))
+       (loop for xm1 in z1 for xm2 in z2
+        do (setq result (and result (|modeEqualSubst| xm1 xm2 env))))
+       result))
+   (t nil))))
+
+(defun |modemapPattern| (mmPattern sig)
+ (let (partial patvar patvars mmpat patternAlist)
+ (declare (special |$PatternVariableList|))
+   (setq patternAlist nil)
+   (setq mmpat nil)
+   (setq patvars |$PatternVariableList|)
+   (setq partial nil)
+   (maplist
+    #'(lambda (xTails)
+      (let ((x (car xTails)))
+       (when  (and (consp x) (eq (qfirst x) '|Union|)
+                  (consp (qrest x)) (consp (qcddr x))
+                  (eq (qcdddr x) nil)
+                  (equal (third x) "failed")
+                  (equal xTails sig))
+         (setq x (second x))
+         (setq partial t))
+       (setq patvar (|rassoc| x patternAlist))
+       (cond
+        ((null (null patvar))
+         (setq mmpat (cons patvar mmpat)))
+        (t
+         (setq patvar (car patvars))
+         (setq patvars (cdr patvars))
+         (setq mmpat (cons patvar mmpat))
+         (setq patternAlist (cons (cons patvar x) patternAlist))))))
+     mmPattern)
+   (list (nreverse mmpat) patternAlist partial patvars)))
+
+(defun |moveORsOutside| (p)
+ (let (q x)
+  (cond
+   ((and (consp p) (eq (qfirst p) 'and))
+    (setq q
+     (prog (G167169)
+       (return
+        (do ((G167174 (cdr p) (cdr G167174)) (|r| nil))
+            ((or (atom G167174)) (nreverse0 G167169))
+           (setq |r| (CAR G167174))
+           (setq G167169 (cons (|moveORsOutside| |r|) G167169))))))
+    (cond
+     ((setq x
+       (let (tmp1)
+        (loop for r in q
+         when (and (consp r) (eq (qfirst r) 'or))
+         do (setq tmp1 (or tmp1 r)))
+        tmp1))
+       (|moveORsOutside|
+        (cons 'or
+         (let (tmp1)
+          (loop for tt in (cdr x)
+           do (setq tmp1 (cons (cons 'and (subst tt x q :test #'equal)) tmp1)))
+          (nreverse0 tmp1)))))
+     (t (cons 'and q))))
+   (t p))))
+
+;(defun |moveORsOutside| (p)
+; (let (q s x tmp1)
+; (cond
+;  ((and (consp p) (eq (qfirst p) 'and))
+;    (setq q (loop for r in (qrest p) collect (|moveORsOutside| r)))
+;    (setq tmp1
+;     (loop for r in q
+;      when (and (consp r) (eq (qrest r) 'or))
+;      collect r))
+;    (setq x (mapcar #'(lambda (a b) (or a b)) tmp1))
+;    (if x
+;      (|moveORsOutside|
+;       (cons 'or
+;        (loop for tt in (cdr x)
+;         collect (cons 'and (subst tt x q :test #'equal)))))
+;      (cons 'and q)))
+;   ('t p))))
+
+(defun |mustInstantiate| (d)
+ (declare (special |$DummyFunctorNames|))
+  (and (consp d) 
+       (null (or (member (qfirst d) |$DummyFunctorNames|)
+                 (getl (qfirst d) '|makeFunctionList|)))))
+
+
+(defun |ncINTERPFILE| (file echo)
+ (let ((|$EchoLines| echo) (|$ReadingFile| t))
+ (declare (special |$EchoLines| |$ReadingFile|))
+  (|SpadInterpretStream| 1 file nil)))
+
+(defun |newWordFrom| (z i m)
+ (let (ch done buf)
+ (declare (special |$charFauxNewline| |$stringFauxNewline|))
+  (loop while (and (<= i m) (char= (elt z i) #\space)) do (incf i))
+  (cond
+   ((> i m) nil)
+   (t
+    (setq buf "")
+    (setq ch (elt z i))
+    (cond
+     ((equal ch |$charFauxNewline|)
+       (list |$stringFauxNewline| (1+ i)))
+     (t
+      (setq done nil)
+      (loop while (and (<= i m) (null done)) 
+       do
+        (setq ch (elt z i))
+        (cond
+         ((or (equal ch #\space) (equal ch |$charFauxNewline|))
+           (setq done t))
+         (t
+          (setq buf (strconc buf ch))
+          (setq i (1+ i)))))
+      (list buf i)))))))
+
+(defun next-char ()
+ (if (line-at-end-p current-line) 
+  #\return 
+  (line-next-char current-line)))
+
+(defun next-line (&optional (in-stream t))
+ (declare (special in-stream line-handler))
+ (funcall Line-Handler in-stream))
+
+(defun next-tab-loc (i)
+ (* (1+ (truncate i 8)) 8))
+
+(defun next-token ()
+ (declare (special valid-tokens next-token))
+ (current-token)
+ (if (> valid-tokens 1)
+  next-token
+  (try-get-token next-token)))
+
+(defun newConstruct (z)
+ (if (atom z) 
+   z
+  `(cons  ,(car z) ,(newConstruct (cdr z)))))
+
+(defun newDef2Def (def-expr)
+ (if (not (and (= (length def-expr) 5) (eq (car def-expr) 'def)))
+   (letError "(DEF,form,a,b,c)" def-expr)
+   (let ((form (second def-expr))
+         (a (third def-expr))
+         (b (fourth def-expr))
+         (c (fifth def-expr)))
+    `(def ,(new2OldDefForm form) ,(new2OldTran a)
+          ,(new2OldTran b) ,(new2OldTran c)))))
+
+(defun newIf2Cond (cond-expr)
+  (if (not (and (= (length cond-expr) 4) (eq (car cond-expr) 'if)))
+    (letError "(IF,a,b,c)" cond-expr)
+    (let ((a (second cond-expr))
+          (b (third cond-expr))
+          (c (fourth cond-expr)))
+      (setq a (new2OldTran a) b (new2OldTran b) c (new2OldTran c))
+      (if (eq c '|noBranch|)
+        `(if ,a ,b))
+        `(if ,a ,b ,c))))
+
+(defun |newString2Words| (z)
+ (let (m tmp1 w i result)
+  (cond
+   ((null (stringp z)) (list z))
+   (t
+    (setq m (maxindex z))
+    (cond
+     ((eql m -1) nil)
+     (t
+      (setq i 0)
+      (do () ; [w while newWordFrom(l,i,m) is [w,i]]
+          ((null (progn
+                  (setq tmp1 (|newWordFrom| z i m))
+                  (and (consp tmp1)
+                       (progn
+                        (setq w (qcar tmp1))
+                        (and (consp (qcdr tmp1))
+                             (eq (qcddr tmp1) nil)
+                             (progn
+                              (setq i (qcadr tmp1))
+                              t))))))
+             (nreverse0 result))
+          (setq result (cons (qcar tmp1) result)))))))))
+
+(defun new2OldDefForm (x)
+ (cond
+  ((atom x) (new2OldTran x))
+  ((and (listp x) (listp (car x)) (eq (caar x) '|is|) (= (length (car x)) 3))
+    (let ((a (second (car x))) (b (third (car x))) (y (cdr x)))
+     (new2OldDefForm `((setq ,a ,b) ,@y))))
+  ((cons (new2OldTran (car x)) (new2OldDefForm (cdr x))))))
+
+(defun new2OldTran (x)
+ (prog (tmp1 tmp2 tmp3 tmp4 tmp5 tmp6 a b c d)
+ (declare (special |$new2OldRenameAssoc|))
+  (return
+   (prog nil
+    (if (atom x)
+     (return (let ((y (assoc x |$new2OldRenameAssoc|)))
+                   (if y (cdr y) x))))
+    (if (and (dcq (tmp1 a b . tmp2) x)
+             (null tmp2)
+             (eq tmp1 '|where|)
+             (dcq (tmp3 . tmp4) b)
+             (dcq ((tmp5 d . tmp6) . c) (reverse tmp4))
+             (null tmp6)
+             (eq tmp5 '|exit|)
+             (eq tmp3 'seq)
+             (or (setq c (nreverse c)) t))
+        (return
+         `(|where| ,(new2OldTran a) ,@(new2OldTran c)
+                   ,(new2OldTran d))))
+     (return
+      (case (car x)
+       (quote x)
+       (def (newDef2Def x))
+       (if (newIf2Cond x))
+       ; construct === #'list (see patches.lisp) TPD 12/2011
+       (|construct| (newConstruct (new2OldTran (cdr x))))
+       (t `(,(new2OldTran (car x)) . ,(new2OldTran (cdr x))))))))))
+
+(defun new2OldLisp (x)
+ (new2OldTran (postTransform x)))
+
+(defun nonblankloc (str)
+ (position-if-not #'blankp str))
+
+(defun |NRTassocIndex| (x)
+ (let (k (i 0))
+ (declare (special |$NRTdeltaLength| |$NRTbase| |$found| |$NRTdeltaList|
+                   |$NRTaddForm|))
+ (cond
+  ((null x) x)
+  ((equal x |$NRTaddForm|) 5)
+  ((setq k
+    (let (result)
+     (loop for y in |$NRTdeltaList|
+      when (and (incf i) 
+                (eq (elt y 0) '|domain|)
+                (equal (elt y 1) x)
+                (setq |$found| y))
+      do (setq result (or result i)))
+     result))
+   (- (+ |$NRTbase| |$NRTdeltaLength|) k))
+  (t nil))))
+
+(defun |NRTgetLocalIndex| (item)
+ (let (k value saveNRTdeltaListComp saveIndex compEntry)
+ (declare (special |$e| |$EmptyMode| |$NRTdeltaLength| |$NRTbase|
+                   |$NRTdeltaListComp| |$NRTdeltaList| |$formalArgList|
+                   |$NRTaddForm|))
+   (cond
+     ((setq k (|NRTassocIndex| item)) k)
+     ((equal item |$NRTaddForm|) 5)
+     ((eq item '$) 0)
+     ((eq item '$$) 2)
+     (t
+       (when (member item |$formalArgList|) (setq value item))
+       (cond
+         ((and (atom item) (null (member item '($ $$))) (null value))
+           (setq |$NRTdeltaList|
+             (cons (cons '|domain| (cons (|NRTaddInner| item) value))
+                   |$NRTdeltaList|))
+           (setq |$NRTdeltaListComp| (cons item |$NRTdeltaListComp|))
+           (setq |$NRTdeltaLength| (1+ |$NRTdeltaLength|))
+           (1- (+ |$NRTbase| |$NRTdeltaLength|)))
+         (t
+          (setq |$NRTdeltaList|
+           (cons (cons '|domain| (cons (|NRTaddInner| item) value))
+                 |$NRTdeltaList|))
+          (setq saveNRTdeltaListComp
+            (setq |$NRTdeltaListComp| (cons nil |$NRTdeltaListComp|)))
+          (setq saveIndex (+ |$NRTbase| |$NRTdeltaLength|))
+          (setq |$NRTdeltaLength| (1+ |$NRTdeltaLength|))
+          (setq compEntry (car (|compOrCroak| item |$EmptyMode| |$e|)))
+          (rplaca saveNRTdeltaListComp compEntry)
+          saveIndex))))))
+
+(defun |NRTgetLookupFunction| (domform exCategory addForm)
+ (let (|$why| extends u msg v)
+ (declare (special |$why| |$pairlis|))
+  (setq domform (sublis |$pairlis| domform))
+  (setq addForm (sublis |$pairlis| addForm))
+  (setq |$why| nil)
+  (cond
+    ((atom addForm) '|lookupComplete|)
+    (t
+     (setq extends
+      (|NRTextendsCategory1| domform exCategory (|getExportCategory| addForm)))
+     (cond
+      ((null extends) 
+        (setq u (car |$why|))
+        (setq msg (cadr |$why|))
+        (setq v (cddr |$why|))
+        (|sayBrightly|
+           "--------------non extending category----------------------")
+        (|sayBrightlyNT|
+         (cons ".."
+          (append (|bright| (|form2String| domform)) (list '|of cat |))))
+        (print u) 
+        (|sayBrightlyNT| (|bright| msg))
+        (if v (print (car v)) (terpri))))
+     (if extends 
+       '|lookupIncomplete|
+       '|lookupComplete|)))))
+
+(defun |NRTputInHead| (bod)
+ (let (fn clauses dom tmp2 ind k)
+ (declare (special |$elt|))
+  (cond
+   ((atom bod) bod)
+   ((and (consp bod) (eq (qcar bod) 'spadcall) (consp (qcdr bod))
+         (progn (setq tmp2 (reverse (qcdr bod))) t) (consp tmp2))
+      (setq fn (qcar tmp2))
+      (|NRTputInTail| (cdr bod))
+      (cond
+        ((and (consp fn) (consp (qcdr fn)) (consp (qcdr (qcdr fn)))
+              (eq (qcdddr fn) nil) (null (eq (qsecond fn) '$))
+             (member (qcar fn) '(elt qrefelt const)))
+           (when (setq k (|NRTassocIndex| (qsecond fn)))
+              (rplaca (lastnode bod) (list |$elt| '$ k))))
+        (t (|NRTputInHead| fn) bod)))
+   ((and (consp bod) (eq (qcar bod) 'cond))
+      (setq clauses (qcdr bod))
+      (loop for cc in clauses do (|NRTputInTail| cc))
+      bod)
+   ((and (consp bod) (eq (qcar bod) 'quote)) bod)
+   ((and (consp bod) (eq (qcar bod) 'closedfn)) bod)
+   ((and (consp bod) (eq (qcar bod) 'spadconst) (consp (qcdr bod))
+         (consp (qcddr bod)) (eq (qcdddr bod) nil))
+      (setq dom (qsecond bod))
+      (setq ind (qthird bod))
+      (rplaca bod |$elt|)
+      (cond
+        ((eq dom '$) nil)
+        ((setq k (|NRTassocIndex| dom))
+          (rplaca (lastnode bod) (list |$elt| '$ k))
+          bod)
+        (t
+         (|keyedSystemError| 
+            "Unexpected error or improper call to system function %1: %2"
+           (list "NRTputInHead" "unexpected SPADCONST form")))))
+   (t
+     (|NRTputInHead| (car bod))
+     (|NRTputInTail| (cdr bod)) bod))))
+
+(defun |NRTputInTail| (x)
+ (let (u k)
+ (declare (special |$elt| |$devaluateList|))
+  (maplist #'(lambda (y)
+              (cond
+               ((atom (setq u (car y)))
+                 (cond
+                  ((or (eq u '$) (lassoc u |$devaluateList|))
+                    nil)
+                  ((setq k (|NRTassocIndex| u))
+                   (cond
+                    ; u atomic means that the slot will always contain a vector
+                    ((atom u) (rplaca y (list |$elt| '$ k)))
+                    ; this reference must check that slot is a vector
+                    (t (rplaca y (list 'spadcheckelt '$ k)))))
+                  (t nil)))
+               (t (|NRTputInHead| u))))
+    x)
+  x))
+
+
+(defun |optCall| (x)
+ (let (u tmp1 fn a name q r n w)
+ (declare (special |$QuickCode| |$bootStrapMode|))
+   (setq u (cdr x))
+   (setq x (|optimize| (list u)))
+   (cond
+    ((atom (car x)) (car x))
+    (t 
+     (setq tmp1 (car x))
+     (setq fn (car tmp1))
+     (setq a (cdr tmp1))
+     (cond
+      ((atom fn) (rplac (cdr x) a) (rplac (car x) fn))
+      ((and (consp fn) (eq (qfirst fn) 'pac)) (|optPackageCall| x fn a))
+      ((and (consp fn) (eq (qfirst fn) '|applyFun|)
+            (consp (qrest fn)) (eq (qcddr fn) nil))
+       (setq name (qsecond fn))
+       (rplac (car x) 'spadcall)
+       (rplac (cdr x) (append a (cons name nil)))
+       x)
+      ((and (consp fn) (consp (qrest fn)) (consp (qcddr fn))
+            (eq (qcdddr fn) nil)
+            (member (qfirst fn) '(elt qrefelt const)))
+       (setq q (qfirst fn))
+       (setq r (qsecond fn))
+       (setq n (qthird fn))
+       (cond
+        ((and (null |$bootStrapMode|) (setq w (|optCallSpecially| q x n r)))
+          w)
+        ((eq q 'const)
+          (list '|spadConstant| r n))
+        (t
+          (rplac (car x) 'spadcall)
+          (when |$QuickCode| (rplaca fn 'qrefelt))
+          (rplac (cdr x) (append a (list fn)))
+          x)))
+      (t (|systemErrorHere| "optCall")))))))
+
+(defun |optCallEval| (u)
+  (cond
+    ((and (consp u) (eq (qfirst u) '|List|))
+      (|List| (|Integer|)))
+    ((and (consp u) (eq (qfirst u) '|Vector|))
+      (|Vector| (|Integer|)))
+    ((and (consp u) (eq (qfirst u) '|PrimitiveArray|))
+      (|PrimitiveArray| (|Integer|)))
+    ((and (consp u) (eq (qfirst u) '|FactoredForm|))
+     (|FactoredForm| (|Integer|)))
+    ((and (consp u) (eq (qfirst u) '|Matrix|))
+     (|Matrix| (|Integer|)))
+    (t
+     (|eval| u))))
+
+(defun |optCallSpecially| (q x n r)
+ (declare (ignore q))
+ (labels (
+  (lookup (a z)
+   (let (zp)
+    (when z
+     (setq zp (car z))
+     (setq z (cdr x))
+     (if (and (consp zp) (eq (qfirst zp) 'let) (consp (qrest zp))
+              (equal (qsecond zp) a) (consp (qcddr zp)))
+      (qthird zp)
+      (lookup a z))))))
+ (let (tmp1 op y prop yy)
+ (declare (special |$specialCaseKeyList| |$getDomainCode| |$e|
+                   |$optimizableConstructorNames|))
+  (cond
+   ((setq y (lassoc r |$specialCaseKeyList|))
+     (|optSpecialCall| x y n))
+   ((member (ifcar r) |$optimizableConstructorNames|)
+     (|optSpecialCall| x r n))
+   ((and (setq y (|get| r '|value| |$e|))
+         (member (|opOf| (car y)) |$optimizableConstructorNames|))
+     (|optSpecialCall| x (car y) n))
+   ((and (setq y (lookup r |$getDomainCode|))
+         (progn
+           (setq tmp1 y)
+           (setq op (first tmp1))
+           (setq y (second tmp1))
+           (setq prop (third tmp1))
+           tmp1)
+         (setq yy (lassoc y |$specialCaseKeyList|)))
+     (|optSpecialCall| x (list op yy prop) n))
+    (t nil)))))
+
+(defun |optCatch| (x)
+ (labels (
+  (changeThrowToExit (s g)
+    (cond
+     ((or (atom s) (member (car s) '(quote seq repeat collect))) nil)
+     ((and (consp s) (eq (qfirst s) 'throw) (consp (qrest s))
+           (equal (qsecond s) g))
+        (|rplac| (car s) 'exit)
+        (|rplac| (cdr s) (qcddr s)))
+     (t
+      (changeThrowToExit (car s) g)
+      (changeThrowToExit (cdr s) g))))
+  (hasNoThrows (a g)
+    (cond
+     ((and (consp a) (eq (qfirst a) 'throw) (consp (qrest a))
+           (equal (qsecond a) g))
+            nil)
+     ((atom a) t)
+     (t
+      (and (hasNoThrows (car a) g)
+           (hasNoThrows (cdr a) g)))))
+  (changeThrowToGo (s g)
+   (let (u)
+    (cond
+     ((or (atom s) (eq (car s) 'quote)) nil)
+     ((and (consp s) (eq (qfirst s) 'throw) (consp (qrest s))
+           (equal (qsecond s) g) (consp (qcddr s))
+           (eq (qcdddr s) nil))
+       (setq u (qthird s))
+       (changeThrowToGo u g)
+       (|rplac| (car s) 'progn)
+       (|rplac| (cdr s) (list (list 'let (cadr g) u) (list 'go (cadr g)))))
+     (t
+      (changeThrowToGo (car s) g)
+      (changeThrowToGo (cdr s) g))))))
+ (let (g tmp2 u s tmp6 a)
+ (declare (special |$InteractiveMode|))
+   (setq g (cadr x))
+   (setq a (caddr x))
+   (cond
+    (|$InteractiveMode| x)
+    ((atom a) a)
+    (t
+     (cond
+      ((and (consp a) (eq (qfirst a) 'seq) (consp (qrest a))
+            (progn (setq tmp2 (reverse (qrest a))) t)
+            (consp tmp2) (consp (qfirst tmp2)) (eq (qcaar tmp2) 'throw)
+            (consp (qcdar tmp2))
+            (equal (qcadar tmp2) g)
+            (consp (qcddar tmp2))
+            (eq (qcdddar tmp2) nil))
+      (setq u (qcaddar tmp2))
+      (setq s (qrest tmp2))
+      (setq s (nreverse s))
+      (changeThrowToExit s g)
+      (|rplac| (cdr a) (append s (list (list 'exit u))))
+      (setq tmp6 (|optimize| x))
+      (setq a (caddr tmp6))))
+     (cond
+      ((hasNoThrows a g)
+        (|rplac| (car x) (car a))
+        (|rplac| (cdr x) (cdr a)))
+      (t
+        (changeThrowToGo a g)
+        (|rplac| (car x) 'seq)
+        (|rplac| (cdr x)
+          (list (list 'exit a) (cadr g) (list 'exit (cadr g))))))
+     x)))))
+
+(defun |optCond| (x)
+ (let (z p1 p2 c3 c1 c2 a result)
+  (setq z (cdr x))
+  (when 
+   (and (consp z) (consp (qrest z)) (eq (qcddr z) nil)
+        (consp (qsecond z)) (consp (qcdadr z))
+        (eq (qrest (qcdadr z)) nil)
+        (|TruthP| (qcaadr z)) 
+        (consp (qcadadr z)) 
+        (eq (qfirst (qcadadr z)) 'cond))
+    (rplacd (cdr x) (qrest (qcadadr z))))
+   (cond
+    ((and (consp z) (consp (qfirst z)) (consp (qrest z)) (consp (qsecond z)))
+      (setq p1 (qcaar z))
+      (setq c1 (qcdar z))
+      (setq p2 (qcaadr z))
+      (setq c2 (qcdadr z))
+      (when
+        (or (and (consp p1) (eq (qfirst p1) 'null) (consp (qrest p1))
+                 (eq (qcddr p1) nil)
+                 (equal (qsecond p1) p2))
+            (and (consp p2) (eq (qfirst p2) 'null) (consp (qrest p2))
+                 (eq (qcddr p2) nil)
+                 (equal (qsecond p2) p1)))
+         (setq z (list (cons p1 c1) (cons ''t c2)))
+         (rplacd x z))
+      (when
+       (and (consp c1) (eq (qrest c1) nil) (equal (qfirst c1) 'nil)
+            (equal p2 ''t) (equal (car c2) ''t))
+        (if (and (consp p1) (eq (qfirst p1) 'null) (consp (qrest p1)) 
+                 (eq (qcddr p1) nil))
+            (setq result (qsecond p1))
+            (setq result (list 'null p1))))))
+  (if result
+   result
+   (cond
+    ((and (consp z) (consp (qfirst z)) (consp (qrest z)) (consp (qsecond z))
+          (consp (qcddr z)) (eq (qcdddr z) nil)
+          (consp (qthird z))
+          (|TruthP| (qcaaddr z)))
+      (setq p1 (qcaar z))
+      (setq c1 (qcdar z))
+      (setq p2 (qcaadr z))
+      (setq c2 (qcdadr z))
+      (setq c3 (qcdaddr z))
+      (cond
+       ((|EqualBarGensym| c1 c3)
+        (list 'cond 
+         (cons (list 'or p1 (list 'null p2)) c1) (cons (list 'quote t) c2)))
+       ((|EqualBarGensym| c1 c2)
+        (list 'cond (cons (list 'or p1 p2) c1) (cons (list 'quote t) c3)))
+       (t x)))
+    (t
+     (do ((y z (cdr y)))
+         ((atom y) nil)
+       (do ()
+           ((null (and (consp y) (consp (qfirst y)) (consp (qcdar y))
+                       (eq (qcddar y) nil) (consp (qrest y))
+                       (consp (qsecond y)) (consp (qcdadr y))
+                       (eq (qcddadr y) nil)
+                       (|EqualBarGensym| (qcadar y) 
+                                         (qcadadr y))))
+             nil)
+         (setq a (list 'or (qcaar y) (qcaadr y)))
+         (rplac (car (car y)) a)
+         (rplac (cdr y) (qcddr y))))
+     x)))))
+
+(defun |optCONDtail| (z)
+ (declare (special |$true|))
+ (when z
+  (cond
+   ((|optPredicateIfTrue| (caar z)) (list (list |$true| (cadar z))))
+   ((null (cdr z)) (list (car z) (list |$true| (list '|CondError|))))
+   (t (cons (car z) (|optCONDtail| (cdr z)))))))
+
+(defun |optEQ| (u)
+ (let (z r)
+  (cond
+   ((and (consp u) (eq (qfirst u) 'eq) (consp (qrest u))
+         (consp (qcddr u)) (eq (qcdddr u) nil))
+     (setq z (qsecond u))
+     (setq r (qthird u))
+; That undoes some weird work in Boolean to do with the definition of true
+     (if (and (numberp z) (numberp r))
+       (list 'quote (eq z r))
+       u))
+   (t u))))
+
+(defun |optIF2COND| (arg)
+ (let (a b c)
+ (declare (special |$true|))
+  (setq a (cadr arg))
+  (setq b (caddr arg))
+  (setq c (cadddr arg))
+  (cond
+   ((eq b '|noBranch|) (list 'cond (list (list 'null a ) c)))
+   ((eq c '|noBranch|) (list 'cond (list a b)))
+   ((and (consp c) (eq (qfirst c) 'if))
+     (cons 'cond (cons (list a b) (cdr (|optIF2COND| c)))))
+   ((and (consp c) (eq (qfirst c) 'cond))
+     (cons 'cond (cons (list a b) (qrest c))))
+   (t
+     (list 'cond (list a b) (list |$true| c))))))
+
+(defun |optimize| (x)
+ (labels (
+  (opt (x)
+   (let (argl body a y op)
+    (cond
+     ((atom x) nil)
+     ((eq (setq y (car x)) 'quote) nil)
+     ((eq y 'closedfn) nil)
+     ((and (consp y) (consp (qfirst y)) (eq (qcaar y) 'xlam)
+           (consp (qcdar y)) (consp (qcddar y))
+           (eq (qcdddar y) nil))
+      (setq argl (qcadar y))
+      (setq body (qcaddar y))
+      (setq a (qrest y))
+      (|optimize| (cdr x))
+      (cond
+       ((eq argl '|ignore|) (rplac (car x) body))
+       (t
+         (when (null (<= (length argl) (length a)))
+           (say "length mismatch in XLAM expression")
+           (prettyprint y))
+          (rplac (car x)
+           (|optimize|
+            (|optXLAMCond|
+             (sublis (pairList argl a) body)))))))
+   ((atom y)
+     (|optimize| (cdr x))
+     (cond
+      ((eq y '|true|) (rplac (car x) '''T))
+      ((eq y '|false|) (rplac (car x) nil))))
+   ((eq (car y) 'if)
+     (rplac (car x) (|optIF2COND| y))
+     (setq y (car x))
+     (when (setq op (getl (|subrname| (car y)) 'optimize))
+      (|optimize| (cdr x))
+      (rplac (car x) (funcall op (|optimize| (car x))))))
+   ((setq op (getl (|subrname| (car y)) 'optimize))
+      (|optimize| (cdr x))
+      (rplac (car x) (funcall op (|optimize| (car x)))))
+   (t
+     (rplac (car x) (|optimize| (car x)))
+     (|optimize| (cdr x)))))))
+ (opt x)
+ x))
+
+(defun |optimizeFunctionDef| (def)
+ (labels (
+  (fn (x g)
+    (cond
+     ((and (consp x) (eq (qfirst x) 'throw) (consp (qrest x))
+           (equal (qsecond x) g))
+       (|rplac| (car x) 'return)
+       (|rplac| (cdr x)
+        (replaceThrowByReturn (qcddr x) g)))
+     ((atom x) nil)
+     (t
+      (replaceThrowByReturn (car x) g)
+      (replaceThrowByReturn (cdr x) g))))
+  (replaceThrowByReturn (x g)
+   (fn x g)
+   x)
+  (removeTopLevelCatch (body)
+   (if (and (consp body) (eq (qfirst body) 'catch) (consp (qrest body))
+            (consp (qcddr body)) (eq (qcdddr body) nil))
+    (removeTopLevelCatch
+      (replaceThrowByReturn 
+        (qthird body) (qsecond body)))
+    body)))
+ (let (defp name slamOrLam args body bodyp)
+ (declare (special |$reportOptimization|))
+  (when |$reportOptimization|
+    (|sayBrightlyI| (|bright| "Original LISP code:"))
+    (|pp| def))
+  (setq defp (|optimize| (copy def)))
+  (when |$reportOptimization|
+    (|sayBrightlyI| (|bright| "Optimized LISP code:"))
+    (|pp| defp)
+    (|sayBrightlyI| (|bright| "Final LISP code:")))
+  (setq name (car defp))
+  (setq slamOrLam (caadr defp))
+  (setq args (cadadr defp))
+  (setq body (car (cddadr defp)))
+  (setq bodyp (removeTopLevelCatch body))
+  (list name (list slamOrLam args bodyp)))))
+
+(defun optional (dothis) (or dothis t))
+
+(defun |optLESSP| (u)
+ (let (a b)
+  (cond
+   ((and (consp u) (eq (qfirst u) 'lessp) (consp (qrest u))
+         (consp (qcddr u))
+         (eq (qcdddr u) nil))
+     (setq a (qsecond u))
+     (setq b (qthird u))
+     (if (eql b 0)
+       (list 'minusp a)
+       (list '> b a)))
+   (t u))))
+
+(defun |optMINUS| (u)
+ (let (v)
+  (cond
+    ((and (consp u) (eq (qfirst u) 'minus) (consp (qrest u)) 
+          (eq (qcddr u) nil))
+      (setq v (qsecond u))
+      (cond ((numberp v) (- v)) (t u)))
+    (t u))))
+
+(defun |optMkRecord| (arg)
+ (let (u)
+  (setq u (cdr arg))
+  (cond
+   ((and (consp u) (eq (qrest u) nil)) (list 'list (qfirst u)))
+   ((eql (|#| u) 2) (cons 'cons u))
+   (t (cons 'vector u)))))
+
+(defun |optPackageCall| (x arg2 arglist)
+ (let (packageVariableOrForm functionName)
+  (setq packageVariableOrForm (second arg2))
+  (setq functionName (third arg2))
+  (rplaca x functionName)
+  (rplacd x (append arglist (list packageVariableOrForm)))
+  x))
+
+(defun |optPredicateIfTrue| (p)
+ (declare (special |$BasicPredicates|))
+  (cond
+   ((and (consp p) (eq (qfirst p) 'quote)) T)
+   ((and (consp p) (consp (qrest p)) (eq (qcddr p) nil)
+      (member (qfirst p) |$BasicPredicates|) (funcall (qfirst p) (qsecond p)))
+     t)
+   (t nil)))
+
+(defun |optQSMINUS| (u)
+ (let (v)
+  (cond
+   ((and (consp u) (eq (qfirst u) 'qsminus) (consp (qrest u))
+         (eq (qcddr u) nil))
+     (setq v (qsecond u))
+     (cond ((numberp v) (- v)) (t u)))
+   (t u))))
+
+(defun |optRECORDCOPY| (arg)
+ (let (name len)
+  (setq name (cadr arg))
+  (setq len (caddr arg))
+  (cond
+   ((eql len 1) (list 'list (list 'car name)))
+   ((eql len 2) (list 'cons (list 'car name) (list 'cdr name)))
+   (t           (list 'replace (list 'make-array len) name)))))
+
+(defun |optRECORDELT| (arg)
+ (let (name ind len)
+  (setq name (cadr arg))
+  (setq ind (caddr arg))
+  (setq len (cadddr arg))
+  (cond
+   ((eql len 1)
+    (cond
+     ((eql ind 0) (list 'qcar name))
+     (t (|keyedSystemError| "Bad index in record optimization: %1"
+          (list ind)))))
+   ((eql len 2)
+    (cond
+     ((eql ind 0) (list 'qcar name))
+     ((eql ind 1) (list 'qcdr name))
+     (t (|keyedSystemError| "Bad index in record optimization: %1"
+         (list ind)))))
+   (t (list 'qvelt name ind)))))
+
+(defun |optSETRECORDELT| (arg)
+ (let (name ind len expr)
+  (setq name (cadr arg))
+  (setq ind (caddr arg))
+  (setq len (cadddr arg))
+  (setq expr (car (cddddr arg)))
+  (cond
+   ((eql len 1)
+    (if (eql ind 0)
+      (list 'progn (list 'rplaca name expr) (list 'qcar name))
+      (|keyedSystemError| "Bad index in record optimization: %1" (list ind))))
+   ((eql len 2)
+    (cond
+     ((eql ind 0)
+       (list 'progn (list 'rplaca name expr) (list 'qcar name)))
+     ((eql ind 1)
+       (list 'progn (list 'rplacd name expr) (list 'qcdr name)))
+     (t (|keyedSystemError| "Bad index in record optimization: %1"
+         (list ind)))))
+   (t
+     (list 'qsetvelt name ind expr)))))
+
+(defun |optSEQ| (arg)
+ (labels (
+  (tryToRemoveSEQ (z)
+    (if (and (consp z) (eq (qfirst z) 'seq) (consp (qrest z))
+             (eq (qcddr z) nil) (consp (qsecond z))
+             (consp (qcdadr z))
+             (eq (qcddadr z) nil)
+             (member (qcaadr z) '(exit return throw)))
+      (qcadadr z)
+      z))
+  (SEQToCOND (z)
+   (let (transform before aft)
+    (setq transform
+     (loop for x in z
+      while
+        (and (consp x) (eq (qfirst x) 'cond) (consp (qrest x))
+             (eq (qcddr x) nil) (consp (qsecond x))
+             (consp (qcdadr x))
+             (eq (qcddadr x) nil)
+             (consp (qcadadr x))
+             (eq (qfirst (qcadadr x)) 'exit)
+             (consp (qrest (qcadadr x)))
+             (eq (qcddr (qcadadr x)) nil))
+      collect 
+       (list (qcaadr x)
+             (qsecond (qcadadr x)))))
+    (setq before (take (|#| transform) z))
+    (setq aft (|after| z before))
+    (cond
+     ((null before) (cons 'seq aft))
+     ((null aft)
+       (cons 'cond (append transform (list '(t (|conderr|))))))
+     (t
+       (cons 'cond (append transform
+         (list (list ''t (|optSEQ| (cons 'seq aft))))))))))
+  (getRidOfTemps (z)
+   (let (g x r)
+    (cond
+     ((null z) nil)
+     ((and (consp z) (consp (qfirst z)) (eq (qcaar z) 'let)
+           (consp (qcdar z)) (consp (qcddar z))
+           (gensymp (qcadar z))
+           (> 2 (|numOfOccurencesOf| (qcadar z) (qrest z))))
+       (setq g (qcadar z))
+       (setq x (qcaddar z))
+       (setq r (qrest z))
+       (getRidOfTemps (subst x g r :test #'equal)))
+     ((eq (car z) '|/throwAway|)
+       (getRidOfTemps (cdr z)))
+     (t
+       (cons (car z) (getRidOfTemps (cdr z))))))))
+ (tryToRemoveSEQ (SEQToCOND (getRidOfTemps (cdr arg))))))
+
+(defun |optSPADCALL| (form)
+ (let (fun argl tmp1 dom slot)
+ (declare (special |$InteractiveMode|))
+  (setq argl (cdr form))
+  (cond
+   ; last arg is function/env, but may be a form
+   ((null |$InteractiveMode|) form)
+   ((and (consp argl)
+         (progn (setq tmp1 (reverse argl)) t)
+         (consp tmp1))
+     (setq fun (qfirst tmp1))
+     (setq argl (qrest tmp1))
+     (setq argl (nreverse argl))
+     (cond
+      ((and (consp fun) 
+            (eq (qfirst fun) 'elt)
+            (progn
+              (and (consp (qrest fun))
+                   (progn
+                    (setq dom (qsecond fun))
+                    (and (consp (qcddr fun))
+                         (eq (qcdddr fun) nil)
+                         (progn
+                           (setq slot (qthird fun))
+                           t))))))
+       (|optCall| (cons '|call| (cons (list 'elt dom slot) argl))))
+      (t form)))
+  (t form))))
+
+(defun |optSpecialCall| (x y n)
+ (let (yval args tmp1 fn a)
+ (declare (special |$QuickCode| |Undef|))
+  (setq yval (|optCallEval| y))
+  (cond
+   ((eq (caaar x) 'const)
+     (cond
+      ((equal (ifcar (elt yval n)) #'|Undef|)
+        (|keyedSystemError| 
+            "Unexpected error or improper call to system function %1: %2"
+          (list "optSpecialCall" "invalid constant")))
+      (t (mkq (elt yval n)))))
+   ((setq fn (getl (|compileTimeBindingOf| (car (elt yval n))) '|SPADreplace|))
+     (|rplac| (cdr x) (cdar x))
+     (|rplac| (car x) fn)
+     (when (and (consp fn) (eq (qfirst fn) 'xlam))
+      (setq x (car (|optimize| (list x)))))
+     (if (and (consp x) (eq (qfirst x) 'equal) (progn (setq args (qrest x)) t))
+      (rplacw x (def-equal args))
+      x))
+   (t
+    (setq tmp1 (car x))
+    (setq fn (car tmp1))
+    (setq a (cdr tmp1))
+    (rplac (car x) 'spadcall)
+    (when |$QuickCode| (rplaca fn 'qrefelt))
+    (rplac (cdr x) (append a (list fn)))
+     x))))
+
+(defun |optSuchthat| (arg)
+ (cons 'suchthat (cdr arg)))
+
+(defun |optXLAMCond| (x)
+ (cond
+   ((and (consp x) (eq (qfirst x) 'cond) (consp (qrest x))
+         (consp (qsecond x)) (consp (qcdadr x))
+         (eq (qcddadr x) nil))
+     (if (|optPredicateIfTrue| (qcaadr x)) 
+       (qcadadr x)
+       (cons 'cond (cons (qsecond x) (|optCONDtail| (qcddr x))))))
+   ((atom x) x)
+   (t
+     (rplac (car x) (|optXLAMCond| (car x)))
+     (rplac (cdr x) (|optXLAMCond| (cdr x)))
+     x)))
+
+(defun |opt-| (u)
+ (let (v)
+  (cond
+   ((and (consp u) (eq (qfirst u) '-) (consp (qrest u))
+         (eq (qcddr u) NIL))
+    (setq v (qsecond u))
+    (cond ((numberp v) (- v)) (t u)))
+   (t u))))
+
+(defun |orderByDependency| (vl dl)
+ (let (selfDependents fatalError newl orderedVarList vlp dlp)
+  (setq selfDependents
+   (loop for v in vl for d in dl 
+    when (member v d)
+    collect v))
+  (loop for v in vl for d in dl
+   when (member v d)
+   do (say v "depends on itself")
+      (setq fatalError t))
+  (cond
+    (fatalError (|userError| "Parameter specification error"))
+    (t
+     (loop until (null vl) do
+       (setq newl
+         (loop for v in vl for d in dl
+          when (null (|intersection| d vl))
+          collect v))
+        (if (null newl)
+         (setq vl nil) ; force loop exit
+         (progn
+          (setq orderedVarList (append newl orderedVarList))
+          (setq vlp (setdifference vl newl))
+          (setq dlp
+          (loop for x in vl for d in dl
+           when (|member| x vlp)
+           collect (setdifference d newl)))
+          (setq vl vlp)
+          (setq dl dlp))))
+        (when (and newl orderedVarList) (remdup (nreverse orderedVarList)))))))
+
+(defun |orderPredicateItems| (pred1 sig skip)
+ (let (pred)
+  (setq pred (|signatureTran| pred1))
+  (if (and (consp pred) (eq (qfirst pred) 'and))
+     (|orderPredTran| (qrest pred) sig skip)
+     pred)))
+
+(defun |orderPredTran| (oldList sig skip)
+ (let (lastDependList somethingDone lastPreds indepvl depvl dependList 
+       noldList x ids fullDependList newList answer)
+;  --(1) make two kinds of predicates appear last:
+;  -----  (op *target ..) when *target does not appear later in sig
+;  -----  (isDomain *1 ..)
+  (SEQ 
+   (loop for pred in oldList 
+    do (cond
+        ((or (and (consp pred) (consp (qrest pred))
+                  (consp (qcddr pred))
+                  (eq (qcdddr pred) nil)
+                  (member (qfirst pred) '(|isDomain| |ofCategory|))
+                  (equal (qsecond pred) (car sig))
+                  (null (|member| (qsecond pred) (cdr sig))))
+             (and (null skip) (consp pred) (eq (qfirst pred) '|isDomain|)
+                  (consp (qrest pred)) (consp (qcddr pred))
+                  (eq (qcdddr pred) nil)
+                  (equal (qsecond pred) '*1)))
+           (setq oldList (|delete| pred oldList))
+           (setq lastPreds (cons pred lastPreds)))))
+;  --(2a) lastDependList=list of all variables that lastPred forms depend upon
+   (setq lastDependList
+    (let (result)
+     (loop for x in lastPreds
+      do (setq result (unionq result (|listOfPatternIds| x))))
+    result))
+;  --(2b) dependList=list of all variables that isDom/ofCat forms depend upon
+   (setq dependList
+    (let (result)
+     (loop for x in oldList
+      do (when 
+          (and (consp x) 
+               (or (eq (qfirst x) '|isDomain|) (eq (qfirst x) '|ofCategory|))
+               (consp (qrest x)) (consp (qcddr x))
+               (eq (qcdddr x) nil))
+           (setq result (unionq result (|listOfPatternIds| (third x))))))
+     result))
+;  --(3a) newList= list of ofCat/isDom entries that don't depend on
+   (loop for x in oldList
+    do
+      (cond
+       ((and (consp x) 
+             (or (eq (qfirst x) '|ofCategory|) (eq (qfirst x) '|isDomain|))
+             (consp (qrest x)) (consp (qcddr x))
+             (eq (qcdddr x) nil))
+        (setq indepvl (|listOfPatternIds| (second x)))
+        (setq depvl (|listOfPatternIds| (third x))))
+       (t
+         (setq indepvl (|listOfPatternIds| x))
+         (setq depvl nil)))
+      (when
+       (and (null (intersectionq indepvl dependList))
+            (intersectionq indepvl lastDependList))
+          (setq somethingDone t)
+          (setq lastPreds (append lastPreds (list x)))
+          (setq oldList (|delete| x oldList))))
+;  --(3b) newList= list of ofCat/isDom entries that don't depend on
+   (loop while oldList do
+    (loop for x in oldList do
+     (cond
+      ((and (consp x) 
+            (or (eq (qfirst x) '|ofCategory|) (eq (qfirst x) '|isDomain|))
+            (consp (qrest x))
+            (consp (qcddr x)) (eq (qcdddr x) nil))
+       (setq indepvl (|listOfPatternIds| (second x)))
+       (setq depvl (|listOfPatternIds| (third x))))
+      (t
+        (setq indepvl (|listOfPatternIds| x))
+        (setq depvl nil)))
+     (when (null (intersectionq indepvl dependList))
+        (setq dependList (SETDIFFERENCE dependList depvl))
+        (setq newList (APPEND newList (list x)))))
+;  --(4) noldList= what is left over
+    (cond
+     ((equal (setq noldList (setdifference oldList newList)) oldList)
+       (setq newList (APPEND newList oldList))
+       (return nil))
+     (t
+       (setq oldList noldList))))
+   (loop for pred in newList do 
+     (when
+       (and (consp pred) 
+             (or (eq (qfirst pred) '|isDomain|) (eq (qfirst x) '|ofCategory|))
+             (consp (qrest pred))
+             (consp (qcddr pred))
+             (eq (qcdddr pred) nil))
+         (setq ids (|listOfPatternIds| (third pred)))
+         (when 
+           (let (result)
+             (loop for id in ids do
+              (setq result (and result (|member| id fullDependList))))
+             result)
+           (setq fullDependList (|insertWOC| (second pred) fullDependList)))
+         (setq fullDependList (unionq fullDependList ids))))
+   (setq newList (append newList lastPreds))
+   (setq newList (|isDomainSubst| newList))
+   (setq answer 
+    (cons (cons 'and newList) (intersectionq fullDependList sig))))))
+
+(defun |outputComp| (x env)
+ (let (argl v)
+ (declare (special |$Expression|))
+  (cond
+   ((|comp| (list '|::| x |$Expression|) |$Expression| env))
+   ((and (consp x) (eq (qfirst x) '|construct|))
+     (setq argl (qrest x))
+     (list (cons 'list
+      (let (result tmp1)
+       (loop for x in argl
+        do (setq result
+            (cons (car
+             (progn
+              (setq tmp1 (|outputComp| x env))
+              (setq env (third tmp1))
+               tmp1))
+               result)))
+         (nreverse0 result)))
+        |$Expression| env))
+     ((and (setq v (|get| x '|value| env))
+           (consp (cadr v)) (eq (qfirst (cadr v)) '|Union|))
+        (list (list '|coerceUn2E| x (cadr v)) |$Expression| env))
+     (t (list x |$Expression| env)))))
+
+
+(defun |PARSE-AnyId| ()
+  (or (parse-identifier)
+      (or (and (match-string "$")
+               (push-reduction '|PARSE-AnyId| (current-symbol))
+               (action (advance-token)))
+          (parse-keyword))))
+
+(defun |PARSE-Application| ()
+ (and (|PARSE-Primary|) (optional (star opt_expr (|PARSE-Selector|)))
+      (optional
+          (and (|PARSE-Application|)
+               (push-reduction '|PARSE-Application|
+                   (list (pop-stack-2) (pop-stack-1)))))))
+
+(defun parse-argument-designator ()
+  (let* ((tok (match-current-token 'argument-designator))
+         (symbol (if tok (token-symbol tok))))
+    (when tok
+      (push-reduction 'argument-designator-token (copy-tree symbol))
+      (advance-token)
+      t)))
+
+(defun parse-identifier ()
+  (let* ((tok (match-current-token 'identifier))
+         (symbol (if tok (token-symbol tok))))
+    (when tok
+      (push-reduction 'identifier-token (copy-tree symbol))
+      (advance-token)
+      t)))
+
+(defun parse-keyword ()
+  (let* ((tok (match-current-token 'keyword))
+         (symbol (if tok (token-symbol tok))))
+    (when tok
+      (push-reduction 'keyword-token (copy-tree symbol))
+      (advance-token)
+      t)))
+
+(defun parse-number ()
+  (let* ((tok (match-current-token 'number))
+         (symbol (if tok (token-symbol tok))))
+    (when tok
+      (push-reduction 'number-token (copy-tree symbol))
+      (advance-token)
+      t)))
+
+(defun parse-spadstring ()
+  (let* ((tok (match-current-token 'spadstring))
+         (symbol (if tok (token-symbol tok))))
+    (when tok
+      (push-reduction 'spadstring-token (copy-tree symbol))
+      (advance-token)
+      t)))
+
+(defun parse-string ()
+  (let* ((tok (match-current-token 'string))
+         (symbol (if tok (token-symbol tok))))
+    (when tok
+      (push-reduction 'string-token (copy-tree symbol))
+      (advance-token)
+      t)))
+
+(defun |PARSE-Category| ()
+ (let (g1)
+  (or (and (match-advance-string "if") (must (|PARSE-Expression|))
+           (must (match-advance-string "then"))
+           (must (|PARSE-Category|))
+           (bang fil_test
+                 (optional
+                     (and (match-advance-string "else")
+                          (must (|PARSE-Category|)))))
+           (push-reduction '|PARSE-Category|
+             (list '|if| (pop-stack-3) (pop-stack-2) (pop-stack-1))))
+      (and (match-advance-string "(") (must (|PARSE-Category|))
+           (bang fil_test
+                 (optional
+                     (star repeator
+                           (and (match-advance-string ";")
+                                (must (|PARSE-Category|))))))
+           (must (match-advance-string ")"))
+           (push-reduction '|PARSE-Category|
+               (cons 'category
+                     (cons (pop-stack-2)
+                           (append (pop-stack-1) nil)))))
+      (and (action (setq g1 (line-number current-line)))
+           (|PARSE-Application|)
+           (must (or (and (match-advance-string ":")
+                          (must (|PARSE-Expression|))
+                          (push-reduction '|PARSE-Category|
+                           (list '|Signature| (pop-stack-2) (pop-stack-1) ))
+                          (action (|recordSignatureDocumentation|
+                                   (nth-stack 1) g1)))
+                     (and (push-reduction '|PARSE-Category|
+                            (list '|Attribute| (pop-stack-1) ))
+                          (action (|recordAttributeDocumentation|
+                                   (nth-stack 1) g1)))))))))
+
+(defun |PARSE-Command| ()
+ (and (match-advance-string ")") (must (|PARSE-SpecialKeyWord|))
+      (must (|PARSE-SpecialCommand|))
+      (push-reduction '|PARSE-Command| nil)))
+
+(defun |PARSE-CommandTail| ()
+ (and (bang fil_test (optional (star repeator (|PARSE-Option|))))
+      (|atEndOfLine|)
+      (push-reduction '|PARSE-CommandTail|
+          (cons (pop-stack-2) (append (pop-stack-1) nil)))
+      (action (|systemCommand| (pop-stack-1)))))
+
+(defun |PARSE-Conditional| ()
+  (and (match-advance-string "if") (must (|PARSE-Expression|))
+       (must (match-advance-string "then")) (must (|PARSE-Expression|))
+       (bang fil_test
+             (optional
+                 (and (match-advance-string "else")
+                      (must (|PARSE-ElseClause|)))))
+       (push-reduction '|PARSE-Conditional|
+           (list '|if| (pop-stack-3) (pop-stack-2) (pop-stack-1)))))
+
+(defun |PARSE-Data| ()
+  (declare (special lablasoc))
+  (and (action (setq lablasoc nil)) (|PARSE-Sexpr|)
+       (push-reduction '|PARSE-Data|
+           (list 'quote (translabel (pop-stack-1) lablasoc)))))
+
+(defun |PARSE-ElseClause| ()
+  (or (and (eq (current-symbol) '|if|) (|PARSE-Conditional|))
+      (|PARSE-Expression|)))
+
+(defun |PARSE-Enclosure| ()
+  (or (and (match-advance-string "(")
+           (must (or (and (|PARSE-Expr| 6)
+                          (must (match-advance-string ")")))
+                     (and (match-advance-string ")")
+                          (push-reduction '|PARSE-Enclosure|
+                              (list '|@Tuple|))))))
+      (and (match-advance-string "{")
+           (must (or (and (|PARSE-Expr| 6)
+                          (must (match-advance-string "}"))
+                          (push-reduction '|PARSE-Enclosure|
+                              (cons '|brace|
+                               (list (list '|construct| (pop-stack-1))))))
+                     (and (match-advance-string "}")
+                          (push-reduction '|PARSE-Enclosure|
+                              (list '|brace|))))))))
+
+(defun |PARSE-Exit| ()
+  (and (match-advance-string "exit")
+       (must (or (|PARSE-Expression|)
+                 (push-reduction '|PARSE-Exit| '|$NoValue|)))
+       (push-reduction '|PARSE-Exit|
+           (list '|exit| (pop-stack-1)))))
+
+(defun |PARSE-Expr| (rbp)
+ (declare (special rbp))
+ (and (|PARSE-NudPart| rbp)
+      (optional (star opt_expr (|PARSE-LedPart| rbp)))
+      (push-reduction '|PARSE-Expr| (pop-stack-1))))
+
+(defun |PARSE-Expression| ()
+ (declare (special prior-token))
+ (and (|PARSE-Expr|
+          (|PARSE-rightBindingPowerOf| (make-symbol-of prior-token)
+              |ParseMode|))
+      (push-reduction '|PARSE-Expression| (pop-stack-1))))
+
+(defun |PARSE-Float| ()
+  (and (|PARSE-FloatBase|)
+       (must (or (and nonblank (|PARSE-FloatExponent|))
+                 (push-reduction '|PARSE-Float| 0)))
+       (push-reduction '|PARSE-Float|
+           (make-float (pop-stack-4) (pop-stack-2) (pop-stack-2)
+               (pop-stack-1)))))
+
+(defun |PARSE-FloatBase| ()
+  (or (and (integerp (current-symbol)) (char-eq (current-char) ".")
+           (char-ne (next-char) ".") (|PARSE-IntegerTok|)
+           (must (|PARSE-FloatBasePart|)))
+      (and (integerp (current-symbol))
+           (char-eq (char-upcase (current-char)) 'e)
+           (|PARSE-IntegerTok|) (push-reduction '|PARSE-FloatBase| 0)
+           (push-reduction '|PARSE-FloatBase| 0))
+      (and (digitp (current-char)) (eq (current-symbol) '|.|)
+           (push-reduction '|PARSE-FloatBase| 0)
+           (|PARSE-FloatBasePart|))))
+
+(defun |PARSE-FloatBasePart| ()
+  (and (match-advance-string ".")
+       (must (or (and (digitp (current-char))
+                      (push-reduction '|PARSE-FloatBasePart|
+                          (token-nonblank (current-token)))
+                      (|PARSE-IntegerTok|))
+                 (and (push-reduction '|PARSE-FloatBasePart| 0)
+                      (push-reduction '|PARSE-FloatBasePart| 0))))))
+
+(defun |PARSE-FloatExponent| ()
+ (let (g1)
+  (or (and (member (current-symbol) '(e |e|))
+           (find (current-char) "+-") (action (advance-token))
+           (must (or (|PARSE-IntegerTok|)
+                     (and (match-advance-string "+")
+                          (must (|PARSE-IntegerTok|)))
+                     (and (match-advance-string "-")
+                          (must (|PARSE-IntegerTok|))
+                          (push-reduction '|PARSE-FloatExponent|
+                              (- (pop-stack-1))))
+                     (push-reduction '|PARSE-FloatExponent| 0))))
+      (and (identp (current-symbol))
+           (setq g1 (floatexpid (current-symbol)))
+           (action (advance-token))
+           (push-reduction '|PARSE-FloatExponent| g1)))))
+
+(defun |PARSE-FloatTok| ()
+ (declare (special $boot))
+  (and (parse-number)
+       (push-reduction '|PARSE-FloatTok|
+           (if $boot (pop-stack-1) (bfp- (pop-stack-1))))))
+
+(defun |PARSE-Form| ()
+  (or (and (match-advance-string "iterate")
+           (bang fil_test
+                 (optional
+                     (and (match-advance-string "from")
+                          (must (|PARSE-Label|))
+                          (push-reduction '|PARSE-Form|
+                             (list (pop-stack-1))))))
+           (push-reduction '|PARSE-Form|
+               (cons '|iterate| (append (pop-stack-1) nil))))
+      (and (match-advance-string "yield") (must (|PARSE-Application|))
+           (push-reduction '|PARSE-Form|
+               (list '|yield| (pop-stack-1))))
+      (|PARSE-Application|)))
+
+(defun |PARSE-FormalParameter| () (|PARSE-FormalParameterTok|))
+
+(defun |PARSE-FormalParameterTok| () (parse-argument-designator))
+
+(defun |PARSE-getSemanticForm| (x ind y)
+  (declare (special x ind y))
+  (or (and y (eval y)) (and (eq ind '|Nud|) (|PARSE-Prefix|))
+      (and (eq ind '|Led|) (|PARSE-Infix|))))
+
+(defun |PARSE-GliphTok| (|tok|)
+ (declare (special |tok|))
+ (and (match-current-token 'gliph |tok|) (action (advance-token))))
+
+(defun |PARSE-Import| ()
+  (and (match-advance-string "import") (must (|PARSE-Expr| 1000))
+       (bang fil_test
+             (optional
+                 (star repeator
+                       (and (match-advance-string ",")
+                            (must (|PARSE-Expr| 1000))))))
+       (push-reduction '|PARSE-Import|
+           (cons '|import|
+                 (cons (pop-stack-2) (append (pop-stack-1) nil))))))
+
+(defun |PARSE-Infix| ()
+  (and (push-reduction '|PARSE-Infix| (current-symbol))
+       (action (advance-token)) (optional (|PARSE-TokTail|))
+       (must (|PARSE-Expression|))
+       (push-reduction '|PARSE-Infix|
+           (list (pop-stack-2) (pop-stack-2) (pop-stack-1) ))))
+
+(defun |PARSE-InfixWith| ()
+  (and (|PARSE-With|)
+       (push-reduction '|PARSE-InfixWith|
+           (list '|Join| (pop-stack-2) (pop-stack-1)))))
+
+(defun |PARSE-IntegerTok| () (parse-number))
+
+(defun |PARSE-Iterator| ()
+  (or (and (match-advance-string "for") (must (|PARSE-Primary|))
+           (must (match-advance-string "in"))
+           (must (|PARSE-Expression|))
+           (must (or (and (match-advance-string "by")
+                          (must (|PARSE-Expr| 200))
+                          (push-reduction '|PARSE-Iterator|
+                           (list 'inby (pop-stack-3)
+                                       (pop-stack-2) (pop-stack-1))))
+                     (push-reduction '|PARSE-Iterator|
+                         (list 'in (pop-stack-2) (pop-stack-1)))))
+           (optional
+               (and (match-advance-string "|")
+                    (must (|PARSE-Expr| 111))
+                    (push-reduction '|PARSE-Iterator|
+                        (list '|\|| (pop-stack-1))))))
+      (and (match-advance-string "while") (must (|PARSE-Expr| 190))
+           (push-reduction '|PARSE-Iterator|
+               (list 'while (pop-stack-1))))
+      (and (match-advance-string "until") (must (|PARSE-Expr| 190))
+           (push-reduction '|PARSE-Iterator|
+               (list 'until (pop-stack-1))))))
+
+(defun |PARSE-IteratorTail| ()
+ (or (and (match-advance-string "repeat")
+          (bang fil_test (optional (star repeator (|PARSE-Iterator|)))))
+     (star repeator (|PARSE-Iterator|))))
+
+(defun |PARSE-Label| ()
+  (and (match-advance-string "<<") (must (|PARSE-Name|))
+       (must (match-advance-string ">>"))))
+
+(defun |PARSE-LabelExpr| ()
+  (and (|PARSE-Label|) (must (|PARSE-Expr| 120))
+       (push-reduction '|PARSE-LabelExpr|
+           (list 'label (pop-stack-2) (pop-stack-1)))))
+
+(defun |PARSE-Leave| ()
+  (and (match-advance-string "leave")
+       (must (or (|PARSE-Expression|)
+                 (push-reduction '|PARSE-Leave| '|$NoValue|)))
+       (must (or (and (match-advance-string "from")
+                      (must (|PARSE-Label|))
+                      (push-reduction '|PARSE-Leave|
+                          (list '|leaveFrom| (pop-stack-1) (pop-stack-1))))
+                 (push-reduction '|PARSE-Leave|
+                     (list '|leave| (pop-stack-1)))))))
+
+(defun |PARSE-LedPart| (rbp)
+  (declare (special rbp))
+  (and (|PARSE-Operation| '|Led| rbp)
+       (push-reduction '|PARSE-LedPart| (pop-stack-1))))
+
+(defun |PARSE-leftBindingPowerOf| (x ind)
+ (declare (special x ind))
+ (let ((y (getl x ind))) (if y (elemn y 3 0) 0)))
+
+(defun |PARSE-Loop| ()
+  (or (and (star repeator (|PARSE-Iterator|))
+           (must (match-advance-string "repeat"))
+           (must (|PARSE-Expr| 110))
+           (push-reduction '|PARSE-Loop|
+               (cons 'repeat
+                     (append (pop-stack-2) (list (pop-stack-1))))))
+      (and (match-advance-string "repeat") (must (|PARSE-Expr| 110))
+           (push-reduction '|PARSE-Loop|
+               (list 'repeat (pop-stack-1))))))
+
+(defun |PARSE-Name| ()
+  (and (parse-identifier) (push-reduction '|PARSE-Name| (pop-stack-1))))
+
+(defun |PARSE-NBGliphTok| (|tok|)
+ (declare (special |tok|))
+ (and (match-current-token 'gliph |tok|) nonblank (action (advance-token))))
+
+(defun |PARSE-NewExpr| ()
+ (or (and (match-string ")") (action (|processSynonyms|))
+          (must (|PARSE-Command|)))
+     (and (action (setq definition-name (current-symbol)))
+          (|PARSE-Statement|))))
+
+(defun |PARSE-NudPart| (rbp)
+  (declare (special rbp))
+  (and (or (|PARSE-Operation| '|Nud| rbp) (|PARSE-Reduction|)
+           (|PARSE-Form|))
+       (push-reduction '|PARSE-NudPart| (pop-stack-1))))
+
+(defun |PARSE-OpenBrace| ()
+ (let (g1)
+  (and (eq (|getToken| (setq g1 (current-symbol))) '{)
+       (must (or (and (eqcar g1 '|elt|)
+                      (push-reduction '|PARSE-OpenBrace|
+                          (list '|elt| (second g1) '|brace|)))
+                 (push-reduction '|PARSE-OpenBrace| '|construct|)))
+       (action (advance-token)))))
+
+(defun |PARSE-OpenBracket| ()
+ (let (g1)
+  (and (eq (|getToken| (setq g1 (current-symbol))) '[)
+       (must (or (and (eqcar g1 '|elt|)
+                      (push-reduction '|PARSE-OpenBracket|
+                          (list '|elt| (second g1) '|construct|)))
+                 (push-reduction '|PARSE-OpenBracket| '|construct|)))
+       (action (advance-token)))))
+
+(defun |PARSE-Operation| (|ParseMode| rbp)
+ (declare (special |ParseMode| rbp |tmptok|))
+ (and (not (match-current-token 'identifier))
+      (getl (setq |tmptok| (current-symbol)) |ParseMode|)
+      (lt rbp (|PARSE-leftBindingPowerOf| |tmptok| |ParseMode|))
+      (action (setq rbp (|PARSE-rightBindingPowerOf| |tmptok| |ParseMode|)))
+      (|PARSE-getSemanticForm| |tmptok| |ParseMode|
+          (elemn (getl |tmptok| |ParseMode|) 5 nil))))
+
+(defun |PARSE-Option| ()
+ (and (match-advance-string ")")
+      (must (star repeator (|PARSE-PrimaryOrQM|)))))
+
+(defun |PARSE-Prefix| ()
+  (and (push-reduction '|PARSE-Prefix| (current-symbol))
+       (action (advance-token)) (optional (|PARSE-TokTail|))
+       (must (|PARSE-Expression|))
+       (push-reduction '|PARSE-Prefix|
+           (list (pop-stack-2) (pop-stack-1)))))
+
+(defun |PARSE-Primary| ()
+  (or (|PARSE-Float|) (|PARSE-PrimaryNoFloat|)))
+
+(defun |PARSE-Primary1| ()
+ (declare (special $boot))
+  (or (and (|PARSE-VarForm|)
+           (optional
+               (and nonblank (eq (current-symbol) '|(|)
+                    (must (|PARSE-Primary1|))
+                    (push-reduction '|PARSE-Primary1|
+                        (list (pop-stack-2) (pop-stack-1))))))
+      (|PARSE-Quad|) (|PARSE-String|) (|PARSE-IntegerTok|)
+      (|PARSE-FormalParameter|)
+      (and (match-string "'")
+           (must (or (and $boot (|PARSE-Data|))
+                     (and (match-advance-string "'")
+                          (must (|PARSE-Expr| 999))
+                          (push-reduction '|PARSE-Primary1|
+                              (list 'quote (pop-stack-1)))))))
+      (|PARSE-Sequence|) (|PARSE-Enclosure|)))
+
+(defun |PARSE-PrimaryNoFloat| ()
+  (and (|PARSE-Primary1|) (optional (|PARSE-TokTail|))))
+
+(defun |PARSE-PrimaryOrQM| ()
+ (or (and (match-advance-string "?")
+          (push-reduction '|PARSE-PrimaryOrQM| '?))
+     (|PARSE-Primary|)))
+
+(defun |PARSE-Qualification| ()
+  (and (match-advance-string "$") (must (|PARSE-Primary1|))
+       (push-reduction '|PARSE-Qualification|
+           (|dollarTran| (pop-stack-1) (pop-stack-1)))))
+
+(defun |PARSE-Quad| ()
+ (or (and (match-advance-string "$")
+          (push-reduction '|PARSE-Quad| '$))
+     (and $boot (|PARSE-GliphTok| '|.|)
+          (push-reduction '|PARSE-Quad| '|.|))))
+
+(defun |PARSE-Reduction| ()
+ (and (|PARSE-ReductionOp|) (must (|PARSE-Expr| 1000))
+      (push-reduction '|PARSE-Reduction|
+          (list '|Reduce| (pop-stack-2) (pop-stack-1) ))))
+
+(defun |PARSE-ReductionOp| ()
+  (and (getl (current-symbol) '|Led|)
+       (match-next-token 'special-char (code-char 47))
+       (push-reduction '|PARSE-ReductionOp| (current-symbol))
+       (action (advance-token)) (action (advance-token))))
+
+(defun |PARSE-Return| ()
+  (and (match-advance-string "return") (must (|PARSE-Expression|))
+       (push-reduction '|PARSE-Return|
+           (list '|return| (pop-stack-1)))))
+
+(defun |PARSE-rightBindingPowerOf| (x ind)
+  (declare (special x ind))
+  (let ((y (getl x ind))) (if y (elemn y 4 105) 105)))
+
+(defun |PARSE-ScriptItem| ()
+  (or (and (|PARSE-Expr| 90)
+           (optional
+               (and (star repeator
+                          (and (match-advance-string ";")
+                               (must (|PARSE-ScriptItem|))))
+                    (push-reduction '|PARSE-ScriptItem|
+                        (cons '|;|
+                              (cons (pop-stack-2)
+                                    (append (pop-stack-1) nil)))))))
+      (and (match-advance-string ";") (must (|PARSE-ScriptItem|))
+           (push-reduction '|PARSE-ScriptItem|
+               (list '|PrefixSC| (pop-stack-1))))))
+
+(defun |PARSE-Scripts| ()
+ (and nonblank (match-advance-string "[") (must (|PARSE-ScriptItem|))
+      (must (match-advance-string "]"))))
+
+(defun |PARSE-Seg| ()
+  (and (|PARSE-GliphTok| '|..|)
+       (bang fil_test (optional (|PARSE-Expression|)))
+       (push-reduction '|PARSE-Seg|
+           (list 'segment (pop-stack-2) (pop-stack-1)))))
+
+(defun |PARSE-Selector| ()
+  (declare (special $boot))
+  (or (and nonblank (eq (current-symbol) '|.|)
+           (char-ne (current-char) '| |) (match-advance-string ".")
+           (must (|PARSE-PrimaryNoFloat|))
+           (must (or (and $boot
+                          (push-reduction '|PARSE-Selector|
+                              (list 'elt (pop-stack-2) (pop-stack-1))))
+                     (push-reduction '|PARSE-Selector|
+                         (list (pop-stack-2) (pop-stack-1))))))
+      (and (or (|PARSE-Float|)
+               (and (match-advance-string ".")
+                    (must (|PARSE-Primary|))))
+           (must (or (and $boot
+                          (push-reduction '|PARSE-Selector|
+                              (list 'elt (pop-stack-2) (pop-stack-1))))
+                     (push-reduction '|PARSE-Selector|
+                         (list (pop-stack-2) (pop-stack-1))))))))
+
+(defun |PARSE-SemiColon| ()
+  (and (match-advance-string ";")
+       (must (or (|PARSE-Expr| 82)
+                 (push-reduction '|PARSE-SemiColon| '|/throwAway|)))
+       (push-reduction '|PARSE-SemiColon|
+           (list '|;| (pop-stack-2) (pop-stack-1)))))
+
+(defun |PARSE-Sequence| ()
+  (or (and (|PARSE-OpenBracket|) (must (|PARSE-Sequence1|))
+           (must (match-advance-string "]")))
+      (and (|PARSE-OpenBrace|) (must (|PARSE-Sequence1|))
+           (must (match-advance-string "}"))
+           (push-reduction '|PARSE-Sequence|
+               (list '|brace| (pop-stack-1))))))
+
+(defun |PARSE-Sequence1| ()
+  (and (or (and (|PARSE-Expression|)
+                (push-reduction '|PARSE-Sequence1|
+                    (list (pop-stack-2) (pop-stack-1))))
+           (push-reduction '|PARSE-Sequence1| (list (pop-stack-1))))
+       (optional
+           (and (|PARSE-IteratorTail|)
+                (push-reduction '|PARSE-Sequence1|
+                    (cons 'collect
+                          (append (pop-stack-1)
+                                  (list (pop-stack-1)))))))))
+
+(defun |PARSE-Sexpr| ()
+  (and (action (advance-token)) (|PARSE-Sexpr1|)))
+
+(defun |PARSE-Sexpr1| ()
+  (or (and (|PARSE-AnyId|)
+           (optional
+               (and (|PARSE-NBGliphTok| '=) (must (|PARSE-Sexpr1|))
+                    (action (setq lablasoc
+                                  (cons (cons (pop-stack-2)
+                                         (nth-stack 1))
+                                        lablasoc))))))
+      (and (match-advance-string "'") (must (|PARSE-Sexpr1|))
+           (push-reduction '|PARSE-Sexpr1|
+               (list 'quote (pop-stack-1))))
+      (|PARSE-IntegerTok|)
+      (and (match-advance-string "-") (must (|PARSE-IntegerTok|))
+           (push-reduction '|PARSE-Sexpr1| (- (pop-stack-1))))
+      (|PARSE-String|)
+      (and (match-advance-string "<")
+           (bang fil_test (optional (star repeator (|PARSE-Sexpr1|))))
+           (must (match-advance-string ">"))
+           (push-reduction '|PARSE-Sexpr1| (list2vec (pop-stack-1))))
+      (and (match-advance-string "(")
+           (bang fil_test
+                 (optional
+                     (and (star repeator (|PARSE-Sexpr1|))
+                          (optional
+                              (and (|PARSE-GliphTok| '|.|)
+                                   (must (|PARSE-Sexpr1|))
+                                   (push-reduction '|PARSE-Sexpr1|
+                                    (nconc (pop-stack-2) (pop-stack-1))))))))
+           (must (match-advance-string ")")))))
+
+(defun |PARSE-SpecialCommand| ()
+ (declare (special |$noParseCommands| |$tokenCommands|))
+ (or (and (match-advance-string "show")
+          (bang fil_test
+                (optional
+                    (or (match-advance-string "?")
+                        (|PARSE-Expression|))))
+          (push-reduction '|PARSE-SpecialCommand|
+              (list '|show| (pop-stack-1)))
+          (must (|PARSE-CommandTail|)))
+     (and (member (current-symbol) |$noParseCommands|)
+          (action (funcall (current-symbol))))
+     (and (member (current-symbol) |$tokenCommands|)
+          (|PARSE-TokenList|) (must (|PARSE-TokenCommandTail|)))
+     (and (star repeator (|PARSE-PrimaryOrQM|))
+          (must (|PARSE-CommandTail|)))))
+
+(defun |PARSE-SpecialKeyWord| ()
+ (and (match-current-token 'identifier)
+      (action (setf (token-symbol (current-token))
+                    (|unAbbreviateKeyword| (current-symbol))))))
+
+(defun |PARSE-Statement| ()
+  (and (|PARSE-Expr| 0)
+       (optional
+           (and (star repeator
+                      (and (match-advance-string ",")
+                           (must (|PARSE-Expr| 0))))
+                (push-reduction '|PARSE-Statement|
+                    (cons '|Series|
+                          (cons (pop-stack-2)
+                                (append (pop-stack-1) nil))))))))
+
+(defun |PARSE-String| () (parse-spadstring))
+
+(defun |PARSE-Suffix| ()
+  (and (push-reduction '|PARSE-Suffix| (current-symbol))
+       (action (advance-token)) (optional (|PARSE-TokTail|))
+       (push-reduction '|PARSE-Suffix|
+           (list (pop-stack-1) (pop-stack-1)))))
+
+(defun |PARSE-TokenCommandTail| ()
+ (and (bang fil_test (optional (star repeator (|PARSE-TokenOption|))))
+      (|atEndOfLine|)
+      (push-reduction '|PARSE-TokenCommandTail|
+          (cons (pop-stack-2) (append (pop-stack-1) nil)))
+      (action (|systemCommand| (pop-stack-1)))))
+
+(defun |PARSE-TokenList| ()
+ (star repeator
+  (and (not (|isTokenDelimiter|))
+       (push-reduction '|PARSE-TokenList| (current-symbol))
+       (action (advance-token)))))
+
+(defun |PARSE-TokenOption| ()
+ (and (match-advance-string ")") (must (|PARSE-TokenList|))))
+
+(defun |PARSE-TokTail| ()
+ (let (g1)
+  (and (null $boot) (eq (current-symbol) '$)
+       (or (alpha-char-p (current-char))
+           (char-eq (current-char) "$")
+           (char-eq (current-char) "%")
+           (char-eq (current-char) "("))
+       (action (setq g1 (copy-token prior-token)))
+       (|PARSE-Qualification|) (action (setq prior-token g1)))))
+
+(defun |PARSE-VarForm| ()
+  (and (|PARSE-Name|)
+       (optional
+           (and (|PARSE-Scripts|)
+                (push-reduction '|PARSE-VarForm|
+                    (list '|Scripts| (pop-stack-2) (pop-stack-1)))))
+       (push-reduction '|PARSE-VarForm| (pop-stack-1))))
+
+(defun |PARSE-With| ()
+  (and (match-advance-string "with") (must (|PARSE-Category|))
+       (push-reduction '|PARSE-With|
+           (cons '|with| (cons (pop-stack-1) nil)))))
+
+(defun parsepiles (locs lines)
+  (mapl #'add-parens-and-semis-to-line
+    (nconc lines '(" ")) (nconc locs '(nil)))
+  lines)
+
+(defun |parseAnd| (arg)
+ (cond
+  (|$InteractiveMode| (cons '|and| (|parseTranList| arg)))
+  ((null arg) '|true|)
+  ((null (cdr arg)) (car arg))
+  (t
+   (|parseIf|
+    (list (|parseTran| (car arg)) (|parseAnd| (CDR arg)) '|false| )))))
+
+(defun |parseAtom| (x)
+ (declare (special |$NoValue|))
+ (if (eq x '|break|)
+  (|parseLeave| (list '|$NoValue|))
+  x))
+
+(defun |parseAtSign| (arg)
+ (declare (special |$InteractiveMode|))
+ (if |$InteractiveMode|
+  (list '@ (|parseTran| (first arg)) (|parseTran| (|parseType| (second arg))))
+  (list '@ (|parseTran| (first arg)) (|parseTran| (second arg)))))
+
+(defun |parseCategory| (arg)
+ (let (z key)
+  (setq z (|parseTranList| (|parseDropAssertions| arg)))
+  (setq key (if (contained '$ z) '|domain| '|package|))
+  (cons 'category (cons key z))))
+
+(defun |parseCoerce| (arg)
+ (if |$InteractiveMode|
+  (list '|::|
+    (|parseTran| (first arg)) (|parseTran| (|parseType| (second arg))))
+  (list '|::| (|parseTran| (first arg)) (|parseTran| (second arg)))))
+
+(defun |parseColon| (arg)
+ (declare (special |$insideConstructIfTrue|))
+ (cond
+  ((and (consp arg) (eq (qrest arg) nil))
+   (list '|:| (|parseTran| (first arg))))
+  ((and (consp arg) (consp (qrest arg)) (eq (qcddr arg) nil))
+    (if |$InteractiveMode|
+      (if |$insideConstructIfTrue|
+        (list 'tag (|parseTran| (first arg))
+                   (|parseTran| (second arg)))
+        (list '|:| (|parseTran| (first arg))
+                   (|parseTran| (|parseType| (second arg)))))
+      (list '|:| (|parseTran| (first arg))
+                 (|parseTran| (second arg)))))))
+
+(defun |parseConstruct| (u)
+ (let (|$insideConstructIfTrue| x)
+ (declare (special |$insideConstructIfTrue|))
+  (setq |$insideConstructIfTrue| t)
+  (setq x (|parseTranList| u))
+  (cons '|construct| x)))
+
+(defun |parseDEF| (arg)
+ (let (|$lhs| tList specialList body)
+ (declare (special |$lhs|))
+  (setq |$lhs| (first arg))
+  (setq tList (second arg))
+  (setq specialList (third arg))
+  (setq body (fourth arg))
+  (setDefOp |$lhs|)
+  (list 'def (|parseLhs| |$lhs|)
+             (|parseTranList| tList)
+             (|parseTranList| specialList)
+             (|parseTranCheckForRecord| body (|opOf| |$lhs|)))))
+
+(defun |parseDollarGreaterEqual| (arg)
+ (declare (special |$op|))
+  (|parseTran| (list '|not| (cons (subst '$< '$>= |$op| :test #'equal) arg))))
+
+(defun |parseDollarGreaterThan| (arg)
+ (declare (special |$op|))
+  (list (subst '$< '$> |$op| :test #'equal)
+        (|parseTran| (second arg))
+        (|parseTran| (first arg))))
+
+(defun |parseDollarLessEqual| (arg)
+ (declare (special |$op|))
+  (|parseTran| (list '|not| (cons (subst '$> '$<= |$op| :test #'equal) arg))))
+
+(defun |parseDollarNotEqual| (arg)
+ (declare (special |$op|))
+ (|parseTran| (list '|not| (cons (subst '$= '$^= |$op| :test #'equal) arg))))
+
+(defun |parseDropAssertions| (x)
+ (cond
+  ((not (consp x)) x)
+  ((and (consp (qfirst x)) (eq (qcaar x) 'if)
+        (consp (qcdar x))
+        (eq (qcadar x) '|asserted|))
+     (|parseDropAssertions| (qrest x)))
+  (t (cons (qfirst x) (|parseDropAssertions| (qrest x))))))
+
+(defun |parseEquivalence| (arg)
+  (|parseIf|
+   (list (first arg) (second arg)
+     (|parseIf| (cons (second arg) '(|false| |true|))))))
+
+(defun |parseExit| (arg)
+ (let (a b)
+  (setq a (|parseTran| (car arg)))
+  (setq b (|parseTran| (cdr arg)))
+  (if b
+    (cond
+     ((null (integerp a))
+       (moan "first arg " a " for exit must be integer")
+       (list '|exit| 1 a ))
+     (t
+      (cons '|exit| (cons a b))))
+    (list '|exit| 1 a ))))
+
+(defun |postFlatten| (x op)
+ (let (a b)
+  (cond
+   ((and (consp x) (equal (qfirst x) op) (consp (qrest x))
+         (consp (qcddr x)) (eq (qcdddr x) nil))
+     (setq a (qsecond x))
+     (setq b (qthird x))
+     (append (|postFlatten| a op) (|postFlatten| b op)))
+   (t (list x)))))
+
+(defun |postFlattenLeft| (x op)
+ (let (a b)
+  (cond
+   ((and (consp x) (equal (qfirst x) op) (consp (qrest x))
+         (consp (qcddr x)) (eq (qcdddr x) nil))
+     (setq a (qsecond x))
+     (setq b (qthird x))
+     (append (|postFlattenLeft| a op) (list b)))
+   (t (list x)))))
+
+(defun postForm (u)
+ (let (op argl arglp numOfArgs opp x)
+ (declare (special $boot))
+  (seq
+   (setq op (car u))
+   (setq argl (cdr u))
+   (setq x
+    (cond
+     ((atom op)
+       (setq arglp (postTranList argl))
+       (setq opp
+         (seq 
+          (exit op)
+          (when $boot (exit op))
+          (when (or (getl op '|Led|)  (getl op '|Nud|) (eq op 'in)) (exit op))
+          (setq numOfArgs
+           (cond
+            ((and (consp arglp) (eq (qrest arglp) nil) (consp (qfirst arglp)) 
+                  (eq (qcaar arglp) '|@Tuple|))
+              (|#| (qcdar arglp)))
+            (t 1)))
+          (internl '* (princ-to-string numOfArgs) (pname op))))
+       (cons opp arglp))
+     ((and (consp op) (eq (qfirst op) '|Scripts|))
+       (append (|postTran| op) (postTranList argl)))
+     (t
+      (setq u (postTranList u))
+      (cond
+       ((and (consp u) (consp (qfirst u)) (eq (qcaar u) '|@Tuple|))
+         (postError
+          (cons "  "
+           (append (|bright| u)
+            (list "is illegal because tuples cannot be applied!" '|%l| 
+                  "   Did you misuse infix dot?"))))))
+       u)))
+   (cond
+    ((and (consp x) (consp (qrest x)) (eq (qcddr x) nil)
+          (consp (qsecond x)) (eq (qcaadr x) '|@Tuple|))
+     (cons (car x) (qcdadr x)))
+    (t x)))))
+
+(defun |parseGreaterEqual| (arg)
+ (declare (special |$op|))
+ (|parseTran| (list '|not| (cons (subst '< '>= |$op| :test #'equal) arg))))
+
+(defun |parseGreaterThan| (arg)
+ (declare (special |$op|))
+ (list (subst '< '> |$op| :test #'equal)
+  (|parseTran| (second arg)) (|parseTran| (first arg))))
+
+(defun |parseHas| (arg)
+ (labels (
+  (fn (arg)
+   (let (tmp4 tmp6 map op kk)
+   (declare (special |$InteractiveMode|))
+    (when |$InteractiveMode| (setq arg (|unabbrevAndLoad| arg)))
+    (cond
+     ((and (consp arg) (eq (qfirst arg) '|:|) (consp (qrest arg))
+               (consp (qcddr arg)) (eq (qcdddr arg) nil)
+               (consp (qthird arg))
+               (eq (qcaaddr arg) '|Mapping|))
+        (setq map (rest (third arg)))
+        (setq op (second arg))
+        (setq op (if (stringp op) (intern op) op))
+        (list (list 'signature op map)))
+     ((and (consp arg) (eq (qfirst arg) '|Join|))
+        (dolist (z (rest arg) tmp4)
+         (setq tmp4 (append tmp4 (fn z)))))
+     ((and (consp arg) (eq (qfirst arg) 'category))
+        (dolist (z (rest arg) tmp6)
+          (setq tmp6 (append tmp6 (fn z)))))
+     (t
+      (setq kk (getdatabase (|opOf| arg) 'constructorkind))
+      (cond
+       ((or (eq kk '|domain|) (eq kk '|category|))
+         (list (|makeNonAtomic| arg)))
+       ((and (consp arg) (eq (qfirst arg) 'attribute))
+         (list arg))
+      ((and (consp arg) (eq (qfirst arg) 'signature))
+        (list arg))
+      (|$InteractiveMode|
+        (|parseHasRhs| arg))
+      (t
+        (list (list 'attribute arg)))))))))
+ (let (tmp1 tmp2 tmp3 x)
+ (declare (special |$InteractiveMode| |$CategoryFrame|))
+  (setq x (first arg))
+  (setq tmp1 (|get| x '|value| |$CategoryFrame|))
+  (when |$InteractiveMode|
+   (setq x
+     (if (and (consp tmp1) (consp (qrest tmp1)) (consp (qcddr tmp1))
+            (eq (qcdddr tmp1) nil)
+            (|member| (second tmp1)
+             '((|Mode|) (|Domain|) (|SubDomain| (|Domain|)))))
+       (first tmp1)
+       (|parseType| x))))
+  (setq tmp2 
+   (dolist (u (fn (second arg)) (nreverse0 tmp3))
+     (push (list '|has| x u ) tmp3)))
+  (if (and (consp tmp2) (eq (qrest tmp2) nil))
+   (qfirst tmp2)
+   (cons '|and| tmp2)))))
+
+(defun |parseHasRhs| (u)
+ (let (tmp1 y)
+  (declare (special  |$CategoryFrame|))
+  (setq tmp1 (|get| u '|value| |$CategoryFrame|))
+  (cond
+    ((and (consp tmp1) (consp (qrest tmp1))
+          (consp (qcddr tmp1)) (eq (qcdddr tmp1) nil)
+          (|member| (second tmp1)
+             '((|Mode|) (|Domain|) (|SubDomain| (|Domain|)))))
+     (second tmp1))
+    ((setq y (|abbreviation?| u))
+      (if (|loadIfNecessary| y)
+        (list (|unabbrevAndLoad| y))
+        (list (list 'attribute u))))
+    (t (list (list 'attribute u))))))
+
+(defun |parseIf| (arg)
+  (if (null (and (consp arg) (consp (qrest arg))
+                 (consp (qcddr arg)) (eq (qcdddr arg) nil)))
+    arg
+    (|parseIf,ifTran|
+      (|parseTran| (first arg))
+      (|parseTran| (second arg))
+      (|parseTran| (third arg)))))
+
+(defun |parseIf,ifTran| (pred a b)
+ (let (pp z ap bp tmp1 tmp2 tmp3 tmp4 tmp5 tmp6 val s)
+ (declare (special |$InteractiveMode|))
+   (cond
+    ((and (null |$InteractiveMode|) (eq pred '|true|))
+     a)
+    ((and (null |$InteractiveMode|) (eq pred '|false|))
+     b)
+    ((and (consp pred) (eq (qfirst pred) '|not|)
+          (consp (qrest pred)) (eq (qcddr pred) nil))
+     (|parseIf,ifTran| (second pred) b a))
+    ((and (consp pred) (eq (qfirst pred) 'if)
+             (progn
+              (setq tmp1 (qrest pred))
+              (and (consp tmp1)
+                   (progn
+                    (setq pp (qfirst tmp1))
+                    (setq tmp2 (qrest tmp1))
+                    (and (consp tmp2)
+                         (progn
+                          (setq ap (qfirst tmp2))
+                          (setq tmp3 (qrest tmp2))
+                          (and (consp tmp3)
+                               (eq (qrest tmp3) nil)
+                               (progn (setq bp (qfirst tmp3)) t))))))))
+     (|parseIf,ifTran| pp
+       (|parseIf,ifTran| ap (copy a) (copy b))
+       (|parseIf,ifTran| bp a b)))
+    ((and (consp pred) (eq (qfirst pred) 'seq)
+          (consp (qrest pred)) (progn (setq tmp2 (reverse (qrest pred))) t)
+          (and (consp tmp2)
+               (consp (qfirst tmp2))
+               (eq (qcaar tmp2) '|exit|)
+               (progn
+                  (setq tmp4 (qcdar tmp2))
+                  (and (consp tmp4)
+                       (equal (qfirst tmp4) 1)
+                       (progn
+                        (setq tmp5 (qrest tmp4))
+                        (and (consp tmp5)
+                             (eq (qrest tmp5) nil)
+                             (progn (setq pp (qfirst tmp5)) t)))))
+               (progn (setq z (qrest tmp2)) t))
+          (progn (setq z (nreverse z)) t))
+     (cons 'seq
+       (append z
+        (list
+         (list '|exit| 1 (|parseIf,ifTran| pp
+                           (|incExitLevel| a)
+                            (|incExitLevel| b)))))))
+    ((and (consp a) (eq (qfirst a) 'if) (consp (qrest a))
+          (equal (qsecond a) pred) (consp (qcddr a))
+          (consp (qcdddr a))
+          (eq (qcddddr a) nil))
+     (list 'if pred (third a) b))
+    ((and (consp b) (eq (qfirst b) 'if)
+          (consp (qrest b)) (equal (qsecond b) pred)
+          (consp (qcddr b))
+          (consp (qcdddr b))
+          (eq (qcddddr b) nil))
+     (list 'if pred a (fourth b)))
+    ((progn
+      (setq tmp1 (|makeSimplePredicateOrNil| pred))
+      (and (consp tmp1) (eq (qfirst tmp1) 'seq)
+           (progn
+            (setq tmp2 (qrest tmp1))
+            (and (and (consp tmp2)
+                 (progn (setq tmp3 (reverse tmp2)) t))
+                 (and (consp tmp3)
+                      (progn 
+                       (setq tmp4 (qfirst tmp3))
+                       (and (consp tmp4) (eq (qfirst tmp4) '|exit|)
+                            (progn
+                             (setq tmp5 (qrest tmp4))
+                             (and (consp tmp5) (equal (qfirst tmp5) 1)
+                                  (progn
+                                   (setq tmp6 (qrest tmp5))
+                                   (and (consp tmp6) (eq (qrest tmp6) nil)
+                                        (progn (setq val (qfirst tmp6)) t)))))))
+                                  (progn (setq s (qrest tmp3)) t))))))
+     (setq s (nreverse s))
+     (|parseTran|
+      (cons 'seq
+       (append s
+        (list (list '|exit| 1 (|incExitLevel| (list 'if val a b))))))))
+    (t
+     (list 'if pred a b )))))
+
+(defun |parseImplies| (arg)
+ (|parseIf| (list (first arg) (second arg) '|true|)))
+
+(defun |parseIn| (arg)
+ (let (i n)
+  (setq i (|parseTran| (first arg)))
+  (setq n (|parseTran| (second arg)))
+  (cond
+   ((and (consp n) (eq (qfirst n) 'segment)
+         (consp (qrest n)) (eq (qcddr n) nil))
+    (list 'step i (second n) 1))
+   ((and (consp n) (eq (qfirst n) '|reverse|)
+         (consp (qrest n)) (eq (qcddr n) nil)
+         (consp (qsecond n)) (eq (qcaadr n) 'segment)
+         (consp (qcdadr n))
+         (eq (qcddadr n) nil))
+    (postError (list "  You cannot reverse an infinite sequence." )))
+   ((and (consp n) (eq (qfirst n) 'segment)
+         (consp (qrest n)) (consp (qcddr n))
+         (eq (qcdddr n) nil))
+    (if (third n)
+     (list 'step i (second n) 1 (third n))
+     (list 'step i (second n) 1)))
+   ((and (consp n) (eq (qfirst n) '|reverse|)
+         (consp (qrest n)) (eq (qcddr n) nil)
+         (consp (qsecond n)) (eq (qcaadr n) 'segment)
+         (consp (qcdadr n))
+         (consp (qcddadr n))
+         (eq (qrest (qcddadr n)) nil))
+    (if (third (second n))
+     (list 'step i (third (second n)) -1 (second (second n)))
+     (postError (list "  You cannot reverse an infinite sequence."))))
+   ((and (consp n) (eq (qfirst n) '|tails|)
+         (consp (qrest n)) (eq (qcddr n) nil))
+    (list 'on i (second n)))
+   (t
+    (list 'in i n)))))
+
+(defun |parseInBy| (arg)
+ (let (i n inc u)
+  (setq i (first arg))
+  (setq n (second arg))
+  (setq inc (third arg))
+  (setq u (|parseIn| (list i n)))
+  (cond
+   ((null (and (consp u) (eq (qfirst u) 'step)
+               (consp (qrest u))
+               (consp (qcddr u))
+               (consp (qcdddr u))))
+    (postError
+     (cons '|   You cannot use|
+      (append (|bright| "by")
+       (list "except for an explicitly indexed sequence.")))))
+   (t 
+    (setq inc (|parseTran| inc))
+    (cons 'step
+     (cons (second u)
+      (cons (third u) 
+       (cons (|parseTran| inc) (cddddr u)))))))))
+
+(defun |parseIs| (arg)
+ (list '|is| (|parseTran| (first arg)) (|transIs| (|parseTran| (second arg)))))
+
+(defun |parseIsnt| (arg)
+ (list '|isnt|
+   (|parseTran| (first arg))
+   (|transIs| (|parseTran| (second arg)))))
+
+(defun |parseJoin| (thejoin)
+ (labels (
+  (fn (arg)
+   (cond
+    ((null arg)
+      nil)
+    ((and (consp arg) (consp (qfirst arg)) (eq (qcaar arg) '|Join|))
+     (append (cdar arg) (fn (rest arg))))
+    (t
+     (cons (first arg) (fn (rest arg))))))
+ )
+ (cons '|Join| (fn (|parseTranList| thejoin)))))
+
+(defun |parseLeave| (arg)
+ (let (a b)
+    (setq a (|parseTran| (car arg)))
+    (setq b (|parseTran| (cdr arg)))
+    (cond
+     (b
+      (cond
+       ((null (integerp a))
+        (moan "first arg " a " for 'leave' must be integer")
+        (list '|leave| 1 a))
+       (t (cons '|leave| (cons a b)))))
+     (t (list '|leave| 1 a)))))
+
+(defun |parseLessEqual| (arg)
+ (declare (special |$op|))
+ (|parseTran| (list '|not| (cons (subst '> '<= |$op| :test #'equal) arg))))
+
+(defun |parseLET| (arg)
+ (let (p)
+  (setq p
+   (list 'let (|parseTran| (first arg))
+     (|parseTranCheckForRecord| (second arg) (|opOf| (first arg)))))
+  (if (eq (|opOf| (first arg)) '|cons|)
+    (list 'let (|transIs| (second p)) (third p))
+    p)))
+
+(defun |parseLETD| (arg)
+ (list 'letd
+   (|parseTran| (first arg))
+   (|parseTran| (|parseType| (second arg)))))
+
+(defun |parseLhs| (x)
+ (let (result)
+  (cond
+   ((atom x) (|parseTran| x))
+   ((atom (car x))
+     (cons (|parseTran| (car x))
+       (dolist (y (cdr x) (nreverse result))
+         (push (|transIs| (|parseTran| y)) result))))
+   (t (|parseTran| x)))))
+
+(defun |parseMDEF| (arg)
+ (let (|$lhs|)
+ (declare (special |$lhs|))
+  (setq |$lhs| (first arg))
+  (list 'mdef
+    (|parseTran| |$lhs|)
+    (|parseTranList| (second arg)) 
+    (|parseTranList| (third arg)) 
+    (|parseTranCheckForRecord| (fourth arg) (|opOf| |$lhs|)))))
+
+(defun |parseNot| (arg)
+ (declare (special |$InteractiveMode|))
+ (if |$InteractiveMode|
+  (list '|not| (|parseTran| (car arg)))
+  (|parseTran| (cons 'if (cons (car arg) '(|false| |true|))))))
+
+(defun |parseNotEqual| (arg)
+ (declare (special |$op|))
+ (|parseTran| (list '|not| (cons (subst '= '^= |$op| :test #'equal) arg))))
+
+(defun |parseOr| (arg)
+ (let (x)
+  (setq x (|parseTran| (car arg)))
+  (cond
+   (|$InteractiveMode| (cons '|or| (|parseTranList| arg)))
+   ((null arg) '|false|)
+   ((null (cdr arg)) (car arg))
+   ((and (consp x) (eq (qfirst x) '|not|)
+         (consp (qrest x)) (eq (qcddr x) nil))
+     (|parseIf| (list (second x) (|parseOr| (cdr arg)) '|true|)))
+   (t
+     (|parseIf| (list x '|true| (|parseOr| (cdr arg))))))))
+
+(defun |parsePretend| (arg)
+ (if |$InteractiveMode|
+  (list '|pretend|
+         (|parseTran| (first arg))
+         (|parseTran| (|parseType| (second arg))))
+  (list '|pretend|
+          (|parseTran| (first arg))
+          (|parseTran| (second arg)))))
+
+(defun parseprint (l)
+ (when l
+  (format t "~&~%       ***       PREPARSE      ***~%~%")
+  (dolist (x l) (format t "~5d. ~a~%" (car x) (cdr x)))
+  (format t "~%")))
+ 
+(defun |parseReturn| (arg)
+ (let (a b)
+  (setq a (|parseTran| (car arg)))
+  (setq b (|parseTran| (cdr arg)))
+  (cond
+   (b 
+    (unless (eql a 1) (moan "multiple-level 'return' not allowed"))
+    (cons '|return| (cons 1 b)))
+   (t (list '|return| 1 a)))))
+
+(defun |parseSegment| (arg)
+  (if (and (consp arg) (consp (qrest arg)) (eq (qcddr arg) nil))
+   (if (second arg)
+    (list 'segment (|parseTran| (first arg)) (|parseTran| (second arg)))
+    (list 'segment (|parseTran| (first arg))))
+   (cons 'segment arg)))
+
+(defun |parseSeq| (arg)
+ (let (tmp1)
+  (when (consp arg) (setq tmp1 (reverse arg)))
+  (if (null (and (consp arg) (consp tmp1)
+                 (consp (qfirst tmp1)) (eq (qcaar tmp1) '|exit|)))
+    (postError (list "   Invalid ending to block: " (|last| arg)))
+    (|transSeq| (|mapInto| arg '|parseTran|)))))
+
+(defun |parseTran| (x)
+ (labels (
+  (g (op)
+   (let (tmp1 tmp2 x)
+    (seq
+     (if (and (consp op) (eq (qfirst op) '|elt|)
+         (progn
+          (setq tmp1 (qrest op))
+          (and (consp tmp1)
+               (progn
+                (setq op (qfirst tmp1))
+                (setq tmp2 (qrest tmp1))
+                (and (consp tmp2)
+                     (eq (qrest tmp2) nil)
+                         (progn (setq x (qfirst tmp2)) t))))))
+        (exit (g x)))
+     (exit op)))))
+ (let (|$op| argl u r fn)
+ (declare (special |$op|))
+  (setq |$op| nil)
+  (if (atom x) 
+   (|parseAtom| x)
+   (progn
+    (setq |$op| (car x)) 
+    (setq argl (cdr x))
+    (setq u (g |$op|))
+    (cond
+     ((eq u '|construct|)
+       (setq r (|parseConstruct| argl))
+       (if (and (consp |$op|) (eq (qfirst |$op|) '|elt|))
+        (cons (|parseTran| |$op|) (cdr r))
+        r))
+     ((and (atom u) (setq fn (getl u '|parseTran|)))
+       (funcall fn argl))
+     (t (cons (|parseTran| |$op|) (|parseTranList| argl)))))))))
+
+(defun |parseTranCheckForRecord| (x op)
+ (declare (ignore op))
+ (let (tmp3)
+  (setq x (|parseTran| x))
+  (cond
+   ((and (consp x) (eq (qfirst x) '|Record|))
+     (cond
+      ((do ((z nil tmp3) (tmp4 (qrest x) (cdr tmp4)) (y nil))
+           ((or z (atom tmp4)) tmp3)
+          (setq y (car tmp4))
+          (cond
+           ((null (and (consp y) (eq (qfirst y) '|:|) (consp (qrest y))
+                  (consp (qcddr y)) (eq (qcdddr y) nil)))
+              (setq tmp3 (or tmp3 y)))))
+          (postError (list "   Constructor" x "has missing label" )))
+       (t x)))
+   (t x))))
+
+(defun |parseTranList| (x)
+ (if (atom x)
+  (|parseTran| x)
+  (cons (|parseTran| (car x)) (|parseTranList| (cdr x)))))
+
+(defun |parseTransform| (x)
+ (let (|$defOp|)
+ (declare (special |$defOp|))
+  (setq |$defOp| nil)
+  (setq x (subst '$ '% x :test #'equal)) ; for new compiler compatibility
+  (|parseTran| x)))
+
+(defun |parseType| (x)
+ (declare (special |$EmptyMode| |$quadSymbol|))
+ (setq x (subst |$EmptyMode| |$quadSymbol| x :test #'equal))
+ (if (and (consp x) (eq (qfirst x) '|typeOf|)
+          (consp (qrest x)) (eq (qcddr x) nil))
+    (list '|typeOf| (|parseTran| (qsecond x)))
+    x))
+
+(defun |parseVCONS| (arg)
+ (cons 'vector (|parseTranList| arg)))
+
+(defun |parseWhere| (arg)
+  (cons '|where| (|mapInto| arg '|parseTran|)))
+
+(defun Pop-Reduction () (stack-pop Reduce-Stack))
+
+(defun |postAdd| (arg)
+ (if (null (cddr arg))
+  (|postCapsule| (second arg))
+  (list '|add| (|postTran| (second arg)) (|postCapsule| (third arg)))))
+
+(defun postAtom (x)
+ (declare (special $boot))
+  (cond
+    ($boot x)
+    ((eql x 0) '(|Zero|))
+    ((eql x 1) '(|One|))
+    ((eq x t) 't$)
+    ((and (identp x) (getdatabase x 'niladic)) (list x))
+    (t x)))
+
+(defun |postAtSign| (arg)
+ (cons '@ (cons (|postTran| (second arg)) (|postType| (third arg)))))
+
+(defun |postBigFloat| (arg)
+ (let (mant expon eltword)
+  (declare (special $boot |$InteractiveMode|))
+  (setq mant (second arg))
+  (setq expon (cddr arg))
+  (if $boot 
+   (times (float mant) (expt (float 10) expon))
+   (progn
+    (setq eltword (if |$InteractiveMode| '|$elt| '|elt|))
+    (|postTran|
+     (list (list eltword '(|Float|) '|float|)
+       (list '|,| (list '|,| mant expon) 10)))))))
+
+(defun |postBlock| (arg)
+ (let (tmp1 x y)
+  (setq tmp1 (reverse (cdr arg)))
+  (setq x (car tmp1))
+  (setq y (nreverse (cdr tmp1)))
+  (cons 'seq
+   (append (|postBlockItemList| y) (list (list '|exit| (|postTran| x)))))))
+
+(defun |postBlockItem| (x)
+ (let ((tmp1 t) tmp2 y tt z)
+  (setq x (|postTran| x))
+  (if
+   (and (consp x) (eq (qfirst x) '|@Tuple|)
+     (progn
+       (and (consp (qrest x))
+            (progn (setq tmp2 (reverse (qrest x))) t)
+            (consp tmp2)
+            (progn 
+             (and (consp (qfirst tmp2)) (eq (qcaar tmp2) '|:|)
+             (progn 
+              (and (consp (qcdar tmp2))
+                   (progn
+                    (setq y (qcadar tmp2))
+                    (and (consp (qcddar tmp2))
+                         (eq (qcdddar tmp2) nil)
+                    (progn (setq tt (qcaddar tmp2)) t)))))))
+            (progn (setq z (qrest tmp2)) t)
+            (progn (setq z (nreverse z)) T)))
+      (do ((tmp6 nil (null tmp1)) (tmp7 z (cdr tmp7)) (x nil))
+          ((or tmp6 (atom tmp7)) tmp1)
+        (setq x (car tmp7))
+        (setq tmp1 (and tmp1 (identp x)))))
+     (cons '|:| (cons (cons 'listof (append z (list y))) (list tt)))
+     x)))
+
+(defun |postBlockItemList| (args)
+ (let (result)
+  (dolist (item args (nreverse result))
+   (push (|postBlockItem| item) result))))
+
+(defun |postCapsule| (x)
+ (let (op)
+  (cond
+   ((null (and (consp x) (progn (setq op (qfirst x)) t)))
+     (|checkWarning| (list "Apparent indentation error following add")))
+   ((or (integerp op) (eq op '==))
+     (list 'capsule (|postBlockItem| x)))
+   ((eq op '|;|)
+     (cons 'capsule (|postBlockItemList| (|postFlatten| x '|;|))))
+   ((eq op '|if|)
+     (list 'capsule (|postBlockItem| x)))
+   (t (|checkWarning| (list "Apparent indentation error following add"))))))
+
+(defun |postCategory| (u)
+ (declare (special |$insidePostCategoryIfTrue|))
+ (labels (
+  (fn (arg)
+   (let (|$insidePostCategoryIfTrue|)
+   (declare (special |$insidePostCategoryIfTrue|))
+    (setq |$insidePostCategoryIfTrue| t)
+    (|postTran| arg))) )
+ (let ((z (cdr u)) op tmp1)
+  (if (null z)
+   u
+   (progn
+     (setq op (if |$insidePostCategoryIfTrue| 'progn 'category))
+     (cons op (dolist (x z (nreverse0 tmp1)) (push (fn x) tmp1))))))))
+
+(defun postcheck (x)
+ (cond
+  ((atom x) nil)
+  ((and (consp x) (eq (qfirst x) 'def) (consp (qrest x)))
+   (setDefOp  (qsecond x))
+   (postcheck (qcddr x)))
+  ((and (consp x) (eq (qfirst x) 'quote)) nil)
+  (t (postcheck (car x)) (postcheck (cdr x)))))
+
+(defun |postCollect| (arg)
+ (let (constructOp tmp3 m itl x)
+  (setq constructOp (car arg))
+  (setq tmp3 (reverse (cdr arg)))
+  (setq x (car tmp3))
+  (setq m (nreverse (cdr tmp3)))
+  (cond
+   ((and (consp x) (consp (qfirst x)) (eq (qcaar x) '|elt|)
+         (consp (qcdar x)) (consp (qcddar x))
+         (eq (qcdddar x) nil)
+         (eq (qcaddar x) '|construct|))
+    (|postCollect|
+     (cons (list '|elt| (qcadar x) 'collect)
+      (append m (list (cons '|construct| (qrest x)))))))
+   (t
+    (setq itl (|postIteratorList| m))
+    (setq x
+     (if (and (consp x) (eq (qfirst x) '|construct|)
+              (consp (qrest x)) (eq (qcddr x) nil))
+       (qsecond x)
+       x))
+    (|postCollect,finish| constructOp itl (|postTran| x))))))
+
+(defun |postCollect,finish| (op itl y)
+ (let (tmp2 tmp5 newBody)
+  (cond
+   ((and (consp y) (eq (qfirst y) '|:|)
+         (consp (qrest y)) (eq (qcddr y) nil))
+    (list 'reduce '|append| 0 (cons op (append itl (list (qsecond y))))))
+   ((and (consp y) (eq (qfirst y) '|Tuple|))
+    (setq newBody
+     (cond
+      ((dolist (x (qrest y) tmp2)
+        (setq tmp2
+         (or tmp2 (and (consp x) (eq (qfirst x) '|:|)
+                       (consp (qrest x)) (eq (qcddr x) nil)))))
+       (|postMakeCons| (qrest y)))
+      ((dolist (x (qrest y) tmp5)
+         (setq tmp5 (or tmp5 (and (consp x) (eq (qfirst x) 'segment)))))
+        (|tuple2List| (qrest y)))
+      (t (cons '|construct| (postTranList (qrest y))))))
+     (list 'reduce '|append| 0 (cons op (append itl (list newBody)))))
+   (t (cons op (append itl (list y)))))))
+
+(defun |postColon| (u)
+ (cond
+  ((and (consp u) (eq (qfirst u) '|:|)
+        (consp (qrest u)) (eq (qcddr u) nil))
+    (list '|:| (|postTran| (qsecond u))))
+  ((and (consp u) (eq (qfirst u) '|:|) (consp (qrest u))
+        (consp (qcddr u)) (eq (qcdddr u) nil))
+   (cons '|:| (cons (|postTran| (second u)) (|postType| (third u)))))))
+
+(defun |postColonColon| (u)
+  (if (and $boot (consp u) (eq (qfirst u) '|::|) (consp (qrest u))
+           (consp (qcddr u)) (eq (qcdddr u) nil))
+   (intern (princ-to-string (third u)) (second u))
+   (postForm u)))
+
+(defun |postComma| (u)
+ (|postTuple| (|comma2Tuple| u))) 
+
+(defun |postConstruct| (u)
+ (let (b a tmp4 tmp7)
+  (cond
+   ((and (consp u) (eq (qfirst u) '|construct|)
+         (consp (qrest u)) (eq (qcddr u) nil))
+     (setq b (qsecond u))
+     (setq a
+      (if (and (consp b) (eq (qfirst b) '|,|)) 
+       (|comma2Tuple| b)
+       b))
+     (cond
+      ((and (consp a) (eq (qfirst a) 'segment) (consp (qrest a))
+            (consp (qcddr a)) (eq (qcdddr a) nil))
+       (list '|construct| (|postTranSegment| (second a) (third a))))
+      ((and (consp a) (eq (qfirst a) '|@Tuple|))
+        (cond
+         ((dolist (x (qrest a) tmp4)
+           (setq tmp4
+            (or tmp4
+             (and (consp x) (eq (qfirst x) '|:|)
+                  (consp (qrest x)) (eq (qcddr x) nil)))))
+          (|postMakeCons| (qrest a)))
+         ((dolist (x (qrest a) tmp7)
+            (setq tmp7 (or tmp7 (and (consp x) (eq (qfirst x) 'segment)))))
+          (|tuple2List| (qrest a)))
+         (t (cons '|construct| (postTranList (qrest a))))))
+      (t (list '|construct| (|postTran| a)))))
+   (t u))))
+
+(defun |postDef| (arg)
+ (let (defOp rhs lhs targetType tmp1 op argl newLhs 
+       argTypeList typeList form specialCaseForm tmp4 tmp6 tmp8)
+ (declare (special $boot |$maxSignatureLineNumber| |$headerDocumentation|
+                   |$docList| |$InteractiveMode|))
+  (setq defOp (first arg))
+  (setq lhs (second arg))
+  (setq rhs (third arg))
+  (if (and (consp lhs) (eq (qfirst lhs) '|macro|)
+           (consp (qrest lhs)) (eq (qcddr lhs) nil))
+   (|postMDef| (list '==> (second lhs) rhs))
+   (progn
+    (unless $boot (|recordHeaderDocumentation| nil))
+    (when (not (eql |$maxSignatureLineNumber| 0))
+      (setq |$docList|
+       (cons (cons '|constructor| |$headerDocumentation|) |$docList|))
+      (setq |$maxSignatureLineNumber| 0))
+    (setq lhs (|postTran| lhs))
+    (setq tmp1
+     (if (and (consp lhs) (eq (qfirst lhs) '|:|)) (cdr lhs) (list lhs nil)))
+    (setq form (first tmp1))
+    (setq targetType (second tmp1))
+    (when (and (null |$InteractiveMode|) (atom form)) (setq form (list form)))
+    (setq newLhs
+     (if (atom form) 
+      form
+      (progn
+       (setq tmp1
+        (dolist (x form (nreverse0 tmp4))
+         (push
+           (if (and (consp x) (eq (qfirst x) '|:|) (consp (qrest x))
+                    (consp (qcddr x)) (eq (qcdddr x) nil))
+            (second x)
+            x)
+           tmp4)))
+       (setq op (car tmp1))
+       (setq argl (cdr tmp1))
+       (cons op (|postDefArgs| argl)))))
+    (setq argTypeList
+     (unless (atom form)
+      (dolist (x (cdr form) (nreverse0 tmp6))
+       (push
+         (when (and (consp x) (eq (qfirst x) '|:|) (consp (qrest x))
+               (consp (qcddr x)) (eq (qcdddr x) nil))
+           (third x))
+         tmp6))))
+    (setq typeList (cons targetType argTypeList))
+    (when (atom form) (setq form (list form)))
+    (setq specialCaseForm (dolist (x form (nreverse tmp8)) (push nil tmp8)))
+    (list 'def newLhs typeList specialCaseForm (|postTran| rhs))))))
+
+(defun |postDefArgs| (args)
+ (let (a b)
+  (cond
+   ((null args) args)
+   ((and (consp args) (consp (qfirst args)) (eq (qcaar args) '|:|)
+         (consp (qcdar args)) (eq (qcddar args) nil))
+     (setq a (qcadar args))
+     (setq b (qrest args))
+     (cond
+      (b (postError
+          (list  "   Argument" a "of indefinite length must be last")))
+      ((or (atom a) (and (consp a) (eq (qfirst a) 'quote)))
+        a)
+      (t
+        (postError
+          (list "   Argument" a "of indefinite length must be a name")))))
+   (t (cons (car args) (|postDefArgs| (cdr args)))))))
+
+(defun postError (msg)
+ (let (xmsg)
+  (declare (special |$defOp| |$postStack| |$InteractiveMode|))
+  (bumperrorcount '|precompilation|)
+  (setq xmsg
+   (if (and (not (eq |$defOp| '|$defOp|)) (null |$InteractiveMode|))
+    (cons |$defOp| (cons ": " msg))
+    msg))
+  (push xmsg |$postStack|)
+  nil))
+
+(defun |postExit| (arg)
+ (list 'if (|postTran| (second arg))
+  (list '|exit| (|postTran| (third arg)))
+   '|noBranch|))
+
+(defun |postIf| (arg)
+ (let (tmp1)
+  (if (null (and (consp arg) (eq (qfirst arg) '|if|)))
+   arg
+   (cons 'if
+    (dolist (x (qrest arg) (nreverse0 tmp1))
+     (push
+       (if (and (null (setq x (|postTran| x))) (null $boot)) '|noBranch| x)
+       tmp1))))))
+
+(defun |postin| (arg)
+ (if (null (and (consp arg) (eq (qfirst arg) '|in|) (consp (qrest arg))
+                (consp (qcddr arg)) (eq (qcdddr arg) nil)))
+   (|systemErrorHere| "postin")
+   (list '|in| (|postTran| (second arg)) (|postInSeq| (third arg)))))
+
+(defun |postIn| (arg)
+  (if (null (and (consp arg) (eq (qfirst arg) 'in) (consp (qrest arg))
+                 (consp (qcddr arg)) (eq (qcdddr arg) nil)))
+    (|systemErrorHere| "postIn")
+    (list 'in (|postTran| (second arg)) (|postInSeq| (third arg)))))
+
+(defun |postInSeq| (seq)
+ (cond
+  ((and (consp seq) (eq (qfirst seq) 'segment) (consp (qrest seq))
+         (consp (qcddr seq)) (eq (qcdddr seq) nil))
+     (|postTranSegment| (second seq) (third seq)))
+  ((and (consp seq) (eq (qfirst seq) '|@Tuple|))
+     (|tuple2List| (qrest seq)))
+  (t (|postTran| seq))))
+
+(defun |postIteratorList| (args)
+ (let (z p y u a b)
+  (cond
+   ((consp args)
+     (setq p (|postTran| (qfirst args)))
+     (setq z (qrest args))
+     (cond
+       ((and (consp p) (eq (qfirst p) 'in) (consp (qrest p))
+             (consp (qcddr p)) (eq (qcdddr p) nil))
+        (setq y (qsecond p))
+        (setq u (qthird p))
+        (cond
+          ((and (consp u) (eq (qfirst u) '|\||) (consp (qrest u))
+                (consp (qcddr u)) (eq (qcdddr u) nil))
+            (setq a (qsecond u))
+            (setq b (qthird u))
+            (cons (list 'in y (|postInSeq| a))
+              (cons (list '|\|| b)
+                (|postIteratorList| z))))
+          (t (cons (list 'in y (|postInSeq| u)) (|postIteratorList| z)))))
+       (t (cons p (|postIteratorList| z)))))
+   (t args))))
+
+(defun |postJoin| (arg)
+ (let (a l al)
+  (setq a (|postTran| (cadr arg)))
+  (setq l (postTranList (cddr arg)))
+  (when (and (consp l) (eq (qrest l) nil) (consp (qfirst l))
+             (member (qcaar l) '(attribute signature)))
+    (setq l (list (list 'category (qfirst l)))))
+  (setq al (if (and (consp a) (eq (qfirst a) '|@Tuple|)) (qrest a) (list a)))
+  (cons '|Join| (append al l))))
+
+(defun |postMakeCons| (args)
+ (let (a b)
+  (cond
+   ((null args) '|nil|)
+   ((and (consp args) (consp (qfirst args)) (eq (qcaar args) '|:|)
+         (consp (qcdar args)) (eq (qcddar args) nil))
+     (setq a (qcadar args))
+     (setq b (qrest args))
+     (if b 
+       (list '|append| (|postTran| a) (|postMakeCons| b))
+       (|postTran| a)))
+   (t (list '|cons| (|postTran| (car args)) (|postMakeCons| (cdr args)))))))
+
+(defun |postMapping| (u)
+ (if (null (and (consp u) (eq (qfirst u) '->) (consp (qrest u))
+           (consp (qcddr u)) (eq (qcdddr u) nil)))
+   u
+   (cons '|Mapping|
+    (cons (|postTran| (third u))
+          (|unTuple| (|postTran| (second u)))))))
+
+(defun |postMDef| (arg)
+ (let (rhs lhs tmp1 targetType form newLhs typeList tmp4 tmp5 tmp8)
+ (declare (special |$InteractiveMode| $boot))
+  (setq lhs (second arg))
+  (setq rhs (third arg))
+  (cond
+   ((and |$InteractiveMode| (null $boot))
+    (setq lhs (|postTran| lhs))
+    (if (null (identp lhs))
+      (|throwkeyedmsg| "The left-hand side of a => form must be a symbol." nil)
+      (list 'mdef lhs nil nil (|postTran| rhs))))
+   (t
+    (setq lhs (|postTran| lhs))
+    (setq tmp1
+     (if (and (consp lhs) (eq (qfirst lhs) '|:|)) (cdr lhs) (list lhs nil)))
+    (setq form (first tmp1))
+    (setq targetType (second tmp1))
+    (setq form (if (atom form) (list form) form))
+    (setq newLhs
+     (dolist (x form (nreverse0 tmp4))
+      (push
+       (if (and (consp x) (eq (qfirst x) '|:|) (consp (qrest x))) (second x) x)
+       tmp4)))
+    (setq typeList
+     (cons targetType
+      (dolist (x (qrest form) (nreverse0 tmp5))
+       (push
+         (when (and (consp x) (eq (qfirst x) '|:|) (consp (qrest x))
+                    (consp (qcddr x)) (eq (qcdddr x) nil))
+            (third x))
+          tmp5))))
+    (list 'mdef newLhs typeList 
+     (dolist (x form (nreverse0 tmp8)) (push nil tmp8))
+     (|postTran| rhs))))))
+
+(defun postOp (x)
+ (declare (special $boot))
+ (cond
+  ((eq x '|:=|) 'let)
+  ((eq x '|:-|) 'letd)
+  ((eq x '|Attribute|) 'attribute)
+  (t x)))
+
+(defun |postPretend| (arg)
+ (cons '|pretend| (cons (|postTran| (second arg)) (|postType| (third arg)))))
+
+(defun |postQUOTE| (arg) arg) 
+
+(defun |postReduce| (arg)
+ (let (op expr g)
+  (setq op (second arg))
+  (setq expr (third arg))
+  (if (or |$InteractiveMode| (and (consp expr) (eq (qfirst expr) 'collect)))
+    (list 'reduce op 0 (|postTran| expr))
+    (|postReduce|
+     (list '|Reduce| op
+      (list 'collect
+       (list 'in (setq g (gensym)) expr)
+        (list '|construct| g)))))))
+
+(defun |postRepeat| (arg)
+ (let (tmp1 x m)
+  (setq tmp1 (reverse (cdr arg)))
+  (setq x (car tmp1))
+  (setq m (nreverse (cdr tmp1)))
+  (cons 'repeat (append (|postIteratorList| m) (list (|postTran| x))))))
+
+(defun |postScripts| (arg)
+ (cons (getScriptName (second arg) (third arg) 0)
+       (postTranScripts (third arg))))
+
+(defun postScriptsForm (form argl)
+ (let ((op (second form)) (a (third form)))
+  (cons (getScriptName op a (|#| argl))
+        (append (postTranScripts a) argl))))
+
+(defun |postSemiColon| (u)
+ (|postBlock| (cons '|Block| (|postFlattenLeft| u '|;|))))
+
+(defun |postSignature| (arg)
+ (let (sig sig1 op)
+  (setq op (second arg))
+  (setq sig (third arg))
+  (when (and (consp sig) (eq (qfirst sig) '->))
+    (setq sig1 (|postType| sig))
+    (setq op (postAtom (if (stringp op) (setq op (intern op)) op)))
+    (cons 'signature 
+     (cons op (|removeSuperfluousMapping| (|killColons| sig1)))))))
+
+(defun |postSlash| (arg)
+  (if (stringp (second arg))
+   (|postTran| (list '|Reduce| (intern (second arg)) (third arg) ))
+   (list '/ (|postTran| (second arg)) (|postTran| (third arg)))))
+
+(defun |postTran| (x)
+ (let (op f tmp1 a tmp2 tmp3 b y)
+  (if (atom x)
+   (postAtom x)
+   (progn
+    (setq op (car x))
+    (cond
+     ((and (atom op) (setq f (getl op '|postTran|)))
+      (funcall f x))
+     ((and (consp op) (eq (qfirst op) '|elt|)
+           (progn
+            (setq tmp1 (qrest op))
+            (and (consp tmp1)
+                 (progn
+                   (setq a (qfirst tmp1))
+                   (setq tmp2 (qrest tmp1))
+                   (and (consp tmp2)
+                        (eq (qrest tmp2) nil)
+                        (progn (setq b (qfirst tmp2)) t))))))
+      (cons (|postTran| op) (cdr (|postTran| (cons b (cdr x))))))
+     ((and (consp op) (eq (qfirst op) '|Scripts|))
+      (postScriptsForm op
+       (dolist (y (rest x) tmp3)
+        (setq tmp3 (append tmp3 (|unTuple| (|postTran| y)))))))
+     ((not (equal op (setq y (postOp op))))
+      (cons y (postTranList (cdr x))))
+     (t (postForm x)))))))
+
+(defun postTranList (x)
+ (loop for y in x collect (|postTran| y)))
+
+(defun postTranScripts (a)
+ (labels (
+  (fn (x) 
+   (if (and (consp x) (eq (qfirst x) '|@Tuple|))
+    (qrest x)
+    (list x))))
+ (let (tmp1 tmp2 tmp3)
+  (cond
+   ((and (consp a) (eq (qfirst a) '|PrefixSC|)
+         (progn
+          (setq tmp1 (qrest a))
+          (and (consp tmp1) (eq (qrest tmp1) nil))))
+     (postTranScripts (qfirst tmp1)))
+   ((and (consp a) (eq (qfirst a) '|;|))
+    (dolist (y (qrest a) tmp2)
+     (setq tmp2 (append tmp2 (postTranScripts y)))))
+   ((and (consp a) (eq (qfirst a) '|,|))
+    (dolist (y (qrest a) tmp3)
+     (setq tmp3 (append tmp3 (fn (|postTran| y))))))
+   (t (list (|postTran| a)))))))
+
+(defun |postTranSegment| (p q)
+  (list 'segment (|postTran| p) (when q (|postTran| q))))
+
+(defun postTransform (y)
+ (let (x tmp1 tmp2 tmp3 tmp4 tmp5 tt l u)
+  (setq x y)
+  (setq u (|postTran| x))
+  (when
+   (and (consp u) (eq (qfirst u) '|@Tuple|)
+        (progn
+         (setq tmp1 (qrest u))
+         (and (consp tmp1)
+              (progn (setq tmp2 (reverse tmp1)) t)
+              (consp tmp2)
+              (progn
+               (setq tmp3 (qfirst tmp2))
+               (and (consp tmp3)
+                    (eq (qfirst tmp3) '|:|)
+                    (progn
+                     (setq tmp4 (qrest tmp3))
+                     (and (consp tmp4)
+                          (progn
+                           (setq y (qfirst tmp4))
+                           (setq tmp5 (qrest tmp4))
+                           (and (consp tmp5)
+                                (eq (qrest tmp5) nil)
+                                (progn (setq tt (qfirst tmp5)) t)))))))
+                        (progn (setq l (qrest tmp2)) t)
+                        (progn (setq l (nreverse l)) t)))
+              (dolist (x l t) (unless (identp x) (return nil))))
+    (setq u (list '|:| (cons 'listof (append l (list y))) tt)))
+  (postTransformCheck u)
+  (aplTran u)))
+
+(defun postTransformCheck (x)
+ (let (|$defOp|)
+ (declare (special |$defOp|))
+  (setq |$defOp| nil)
+  (postcheck x)))
+
+(defun |postTuple| (arg)
+ (cond
+  ((and (consp arg) (eq (qrest arg) nil) (eq (qfirst arg) '|@Tuple|))
+   arg)
+  ((and (consp arg) (eq (qfirst arg) '|@Tuple|) (consp (qrest arg)))
+   (cons '|@Tuple| (postTranList (cdr arg))))))
+
+(defun |postTupleCollect| (arg)
+ (let (constructOp tmp1 x m)
+  (setq constructOp (car arg))
+  (setq tmp1 (reverse (cdr arg)))
+  (setq x (car tmp1))
+  (setq m (nreverse (cdr tmp1)))
+  (|postCollect| (cons constructOp (append m (list (list '|construct| x)))))))
+
+(defun |postType| (typ)
+ (let (source target)
+  (cond
+   ((and (consp typ) (eq (qfirst typ) '->) (consp (qrest typ))
+         (consp (qcddr typ)) (eq (qcdddr typ) nil))
+     (setq source (qsecond typ))
+     (setq target (qthird typ))
+     (cond
+      ((eq source '|constant|)
+        (list (list (|postTran| target)) '|constant|))
+      (t
+        (list (cons '|Mapping|
+                (cons (|postTran| target)
+                      (|unTuple| (|postTran| source))))))))
+   ((and (consp typ) (eq (qfirst typ) '->)
+         (consp (qrest typ)) (eq (qcddr typ) nil))
+      (list (list '|Mapping| (|postTran| (qsecond typ)))))
+   (t (list (|postTran| typ))))))
+
+(defun |postWhere| (arg)
+ (let (b x)
+  (setq b (third arg))
+  (setq x (if (and (consp b) (eq (qfirst b) '|Block|)) (qrest b) (list b)))
+  (cons '|where| (cons (|postTran| (second arg)) (postTranList x)))))
+
+(defun |postWith| (arg)
+ (let (|$insidePostCategoryIfTrue| a)
+ (declare (special |$insidePostCategoryIfTrue|))
+  (setq |$insidePostCategoryIfTrue| t)
+  (setq a (|postTran| (second arg)))
+  (cond
+   ((and (consp a) (member (qfirst a) '(signature attribute if)))
+     (list 'category a))
+   ((and (consp a) (eq (qfirst a) 'progn))
+     (cons 'category (qrest a)))
+   (t a))))
+
+(defun print-package (package)
+ (declare (special out-stream))
+  (format out-stream "~&~%(IN-PACKAGE ~S )~%~%" package))
+ 
+(defun preparse (strm &aux (stack ()))
+ (declare (special $comblocklist $skipme $preparse-last-line $index |$docList|
+            $preparseReportIfTrue |$headerDocumentation|
+            |$maxSignatureLineNumber| |$constructorLineNumber|))
+  (setq $comblocklist nil)
+  (setq $skipme nil)
+  (when $preparse-last-line
+   (if (consp $preparse-last-line)
+    (setq stack $preparse-last-line)
+    (push $preparse-last-line stack))
+   (setq $index (- $index (length stack))))
+  (let ((u (preparse1 stack)))
+   (if $skipme 
+    (preparse strm)
+    (progn
+      (when $preparseReportIfTrue (parseprint u))
+      (setq |$headerDocumentation| nil)
+      (setq |$docList| nil)
+      (setq |$maxSignatureLineNumber| 0)
+      (setq |$constructorLineNumber| (ifcar (ifcar u)))
+      u))))
+
+(defun preparse1 (linelist)
+ (labels (
+  (isSystemCommand (line)
+    (and (> (length line) 0) (eq (char line 0) #\) )))
+  (executeSystemCommand (line)
+   (catch 'spad_reader (|doSystemCommand| (subseq line 1))))
+ )
+ (prog (($linelist linelist) $echolinestack num line i l psloc
+        instring pcount comsym strsym oparsym cparsym n ncomsym tmp1
+        (sloc -1) continue (parenlev 0) ncomblock lines locs nums functor)
+ (declare (special $linelist $echolinestack |$byConstructors| $skipme
+           |$constructorsSeen| $preparse-last-line $index in-stream))
+READLOOP 
+  (setq tmp1 (preparseReadLine linelist))
+  (setq num (car tmp1))
+  (setq line (cdr tmp1))
+  (unless (stringp line)
+    (preparse-echo linelist)
+    (cond 
+     ((null lines) (return nil))
+     (ncomblock    (fincomblock nil nums locs ncomblock nil)))
+    (return 
+     (pair (nreverse nums) (parsepiles (nreverse locs) (nreverse lines)))))
+  (when (and (null lines) (isSystemCommand line))
+    (preparse-echo linelist)
+    (setq $preparse-last-line nil) ;don't reread this line
+    (executeSystemCommand line)
+    (go READLOOP))
+  (setq l (length line))
+  ; if we get a null line, read the next line
+  (when (eq l 0) (go READLOOP))
+  ; otherwise we have to parse this line
+  (setq psloc sloc)
+  (setq i 0)
+  (setq instring nil)
+  (setq pcount 0)
+STRLOOP ;; handle things that need ignoring, quoting, or grouping
+  ; are we in a comment, quoting, or grouping situation?
+  (setq strsym  (or (position #\" line :start  i ) l))
+  (setq comsym  (or (search "--"  line :start2 i ) l))
+  (setq ncomsym (or (search "++"  line :start2 i ) l))
+  (setq oparsym (or (position #\( line :start  i ) l))
+  (setq cparsym (or (position #\) line :start  i ) l))
+  (setq n (min strsym comsym ncomsym oparsym cparsym))
+  (cond 
+   ; nope, we found no comment, quoting, or grouping
+   ((= n l) (go NOCOMS))
+   ((escaped line n))
+   ; scan until we hit the end of the string
+   ((= n strsym) (setq instring (not instring)))
+   ; we are in a string, just continue looping
+   (instring)
+   ;; handle -- comments by ignoring them
+   ((= n comsym)
+    (setq line (subseq line 0 n))
+    (go NOCOMS)) ; discard trailing comment
+   ;; handle ++ comments by chunking them together
+   ((= n ncomsym)
+    (setq sloc (indent-pos line))
+    (cond
+     ((= sloc n)
+      (when (and ncomblock (not (= n (car ncomblock))))
+       (fincomblock num nums locs ncomblock linelist)
+       (setq ncomblock nil))
+      (setq ncomblock (cons n (cons line (ifcdr ncomblock))))
+      (setq line ""))
+     (t 
+      (push (strconc (make-full-cvec n " ") (substring line n ())) $linelist)
+      (setq $index (1- $index))
+      (setq line (subseq line 0 n))))
+    (go NOCOMS))
+   ; know how deep we are into parens
+   ((= n oparsym) (setq pcount (1+ pcount)))
+   ((= n cparsym) (setq pcount (1- pcount))))
+  (setq i (1+ n))
+  (go STRLOOP)
+NOCOMS 
+  ; remember the indentation level
+  (setq sloc (indent-pos line))
+  (setq line (string-right-trim " " line))
+  (when (null sloc)
+   (setq sloc psloc)
+   (go READLOOP))
+  ; handle line that ends in a continuation character
+  (cond
+   ((eq (elt line (maxindex line)) #\_)
+    (setq continue t)
+    (setq line (subseq line (maxindex line))))
+   ((setq continue nil)))
+  ; test for skipping constructors
+  (when (and (null lines) (= sloc 0))
+    (if (and |$byConstructors|
+             (null (search "==>" line))
+             (not 
+              (member 
+               (setq functor 
+                (intern (substring line 0 (strposl ": (=" line 0 nil))))
+                |$byConstructors|)))
+       (setq $skipme 't)
+       (progn
+        (push functor |$constructorsSeen|)
+        (setq $skipme nil))))
+  ; is this thing followed by ++ comments?
+  (when (and lines (eql sloc 0))
+   (when (and ncomblock (not (zerop (car ncomblock))))
+    (fincomblock num nums locs ncomblock linelist))
+   (when (not (is-console in-stream))
+    (setq $preparse-last-line (nreverse $echolinestack)))
+   (return
+    (pair (nreverse nums) (parsepiles (nreverse locs) (nreverse lines)))))
+  (when (> parenlev 0)
+   (push nil locs)
+   (setq sloc psloc)
+   (go REREAD))
+  (when ncomblock
+   (fincomblock num nums locs ncomblock linelist)
+   (setq ncomblock ()))
+  (push sloc locs)
+REREAD 
+  (preparse-echo linelist)
+  (push line lines)
+  (push num nums)
+  (setq parenlev (+ parenlev pcount))
+  (when (and (is-console in-stream) (not continue))
+   (setq $preparse-last-line nil)
+   (return
+    (pair (nreverse nums) (parsepiles (nreverse locs) (nreverse lines)))))
+  (go READLOOP))))
+
+(defun preparse-echo (linelist)
+ (declare (special $EchoLineStack Echo-Meta) (ignore linelist))
+ (if Echo-Meta 
+  (dolist (x (reverse $EchoLineStack))
+   (format out-stream "~&;~A~%" x)))
+ (setq $EchoLineStack ()))
+
+(defun preparseReadLine (x)
+ (let (line ind tmp1)
+ (declare (special *eof*))
+  (setq tmp1 (preparseReadLine1))
+  (setq ind (car tmp1))
+  (setq line (cdr tmp1))
+  (cond
+   ((not (stringp line)) (cons ind line))
+   ((zerop (size line))  (cons ind line))
+   ((char= (elt line 0) #\) )
+    (cond
+     ((initial-substring ")if" line)
+      (if (eval (string2BootTree (storeblanks line 3)))
+       (preparseReadLine x)
+       (skip-ifblock x)))
+     ((initial-substring ")elseif" line) (skip-to-endif x))
+     ((initial-substring ")else" line)   (skip-to-endif x))
+     ((initial-substring ")endif" line)  (preparseReadLine x))
+     ((initial-substring ")fin" line)
+      (setq *eof* t)
+      (cons ind nil)))))
+  (cons ind line)))
+ 
+(defun preparseReadLine1 ()
+ (labels (
+  (accumulateLinesWithTrailingEscape (line)
+   (let (ind)
+   (declare (special $preparse-last-line))
+     (if (and (> (setq ind (maxindex line)) -1) (char= (elt line ind) #\_))
+      (setq $preparse-last-line
+        (strconc (substring line 0 ind) (cdr (preparseReadLine1))))
+      line))))
+ (let (line)
+ (declare (special $linelist $preparse-last-line $index $EchoLineStack))
+  (setq line
+   (if $linelist
+    (pop $linelist)
+    (expand-tabs (get-a-line in-stream))))
+  (setq $preparse-last-line line)
+  (if (stringp line)
+   (progn
+    (incf $index)   ;; $index is the current line number
+    (setq line (string-right-trim " " line))
+    (push (copy-seq line) $EchoLineStack)
+    (cons $index (accumulateLinesWithTrailingEscape line)))
+   (cons $index line)))))
+ 
+(defun |primitiveType| (form)
+  (declare (special |$DoubleFloat| |$NegativeInteger| |$PositiveInteger|
+                     |$NonNegativeInteger| |$String| |$EmptyMode|))
+  (cond
+    ((null form) |$EmptyMode|)
+    ((stringp form) |$String|)
+    ((integerp form)
+     (cond
+       ((eql form 0) |$NonNegativeInteger|)
+       ((> form 0) |$PositiveInteger|)
+       (t |$NegativeInteger|)))
+    ((floatp form) |$DoubleFloat|)
+    (t nil)))
+
+(defun print-defun (name body)
+ (let* ((sp (assoc 'vmlisp::compiler-output-stream vmlisp::optionlist))
+        (st (if sp (cdr sp) *standard-output*)))
+ (declare (special vmlisp::optionlist |$PrettyPrint|))
+  (when (and (is-console st) (symbolp name) (fboundp name)
+           (not (compiled-function-p (symbol-function name))))
+    (compile name))
+  (when (or |$PrettyPrint| (not (is-console st)))
+        (print-full body st) (force-output st))))
+
+(defun |processFunctor| (form signature data localParList e)
+  (cond
+    ((and (consp form) (eq (qrest form) nil)
+          (eq (qfirst form) '|CategoryDefaults|))
+     (|error| '|CategoryDefaults is a reserved name|))
+    (t (|buildFunctor| form signature data localParList e))))
+
+(defun |purgeNewConstructorLines| (lines conlist)
+ (loop for x in lines
+  when (null (|screenLocalLine| x conlist))
+  collect x))
+
+(defun push-reduction (rule redn)
+  (stack-push (make-reduction :rule rule :value redn) reduce-stack))
+
+(defun |putDomainsInScope| (x env)
+ (let (z newValue)
+ (declare (special |$CapsuleDomainsInScope| |$insideCapsuleFunctionIfTrue|))
+  (setq z (|getDomainsInScope| env))
+  (when (|member| x z) (say "****** Domain: " x " already in scope"))
+  (setq newValue (cons x (|delete| x z)))
+  (if |$insideCapsuleFunctionIfTrue|
+    (progn
+      (setq |$CapsuleDomainsInScope| newValue) 
+      env)
+    (|put| '|$DomainsInScope| 'special newValue env))))
+
+(defun |putInLocalDomainReferences| (def)
+ (let (|$elt| opName lam varl body)
+ (declare (special |$elt| |$QuickCode|))
+  (setq opName (car def))
+  (setq lam (caadr def))
+  (setq varl (cadadr def))
+  (setq body (car (cddadr def)))
+  (setq |$elt| (if |$QuickCode| 'qrefelt 'elt))
+  (|NRTputInTail| (cddadr def))
+  def))
+
+
+(defun quote-if-string (token)
+ (declare (special $boot $spad))
+ (when token   ;only use token-type on non-null tokens
+  (case (token-type token)
+   (bstring      (strconc "[" (token-symbol token) "]*"))
+   (string       (strconc "'" (token-symbol token) "'"))
+   (spadstring   (strconc "\"" (underscore (token-symbol token)) "\""))
+   (number       (format nil "~v,'0D" (token-nonblank token)
+                                (token-symbol token)))
+   (special-char (string (token-symbol token)))
+   (identifier   (let ((id (symbol-name (token-symbol token)))
+                           (pack (package-name (symbol-package
+                                                (token-symbol token)))))
+                  (if (or $boot $spad)
+                   (if (string= pack "BOOT")
+                    (escape-keywords (underscore id) (token-symbol token))
+                    (concatenate 'string
+                      (underscore pack) "'" (underscore id)))
+                   id)))
+   (t            (token-symbol token)))))
+
+
+(defun read-a-line (&optional (stream t))
+ (if (stream-eof stream)
+  (progn
+   (setq File-Closed t)
+   (setq *eof* t)
+   (Line-New-Line (make-string 0) Current-Line)
+   nil)
+  (read-line stream)))
+
+(defun recompile-lib-file-if-necessary (lfile)
+ (let* ((bfile (make-pathname :type *lisp-bin-filetype* :defaults lfile))
+        (bdate (and (probe-file bfile) (file-write-date bfile)))
+        (ldate (and (probe-file lfile) (file-write-date lfile))))
+  (declare (special *lisp-bin-filetype*))
+  (unless (and ldate bdate (> bdate ldate))
+   (compile-lib-file lfile)
+   (list bfile))))
+
+(defun |recordAttributeDocumentation| (arg lineno)
+ (let (att name)
+  (setq att (cadr arg))
+  (setq name (|opOf| att))
+  (cond
+   ((upper-case-p (elt (pname name) 0)) nil)
+   (t
+    (|recordDocumentation|
+     (list name (cons '|attribute| (ifcdr (postTransform att)))) lineno)))))
+
+(defun |recordDocumentation| (key lineno)
+ (let (u)
+ (declare (special |$docList| |$maxSignatureLineNumber|))
+  (|recordHeaderDocumentation| lineno)
+  (setq u (|collectComBlock| lineno))
+  (setq |$maxSignatureLineNumber| lineno)
+  (setq |$docList| (cons (cons key u) |$docList|))))
+
+(defun |recordHeaderDocumentation| (lineno)
+ (let (al)
+ (declare (special |$headerDocumentation| |$maxSignatureLineNumber|
+                    $comblocklist))
+  (when (eql |$maxSignatureLineNumber| 0)
+    (setq al
+      (loop for p in $comblocklist
+       when (or (null (car p)) (null lineno) (> lineno (car p)))
+       collect p))
+    (setq $comblocklist (setdifference $comblocklist al))
+    (setq |$headerDocumentation| (assocright al))
+    (when |$headerDocumentation| (setq |$maxSignatureLineNumber| 1))
+    |$headerDocumentation|)))
+
+(defun |recordSignatureDocumentation| (opSig lineno)
+  (|recordDocumentation| (cdr (postTransform opSig)) lineno))
+
+(defun |replaceExitEtc| (x tag opFlag opMode)
+ (declare (special |$finalEnv|))
+  (cond 
+   ((atom x) nil)
+   ((and (consp x) (eq (qfirst x) 'quote)) nil)
+   ((and (consp x) (equal (qfirst x) opFlag) (consp (qrest x))
+         (consp (qcddr x)) (eq (qcdddr x) nil))
+     (|rplac| (caaddr x) (|replaceExitEtc| (caaddr x) tag opFlag opMode))
+     (cond
+      ((eql (second x) 0)
+        (setq |$finalEnv|
+         (if |$finalEnv|
+           (|intersectionEnvironment| |$finalEnv| (third (third x)))
+           (third (third x))))
+         (|rplac| (car x) 'throw)
+         (|rplac| (cadr x) tag)
+         (|rplac| (caddr x) (car (|convertOrCroak| (caddr x) opMode))))
+      (t
+        (|rplac| (cadr x) (1- (cadr x))))))
+   ((and (consp x) (consp (qrest x)) (consp (qcddr x))
+         (eq (qcdddr x) nil)
+         (member (qfirst x) '(|TAGGEDreturn| |TAGGEDexit|)))
+     (|rplac| (car (caddr x))
+       (|replaceExitEtc| (car (caddr x)) tag opFlag opMode)))
+   (t
+     (|replaceExitEtc| (car x) tag opFlag opMode)
+     (|replaceExitEtc| (cdr x) tag opFlag opMode)))
+ x)
+
+(defun |removeBackslashes| (s)
+ (let (k)
+  (cond
+   ((string= s "") "")
+   ((> (|#| s) (setq k (|charPosition| #\\ s 0)))
+    (if (eql k 0) 
+     (|removeBackslashes| (substring s 1 nil))
+     (strconc (substring s 0 k)
+              (|removeBackslashes| (substring s (1+ k) nil)))))
+   (t s))))
+
+(defun |removeSuperfluousMapping| (sig1)
+ (if (and (consp sig1) (consp (qfirst sig1)) (eq (qcaar sig1) '|Mapping|))
+  (cons (cdr (qfirst sig1)) (qrest sig1))
+  sig1))
+
+(defun |replaceVars| (x oldvars newvars)
+ (loop for old in oldvars for new in newvars
+  do (setq x (subst new old x :test #'equal)))
+ x)
+
+(defun |resolve| (din dout)
+ (declare (special |$String| |$EmptyMode| |$NoValueMode|))
+ (cond
+  ((or (equal din |$NoValueMode|) (equal dout |$NoValueMode|)) |$NoValueMode|)
+  ((equal dout |$EmptyMode|) din)
+  ((and (not (equal din dout)) (or (stringp din) (stringp dout)))
+    (cond
+       ((|modeEqual| dout |$String|) dout)
+       ((|modeEqual| din |$String|) nil)
+       (t (|mkUnion| din dout))))
+    (t dout)))
+
+(defun |reportOnFunctorCompilation| ()
+ (declare (special |$op| |$functorStats| |$functionStats|
+                   |$warningStack| |$semanticErrorStack|))
+   (|displayMissingFunctions|)
+   (when |$semanticErrorStack| (|sayBrightly| " "))
+   (|displaySemanticErrors|)
+   (when |$warningStack| (|sayBrightly| " "))
+   (|displayWarnings|)
+   (setq |$functorStats| (|addStats| |$functorStats| |$functionStats|))
+   (|sayBrightly|
+     (cons '|%l|
+      (append (|bright| "  Cumulative Statistics for Constructor")
+       (list |$op|))))
+   (|sayBrightly|
+    (cons "      Time:" 
+     (append (|bright| (|normalizeStatAndStringify| (second |$functorStats|)))
+       (list "seconds"))))
+   (|sayBrightly| " ")
+   '|done|)
+
+(defun /rf (&rest foo &aux (echo-meta t))
+ (declare (special echo-meta) (ignore foo))
+  (/rf-1 nil))
+
+(defun /rq (&rest foo &aux (echo-meta nil))
+  (declare (special Echo-Meta) (ignore foo))
+  (/rf-1 nil))
+
+(defun /rf-1 (ignore)
+ (declare (ignore ignore))
+ (let* ((input-file (makeInputFilename /editfile))
+        (type (pathname-type input-file)))
+ (declare (special echo-meta /editfile))
+ (cond
+  ((string= type "lisp") (load input-file))
+  ((string= type "input") (|ncINTERPFILE| input-file echo-meta))
+  (t (spad input-file)))))
+
+(defun |/RQ,LIB| (&rest foo &aux (echo-meta nil) ($lisplib t))
+ (declare (special echo-meta $lisplib) (ignore foo))
+  (/rf-1 nil))
+
+(defun |rwriteLispForm| (key form)
+ (declare (special |$libFile| $lisplib))
+ (when $lisplib 
+   (|rwrite| key form |$libFile|)
+   (|LAM,FILEACTQ| key form)))
+
+
+(defun |screenLocalLine| (line conlist)
+ (let (s k con)
+  (setq k (|dbKind| line))
+  (setq con
+   (intern (cond ((or (char= k #\o) (char= k #\a))
+                   (setq s (|dbPart| line 5 1))
+                   (setq k (|charPosition| #\( s 1))
+                   (substring s 1 (1- k)))
+                 (t (|dbName| line)))))
+  (member con conlist)))
+
+(defun setDefOp (f)
+ (let (tmp1)
+  (declare (special |$defOp| |$topOp|))
+  (when (and (consp f) (eq (qfirst f) '|:|)
+             (consp (setq tmp1 (qrest f))))
+    (setq f (qfirst tmp1)))
+  (unless (atom f) (setq f (car f)))
+  (if |$topOp| 
+   (setq |$defOp| f)
+   (setq |$topOp| f))))
+
+(defun |seteltModemapFilter| (name mmList env)
+ (let (z)
+  (if (|isConstantId| name env)
+   (cond
+    ((setq z
+      (loop for mm in mmList
+       when (equal (car (cdddar mm)) name)
+       collect mm))
+      z)
+     (t
+      (|stackMessage|
+       (list '|selector variable: | name '| is undeclared and unbound|))
+      nil))
+   mmList)))
+
+(defun |setqMultiple| (nameList val m env)
+ (labels (
+  (decompose (tt len env)
+   (declare (ignore len))
+   (let (tmp1 z)
+   (declare (special |$EmptyMode|))
+    (cond
+     ((and (consp tt) (eq (qfirst tt) '|Record|)
+           (progn (setq z (qrest tt)) t))
+      (loop for item in z
+       collect (cons (second item) (third item))))
+     ((progn
+       (setq tmp1 (|comp| tt |$EmptyMode| env))
+       (and (consp tmp1) (consp (qrest tmp1)) (consp (qsecond tmp1))
+            (eq (qcaadr tmp1) '|RecordCategory|)
+            (consp (qcddr tmp1)) (eq (qcdddr tmp1) nil)))
+      (loop for item in z
+       collect (cons (second item) (third item))))
+     (t (|stackMessage| (list '|no multiple assigns to mode: | tt)))))))
+ (let (g m1 tt x mp selectorModePairs tmp2 assignList)
+ (declare (special |$noEnv| |$EmptyMode| |$NoValueMode|))
+  (cond
+   ((and (consp val) (eq (qfirst val) 'cons) (equal m |$NoValueMode|))
+     (|setqMultipleExplicit| nameList (|uncons| val) m env))
+   ((and (consp val) (eq (qfirst val) '|@Tuple|) (equal m |$NoValueMode|))
+     (|setqMultipleExplicit| nameList (qrest val) m env))
+   ; 1 create a gensym, %add to local environment, compile and assign rhs
+   (t 
+     (setq g (|genVariable|))
+     (setq env (|addBinding| g nil env))
+     (setq tmp2 (|compSetq1| g val |$EmptyMode| env))
+     (when tmp2
+      (setq tt tmp2)
+      (setq m1 (cadr tmp2))
+      (setq env (|put| g 'mode m1 env))
+      (setq tmp2 (|convert| tt m))
+;  1.1 --exit if result is a list
+      (when tmp2
+       (setq x (first tmp2))
+       (setq mp (second tmp2))
+       (setq env (third tmp2))
+       (cond
+        ((and (consp m1) (eq (qfirst m1) '|List|) (consp (qrest m1))
+              (eq (qcddr m1) nil))
+         (loop for y in nameList do
+          (setq env 
+           (|put| y '|value| (list (|genSomeVariable|) (second m1) |$noEnv|)
+           env)))
+         (|convert| (list (list 'progn x (list 'let nameList g) g) mp env) m))
+        (t
+;  2 --verify that the #nameList = number of parts of right-hand-side
+         (setq selectorModePairs 
+          (decompose m1 (|#| nameList) env))
+         (when selectorModePairs 
+          (cond
+           ((not (eql (|#| nameList) (|#| selectorModePairs)))
+             (|stackMessage|
+              (list val '| must decompose into | 
+               (|#| nameList) '| components| )))
+           (t
+;  3 --generate code
+            (setq assignList
+             (loop for x in nameList
+                   for item in selectorModePairs
+              collect (car
+                       (progn
+                        (setq tmp2 
+                          (or (|compSetq1| x (list '|elt| g (first item)) 
+                                             (rest item) env)
+                              (return '|failed|)))
+                        (setq env (third tmp2))
+                        tmp2))))
+            (unless (eq assignList '|failed|)
+             (list (mkprogn (cons x (append assignList (list g)))) mp env))
+              ))))))))))))
+
+(defun |setqMultipleExplicit| (nameList valList m env)
+ (declare (ignore m))
+ (let (gensymList assignList tmp1 reAssignList)
+ (declare (special |$NoValueMode| |$EmptyMode|))
+  (cond
+   ((not (eql (|#| nameList) (|#| valList)))
+    (|stackMessage|
+     (list '|Multiple assignment error; # of items in: | nameList 
+           '|must = # in: | valList)))
+   (t
+    (setq gensymList
+     (loop for name in nameList
+      collect (|genVariable|)))
+    (setq assignList
+     (loop for g in gensymList
+           for val in valList
+      collect (progn
+               (setq tmp1
+                (or (|compSetq1| g val |$EmptyMode| env)
+                    (return '|failed|)))
+               (setq env (third tmp1))
+               tmp1)))
+    (unless (eq assignList '|failed|)
+     (setq reAssignList
+      (loop for g in gensymList
+            for name in nameList
+       collect (progn
+                (setq tmp1 
+                 (or (|compSetq1| name g |$EmptyMode| env)
+                     (return '|failed|)))
+                 (setq env (third tmp1))
+                 tmp1)))
+     (unless (eq reAssignList '|failed|)
+      (list 
+       (cons 'progn
+        (append
+         (loop for tt in assignList
+          collect (car tt))
+         (loop for tt in reAssignList
+          collect (car tt))))
+         |$NoValueMode| (third (|last| reAssignList)))))))))
+
+(defun |setqSetelt| (form val mode env)
+ (|comp| (cons '|setelt| (cons (car form) (append (cdr form) (list val))))
+          mode env))
+
+(defun |setqSingle| (form val mode env)
+ (let (|$insideSetqSingleIfTrue| currentProplist mpp maxmpp td x mp tp key 
+       newProplist ep k newform)
+ (declare (special |$insideSetqSingleIfTrue| |$QuickLet| |$form|
+                   |$profileCompiler| |$EmptyMode| |$NoValueMode|))
+  (setq |$insideSetqSingleIfTrue| t)
+  (setq currentProplist (|getProplist| form env))
+  (setq mpp
+   (or (|get| form '|mode| env) (|getmode| form env)
+       (if (equal mode |$NoValueMode|) |$EmptyMode| mode)))
+  (when (setq td
+         (cond
+          ((setq td (|comp| val mpp env)) 
+           td)
+          ((and (null (|get| form '|mode| env))
+                (not (equal mpp (setq maxmpp (|maxSuperType| mpp env))))
+                (setq td (|comp| val maxmpp env)))
+           td)
+          ((and (setq td (|comp| val |$EmptyMode| env))
+                (|getmode| (second td) env))
+           (|assignError| val (second td) form mpp))))
+   (when (setq tp (|convert| td mode))
+    (setq x (first tp))
+    (setq mp (second tp))
+    (setq ep (third tp))
+    (when (and |$profileCompiler| (identp form))
+      (setq key (if (member form (cdr |$form|)) '|arguments| '|locals|))
+      (|profileRecord| key form (second td)))
+    (setq newProplist
+     (|consProplistOf| form currentProplist '|value|
+      (|removeEnv| (cons val (cdr td)))))
+    (setq ep (if (consp form) ep (|addBinding| form newProplist ep)))
+    (when (|isDomainForm| val ep)
+     (when (|isDomainInScope| form ep)
+      (|stackWarning|
+       (list '|domain valued variable| form
+              '|has been reassigned within its scope| )))
+      (setq ep (|augModemapsFromDomain1| form val ep)))
+    (if (setq k (|NRTassocIndex| form))
+      (setq newform (list 'setelt '$ k x))
+      (setq newform
+       (if |$QuickLet| 
+        (list 'let form x)
+        (list 'let form x
+          (if (|isDomainForm| x ep) 
+            (list 'elt form 0)
+            (car (|outputComp| form ep)))))))
+    (list newform mp ep)))))
+
+(defun |signatureTran| (pred)
+ (declare (special |$e|))
+  (cond
+   ((atom pred) pred)
+   ((and (consp pred) (eq (qfirst pred) '|has|) (CONSP (qrest pred))
+         (consp (qcddr pred))
+         (eq (qcdddr pred) nil)
+         (|isCategoryForm| (third pred) |$e|))
+     (list '|ofCategory| (second pred) (third pred)))
+   (t
+    (loop for p in pred
+     collect (|signatureTran| p)))))
+
+(defun skip-blanks ()
+  (loop (let ((cc (current-char)))
+          (if (not cc) (return nil))
+          (if (eq (token-lookahead-type cc) 'white)
+              (if (not (advance-char)) (return nil))
+              (return t)))))
+ 
+(defun skip-ifblock (x)
+ (let (line ind tmp1)
+  (setq tmp1  (preparseReadLine1))
+  (setq ind (car tmp1))
+  (setq line (cdr tmp1))
+  (cond
+   ((not (stringp line)) 
+     (cons ind line))
+   ((zerop (size line))
+     (skip-ifblock x))
+   ((char= (elt line 0) #\) )
+    (cond
+     ((initial-substring ")if" line)
+      (cond 
+        ((eval (string2BootTree (storeblanks line 3)))
+          (preparseReadLine X))
+        (t (skip-ifblock x))))
+     ((initial-substring ")elseif" line)
+       (cond
+        ((eval (string2BootTree (storeblanks line 7)))
+          (preparseReadLine X))
+        (t (skip-ifblock x))))
+     ((initial-substring ")else" line)
+       (preparseReadLine x))
+     ((initial-substring ")endif" line)
+       (preparseReadLine x))
+     ((initial-substring ")fin" line)
+       (cons ind nil))))
+   (t (skip-ifblock x)))))
+ 
+(defun skip-to-endif (x)
+ (let (line ind tmp1)
+  (setq tmp1 (preparseReadLine1))
+  (setq ind (car tmp1))
+  (setq line (cdr tmp1))
+  (cond
+   ((not (stringp line)) (cons ind line))
+   ((initial-substring line ")endif") (preparseReadLine x))
+   ((initial-substring line ")fin") (cons ind nil))
+   (t (skip-to-endif x)))))
+
+(defun spad (&optional (*spad-input-file* nil) (*spad-output-file* nil)
+             &aux (*comp370-apply* #'print-defun)
+                  (*fileactq-apply* #'print-defun)
+                 ($spad t) ($boot nil) (optionlist nil) (*eof* nil)
+                 (file-closed nil) (/editfile *spad-input-file*)
+                (|$noSubsumption| |$noSubsumption|) in-stream out-stream)
+  (declare (special echo-meta /editfile *comp370-apply* *eof* curoutstream
+                    file-closed |$noSubsumption| |$InteractiveFrame|
+                    |$InteractiveMode| optionlist
+                    boot-line-stack *fileactq-apply* $spad $boot))
+  ;; only rebind |$InteractiveFrame| if compiling
+  (progv (if (not |$InteractiveMode|) '(|$InteractiveFrame|))
+         (if (not |$InteractiveMode|)
+             (list (|addBinding| '|$DomainsInScope|
+                    `((fluid . |true|))
+                   (|addBinding| '|$Information| nil
+                      (|makeInitialModemapFrame|)))))
+  (init-boot/spad-reader)
+  (unwind-protect
+    (progn
+      (setq in-stream (if *spad-input-file*
+                        (open *spad-input-file* :direction :input)
+                         *standard-input*))
+      (initialize-preparse in-stream)
+      (setq out-stream (if *spad-output-file*
+                        (open *spad-output-file* :direction :output)
+                         *standard-output*))
+      (when *spad-output-file*
+         (format out-stream "~&;;; -*- Mode:Lisp; Package:Boot  -*-~%~%")
+         (print-package "BOOT"))
+      (setq curoutstream out-stream)
+      (loop
+       (if (or *eof* file-closed) (return nil))
+       (catch 'spad_reader
+         (if (setq boot-line-stack (preparse in-stream))
+             (let ((line (cdar boot-line-stack)))
+               (declare (special line))
+               (|PARSE-NewExpr|)
+               (let ((parseout (pop-stack-1)) )
+                 (when parseout
+                       (let ((*standard-output* out-stream))
+                         (s-process parseout))
+                       (format out-stream "~&")))
+               )))
+      (ioclear in-stream out-stream)))
+    (if *spad-input-file* (shut in-stream))
+    (if *spad-output-file* (shut out-stream)))
+  t))
+
+(defun |spadCompileOrSetq| (form)
+ (let (nam lam vl body namp tmp1 e vlp macform)
+ (declare (special |$insideCapsuleFunctionIfTrue|))
+  (setq nam (car form))
+  (setq lam (caadr form))
+  (setq vl (cadadr form))
+  (setq body (car (cddadr form)))
+  (cond
+   ((and (consp vl) (progn (setq tmp1 (reverse vl)) t)
+         (consp tmp1)
+         (progn
+          (setq e (qfirst tmp1))
+          (setq vlp (qrest tmp1))
+          t)
+         (progn (setq vlp (nreverse vlp)) t)
+         (consp body)
+         (progn (setq namp (qfirst body)) t)
+         (equal (qrest body) vlp))
+     (|LAM,EVALANDFILEACTQ|
+      (list 'put (mkq nam) (mkq '|SPADreplace|) (mkq namp)))
+     (|sayBrightly|
+      (cons "     " (append (|bright| nam) 
+       (cons "is replaced by" (|bright| namp))))))
+   ((and (or (atom body)
+             (let ((result t))
+              (loop for x in body
+               do (setq result (and result (atom x))))
+              result))
+         (consp vl)
+         (progn (setq tmp1 (reverse vl)) t)
+         (consp tmp1)
+         (progn
+          (setq e (qfirst tmp1))
+          (setq vlp (qrest tmp1))
+          t)
+         (progn (setq vlp (nreverse vlp)) t)
+         (null (contained e body)))
+    (setq macform (list 'xlam vlp body))
+    (|LAM,EVALANDFILEACTQ|
+     (list 'put (mkq nam) (mkq '|SPADreplace|) (mkq macform)))
+    (|sayBrightly| (cons "     " (append (|bright| nam)
+      (cons "is replaced by" (|bright| body))))))
+   (t nil))
+  (if |$insideCapsuleFunctionIfTrue|
+   (car (comp (list form)))
+   (|compileConstructor| form))))
+
+(defun spad-fixed-arg (fname )
+ (and (equal (symbol-package fname) (find-package "BOOT"))
+      (not (get fname 'compiler::spad-var-arg))
+      (search ";" (symbol-name fname))
+      (or (get fname 'compiler::fixed-args)
+          (setf (get fname 'compiler::fixed-args) t)))
+   nil)
+
+(defun |spadSysBranch| (tree arg) ; tree is (msg kind TREEorSomethingElse ...)
+ (let (kind)
+  (cond
+   ((null arg) t)
+   (t
+    (setq kind (elt tree 2))
+    (cond
+     ((eq kind 'tree) (|spadSysChoose| (elt tree 4) arg))
+     ((eq kind 'literals) (|member| arg (ELT tree 4)))
+     ((eq kind 'integer) (integerp arg))
+     ((eq kind 'function) (atom arg))
+     (t (|systemError| "unknown tree branch")))))))
+
+(defun |spadSysChoose| (tree form) ; tree is ((word . tree) ..)
+ (let (lookupOn newTree)
+  (cond
+   ((null form) t)
+   ((null tree) nil)
+   (t
+     (if (and (consp form) (consp (qcdr form)) (eq (qcddr form) nil))
+       (setq lookupOn (qcar form))
+       (setq lookupOn form))
+    (when (setq newTree (lassoc lookupOn tree))
+        (|spadSysBranch| newTree (cadr form)))))))
+
+(defun |splitEncodedFunctionName| (encodedName sep)
+ (let (sep0 p1 p2 p3 s1 s2 s3 s4)
+  ; sep0 is the separator used in "encodeFunctionName".
+  (setq sep0 ";")
+  (unless (stringp encodedName) (setq encodedName (princ-to-string encodedName)))
+  (cond
+   ((null (setq p1 (strpos sep0 encodedName 0 "*"))) nil)
+   ; This is picked up in compile for inner functions in partial compilation
+   ((null (setq p2 (strpos sep0 encodedName (1+ p1) "*"))) '|inner|)
+   ((null (setq p3 (strpos sep encodedName (1+ p2) "*"))) nil)
+   (t
+    (setq s1 (substring encodedName 0 p1))
+    (setq s2 (substring encodedName (1+ p1) (- p2 p1 1)))
+    (setq s3 (substring encodedName (1+ p2) (- p3 p2 1)))
+    (setq s4 (substring encodedName (1+ p3) nil))
+    (list s1 s2 s3 s4)))))
+
+(defun stack-clear (stack)
+  (setf (stack-store stack) nil)
+  (setf (stack-size stack) 0)
+  (setf (stack-top stack) nil)
+  (setf (stack-updated stack) nil))
+
+(defun stack-load (list stack)
+  (setf (stack-store stack) list)
+  (setf (stack-size stack) (length list))
+  (setf (stack-top stack) (car list)))
+
+(defun stack-pop (stack)
+  (let ((y (pop (stack-store stack))))
+    (decf (stack-size stack))
+    (setf (stack-top stack)
+          (if (stack-/-empty stack) (car (stack-store stack))))
+    y))
+
+(defun stack-push (x stack)
+  (push x (stack-store stack))
+  (setf (stack-top stack) x)
+  (setf (stack-updated stack) t)
+  (incf (stack-size stack))
+  x)
+
+(defun storeblanks (line n)
+ (do ((i 0 (1+ i)))
+     ((= i n) line)
+  (setf (char line i) #\ )))
+
+(defun string2BootTree (s)
+ (init-boot/spad-reader)
+ (let* ((boot-line-stack (list (cons 1 s)))
+        ($boot t)
+        ($spad nil)
+        (xtokenreader 'get-boot-token)
+        (line-handler 'next-boot-line)
+        (parseout (progn (|PARSE-Expression|) (pop-stack-1))))
+ (declare (special boot-line-stack $boot $spad xtokenreader line-handler))
+ (def-rename (new2OldLisp parseout))))
+
+(defun |stripOffArgumentConditions| (argl)
+ (let (condition (i 0))
+ (declare (special |$argumentConditionList|))
+  (loop for x in argl 
+   do (incf i)
+   collect
+    (cond
+     ((and (consp x) (eq (qfirst x) '|\||) (consp (qrest x))
+           (consp (qcddr x)) (eq (qcdddr x) nil))
+       (setq condition (subst '|#1| (second x) (third x) :test #'equal))
+       (setq |$argumentConditionList|
+        (cons (list i (second x) condition) |$argumentConditionList|))
+       (second x))
+     (t x)))))
+
+(defun |stripOffSubdomainConditions| (margl argl)
+ (let (pair (i 0))
+ (declare (special |$argumentConditionList|))
+  (loop for x in margl for arg in argl 
+   do (incf i)
+   collect 
+    (cond
+     ((and (consp x) (eq (qfirst x) '|SubDomain|) (consp (qrest x))
+           (consp (qcddr x)) (eq (qcdddr x) nil))
+       (cond
+        ((setq pair (|assoc| i |$argumentConditionList|))
+          (rplac (cadr pair) (mkpf (list (third x) (cadr pair)) 'and))
+          (second x))
+        (t
+         (setq |$argumentConditionList|
+          (cons (list i arg (third x)) |$argumentConditionList|))
+         (second x))))
+     (t x)))))
+
+(defun |subrname| (u)
+ (cond
+   ((identp u) u)
+   ((or (compiled-function-p u) (mbpip u)) (bpiname u))
+   (t nil)))
+
+(defun |substituteCategoryArguments| (argl catform)
+ (let (arglAssoc (i 0))
+  (setq argl (subst '$$ '$ argl :test #'equal))
+  (setq arglAssoc
+   (loop for a in argl 
+    collect (cons (internl '|#| (princ-to-string (incf i))) a)))
+  (sublis arglAssoc catform)))
+
+(defun |substituteIntoFunctorModemap| (argl modemap env)
+ (let (dc sig tmp1 tl substitutionList)
+  (setq dc (caar modemap))
+  (setq sig (cdar modemap))
+  (cond
+   ((not (eql (|#| dc) (|#| sig)))
+     (|keyedSystemError| 
+          "Unexpected error or improper call to system function %1: %2"
+      (list "substituteIntoFunctorModemap" "Incompatible maps")))
+   ((equal (|#| argl) (|#| (cdr sig)))
+    (setq sig (eqsubstlist argl (cdr dc) sig))
+    (setq tl
+     (loop for a in argl for m in (rest sig)
+      collect (progn
+               (setq tmp1 (|compOrCroak| a m env))
+               (setq env (caddr tmp1))
+               tmp1)))
+    (setq substitutionList
+     (loop for x in (rest dc) for tt in tl
+      collect (cons x (car tt))))
+     (list (sublis substitutionList modemap) env))
+   (t nil))))
+
+(defun |substNames| (domainName viewName functorForm opalist)
+ (let (nameForDollar sel pos modemapform tmp0 tmp1)
+ (declare (special |$FormalMapVariableList|))
+  (setq functorForm (subst '$$ '$ functorForm))
+  (setq nameForDollar
+   (if (|isCategoryPackageName| functorForm)
+     (second functorForm)
+     domainName))
+; following calls to SUBSTQ must copy to save RPLAC's in
+; putInLocalDomainReferences
+  (dolist (term 
+            (eqsubstlist (ifcdr functorForm) |$FormalMapVariableList| opalist)
+            (nreverse0 tmp0))
+   (setq tmp1 (reverse term))
+   (setq sel (caar tmp1))
+   (setq pos (caddar tmp1))
+   (setq modemapform (nreverse (cdr tmp1)))
+  (push
+    (append
+     (subst '$ '$$ (subst nameForDollar '$ modemapform))
+     (list
+       (list sel viewName (if (eq domainName '$) pos (cadar modemapform)))))
+    tmp0))))
+
+(defun |substVars| (pred patternAlist patternVarList)
+ (let (patVar value everything replacementVar domainPredicates)
+ (declare (special |$FormalMapVariableList|))
+  (setq domainPredicates NIL)
+  (maplist 
+   #'(lambda (x)
+      (setq patVar (caar x))
+      (setq value (cdar x))
+      (setq pred (subst patVar value pred :test #'equal))
+      (setq patternAlist (|nsubst| patVar value patternAlist))
+      (setq domainPredicates 
+        (subst patVar value domainPredicates :test #'equal))
+      (unless (member value |$FormalMapVariableList|)
+       (setq domainPredicates
+         (cons (list '|isDomain| patVar value) domainPredicates))))
+     patternAlist)
+  (setq everything (list pred patternAlist domainPredicates))
+  (dolist (var |$FormalMapVariableList|)
+    (cond
+     ((contained var everything)
+        (setq replacementVar (car patternVarList))
+        (setq patternVarList (cdr patternVarList))
+        (setq pred (subst replacementVar var pred :test #'equal))
+        (setq domainPredicates
+          (subst replacementVar var domainPredicates :test #'equal)))))
+  (list pred domainPredicates)))
+
+(defun s-process (x)
+ (prog ((|$Index| 0)
+        ($macroassoc ())
+        ($newspad t)
+        (|$PolyMode| |$EmptyMode|)
+        (|$compUniquelyIfTrue| nil)
+        |$currentFunction|
+        (|$postStack| nil)
+        |$topOp|
+        (|$semanticErrorStack| ())
+        (|$warningStack| ())
+        (|$exitMode| |$EmptyMode|)
+        (|$exitModeStack| ())
+        (|$returnMode| |$EmptyMode|)
+        (|$leaveMode| |$EmptyMode|)
+        (|$leaveLevelStack| ())
+        $top_level |$insideFunctorIfTrue| |$insideExpressionIfTrue|
+        |$insideCoerceInteractiveHardIfTrue| |$insideWhereIfTrue|
+        |$insideCategoryIfTrue| |$insideCapsuleFunctionIfTrue| |$form|
+        (|$DomainFrame| '((NIL)))
+        (|$e| |$EmptyEnvironment|)
+        (|$genFVar| 0)
+        (|$genSDVar| 0)
+        (|$VariableCount| 0)
+        (|$previousTime| (get-internal-run-time))
+        (|$LocalFrame| '((NIL)))
+        (curstrm curoutstream) |$s| |$x| |$m| u)
+  (declare (special |$Index| $macroassoc $newspad |$PolyMode| |$EmptyMode|
+            |$compUniquelyIfTrue| |$currentFunction| |$postStack| |$topOp|
+            |$semanticErrorStack| |$warningStack| |$exitMode| |$exitModeStack|
+            |$returnMode| |$leaveMode| |$leaveLevelStack| $top_level 
+            |$insideFunctorIfTrue| |$insideExpressionIfTrue|
+            |$insideCoerceInteractiveHardIfTrue| |$insideWhereIfTrue|
+            |$insideCategoryIfTrue| |$insideCapsuleFunctionIfTrue| |$form|
+            |$DomainFrame| |$e| |$EmptyEnvironment| |$genFVar| |$genSDVar| 
+            |$VariableCount| |$previousTime| |$LocalFrame|
+            curstrm |$s| |$x| |$m| curoutstream $traceflag |$Translation|
+            |$TranslateOnly| |$PrintOnly| |$currentLine| |$InteractiveFrame|))
+   (setq $traceflag t)
+   (if (not x) (return nil))
+   (if $boot
+     (setq x (def-rename (new2OldLisp x))) 
+     (setq x (|parseTransform| (postTransform x))))
+   (when |$TranslateOnly| (return (setq |$Translation| x)))
+   (when |$postStack| (|displayPreCompilationErrors|) (return nil))
+   (when |$PrintOnly|
+        (format t "~S   =====>~%" |$currentLine|)
+        (return (prettyprint x)))
+   (if (not $boot)
+    (if |$InteractiveMode|
+      (|processInteractive| x nil)
+      (when (setq u (|compTopLevel| x |$EmptyMode| |$InteractiveFrame|))
+        (setq |$InteractiveFrame| (third u))))
+    (def-process x))
+   (when |$semanticErrorStack| (|displaySemanticErrors|))
+   (terpri)))
+
+
+(defun token-install (symbol type token &optional (nonblank t))
+  (setf (token-symbol token) symbol)
+  (setf (token-type token) type)
+  (setf (token-nonblank token) nonblank)
+  token)
+
+(defun token-lookahead-type (char)
+  "Predicts the kind of token to follow, based on the given initial character."
+ (declare (special Escape-Character))
+  (cond 
+   ((not char)                                             'eof)
+   ((or (char= char Escape-Character) (alpha-char-p char)) 'id)
+   ((digitp char)                                          'num)
+   ((char= char #\')                                       'string)
+   ((char= char #\[)                                       'bstring)
+   ((member char '(#\Space #\Tab #\Return) :test #'char=)  'white)
+   (t                                                       'special-char)))
+ 
+(defun token-print (token)
+  (format out-stream "(token (symbol ~S) (type ~S))~%"
+          (token-symbol token) (token-type token)))
+
+(defun |transDoc| (conname doclist)
+ (declare (ignore conname))
+ (let (|$x| |$attribute?| |$argl| rlist lines u v longline acc)
+ (declare (special |$x| |$attribute?| |$argl|))
+  (setq |$x| nil)
+  (setq rlist (reverse doclist))
+  (loop for item in rlist
+   do
+    (setq |$x| (car item))
+    (setq lines (cdr item))
+    (setq |$attribute?|
+      (and (consp |$x|) (consp (qcdr |$x|)) (eq (qcddr |$x|) nil)
+           (consp (qcadr |$x|)) (eq (qcdadr |$x|) nil)
+           (eq (qcaadr |$x|) '|attribute|)))
+    (cond
+     ((null lines)
+      (unless |$attribute?| (|checkDocError1| (list "Not documented!!!!"))))
+     (t
+      (setq u
+       (|checkTrim| |$x|
+        (cond
+         ((stringp lines) (list lines))
+         ((eq |$x| '|constructor|) (car lines))
+         (t lines))))
+      (setq |$argl| nil) ;; possibly unused -- tpd
+      (setq longline
+       (cond
+        ((eq |$x| '|constructor|)
+          (setq v
+           (or
+            (|checkExtract| "Description:" u)
+            (and u (|checkExtract| "Description:" 
+                    (cons (strconc "Description: " (car u)) (cdr u))))))
+          (|transformAndRecheckComments| '|constructor| (or v u)))
+        (t (|transformAndRecheckComments| |$x| u))))
+      (setq acc (cons (list |$x| longline) acc)))))
+    (nreverse acc)))
+
+(defun |transDocList| (|$constructorName| doclist)
+ (declare (special |$constructorName|))
+ (let (commentList conEntry acc)
+  (|sayBrightly|
+   (list "   Processing " |$constructorName| " for Browser database:"))
+  (setq commentList (|transDoc| |$constructorName| doclist))
+  (setq acc nil)
+  (loop for entry in commentList
+   do
+    (cond
+     ((and (consp entry) (eq (qcar entry) '|constructor|)
+           (consp (qcdr entry)) (eq (qcddr entry) nil))
+       (if conEntry 
+        (|checkDocError| (list "Spurious comments: " (qcadr entry)))
+        (setq conEntry entry)))
+     (t (setq acc (cons entry acc)))))
+  (if conEntry 
+   (cons conEntry acc)
+   (progn
+    (|checkDocError1| (list "Missing Description"))
+    acc))))
+
+(defun |transformAndRecheckComments| (name lines)
+ (let (|$x| |$name| |$origin| |$recheckingFlag| |$exposeFlagHeading| u)
+ (declare (special |$x| |$name| |$origin| |$recheckingFlag|
+                   |$exposeFlagHeading| |$exposeFlag| |$checkingXmptex?|))
+  (setq |$checkingXmptex?| nil)
+  (setq |$x| name)
+  (setq |$name| '|GlossaryPage|)
+  (setq |$origin| '|gloss|)
+  (setq |$recheckingFlag| nil)
+  (setq |$exposeFlagHeading| (list "--------" name "---------"))
+  (unless |$exposeFlag| (|sayBrightly| |$exposeFlagHeading|))
+  (setq u (|checkComments| name lines))
+  (setq |$recheckingFlag| t)
+  (|checkRewrite| name (list u))
+  (setq |$recheckingFlag| nil)
+  u))
+
+(defun |transformOperationAlist| (operationAlist)
+ (let (op sig condition implementation eltEtc impOp kind u n signatureItem 
+       itemList newAlist)
+ (declare (special |$functionLocations|))
+  (setq newAlist nil)
+  (dolist (item operationAlist)
+   (setq op (caar item))
+   (setq sig (cadar item))
+   (setq condition (cadr item))
+   (setq implementation (caddr item))
+   (setq kind
+    (cond
+     ((and (consp implementation) (consp (qrest implementation))
+           (consp (qcddr implementation))
+           (eq (qcdddr implementation) nil)
+           (progn (setq n (qthird implementation)) t)
+           (|member| (setq eltEtc (qfirst implementation)) '(const elt)))
+       eltEtc)
+     ((consp implementation)
+       (setq impOp (qfirst implementation))
+       (cond
+        ((eq impop 'xlam) implementation)
+        ((|member| impOp '(const |Subsumed|)) impOp)
+        (t (|keyedSystemError| "Unexpected type of entry in domain: %1s"
+             (list impop)))))
+     ((eq implementation '|mkRecord|) '|mkRecord|)
+     (t (|keyedSystemError| "Unexpected type of entry in domain: %1s"
+         (list implementation)))))
+   (when (setq u (|assoc| (list op sig) |$functionLocations|))
+     (setq n (cons n (cdr u))))
+   (setq signatureItem
+     (if (eq kind 'elt)
+       (if (eq condition t)
+         (list sig n)
+         (list sig n condition))
+       (list sig n condition kind)))
+   (setq itemList (cons signatureItem (lassq op newAlist)))
+   (setq newAlist (|insertAlist| op itemList newAlist)))
+  newAlist))
+
+(defun |transImplementation| (op map fn)
+ (setq fn (|genDeltaEntry| (cons op map)))
+ (if (and (consp fn) (eq (qcar fn) 'xlam)) 
+   (cons fn nil)
+   (cons '|call| (cons fn nil))))
+
+(defun |transIs| (u)
+  (if (|isListConstructor| u) 
+    (cons '|construct| (|transIs1| u))
+    u))
+
+(defun |transIs1| (u)
+ (let (x h v tmp3)
+  (cond
+   ((and (consp u) (eq (qfirst u) '|construct|))
+     (dolist (x (qrest u) (nreverse0 tmp3))
+       (push (|transIs| x) tmp3)))
+   ((and (consp u) (eq (qfirst u) '|append|) (consp (qrest u))
+         (consp (qcddr u)) (eq (qcdddr u) nil))
+     (setq x (qsecond u))
+     (setq h (list '|:| (|transIs| x)))
+     (setq v (|transIs1| (qthird u)))
+     (cond
+      ((and (consp v) (eq (qfirst v) '|:|)
+            (consp (qrest v)) (eq (qcddr v) nil))
+         (list h (qsecond v)))
+      ((eq v '|nil|) (car (cdr h)))
+      ((atom v) (list h (list '|:| v)))
+      (t (cons h v))))
+   ((and (consp u) (eq (qfirst u) '|cons|) (consp (qrest u)) 
+         (consp (qcddr u)) (eq (qcdddr u) nil))
+     (setq h (|transIs| (qsecond u)))
+     (setq v (|transIs1| (qthird u)))
+     (cond
+      ((and (consp v) (eq (qfirst v) '|:|) (consp (qrest v))
+            (eq (qcddr v) nil))
+         (cons h (list (qsecond v))))
+      ((eq v '|nil|) (cons h nil))
+      ((atom v) (list h (list '|:| v)))
+      (t (cons h v))))
+   (t u))))
+
+(defun translabel (x al)
+ (translabel1 x al) x)
+
+(defun translabel1 (x al)
+ "Transforms X according to AL = ((<label> . Sexpr) ..)."
+  (cond
+   ((refvecp x)
+    (do ((i 0 (1+ i)) (k (maxindex x)))
+        ((> i k))
+      (if (let ((y (lassoc (elt x i) al))) (setelt x i y))
+       (translabel1 (elt x i) al))))
+   ((atom x) nil)
+   ((let ((y (lassoc (first x) al)))
+           (if y (setf (first x) y) (translabel1 (cdr x) al))))
+   ((translabel1 (first x) al) (translabel1 (cdr x) al))))
+
+(defun |TruthP| (x)
+ (cond
+   ((null x) nil)
+   ((eq x t) t)
+   ((and (consp x) (eq (qfirst x) 'quote)) t)
+   (t nil)))
+
+(defun try-get-token (token)
+ (declare (special valid-tokens))
+ (let ((tok (get-token token)))
+  (when tok
+   (incf valid-tokens)
+   token)))
+
+(defun |tuple2List| (arg)
+ (let (u p q)
+ (declare (special |$InteractiveMode| $boot))
+  (when (consp arg)
+   (setq u (|tuple2List| (qrest arg)))
+   (cond
+    ((and (consp (qfirst arg)) (eq (qcaar arg) 'segment)
+          (consp (qcdar arg))
+          (consp (qcddar arg))
+          (eq (qcdddar arg) nil))
+       (setq p (qcadar arg))
+       (setq q (qcaddar arg))
+       (cond
+        ((null u) (list '|construct| (|postTranSegment| p q)))
+        ((and |$InteractiveMode| (null $boot))
+          (cons '|append|
+           (cons (list '|construct| (|postTranSegment| p q))
+                 (list (|tuple2List| (qrest arg))))))
+         (t
+          (cons '|nconc|
+           (cons (list '|construct| (|postTranSegment| p q))
+                 (list (|tuple2List| (qrest arg))))))))
+    ((null u) (list '|construct|  (|postTran| (qfirst arg))))
+    (t (list '|cons| (|postTran| (qfirst arg)) (|tuple2List| (qrest arg))))))))
+
+
+(defun |uncons| (x)
+  (cond
+   ((atom x) x)
+   ((and (consp x) (eq (qfirst x) 'cons)  (consp (qrest x))
+         (consp (qcddr x)) (eq (qcdddr x) nil))
+      (cons (second x) (|uncons| (third x))))))
+
+(defun underscore (string)
+ (if (every #'alpha-char-p string) 
+  string
+  (let* ((size (length string))
+         (out-string (make-array (* 2 size)
+                                 :element-type 'string-char
+                                 :fill-pointer 0))
+         next-char)
+   (dotimes (i size)
+    (setq next-char (char string i))
+    (unless (alpha-char-p next-char) (vector-push #\_ out-string))
+    (vector-push next-char out-string))
+   out-string)))
+
+(defun unget-tokens ()
+ (case valid-tokens
+  (0 t)
+  (1 (let* ((cursym (quote-if-string current-token))
+            (curline (line-current-segment current-line))
+            (revised-line (strconc cursym curline (copy-seq " "))))
+         (line-new-line revised-line current-line (line-number current-line))
+         (setq nonblank (token-nonblank current-token))
+         (setq valid-tokens 0)))
+  (2 (let* ((cursym (quote-if-string current-token))
+            (nextsym (quote-if-string next-token))
+            (curline (line-current-segment Current-Line))
+            (revised-line
+             (strconc (if (token-nonblank current-token) "" " ")
+                      cursym
+                      (if (token-nonblank next-token) "" " ")
+                      nextsym curline " ")))
+      (setq nonblank (token-nonblank current-token))
+      (line-new-line revised-line current-line (line-number current-line))
+      (setq valid-tokens 0)))
+  (t (error "How many tokens do you think you have?"))))
+
+(defun |unknownTypeError| (name)
+ (let (op)
+  (setq name 
+   (if (and (consp name) (setq op (qfirst name)))
+    op
+    name))
+  (|stackSemanticError| (list name '|is not a known type|) nil)))
+
+(defun |unloadOneConstructor| (cnam fn)
+ (remprop cnam 'loaded)
+ (setf (symbol-function cnam) (|mkAutoLoad| fn cnam)))
+
+(defun |unTuple| (x)
+ (if (and (consp x) (eq (qfirst x) '|@Tuple|))
+  (qrest x)
+  (list x)))
+
+(defun |updateCategoryFrameForCategory| (category)
+ (let (tmp1 dc sig pred impl)
+ (declare (special |$CategoryFrame|))
+  (setq tmp1 (getdatabase category 'constructormodemap))
+  (setq dc (caar tmp1))
+  (setq sig (cdar tmp1))
+  (setq pred (caadr tmp1))
+  (setq impl (cadadr tmp1))
+  (setq |$CategoryFrame|
+    (|put| category '|isCategory| t
+     (|addModemap| category dc sig pred impl |$CategoryFrame|)))))
+
+(defun |updateCategoryFrameForConstructor| (constructor)
+ (let (opAlist tmp1 dc sig pred impl)
+ (declare (special |$CategoryFrame|))
+  (setq opalist (getdatabase constructor 'operationalist))
+  (setq tmp1 (getdatabase constructor 'constructormodemap))
+  (setq dc (caar tmp1))
+  (setq sig (cdar tmp1))
+  (setq pred (caadr tmp1))
+  (setq impl (cadadr tmp1))
+  (setq |$CategoryFrame|
+   (|put| constructor '|isFunctor|
+     (|convertOpAlist2compilerInfo| opAlist)
+     (|addModemap| constructor dc sig pred impl
+     (|put| constructor '|mode| (cons '|Mapping| sig) |$CategoryFrame|))))))
+
+
+(defun |whoOwns| (con)
+ (declare (ignore con))
+ nil)
+; (let (filename quoteChar instream value)
+; (declare (special |$exposeFlag|))
+;  (cond
+;   ((null |$exposeFlag|) nil)
+;   (t
+;    (setq filename (getdatabase con 'sourcefile))
+;    (setq quoteChar #\")
+;    (obey (strconc "awk '$2 == " quoteChar filename quoteChar
+;                    " {print $1}' whofiles > /tmp/temp"))
+;    (setq instream (make-instream "/tmp/temp"))
+;    (setq value (unless (eofp instream) (readline instream)))
+;    (shut instream)
+;  value))))
+
+(defun |wrapDomainSub| (parameters x)
+ (list '|DomainSubstitutionMacro| parameters x))
+
+(defun |writeLib1| (fn ft fm)
+  (rdefiostream (cons (list 'file fn ft fm) (list '(mode . output)))))
+
+
+(eval-when (eval load)
+ (setf (get '|construct| '|parseTran|) '|parseConstruct|))
+
+(eval-when (eval load)
+ (setf (get '|and| '|parseTran|) '|parseAnd|))
+
+(eval-when (eval load)
+ (setf (get '@ '|parseTran|) '|parseAtSign|))
+
+(eval-when (eval load)
+ (setf (get 'category '|parseTran|) '|parseCategory|))
+
+(eval-when (eval load)
+ (setf (get '|::| '|parseTran|) '|parseCoerce|))
+
+(eval-when (eval load)
+ (setf (get '|:| '|parseTran|) '|parseColon|))
+
+(eval-when (eval load)
+ (setf (get 'def '|parseTran|) '|parseDEF|))
+
+(eval-when (eval load)
+ (setf (get '|$>| '|parseTran|) '|parseDollarGreaterThan|))
+
+(eval-when (eval load)
+ (setf (get '|$>=| '|parseTran|) '|parseDollarGreaterEqual|))
+
+(eval-when (eval load)
+ (setf (get '|$<=| '|parseTran|) '|parseDollarLessEqual|))
+
+(eval-when (eval load)
+ (setf (get '|$^=| '|parseTran|) '|parseDollarNotEqual|))
+
+(eval-when (eval load)
+ (setf (get '|eqv| '|parseTran|) '|parseEquivalence|))
+
+(eval-when (eval load)
+ (setf (get '|exit| '|parseTran|) '|parseExit|))
+
+(eval-when (eval load)
+ (setf (get '|>=| '|parseTran|) '|parseGreaterEqual|))
+
+(eval-when (eval load)
+ (setf (get '|>| '|parseTran|) '|parseGreaterThan|))
+
+(eval-when (eval load)
+ (setf (get '|has| '|parseTran|) '|parseHas|))
+
+(eval-when (eval load)
+ (setf (get 'if '|parseTran|) '|parseIf|))
+
+(eval-when (eval load)
+ (setf (get '|implies| '|parseTran|) '|parseImplies|))
+
+(eval-when (eval load)
+ (setf (get 'in '|parseTran|) '|parseIn|))
+
+(eval-when (eval load)
+ (setf (get 'inby '|parseTran|) '|parseInBy|))
+
+(eval-when (eval load)
+ (setf (get '|is| '|parseTran|) '|parseIs|))
+
+(eval-when (eval load)
+ (setf (get '|isnt| '|parseTran|) '|parseIsnt|))
+
+(eval-when (eval load)
+ (setf (get '|Join| '|parseTran|) '|parseJoin|))
+
+(eval-when (eval load)
+ (setf (get '|leave| '|parseTran|) '|parseLeave|))
+
+(eval-when (eval load)
+ (setf (get '|<=| '|parseTran|) '|parseLessEqual|))
+
+(eval-when (eval load)
+ (setf (get 'let '|parseTran|) '|parseLET|))
+
+(eval-when (eval load)
+ (setf (get 'letd '|parseTran|) '|parseLETD|))
+
+(eval-when (eval load)
+ (setf (get 'mdef '|parseTran|) '|parseMDEF|))
+
+(eval-when (eval load)
+ (setf (get '|not| '|parseTran|) '|parseNot|))
+
+(eval-when (eval load)
+ (setf (get '|^| '|parseTran|) '|parseNot|))
+
+(eval-when (eval load)
+ (setf (get '|^=| '|parseTran|) '|parseNotEqual|))
+
+(eval-when (eval load)
+ (setf (get '|or| '|parseTran|) '|parseOr|))
+
+(eval-when (eval load)
+ (setf (get '|pretend| '|parseTran|) '|parsePretend|))
+
+(eval-when (eval load)
+ (setf (get '|return| '|parseTran|) '|parseReturn|))
+
+(eval-when (eval load)
+ (setf (get 'segment '|parseTran|) '|parseSegment|))
+
+(eval-when (eval load)
+ (setf (get 'seq '|parseTran|) '|parseSeq|))
+
+(eval-when (eval load)
+ (setf (get 'vcons '|parseTran|) '|parseVCONS|))
+
+(eval-when (eval load)
+ (setf (get '|where| '|parseTran|) '|parseWhere|))
+
+(eval-when (eval load)
+ (setf (get 'def 'special) '|compDefine|))
+
+(eval-when (eval load)
+ (setf (get '|call| 'optimize) '|optCall|))
+
+(eval-when (eval load)
+ (setf (get 'seq 'optimize) '|optSEQ|))
+
+(eval-when (eval load)
+ (setf (get 'eq 'optimize) '|optEQ|))
+
+(eval-when (eval load)
+ (setf (get 'minus 'optimize) '|optMINUS|))
+
+(eval-when (eval load)
+ (setf (get 'qsminus 'optimize) '|optQSMINUS|))
+
+(eval-when (eval load)
+ (setf (get '- 'optimize) '|opt-|))
+
+(eval-when (eval load)
+ (setf (get 'lessp 'optimize) '|optLESSP|))
+
+(eval-when (eval load)
+ (setf (get 'spadcall 'optimize) '|optSPADCALL|))
+
+(eval-when (eval load)
+ (setf (get '|\|| 'optimize) '|optSuchthat|))
+
+(eval-when (eval load)
+ (setf (get 'catch 'optimize) '|optCatch|))
+
+(eval-when (eval load)
+ (setf (get 'cond 'optimize) '|optCond|))
+
+(eval-when (eval load)
+ (setf (get '|mkRecord| 'optimize) '|optMkRecord|))
+
+(eval-when (eval load)
+ (setf (get 'recordelt 'optimize) '|optRECORDELT|))
+
+(eval-when (eval load)
+ (setf (get 'setrecordelt 'optimize) '|optSETRECORDELT|))
+
+(eval-when (eval load)
+ (setf (get 'recordcopy 'optimize) '|optRECORDCOPY|))
+
+(eval-when (eval load)
+ (setf (get '|add| 'special) 'compAdd))
+
+(eval-when (eval load)
+ (setf (get 'capsule 'special) '|compCapsule|))
+
+(eval-when (eval load)
+ (setf (get '|case| 'special) '|compCase|))
+
+(eval-when (eval load)
+ (setf (get '|Record| 'special) '|compCat|))
+
+(eval-when (eval load)
+ (setf (get '|Mapping| 'special) '|compCat|))
+
+(eval-when (eval load)
+ (setf (get '|Union| 'special) '|compCat|))
+
+(eval-when (eval load)
+ (setf (get 'category 'special) '|compCategory|))
+
+(eval-when (eval load)
+ (setf (get '|:| 'special) '|compColon|))
+
+(eval-when (eval load)
+ (setf (get 'cons 'special) '|compCons|))
+
+(eval-when (eval load)
+ (setf (get '|construct| 'special) '|compConstruct|))
+
+(eval-when (eval load)
+ (setf (get '|ListCategory| 'special) '|compConstructorCategory|))
+
+(eval-when (eval load)
+ (setf (get '|RecordCategory| 'special) '|compConstructorCategory|))
+
+(eval-when (eval load)
+ (setf (get '|UnionCategory| 'special) '|compConstructorCategory|))
+
+(eval-when (eval load)
+ (setf (get '|VectorCategory| 'special) '|compConstructorCategory|))
+
+(eval-when (eval load)
+ (setf (get '|elt| 'special) '|compElt|))
+
+(eval-when (eval load)
+ (setf (get '|exit| 'special) '|compExit|))
+
+(eval-when (eval load)
+ (setf (get '|has| 'special) '|compHas|))
+
+(eval-when (eval load)
+ (setf (get 'if 'special) '|compIf|))
+
+(eval-when (eval load)
+ (setf (get '|import| 'special) '|compImport|))
+
+(eval-when (eval load)
+ (setf (get '|is| 'special) '|compIs|))
+
+(eval-when (eval load)
+ (setf (get '|Join| 'special) '|compJoin|))
+
+(eval-when (eval load)
+ (setf (get '|+->| 'special) '|compLambda|))
+
+(eval-when (eval load)
+ (setf (get '|leave| 'special) '|compLeave|))
+
+(eval-when (eval load)
+ (setf (get 'mdef 'special) '|compMacro|))
+
+(eval-when (eval load)
+ (setf (get '|pretend| 'special) '|compPretend|))
+
+(eval-when (eval load)
+ (setf (get 'quote 'special) '|compQuote|))
+
+(eval-when (eval load)
+ (setf (get 'reduce 'special) '|compReduce|))
+
+(eval-when (eval load)
+ (setf (get 'collect 'special) '|compRepeatOrCollect|))
+
+(eval-when (eval load)
+ (setf (get 'repeat 'special) '|compRepeatOrCollect|))
+
+(eval-when (eval load)
+ (setf (get '|return| 'special) '|compReturn|))
+
+(eval-when (eval load)
+ (setf (get 'seq 'special) '|compSeq|))
+
+(eval-when (eval load)
+ (setf (get 'let 'special) '|compSetq|))
+
+(eval-when (eval load)
+ (setf (get 'setq 'special) '|compSetq|))
+
+(eval-when (eval load)
+ (setf (get '|String| 'special) '|compString|))
+
+(eval-when (eval load)
+ (setf (get '|SubDomain| 'special) '|compSubDomain|))
+
+(eval-when (eval load)
+ (setf (get '|SubsetCategory| 'special) '|compSubsetCategory|))
+
+(eval-when (eval load)
+ (setf (get '\| 'special) '|compSuchthat|))
+
+(eval-when (eval load)
+ (setf (get 'vector 'special) '|compVector|))
+
+(eval-when (eval load)
+ (setf (get '|where| 'special) '|compWhere|))
+
+(eval-when (eval load)
+ (setf (get '|@| 'special) 'compAtSign))
+
+(eval-when (eval load)
+ (setf (get '|::| 'special) '|compCoerce|))
+
+(eval-when (eval load)
+ (setf (get '|add| '|postTran|) '|postAdd|))
+
+(eval-when (eval load)
+ (setf (get '@ '|postTran|) '|postAtSign|))
+
+(eval-when (eval load)
+ (setf (get '|:BF:| '|postTran|) '|postBigFloat|))
+
+(eval-when (eval load)
+ (setf (get '|Block| '|postTran|) '|postBlock|))
+
+(eval-when (eval load)
+ (setf (get 'category '|postTran|) '|postCategory|))
+
+(eval-when (eval load)
+ (setf (get 'collect '|postTran|) '|postCollect|))
+
+(eval-when (eval load)
+ (setf (get '|:| '|postTran|) '|postColon|))
+
+(eval-when (eval load)
+ (setf (get '|::| '|postTran|) '|postColonColon|))
+
+(eval-when (eval load)
+ (setf (get '|,| '|postTran|) '|postComma|))
+
+(eval-when (eval load)
+ (setf (get '|construct| '|postTran|) '|postConstruct|))
+
+(eval-when (eval load)
+ (setf (get '|==| '|postTran|) '|postDef|))
+
+(eval-when (eval load)
+ (setf (get '|=>| '|postTran|) '|postExit|))
+
+(eval-when (eval load)
+ (setf (get '|if| '|postTran|) '|postIf|))
+
+(eval-when (eval load)
+ (setf (get '|in| '|postTran|) '|postin|))
+
+(eval-when (eval load)
+ (setf (get 'in '|postTran|) '|postIn|))
+
+(eval-when (eval load)
+ (setf (get '|Join| '|postTran|) '|postJoin|))
+
+(eval-when (eval load)
+ (setf (get '|->| '|postTran|) '|postMapping|))
+
+(eval-when (eval load)
+ (setf (get '|==>| '|postTran|) '|postMDef|))
+
+(eval-when (eval load)
+ (setf (get '|pretend| '|postTran|) '|postPretend|))
+
+(eval-when (eval load)
+ (setf (get 'quote '|postTran|) '|postQUOTE|))
+
+(eval-when (eval load)
+ (setf (get '|Reduce| '|postTran|) '|postReduce|))
+
+(eval-when (eval load)
+ (setf (get 'repeat '|postTran|) '|postRepeat|))
+
+(eval-when (eval load)
+ (setf (get '|Scripts| '|postTran|) '|postScripts|))
+
+(eval-when (eval load)
+ (setf (get '|;| '|postTran|) '|postSemiColon|))
+
+(eval-when (eval load)
+ (setf (get '|Signature| '|postTran|) '|postSignature|))
+
+(eval-when (eval load)
+ (setf (get '/ '|postTran|) '|postSlash|))
+
+(eval-when (eval load)
+ (setf (get '|@Tuple| '|postTran|) '|postTuple|))
+
+(eval-when (eval load)
+ (setf (get '|TupleCollect| '|postTran|) '|postTupleCollect|))
+
+(eval-when (eval load)
+ (setf (get '|where| '|postTran|) '|postWhere|))
+
+(eval-when (eval load)
+ (setf (get '|with| '|postTran|) '|postWith|))
+
+
