\start
Date: Sun, 1 Jun 2008 05:19:19 -0500
From: Tim Daly
To: list
Subject: 20080601.01.tpd.patch (bookvol8/graphics documentation)

bookvol8 -- Axiom Graphics documentation work
Document the .Xdefaults, Shell variables, file formats, graphics APIs,
and X11 APIs.

\start
Date: Mon, 2 Jun 2008 05:27:50 -0500
From: Tim Daly
To: list
Subject: 20080603.01.tpd.patch (remove src/graph/view2d)

src/graph/view2d has been replaced by bookvol8.
The makefiles no longer use this subdirectory and it has been removed.
======================================================================
diff --git a/changelog b/changelog
index a84a022..1704d83 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,17 @@
+20080602 tpd src/graph/view2d removed.
+20080602 tpd src/graph/view2d/write2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/viewport2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/stuff2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/spadaction2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/process2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/pot2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/Makefile removed, replace by bookvol8
+20080602 tpd src/graph/view2d/main2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/header2.h removed, replace by bookvol8
+20080602 tpd src/graph/view2d/graph2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/globals2.h removed, replace by bookvol8
+20080602 tpd src/graph/view2d/control2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/buttons2d.c removed, replace by bookvol8
 20080602 tpd books/bookvol8 make view2d
 20080602 tpd src/graph/Makefile make view2d from bookvol8
 20080601 tpd books/bookvol8 document APIs, formats, environment
diff --git a/src/graph/view2d/Makefile.pamphlet b/src/graph/view2d/Makefile.pamphlet
deleted file mode 100644
index 202e8b2..0000000
--- a/src/graph/view2d/Makefile.pamphlet
+++ /dev/null
@@ -1,378 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d Makefile}
-\author{Timothy Daly}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{environment variables}
-<<environment>>=
-IN=	${SRC}/graph/view2d
-MIDINT=	${INT}/graph/view2d
-MIDOBJ=	${OBJ}/${SYS}/graph/view2d
-LIB=	${OBJ}/${SYS}/lib
-OUT=	${MNT}/${SYS}/lib
-DOC=    ${MNT}/${SYS}/doc/src/graph
-
-# local include files shared by graphics
-LINC=	${SRC}/graph/include
-
-# global include files shared by everyone
-GINC=	${SRC}/include
-
-LDFLAGS = ${LDF} ${STATIC} -lX11 -lm ${LDF}
-
-@
-\section{view2d code}
-\subsection{buttons2d}
-<<buttons2d.c (MIDINT from IN)>>=
-${MIDINT}/buttons2d.c: ${IN}/buttons2d.c.pamphlet
-	@ echo 1 making ${MIDINT}/buttons2d.c from ${IN}/buttons2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/buttons2d.c.pamphlet >buttons2d.c )
-
-@
-<<buttons2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/buttons2d.o: ${HEADERS} ${MIDINT}/buttons2d.c
-	@ echo 2 making ${MIDOBJ}/buttons2d.o from ${MIDINT}/buttons2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/buttons2d.c )
-
-@
-<<buttons2d.c.dvi (DOC from IN)>>=
-${DOC}/buttons2d.c.dvi: ${IN}/buttons2d.c.pamphlet 
-	@echo 3 making ${DOC}/buttons2d.c.dvi from ${IN}/buttons2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/buttons2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} buttons2d.c ; \
-	rm -f ${DOC}/buttons2d.c.pamphlet ; \
-	rm -f ${DOC}/buttons2d.c.tex ; \
-	rm -f ${DOC}/buttons2d.c )
-
-@
-\subsection{control2d}
-<<control2d.c (MIDINT from IN)>>=
-${MIDINT}/control2d.c: ${IN}/control2d.c.pamphlet
-	@ echo 4 making ${MIDINT}/control2d.c from ${IN}/control2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/control2d.c.pamphlet >control2d.c )
-
-@
-<<control2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/control2d.o: ${HEADERS} ${MIDINT}/control2d.c \
-                       ${LINC}/mouse11.bitmap ${LINC}/mouse11.mask
-	@ echo 5 making ${MIDOBJ}/control2d.o from ${MIDINT}/control2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/control2d.c )
-
-@
-<<control2d.c.dvi (DOC from IN)>>=
-${DOC}/control2d.c.dvi: ${IN}/control2d.c.pamphlet 
-	@echo 6 making ${DOC}/control2d.c.dvi from ${IN}/control2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/control2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} control2d.c ; \
-	rm -f ${DOC}/control2d.c.pamphlet ; \
-	rm -f ${DOC}/control2d.c.tex ; \
-	rm -f ${DOC}/control2d.c )
-
-@
-\subsection{graph2d}
-<<graph2d.c (MIDINT from IN)>>=
-${MIDINT}/graph2d.c: ${IN}/graph2d.c.pamphlet
-	@ echo 7 making ${MIDINT}/graph2d.c from ${IN}/graph2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/graph2d.c.pamphlet >graph2d.c )
-
-@
-<<graph2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/graph2d.o: ${HEADERS} ${MIDINT}/graph2d.c
-	@ echo 8 making ${MIDOBJ}/graph2d.o from ${MIDINT}/graph2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/graph2d.c )
-
-@
-<<graph2d.c.dvi (DOC from IN)>>=
-${DOC}/graph2d.c.dvi: ${IN}/graph2d.c.pamphlet 
-	@echo 9 making ${DOC}/graph2d.c.dvi from ${IN}/graph2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/graph2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} graph2d.c ; \
-	rm -f ${DOC}/graph2d.c.pamphlet ; \
-	rm -f ${DOC}/graph2d.c.tex ; \
-	rm -f ${DOC}/graph2d.c )
-
-@
-\subsection{main2d}
-<<main2d.c (MIDINT from IN)>>=
-${MIDINT}/main2d.c: ${IN}/main2d.c.pamphlet
-	@ echo 10 making ${MIDINT}/main2d.c from ${IN}/main2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/main2d.c.pamphlet >main2d.c )
-
-@
-<<main2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/main2d.o: ${LINC}/xdefs.h ${HEADERS} ${MIDINT}/main2d.c
-	@ echo 11 making ${MIDOBJ}/main2d.o from ${MIDINT}/main2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/main2d.c )
-
-@
-<<main2d.c.dvi (DOC from IN)>>=
-${DOC}/main2d.c.dvi: ${IN}/main2d.c.pamphlet 
-	@echo 12 making ${DOC}/main2d.c.dvi from ${IN}/main2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/main2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} main2d.c ; \
-	rm -f ${DOC}/main2d.c.pamphlet ; \
-	rm -f ${DOC}/main2d.c.tex ; \
-	rm -f ${DOC}/main2d.c )
-
-@
-\subsection{pot2d}
-<<pot2d.c (MIDINT from IN)>>=
-${MIDINT}/pot2d.c: ${IN}/pot2d.c.pamphlet
-	@ echo 13 making ${MIDINT}/pot2d.c from ${IN}/pot2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/pot2d.c.pamphlet >pot2d.c )
-
-@
-<<pot2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/pot2d.o: ${HEADERS} ${MIDINT}/pot2d.c
-	@ echo 14 making ${MIDOBJ}/pot2d.o from ${MIDINT}/pot2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/pot2d.c )
-
-@
-<<pot2d.c.dvi (DOC from IN)>>=
-${DOC}/pot2d.c.dvi: ${IN}/pot2d.c.pamphlet 
-	@echo 15 making ${DOC}/pot2d.c.dvi from ${IN}/pot2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/pot2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} pot2d.c ; \
-	rm -f ${DOC}/pot2d.c.pamphlet ; \
-	rm -f ${DOC}/pot2d.c.tex ; \
-	rm -f ${DOC}/pot2d.c )
-
-@
-\subsection{process2d}
-<<process2d.c (MIDINT from IN)>>=
-${MIDINT}/process2d.c: ${IN}/process2d.c.pamphlet
-	@ echo 16 making ${MIDINT}/process2d.c from ${IN}/process2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/process2d.c.pamphlet >process2d.c )
-
-@
-<<process2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/process2d.o: ${HEADERS} ${MIDINT}/process2d.c
-	@ echo 17 making ${MIDOBJ}/process2d.o from ${MIDINT}/process2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/process2d.c )
-
-@
-<<process2d.c.dvi (DOC from IN)>>=
-${DOC}/process2d.c.dvi: ${IN}/process2d.c.pamphlet 
-	@echo 18 making ${DOC}/process2d.c.dvi from ${IN}/process2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/process2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} process2d.c ; \
-	rm -f ${DOC}/process2d.c.pamphlet ; \
-	rm -f ${DOC}/process2d.c.tex ; \
-	rm -f ${DOC}/process2d.c )
-
-@
-\subsection{spadaction2d}
-<<spadaction2d.c (MIDINT from IN)>>=
-${MIDINT}/spadaction2d.c: ${IN}/spadaction2d.c.pamphlet
-	@ echo 19 making ${MIDINT}/spadaction2d.c from ${IN}/spadaction2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/spadaction2d.c.pamphlet >spadaction2d.c )
-
-@
-<<spadaction2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/spadaction2d.o: ${HEADERS} ${MIDINT}/spadaction2d.c
-	@ echo 20 making ${MIDOBJ}/spadaction2d.o from ${MIDINT}/spadaction2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spadaction2d.c )
-
-@
-<<spadaction2d.c.dvi (DOC from IN)>>=
-${DOC}/spadaction2d.c.dvi: ${IN}/spadaction2d.c.pamphlet 
-	@echo 21 making ${DOC}/spadaction2d.c.dvi from ${IN}/spadaction2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/spadaction2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} spadaction2d.c ; \
-	rm -f ${DOC}/spadaction2d.c.pamphlet ; \
-	rm -f ${DOC}/spadaction2d.c.tex ; \
-	rm -f ${DOC}/spadaction2d.c )
-
-@
-\subsection{stuff2d}
-<<stuff2d.c (MIDINT from IN)>>=
-${MIDINT}/stuff2d.c: ${IN}/stuff2d.c.pamphlet
-	@ echo 25 making ${MIDINT}/stuff2d.c from ${IN}/stuff2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/stuff2d.c.pamphlet >stuff2d.c )
-
-@
-<<stuff2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/stuff2d.o: ${HEADERS} ${MIDINT}/stuff2d.c
-	@ echo 26 making ${MIDOBJ}/stuff2d.o from ${MIDINT}/stuff2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/stuff2d.c )
-
-@
-<<stuff2d.c.dvi (DOC from IN)>>=
-${DOC}/stuff2d.c.dvi: ${IN}/stuff2d.c.pamphlet 
-	@echo 27 making ${DOC}/stuff2d.c.dvi from ${IN}/stuff2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/stuff2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} stuff2d.c ; \
-	rm -f ${DOC}/stuff2d.c.pamphlet ; \
-	rm -f ${DOC}/stuff2d.c.tex ; \
-	rm -f ${DOC}/stuff2d.c )
-
-@
-\subsection{viewport2d}
-<<viewport2d.c (MIDINT from IN)>>=
-${MIDINT}/viewport2d.c: ${IN}/viewport2d.c.pamphlet
-	@ echo 28 making ${MIDINT}/viewport2d.c from ${IN}/viewport2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/viewport2d.c.pamphlet >viewport2d.c )
-
-@
-<<viewport2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/viewport2d.o: ${HEADERS} ${LINC}/spadbitmap.bitmap \
-                        ${LINC}/spadmask.mask ${MIDINT}/viewport2d.c 
-	@ echo 29 making ${MIDOBJ}/viewport2d.o from ${MIDINT}/viewport2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewport2d.c )
-
-@
-<<viewport2d.c.dvi (DOC from IN)>>=
-${DOC}/viewport2d.c.dvi: ${IN}/viewport2d.c.pamphlet 
-	@echo 30 making ${DOC}/viewport2d.c.dvi from ${IN}/viewport2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/viewport2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} viewport2d.c ; \
-	rm -f ${DOC}/viewport2d.c.pamphlet ; \
-	rm -f ${DOC}/viewport2d.c.tex ; \
-	rm -f ${DOC}/viewport2d.c )
-
-@
-\subsection{write2d}
-<<write2d.c (MIDINT from IN)>>=
-${MIDINT}/write2d.c: ${IN}/write2d.c.pamphlet 
-	@ echo 31 making ${MIDINT}/write2d.c from ${IN}/write2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/write2d.c.pamphlet >write2d.c )
-
-@
-<<write2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/write2d.o: ${MIDINT}/write2d.c ${LINC}/write.h ${HEADERS}
-	@ echo 32 making ${MIDOBJ}/write2d.o from ${MIDINT}/write2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/write2d.c )
-
-@
-<<write2d.c.dvi (DOC from IN)>>=
-${DOC}/write2d.c.dvi: ${IN}/write2d.c.pamphlet 
-	@echo 33 making ${DOC}/write2d.c.dvi from ${IN}/write2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/write2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} write2d.c ; \
-	rm -f ${DOC}/write2d.c.pamphlet ; \
-	rm -f ${DOC}/write2d.c.tex ; \
-	rm -f ${DOC}/write2d.c )
-
-@
-\subsection{view2d}
-Renaud Rioboo pointed out that we should dynamically link Xpm
-rather than use static libraries since statics fail on Fedora 5.
-<<view2d>>=
-${OUT}/view2d: ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES}
-	@ echo 34 linking ${OUT}/view2d
-	@ ${CC} ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES} \
-	 -o ${OUT}/view2d $(LDFLAGS) 
-
-@
-<<*>>=
-
-<<environment>>
-
-CFLAGS  = ${CCF} -I${LINC} -I${GINC} -I${IN}
-
-DOCFILES= ${DOC}/buttons2d.c.dvi    ${DOC}/control2d.c.dvi \
-          ${DOC}/graph2d.c.dvi      ${DOC}/main2d.c.dvi \
-          ${DOC}/pot2d.c.dvi        ${DOC}/process2d.c.dvi  \
-          ${DOC}/spadaction2d.c.dvi ${DOC}/stuff2d.c.dvi \
-          ${DOC}/viewport2d.c.dvi   ${DOC}/write2d.c.dvi
-
-VIEW2D_OBJS= \
- ${MIDOBJ}/buttons2d.o    ${MIDOBJ}/control2d.o ${MIDOBJ}/graph2d.o    \
- ${MIDOBJ}/main2d.o       ${MIDOBJ}/pot2d.o     ${MIDOBJ}/process2d.o  \
- ${MIDOBJ}/spadaction2d.o ${MIDOBJ}/stuff2d.o   ${MIDOBJ}/viewport2d.o \
- ${MIDOBJ}/write2d.o
-
-GDRAW=	${OBJ}/${SYS}/graph/gdraws
-
-GDRAW_OBJS = ${GDRAW}/gfun.o ${OBJ}/${SYS}/lib/hash.o
-
-HEADERS = ${IN}/header2.h   ${IN}/globals2.h      ${LINC}/view2d.h \
-          ${LINC}/actions.h ${LINC}/viewcommand.h ${GINC}/view.h   ${LINC}/g.h
-
-LIBFILES=${LIB}/bsdsignal.o ${LIB}/util.o       ${LIB}/pixmap.o    \
-         ${LIB}/halloc.o    ${LIB}/spadcolors.o ${LIB}/xspadfill.o \
-         ${LIB}/xdither.o   ${LIB}/xshade.o 
-
-all: ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES} ${OUT}/view2d ${DOCFILES}
-	@ echo 36 finished ${IN}
-
-<<view2d>>
-
-<<buttons2d.c (MIDINT from IN)>>
-<<buttons2d.o (MIDOBJ from MIDINT)>>
-<<buttons2d.c.dvi (DOC from IN)>>
-
-<<control2d.c (MIDINT from IN)>>
-<<control2d.o (MIDOBJ from MIDINT)>>
-<<control2d.c.dvi (DOC from IN)>>
-
-<<graph2d.c (MIDINT from IN)>>
-<<graph2d.o (MIDOBJ from MIDINT)>>
-<<graph2d.c.dvi (DOC from IN)>>
-
-<<main2d.c (MIDINT from IN)>>
-<<main2d.o (MIDOBJ from MIDINT)>>
-<<main2d.c.dvi (DOC from IN)>>
-
-<<pot2d.c (MIDINT from IN)>>
-<<pot2d.o (MIDOBJ from MIDINT)>>
-<<pot2d.c.dvi (DOC from IN)>>
-
-<<process2d.c (MIDINT from IN)>>
-<<process2d.o (MIDOBJ from MIDINT)>>
-<<process2d.c.dvi (DOC from IN)>>
-
-<<spadaction2d.c (MIDINT from IN)>>
-<<spadaction2d.o (MIDOBJ from MIDINT)>>
-<<spadaction2d.c.dvi (DOC from IN)>>
-
-<<stuff2d.c (MIDINT from IN)>>
-<<stuff2d.o (MIDOBJ from MIDINT)>>
-<<stuff2d.c.dvi (DOC from IN)>>
-
-<<viewport2d.c (MIDINT from IN)>>
-<<viewport2d.o (MIDOBJ from MIDINT)>>
-<<viewport2d.c.dvi (DOC from IN)>>
-
-<<write2d.c (MIDINT from IN)>>
-<<write2d.o (MIDOBJ from MIDINT)>>
-<<write2d.c.dvi (DOC from IN)>>
-
-clean: 
-	@ echo 37 cleaning ${IN}/view2d
-
-document: 
-	@ echo 38 documenting ${IN}/view2d
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/buttons2d.c.pamphlet b/src/graph/view2d/buttons2d.c.pamphlet
deleted file mode 100644
index 2a08486..0000000
--- a/src/graph/view2d/buttons2d.c.pamphlet
+++ /dev/null
@@ -1,732 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d buttons2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _BUTTONS2D_C
-
-#include <string.h>
-
-#include "header2.h"
-#include "buttons2d.h1"
-#include "all-2d.h1"
-
-
-
-
-#define bColor		98
-#define graphColor	138
-
-/*****************************************************
- * int initButtons(buttons)			     *
- *						     *
- * Creates the fields for each button window in the  *
- * two dimensional control panel, and returns the    *
- * number of buttons created.			     *
- *						     *
- *****************************************************/
-
-int 
-initButtons (buttonStruct *buttons)
-{
-  int ii, num = 0;
-
-/********** Scale(Zoom) and Translate Potentiometer Buttons **********/
-
-  /* Title:  "Scale" */
-  ii = scale2D;
-  buttons[ii].buttonX	   = 5;
-  buttons[ii].buttonY	   = 85;
-  buttons[ii].buttonWidth  = 110;
-  buttons[ii].buttonHeight = 80;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = yes;	   /* scale is a potentiometer */
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = potMASK;
-  buttons[ii].textColor	   = 164;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Title:  "Translate" */
-  ii = translate2D;
-  buttons[ii].buttonX	   = 121;
-  buttons[ii].buttonY	   = 85;
-  buttons[ii].buttonWidth  = 110;
-  buttons[ii].buttonHeight = 80;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = yes;	   /* translate is a potentiometer */
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = potMASK;
-  buttons[ii].textColor	   = 21;	   /* line color of translate arrow */
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Scale potentiometer buttons */
-
-  /* Scale along X axis */
-  ii = zoom2Dx;
-  buttons[ii].buttonX	   = 5;
-  buttons[ii].buttonY	   = 55;
-  buttons[ii].buttonWidth  = 53;
-  buttons[ii].buttonHeight = 25;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"X On ");
-  buttons[ii].textColor	   = bColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-
-  /* Scale along Y axis */
-  ii = zoom2Dy;
-  buttons[ii].buttonX	   = 62;
-  buttons[ii].buttonY	   = 55;
-  buttons[ii].buttonWidth  = 53;
-  buttons[ii].buttonHeight = 25;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Y On ");
-  buttons[ii].textColor	   = bColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Translate along X axis */
-  ii = translate2Dx;
-  buttons[ii].buttonX	   = 121;
-  buttons[ii].buttonY	   = 55;
-  buttons[ii].buttonWidth  = 53;
-  buttons[ii].buttonHeight = 25;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"X On ");
-  buttons[ii].textColor	   = bColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-
-  /* Translate along Y axis */
-  ii = translate2Dy;
-  buttons[ii].buttonX	   = 179;
-  buttons[ii].buttonY	   = 55;
-  buttons[ii].buttonWidth  = 53;
-  buttons[ii].buttonHeight = 25;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Y On ");
-  buttons[ii].textColor	   = bColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-
-  /* Axes Turned On/Off */
-  ii = axesOnOff2D;
-  buttons[ii].buttonX	   = 5;
-  buttons[ii].buttonY	   = 292;
-  buttons[ii].buttonWidth  = 90;
-  buttons[ii].buttonHeight = 30;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Axes On ");
-  buttons[ii].textColor	   = 75;
-  buttons[ii].textHue	   = 10;
-  buttons[ii].textShade	   = 3;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Units Turned On/Off */
-  ii = unitsOnOff2D;
-  buttons[ii].buttonX	   = 100;
-  buttons[ii].buttonY	   = 292;
-  buttons[ii].buttonWidth  = 90;
-  buttons[ii].buttonHeight = 30;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Units Off");
-  buttons[ii].textColor	   = 75;
-  buttons[ii].textHue	   = 10;
-  buttons[ii].textShade	   = 3;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Generate a Postscript file */
-  ii = ps2D;
-  buttons[ii].buttonX	   = 195;
-  buttons[ii].buttonY	   = 292;
-  buttons[ii].buttonWidth  = 36;
-  buttons[ii].buttonHeight = 30;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"PS");
-  buttons[ii].textColor	   = 35;
-  buttons[ii].textHue	   = 5;
-  buttons[ii].textShade	   = 2;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Bounding Rectangle On/Off */
-  ii = spline2D;
-  buttons[ii].buttonX	   = 5;
-  buttons[ii].buttonY	   = 329;
-  buttons[ii].buttonWidth  = 66;
-  buttons[ii].buttonHeight = 30;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Box Off");
-  buttons[ii].textColor	   = 7;
-  buttons[ii].textHue	   = 26;
-  buttons[ii].textShade	   = 3;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Graph points On/Off */
-  ii = pointsOnOff;
-  buttons[ii].buttonX	   = 75;
-  buttons[ii].buttonY	   = 329;
-  buttons[ii].buttonWidth  = 67;
-  buttons[ii].buttonHeight = 30;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Pts On ");
-  buttons[ii].textColor	   = 7;
-  buttons[ii].textHue	   = 26;
-  buttons[ii].textShade	   = 3;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Graph lines On/Off */
-  ii = connectOnOff;
-  buttons[ii].buttonX	   = 147;
-  buttons[ii].buttonY	   = 329;
-  buttons[ii].buttonWidth  = 84;
-  buttons[ii].buttonHeight = 30;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Lines On ");
-  buttons[ii].textColor	   = 7;
-  buttons[ii].textHue	   = 26;
-  buttons[ii].textShade	   = 3;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Reset View Position Button */
-  ii = reset2D;
-  buttons[ii].buttonX	   = 5;
-  buttons[ii].buttonY	   = 364;
-  buttons[ii].buttonWidth  = 60;
-  buttons[ii].buttonHeight = 30;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Reset");
-  buttons[ii].textColor	   = bColor;
-  buttons[ii].textHue	   = 5;
-  buttons[ii].textShade	   = 2;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Hide Control Panel */
-  ii = hideControl2D;
-  buttons[ii].buttonX	   = 70;
-  buttons[ii].buttonY	   = 364;
-  buttons[ii].buttonWidth  = 88;
-  buttons[ii].buttonHeight = 30;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Hide Panel");
-  buttons[ii].textColor	   = bColor;
-  buttons[ii].textHue	   = 5;
-  buttons[ii].textShade	   = 2;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Exits from the viewport running */
-  ii = closeAll2D;
-  buttons[ii].buttonX	   = 169;
-  buttons[ii].buttonY	   = 370;
-  buttons[ii].buttonWidth  = 61;
-  buttons[ii].buttonHeight = 24;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Quit");
-  buttons[ii].textColor	   = 13;
-  buttons[ii].textHue	   = 29;
-  buttons[ii].textShade	   = 2;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Indicates that the graph from a viewport is to be picked up. */
-  ii = pick2D;
-  buttons[ii].buttonX	   = 190;
-  buttons[ii].buttonY	   = 217;
-  buttons[ii].buttonWidth  = 40;
-  buttons[ii].buttonHeight = 24;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Pick");
-  buttons[ii].textColor	   = 123;
-  buttons[ii].textHue	   = 19;
-  buttons[ii].textShade	   = 3;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Indicates that the graph from a viewport is to be dropped into a slot. */
-  ii = drop2D;
-  buttons[ii].buttonX	   = 190;
-  buttons[ii].buttonY	   = 245;
-  buttons[ii].buttonWidth  = 40;
-  buttons[ii].buttonHeight = 24;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Drop");
-  buttons[ii].textColor	   = 123;
-  buttons[ii].textHue	   = 19;
-  buttons[ii].textShade	   = 3;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Indicates that the status of the graphs being displayed in the viewport
-     is to be cleared. */
-  ii = clear2D;
-  buttons[ii].buttonX	   = 5;
-  buttons[ii].buttonY	   = 217;
-  buttons[ii].buttonWidth  = 49;
-  buttons[ii].buttonHeight = 24;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Clear");
-  buttons[ii].textColor	   = 123;
-  buttons[ii].textHue	   = 19;
-  buttons[ii].textShade	   = 3;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* Asks for the scale and translation information for the specified graph. */
-  ii = query2D;
-  buttons[ii].buttonX	   = 5;
-  buttons[ii].buttonY	   = 245;
-  buttons[ii].buttonWidth  = 49;
-  buttons[ii].buttonHeight = 24;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"Query");
-  buttons[ii].textColor	   = 123;
-  buttons[ii].textHue	   = 19;
-  buttons[ii].textShade	   = 3;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  /* These buttons indicate the 9 available slot numbers into which
-     a 2D graph can be placed, and the status of the graph, i.e. whether
-     it is displayed or not. */
-
-  ii = graph1;
-  buttons[ii].buttonX	   = graphBarLeft;
-  buttons[ii].buttonY	   = graphBarTop;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;
-  buttons[ii].graphNum	   = yes;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"1");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graphSelect1;
-  buttons[ii].buttonX	   = graphBarLeft;
-  buttons[ii].buttonY	   = graphBarTop + graphBarHeight;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight-2;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = yes;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"^");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graph2;
-  buttons[ii].buttonX	   = graphBarLeft + (graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = yes;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"2");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graphSelect2;
-  buttons[ii].buttonX	   = graphBarLeft + (graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop + graphBarHeight;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight-2;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = yes;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"-");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graph3;
-  buttons[ii].buttonX	   = graphBarLeft + 2*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = yes;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"3");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graphSelect3;
-  buttons[ii].buttonX	   = graphBarLeft + 2*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop + graphBarHeight;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight-2;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;  /**** blend these three together ***/
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = yes;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"-");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graph4;
-  buttons[ii].buttonX	   = graphBarLeft + 3*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = yes;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"4");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graphSelect4;
-  buttons[ii].buttonX	   = graphBarLeft + 3*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop + graphBarHeight;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight-2;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = yes;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"-");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graph5;
-  buttons[ii].buttonX	   = graphBarLeft + 4*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = yes;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"5");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graphSelect5;
-  buttons[ii].buttonX	   = graphBarLeft + 4*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop + graphBarHeight;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight-2;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = yes;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"-");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graph6;
-  buttons[ii].buttonX	   = graphBarLeft + 5*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = yes;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"6");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graphSelect6;
-  buttons[ii].buttonX	   = graphBarLeft + 5*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop + graphBarHeight;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight-2;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = yes;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"-");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graph7;
-  buttons[ii].buttonX	   = graphBarLeft + 6*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = yes;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"7");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graphSelect7;
-  buttons[ii].buttonX	   = graphBarLeft + 6*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop + graphBarHeight;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight-2;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = yes;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"-");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graph8;
-  buttons[ii].buttonX	   = graphBarLeft + 7*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = yes;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"8");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graphSelect8;
-  buttons[ii].buttonX	   = graphBarLeft + 7*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop + graphBarHeight;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight-2;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = yes;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"-");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graph9;
-  buttons[ii].buttonX	   = graphBarLeft + 8*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = yes;
-  buttons[ii].graphSelect  = no;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"9");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  ii = graphSelect9;
-  buttons[ii].buttonX	   = graphBarLeft + 8*(graphBarWidth);
-  buttons[ii].buttonY	   = graphBarTop + graphBarHeight;
-  buttons[ii].buttonWidth  = graphBarWidth;
-  buttons[ii].buttonHeight = graphBarHeight-2;
-  buttons[ii].buttonKey	   = ii;
-  buttons[ii].pot	   = no;		/* this is a regular button */
-  buttons[ii].graphNum	   = no;
-  buttons[ii].graphSelect  = yes;
-  buttons[ii].mask	   = buttonMASK;
-  strcpy(buttons[ii].text,"*");
-  buttons[ii].textColor	   = graphColor;
-  buttons[ii].xHalf	   = buttons[ii].buttonWidth/2;
-  buttons[ii].yHalf	   = buttons[ii].buttonHeight/2;
-  ++num;
-
-  return(num);
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/control2d.c.pamphlet b/src/graph/view2d/control2d.c.pamphlet
deleted file mode 100644
index b03f32f..0000000
--- a/src/graph/view2d/control2d.c.pamphlet
+++ /dev/null
@@ -1,605 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d control2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _CONTROL2D_C
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <X11/X.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-#include "header2.h"
-#include "buttons2d.h1"
-#include "all-2d.h1"
-#include "gfun.h1"
-#include "xspadfill.h1"
-#include "util.h1"
-
-
-#include "mouse11.bitmap"
-#include "mouse11.mask"
-
-/* Defines the pixmap for the arrow displayed in the scale window */
-
-#define scaleArrowN 11
-static XPoint scaleArrow[scaleArrowN] = {
-  {55,14},{64,23},{59,23},
-  {66,45},{79,45},
-  {55,69},
-  {31,45},{44,45},
-  {51,23},{46,23},{55,14} };
-
-/* Defines the pixmap for the arrows displayed in the translate window */
-
-#define translateArrowN 25
-static XPoint translateArrow[translateArrowN] = {
-  {55,2},{60,10},{58,10},{58,37},
-  {85,37},{85,35},{93,40},{85,45},{85,43},{58,43},
-  {58,70},{60,70},{55,78},{50,70},{52,70},{52,43},
-  {25,43}, {25,45}, {17,40},  {25,35}, {25,37}, {52,37},
-  {52,10},{50,10},{55,2} };
-
-/****************************
- * void writeControlTitle() *
- ****************************/
-
-void 
-writeControlTitle(void)
-{
-
-  int strlength;
-
-  s = viewport->title;
-  strlength = strlen(s);
-  XClearArea(dsply,control->controlWindow,0,0,controlWidth,potA,False);
-  GSetForeground(anotherGC,(float)controlTitleColor,Xoption);
-  GDrawImageString(anotherGC,control->controlWindow,
-		   centerX(anotherGC,s,strlength,controlWidth),
-		   15,s,strlength,Xoption);
-
-} /* writeControlTitle() */
-
-void 
-makeMessageFromData(int whichGraph)
-{
-  if (viewport->haveControl) {
-    if ((graphStateArray[whichGraph].scaleX) > 99.0) {
-      strcpy(scaleXReport,"big");
-    } else {
-      sprintf(scaleXReport,"%4.1f",graphStateArray[whichGraph].scaleX);
-    }
-    if ((graphStateArray[whichGraph].scaleY) > 99.0) {
-      strcpy(scaleYReport,"big");
-    } else {
-      sprintf(scaleYReport,"%4.1f",graphStateArray[whichGraph].scaleY);
-    }
-    if ((graphStateArray[whichGraph].centerX) > 999.0) {
-      strcpy(deltaXReport,"+big");
-    } else if ((graphStateArray[whichGraph].centerX) < -999.0) {
-      strcpy(deltaXReport,"-big");
-    } else {
-      sprintf(deltaXReport,"%4.0f",
-	      -graphStateArray[whichGraph].centerX /
-	      graphArray[whichGraph].unitX);
-    }
-    if ((graphStateArray[whichGraph].centerY) > 999.0) {
-      strcpy(deltaYReport,"+big");
-    } else if ((graphStateArray[whichGraph].centerY) < -999.0) {
-      strcpy(deltaYReport,"-big");
-    } else {
-      sprintf(deltaYReport,"%4.0f",
-	      -graphStateArray[whichGraph].centerY /
-	      graphArray[whichGraph].unitY);
-    }
-    sprintf(viewport->controlPanel->message,"[%s,%s] >%d< [%s,%s]",
-	    scaleXReport,scaleYReport,whichGraph+1,deltaXReport,deltaYReport);
-  }  /* if haveControl */
-
-} /* makeMessageFromData() */
-
-
-void 
-writeControlMessage(void)
-{
-  int		     strlength;
-  controlPanelStruct *cp;
-  XWindowAttributes  cwInfo;
-
-  cp = viewport->controlPanel;
-  XGetWindowAttributes(dsply,cp->controlWindow,&cwInfo);
-  strlength = strlen(cp->message);
-
-
-
-  GDrawImageString(controlMessageGC,cp->controlWindow,
-		   centerX(globalGC1,cp->message,strlength,controlWidth),
-		   controlMessageY + globalFont->max_bounds.ascent - 2,
-		   cp->message,strlength,Xoption);
-}
-
-/*********************************/
-/***  void drawControlPanel()  ***/
-/*********************************/
-
-void 
-drawControlPanel(void)
-{
-
-  controlPanelStruct *cp;
-  int i,strlength;
-  char *s;
-
-  cp = viewport->controlPanel;
-  /* Draw border lines to separate the potentiometer, message, graph select
-     and button regions of the control panel. */
-  GSetForeground(trashGC,(float)foregroundColor,Xoption);
-  GSetLineAttributes(trashGC,3,LineSolid,CapButt,JoinMiter,Xoption);
-  GDrawLine(trashGC, cp->controlWindow, 0, potA, controlWidth, potA, Xoption);
-  GSetLineAttributes(trashGC,2,LineSolid,CapButt,JoinMiter,Xoption);
-  GDrawLine(trashGC, cp->controlWindow, 0, potB, controlWidth, potB, Xoption);
-  GDrawLine(trashGC, cp->controlWindow, 0, messageBot,
-	    controlWidth, messageBot, Xoption);
-  GDrawLine(trashGC, cp->controlWindow, 0, 286, controlWidth, 286, Xoption);
-
-  /** put the line width as 1 last because used below as well **/
-  GSetLineAttributes(trashGC,1,LineSolid,CapButt,JoinMiter,Xoption);
-  GDrawRectangle(trashGC,cp->controlWindow,closeLeft,closeTop,
-		 (controlWidth-closeLeft+8),(controlHeight-closeTop+8),Xoption);
-
-  /* Write potentiometer titles on the control panel. */
-  writeControlTitle();
-  GSetForeground(globGC,(float)controlPotHeaderColor,Xoption);
-  s = "Scale";
-  strlength = strlen(s);
-  GDrawString(globGC,cp->controlWindow,
-	      centerX(globGC,s,strlength,
-		      cp->buttonQueue[scale2D].buttonWidth) +
-	      cp->buttonQueue[scale2D].buttonX, 31+headerHeight,s,strlength,Xoption);
-
-  s = "Translate";
-  strlength = strlen(s);
-  GDrawString(globGC,cp->controlWindow,
-	      centerX(globGC,s,strlength,
-		      cp->buttonQueue[translate2D].buttonWidth) +
-	      cp->buttonQueue[translate2D].buttonX,
-	      31+headerHeight,s,strlen(s),Xoption);
-
-  GSetForeground(globGC,(float)controlColorColor,Xoption);
-
-  /* Write title of the graph selection window. */
-  s = "Graphs";
-  strlength = strlen(s);
-  GDrawString(globGC,cp->controlWindow,
-	      centerX(globGC,s,strlength,controlWidth),graphHeaderHeight,
-	      s,strlength,Xoption);
-
-  /* Write titles on regular buttons and draw pixmaps on potentiometers. */
-
-  for (i=0; i<(maxButtons2D); i++) {
-    if ((cp->buttonQueue[i]).pot) {
-
-      GSetForeground(globalGC1,(float)buttonColor,Xoption);
-      GDrawRectangle(globalGC1,cp->controlWindow,
-		     (cp->buttonQueue[i]).buttonX,
-		     (cp->buttonQueue[i]).buttonY,
-		     (cp->buttonQueue[i]).buttonWidth,
-		     (cp->buttonQueue[i]).buttonHeight,Xoption);
-
-      GSetForeground(trashGC,
-		     (float)monoColor((cp->buttonQueue[i]).textColor),Xoption);
-
-      GDrawLine(globalGC1,cp->controlWindow, /* trashGC, */
-		(cp->buttonQueue[i]).buttonX + (cp->buttonQueue[i]).xHalf,
-		(cp->buttonQueue[i]).buttonY,
-		(cp->buttonQueue[i]).buttonX + (cp->buttonQueue[i]).xHalf,
-		(cp->buttonQueue[i]).buttonY + 2*(cp->buttonQueue[i]).yHalf,Xoption);
-      GDrawLine(globalGC1,cp->controlWindow, /* trashGC, */
-		(cp->buttonQueue[i]).buttonX,
-		(cp->buttonQueue[i]).buttonY + (cp->buttonQueue[i]).yHalf,
-		(cp->buttonQueue[i]).buttonX + 2*(cp->buttonQueue[i]).xHalf,
-		(cp->buttonQueue[i]).buttonY + (cp->buttonQueue[i]).yHalf,Xoption);
-      switch (i) {
-      case scale2D:
-	GDrawLines(trashGC,cp->controlWindow,scaleArrow,
-		   scaleArrowN,CoordModeOrigin,Xoption);
-	break;
-      case translate2D:
-	GDrawLines(trashGC,cp->controlWindow,translateArrow,
-		   translateArrowN,CoordModeOrigin,Xoption);
-	break;
-      } /* switch i */
-    } else if (cp->buttonQueue[i].graphNum) {
-
-      if (mono) {
-	if (graphStateArray[i-graphStart].showing) {
-	  GSetForeground(graphGC,(float)backgroundColor,Xoption);
-	  GSetBackground(graphGC,(float)foregroundColor,Xoption);
-	} else {
-	  GSetForeground(graphGC,(float)foregroundColor,Xoption);
-	  GSetBackground(graphGC,(float)backgroundColor,Xoption);
-	}
-	strlength = strlen((cp->buttonQueue[i]).text);
-	GDrawImageString(graphGC,cp->controlWindow,
-			 (cp->buttonQueue[i]).buttonX +
-			 centerX(graphGC,cp->buttonQueue[i].text,
-				 strlength,(cp->buttonQueue[i]).buttonWidth),
-			 (cp->buttonQueue[i]).buttonY +
-			 centerY(graphGC,(cp->buttonQueue[i]).buttonHeight),
-			 cp->buttonQueue[i].text,strlength,Xoption);
-      } else {
-	if (graphStateArray[i-graphStart].showing)
-	  GSetForeground(graphGC,(float)graphBarShowingColor,Xoption);
-	else
-	  GSetForeground(graphGC,(float)graphBarHiddenColor,Xoption);
-	strlength = strlen((cp->buttonQueue[i]).text);
-	GDrawString(graphGC,cp->controlWindow,
-		    (cp->buttonQueue[i]).buttonX +
-		    centerX(graphGC,cp->buttonQueue[i].text,
-			    strlength,(cp->buttonQueue[i]).buttonWidth),
-		    (cp->buttonQueue[i]).buttonY +
-		    centerY(graphGC,(cp->buttonQueue[i]).buttonHeight),
-		    cp->buttonQueue[i].text,strlength,Xoption);
-	}
-    } else if (cp->buttonQueue[i].graphSelect) {
-      /* The select characters are defined as: "^" for on and "-" for off. */
-      if (graphStateArray[i-graphSelectStart].selected) {
-	GSetForeground(graphGC,(float)graphBarSelectColor,Xoption);
-	strcpy((cp->buttonQueue[i]).text,"^");
-      } else {
-	GSetForeground(graphGC,(float)graphBarNotSelectColor,Xoption);
-	*(cp->buttonQueue[i]).text = '-';
-	strcpy((cp->buttonQueue[i]).text,"-");
-      }
-       GDrawString(graphGC,cp->controlWindow,
-		 (cp->buttonQueue[i]).buttonX +
-		 centerX(graphGC,cp->buttonQueue[i].text,
-			 strlength,(cp->buttonQueue[i]).buttonWidth),
-		 (cp->buttonQueue[i]).buttonY +
-		 centerY(graphGC,(cp->buttonQueue[i]).buttonHeight),
-		 cp->buttonQueue[i].text,strlength,Xoption);
-    }
-    else {  /* a regular button */
-      int isOn = 1;
-
-      switch(i) {
-	case pointsOnOff:
-	  isOn = pointsON = graphStateArray[0].pointsOn;
-	  if (graphStateArray[0].pointsOn)
-	    strcpy((cp->buttonQueue[i]).text,"Pts On ");
-	  else
-	    strcpy((cp->buttonQueue[i]).text,"Pts Off");
-	  break;
-
-	case spline2D:
-	  isOn = splineON = graphStateArray[0].splineOn;
-	  if (graphStateArray[0].splineOn)
-	    strcpy((cp->buttonQueue[i]).text, "Box On ");
-	  else
-	    strcpy((cp->buttonQueue[i]).text, "Box Off");
-	  break;
-
-	case connectOnOff:
-	  isOn = connectON = graphStateArray[0].connectOn;
-	  if (graphStateArray[0].connectOn)
-	    strcpy((cp->buttonQueue[i]).text, "Lines On ");
-	  else
-	    strcpy((cp->buttonQueue[i]).text, "Lines Off");
-	  break;
-
-	case axesOnOff2D:
-	  isOn = axesON = graphStateArray[0].axesOn;
-	  if (graphStateArray[0].axesOn)
-	    strcpy((cp->buttonQueue[i]).text , "Axes On ");
-	  else
-	    strcpy((cp->buttonQueue[i]).text , "Axes Off");
-	  break;
-
-	case unitsOnOff2D:
-	  isOn = unitsON = graphStateArray[0].unitsOn;
-	  if (graphStateArray[0].unitsOn)
-	   strcpy( (cp->buttonQueue[i]).text , "Units On ");
-	  else
-	   strcpy( (cp->buttonQueue[i]).text , "Units Off");
-	  break;
-	case closeAll2D:
-	  isOn = 0;
-
-	default:
-	  break;
-      } /* switch i */
-
-      s = (cp->buttonQueue[i]).text;
-      strlength = strlen(s);
-
-      GDrawPushButton(dsply, globalGC1, trashGC, processGC, cp->controlWindow,
-	  (cp->buttonQueue[i]).buttonX, (cp->buttonQueue[i]).buttonY,
-	  (cp->buttonQueue[i]).buttonWidth, (cp->buttonQueue[i]).buttonHeight,
-	  isOn, s,buttonColor,
-	  monoColor((cp->buttonQueue[i]).textColor), Xoption);
-
-    } /* else a regular button */
-  } /* for each button */
-
-  /* Refresh the latest message */
-  makeMessageFromData(0);
-  writeControlMessage();
-  XFlush(dsply);
-
-}    /*** drawControlPanel ***/
-
-controlXY 
-getControlXY(int whereDoYouWantPanel)
-{
-  XWindowAttributes wAttr, wAttrib;
-  controlXY	    cXY;
-  int		    tmp=1;
-  Window	    rootW, parentW, *childrenWs, tmpW;
-  unsigned int	    nChildren;
-
-  tmpW = viewport->titleWindow;
-  while(tmp) {
-    XQueryTree(dsply,tmpW,&rootW,&parentW,&childrenWs,&nChildren);
-    XFree(childrenWs);
-    if (parentW == rtWindow) tmp = 0;
-    else tmpW = parentW;
-  }
-  XGetWindowAttributes(dsply,tmpW,&wAttrib);
-
-  XGetWindowAttributes(dsply,viewport->titleWindow,&wAttr);
-  if (whereDoYouWantPanel) {
-    switch (whereDoYouWantPanel) {
-    case 1: /* right */
-      cXY.putX = wAttrib.x + wAttrib.width;
-      cXY.putY = wAttrib.y;
-      break;
-    case 2: /* bottom */
-      cXY.putX = wAttrib.x + (wAttr.width - controlWidth)/2;  /* center it */
-      cXY.putY = wAttrib.y + wAttrib.height;
-      break;
-    case 3: /* left */
-      cXY.putX = wAttrib.x - controlWidth - borderWidth;
-      cXY.putY = wAttrib.y;
-      break;
-    case 4: /* top */
-      cXY.putX = wAttrib.x + (wAttr.width - controlWidth)/2;
-      cXY.putY = wAttrib.y - controlHeight - borderHeight;
-    }
-  } else {
-    if ((physicalWidth - (wAttrib.x + wAttr.width)) >= controlWidth) {
-      cXY.putX = wAttrib.x + wAttrib.width;
-      cXY.putY = wAttrib.y;
-    } else if ((physicalHeight - (wAttrib.y + wAttr.height)) >=
-	       controlHeight) {
-      cXY.putX = wAttrib.x + (wAttr.width - controlWidth)/2;
-      cXY.putY = wAttrib.y + wAttrib.height;
-    } else if (wAttrib.x >= controlWidth) {
-      cXY.putX = wAttrib.x - controlWidth - borderWidth;
-      cXY.putY = wAttrib.y;
-    } else if (wAttrib.y >= controlHeight) {
-      cXY.putX = wAttrib.x + (wAttr.width - controlWidth)/2;
-      cXY.putY = wAttrib.y - controlHeight - borderHeight;
-    } else {			   /* put inside of viewport */
-      cXY.putX = wAttrib.x + wAttr.width - controlWidth;
-      cXY.putY = wAttrib.y + wAttr.height - controlHeight;
-    }
-  }
-  return(cXY);
-
-}
-
-/************************************************/
-/***  controlPanelStruct *makeControlPanel()  ***/
-/************************************************/
-
-controlPanelStruct *
-makeControlPanel(void)
-{
-
-  Window cw;
-  int		       i,num;
-  controlPanelStruct   *control;
-  buttonStruct	       *buttons;
-  controlXY	       cXY;
-  XSetWindowAttributes cwAttrib, controlAttrib;
-  XSizeHints	       sizehints;
-  Pixmap	       mousebits,mousemask;
-  XColor	       foreColor, backColor;
-
-  if (!(control = (controlPanelStruct *)malloc(sizeof(controlPanelStruct)))) {
-    fprintf(stderr,"Ran out of memory trying to create a control panel.\n");
-    exitWithAck(RootWindow(dsply,scrn),Window,-1);
-  }
-
-  cXY = getControlXY(0);
-
-  /* Define and assign a mouse cursor. */
-  mousebits = XCreateBitmapFromData(dsply,rtWindow,mouseBitmap_bits,
-				    mouseBitmap_width,mouseBitmap_height);
-  mousemask = XCreateBitmapFromData(dsply,rtWindow,mouseMask_bits,
-				    mouseMask_width,mouseMask_height);
-  cwAttrib.background_pixel = backgroundColor; /* controlBackground; */
-  cwAttrib.border_pixel = foregroundColor;
-  cwAttrib.backing_store = WhenMapped;
-  cwAttrib.event_mask = controlMASK;
-  cwAttrib.colormap = colorMap;
-  cwAttrib.override_redirect = overrideManager;
-  foreColor.pixel = controlCursorForeground;
-  XQueryColor(dsply,colorMap,&foreColor);
-  backColor.pixel = controlCursorBackground;
-  XQueryColor(dsply,colorMap,&backColor);
-  cwAttrib.cursor = XCreatePixmapCursor(dsply,mousebits,mousemask,
-					&foreColor,&backColor,
-					mouseBitmap_x_hot,mouseBitmap_y_hot);
-
-  cw = XCreateWindow(dsply,rtWindow,
-		     cXY.putX,cXY.putY,controlWidth,controlHeight,3,
-		     CopyFromParent,InputOutput,CopyFromParent,
-		     controlCreateMASK,&cwAttrib);
-
-  sizehints.flags  = PPosition | PSize;
-  sizehints.x	   = cXY.putX;
-  sizehints.y	   = cXY.putY;
-  sizehints.width  = controlWidth;
-  sizehints.height = controlHeight;
-
-  /*** the None stands for icon pixmap...change.... ***/
-
-  XSetNormalHints(dsply,cw,&sizehints);
-  XSetStandardProperties(dsply,cw,"2D Control Panel","2D Control Panel",
-			 None,NULL,0,&sizehints);
-
-  control->controlWindow = cw;
-  num = initButtons(control->buttonQueue);
-  control->numOfButtons = num;
-  buttons = control->buttonQueue;
-
-  for (i=0; i<num; i++) {
-    controlAttrib.event_mask = (control->buttonQueue[i]).mask;
-    (control->buttonQueue[i]).self = XCreateWindow(dsply,cw,
-				       (control->buttonQueue[i]).buttonX,
-				       (control->buttonQueue[i]).buttonY,
-				       (control->buttonQueue[i]).buttonWidth,
-				       (control->buttonQueue[i]).buttonHeight,
-				       0,0,InputOnly,CopyFromParent,
-				       buttonCreateMASK,&controlAttrib);
-
-    XMakeAssoc(dsply,table,(control->buttonQueue[i]).self,
-	       &((control->buttonQueue[i]).buttonKey));
-   /* Use buttonKey instead of i because buttonKey has a permanent address */
-    XMapWindow(dsply,(control->buttonQueue[i]).self);
-  }
-
-	   /* Create message window */
-  control->messageWindow = XCreateWindow(dsply,cw,0,controlMessageY,
-					 controlWidth,controlMessageHeight,
-					 0,0,InputOnly,CopyFromParent,
-					 messageCreateMASK,&cwAttrib);
-  XMapWindow(dsply,control->messageWindow);
-
-  for (i=0; i<scaleArrowN; i++) {
-    scaleArrow[i].x += buttons[scale2D].buttonX;
-    scaleArrow[i].y += buttons[scale2D].buttonY;
-  }
-  for (i=0; i<translateArrowN; i++) {
-    translateArrow[i].x += buttons[translate2D].buttonX;
-    translateArrow[i].y += buttons[translate2D].buttonY;
-  }
-
-  viewport->justMadeControl = yes;
-  return(control);
-
-} /* makeControlPanel() */
-
-
-
-
-
-
-/*****************************************/
-/***  void putControlPanelSomewhere()  ***/
-/*****************************************/
-
-/* This routine puts up the control panel associated with the viewport
-   passed in.  It first tries to put it to the right of the viewport. If
-   there isn't enough room there, it tries the bottom and so on going
-   clockwise. If the viewport is too big and there is no room to put the
-   control panel outside of it, it placed the control panel in the bottom
-   right hand corner of the viewport window. */
-
-void 
-putControlPanelSomewhere(int whereDoesPanelGo)
-{
-  controlPanelStruct *control;
-  controlXY	     whereControl;
-
-  control = viewport->controlPanel;
-  whereControl = getControlXY(whereDoesPanelGo);
-
-  viewport->haveControl = yes;
-
-  XRaiseWindow(dsply,control->controlWindow);
-  XMoveWindow(dsply,control->controlWindow,whereControl.putX,
-	      whereControl.putY);
-
-  drawControlPanel();
-  if (viewport->justMadeControl) {
-    XMapWindow(dsply,control->controlWindow);
-    viewport->justMadeControl = no;
-  }
-  XMapWindow(dsply,control->controlWindow);
-}
-
-
-
-
-
-/************************************/
-/***  void clearControlMessage()  ***/
-/************************************/
-
-void 
-clearControlMessage(void)
-{
-
-  strcpy(viewport->controlPanel->message,"");
-  
-  XClearArea(dsply,viewport->controlPanel->controlWindow,
-	     0,controlMessageY-2,controlWidth,controlMessageHeight,False);
-}
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/globals2.h b/src/graph/view2d/globals2.h
deleted file mode 100755
index de0d132..0000000
--- a/src/graph/view2d/globals2.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-extern int           scrn;
-extern Display       *dsply;
-extern XFontStruct   *globalFont,*buttonFont,*headerFont,*titleFont,
-                     *graphFont,*unitFont,*serverFont;
-extern XrmDatabase      rDB;
-
-extern char          scaleXReport[5],scaleYReport[5],deltaXReport[5],
-                     deltaYReport[5];
-extern unsigned long *spadColors;
-extern int           followMouse,viewportKeyNum;
-extern Window        rtWindow,viewman;
-extern GC            globalGC1,globalGC2,anotherGC,globGC,trashGC,
-                     controlMessageGC,graphGC,unitGC;
-extern HashTable     *table;
-extern Colormap      colorMap;
-extern int           Socket,ack;
-
-extern  GC  processGC;
-extern  viewPoints *viewport;
-extern  controlPanelStruct *control;
-extern  XGCValues gcVals;
-extern  char *s;
-extern  int someInt;
-
-extern unsigned long foregroundColor, backgroundColor; 
-
-extern int drawMore;
-extern int spadMode,spadDraw;
-extern jmp_buf jumpFlag;
-
-extern graphStruct graphArray[maxGraphs]; 
-extern graphStateStruct graphStateArray[maxGraphs],
-                        graphStateBackupArray[maxGraphs];
-extern xPointStruct xPointsArray[maxGraphs];
-
-extern int pointsON, connectON, splineON, axesON, unitsON, zoomXON, zoomYON;
-extern int transXON, transYON;
-
-extern char errorStr[80];
-
-extern int currentGraph; 
-extern int queriedGraph;
-extern int picking,dropping;
-
-extern char filename[256];
-
-extern char *xDefault;
-
-extern int viewAloned;
-
-extern int mono, totalColors,
-           totalHues, totalSolidShades, totalDitheredAndSolids,totalShades;
-
-extern float aspectR;
-
-extern Atom wm_delete_window;
diff --git a/src/graph/view2d/graph2d.c.pamphlet b/src/graph/view2d/graph2d.c.pamphlet
deleted file mode 100644
index 3b15acb..0000000
--- a/src/graph/view2d/graph2d.c.pamphlet
+++ /dev/null
@@ -1,177 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d graph2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _GRAPH2D_C
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-#include "header2.h"
-
-#include "all-2d.h1"
-#include "util.h1"
-
-
-void 
-getGraphFromViewman(int i)
-{
- /** This routine should be called right after a read of the graph key 
-     was made from the viewport manager (or defined in some other way). **/
-
-  int j,k,xPointsNeeded;
-  pointListStruct *llPtr;
-  pointStruct     *p;
-
-  readViewman(&(graphArray[i].xmin),floatSize);
-  readViewman(&(graphArray[i].xmax),floatSize);
-  readViewman(&(graphArray[i].ymin),floatSize);
-  readViewman(&(graphArray[i].ymax),floatSize);
-  readViewman(&(graphArray[i].xNorm),floatSize);
-  readViewman(&(graphArray[i].yNorm),floatSize);
-  readViewman(&(graphArray[i].spadUnitX),floatSize);
-  readViewman(&(graphArray[i].spadUnitY),floatSize);
-  readViewman(&(graphArray[i].unitX),floatSize);
-  readViewman(&(graphArray[i].unitY),floatSize);
-  readViewman(&(graphArray[i].originX),floatSize);
-  readViewman(&(graphArray[i].originY),floatSize);
-  readViewman(&(graphArray[i].numberOfLists),intSize);
-  
-  if (!(llPtr = (pointListStruct *)malloc(graphArray[i].numberOfLists * sizeof(pointListStruct)))) {
-    fprintf(stderr,"VIEW2D: Fatal Error>> Ran out of memory trying to receive a graph.\n");
-    exitWithAck(RootWindow(dsply,scrn),Window,-1);
-  }
-  graphArray[i].listOfListsOfPoints = llPtr;
-  
-  xPointsNeeded = 0;
-  for (j=0; j<graphArray[i].numberOfLists; j++) {
-    readViewman(&(llPtr->numberOfPoints),intSize);
-    if (!(p = (pointStruct *)malloc(llPtr->numberOfPoints * sizeof(pointStruct)))) {
-      fprintf(stderr,"VIEW2D: (pointStruct) ran out of memory trying to create a new graph.\n");
-      exitWithAck(RootWindow(dsply,scrn),Window,-1);
-    }
-    llPtr->listOfPoints = p;             /** point to current point list **/
-    for (k=0; k<llPtr->numberOfPoints; k++) {
-      readViewman(&(p->x),floatSize);
-      readViewman(&(p->y),floatSize);
-      readViewman(&(p->hue),floatSize);
-      readViewman(&(p->shade),floatSize);
-      p++;
-    }   /* for k in list of points */
-    readViewman(&(llPtr->pointColor),intSize);
-    readViewman(&(llPtr->lineColor),intSize);
-    readViewman(&(llPtr->pointSize),intSize);
-    
-    xPointsNeeded += llPtr->numberOfPoints;
-    llPtr++;
-  }   /* for j in list of lists of points */
-  
-  /* read in graph state for the existing graph (override default values) */
-  readViewman(&(graphStateArray[i].scaleX),floatSize);
-  readViewman(&(graphStateArray[i].scaleY),floatSize);
-  readViewman(&(graphStateArray[i].deltaX),floatSize);
-  readViewman(&(graphStateArray[i].deltaY),floatSize);
-  readViewman(&(graphStateArray[i].pointsOn),intSize);
-  readViewman(&(graphStateArray[i].connectOn),intSize);
-  readViewman(&(graphStateArray[i].splineOn),intSize);
-  readViewman(&(graphStateArray[i].axesOn),intSize);
-  readViewman(&(graphStateArray[i].axesColor),intSize);
-  readViewman(&(graphStateArray[i].unitsOn),intSize);
-  readViewman(&(graphStateArray[i].unitsColor),intSize);
-  readViewman(&(graphStateArray[i].showing),intSize);
-  graphStateArray[i].selected = yes;
-  graphStateBackupArray[i] = graphStateArray[i];
-
-  graphStateArray[i].deltaX = graphStateArray[0].deltaX;
-  graphStateArray[i].deltaY = graphStateArray[0].deltaY;
-  graphStateArray[i].scaleX = graphStateArray[0].scaleX;
-  graphStateArray[i].scaleY = graphStateArray[0].scaleY;
-
-  /* allocate memory for xPoints (used in drawViewport) */
-  if (!(xPointsArray[i].xPoint = (XPoint *)malloc(xPointsNeeded * sizeof(XPoint)))) {
-    fprintf(stderr,"VIEW2D: (XPoint) Ran out of memory (malloc) trying to create a new graph.\n");
-    exitWithAck(RootWindow(dsply,scrn),Window,-1);
-  }
-  if (!(xPointsArray[i].x10Point = (Vertex *)malloc(xPointsNeeded * sizeof(Vertex)))) {
-    fprintf(stderr,
-            "VIEW2D: (X10Point) Ran out of memory (malloc) trying to create a new graph.\n");
-    exitWithAck(RootWindow(dsply,scrn),Window,-1);
-  }
-  if (!(xPointsArray[i].arc = (XArc *)malloc(xPointsNeeded * sizeof(XArc)))) {
-    fprintf(stderr,"VIEW2D: (XArc) Ran out of memory (malloc) trying to create a new graph.\n");
-    exitWithAck(RootWindow(dsply,scrn),Window,-1);
-  }
-
-}   /* getGraphFromViewman */
-
-
-
-void 
-freeGraph(int i)
-{
-  int j;
-  pointListStruct *llPtr;
-
-  if (graphArray[i].key) {
-    graphArray[i].key = 0;   /* 0 means no graph */
-    for (j=0,llPtr=graphArray[i].listOfListsOfPoints; 
-	 j<graphArray[i].numberOfLists; j++,llPtr++) 
-      free(llPtr->listOfPoints);
-    free(llPtr);
-    free(xPointsArray[i].xPoint);
-  } else {
-  }
-
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/header2.h b/src/graph/view2d/header2.h
deleted file mode 100755
index 18e3040..0000000
--- a/src/graph/view2d/header2.h
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <X11/Xlib.h>
-#include <X11/Xresource.h>
-#include <setjmp.h>
-
-/* for xdefs */
-#define view2d 
-
-#include "hash.h"
-#include "nox10.h"
-#include "view.h"
-#include "view2d.h"
-#include "actions.h"
-#include "viewcommand.h"
-#include "xdefs.h"
-#include "override.h"
-#include "g.h"       /* Gdraw functions header file */
-
-
-
-#define carefullySetFont(gc,font) if (font != serverFont) XSetFont(dsply,gc,font->fid)
-
-#define controlMASK (ButtonPressMask + ExposureMask)
-#define potMASK     (ButtonPressMask + ButtonReleaseMask + ButtonMotionMask + LeaveWindowMask)
-#define buttonMASK  (ButtonPressMask + ButtonReleaseMask + LeaveWindowMask)
-#define colorMASK   (ButtonPressMask + ButtonReleaseMask + LeaveWindowMask)
-
-/* make mouse grab for stationery mouse on a potentiometer slower */
-#define mouseWait 50 
-
-#define controlCreateMASK (CWBackPixel | CWBorderPixel | CWEventMask | CWCursor |CWColormap | CWOverrideRedirect)
-#define buttonCreateMASK    CWEventMask  
-#define messageCreateMASK   0
-#define colormapCreateMASK  CWEventMask
-
-#define controlWidth  236
-#define controlHeight 400
-
-#define closeLeft cp->buttonQueue[closeAll2D].buttonX - 5
-#define closeTop  cp->buttonQueue[closeAll2D].buttonY - 5
-
-#define controlBackground WhitePixel(dsply,scrn)
-#define controlCursorForeground monoColor(4)
-#define controlCursorBackground monoColor(44)
-#define controlTitleColor       monoColor(36)
-#define controlPotHeaderColor   monoColor(52)
-#define controlColorColor       monoColor(13)
-#define controlColorSignColor   monoColor(22)
-
-#define controlMessageHeight globalFont->max_bounds.ascent + globalFont->max_bounds.descent+4
-#define messageBot controlMessageY + controlMessageHeight
-
-#define headerHeight headerFont->max_bounds.ascent
-#define graphHeaderHeight messageBot + headerHeight
-
-#define graphBarTop    graphHeaderHeight + 12
-#define graphBarLeft   66
-#define graphBarWidth  graphFont->max_bounds.width
-#define graphBarHeight graphFont->max_bounds.ascent + graphFont->max_bounds.descent
-
-#define colormapX 10
-#define colormapY 235
-#define colormapW 280
-#define colormapH 60
-
-#define colorWidth   8
-#define colorHeight  12
-  
-#define colorOffset  3
-#define colorOffsetX 24
-#define colorOffsetY 20
-#define colorPointer 18
-
-#define buttonColor monoColor(105) 
-
-#define graphBarDefaultColor    monoColor(15)
-#define graphBarShowingColor    monoColor(15)
-#define graphBarHiddenColor     monoColor(138)
-#define graphBarSelectColor     monoColor(15)
-#define graphBarNotSelectColor  monoColor(138)
-
-#define viewportCreateMASK (CWBackPixel|CWBorderPixel|CWEventMask|CWCursor|CWColormap)
-#define viewportTitleCreateMASK (CWBackPixel|CWBorderPixel|CWCursor|CWColormap|CWEventMask|CWOverrideRedirect)
-
-#define viewportMASK (KeyPressMask + ButtonPressMask + ExposureMask)
-#define titleMASK    ExposureMask
-
-#define lineWidth  1
-#define lineHeight 1
-
-#define titleColor     monoColor(36)
-#define titleHeight    24
-#define appendixHeight 0
-
-#define viewWidth  400
-#define viewHeight 400
-
-#define viewBorderWidth 0
-#define borderWidth     22
-#define borderHeight	45
-
-#define initDeltaX 0.0
-#define initDeltaY 0.0
-#define initScale  1.3
-
-#define minScale  0.01
-#define maxScale  1000.0
-#define maxDelta  1000.0
-
-#define scaleFactor     0.5
-#define translateFactor 10
-
-#define viewCursorForeground monoColor(166)
-#define viewCursorBackground monoColor(5)
-
-#define axisLength 100.0    
-
-#define axesColorDefault  35
-#define labelColor 22
-
-#define meshOutline      monoColor(132)
-#define opaqueOutline    monoColor(53)
-#define opaqueForeground monoColor(236)
-
-#define drawWireFrame 0
-#define drawOpaque    1
-#define drawRendered  2
-
-
-#define numOfColors 240
-
-#define totalHuesConst   27
-#define totalShadesConst 8
-#define hueEnd 360
-#define hueStep hueEnd/totalHuesConst
-
-#define numPlanes 1
-#define numColors 10
-#define startColor 0
-#define endColor   startColor+numColors
-#define maxColors DisplayCells(dsply,scrn)-1
-
-#define colorStep (maxColors+1)/numColors
-
-
-#define physicalWidth  DisplayWidth(dsply,scrn)
-#define physicalHeight DisplayHeight(dsply,scrn)
-#define deep           DisplayPlanes(dsply,scrn)
-
-#define basicScreen 19
-
-#define yes 1
-#define no  0
-
-#define potA  25   /* line dividing potentiometers from stuff above it */
-#define potB 173   /* line dividing potentiometers from title */
-#define butA 260   /* line dividing buttons from stuff above it */
-
-#define controlMessageY     181
-#define controlMessageColor monoColor(29)
-
-#define pi_half         1.570796326794896619231321691639751442099
-#define pi              3.141592653589793238462643383279502884197
-#define three_pi_halves 4.712388980384689857693965074919254326296
-#define two_pi          6.283185307179586476925286766559005768394
-
-#define degrees_in_two_pi 57
-#define d2Pi 57
-
-#define viewBackground 0
-
-#define nbuckets         128
-
-#define anywhere 0
-
-
-#define intSize sizeof(int)
-#define floatSize sizeof(float)
-
-/* type is X, PS,... */
-
-#define drawViewport(type) drawTheViewport(type);
-#define spadDrawViewport() spadMode++; drawTheViewport(X); spadMode--;
-
-
-typedef struct _buttonStruct {
-  int buttonKey, pot, mask, graphNum, graphSelect;
-  short buttonX,buttonY,buttonWidth,buttonHeight,xHalf,yHalf;
-  Window self;
-  char text[40];
-  int textColor, textHue, textShade;
-} buttonStruct;
-
-typedef struct _controlPanelStruct {
-  int                  numOfButtons;
-  Window               controlWindow,messageWindow,colormapWindow;
-  char                 message[40];
-  struct _buttonStruct buttonQueue[maxButtons2D];
-} controlPanelStruct;
-
-typedef struct _mouseCoord {
-    float x,y;
-} mouseCoord;
-
-typedef struct _viewPoints {
-  int                 viewportKey;
-  char                title[80];
-  Window              viewWindow,titleWindow;
-  controlPanelStruct  *controlPanel;
-  int                 justMadeControl,haveControl,
-                      axesOn,unitsOn,pointsOn,linesOn,splineOn,closing,
-                      allowDraw;
-  struct _viewPoints  *prevViewport,*nextViewport;
-} viewPoints;
-
-
-typedef struct _controlXY {
-  int putX,putY;
-} controlXY;
-
-
-typedef struct _xPointStruct {
-  XPoint *xPoint;
-  Vertex *x10Point;
-  XArc   *arc;
-} xPointStruct;
-
-
-
-#define calcUnitX(ii) (vwInfo.width * \
-		       ((graphArray[0].unitX * ii + \
-                     	graphArray[0].originX - graphStateArray[0].centerX) *\
-			graphStateArray[0].scaleX + 0.5))
-#define calcUnitY(ii) (vwInfo.height * aspectR * \
-		       (1 - ((graphArray[0].unitY*aspectR * ii + \
-			      graphArray[0].originY*aspectR - \
-			      graphStateArray[0].centerY) * \
-			     graphStateArray[0].scaleY + 0.5*aspectR )))
-
-#define projX(x,w,i) ((((float)x/w-0.5)/graphStateArray[i].scaleX + \
-		       graphStateArray[i].centerX + 0.5) / 	\
-		      graphArray[i].xNorm + graphArray[i].xmin)
-
-#define projY(y,h,i) (((0.5-(float)y/h*aspectR)/graphStateArray[i].scaleY + \
-		       graphStateArray[i].centerY + 0.5) / 	\
-		      graphArray[i].yNorm + graphArray[i].ymin)
-
-#define isNaN(v) (v != v)
-
-#include "globals2.h"
-
diff --git a/src/graph/view2d/main2d.c.pamphlet b/src/graph/view2d/main2d.c.pamphlet
deleted file mode 100644
index c4ac10c..0000000
--- a/src/graph/view2d/main2d.c.pamphlet
+++ /dev/null
@@ -1,514 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d main2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _MAIN2D_C
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <signal.h>
-
-#include "header2.h"
-#include "bsdsignal.h"
-#include "globals2.h"
-#include "bsdsignal.h1"
-#include "all-2d.h1"
-#include "gfun.h1"
-#include "util.h1"
-#include "xspadfill.h1"
-
-
-/**********************/
-/** global variables **/
-/**********************/
-Window        rtWindow,viewman;
-Display       *dsply;
-XFontStruct   *globalFont,
-  *buttonFont,
-  *headerFont,
-  *titleFont,
-  *graphFont,
-  *unitFont,
-  *serverFont;
-GC            globalGC1,
-  globalGC2,
-  anotherGC,
-  globGC,
-  trashGC,
-  controlMessageGC,
-  graphGC,
-  unitGC,
-  processGC;
-XGCValues     gcVals;
-HashTable     *table;
-Colormap      colorMap;
-
-XrmDatabase rDB; /* Resource database */
-
-
-char          scaleXReport[5],
-  scaleYReport[5],
-  deltaXReport[5],
-  deltaYReport[5],
-  *s,
-  errorStr[80],
-  filename[256], /** For writing viewport data out to a file **/
-  *xDefault;     /** used for accessing .XDefaults **/
-
-
-unsigned long *spadColors;
-unsigned long foregroundColor, backgroundColor;  
-
-int           followMouse = no, 
-  viewportKeyNum = 0, 
-  scrn, 
-  Socket = 1,
-  ack = 1,
-  someInt,
-  drawMore,
-  spadMode=no, /* yes if receiving AXIOM command and calling drawViewport */
-  spadDraw=no, /* yes if drawing viewport because of a AXIOM command */
-  pointsON  = yes,  /* these would affect the choices in buttons.c */
-  connectON = yes,
-  splineON  = no,
-  axesON    = yes,
-  unitsON   = no,
-  zoomXON   = yes,
-  zoomYON   = yes,
-  transXON  = yes,
-  transYON  = yes,
-  currentGraph = 0,  /* last graph selected */
-  queriedGraph = 0,  /* current graph queried */
-  picking=0,
-  dropping=0,
-  viewAloned,  /** if not connected to AXIOM **/
-  mono, 
-  totalColors, 
-  totalSolid, 
-  totalDithered, 
-  maxGreyShade,
-  totalHues, 
-  totalSolidShades, 
-  totalDitheredAndSolids,
-  totalShades;
-/* totalShades is initially set to totalShadesConst (probably 8).
-   If X cannot allocate 8 shades for each hue, totalShades is 
-   decremented. There is currently only a check for this value
-   to be positive. ---> something to add: change over to monochrome
-   if totalShades=0. Just modify the spadcolors.c file. 
-   spadcolors.c has been modified so that it returns the value for
-   totalShades. Since the return value had previously been unused,
-   a modification in this way ensures continued support of other
-   routines calling this function (e.g. hyperDoc stuff). */
-
-viewPoints    *viewport;
-controlPanelStruct *control;
-jmp_buf jumpFlag;
-graphStruct      graphArray[maxGraphs];
-graphStateStruct graphStateArray[maxGraphs],
-  graphStateBackupArray[maxGraphs];
-xPointStruct     xPointsArray[maxGraphs];
-float aspectR = 1.0;
-/* global ps variables */
-int     psInit=no;      /* need to call globalInitPs() each run */
-GCptr   GChead=NULL;    /* ptr to head of ps GC linked list */
-char    *PSfilename,    /* output file name used in user directory */
-  *envAXIOM;    /* used as ps file pathnames */
-
-int
-main(void) 
-{
-
-  XGCValues       controlGCVals;
-  int             i,code;
-  view2DStruct    viewData;
-  
-  char property[256];
-  char *prop = &property[0];
-  char *str_type[20];
-  XrmValue value;
-
-
-  /**** Set up display ****/
-  if ((dsply = XOpenDisplay(getenv("DISPLAY"))) == NULL)
-    fprintf(stderr,"Could not open the display.\n");
-  scrn  = DefaultScreen(dsply);
-  rtWindow  = RootWindow(dsply,scrn);
-  
-  /**** link Xwindows to viewports - X10 feature ****/
-  table        = XCreateAssocTable(nbuckets);  
-  
-  /**** Create AXIOM color map ****/
-  totalColors = XInitSpadFill(dsply,scrn,&colorMap,
-                              &totalHues,&totalSolidShades,
-                              &totalDitheredAndSolids,&totalShades);
-  
-  if (totalColors < 0) {
-    fprintf(stderr,">>Error: Could not allocate all the necessary colors.\n");
-    exitWithAck(RootWindow(dsply,scrn),Window,-1);
-  }
-  
-  mergeDatabases();
-  
-  
-  /*** Determine whether monochrome or color is used ***/
-  if (XrmGetResource(rDB,"Axiom.2D.monochrome","",str_type,&value) == True)
-    (void) strncpy(prop,value.addr,(int)value.size);
-  else 
-    (void) strcpy(prop, "off");
-  
-  mono = ((totalSolid == 2) || (strcmp(prop,"on") == 0));
-  
-  if (XrmGetResource(rDB,"Axiom.2D.inverse","",str_type,&value) == True)
-    (void) strncpy(prop,value.addr,(int)value.size);
-  else 
-    (void) strcpy(prop, "off");
-  
-  if (mono) 
-    if (strcmp(prop,"on") == 0) {  	      /* 0 if equal (inverse video) */
-      foregroundColor = WhitePixel(dsply,scrn);
-      backgroundColor = BlackPixel(dsply,scrn);
-    } else {  				      /* off (no inverse video) */
-      foregroundColor = BlackPixel(dsply,scrn);
-      backgroundColor = WhitePixel(dsply,scrn);
-    }
-  else   /* inverse of inverse in color (for some strange reason) */
-    if (strcmp(prop,"on") == 0) {         /* 0 if equal (inverse video) */
-      foregroundColor = WhitePixel(dsply,scrn);
-      backgroundColor = BlackPixel(dsply,scrn);
-    } else {                                  /* off (no inverse video) */
-      foregroundColor = BlackPixel(dsply,scrn);
-      backgroundColor = WhitePixel(dsply,scrn);
-    }
-  
-  
-  /* read default file name for postScript output */
-  if (XrmGetResource(rDB,
-		     "Axiom.2D.postscriptFile",
-		     "",
-		     str_type, &value) == True)
-    (void) strncpy(prop,value.addr,(int)value.size);
-  else 
-    (void) strcpy(prop, "axiom2d.ps");
-     
-  PSfilename = (char *)malloc(strlen(prop)+1);
-  strcpy(PSfilename,prop);
-  
-  
-  
-  /**** Open global fonts ****/
-  serverFont = XQueryFont(dsply,XGContextFromGC(DefaultGC(dsply,scrn)));
-
-  if (XrmGetResource(rDB,
-		     "Axiom.2D.messageFont",
-		     "Axiom.2D.Font",
-		     str_type, &value) == True)
-    (void) strncpy(prop,value.addr,(int)value.size);
-  else      
-    (void) strcpy(prop,messageFontDefault);  
-  if ((globalFont = XLoadQueryFont(dsply, prop)) == NULL) {
-    fprintf(stderr, 
-	    "Warning:  could not get the %s font for messageFont\n",prop);
-    globalFont = serverFont;
-  }
-  
-  if (XrmGetResource(rDB,
-		     "Axiom.2D.buttonFont",
-		     "Axiom.2D.Font",
-		     str_type, &value) == True)
-    (void) strncpy(prop,value.addr,(int)value.size);
-  else 
-    (void) strcpy(prop,buttonFontDefault);
-  if ((buttonFont = XLoadQueryFont(dsply, prop)) == NULL) {
-    fprintf(stderr, 
-	    "Warning:  could not get the %s font for buttonFont\n",prop);
-    buttonFont = serverFont;
-  }
-  
-  if (XrmGetResource(rDB,
-		     "Axiom.2D.headerFont",
-		     "Axiom.2D.Font",
-		     str_type, &value) == True)
-     (void) strncpy(prop,value.addr,(int)value.size);
-  else
-    (void) strcpy(prop,headerFontDefault);
-  
-  if ((headerFont = XLoadQueryFont(dsply, prop)) == NULL) {
-    fprintf(stderr, 
-	    "Warning:  could not get the %s font for headerFont\n",prop);
-    headerFont = serverFont;
-  }
-
-  if (XrmGetResource(rDB,
-		     "Axiom.2D.titleFont",
-		     "Axiom.2D.Font",
-		     str_type,&value) == True)
-    (void) strncpy(prop,value.addr,(int)value.size);
-  else 
-    (void) strcpy(prop,titleFontDefault);
-  
-  if ((titleFont = XLoadQueryFont(dsply, prop)) == NULL) {
-    fprintf(stderr, 
-	    "Warning:  could not get the %s font for titleFont\n",prop);
-    titleFont = serverFont;
-  }
-  
-  if (XrmGetResource(rDB,
-		     "Axiom.2D.graphFont",
-		     "Axiom.2D.Font",
-		     str_type,&value) == True)
-    (void) strncpy(prop,value.addr,(int)value.size);
-  else 
-    (void) strcpy(prop,graphFontDefault);
-  
-  if ((graphFont = XLoadQueryFont(dsply, prop)) == NULL) {
-    fprintf(stderr, 
-	    "Warning:  could not get the %s font for graphFont\n",prop);
-    graphFont = serverFont;
-  }
-  
-  if (XrmGetResource(rDB,
-		     "Axiom.2D.unitFont",
-		     "Axiom.2D.Font",
-		     str_type,&value) == True)
-    (void) strncpy(prop,value.addr,(int)value.size);
-  else 
-    (void) strcpy(prop,unitFontDefault);
-  
-  if ((unitFont = XLoadQueryFont(dsply, prop)) == NULL) {
-     fprintf(stderr, 
-	     "Warning:  could not get the %s font for unitFont\n",prop);
-     unitFont = serverFont;
-  }
-
-
-  /**** Create widely used Graphic Contexts ****/
-  PSGlobalInit();       
-  /* must initiate before using any G/PS functions 
-     need character name: used as postscript GC variable 
-     need to create ps GCs for all GCs used by drawings in viewWindow */
-
-  /* globalGC1 */
-
-  controlGCVals.foreground = monoColor(axesColorDefault);
-  controlGCVals.background = backgroundColor;
-  globalGC1 = XCreateGC(dsply,rtWindow,GCForeground | GCBackground ,
-			&controlGCVals);  
-  carefullySetFont(globalGC1,globalFont);
-  
-  
-  /* create the equivalent GCs for ps */
-  PSCreateContext(globalGC1, "globalGC1", psNormalWidth, psButtCap,
-		  psMiterJoin, psWhite, psBlack);
-  
-  /* controlMessageGC */
-
-  controlGCVals.foreground = controlMessageColor;
-  controlMessageGC = XCreateGC(dsply,rtWindow,GCForeground | GCBackground 
-			       ,&controlGCVals);
-  carefullySetFont(controlMessageGC,globalFont);
-  
-  /* globalGC2 */
-
-  controlGCVals.foreground = monoColor(labelColor);
-  controlGCVals.background = backgroundColor;
-  globalGC2 = XCreateGC(dsply,rtWindow,GCForeground | GCBackground,
-			&controlGCVals);
-  carefullySetFont(globalGC2,buttonFont);
-  PSCreateContext(globalGC2, "globalGC2", psNormalWidth, psButtCap,
-		  psMiterJoin, psWhite, psBlack);
-  
-  /* trashGC  */
-  
-  trashGC = XCreateGC(dsply,rtWindow,0,&controlGCVals);
-  carefullySetFont(trashGC,buttonFont);
-  PSCreateContext(trashGC, "trashGC", psNormalWidth, psButtCap,
-		  psMiterJoin, psWhite, psBlack);
-  
-  /* globGC */
-  
-  globGC = XCreateGC(dsply,rtWindow,0,&controlGCVals);
-  carefullySetFont(globGC,headerFont);
-  PSCreateContext(globGC, "globGC", psNormalWidth, psButtCap,
-		  psMiterJoin, psWhite, psBlack);
-  
-  /* anotherGC  */
-  
-  controlGCVals.line_width = colorWidth;
-  anotherGC  = XCreateGC(dsply,rtWindow,GCBackground,&controlGCVals);
-  carefullySetFont(anotherGC,titleFont);
-  PSCreateContext(anotherGC, "anotherGC", psNormalWidth, psButtCap,
-		  psMiterJoin, psWhite, psBlack);
-  
-  /* processGC */
-  
-  gcVals.background = backgroundColor;
-  processGC         = XCreateGC(dsply,rtWindow,GCBackground ,&gcVals);
-  carefullySetFont(processGC,buttonFont);
-  
-  /* graphGC */
-  
-  graphGC           = XCreateGC(dsply,rtWindow,GCBackground,&gcVals);
-  carefullySetFont(graphGC,graphFont);
-  PSCreateContext(graphGC, "graphGC", psNormalWidth, psButtCap,
-		  psMiterJoin, psWhite, psBlack);
-  
-  /* unitGC */
-  
-  unitGC            = XCreateGC(dsply,rtWindow,GCBackground ,&gcVals);
-  carefullySetFont(unitGC,unitFont);
-  PSCreateContext(unitGC, "unitGC", psNormalWidth, psButtCap,
-		  psMiterJoin, psWhite, psBlack);
-  
-  /**** Initialize Graph States ****/
-  
-  for (i=0; i<maxGraphs; i++) {
-    graphStateArray[i].scaleX = 0.9;
-    graphStateArray[i].scaleY = 0.9;
-    graphStateArray[i].deltaX = 0.0;
-    graphStateArray[i].deltaY = 0.0;
-    graphStateArray[i].centerX = 0.0;
-    graphStateArray[i].centerY = 0.0;
-    graphStateArray[i].pointsOn  = yes;
-    graphStateArray[i].connectOn = yes;
-    graphStateArray[i].splineOn  = no;
-    graphStateArray[i].axesOn    = yes;
-    graphStateArray[i].unitsOn   = no;
-    graphStateArray[i].showing   = no;
-    graphStateArray[i].selected  = no;
-    graphStateBackupArray[i] = graphStateArray[i];
-  } 
-  
-  /**** Get Data from the Viewport Manager ****/
-  
-  i = 123;
-  code=check(write(Socket,&i,intSize));
-  
-  /* Check if I am getting stuff from AXIOM or, if I am viewAlone. */
-  readViewman(&viewAloned,intSize);
-  readViewman(&viewData,sizeof(view2DStruct));
-  readViewman(&i,intSize);
-  
-  if (!(viewData.title = (char *)malloc(i))) {
-    fprintf(stderr,
-	    "ERROR: Ran out of memory trying to receive the title.\n");
-    exitWithAck(RootWindow(dsply,scrn),Window,-1);
-  }
-  readViewman(viewData.title,i);
-  
-  for (i=0; i<maxGraphs; i++) {
-    readViewman(&(graphArray[i].key),intSize);
-    if (graphArray[i].key) {  		/** this graph slot has data **/
-      getGraphFromViewman(i);
-    } /* if graph exists (graphArray[i].key is not zero) */
-  } /* for i in graphs */
-  
-  viewport = makeView2D(&viewData);
-  control = viewport->controlPanel;
-  
-  bsdSignal(SIGTERM,goodbye,DontRestartSystemCalls);
-  
-  /* send acknowledgement to viewport manager */
-  i = 345;
-  check(write(Socket,&(viewport->viewWindow),sizeof(Window)));
-  
-  processEvents();
-  
-  goodbye(-1);
-  return(0);  /* control never reaches here but compiler complains */
-} /* main() */
-
-void 
-mergeDatabases(void)
-{
-  /* using global
-     rDB
-     dsply
-     */
-  XrmDatabase homeDB,serverDB,applicationDB;
-  char filenamebuf[1024];
-  char *filename = &filenamebuf[0];
-  char *classname = "Axiom";
-  char name[255];
-  
-  (void) XrmInitialize();
-  (void) strcpy(name, "/usr/lib/X11/app-defaults/");
-  (void) strcat(name, classname);
-  applicationDB = XrmGetFileDatabase(name);
-  (void) XrmMergeDatabases(applicationDB, &rDB);
-  
-  if (XResourceManagerString(dsply) != NULL)
-    serverDB = XrmGetStringDatabase(XResourceManagerString(dsply));
-  else {
-    (void) strcpy(filename,getenv("HOME"));
-    (void) strcat(filename,"/.Xdefaults");
-    serverDB = XrmGetFileDatabase(filename);
-  }
-  XrmMergeDatabases(serverDB,&rDB);
-  if ( getenv ("XENVIRONMENT") == NULL) {
-    int len;
-    (void) strcpy(filename,getenv("HOME"));
-    (void) strcat(filename,"/.Xdefaults-");
-    len = strlen(filename);
-    (void) gethostname(filename+len,1024-len);
-  }
-  else 
-    (void) strcpy (filename,getenv ("XENVIRONMENT"));
-  
-  homeDB = XrmGetFileDatabase(filename);
-  XrmMergeDatabases(homeDB,&rDB);
-}
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/pot2d.c.pamphlet b/src/graph/view2d/pot2d.c.pamphlet
deleted file mode 100644
index f383737..0000000
--- a/src/graph/view2d/pot2d.c.pamphlet
+++ /dev/null
@@ -1,77 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d pot2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _POT2D_C
-
-#include "header2.h"
-
-#include "all-2d.h1"
-
-mouseCoord 
-getPotValue(short eX,short eY,short xH,short yH)
-{
-
-  mouseCoord whereMouse;
-  float x,y;
-
-  x = (float)eX/xH - 1;
-  y = -((float)eY/yH -1);
-            /* make non-linear potentiometer */
-  whereMouse.x = x*x*x; 
-  whereMouse.y = y*y*y; 
-
-  return(whereMouse);
-
-} /* getPotValue() */
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/process2d.c.pamphlet b/src/graph/view2d/process2d.c.pamphlet
deleted file mode 100644
index 7c0f7f1..0000000
--- a/src/graph/view2d/process2d.c.pamphlet
+++ /dev/null
@@ -1,922 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d process2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _PROCESS2D_C
-
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#ifdef RIOSplatform
-#include <sys/select.h>
-#endif
-
-#include "header2.h"
-
-#include "all-2d.h1"
-#include "util.h1"
-#include "gfun.h1"
-#include "xspadfill.h1"
-
-
-static int doit=0;  /* globish variable for picking/dropping/clearing - all sorts of
-		2 button sequence events (command & graph #). */
-
-
-void 
-doPick (int i,int bKey)
-{
-  int vCommand=pick2D;
-  
-  picking = no;
-  /* reset indicator so that we're not in pick/drop/query mode anymore */
-  doit = 0;
-  if (graphArray[currentGraph].key) {
-    check(write(Socket,&vCommand,intSize));
-    check(write(Socket,&(graphArray[currentGraph].key),intSize));
-    check(write(Socket,&(graphStateArray[currentGraph]),
-		sizeof(graphStateStruct)));
-    sprintf(control->message,"%s%d","Picked up graph ",currentGraph+1);
-  } else
-    sprintf(control->message,"%s","This graph is empty!");
-  writeControlMessage();
-  
-  
-}
-
-
-void 
-doDrop (int i,int bKey)
-{
-  int vCommand=drop2D;
-  int viewGoAhead;
-  
-  dropping = no;
-  /* reset indicator so that we're not in pick/drop/query mode anymore */
-  doit = 0;
-  check(write(Socket,&(vCommand),intSize));
-  readViewman(&viewGoAhead,intSize);
-  if (viewGoAhead < 0) {
-    sprintf(control->message,"%s%d","Couldn't drop to graph ",currentGraph+1);
-    writeControlMessage();
-  } else {
-    sprintf(control->message,"%s%d","Dropped onto graph ",currentGraph+1);
-    writeControlMessage();
-    freeGraph(currentGraph);
-    readViewman(&(graphArray[currentGraph].key),intSize);
-    getGraphFromViewman(currentGraph);
-    /* simulate a button press to turn display number on and select on */
-    /* need !yes since it will be inverted */
-    graphStateArray[currentGraph].selected = no;
-    graphStateArray[currentGraph].showing =
-      !(graphStateArray[currentGraph].showing);
-    clickedOnGraph(currentGraph,currentGraph+graphStart);
-    clickedOnGraphSelect(currentGraph,currentGraph+graphSelectStart);
-  }
-}
-
-void 
-clickedOnGraphSelect (int i,int bKey)
-{
-  int strlength;
-  
-  switch (doit) {
-  case pick2D:
-    currentGraph = i;
-    doPick(i,bKey);
-    break;
-  case drop2D:
-    currentGraph = i;
-    doDrop(i,bKey);
-    break;
-  case query2D:
-    queriedGraph = i;
-    makeMessageFromData(queriedGraph);
-    writeControlMessage();
-    /* reset indicator so that we're not in pick/drop/query mode anymore */
-    doit = 0;
-    break;
-  default:
-    graphStateArray[i].selected = !(graphStateArray[i].selected);
-    if (graphStateArray[i].selected) {
-      GSetForeground(graphGC,(float)graphBarSelectColor,Xoption);
-      strcpy(control->buttonQueue[bKey].text,"^");
-      strlength = strlen(control->buttonQueue[bKey].text);
-    } else {
-      GSetForeground(graphGC,(float)graphBarNotSelectColor,Xoption);
-      strcpy(control->buttonQueue[bKey].text,"-");
-      strlength = strlen(control->buttonQueue[bKey].text);
-    }
-    /* just to make sure the background is reset from clickedOnGraph */
-    if (mono) {
-      GSetForeground(graphGC,(float)foregroundColor,Xoption);
-      GSetBackground(graphGC,(float)backgroundColor,Xoption);
-    }
-    
-    GDrawImageString(graphGC,control->controlWindow,
-		     control->buttonQueue[bKey].buttonX +
-		     centerX(graphGC,
-			     control->buttonQueue[bKey].text,strlength,
-			     control->buttonQueue[bKey].buttonWidth),
-		     control->buttonQueue[bKey].buttonY +
-		     centerY(graphGC,
-			     control->buttonQueue[bKey].buttonHeight),
-		     control->buttonQueue[bKey].text,strlength,Xoption);
-    GSetForeground(trashGC,(float)foregroundColor,Xoption);
-    GSetLineAttributes(trashGC,2,LineSolid,CapButt,JoinMiter,Xoption);
-    GDrawLine(trashGC,control->controlWindow,0,286,controlWidth,286,Xoption);
-    break;
-  } /* switch doit */
-  
-}
-
-
-static void
-drawControlPushButton(int isOn, int index)
-{
-  GDrawPushButton(dsply, processGC, processGC, processGC,
-		  control->controlWindow,
-		  (control->buttonQueue[index]).buttonX,
-		  (control->buttonQueue[index]).buttonY,
-		  (control->buttonQueue[index]).buttonWidth,
-		  (control->buttonQueue[index]).buttonHeight,
-		  isOn,
-		  (control->buttonQueue[index]).text,
-		  buttonColor,
-		  monoColor((control->buttonQueue[index]).textColor), Xoption);
-  XSync(dsply,False);
-}
-
-
-
-void 
-buttonAction (int bKey)
-{
-  int i;
-  
-  switch (bKey) {
-    
-  case pick2D:
-    if (viewAloned) {
-      sprintf(control->message,"%s","Cannot pick without AXIOM!");
-      writeControlMessage();
-      XSync(dsply,False);
-    }
-    else {
-      doit = pick2D;
-      sprintf(control->message,"%s","Click on the graph to pick");
-      writeControlMessage();
-      XSync(dsply,False);
-    }
-    break;
-    
-  case drop2D:
-    if (viewAloned) {
-      sprintf(control->message,"%s","Cannot drop without AXIOM!");
-      writeControlMessage();
-      XSync(dsply,False);
-    } else {
-      doit = drop2D;
-      sprintf(control->message,"%s","Click on the graph to drop");
-      writeControlMessage();
-      XSync(dsply,False);
-    }
-    break;
-    
-  case query2D:
-    doit = query2D;
-    sprintf(control->message,"%s","Click on the graph to query");
-    writeControlMessage();
-    XSync(dsply,False);
-    break;
-    
-    
-  case zoom2Dx:
-    if (zoomXON)
-      strcpy((control->buttonQueue[zoom2Dx]).text ,
-	     "X Off");
-    else
-      strcpy((control->buttonQueue[zoom2Dx]).text , 
-	     "X On ");
-    zoomXON = !zoomXON;
-    
-    drawControlPushButton(zoomXON, zoom2Dx);
-    XSync(dsply,False);
-    break;
-    
-  case zoom2Dy:
-    if (zoomYON) strcpy((control->buttonQueue[zoom2Dy]).text,
-			"Y Off");
-    else strcpy((control->buttonQueue[zoom2Dy]).text ,
-		"Y On ");
-    zoomYON = !zoomYON;
-    drawControlPushButton(zoomYON, zoom2Dy);
-    XSync(dsply,False);
-    break;
-    
-    
-  case translate2Dx:
-    if (transXON) strcpy((control->buttonQueue[translate2Dx]).text,
-			 "X Off");
-    else strcpy( (control->buttonQueue[translate2Dx]).text,
-		 "X On ");
-    transXON = !transXON;
-    drawControlPushButton(transXON, translate2Dx);
-    XSync(dsply,False);
-    break;
-    
-  case translate2Dy:
-    if (transYON) strcpy((control->buttonQueue[translate2Dy]).text,
-			 "Y Off");
-    else strcpy( (control->buttonQueue[translate2Dy]).text,
-		 "Y On");
-    transYON = !transYON;
-    drawControlPushButton(transYON, translate2Dy);
-    XSync(dsply,False);
-    break;
-    
-  case pointsOnOff:
-    if (pointsON) strcpy((control->buttonQueue[pointsOnOff]).text,
-			 "Pts Off");
-    else strcpy( (control->buttonQueue[pointsOnOff]).text,
-		 "Pts On ");
-    pointsON = !pointsON;
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i].pointsOn = pointsON;
-    
-    drawControlPushButton(pointsON, pointsOnOff);
-    drawViewport(Xoption);
-    break;
-    
-  case connectOnOff:
-    if (connectON) strcpy((control->buttonQueue[connectOnOff]).text,
-			  "Lines Off");
-    else strcpy( (control->buttonQueue[connectOnOff]).text,
-		 "Lines On ");
-    connectON = !connectON;
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i].connectOn = connectON;
-    
-    drawControlPushButton(connectON, connectOnOff);
-    drawViewport(Xoption);
-    break;
-    
-  case spline2D:
-    if (splineON) strcpy((control->buttonQueue[spline2D]).text,
-			 "Box Off");
-    else strcpy ((control->buttonQueue[spline2D]).text ,
-		 "Box On ");
-    splineON = !splineON;
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i].splineOn = splineON;
-    
-    drawControlPushButton(splineON, spline2D);
-    drawViewport(Xoption);
-    break;
-    
-  case axesOnOff2D:
-    if (axesON)
-      strcpy ((control->buttonQueue[axesOnOff2D]).text,
-	      "Axes Off");
-    else
-      strcpy ((control->buttonQueue[axesOnOff2D]).text ,
-	      "Axes On ");
-    axesON = !axesON;
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i].axesOn = axesON;
-    
-    drawControlPushButton(axesON, axesOnOff2D);
-    drawViewport(Xoption);
-    break;
-    
-  case unitsOnOff2D:
-    if (unitsON)
-      strcpy( (control->buttonQueue[unitsOnOff2D]).text,
-	      "Units Off");
-    else
-      strcpy ((control->buttonQueue[unitsOnOff2D]).text,
-	      "Units On ");
-    unitsON = !unitsON;
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i].unitsOn = unitsON;
-    
-    drawControlPushButton(unitsON, unitsOnOff2D);
-    drawViewport(Xoption);
-    break;
-    
-  case ps2D:
-    strcpy(control->message,"Creating postscript now ...");
-    writeControlMessage();
-    drawControlPushButton(1, ps2D);
-    
-    if (PSInit(viewport->viewWindow, viewport->titleWindow) == psError) {
-      strcpy(control->message,"Aborted: PSInit error.");
-      writeControlMessage();
-      drawControlPushButton(0, ps2D);
-      XSync(dsply,False);
-      return;	/* make new temp name for new file */
-    }
-    
-    drawViewport(PSoption);	/* draw picture in PS; create ps script file */
-    
-    if (PSCreateFile(viewBorderWidth, 
-		     viewport->viewWindow,
-		     viewport->titleWindow, 
-		     viewport->title) == psError) {
-      strcpy(control->message,"Aborted: PSCreateFile error.");
-      writeControlMessage();
-      drawControlPushButton(0, ps2D);
-      XSync(dsply,False);
-      return;
-    }
-    
-    clearControlMessage();
-    strcpy(control->message,PSfilename);
-    strcat(control->message," in working dir ");
-    writeControlMessage();
-    drawControlPushButton(0, ps2D);
-    XSync(dsply,False);
-    break;
-    
-  case hideControl2D:
-    if (viewport->haveControl) {
-      viewport->haveControl = no;
-      XUnmapWindow(dsply,control->controlWindow);
-      XSync(dsply,False);
-    }
-    break;
-    
-  case reset2D:
-    /* reset view */
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i] = graphStateBackupArray[i];
-    
-    unitsON = no;
-    strcpy( (control->buttonQueue[unitsOnOff2D]).text,s	 = "Units Off");
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i].unitsOn = no;
-    drawControlPushButton(unitsON, unitsOnOff2D);
-    
-    pointsON = yes;
-    strcpy ((control->buttonQueue[pointsOnOff]).text ,"Pts On ");
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i].pointsOn = yes;
-    drawControlPushButton(pointsON, pointsOnOff);
-    
-    axesON = yes;
-    strcpy ((control->buttonQueue[axesOnOff2D]).text,"Axes On ");
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i].axesOn = yes;
-    drawControlPushButton(axesON, axesOnOff2D);
-    
-    connectON = yes;
-    strcpy((control->buttonQueue[connectOnOff]).text,"Lines On ");
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i].connectOn = yes;
-    drawControlPushButton(connectON, connectOnOff);
-    
-    splineON = no;
-    strcpy( (control->buttonQueue[connectOnOff]).text ,"Box Off");
-    for (i=0; i<maxGraphs; i++)
-      if (graphStateArray[i].showing && graphStateArray[i].selected)
-	graphStateArray[i].splineOn = splineON;
-    drawControlPushButton(splineON, spline2D);
-    drawViewport(Xoption);
-    
-    break;
-    
-  case closeAll2D:
-    strcpy(control->message,"       Click again to confirm       ");
-    writeControlMessage();
-    drawControlPushButton(1, closeAll2D);
-    XSync(dsply,False);
-    viewport->closing = yes;
-    break;
-    
-  case clear2D:
-    for (i=0; i<maxGraphs; i++) graphStateArray[i].selected = 1;
-    clickedOnGraphSelect(0,graphSelect1);
-    clickedOnGraphSelect(1,graphSelect2);
-    clickedOnGraphSelect(2,graphSelect3);
-    clickedOnGraphSelect(3,graphSelect4);
-    clickedOnGraphSelect(4,graphSelect5);
-    clickedOnGraphSelect(5,graphSelect6);
-    clickedOnGraphSelect(6,graphSelect7);
-    clickedOnGraphSelect(7,graphSelect8);
-    clickedOnGraphSelect(8,graphSelect9);
-    XSync(dsply,False);
-    break;
-    
-  case graph1:
-  case graph2:
-  case graph3:
-  case graph4:
-  case graph5:
-  case graph6:
-  case graph7:
-  case graph8:
-  case graph9:
-    clickedOnGraph(bKey-graphStart,bKey);
-    XSync(dsply,False);
-    break;
-    
-  case graphSelect1:
-  case graphSelect2:
-  case graphSelect3:
-  case graphSelect4:
-  case graphSelect5:
-  case graphSelect6:
-  case graphSelect7:
-  case graphSelect8:
-  case graphSelect9:
-    clickedOnGraphSelect(bKey-graphSelectStart,bKey);
-    XSync(dsply,False);
-    break;
-    
-  } /* switch (action) */
-}
-
-/*********************** X Event Processing ***************************/
-void 
-processEvents(void)
-{
-  
-  XEvent                  *event,
-    tempEvent;
-  Window                  whichWindow;
-  XWindowAttributes       graphWindowAttrib;
-  buttonStruct            *controlButton;
-  mouseCoord              mouseXY;
-  int                     i,
-    someInt,
-    mouseW4,
-    mouseH4,
-    toggleReady, 
-    gotToggle = no,
-    checkButton = no,
-    firstTime = yes,
-    gotEvent = 0,
-    buttonTablePtr,
-    Xcon,
-    len,
-    externalControl;
-  fd_set                  rd;
-  
-  
-  externalControl=0;
-  Xcon = ConnectionNumber(dsply);
-  
-  
-  if (!(event = (XEvent *)malloc(sizeof(XEvent)))) {
-    fprintf(stderr,"Ran out of memory initializing event processing.\n");
-    exitWithAck(RootWindow(dsply,scrn),Window,-1);
-  }
-  
-  controlButton = control->buttonQueue;
-  
-  while(1) {
-    
-    len=0;
-    while(len<=0) {
-      FD_ZERO(&rd);
-      if (externalControl==0) FD_SET(0, &rd);
-      FD_SET(Xcon,&rd);
-      
-      if (XEventsQueued(dsply, QueuedAlready)) {
-	len=1;
-	break;
-      }
-      if (!followMouse) 
-	len=select(FD_SETSIZE,(void *) &rd,0,0,0); 
-      else 
-	len=1;
-    }
-    if (FD_ISSET(Xcon,&rd)|| 
-	XEventsQueued(dsply, QueuedAfterFlush) || 
-	followMouse) {
-      
-      if (followMouse) {
-	if (XPending(dsply)) 
-	  XNextEvent(dsply,event);
-	gotEvent++;
-      } else {
-	XNextEvent(dsply,event);
-	gotEvent++;
-      }
-      
-      if (gotToggle || !followMouse) 
-	checkButton = no;
-      
-      if (gotEvent) {
-	whichWindow = ((XButtonEvent *)event)->window;
-	firstTime = no;
-	
-	switch(((XEvent *)event)->type) {
-	  
-	case ClientMessage:
-	  if (event->xclient.data.l[0] == wm_delete_window) {
-	    	  goodbye(-1);
-	  }
-	  else {
-	    fprintf(stderr,"Unknown Client Message ...\n");
-	  }
-	  break;
-	case Expose:
-	  if (whichWindow == viewport->titleWindow) {
-	    /* get rid of redundant events */
-	    XCheckWindowEvent(dsply,
-			      viewport->titleWindow,
-			      ExposureMask,
-			      &tempEvent);
-	    writeTitle();
-	    XGetWindowAttributes(dsply,
-				 whichWindow,
-				 &graphWindowAttrib);
-	    XResizeWindow(dsply,
-			  viewport->viewWindow,
-			  graphWindowAttrib.width,
-			  graphWindowAttrib.height-titleHeight);
-	    XSync(dsply,False);
-	    break;
-	  } else if (whichWindow == viewport->viewWindow) {
-	    XCheckWindowEvent(dsply,
-			      viewport->viewWindow,
-			      ExposureMask,
-			      &tempEvent);
-	    XGetWindowAttributes(dsply,
-				 viewport->titleWindow,
-				 &graphWindowAttrib);
-	    XResizeWindow(dsply,
-			  viewport->viewWindow,
-			  graphWindowAttrib.width,
-			  graphWindowAttrib.height-titleHeight);
-	    drawViewport(Xoption);
-	    XMapWindow(dsply,whichWindow);
-	    XSync(dsply,False);
-	    break;
-	  } else {      /* it's gotta be the control panel */
-	    XGetWindowAttributes(dsply,
-				 control->controlWindow,
-				 &graphWindowAttrib);
-	    /* do not allow resizing of control panel */
-	    if ((graphWindowAttrib.width != controlWidth) ||
-		(graphWindowAttrib.height != controlHeight)) {
-	      XResizeWindow(dsply,
-			    control->controlWindow,
-			    controlWidth,
-			    controlHeight);
-	    }
-	    drawControlPanel();
-	    XSync(dsply,False);
-	    break;
-	  }
-	  break;
-	  
-	case MotionNotify:
-	  if (followMouse) {
-	    while (XCheckMaskEvent(dsply,
-				   ButtonMotionMask,
-				   event));
-	    mouseXY = getPotValue(((XButtonEvent *)event)->x,
-				  ((XButtonEvent *)event)->y,
-				  controlButton->xHalf,
-				  controlButton->yHalf);
-	  }
-	  if (controlButton->pot) {
-	    gotToggle = no;
-	    checkButton = yes;
-	  }
-	  break;
-	  
-	case ButtonRelease:
-	  if (followMouse==yes) {
-	    followMouse = no;
-	    toggleReady = yes;
-	    checkButton = no;
-	    drawViewport(Xoption);
-	  } else {
-	    followMouse = no;
-	    toggleReady = yes;
-	    checkButton = no;
-	  }
-	  break;
-	  
-	case LeaveNotify:
-	  /*
-	    We still follow the mouse when we leave the pots.
-	    */
-	  /* 	  
-		  followMouse = no;
-		  toggleReady = yes; 
-		  checkButton = no; 
-		  */
-
-	  break;
-	  
-	case ButtonPress:
-	  if (whichWindow == viewport->viewWindow) {
-	    
-	    /* mouse clicked on viewport */
-
-	    switch (((XButtonEvent *)event)->button) {
-	    case Button3:
-
-	      /* print out (x,y) object-space coordinates in message area */
-
-	      XGetWindowAttributes(dsply,whichWindow,&graphWindowAttrib);
-	      sprintf(viewport->controlPanel->message,
-		      "       >%d<: [%6.2f,%6.2f]       ", 
-		      queriedGraph+1,
-		      projX((((XButtonEvent *)event)->x),
-			    graphWindowAttrib.width,queriedGraph),
-		      projY((((XButtonEvent *)event)->y),
-			    graphWindowAttrib.height,queriedGraph));
-	      writeControlMessage();
-	      XFlush(dsply);
-	      break;
-	    default:
-
-	      /* Find where mouse is on the viewport => where to put the CP */
-
-	      XGetWindowAttributes(dsply,
-				   whichWindow,
-				   &graphWindowAttrib);
-	      mouseW4 = graphWindowAttrib.width/4;
-	      if (((XButtonEvent *)event)->x >
-		  (graphWindowAttrib.width - mouseW4))
-		someInt = 1;
-	      else {
-		mouseH4 = graphWindowAttrib.height/4;
-		if (((XButtonEvent *)event)->y >
-		    (graphWindowAttrib.height - mouseH4)) 
-		  someInt = 2;
-		else if (((XButtonEvent *)event)->x < mouseW4) 
-		  someInt = 3;
-		else if (((XButtonEvent *)event)->y < mouseH4) 
-		  someInt = 4;
-		else someInt = 0;
-	      }
-	      if (viewport->haveControl) {
-		XUnmapWindow(dsply,control->controlWindow);
-	      }
-	      putControlPanelSomewhere(someInt);
-	      XMapWindow(dsply,control->controlWindow);
-	      XSync(dsply,False);
-	      break;
-	    } /* switch on mouse button */
-	  } else if (whichWindow == control->colormapWindow) {
-
-	    /* mouse clicked on colormap */
-
-	    followMouse	= yes;
-	    gotToggle	= no;
-	    checkButton	= yes;
-	    firstTime	= yes;
-	  } else if (whichWindow != control->controlWindow) {
-
-	    /* mouse clicked on control window (not colormap) */
-
-	    if (controlButton->self != whichWindow) {
-	      buttonTablePtr = *((int *)XLookUpAssoc(dsply,table,whichWindow));
-	      controlButton = &(control->buttonQueue[buttonTablePtr]);
-	    }
-	    
-	    if (controlButton->pot) {
-	      /* figure out [x,y] for this button in the range [-1..1,-1..1] */
-	      mouseXY = getPotValue(((XButtonEvent *)event)->x,
-				    ((XButtonEvent *)event)->y,
-				    controlButton->xHalf,
-				    controlButton->yHalf);
-	      followMouse = yes;
-	      gotToggle = no;
-	    } else {
-	      followMouse = no;
-	      gotToggle = yes;  /* auto-repeat on toggle buttons not allowed */
-	      if (toggleReady) {
-		toggleReady = no;
-	      }
-	    }
-	    checkButton = yes;
-	    firstTime   = yes;
-	  }
-	  break;
-	  
-	} /* switch */
-	gotEvent--;
-      } /* if gotEvent */
-      
-      
-      /* Allow repeat polling when mouse button clicked on a potentiometer. */
-
-      if (followMouse && !firstTime && (followMouse++ > mouseWait)) {
-	followMouse = yes;   /* reset for next timing loop */
-	checkButton = yes;
-      }
-      if (checkButton) {
-	if (viewport->closing && (controlButton->buttonKey == closeAll2D)) {
-	  goodbye(-1);
-	} else {
-	  clearControlMessage();
-	  viewport->closing = no;
-	  drawControlPushButton(0, closeAll2D);
-	  if ((doit) &&
-	      ((controlButton->buttonKey < graphStart) &&
-	       (controlButton->buttonKey > (graphSelectStart + maxGraphs))))
-	    doit = 0;
-	  
-	  switch(controlButton->buttonKey) {
-	    
-	  case translate2D:
-	    for (i=0; i<maxGraphs; i++) {
-	      if (graphStateArray[i].showing && graphStateArray[i].selected) {
-		if (transXON) {
-		  graphStateArray[i].centerX -= mouseXY.x * 0.1;
-		  if (graphStateArray[i].centerX > maxDelta)
-		    graphStateArray[i].centerX = maxDelta;
-		  else if (graphStateArray[i].centerX < -maxDelta)
-		    graphStateArray[i].centerX = maxDelta;
-		}
-		if (transYON) {
-		  graphStateArray[i].centerY -= mouseXY.y * 0.1;
-		  if (graphStateArray[i].centerY > maxDelta)
-		    graphStateArray[i].centerY = maxDelta;
-		  else if (graphStateArray[i].centerY < -maxDelta)
-		    graphStateArray[i].centerY = maxDelta;
-		}
-	      }	/* graph showing or selected */
-	    }  /* for graphs */
-	    drawViewport(Xoption);
-	    break;
-	    
-	  case scale2D:
-	    for (i=0; i<maxGraphs; i++) {
-	      if (graphStateArray[i].showing && graphStateArray[i].selected) {
-		if (zoomXON) {
-		  graphStateArray[i].scaleX *= (1 - mouseXY.y * 0.3);
-		  if (graphStateArray[i].scaleX > maxScale)
-		    graphStateArray[i].scaleX = maxScale;
-		  else if (graphStateArray[i].scaleX < minScale)
-		    graphStateArray[i].scaleX = minScale;
-		}
-		if (zoomYON) {
-		  graphStateArray[i].scaleY *= (1 - mouseXY.y * 0.3);
-		  if (graphStateArray[i].scaleY > maxScale)
-		    graphStateArray[i].scaleY = maxScale;
-		  else if (graphStateArray[i].scaleY < minScale)
-		    graphStateArray[i].scaleY = minScale;
-		}
-	      }	/* graph showing or selected */
-	    }  /* for graphs */
-	    drawViewport(Xoption);
-	    break;
-	    
-	  default:
-	    buttonAction(controlButton->buttonKey);
-	  } /* switch on buttonKey */
-	} /* else - not closing */
-      } /* if checkButton */
-    } /* if FD_ISSET(Xcon.... */
-    else if FD_ISSET(0,&rd) {
-      externalControl=spadAction(); /* returns (-1) if broken ,0 if success */
-      if (spadDraw && (externalControl==0)) drawViewport(Xoption);
-    }
-  } /* while */
-} /* processEvents() */
-
-
-
-
-
-
-void 
-clickedOnGraph (int i,int bKey)
-{
-  
-  switch (doit) {
-  case pick2D:
-    currentGraph = queriedGraph = i;
-    doPick(i,bKey);
-    break;
-  case drop2D:
-    currentGraph = queriedGraph = i;
-    doDrop(i,bKey);
-    break;
-  case query2D:
-    queriedGraph = i;
-    makeMessageFromData(queriedGraph);
-    writeControlMessage();
-    /* reset indicator so that we're not in pick/drop/query mode anymore */
-    doit = 0;
-    break;
-  default:
-    graphStateArray[i].showing = !(graphStateArray[i].showing);
-    if (mono) {
-      if (graphStateArray[i].showing) {
-	GSetForeground(graphGC,(float)backgroundColor,Xoption);
-	GSetBackground(graphGC,(float)foregroundColor,Xoption);
-      } else {
-	GSetForeground(graphGC,(float)foregroundColor,Xoption);
-	GSetBackground(graphGC,(float)backgroundColor,Xoption);
-      }
-      GDrawImageString(graphGC,
-		       control->controlWindow,
-		       (control->buttonQueue[bKey]).buttonX +
-		       centerX(graphGC,(control->buttonQueue[bKey]).text,1,
-			       (control->buttonQueue[bKey]).buttonWidth),
-		       (control->buttonQueue[bKey]).buttonY +
-		       centerY(graphGC,(control->buttonQueue[bKey]).buttonHeight),
-		       (control->buttonQueue[bKey]).text,
-		       1,
-		       Xoption);
-    } else {
-      if (graphStateArray[i].showing)
-	GSetForeground(graphGC,(float)graphBarShowingColor,Xoption);
-      else
-	GSetForeground(graphGC,(float)graphBarHiddenColor,Xoption);
-      GDrawString(graphGC,
-		  control->controlWindow,
-		  (control->buttonQueue[bKey]).buttonX +
-		  centerX(graphGC,(control->buttonQueue[bKey]).text,1,
-			  (control->buttonQueue[bKey]).buttonWidth),
-		  (control->buttonQueue[bKey]).buttonY +
-		  centerY(graphGC,(control->buttonQueue[bKey]).buttonHeight),
-		  (control->buttonQueue[bKey]).text,1,Xoption);
-    }
-    drawViewport(Xoption);
-    break;
-  } /* switch doit */
-  
-}
-
-
-
-
-
-
-
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/spadaction2d.c.pamphlet b/src/graph/view2d/spadaction2d.c.pamphlet
deleted file mode 100644
index e9deb42..0000000
--- a/src/graph/view2d/spadaction2d.c.pamphlet
+++ /dev/null
@@ -1,308 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d spadaction2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _SPADACTION2D_C
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include "header2.h"
-
-#include "all-2d.h1"
-#include "util.h1"
-
-
-/******************************
- * int readViewman(info,size) *
- ******************************/
-
-int 
-readViewman(void * info,int size)
-{
-  int mold = 0;
-
-  sprintf(errorStr,"%s %d %s","read of ",size,
-	  " bytes from viewport manager\n");
-  mold = check(read(0,info,size));   
-  return(mold);
-
-}
-
-/********************
- * int spadAction() *
- ********************/
-extern int viewAloned;
-int 
-spadAction(void)
-{
-  int code,viewCommand;
-  float f1,f2;
-  int i1,i2,i3,viewGoAhead;
-  static int ack = 1;
-
-  if (viewAloned==yes) {
-      close(0);
-      return(-1);
-      }
-  readViewman(&viewCommand,intSize);
-
-  switch (viewCommand) {
-
-  case hideControl2D:
-    readViewman(&i1,intSize);
-    if (i1) {                         /* show control panel */
-      if (viewport->haveControl) XUnmapWindow(dsply,control->controlWindow);
-      putControlPanelSomewhere(someInt);
-    } else {    /* turn off control panel */
-      if (viewport->haveControl) {
-        viewport->haveControl = no;
-        XUnmapWindow(dsply,control->controlWindow);
-      }
-    }
-    break;
-
-  case changeTitle:
-    readViewman(&i1,intSize);
-    readViewman(viewport->title,i1);
-    viewport->title[i1] = '\0';
-    writeTitle();
-    writeControlTitle();
-    XFlush(dsply);
-    spadDraw=no;
-    break;
-
-  case writeView:
-    readViewman(&i1,intSize);
-    readViewman(filename,i1);
-    filename[i1] = '\0';
-    sprintf(errorStr,"writing of viewport data");
-    i3 = 0;
-    readViewman(&i2,intSize);
-    while (i2) {
-      i3 = i3 | (1<<i2);
-      readViewman(&i2,intSize);
-    }
-    if (writeViewport(i3) < 0)
-      fprintf(stderr,"          Nothing was written\n");
-    break;
-
-  case closeAll2D:
-    code = check(write(Socket,&ack,intSize));
-    goodbye(-1);
-
-  case ps2D:
-    readViewman(&i1,intSize);
-    buttonAction(viewCommand);
-    break;
-
-  case axesOnOff2D:
-    readViewman(&i1,intSize);
-    i1--;
-    readViewman(&i2,intSize);
-    graphStateArray[i1].axesOn = i2;
-    if (graphStateArray[i1].showing) spadDraw=yes;
-    break;
-
-  case axesColor2D:
-    readViewman(&i1,intSize);
-    i1--;
-    readViewman(&i2,intSize);
-    graphStateArray[i1].axesColor = i2;
-    if (graphStateArray[i1].showing) spadDraw=yes;
-    break;
-
-  case unitsOnOff2D:
-    readViewman(&i1,intSize);
-    i1--;
-    readViewman(&i2,intSize);
-    graphStateArray[i1].unitsOn = i2;
-    if (graphStateArray[i1].showing) spadDraw=yes;
-    break;
-
-  case unitsColor2D:
-    readViewman(&i1,intSize);
-    i1--;
-    readViewman(&i2,intSize);
-    graphStateArray[i1].unitsColor = i2;
-    if (graphStateArray[i1].showing) spadDraw=yes;
-    break;
-
-  case connectOnOff:
-    readViewman(&i1,intSize);
-    i1--;
-    readViewman(&i2,intSize);
-    graphStateArray[i1].connectOn = i2; 
-    if (graphStateArray[i1].showing) spadDraw=yes;
-    break;
-
-  case pointsOnOff:
-    readViewman(&i1,intSize);
-    i1--;
-    readViewman(&i2,intSize);
-    graphStateArray[i1].pointsOn = i2;
-    if (graphStateArray[i1].showing) spadDraw=yes;
-    break;
-
-  case spline2D:
-    readViewman(&i1,intSize);
-    i1--;
-    readViewman(&i2,intSize);
-    graphStateArray[i1].splineOn = i2;
-    if (graphStateArray[i1].showing) spadDraw=yes;
-    break;
-
-  case showing2D:
-    readViewman(&i1,intSize);
-    i1--;
-    readViewman(&i2,intSize);
-    /* simulate a button press to turn display number on/off */
-    graphStateArray[i1].showing = !i2;
-    clickedOnGraph(i1,i1+graphStart);
-    break;
-
-  case scale2D:
-    readViewman(&i1,intSize);
-    i1--;   /* passed index is [1..9] but internal representation is [0..8] */
-    readViewman(&f1,floatSize);
-    readViewman(&f2,floatSize);
-    graphStateArray[i1].scaleX = f1;
-    graphStateArray[i1].scaleY = f2;
-    if (graphStateArray[i1].scaleX > maxScale) 
-      graphStateArray[i1].scaleX = maxScale;
-    else
-      if (graphStateArray[i1].scaleX < minScale) 
-        graphStateArray[i1].scaleX = minScale;
-    if (graphStateArray[i1].scaleY > maxScale) 
-      graphStateArray[i1].scaleY = maxScale;
-    else
-      if (graphStateArray[i1].scaleY < minScale) 
-        graphStateArray[i1].scaleY = minScale;
-    if (graphStateArray[i1].showing) spadDraw=yes;
-    break;   /* scale2D */
-
-
-  case translate2D:
-    readViewman(&i1,intSize);
-    i1--;   /* passed index is [1..9] but internal representation is [0..8] */
-    readViewman(&f1,floatSize);
-    readViewman(&f2,floatSize);
-    graphStateArray[i1].centerX = f1;
-    graphStateArray[i1].centerY = f2;
-    if (graphStateArray[i1].centerX > maxDelta) 
-      graphStateArray[i1].centerX = maxDelta;
-    else if (graphStateArray[i1].centerX < -maxDelta) 
-           graphStateArray[i1].centerX = maxDelta;
-    if (graphStateArray[i1].centerY > maxDelta) 
-      graphStateArray[i1].centerY = maxDelta;
-    else if (graphStateArray[i1].centerY < -maxDelta) 
-           graphStateArray[i1].centerY = maxDelta;
-    if (graphStateArray[i1].showing) spadDraw=yes;
-    break;   /* translate2D */
-
-  case moveViewport:
-    readViewman(&i1,intSize);
-    readViewman(&i2,intSize);
-    XMoveWindow(dsply,viewport->titleWindow,i1,i2);
-    XSync(dsply,False);
-    break;
-
- case resizeViewport:
-    readViewman(&i1,intSize);
-    readViewman(&i2,intSize);
-    XResizeWindow(dsply,viewport->titleWindow,i1,i2+titleHeight); 
-    XResizeWindow(dsply,viewport->viewWindow,i1,i2);
-    spadDraw=yes;
-    break;
-
-  case putGraph:
-    readViewman(&i1,intSize);   	/* key of graph to get */
-    readViewman(&i2,intSize);   	/* slot to drop graph onto 0..8*/
-    readViewman(&viewGoAhead,intSize);
-    if (viewGoAhead < 0) {
-      sprintf(control->message,"%s%d","Couldn't put into graph ",i2+1);
-      writeControlMessage();
-    } else {
-      sprintf(control->message,"%s%d","Dropped onto graph ",i2+1);
-      writeControlMessage();
-      freeGraph(i2);
-      graphArray[i2].key = i1;
-      getGraphFromViewman(i2);
-      /* simulate a button press to turn display number on and select on */
-      /* need !yes since it will be inverted */
-      graphStateArray[i2].selected = no;  
-      graphStateArray[i2].connectOn = yes;  
-      graphStateArray[i2].showing = !(graphStateArray[i2].showing); 
-      clickedOnGraph(i2,i2+graphStart);
-      clickedOnGraphSelect(i2,i2+graphSelectStart);
-    }
-    break;
-
-  case spadPressedAButton:
-    readViewman(&i1,intSize);
-    buttonAction(i1);
-    break;
-
-  default:
-    return(-1);
-  } /* switch */
-
-
-  ack++;
-  code = check(write(Socket,&ack,intSize));
-  return(0);
-
-}
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/stuff2d.c.pamphlet b/src/graph/view2d/stuff2d.c.pamphlet
deleted file mode 100644
index b2ce101..0000000
--- a/src/graph/view2d/stuff2d.c.pamphlet
+++ /dev/null
@@ -1,134 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d stuff2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _STUFF2D_C
-
-#include <unistd.h>
-#include <stdlib.h>
-
-#include "header2.h"
-
-#include "all-2d.h1"
-#include "gfun.h1"
-#include "util.h1"
-
-
-/**************************/
-/***  float absolute(x) ***/
-/**************************/
-
-float 
-absolute(float x)
-{
-  if (x<0.0) {
-    return(-x);
-  } else {
-    return(x);
-  }
-}
-
-
-
-/************************/
-/***  void goodbye()  ***/
-/************************/
-
-void 
-goodbye(int sig)
-{
-  int Command,i;
-
-#ifdef DEBUG
-  fprintf(stderr,"view2d: Tidying up and exiting\n");
-#endif
-  PSClose(); /* free PS file and data structure space */
-
-  XFreeGC(dsply,globalGC1);
-  XFreeGC(dsply,globalGC2);
-  XFreeGC(dsply,globGC);
-  XFreeGC(dsply,trashGC);
-  XFreeGC(dsply,anotherGC);
-  XFreeGC(dsply,controlMessageGC);
-  XFreeGC(dsply,graphGC);
-  XFreeGC(dsply,unitGC);
-
-  XFreeFont(dsply,globalFont);
-  XFreeFont(dsply,buttonFont);
-  XFreeFont(dsply,headerFont);
-  XFreeFont(dsply,titleFont);
-  XFreeFont(dsply,graphFont);
-  XFreeFont(dsply,unitFont);
-
-  XFreeColormap(dsply,colorMap);
-
-  /** send off the current graphs to viewport manager **/
-
-  Command = viewportClosing;
-  check(write(Socket,&Command,intSize));
-
-  for (i=0; i<maxGraphs;i++) {
-    check(write(Socket,&graphArray[i].key,intSize));
-  }
-  close(Socket);
-  XCloseDisplay(dsply);
-  exit(0);
-
-}
-
-
-
-
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/viewport2d.c.pamphlet b/src/graph/view2d/viewport2d.c.pamphlet
deleted file mode 100644
index 5bacedb..0000000
--- a/src/graph/view2d/viewport2d.c.pamphlet
+++ /dev/null
@@ -1,712 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d viewport2d}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _VIEWPORT2D_C
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <math.h>
-#include <X11/X.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <limits.h>
-
-#define NotPoint	(SHRT_MAX)
-#define eqNANQ(x)	(x == NotPoint)
-
-#include "header2.h"
-
-#include "all-2d.h1"
-#include "gfun.h1"
-#include "util.h1"
-#include "xspadfill.h1"
-
-#include "spadbitmap.bitmap"
-#include "spadmask.mask"
-
-#define rint(z) ((int)(z))
-
-Atom    wm_delete_window;               
-
-
-/*************************** 
- ***  void writeTitle()  *** 
- ***************************/
-
-void 
-writeTitle(void)
-{
-
-  int strlength;
-  XWindowAttributes attribInfo;
-  
-  XGetWindowAttributes(dsply,viewport->titleWindow,&attribInfo);
-  if (mono) GSetForeground(anotherGC,(float)foregroundColor,Xoption);
-  else GSetForeground(anotherGC,(float)titleColor,Xoption);
-  XClearWindow(dsply,viewport->titleWindow); /* it's behind the viewWindow */
-  strlength = strlen(viewport->title);
-  GDrawImageString(anotherGC,viewport->titleWindow,
-              centerX(anotherGC,viewport->title,strlength,attribInfo.width),
-              15,viewport->title,strlength,Xoption);
-
-}
-
-
-/********************************/
-/***  void drawTheViewport()  ***/
-/********************************/
-
-void 
-drawTheViewport(int dFlag)
-{
-
-  Window            vw;
-  XWindowAttributes vwInfo;
-  pointListStruct   *aList;
-  pointStruct       *aPoint;
-  XPoint            *anXPoint,*tempXpt;
-  XArc              *anXarc;
-  Vertex            *anX10Point;
-  float             jj,diffX, diffY, tickStart,oneTickUnit;
-  int               i,j,k,ii,halfSize;
-  int               charlength,strlength,halflength,halfheight;
-  int               ptX,ptY,ptX1,ptY1,clipped, clipped1;
-  int               xAxis,yAxis,dummyInt, ascent, descent;
-  int               unitWidth,boxX,boxY,boxW,boxH;
-  char              aunit[20];
-  XCharStruct       overall;
-
-  drawMore = yes;
-  vw = viewport->viewWindow;
-  XGetWindowAttributes(dsply,vw,&vwInfo);
-  aspectR = (float)vwInfo.width/(float)vwInfo.height;
-
-  XTextExtents(unitFont,"o",1,&dummyInt,&ascent,&descent,&overall);
-  halfheight = (ascent + descent) / 2;
-
-  /* Calculate various factors for use in projection. */
-  /* Scale the plot, so that the scaling between the axes remains 
-     constant and fits within the smaller of the two dimensions. */
-
-  charlength = overall.width;
-
-  if (dFlag==Xoption) XClearWindow(dsply,vw);
-
-  for (i=0; i<maxGraphs; i++) {
-
-    if ((graphArray[i].key) && (graphStateArray[i].showing)) {
-
-      /* Scale y coordinate dimensions relative to viewport aspect ratio. */
-     
-      graphArray[i].yNorm = 1.0/((graphArray[i].ymax-graphArray[i].ymin) *
-                                 aspectR);
-      graphArray[i].originY = -graphArray[i].ymin*graphArray[i].yNorm 
-	- 0.5/aspectR;
-      graphArray[i].unitY = graphArray[i].spadUnitY*graphArray[i].yNorm;
-
-      xAxis = rint(vwInfo.width *
-		   ((graphArray[0].originX - graphStateArray[0].centerX) *
-		    graphStateArray[0].scaleX + 0.5));
-      yAxis= rint(vwInfo.height * aspectR *
-		  (1 - ((graphArray[0].originY*aspectR - 
-			 graphStateArray[0].centerY) *
-			graphStateArray[0].scaleY + 0.5*aspectR )));
-
-      if (graphStateArray[i].axesOn) {
-        if (dFlag==Xoption) /* do only for X, ps uses default of black */
-          GSetForeground(globalGC1,
-			 (float)monoColor(graphStateArray[i].axesColor),
-			 dFlag);
-			 
-	if ((yAxis >=0) && (yAxis <= vwInfo.height))
-          GDrawLine(globalGC1,vw,
-		    0,yAxis,
-	  	    vwInfo.width,yAxis,
-		    dFlag);
-	if ((xAxis >=0) && (xAxis <= vwInfo.width))
-	  GDrawLine(globalGC1,vw,
-		    xAxis,0,
-		    xAxis,vwInfo.height,
-		    dFlag);
-      }
-        
-
-      tempXpt   = anXPoint   = xPointsArray[i].xPoint;
-      anX10Point = xPointsArray[i].x10Point;
-      anXarc     = xPointsArray[i].arc;
-
-      for (j=0,aList=graphArray[i].listOfListsOfPoints;
-           (j<graphArray[i].numberOfLists);
-           j++, aList++) {
-
-        for (k=0,aPoint=aList->listOfPoints;
-             (k<aList->numberOfPoints); 
-             k++,aPoint++) {
-
-          if (graphStateArray[i].scaleX > 99.0)
-            graphStateArray[i].scaleX = 99.0;
-          if (graphStateArray[i].scaleY > 99.0)
-            graphStateArray[0].scaleY = 99.0;
-          if (i > 0) {
-            if (isNaN(aPoint->x)) {
-              anXPoint->x = anX10Point->x = NotPoint;
-            }
-	    else {
-              diffX = graphArray[i].xmax-graphArray[i].xmin;
-              anXPoint->x = anX10Point->x = vwInfo.width *
-                ((aPoint->x * diffX/(graphArray[0].xmax-graphArray[0].xmin)
-		  + (graphArray[0].originX - graphArray[i].originX*diffX /
-		     (graphArray[0].xmax-graphArray[0].xmin))
-		  - graphStateArray[0].centerX)*graphStateArray[i].scaleX+0.5);
-            }
-            if (isNaN(aPoint->y)) {
-              anXPoint->y = anX10Point->y = NotPoint;
-	    }
-            else {
-              diffY = graphArray[i].ymax-graphArray[i].ymin;
-              anXPoint->y = anX10Point->y = vwInfo.height * aspectR *
-		(1 - ((aPoint->y * diffY/(graphArray[0].ymax-graphArray[0].ymin)
-		       + (graphArray[0].originY - graphArray[i].originY* diffY/
-			  (graphArray[0].ymax-graphArray[0].ymin))*aspectR
-		       - graphStateArray[0].centerY) *
-		      graphStateArray[i].scaleY + 0.5*aspectR));
-            }
-          } else {
-            if (isNaN(aPoint->x)) {
-              anXPoint->x = anX10Point->x = NotPoint;
-            }
-	    else {
-              anXPoint->x = anX10Point->x = vwInfo.width *
-                ((aPoint->x - graphStateArray[i].centerX) * 
-	         graphStateArray[i].scaleX + 0.5);
-            }
-            if (isNaN(aPoint->y)) {
-              anXPoint->y = anX10Point->y = NotPoint;
-	    }
-	    else {
-              anXPoint->y = anX10Point->y = vwInfo.height * aspectR *
-                (1 - ((aPoint->y - graphStateArray[i].centerY) * 
-		      graphStateArray[i].scaleY + 0.5*aspectR));
-            }
-          }
-
-          /* first or last point */ 
-          if (k == 0 || k == (aList->numberOfPoints - 1)) {
-	    anX10Point->flags = 0;
-          } else {
-            anX10Point->flags = VertexCurved;
-          }
-
-          anXPoint++;
-          anX10Point++;
-          anXarc++;
-        }      /* for aPoint in pointList */
-          
-	aPoint--; /* make it legal, the last one*/
-        if (graphStateArray[i].connectOn || graphStateArray[i].pointsOn) {
-          halfSize = aList->pointSize/2;
-          ptX = tempXpt->x;
-          ptY = tempXpt->y;
-          clipped = ptX > vwInfo.x && ptX < vwInfo.width &&
-	    ptY > 0 && ptY < vwInfo.height;
-          if (graphStateArray[i].pointsOn) {
-            if (dFlag==Xoption) {
-              if (mono) {
-                GSetForeground(globalGC1,
-			       (float)monoColor((int)(aPoint->hue)),
-			       dFlag);
-              } else {
-                GSetForeground(globalGC1,
-			       (float)XSolidColor((int)(aPoint->hue),
-						  (int)(aPoint->shade)),
-			       dFlag);
-              }
-            }
-            if (clipped && !eqNANQ(ptX) && !eqNANQ(ptY))
-              GFillArc(globalGC1,vw,ptX-halfSize,
-		       ptY-halfSize,aList->pointSize,aList->pointSize,
-		       0,360*64, dFlag);
-                      
-          } /* if points on */
-          for (ii=0, aPoint=aList->listOfPoints; 
-	       ii<aList->numberOfPoints;
-	       ++ii, ++tempXpt, ++aPoint) {
-            ptX1 = tempXpt->x;
-            ptY1 = tempXpt->y;
-            clipped1 = ptX1 > vwInfo.x && ptX1 < vwInfo.width &&
-	      ptY1 > 0 && ptY1 < vwInfo.height;
-            if (graphStateArray[i].connectOn) {
-              if (dFlag==Xoption) {
-                if (mono) {
-                  GSetForeground(globalGC1,
-			 (float)monoColor((int)(aList->lineColor-1)/5),
-			 dFlag);
-                } else {
-                  GSetForeground(globalGC1,
-			 (float)XSolidColor((int)(aList->lineColor-1)/5,
-					    (int)((aList->lineColor-1)%5)/2),
-				 dFlag);
-                }
-	      } /* if X */
-              if ((clipped || clipped1) && !eqNANQ(ptX) && !eqNANQ(ptY) &&
-		  !eqNANQ(ptX1) && !eqNANQ(ptY1))
-                GDrawLine(globalGC1,vw,
-			  ptX,ptY,ptX1,ptY1,
-			  dFlag);
-            } /* if lines on */
-            if (graphStateArray[i].pointsOn) {
-              if (dFlag==Xoption) {
-                if (mono) {
-                  GSetForeground(globalGC1,
-				 (float)monoColor((int)(aPoint->hue)),
-				 dFlag);
-                } else {
-                  GSetForeground(globalGC1,
-				 (float)XSolidColor((int)(aPoint->hue),
-						    (int)(aPoint->shade)),
-				 dFlag);
-                }
-              }
-              if (clipped1 && !eqNANQ(ptX1) && !eqNANQ(ptY1))
-                GFillArc(globalGC1,vw,ptX1-halfSize,
-			 ptY1-halfSize,aList->pointSize,aList->pointSize,
-			 0,360*64, dFlag);
-            } /* if points on */
-            ptX = ptX1;  ptY = ptY1;  clipped = clipped1;
-          } /* for all points */
-	} /* if points or lines on */
-
-        if (graphStateArray[i].splineOn) {   /* need spline color as well */
-          if (dFlag==Xoption)  /* do only for X, ps uses default of black */
-	    GSetForeground(globalGC1,
-			   (float)monoColor(148),
-			   dFlag);
-          boxX = vwInfo.width *
-	    ((-0.5 - graphStateArray[i].centerX)*
-	     graphStateArray[i].scaleX + 0.5);
-          boxY = vwInfo.height * aspectR *
-	    (1 - ((0.5 - graphStateArray[i].centerY)*
-		  graphStateArray[i].scaleY + 0.5*aspectR));
-
-          boxW = graphStateArray[i].scaleX * vwInfo.width + 1;
-          boxH = graphStateArray[i].scaleY * vwInfo.height * aspectR + 1;
-
-          GDrawRectangle(globalGC1,vw,
-			 boxX,boxY,boxW,boxH,
-			 dFlag);
-        }
-
-        tempXpt = anXPoint;
-      }     /* for a aList in listofListsOfPoints */
-      if (graphStateArray[i].unitsOn) {
-	/* do only for X, ps uses default of black */
-        if (dFlag==Xoption)
-          GSetForeground(unitGC,
-			 (float)monoColor(graphStateArray[i].unitsColor),
-			 dFlag);
- 
-
-        tickStart   = calcUnitX(0);
-        oneTickUnit = calcUnitX(1) - tickStart;
-
-        /* ticks along the positive X axis */
-
-        unitWidth = 5*overall.width;            /* limit on acceptable separation : 5 chars */
-        k = floor(unitWidth/oneTickUnit) +1;    /* get skipping integer */
-        for (ii=0, jj = tickStart;
-	     jj < vwInfo.width;
-	     ii=ii+k,jj =jj+k* oneTickUnit) {
-	  if (jj >= 0) {
-
-	    /* ticks stuck to viewport*/
-	    GDrawLine(unitGC,vw,
-		      (int)rint(jj),vwInfo.height-8,(int)rint(jj),vwInfo.height-4,
-		      dFlag);
-
-	    sprintf(aunit,"%0.3g",ii*graphArray[0].spadUnitX);
-	    strlength=strlen(aunit);
-	    halflength=XTextWidth(unitFont,aunit,strlength)/2;
-
-	    if (dFlag == Xoption) GDrawImageString(unitGC,
-					     vw,
-					     (int)rint(jj) - halflength,
-					     vwInfo.height -8 -descent, 
-					     aunit,
-					     strlength, 
-					     dFlag);
-	    if (dFlag == PSoption) GDrawImageString(unitGC,
-					      vw,
-					      (int)rint(jj) -(strlength*3) ,
-					      vwInfo.height -14, 
-					      aunit,
-					      strlength, 
-					      dFlag); 
-	    /* these are "eyeball" parameters for the given PS font */
-              
-	  }
-            
-	}
-        /* ticks along the negative X axis */
-        for (ii=-k,jj=tickStart - k*oneTickUnit;
-	     jj > 0;
-	     ii=ii-k,jj = jj-k*oneTickUnit) {
-	  if (jj <= vwInfo.width) {
-
-	    /* ticks stuck to viewport*/
-	    GDrawLine(unitGC,vw,
-		      (int)rint(jj),vwInfo.height-8,(int)rint(jj),vwInfo.height-4,
-		      dFlag);
-
-	    sprintf(aunit,"%0.3g",ii*graphArray[0].spadUnitX);
-	    strlength=strlen(aunit);
-	    halflength=XTextWidth(unitFont,aunit,strlength)/2;
-
-	    if (dFlag == Xoption) GDrawImageString(unitGC,
-					     vw,
-					     (int)rint(jj) - halflength,
-					     vwInfo.height -8 -descent, 
-					     aunit,
-					     strlength, 
-					     dFlag);
-	    if (dFlag == PSoption) GDrawImageString(unitGC,
-					      vw,
-					      (int)rint(jj) -(strlength*3) ,
-					      vwInfo.height -14, 
-					      aunit,
-					      strlength, 
-					      dFlag);
-	    /* these are "eyeball" parameters for the given PS font */
-	  }
-	}
-      
-        tickStart = calcUnitY(0);
-        oneTickUnit = calcUnitY(1) - tickStart;
-     
-        /* ticks along the positive Y axis */
-        unitWidth = 2*(ascent+descent);                 /* limit of acceptable separation */
-        k = floor(unitWidth/fabs(oneTickUnit)) +1;  /* get skipping integer */
-        for (ii=0,jj = tickStart;
-	     jj > 0;
-	     ii=ii+k,jj =jj+k*oneTickUnit ) {
-	  if  (jj < vwInfo.height) {
- 
-	    /* ticks stuck to viewport*/
-	    /* on the right */
-	    /*
-              GDrawLine(unitGC,vw,
-	      vwInfo.width-6,(int)rint(jj),
-	      vwInfo.width-2,(int)rint(jj),dFlag);
-	      */
-	    /* on the left */
-	    GDrawLine(unitGC,vw,
-		      2,(int)rint(jj),
-		      6,(int)rint(jj),
-		      dFlag);
-	    sprintf(aunit,"%0.3g",ii*graphArray[0].spadUnitY);
-	    strlength=strlen(aunit);
-	    XTextExtents(unitFont,aunit,strlength,&dummyInt,
-			 &ascent,&descent,&overall);
-	    halflength=overall.width;           /* let's reuse that variable */
-
-	    if(dFlag == Xoption){
-              /* on the right */
-	      /*
-		GDrawImageString(unitGC, vw,
-		vwInfo.width-halflength -6-descent,
-		(int)rint(jj)+ascent/2 , 
-		aunit, strlength, dFlag);
-		*/
-              /* on the left */
-	      GDrawImageString(unitGC, vw,
-			       8 + charlength/2,
-			       (int)rint(jj)+ascent/2 , 
-			       aunit, strlength, dFlag);
-	    }
-	    if(dFlag == PSoption){
-              /* on the right */
-	      /*
-		GDrawImageString(unitGC, vw,
-		vwInfo.width - 6 - (strlength*6),
-		(int)rint(jj)+4, 
-		aunit, strlength, dFlag);
-		*/
-              /* on the left */
-	      GDrawImageString(unitGC, vw,
-			       8,(int)rint(jj)+4, 
-			       aunit, strlength, dFlag);
-	      /* these are "eyeball" parameters for the given PS font */
-	    }
-	  }
-	}
-
-        /* ticks along the negative Y axis */
-    
-        for (ii=(-k),jj = tickStart - k*oneTickUnit;
-	     jj < vwInfo.height;
-	     ii=ii-k,jj =jj-k*oneTickUnit) {
-	  if (jj > 0) {
-
-	    /* ticks stuck to viewport*/
-	    /* on the right */
-	    /*
-              GDrawLine(unitGC,vw,
-	      vwInfo.width-6,(int)rint(jj),
-	      vwInfo.width-2,(int)rint(jj),
-	      dFlag);
-	      */
-	    /* on the left */
-	    GDrawLine(unitGC,vw,
-		      2,(int)rint(jj),
-		      6,(int)rint(jj),
-		      dFlag);
-
-	    sprintf(aunit,"%0.3g",ii*graphArray[0].spadUnitY);
-	    strlength=strlen(aunit);
-	    XTextExtents(unitFont,aunit,strlength,&dummyInt,
-			 &ascent,&descent,&overall);
-	    halflength=overall.width;           /* let's reuse that variable */
-
-	    if(dFlag == Xoption){
-              /* on the right */
-	      /*
-		GDrawImageString(unitGC, vw,
-		vwInfo.width-halflength -6-descent,
-		(int)rint(jj)+ascent/2 , 
-		aunit, strlength, dFlag);
-		*/
-              /* on the left */
-	      GDrawImageString(unitGC, vw,
-			       8 + charlength/2,
-			       (int)rint(jj)+ascent/2 , 
-			       aunit, strlength, dFlag);
-	    }
-	    if(dFlag == PSoption){
-              /* on the right */
-	      /*
-		GDrawImageString(unitGC, vw,
-		vwInfo.width -6 -(strlength*6),
-		(int)rint(jj)+4 , 
-		aunit, strlength, dFlag);
-		*/
-              /* on the left */
-	      GDrawImageString(unitGC, vw,
-			       8,
-			       (int)rint(jj)+4 , 
-			       aunit, strlength, dFlag);
-	      /* these are "eyeball" parameters for the given PS font */
-	    }
-	  }
-	}
-      
-      }  /* if unitsOn */
-    }    /* if graph i exists and is showing */
-  }   /* for i in graphs */
-
-
-  if (dFlag==Xoption) {
-    if (!followMouse) {
-      /* no need to do this while autorepeating */
-      makeMessageFromData(queriedGraph);
-      writeControlMessage();  
-    }
-    XFlush(dsply);
-  }
-
-}           /* drawViewport() */
-
-
-
-/************************************
- ***  viewPoints *makeViewport()  ***
- ************************************/
-
-viewPoints *
-makeViewport(char *title,int vX,int vY,int vW,int vH,int showCP)
-{
-  Pixmap               spadbits,spadmask;
-  XSetWindowAttributes viewAttrib;
-  XSizeHints           titleSizeHints,viewSizeHints;
-  Window               viewTitleWindow,viewGraphWindow;
-  XColor               foreColor, backColor;
-
-#ifdef DEBUG
-  fprintf(stderr,"view2d: About to make a viewport\n");
-#endif
-
-  /* Create a viewport */
-  if (!(viewport = (viewPoints *)malloc(sizeof(viewPoints)))) {
-    fprintf(stderr,"Ran out of memory (malloc) trying to create a viewport.\n");
-    sleep(5);
-    exitWithAck(RootWindow(dsply,scrn),Window,-1);
-  }
-
-#ifdef DEBUG
-  fprintf(stderr,"view2d: Made a viewport\n");
-#endif
-
-  strcpy(viewport->title,title); 
-
-  viewport->closing      = no;
-  viewport->allowDraw    = yes;   /* just draw axes the first time around */
-  viewport->axesOn   = axesON;
-  viewport->unitsOn  = unitsON;
-  viewport->pointsOn = pointsON;
-  viewport->linesOn  = connectON;
-  viewport->splineOn = splineON;
-
-  /**** Make the windows for the viewport ****/
-  spadbits = XCreateBitmapFromData(dsply,rtWindow,
-                                   spadBitmap_bits,
-                                   spadBitmap_width,spadBitmap_height);
-  spadmask = XCreateBitmapFromData(dsply,rtWindow,
-                                   spadMask_bits,
-                                   spadMask_width,spadMask_height);
-  viewAttrib.background_pixel = backgroundColor;
-  viewAttrib.border_pixel = foregroundColor;
-  viewAttrib.override_redirect = overrideManager; 
-  viewAttrib.colormap = colorMap;
-
-  foreColor.pixel = foregroundColor;
-  backColor.pixel = backgroundColor;
-  XQueryColor(dsply,colorMap,&foreColor);
-  XQueryColor(dsply,colorMap,&backColor);
-  viewAttrib.cursor = XCreatePixmapCursor(dsply,spadbits,spadmask,
-		  &foreColor,&backColor,spadBitmap_x_hot,spadBitmap_y_hot);
-
-  viewAttrib.event_mask = titleMASK;
-  if (vW) {
-    titleSizeHints.flags  = PPosition | PSize;
-    titleSizeHints.x      = vX;
-    titleSizeHints.y      = vY;
-    titleSizeHints.width  = vW;
-    titleSizeHints.height = vH;
-  } else {
-    titleSizeHints.flags  = PSize;
-    titleSizeHints.width  = viewWidth;
-    titleSizeHints.height = viewHeight;
-  }
-
-  viewTitleWindow = XCreateWindow(dsply,rtWindow,vX,vY,vW,vH,
-				  viewBorderWidth,
-				  CopyFromParent,InputOutput,CopyFromParent,
-				  viewportTitleCreateMASK,&viewAttrib);
-
-  wm_delete_window = XInternAtom(dsply, "WM_DELETE_WINDOW", False);
-  (void) XSetWMProtocols(dsply, viewTitleWindow, &wm_delete_window, 1);
-
-  XSetNormalHints(dsply,viewTitleWindow,&titleSizeHints); 
-  XSetStandardProperties(dsply,viewTitleWindow,"AXIOM 2D",viewport->title,
-			   None,NULL,0,&titleSizeHints);
-
-  viewport->titleWindow = viewTitleWindow;
-  viewAttrib.event_mask = viewportMASK; 
-  viewSizeHints.flags   = PPosition | PSize;
-  viewSizeHints.x       = -viewBorderWidth;
-  viewSizeHints.y       = titleHeight;
-  viewSizeHints.width   = titleSizeHints.width;
-  viewSizeHints.height  = titleSizeHints.height - 
-                          (titleHeight + appendixHeight);
-  viewGraphWindow = XCreateWindow(dsply,viewTitleWindow,
-				  viewSizeHints.x,viewSizeHints.y,
-				  viewSizeHints.width,viewSizeHints.height,
-				  viewBorderWidth,
-				  CopyFromParent,InputOutput,CopyFromParent,
-				  viewportCreateMASK,&viewAttrib);
-  XSetNormalHints(dsply,viewGraphWindow,&viewSizeHints);
-  XSetStandardProperties(dsply,viewGraphWindow,"2D Viewport","2D Viewport",
-			 None,NULL,0,&viewSizeHints); 
-
-  viewport->viewWindow = viewGraphWindow;
-
-  /*Make the control panel for the viewport. */
-  viewport->controlPanel = makeControlPanel();        
-  if ((viewport->haveControl = showCP)) putControlPanelSomewhere(anywhere);
-
-  XSync(dsply,False); 
-  return(viewport);
-
-}
-
-
-/*********************************************
- *****  viewPoints *makeView2D(viewdata)  ****
- *********************************************/
-
-
-viewPoints *
-makeView2D(view2DStruct *viewdata)
-{
-  viewPoints *vPoints;  
-
-  vPoints = makeViewport(viewdata->title, viewdata->vX,viewdata->vY,
-                         viewdata->vW,viewdata->vH,viewdata->showCP);
-
-  vPoints->allowDraw = yes;   /* draw everything from now on */
-
-  if (viewdata->showCP) clearControlMessage();
-
-  writeTitle(); 
-
-  XMapWindow(dsply,vPoints->viewWindow);
-  XMapWindow(dsply,vPoints->titleWindow);
-  XSync(dsply,0);
-
-  drawViewport(Xoption);      /* draw viewport with X routines (as opposed to PS) */
-  return(vPoints);
-
-}    /* makeView2D */
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/write2d.c.pamphlet b/src/graph/view2d/write2d.c.pamphlet
deleted file mode 100644
index 4e089c2..0000000
--- a/src/graph/view2d/write2d.c.pamphlet
+++ /dev/null
@@ -1,219 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d write2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _WRITE2D_C
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "header2.h"
-#include "write.h"
-
-#include "all-2d.h1"
-#include "pixmap.h1"
-#include "gfun.h1"
-
-
-#define numBits (8*sizeof(int))
-
-int 
-writeViewport(int thingsToWrite)
-{
-
-  FILE              *viewDataFile;
-  char              viewDirName[80],
-                    viewBitmapFilename[80],viewDataFilename[80],command[80];
-  int               i,j,k,code,ii;
-  pointListStruct   *aList;
-  pointStruct       *aPoint;
-  XWindowAttributes vwInfo;
-
-  XGetWindowAttributes(dsply,viewport->titleWindow,&vwInfo);
-  sprintf(viewDirName,"%s%s",filename,".view"); 
-  sprintf(command,"%s%s%s","rm -r ",viewDirName," >  /dev/null 2>&1");
-  code = system(command);
-  sprintf(command,"%s%s%s","mkdir ",viewDirName," > /dev/null 2>&1");
-  if (system(command)) {
-    fprintf(stderr,"   Error: Cannot create %s\n",viewDirName);
-    return(-1);
-  } else {
-            /*** Create the data file ***/
-    sprintf(viewDataFilename,"%s%s",viewDirName,"/data");
-    if ((viewDataFile = fopen(viewDataFilename,"w")) == NULL) {
-      fprintf(stderr,"   Error: Cannot create %s\n",viewDataFilename);
-      perror("fopen");
-      return(-1);
-    } else {
-              /*** write out the view2DStruct stuff ***/
-      fprintf(viewDataFile,"%d\n",view2DType);
-      fprintf(viewDataFile,"%s\n",viewport->title);
-      fprintf(viewDataFile,"%d %d %d %d\n",vwInfo.x,vwInfo.y,
-	      vwInfo.width,vwInfo.height);
-      for (i=0; i<maxGraphs; i++) {
-        fprintf(viewDataFile,"%d\n",graphArray[i].key);
-        fprintf(viewDataFile,"%g %g\n",
-                graphStateArray[i].scaleX,graphStateArray[i].scaleY);
-        fprintf(viewDataFile,"%g %g\n",
-                graphStateArray[i].deltaX,graphStateArray[i].deltaY);
-        fprintf(viewDataFile,"%g %g\n",
-                graphStateArray[i].centerX,graphStateArray[i].centerY);
-        fprintf(viewDataFile,"%d %d %d %d %d %d %d\n",
-                graphStateArray[i].pointsOn,graphStateArray[i].connectOn,
-                graphStateArray[i].splineOn,
-                graphStateArray[i].axesOn, graphStateArray[i].axesColor,
-                graphStateArray[i].unitsOn, graphStateArray[i].unitsColor);
-        fprintf(viewDataFile,"%d %d\n",
-                graphStateArray[i].showing,graphStateArray[i].selected);
-      }
-      fclose(viewDataFile);
-      for (i=0; i<maxGraphs; i++) {
-        if (graphArray[i].key) {
-          sprintf(viewDataFilename,"%s%s%d",viewDirName,"/graph",i);
-          if ((viewDataFile = fopen(viewDataFilename,"w")) == NULL) {
-            fprintf(stderr,"   Error: Cannot create %s\n",viewDataFilename);
-            perror("fopen");
-            return(-1);
-          } else {
-            fprintf(viewDataFile,"%g %g %g %g\n",
-                    graphArray[i].xmin,graphArray[i].ymin,
-		    graphArray[i].xmax,graphArray[i].ymax);
-            fprintf(viewDataFile,"%g %g\n",
-                    graphArray[i].xNorm,graphArray[i].yNorm);
-            fprintf(viewDataFile,"%g %g\n",
-                    graphArray[i].originX,graphArray[i].originY);
-            fprintf(viewDataFile,"%g %g\n",
-                    graphArray[i].spadUnitX,graphArray[i].spadUnitY);
-            fprintf(viewDataFile,"%g %g\n",
-                    graphArray[i].unitX,graphArray[i].unitY);
-            fprintf(viewDataFile,"%d\n",graphArray[i].numberOfLists);
-            for (j=0,aList=graphArray[i].listOfListsOfPoints;
-                 j<graphArray[i].numberOfLists;
-                 j++, aList++) {
-              fprintf(viewDataFile,"%d\n",aList->numberOfPoints);
-              fprintf(viewDataFile,"%d %d %d\n",
-                      aList->pointColor,aList->lineColor,aList->pointSize);
-              for (k=0,aPoint=aList->listOfPoints;
-                   k<aList->numberOfPoints; 
-                   k++,aPoint++)
-                fprintf(viewDataFile,"%g %g %g %g\n",
-                        aPoint->x,aPoint->y,aPoint->hue,aPoint->shade);
-            } /* for j, aList */            
-            fclose(viewDataFile);
-          } /* else graph i */
-        } /* if */
-      } /* for */
-    } /* else */
-
-           /* write out special files */
-    for (ii=1; ii<numBits; ii++) {   /* write.h is one-based */
-      if (thingsToWrite & (1<<ii)) {
-        switch (ii) {
-        case Pixmap:
-            /*** Create the pixmap (bitmaps need leaf name) ***/
-          sprintf(viewBitmapFilename,"%s%s",viewDirName,"/image.xpm");
-          XGetWindowAttributes(dsply,viewport->viewWindow,&vwInfo);
-          write_pixmap_file(dsply,scrn,viewBitmapFilename,
-				   viewport->titleWindow,0,0,vwInfo.width,
-				   vwInfo.height+titleHeight);
-          break;
-        case Bitmap:
-            /*** Create the bitmap (bitmaps need leaf name) ***/
-          sprintf(viewBitmapFilename,"%s%s",viewDirName,"/image.bm");
-          XGetWindowAttributes(dsply,viewport->viewWindow,&vwInfo);
-          code = XWriteBitmapFile(dsply,viewBitmapFilename,
-				  viewport->titleWindow,vwInfo.width,
-				  vwInfo.height+vwInfo.border_width+20,-1,-1);
-          break;
-        case Image:
-            /*** Create the pixmap (bitmaps need leaf name) ***/
-          sprintf(viewBitmapFilename,"%s%s",viewDirName,"/image.xpm");
-          XResizeWindow(dsply,viewport->titleWindow,300,300+titleHeight);
-          XResizeWindow(dsply,viewport->viewWindow,300,300);
-          XGetWindowAttributes(dsply,viewport->viewWindow,&vwInfo);
-          drawViewport(Xoption);
-          writeTitle();
-          write_pixmap_file(dsply,scrn,viewBitmapFilename,
-				   viewport->titleWindow,0,0,vwInfo.width,
-				   vwInfo.height+titleHeight);
-            /*** Create the bitmap (bitmaps need leaf name) ***/
-          mono = 1;
-          drawViewport(Xoption);
-          writeTitle();
-          sprintf(viewBitmapFilename,"%s%s%s",viewDirName,"/","image.bm");
-          code = XWriteBitmapFile(dsply,viewBitmapFilename,
-				  viewport->titleWindow,vwInfo.width,
-				  vwInfo.height+vwInfo.border_width+20,-1,-1);
-          mono = 0;
-          break;
-
-        case Postscript:
-            /*** Create postscript output for viewport (in axiom2d.ps) ***/
-         sprintf(PSfilename,"%s%s",viewDirName,"/axiom2d.ps");
-         if (PSInit(viewport->viewWindow,viewport->titleWindow) == psError)
-	   return (-1);
-         drawViewport(PSoption);  /* write new script file in /tmp */
-         if (PSCreateFile(viewBorderWidth,viewport->viewWindow,
-			  viewport->titleWindow, viewport->title) == psError)
-           return(-1);  	/* concat script & proc into axiom2d.ps */
-          break;
-
-        } /* switch on ii */
-      }  /* if thingsToWrite >> ii */
-    }  /* for ii */
-
-    return(0);
-  }    /* else create directory okay */
-
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}

\start
Date: Mon, 2 Jun 2008 09:29:19 -0500
From: Tim Daly
To: list
Subject: APL, J, and Axiom documentation

I have been looking at the question of documenting Axiom's algorithms.

Beyond the english description I've been pondering the use of J (an
ascii version of APL). J/APL, for those who don't know, is an
executable mathematical programming language. Ken Iverson created it
as a language for thought. <http://www.jsoftware.com>

A J description of an algorithm has the appeal that it can be very
precise and compact. It can also be executed to compare the results
with the algorithm. Re-notating the algorithm in J will certain
uncover some existing bugs and/or optimizations in the existing work.

On the down side, J is "its own subculture", meaning that even less
people speak J than speak lisp. In J, the BesselJ function is:

 BesselJ=: 1 : '(i.0) H. (1+m.)@(_0.25&*)@*: * ^&m.@-: % (!m.)"_'
 
where 
 J0=: 0 BesselJ
 j1=: 1 BesselJ

Has anyone here used the language, besides myself?

\start
Date: Mon, 02 Jun 2008 07:38:48 -0700
From: Ed Borasky
To: Tim Daly
Subject: Re: APL, J, and Axiom documentation recognized.

Tim Daly wrote:
> I have been looking at the question of documenting Axiom's algorithms.
> 
> Beyond the english description I've been pondering the use of J (an
> ascii version of APL). J/APL, for those who don't know, is an
> executable mathematical programming language. Ken Iverson created it
> as a language for thought. <http://www.jsoftware.com>
> 
> A J description of an algorithm has the appeal that it can be very
> precise and compact. It can also be executed to compare the results
> with the algorithm. Re-notating the algorithm in J will certain
> uncover some existing bugs and/or optimizations in the existing work.
> 
> On the down side, J is "its own subculture", meaning that even less
> people speak J than speak lisp. In J, the BesselJ function is:
> 
>  BesselJ=: 1 : '(i.0) H. (1+m.)@(_0.25&*)@*: * ^&m.@-: % (!m.)"_'
>  
> where 
>  J0=: 0 BesselJ
>  j1=: 1 BesselJ
> 
> Has anyone here used the language, besides myself?

Actually, I think the "open-source" dialect of APL is called "A-Plus",
not J. I don't think there's an open-source J implementation.

I've never used any APL -- it was always on my list of things to do but
I never had an opportunity to get paid for it, so other things got
learned. :)

\start
Date: Tue, 3 Jun 2008 01:36:51 +0200 (CEST)
From: Waldek Hebisch
To: list
Subject: Re: [fricas-devel] makeAxExportForm

Ralf Hemmecke wrote:
> 
> src/interp/ax.boot
> 
> contains the function
> 
> makeAxExportForm(filename, constructors) ==
<snip>
> 
> PS: Why is there a parameter "filename" if it is not used in the 
> function? (Well I don't understand boot, so that may be a stupid question.)
> 

Above makeAxExportForm is makeAxFile which is almost identical
to makeAxExportForm but prints the result to a file (named by
the filename argument).

\start
Date: Tue, 3 Jun 2008 14:23:37 -0700
From: Scott Morrison
To: Tim Daly
Subject: Re: APL, J, and Axiom documentation

Hi Tim,

This seems like a bizarre idea to me.  Why would you document one program
with another program?  Who's to say the J program is correct?  This would
mean:

1) You have to code everything twice, with the second implementation in a
very obscure language.
2) You need to verify that both implementations are correct.  How can we
ever guarantee that?
3) You need to learn an obscure language which is understood by almost
nobody.

If I wanted to learn something about the implementation of the BesselJ
function, seeing this would mean nothing to me.

> BesselJ=: 1 : '(i.0) H. (1+m.)@(_0.25&*)@*: * ^&m.@-: % (!m.)"_'
>
>where
> J0=: 0 BesselJ
> j1=: 1 BesselJ

Since the documentation for the program contains another program, doesn't
that program need to be documented too?  Also, using J baffles me.  APL is
known for being very concise, but nearly unreadable.  Why would that help
documentation?

I must admit, I just don't get this idea.  Can you enlighten me?

\start
Date: Tue, 3 Jun 2008 19:35:20 -0400
From: Tim Daly
To: Scott Morrison
Subject: Re: APL, J, and Axiom documentation

>This seems like a bizarre idea to me.  Why would you document one program
>with another program?  Who's to say the J program is correct?  This would
>mean:

far be it from me to propose a bizarre idea :-)

>
>1) You have to code everything twice, with the second implementation in a
>very obscure language.

Yes, it does involve coding everything twice, in wildly different
languages. Consider it a feature.

>2) You need to verify that both implementations are correct.  How can we
>ever guarantee that?

Since J/APL is executable the verification would involve testing the
results of one program against the results of the other.

>3) You need to learn an obscure language which is understood by almost
>nobody.

Hopefully, you're not referring to Spad :-). Yes, it does involve
learning a second language. APL is a language focused on thinking
in a very math-like notation rather than programming linearly.


>If I wanted to learn something about the implementation of the BesselJ
>function, seeing this would mean nothing to me.
>
>> BesselJ=: 1 : '(i.0) H. (1+m.)@(_0.25&*)@*: * ^&m.@-: % (!m.)"_'
>>
>>where
>> J0=: 0 BesselJ
>> j1=: 1 BesselJ

Sorry, I'll try to be a bit more concise next time :-)


>Since the documentation for the program contains another program, doesn't
>that program need to be documented too?  Also, using J baffles me.  APL is
>known for being very concise, but nearly unreadable.  Why would that help
>documentation?

Actually the J program would be a small part of the planned
documentation.  If you look in src/algebra/special.spad.pamphlet you
can see the recent implementation of the exponential integral and the
associated documentation.

>
>I must admit, I just don't get this idea.  Can you enlighten me?

J/APL has advantage of forcing you to think about the solution to
a problem in a completely orthogonal way to the usual programming
paradigms. In my experience the "re-expression" of an idea in a
second, very different form dramatically highlights the design
decisions made in the first form. Since the original authors are
no longer available we need to tease out the design decisions.

Unfortunately I'm unaware of any category or strongly typed work in J
so I don't think the idea carries much weight beyond the numerics. I
added a piecewise Gamma function to Axiom in February and have been
looking at the special functions since then. J seems to be a good fit
in this area, hence the original remark.

\start
Date: Tue, 3 Jun 2008 22:52:52 -0400
From: Ted Kosan
To: Tim Daly
Subject: Re: APL, J, and Axiom documentation

Tim wrote:

> I have been looking at the question of documenting Axiom's algorithms.
>
> Beyond the english description I've been pondering the use of J (an
> ascii version of APL).

I have been studying Sun's Fortress mathematics-oriented programming
language recently and it seems to be able to encode mathematics
algorithm pseudocode that looks very close to the pseudocode.  Here is
a .pdf file I put together that contains slides from a Fortress talk
which shows this:

http://sage.ssu.portsmouth.oh.us/tmp/fortress_compared_with_algorithm_pseudocode.pdf

If Fortress was suitable for what you had in mind, my thought is that
there is a chance that Sun would provide funding for encoding Axiom's
algorithms in it.

\start
Date: Wed, 4 Jun 2008 01:28:28 -0400
From: Tim Daly
To: Ted Kosan
Subject: Re: APL, J, and Axiom documentation

>> I have been looking at the question of documenting Axiom's algorithms.
>>
>> Beyond the english description I've been pondering the use of J (an
>> ascii version of APL).
>
>I have been studying Sun's Fortress mathematics-oriented programming
>language recently and it seems to be able to encode mathematics
>algorithm pseudocode that looks very close to the pseudocode.  Here is
>a .pdf file I put together that contains slides from a Fortress talk
>which shows this:
>
>http://sage.ssu.portsmouth.oh.us/tmp/fortress_compared_with_algorithm_pseudocode.pdf
>

Interesting. I particularly liked the unicode version. I'm puzzled by
the last slide though. It seems to show that Fortress will handle
2D equations, which would be a complete surprise. The ability to
directly write 2D equation input in a programming language would be
a huge leap forward. Its the late 90s and we should be able to handle
such things but I'm unaware of any language that can.

I had a 2D parser on my desk at IBM. Our Scratchpad group had an
effort to do handwritten input. Maple had one also but I don't know
what the outcome was. I gave a sample at ECCAD in Phila. If you ignore
the handwritten portion of the problem it seems you could create a
parser to handle 2D linear typewritten input. Thus a single program
assignment statement such as:

            b
     a  = ------
             t
            p q

Ideally it would be print/read equivalent to Axiom's Charybdis output.
Ron Avitzur had a really nice, but small, subset of this.
Sounds like a fantastic student project to me.

I've had a small amount of correspondence with Guy Steele about
whether Fortress can support Provisos natively but I've not actually
seen the language up until now.

I'm not sure what ability Fortress will have to handle Axiom-style
types. They aren't required for Fortran and Steele seems to have taken
Fortran as the target replacement language. I'm also not sure if it
can handle the category/domain questions.





>If Fortress was suitable for what you had in mind, my thought is that
>there is a chance that Sun would provide funding for encoding Axiom's
>algorithms in it.

As for funding Axiom from anywhere by anyone... sigh.  The only hope I
see for funding is if

  (a) Axiom is deeply documented,
  (b) Computational Mathematics becomes its own department in many schools,
  (c) Axiom gets picked up as the canonical teaching platform. 

A fully documented Axiom system would teach people how to read, write
and understand computational mathematics as opposed to the current
"trade-school" mentality which teaches how to use Mathematica, Matlab
and Maple. Of course, by the time these conditions occur a fair portion
of the documentation work will have already been done. I doubt that
the NSF or INRIA have any interest in allocating grants for teaching
computational mathematics as a separate discipline. Instead it seems to
be viewed as a stepchild of either the Math or Comp. Sci. departments. 
Curiously, this is exactly where Comp. Sci. was when I went to school. 
There were no Comp. Sci. departments or majors. You learned it from the 
Math (Fortran), Business (COBOL), or Engineering (Fortran) departments.

Maybe in 10 years....

\start
Date: Wed, 4 Jun 2008 01:03:52 -0400
From: Ted Kosan
To: Tim Daly
Subject: Re: Axiom marketing and funding (was APL, J, and Axiom documentation)

Tim wrote

> As for funding Axiom from anywhere by anyone... sigh.  The only hope I
> see for funding is if
>
>  (a) Axiom is deeply documented,
>  (b) Computational Mathematics becomes its own department in many schools,
>  (c) Axiom gets picked up as the canonical teaching platform.
>
> A fully documented Axiom system would teach people how to read, write
> and understand computational mathematics as opposed to the current
> "trade-school" mentality which teaches how to use Mathematica, Matlab
> and Maple. Of course, by the time these conditions occur a fair portion
> of the documentation work will have already been done. I doubt that
> the NSF or INRIA have any interest in allocating grants for teaching
> computational mathematics as a separate discipline. Instead it seems to
> be viewed as a stepchild of either the Math or Comp. Sci. departments.
> Curiously, this is exactly where Comp. Sci. was when I went to school.
> There were no Comp. Sci. departments or majors. You learned it from the
> Math (Fortran), Business (COBOL), or Engineering (Fortran) departments.
>
> Maybe in 10 years...

I worked for over 6 months coming up with funding strategies for the
Sage project and these strategies were starting to work.  I was able
to get $1000 of funding for the Sage project and I was in the process
of arranging to have significantly more funding sent to the project
just before they decided they wanted to focus Sage on research instead
of education (I was forced to cancel a $5000 purchase order for Sage
enhancements on the day the Sage team made their announcement).

The funding strategies I came up with for Sage should work for Axiom
too.  In fact, they should work even better because the strategies are
education-oriented and Axiom's commitment to excellent documentation
and education supports these funding strategy very well.

I would welcome the opportunity to help with Axiom marketing and
funding, but I must warn people that my strategies are unconventional
and so it may take some time to explain them.  I am willing to discuss
them, however, if anyone is interested in pursuing this further :-)

\start
Date: Wed, 4 Jun 2008 01:33:37 -0400
From: Ted Kosan
To: Tim Daly
Subject: Re: APL, J, and Axiom documentation

Tim wrote:

>I'm not sure what ability Fortress will have to handle Axiom-style
>types. They aren't required for Fortran and Steele seems to have taken
>Fortran as the target replacement language. I'm also not sure if it
>can handle the category/domain questions.

My understanding is that Fortress was designed to support any
application that could benefit from mathematical notation.  One of
their design goals appears to be extreme flexibility and they achieved
this by having most of the language specified by libraries.

The talk I obtained the slides from was very illuminating and it
contains the best explanation of Fortress I have been able to find:

    http://www.infoq.com/presentations/fortress-steele

My thought is that an Axiom developer would be able to determine
whether or not Fortress can handle Axiom-style types by viewing this
talk.

Another thing that comes across fairly clearly in the talk is that Sun
is planning to use Fortress as a way to create a large scientific
computing community just like Java was used to create a large "web
commerce" community.  The marketing person in me can't help but think
that Axiom's algorithms would be very useful for helping to achieve
this goal.

\start
Date: Wed, 4 Jun 2008 03:08:01 -0500
From: Tim Daly
To: list
Subject: 20080604.01.tpd.patch (bookvol8 extract view3d)

Extract the view3d function from bookvol8 during build.
======================================================================
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index fea6218..6f7e98f 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -1291,7 +1291,7 @@ extern void draw3DComponents(int );
    structures in 3D.
    */
 
-#include "tube.h"
+<<include/tube.h>>
 
 /* viewman's and viewAlone's refPt */
 #define refPt(v,x) ((v).points + (x))
@@ -1718,6 +1718,21 @@ extern int initQuitButtons(buttonStruct * );
 <<include/readview.h1>>=
 extern int readViewport(viewManager * viewPort , void * info , int size);
 @
+\section{rgb.h}
+<<include/rgb.h>>=
+typedef struct _RGB {
+  float r,g,b;
+} RGB ;
+
+typedef struct _HSV {
+  float h,s,v;
+} HSV ;
+
+typedef struct _HLS {
+  float h,l,s;
+} HLS ;
+
+@
 \section{save3d.h1}
 <<include/save3d.h1>>=
 extern int makeSavePanel(void);
@@ -1792,6 +1807,40 @@ static char spadMask_bits[] = {
    0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00};
 @
+\section{spadcolors.h}
+<<include/spadcolors.h>>=
+#include <X11/X.h>
+#define numOfColors 240
+#define totalHuesConst   27 
+#define totalShadesConst 5 
+#define hueEnd  360
+#define hueStep 12    /* hueEnd/totalHuesConst */
+
+#define numPlanes 1
+#define numColors 10
+#define startColor 0
+#define endColor   startColor+numColors
+
+#define colorStep (maxColors+1)/numColors
+
+#define yes 1
+#define no 0
+
+#define smoothConst  50
+#define saymem(a,b,c) saymemWithLine(a,b,c,0)
+#define Colorcells 256   /* KF number of elements in permutation vector */
+#define shade 5
+#define saturation   0.8
+
+extern int       smoothHue;
+extern Colormap  colorMap;
+extern int       num;
+extern int       scrn;
+
+#define maxColors DisplayCells(dsply,scrn)-1
+
+<<include/rgb.h>>
+@
 \section{spoon2d.h1}
 <<include/spoon2d.h1>>=
 extern void spoonView2D(void);
@@ -1858,7 +1907,7 @@ typedef struct _triple {    /* used for normals */
   float x,y,z;
 } triple;
 
-#include "rgb.h"
+<<include/rgb.h>>
 
 typedef struct _viewTriple { /* used for points in 3 space */
   float x,y,z,c,sc;          /* c is color component */
@@ -2004,7 +2053,7 @@ typedef struct _graphStateStruct {
 @
 \section{view3d.h}
 <<include/view3d.h>>=
-#include "component.h"
+<<include/component.h>>
 
 /* we now have two substructures (in the union, kind):
    tubeModel (in tube.h) and fun2VarModel (below) 
@@ -3134,7 +3183,7 @@ sendGraphToView2D(int i,int there,viewManager *viewport,
 #include <string.h>
 
 #include "viewman.h"
-#include "mode.h"
+<<include/mode.h>>
 #include "actions.h"
   
 #include "util.h1"
@@ -3532,7 +3581,7 @@ makeView2DFromSpadData(view2DStruct *viewdata,graphStateStruct graphState[])
 #include <stdlib.h>
 
 #include "viewman.h"
-#include "mode.h"
+<<include/mode.h>>
 
 #include "sockio-c.h1"
 #include "make3d.h1"
@@ -4075,9 +4124,9 @@ superSelect(int n, int *rd, int *wr, int *ex, char *timeout)
 #endif
 
 #include "viewman.h"
-#include "mode.h"
+<<include/mode.h>>
 #include "actions.h"
-#include "viewcommand.h"
+<<include/viewcommand.h>>
 #include "bsdsignal.h"
 
 
@@ -4734,7 +4783,7 @@ makeView2DFromFileData(view2DStruct *doView2D)
 #include <string.h>
 
 #include "viewalone.h"
-#include "mode.h"
+<<include/mode.h>>
 
 #include "util.h1"
 #include "all-alone.h1"
@@ -5051,7 +5100,7 @@ int main (int argc,char *argv[])
 #include "view3d.h"
 #include "view2d.h"
 #include "actions.h"
-#include "viewcommand.h"
+<<include/viewcommand.h>>
 
       /* Viewport Commands */
 #define makeViewport -1
@@ -6514,7 +6563,7 @@ freeGraph(int i)
 #include "view2d.h"
 <<include/actions.h>>
 <<include/viewcommand.h>>
-#include "xdefs.h"
+<<include/xdefs.h>>
 #include "override.h"
 <<include/g.h>>
 
@@ -7282,7 +7331,7 @@ ${MIDINT}/main2d.c: ${BOOK}
 	@ echo 10 making ${MIDINT}/main2d.c from ${BOOK}
 	@( cd ${MIDINT} ; ${TANGLE} -R"view2d/main2d.c" ${BOOK} >main2d.c )
 
-${MIDOBJ}/main2d.o: ${LINC}/xdefs.h ${MIDINT}/main2d.c
+${MIDOBJ}/main2d.o: ${MIDINT}/main2d.c
 	@ echo 11 making ${MIDOBJ}/main2d.o from ${MIDINT}/main2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/main2d.c )
 
@@ -7325,8 +7374,7 @@ ${MIDINT}/viewport2d.c: ${BOOK}
 	@( cd ${MIDINT} ; \
 	   ${TANGLE} -R"view2d/viewport2d.c" ${BOOK} >viewport2d.c )
 
-${MIDOBJ}/viewport2d.o: ${LINC}/spadbitmap.bitmap \
-                        ${LINC}/spadmask.mask ${MIDINT}/viewport2d.c 
+${MIDOBJ}/viewport2d.o: ${MIDINT}/viewport2d.c 
 	@ echo 29 making ${MIDOBJ}/viewport2d.o from ${MIDINT}/viewport2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewport2d.c )
 
@@ -8596,8 +8644,8 @@ goodbye(int sig)
 #include "util.h1"
 #include "xspadfill.h1"
 
-#include "spadbitmap.bitmap"
-#include "spadmask.mask"
+<<include/purty/spadbitmap.bitmap>>
+<<include/purty/spadmask.mask>>
 
 #define rint(z) ((int)(z))
 
@@ -9240,7 +9288,7 @@ makeView2D(view2DStruct *viewdata)
 #include <stdlib.h>
 
 <<view2d/header2.h>>
-#include "write.h"
+<<include/write.h>>
 
 #include "all-2d.h1"
 #include "pixmap.h1"
@@ -9400,12 +9448,12 @@ writeViewport(int thingsToWrite)
 }
 @
 \chapter{view3d}
-\section{buttons3d.c.pamphlet}
-<<view3d/buttons3d.c.pamphlet>>=
+\section{buttons3d.c}
+<<view3d/buttons3d.c>>=
 #define _BUTTONS3D_C
 
-#include "header.h"
-#include "cpanel.h"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
 
 #include "all-3d.h1"
 #define BH	31  /* button window height */
@@ -9791,12 +9839,12 @@ initButtons (buttonStruct *buttons)
 } /* initButtons() */
 
 @
-\section{closeview3d.c.pamphlet}
-<<view3d/closeview3d.c.pamphlet>>=
+\section{closeview3d.c}
+<<view3d/closeview3d.c>>=
 #define _CLOSEVIEW3D_C
 
 #include <stdlib.h>
-#include "header.h"
+<<view3d/header.h>>
 
 #include "util.h1"
 #include "gfun.h1"
@@ -9849,12 +9897,12 @@ closeViewport (void)
 } /* closeViewport() */
 
 @
-\section{component3d.c.pamphlet}
-<<view3d/component3d.c.pamphlet>>=
+\section{component3d.c}
+<<view3d/component3d.c>>=
 #define _COMPONENT3D_C
 
-#include "header.h"
-#include "draw.h"
+<<view3d/header.h>>
+<<view3d/draw.h>>
 
 #include "gfun.h1"
 #include "util.h1"
@@ -10681,8 +10729,8 @@ draw3DComponents (int dFlag)
     begun 19 September 1992, Jim Wen
    ***********************************************************************/
 
-#include "header.h"
-#include "draw.h"
+<<view3d/header.h>>
+<<view3d/draw.h>>
 
 #define segmentDEBUG_X
 
@@ -11525,12 +11573,12 @@ typedef struct _segment_list_struct {
     begun 25 November 1992, Jim Wen
    ***********************************************************************/
 
-#include "header.h"
-#include "cpanel.h"
-#include "draw.h"
-#include "../include/purty/volume.bitmap"
-#include "../include/purty/volume.mask"
-#include "../include/purty/slicer.bitmap"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
+<<view3d/draw.h>>
+<<include/purty/volume.bitmap>>
+<<include/purty/volume.mask>>
+<<include/purty/slicer.bitmap>>
 
 #define use_fat
 
@@ -12286,19 +12334,19 @@ update_contour_latitude(void)
 
 }  /* update_contour_latitude() */
 @
-\section{control3d.c.pamphlet}
-<<view3d/control3d.c.pamphlet>>=
+\section{control3d.c}
+<<view3d/control3d.c>>=
 #define _CONTROL3D_C
 #include <string.h>
 #include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
 
-#include "mouse11.bitmap"
-#include "mouse11.mask"
+<<include/purty/mouse11.bitmap>>
+<<include/purty/mouse11.mask>>
 
-#include "header.h"
-#include "cpanel.h"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
 
 #include "util.h1"
 #include "xshade.h1"
@@ -13573,15 +13621,15 @@ extern Atom wm_delete_window;
 
 #include "hash.h"
 
-#include "view.h"
+<<include/view.h>>
 
 
 #include "view3d.h"
 #include "actions.h"
-#include "viewcommand.h"
-#include "xdefs.h"
+<<include/viewcommand.h>>
+<<include/xdefs.h>>
 #include "override.h"
-#include "g.h"      /* Gdraw functions header file */
+<<include/g.h>>
 
 #define swap(a,b) {a^=b; b^=a; a^=b;}
 
@@ -13891,18 +13939,6 @@ typedef struct _controlXY {
 } controlXY;
 
 
-
-      /************************** Bitmap Files ***************************/
-#if 0 
-#include "../include/purty/mouse11.bitmap"
-#include "../include/purty/mouse11.mask"
-#include "../include/purty/spadbitmap.bitmap"
-#include "../include/purty/spadmask.mask"
-#include "../include/purty/light11.bitmap"
-#include "../include/purty/light11.mask"
-#endif 
-
-
       /******* useful definitions *******/
 
 #define CONTROLpanel 1
@@ -13914,17 +13950,17 @@ typedef struct _controlXY {
 
 #define machine0 0.0002
 
-#include "globals.h"
+<<view3d/globals.h>>
 
 @
-\section{illuminate3d.c.pamphlet}
-<<view3d/illuminate3d.c.pamphlet>>=
+\section{illuminate3d.c}
+<<view3d/illuminate3d.c>>=
 #define _ILLUMINATE3D_C
 
 #include <math.h>
 
-#include "header.h"
-#include "draw.h"
+<<view3d/header.h>>
+<<view3d/draw.h>>
 
 #include "all-3d.h1"
 
@@ -14073,12 +14109,12 @@ hlsTOrgb(float h,float l,float s)
 
 
 @
-\section{lightbut3d.c.pamphlet}
-<<view3d/lightbut3d.c.pamphlet>>=
+\section{lightbut3d.c}
+<<view3d/lightbut3d.c>>=
 #define _LIGHTBUT3D_C
 
-#include "header.h"
-#include "cpanel.h"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
 
 #include "all-3d.h1"
 /*****************************************************
@@ -14187,22 +14223,22 @@ initLightButtons (buttonStruct *lightButtons)
 
 
 @
-\section{lighting3d.c.pamphlet}
-<<view3d/lighting3d.c.pamphlet>>=
+\section{lighting3d.c}
+<<view3d/lighting3d.c>>=
 #define _LIGHTING3D_C
 
 #include <math.h>
 #include <string.h>
 
-#include "light11.bitmap"
-#include "light11.mask"
+<<include/purty/light11.bitmap>>
+<<include/purty/light11.mask>>
 
 
-#include "header.h"
-#include "static.h"
-#include "draw.h"
-#include "cpanel.h"
-#include "volume.h"
+<<view3d/header.h>>
+<<view3d/static.h>>
+<<view3d/draw.h>>
+<<view3d/cpanel.h>>
+<<view3d/volume.h>>
 
 #include "gfun.h1"
 #include "xspadfill.h1"
@@ -14745,8 +14781,8 @@ drawLightingPanel(void)
 
 
 @
-\section{main3d.c.pamphlet}
-<<view3d/main3d.c.pamphlet>>=
+\section{main3d.c}
+<<view3d/main3d.c>>=
 #define _MAIN3D_C
 #include <string.h>
 #include <stdio.h>
@@ -14754,9 +14790,9 @@ drawLightingPanel(void)
 #include <unistd.h>
 #include <signal.h>
 
-#include "header.h"
-#include "cpanel.h"
-#include "process.h"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
+<<view3d/process.h>>
 #include "bsdsignal.h"
 
 #include "bsdsignal.h1"
@@ -15347,9 +15383,9 @@ mergeDatabases(void)
 }
 
 @
-\section{Makefile.pamphlet}
+\section{Makefile}
 <<view3d/Makefile>>=
-IN=	${SRC}/graph/view3d
+BOOK=${SPD}/books/bookvol8.pamphlet
 MIDINT=	${INT}/graph/view3d
 MIDOBJ= ${OBJ}/${SYS}/graph/view3d
 OUT=	${MNT}/${SYS}/lib
@@ -15364,25 +15400,8 @@ LINC=	${SRC}/graph/include
 # global include files shared by everyone 
 GINC=	${SRC}/include
 
-# bitmaps for cursors
-BIT=	${SRC}/graph/include/purty
-
-
-DOCFILES= ${DOC}/buttons3d.c.dvi    ${DOC}/closeview3d.c.dvi \
-          ${DOC}/component3d.c.dvi  ${DOC}/control3d.c.dvi \
-          ${DOC}/illuminate3d.c.dvi ${DOC}/lightbut3d.c.dvi \
-          ${DOC}/lighting3d.c.dvi   ${DOC}/main3d.c.dvi \
-          ${DOC}/mesh3d.c.dvi       ${DOC}/msort3d.c.dvi \
-          ${DOC}/pot3d.c.dvi        ${DOC}/process3d.c.dvi \
-          ${DOC}/project3d.c.dvi    ${DOC}/quitbut3d.c.dvi \
-          ${DOC}/quit3d.c.dvi       ${DOC}/save3d.c.dvi \
-          ${DOC}/savebut3d.c.dvi    ${DOC}/smoothshade3d.c.dvi \
-          ${DOC}/spadaction3d.c.dvi ${DOC}/stuff3d.c.dvi \
-          ${DOC}/surface3d.c.dvi    ${DOC}/transform3d.c.dvi \
-          ${DOC}/viewport3d.c.dvi   ${DOC}/volume3d.c.dvi \
-          ${DOC}/write3d.c.dvi
 
-CFLAGS  = ${CCF} -I${LINC} -I${GINC} -I${IN}
+CFLAGS  = ${CCF} -I${LINC} -I${GINC} 
 LDFLAGS =  ${LDF} ${STATIC} -lX11 -lm 
 
 OBJS = \
@@ -15398,497 +15417,237 @@ OBJS = \
 
 GDRAW_OBJS  = ${GDRAW}/gfun.o ${OBJ}/${SYS}/lib/hash.o
 
-HEADERS = ${IN}/header.h ${IN}/globals.h \
-	${LINC}/component.h ${LINC}/view3d.h ${LINC}/tube.h \
-	${LINC}/actions.h ${LINC}/viewcommand.h \
-	${GINC}/view.h ${LINC}/g.h
-
 all: ${OBJS} ${GDRAW_OBJS} ${OUT}/view3d ${DOCFILES}
-	@echo 78 finished ${IN}
+	@echo 78 finished bookvol8 view3d
 
-${MIDINT}/buttons3d.c: ${IN}/buttons3d.c.pamphlet
-	@ echo 1 ${MIDINT}/buttons3d.c from ${IN}/buttons3d.c.pamphlet
+${MIDINT}/buttons3d.c: ${BOOK}
+	@ echo 1 ${MIDINT}/buttons3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/buttons3d.c.pamphlet >buttons3d.c )
+	${TANGLE} -R"view3d/buttons3d.c" ${BOOK} >buttons3d.c )
 	
-${MIDOBJ}/buttons3d.o: ${HEADERS} ${IN}/cpanel.h ${MIDINT}/buttons3d.c
+${MIDOBJ}/buttons3d.o: ${MIDINT}/buttons3d.c
 	@ echo 2 making ${MIDOBJ}/buttons3d.o from ${MIDINT}/buttons3d.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/buttons3d.c )
-
-${DOC}/buttons3d.c.dvi: ${IN}/buttons3d.c.pamphlet 
-	@echo 3 making ${DOC}/buttons3d.c.dvi from ${IN}/buttons3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/buttons3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} buttons3d.c ; \
-	rm -f ${DOC}/buttons3d.c.pamphlet ; \
-	rm -f ${DOC}/buttons3d.c.tex ; \
-	rm -f ${DOC}/buttons3d.c )
-
+	 ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/buttons3d.c )
 
-${MIDINT}/closeview3d.c: ${IN}/closeview3d.c.pamphlet
-	@ echo 4 ${MIDINT}/closeview3d.c from ${IN}/closeview3d.c.pamphlet
+${MIDINT}/closeview3d.c: ${BOOK}
+	@ echo 4 ${MIDINT}/closeview3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/closeview3d.c.pamphlet >closeview3d.c )
+	${TANGLE} -R"view3d/closeview3d.c" ${BOOK} >closeview3d.c )
 	
-${MIDOBJ}/closeview3d.o: ${HEADERS} ${MIDINT}/closeview3d.c
+${MIDOBJ}/closeview3d.o: ${MIDINT}/closeview3d.c
 	@ echo 5 making ${MIDOBJ}/closeview3d.o from ${MIDINT}/closeview3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/closeview3d.c )
 
-${DOC}/closeview3d.c.dvi: ${IN}/closeview3d.c.pamphlet 
-	@echo 6 making ${DOC}/closeview3d.c.dvi from ${IN}/closeview3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/closeview3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} closeview3d.c ; \
-	rm -f ${DOC}/closeview3d.c.pamphlet ; \
-	rm -f ${DOC}/closeview3d.c.tex ; \
-	rm -f ${DOC}/closeview3d.c )
-
-
-${MIDINT}/component3d.c: ${IN}/component3d.c.pamphlet
-	@ echo 7 ${MIDINT}/component3d.c from ${IN}/component3d.c.pamphlet
+${MIDINT}/component3d.c: ${BOOK}
+	@ echo 7 ${MIDINT}/component3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/component3d.c.pamphlet >component3d.c )
+	${TANGLE} -R"view3d/component3d.c" ${BOOK} >component3d.c )
 	
-${MIDOBJ}/component3d.o: ${HEADERS} ${MIDINT}/component3d.c
+${MIDOBJ}/component3d.o:  ${MIDINT}/component3d.c
 	@ echo 8 making ${MIDOBJ}/component3d.o from ${MIDINT}/component3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/component3d.c )
 
-${DOC}/component3d.c.dvi: ${IN}/component3d.c.pamphlet 
-	@echo 9 making ${DOC}/component3d.c.dvi from ${IN}/component3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/component3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} component3d.c ; \
-	rm -f ${DOC}/component3d.c.pamphlet ; \
-	rm -f ${DOC}/component3d.c.tex ; \
-	rm -f ${DOC}/component3d.c )
-
-
-${MIDINT}/control3d.c: ${IN}/control3d.c.pamphlet
-	@ echo 10 ${MIDINT}/control3d.c from ${IN}/control3d.c.pamphlet
+${MIDINT}/control3d.c: ${BOOK}
+	@ echo 10 ${MIDINT}/control3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/control3d.c.pamphlet >control3d.c )
+	${TANGLE} -R"view3d/control3d.c" ${BOOK} >control3d.c )
 	
-${MIDOBJ}/control3d.o: ${HEADERS} ${IN}/cpanel.h  ${BIT}/mouse11.bitmap \
-	 ${BIT}/mouse11.mask ${MIDINT}/control3d.c
+${MIDOBJ}/control3d.o: ${MIDINT}/control3d.c
 	@ echo 11 making ${MIDOBJ}/control3d.o from ${MIDINT}/control3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/control3d.c )
 
-${DOC}/control3d.c.dvi: ${IN}/control3d.c.pamphlet 
-	@echo 12 making ${DOC}/control3d.c.dvi from ${IN}/control3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/control3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} control3d.c ; \
-	rm -f ${DOC}/control3d.c.pamphlet ; \
-	rm -f ${DOC}/control3d.c.tex ; \
-	rm -f ${DOC}/control3d.c )
-
-
-${MIDINT}/illuminate3d.c: ${IN}/illuminate3d.c.pamphlet
-	@ echo 13 ${MIDINT}/illuminate3d.c from ${IN}/illuminate3d.c.pamphlet
+${MIDINT}/illuminate3d.c: ${BOOK}
+	@ echo 13 ${MIDINT}/illuminate3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/illuminate3d.c.pamphlet >illuminate3d.c )
+	${TANGLE} -R"view3d/illuminate3d.c" ${BOOK} >illuminate3d.c )
 	
-${MIDOBJ}/illuminate3d.o: ${HEADERS} ${IN}/cpanel.h ${MIDINT}/illuminate3d.c
+${MIDOBJ}/illuminate3d.o:  ${MIDINT}/illuminate3d.c
 	@ echo 14 making ${MIDOBJ}/illuminate3d.o from ${MIDINT}/illuminate3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/illuminate3d.c )
 
-${DOC}/illuminate3d.c.dvi: ${IN}/illuminate3d.c.pamphlet 
-	@echo 15 making ${DOC}/illuminate3d.c.dvi from ${IN}/illuminate3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/illuminate3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} illuminate3d.c ; \
-	rm -f ${DOC}/illuminate3d.c.pamphlet ; \
-	rm -f ${DOC}/illuminate3d.c.tex ; \
-	rm -f ${DOC}/illuminate3d.c )
-
-
-${MIDINT}/lightbut3d.c: ${IN}/lightbut3d.c.pamphlet
-	@ echo 16 ${MIDINT}/lightbut3d.c from ${IN}/lightbut3d.c.pamphlet
+${MIDINT}/lightbut3d.c: ${BOOK}
+	@ echo 16 ${MIDINT}/lightbut3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/lightbut3d.c.pamphlet >lightbut3d.c )
+	${TANGLE} -R"view3d/lightbut3d.c" ${BOOK} >lightbut3d.c )
 	
-${MIDOBJ}/lightbut3d.o: ${HEADERS} ${IN}/cpanel.h ${MIDINT}/lightbut3d.c
+${MIDOBJ}/lightbut3d.o: ${MIDINT}/lightbut3d.c
 	@ echo 17 making ${MIDOBJ}/lightbut3d.o from ${MIDINT}/lightbut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/lightbut3d.c )
 
-${DOC}/lightbut3d.c.dvi: ${IN}/lightbut3d.c.pamphlet 
-	@echo 18 making ${DOC}/lightbut3d.c.dvi from ${IN}/lightbut3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/lightbut3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} lightbut3d.c ; \
-	rm -f ${DOC}/lightbut3d.c.pamphlet ; \
-	rm -f ${DOC}/lightbut3d.c.tex ; \
-	rm -f ${DOC}/lightbut3d.c )
-
-
-${MIDINT}/lighting3d.c: ${IN}/lighting3d.c.pamphlet
-	@ echo 19 ${MIDINT}/lighting3d.c from ${IN}/lighting3d.c.pamphlet
+${MIDINT}/lighting3d.c: ${BOOK}
+	@ echo 19 ${MIDINT}/lighting3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/lighting3d.c.pamphlet >lighting3d.c )
+	${TANGLE} -R"view3d/lighting3d.c" ${BOOK} >lighting3d.c )
 	
-${MIDOBJ}/lighting3d.o: ${HEADERS} ${IN}/draw.h ${IN}/cpanel.h \
-	${BIT}/light11.bitmap  ${BIT}/light11.mask ${MIDINT}/lighting3d.c
+${MIDOBJ}/lighting3d.o: ${MIDINT}/lighting3d.c
 	@ echo 20 making ${MIDOBJ}/lighting3d.o from ${MIDINT}/lighting3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/lighting3d.c )
 
-${DOC}/lighting3d.c.dvi: ${IN}/lighting3d.c.pamphlet 
-	@echo 21 making ${DOC}/lighting3d.c.dvi from ${IN}/lighting3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/lighting3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} lighting3d.c ; \
-	rm -f ${DOC}/lighting3d.c.pamphlet ; \
-	rm -f ${DOC}/lighting3d.c.tex ; \
-	rm -f ${DOC}/lighting3d.c )
-
-
-${MIDINT}/main3d.c: ${IN}/main3d.c.pamphlet
-	@ echo 22 ${MIDINT}/main3d.c from ${IN}/main3d.c.pamphlet
+${MIDINT}/main3d.c: ${BOOK}
+	@ echo 22 ${MIDINT}/main3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/main3d.c.pamphlet >main3d.c )
+	${TANGLE} -R"view3d/main3d.c" ${BOOK} >main3d.c )
 	
-${MIDOBJ}/main3d.o: ${HEADERS} ${LINC}/xdefs.h ${IN}/cpanel.h ${IN}/process.h \
-	 ${LINC}/mode.h ${MIDINT}/main3d.c
+${MIDOBJ}/main3d.o: ${MIDINT}/main3d.c
 	@ echo 23 making ${MIDOBJ}/main3d.o from ${MIDINT}/main3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/main3d.c )
 
-${DOC}/main3d.c.dvi: ${IN}/main3d.c.pamphlet 
-	@echo 24 making ${DOC}/main3d.c.dvi from ${IN}/main3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/main3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} main3d.c ; \
-	rm -f ${DOC}/main3d.c.pamphlet ; \
-	rm -f ${DOC}/main3d.c.tex ; \
-	rm -f ${DOC}/main3d.c )
-
-
-${MIDINT}/mesh3d.c: ${IN}/mesh3d.c.pamphlet
-	@ echo 25 ${MIDINT}/mesh3d.c from ${IN}/mesh3d.c.pamphlet
+${MIDINT}/mesh3d.c: ${BOOK}
+	@ echo 25 ${MIDINT}/mesh3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/mesh3d.c.pamphlet >mesh3d.c )
+	${TANGLE} -R"view3d/mesh3d.c" ${BOOK} >mesh3d.c )
 	
-${MIDOBJ}/mesh3d.o: ${HEADERS} ${MIDINT}/mesh3d.c
+${MIDOBJ}/mesh3d.o: ${MIDINT}/mesh3d.c
 	@ echo 26 making ${MIDOBJ}/mesh3d.o from ${MIDINT}/mesh3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/mesh3d.c )
 
-${DOC}/mesh3d.c.dvi: ${IN}/mesh3d.c.pamphlet 
-	@echo 27 making ${DOC}/mesh3d.c.dvi from ${IN}/mesh3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/mesh3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} mesh3d.c ; \
-	rm -f ${DOC}/mesh3d.c.pamphlet ; \
-	rm -f ${DOC}/mesh3d.c.tex ; \
-	rm -f ${DOC}/mesh3d.c )
-
-
-${MIDINT}/msort3d.c: ${IN}/msort3d.c.pamphlet
-	@ echo 28 ${MIDINT}/msort3d.c from ${IN}/msort3d.c.pamphlet
+${MIDINT}/msort3d.c: ${BOOK}
+	@ echo 28 ${MIDINT}/msort3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/msort3d.c.pamphlet >msort3d.c )
+	${TANGLE} -R"view3d/msort3d.c" ${BOOK} >msort3d.c )
 	
-${MIDOBJ}/msort3d.o: ${HEADERS} ${MIDINT}/msort3d.c
+${MIDOBJ}/msort3d.o: ${MIDINT}/msort3d.c
 	@ echo 29 making ${MIDOBJ}/msort3d.o from ${MIDINT}/msort3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/msort3d.c )
 
-${DOC}/msort3d.c.dvi: ${IN}/msort3d.c.pamphlet 
-	@echo 30 making ${DOC}/msort3d.c.dvi from ${IN}/msort3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/msort3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} msort3d.c ; \
-	rm -f ${DOC}/msort3d.c.pamphlet ; \
-	rm -f ${DOC}/msort3d.c.tex ; \
-	rm -f ${DOC}/msort3d.c )
-
-
-${MIDINT}/pot3d.c: ${IN}/pot3d.c.pamphlet
-	@ echo 31 ${MIDINT}/pot3d.c from ${IN}/pot3d.c.pamphlet
+${MIDINT}/pot3d.c: ${BOOK}
+	@ echo 31 ${MIDINT}/pot3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/pot3d.c.pamphlet >pot3d.c )
+	${TANGLE} -R"view3d/pot3d.c" ${BOOK} >pot3d.c )
 	
-${MIDOBJ}/pot3d.o: ${HEADERS} ${MIDINT}/pot3d.c
+${MIDOBJ}/pot3d.o: ${MIDINT}/pot3d.c
 	@ echo 32 making ${MIDOBJ}/pot3d.o from ${MIDINT}/pot3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/pot3d.c )
 
-${DOC}/pot3d.c.dvi: ${IN}/pot3d.c.pamphlet 
-	@echo 33 making ${DOC}/pot3d.c.dvi from ${IN}/pot3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/pot3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} pot3d.c ; \
-	rm -f ${DOC}/pot3d.c.pamphlet ; \
-	rm -f ${DOC}/pot3d.c.tex ; \
-	rm -f ${DOC}/pot3d.c )
-
-
-${MIDINT}/process3d.c: ${IN}/process3d.c.pamphlet
-	@ echo 34 ${MIDINT}/process3d.c from ${IN}/process3d.c.pamphlet
+${MIDINT}/process3d.c: ${BOOK}
+	@ echo 34 ${MIDINT}/process3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/process3d.c.pamphlet >process3d.c )
+	${TANGLE} -R"view3d/process3d.c" ${BOOK} >process3d.c )
 	
-${MIDOBJ}/process3d.o: ${HEADERS} ${IN}/cpanel.h ${IN}/process.h \
-         ${IN}/volume.h ${LINC}/mode.h ${MIDINT}/process3d.c
+${MIDOBJ}/process3d.o: ${MIDINT}/process3d.c
 	@ echo 35 making ${MIDOBJ}/process3d.o from ${MIDINT}/process3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/process3d.c )
 
-${DOC}/process3d.c.dvi: ${IN}/process3d.c.pamphlet 
-	@echo 36 making ${DOC}/process3d.c.dvi from ${IN}/process3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/process3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} process3d.c ; \
-	rm -f ${DOC}/process3d.c.pamphlet ; \
-	rm -f ${DOC}/process3d.c.tex ; \
-	rm -f ${DOC}/process3d.c )
-
-
-${MIDINT}/project3d.c: ${IN}/project3d.c.pamphlet
-	@ echo 37 ${MIDINT}/project3d.c from ${IN}/project3d.c.pamphlet
+${MIDINT}/project3d.c: ${BOOK}
+	@ echo 37 ${MIDINT}/project3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/project3d.c.pamphlet >project3d.c )
+	${TANGLE} -R"view3d/project3d.c" ${BOOK} >project3d.c )
 	
-${MIDOBJ}/project3d.o: ${HEADERS} ${IN}/draw.h ${MIDINT}/project3d.c
+${MIDOBJ}/project3d.o: ${MIDINT}/project3d.c
 	@ echo 38 making ${MIDOBJ}/project3d.o from ${MIDINT}/project3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/project3d.c )
 
-${DOC}/project3d.c.dvi: ${IN}/project3d.c.pamphlet 
-	@echo 39 making ${DOC}/project3d.c.dvi from ${IN}/project3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/project3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} project3d.c ; \
-	rm -f ${DOC}/project3d.c.pamphlet ; \
-	rm -f ${DOC}/project3d.c.tex ; \
-	rm -f ${DOC}/project3d.c )
-
-
-${MIDINT}/quitbut3d.c: ${IN}/quitbut3d.c.pamphlet
-	@ echo 40 ${MIDINT}/quitbut3d.c from ${IN}/quitbut3d.c.pamphlet
+${MIDINT}/quitbut3d.c: ${BOOK}
+	@ echo 40 ${MIDINT}/quitbut3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/quitbut3d.c.pamphlet >quitbut3d.c )
+	${TANGLE} -R"view3d/quitbut3d.c" ${BOOK} >quitbut3d.c )
 	
-${MIDOBJ}/quitbut3d.o: ${HEADERS} ${IN}/cpanel.h ${MIDINT}/quitbut3d.c
+${MIDOBJ}/quitbut3d.o: ${MIDINT}/quitbut3d.c
 	@ echo 41 making ${MIDOBJ}/quitbut3d.o from ${MIDINT}/quitbut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/quitbut3d.c )
 
-${DOC}/quitbut3d.c.dvi: ${IN}/quitbut3d.c.pamphlet 
-	@echo 42 making ${DOC}/quitbut3d.c.dvi from ${IN}/quitbut3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/quitbut3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} quitbut3d.c ; \
-	rm -f ${DOC}/quitbut3d.c.pamphlet ; \
-	rm -f ${DOC}/quitbut3d.c.tex ; \
-	rm -f ${DOC}/quitbut3d.c )
-
-
-${MIDINT}/quit3d.c: ${IN}/quit3d.c.pamphlet
-	@ echo 43 ${MIDINT}/quit3d.c from ${IN}/quit3d.c.pamphlet
+${MIDINT}/quit3d.c: ${BOOK}
+	@ echo 43 ${MIDINT}/quit3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/quit3d.c.pamphlet >quit3d.c )
+	${TANGLE} -R"view3d/quit3d.c" ${BOOK} >quit3d.c )
 	
-${MIDOBJ}/quit3d.o: ${HEADERS} ${IN}/cpanel.h ${MIDINT}/quit3d.c
+${MIDOBJ}/quit3d.o: ${MIDINT}/quit3d.c
 	@ echo 44 making ${MIDOBJ}/quit3d.o from ${MIDINT}/quit3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/quit3d.c )
 
-${DOC}/quit3d.c.dvi: ${IN}/quit3d.c.pamphlet 
-	@echo 45 making ${DOC}/quit3d.c.dvi from ${IN}/quit3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/quit3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} quit3d.c ; \
-	rm -f ${DOC}/quit3d.c.pamphlet ; \
-	rm -f ${DOC}/quit3d.c.tex ; \
-	rm -f ${DOC}/quit3d.c )
-
-
-${MIDINT}/save3d.c: ${IN}/save3d.c.pamphlet
-	@ echo 46 ${MIDINT}/save3d.c from ${IN}/save3d.c.pamphlet
+${MIDINT}/save3d.c: ${BOOK}
+	@ echo 46 ${MIDINT}/save3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/save3d.c.pamphlet >save3d.c )
+	${TANGLE} -R"view3d/save3d.c" ${BOOK} >save3d.c )
 	
-${MIDOBJ}/save3d.o: ${HEADERS} ${IN}/cpanel.h ${MIDINT}/save3d.c
+${MIDOBJ}/save3d.o: ${MIDINT}/save3d.c
 	@ echo 47 making ${MIDOBJ}/savebut3d.o from ${MIDINT}/savebut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/save3d.c )
 
-${DOC}/save3d.c.dvi: ${IN}/save3d.c.pamphlet 
-	@echo 48 making ${DOC}/save3d.c.dvi from ${IN}/save3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/save3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} save3d.c ; \
-	rm -f ${DOC}/save3d.c.pamphlet ; \
-	rm -f ${DOC}/save3d.c.tex ; \
-	rm -f ${DOC}/save3d.c )
-
-
-${MIDINT}/savebut3d.c: ${IN}/savebut3d.c.pamphlet
-	@ echo 49 ${MIDINT}/savebut3d.c from ${IN}/savebut3d.c.pamphlet
+${MIDINT}/savebut3d.c: ${BOOK}
+	@ echo 49 ${MIDINT}/savebut3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/savebut3d.c.pamphlet >savebut3d.c )
+	${TANGLE} -R"view3d/savebut3d.c" ${BOOK} >savebut3d.c )
 	
-${MIDOBJ}/savebut3d.o: ${HEADERS} ${IN}/cpanel.h ${MIDINT}/savebut3d.c
+${MIDOBJ}/savebut3d.o: ${MIDINT}/savebut3d.c
 	@ echo 50 making ${MIDOBJ}/savebutbut3d.o from ${MIDINT}/savebutbut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/savebut3d.c )
 
-${DOC}/savebut3d.c.dvi: ${IN}/savebut3d.c.pamphlet 
-	@echo 51 making ${DOC}/savebut3d.c.dvi from ${IN}/savebut3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/savebut3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} savebut3d.c ; \
-	rm -f ${DOC}/savebut3d.c.pamphlet ; \
-	rm -f ${DOC}/savebut3d.c.tex ; \
-	rm -f ${DOC}/savebut3d.c )
-
-
-${MIDINT}/smoothshade3d.c: ${IN}/smoothshade3d.c.pamphlet
-	@ echo 52 ${MIDINT}/smoothshade3d.c from ${IN}/smoothshade3d.c.pamphlet
+${MIDINT}/smoothshade3d.c: ${BOOK}
+	@ echo 52 ${MIDINT}/smoothshade3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/smoothshade3d.c.pamphlet >smoothshade3d.c )
+	${TANGLE} -R"view3d/smoothshade3d.c" ${BOOK} >smoothshade3d.c )
 	
-${MIDOBJ}/smoothshade3d.o: ${HEADERS} ${GINC}/spadcolors.h ${IN}/draw.h \
-           ${MIDINT}/smoothshade3d.c
-	@ echo 53 making ${MIDOBJ}/smoothShadebut3d.o from ${MIDINT}/smoothShadebut3d.c
+${MIDOBJ}/smoothshade3d.o: ${MIDINT}/smoothshade3d.c
+	@ echo 53 making ${MIDOBJ}/smoothShadebut3d.o \
+            from ${MIDINT}/smoothShadebut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/smoothshade3d.c )
 
-${DOC}/smoothshade3d.c.dvi: ${IN}/smoothshade3d.c.pamphlet 
-	@echo 54 making ${DOC}/smoothshade3d.c.dvi from ${IN}/smoothshade3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/smoothshade3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} smoothshade3d.c ; \
-	rm -f ${DOC}/smoothshade3d.c.pamphlet ; \
-	rm -f ${DOC}/smoothshade3d.c.tex ; \
-	rm -f ${DOC}/smoothshade3d.c )
-
-
-${MIDINT}/spadaction3d.c: ${IN}/spadaction3d.c.pamphlet
-	@ echo 55 ${MIDINT}/spadaction3d.c from ${IN}/spadaction3d.c.pamphlet
+${MIDINT}/spadaction3d.c: ${BOOK}
+	@ echo 55 ${MIDINT}/spadaction3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/spadaction3d.c.pamphlet >spadaction3d.c )
+	${TANGLE} -R"view3d/spadaction3d.c" ${BOOK} >spadaction3d.c )
 	
-${MIDOBJ}/spadaction3d.o: ${HEADERS} ${LINC}/mode.h ${MIDINT}/spadaction3d.c
-	@ echo 56 making ${MIDOBJ}/spadActionbut3d.o from ${MIDINT}/spadActionbut3d.c
+${MIDOBJ}/spadaction3d.o: ${MIDINT}/spadaction3d.c
+	@ echo 56 making ${MIDOBJ}/spadActionbut3d.o \
+            from ${MIDINT}/spadActionbut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/spadaction3d.c )
 
-${DOC}/spadaction3d.c.dvi: ${IN}/spadaction3d.c.pamphlet 
-	@echo 57 making ${DOC}/spadaction3d.c.dvi from ${IN}/spadaction3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/spadaction3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} spadaction3d.c ; \
-	rm -f ${DOC}/spadaction3d.c.pamphlet ; \
-	rm -f ${DOC}/spadaction3d.c.tex ; \
-	rm -f ${DOC}/spadaction3d.c )
-
-
-${MIDINT}/stuff3d.c: ${IN}/stuff3d.c.pamphlet
-	@ echo 58 ${MIDINT}/stuff3d.c from ${IN}/stuff3d.c.pamphlet
+${MIDINT}/stuff3d.c: ${BOOK}
+	@ echo 58 ${MIDINT}/stuff3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/stuff3d.c.pamphlet >stuff3d.c )
+	${TANGLE} -R"view3d/stuff3d.c" ${BOOK} >stuff3d.c )
 	
-${MIDOBJ}/stuff3d.o: ${HEADERS} ${MIDINT}/stuff3d.c
+${MIDOBJ}/stuff3d.o: ${MIDINT}/stuff3d.c
 	@ echo 59 making ${MIDOBJ}/stuffbut3d.o from ${MIDINT}/stuffbut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/stuff3d.c )
 
-${DOC}/stuff3d.c.dvi: ${IN}/stuff3d.c.pamphlet 
-	@echo 60 making ${DOC}/stuff3d.c.dvi from ${IN}/stuff3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/stuff3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} stuff3d.c ; \
-	rm -f ${DOC}/stuff3d.c.pamphlet ; \
-	rm -f ${DOC}/stuff3d.c.tex ; \
-	rm -f ${DOC}/stuff3d.c )
-
-
-${MIDINT}/surface3d.c: ${IN}/surface3d.c.pamphlet
-	@ echo 61 ${MIDINT}/surface3d.c from ${IN}/surface3d.c.pamphlet
+${MIDINT}/surface3d.c: ${BOOK}
+	@ echo 61 ${MIDINT}/surface3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/surface3d.c.pamphlet >surface3d.c )
+	${TANGLE} -R"view3d/surface3d.c" ${BOOK} >surface3d.c )
 	
-${MIDOBJ}/surface3d.o: ${HEADERS} ${IN}/draw.h ${MIDINT}/surface3d.c
+${MIDOBJ}/surface3d.o: ${MIDINT}/surface3d.c
 	@ echo 62 making ${MIDOBJ}/surfacebut3d.o from ${MIDINT}/surfacebut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/surface3d.c )
 
-${DOC}/surface3d.c.dvi: ${IN}/surface3d.c.pamphlet 
-	@echo 63 making ${DOC}/surface3d.c.dvi from ${IN}/surface3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/surface3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} surface3d.c ; \
-	rm -f ${DOC}/surface3d.c.pamphlet ; \
-	rm -f ${DOC}/surface3d.c.tex ; \
-	rm -f ${DOC}/surface3d.c )
-
-
-${MIDINT}/transform3d.c: ${IN}/transform3d.c.pamphlet
-	@ echo 64 ${MIDINT}/transform3d.c from ${IN}/transform3d.c.pamphlet
+${MIDINT}/transform3d.c: ${BOOK}
+	@ echo 64 ${MIDINT}/transform3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/transform3d.c.pamphlet >transform3d.c )
+	${TANGLE} -R"view3d/transform3d.c" ${BOOK} >transform3d.c )
 	
-${MIDOBJ}/transform3d.o: ${HEADERS} ${MIDINT}/transform3d.c
-	@ echo 65 making ${MIDOBJ}/transformbut3d.o from ${MIDINT}/transformbut3d.c
+${MIDOBJ}/transform3d.o: ${MIDINT}/transform3d.c
+	@ echo 65 making ${MIDOBJ}/transformbut3d.o \
+             from ${MIDINT}/transformbut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/transform3d.c )
 
-${DOC}/transform3d.c.dvi: ${IN}/transform3d.c.pamphlet 
-	@echo 66 making ${DOC}/transform3d.c.dvi from ${IN}/transform3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/transform3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} transform3d.c ; \
-	rm -f ${DOC}/transform3d.c.pamphlet ; \
-	rm -f ${DOC}/transform3d.c.tex ; \
-	rm -f ${DOC}/transform3d.c )
-
-
-${MIDINT}/viewport3d.c: ${IN}/viewport3d.c.pamphlet
-	@ echo 67 ${MIDINT}/viewport3d.c from ${IN}/viewport3d.c.pamphlet
+${MIDINT}/viewport3d.c: ${BOOK}
+	@ echo 67 ${MIDINT}/viewport3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/viewport3d.c.pamphlet >viewport3d.c )
+	${TANGLE} -R"view3d/viewport3d.c" ${BOOK} >viewport3d.c )
 	
-${MIDOBJ}/viewport3d.o: ${HEADERS} ${IN}/draw.h ${IN}/static.h ${IN}/volume.h \
-	${BIT}/spadbitmap.bitmap  ${BIT}/spadmask.mask ${MIDINT}/viewport3d.c
-	@ echo 68 making ${MIDOBJ}/viewportbut3d.o from ${MIDINT}/viewportbut3d.c
+${MIDOBJ}/viewport3d.o: ${MIDINT}/viewport3d.c
+	@ echo 68 making ${MIDOBJ}/viewportbut3d.o \
+              from ${MIDINT}/viewportbut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/viewport3d.c )
 
-${DOC}/viewport3d.c.dvi: ${IN}/viewport3d.c.pamphlet 
-	@echo 69 making ${DOC}/viewport3d.c.dvi from ${IN}/viewport3d.c.pamphlet 
-	(cd ${DOC} ; \
-	cp ${IN}/viewport3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} viewport3d.c ; \
-	rm -f ${DOC}/viewport3d.c.pamphlet ; \
-	rm -f ${DOC}/viewport3d.c.tex ; \
-	rm -f ${DOC}/viewport3d.c )
-
-
-${MIDINT}/volume3d.c: ${IN}/volume3d.c.pamphlet
-	@ echo 70 ${MIDINT}/volume3d.c from ${IN}/volume3d.c.pamphlet
+${MIDINT}/volume3d.c: ${BOOK}
+	@ echo 70 ${MIDINT}/volume3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/volume3d.c.pamphlet >volume3d.c )
+	${TANGLE} -R"view3d/volume3d.c" ${BOOK} >volume3d.c )
 	
-${MIDOBJ}/volume3d.o: ${HEADERS} ${IN}/cpanel.h ${IN}/process.h \
-        ${IN}/volume.h ${BIT}/volume.bitmap ${BIT}/volume.mask \
-        ${MIDINT}/volume3d.c
+${MIDOBJ}/volume3d.o: ${MIDINT}/volume3d.c
 	@ echo 71 making ${MIDOBJ}/volumebut3d.o from ${MIDINT}/volumebut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/volume3d.c )
 
-${DOC}/volume3d.c.dvi: ${IN}/volume3d.c.pamphlet 
-	@echo 72 making ${DOC}/volume3d.c.dvi from ${IN}/volume3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/volume3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} volume3d.c ; \
-	rm -f ${DOC}/volume3d.c.pamphlet ; \
-	rm -f ${DOC}/volume3d.c.tex ; \
-	rm -f ${DOC}/volume3d.c )
-
-
-${MIDINT}/write3d.c: ${IN}/write3d.c.pamphlet
-	@ echo 73 ${MIDINT}/write3d.c from ${IN}/write3d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/write3d.c.pamphlet >write3d.c )
+${MIDINT}/write3d.c: ${BOOK}
+	@ echo 73 ${MIDINT}/write3d.c from ${BOOK}
+	@( cd ${MIDINT} ; ${TANGLE} -R"view3d/write3d.c" ${BOOK} >write3d.c )
 	
-${MIDOBJ}/write3d.o: ${HEADERS} ${LINC}/write.h ${MIDINT}/write3d.c
+${MIDOBJ}/write3d.o: ${MIDINT}/write3d.c
 	@ echo 74 making ${MIDOBJ}/writebut3d.o from ${MIDINT}/writebut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/write3d.c )
 
-${DOC}/write3d.c.dvi: ${IN}/write3d.c.pamphlet 
-	@echo 75 making ${DOC}/write3d.c.dvi from ${IN}/write3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/write3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} write3d.c ; \
-	rm -f ${DOC}/write3d.c.pamphlet ; \
-	rm -f ${DOC}/write3d.c.tex ; \
-	rm -f ${DOC}/write3d.c )
-
-
 ${OUT}/view3d: ${OBJS} ${GDRAW_OBJS} ${LIB}/bsdsignal.o ${LIB}/util.o \
                ${LIB}/xshade.o ${LIB}/halloc.o ${LIB}/pixmap.o \
                ${LIB}/spadcolors.o ${LIB}/xspadfill.o ${LIB}/xdither.o 
@@ -15898,20 +15657,13 @@ ${OUT}/view3d: ${OBJS} ${GDRAW_OBJS} ${LIB}/bsdsignal.o ${LIB}/util.o \
 	${LIB}/pixmap.o ${LIB}/spadcolors.o ${LIB}/xspadfill.o \
 	${LIB}/xdither.o -o ${OUT}/view3d $(LDFLAGS) -lXpm
 
-
-clean: 
-	@ echo 79 cleaning ${IN}/view3d
-
-document: 
-	@ echo 80 documenting ${IN}/view3d
-
 @
-\section{mesh3d.c.pamphlet}
-<<view3d/mesh3d.c.pamphlet>>=
+\section{mesh3d.c}
+<<view3d/mesh3d.c>>=
 #define _MESH3D_C
 #include <math.h>
 
-#include "header.h"
+<<view3d/header.h>>
 #include "all-3d.h1"
 
 /***************************************************************************
@@ -15992,8 +15744,8 @@ dotProduct(float * a,float *b,int size)
 } /* dotProduct() */
 
 @
-\section{msort3d.c.pamphlet}
-<<view3d/msort3d.c.pamphlet>>=
+\section{msort3d.c}
+<<view3d/msort3d.c>>=
 #define _MSORT3D_C
 
 /*****************************************************
@@ -16040,7 +15792,7 @@ dotProduct(float * a,float *b,int size)
  *****************************************************/
 
 
-#include "header.h"
+<<view3d/header.h>>
 
 #include "all-3d.h1"
 
@@ -16124,11 +15876,11 @@ msort(linkThing *p,int min,int max,int (*compare)(linkThing *, linkThing *))
 
 
 @
-\section{pot3d.c.pamphlet}
-<<view3d/pot3d.c.pamphlet>>=
+\section{pot3d.c}
+<<view3d/pot3d.c>>=
 #define _POT3D_C
 
-#include "header.h"
+<<view3d/header.h>>
 #include "all-3d.h1"
 
 /****************************/
@@ -16178,8 +15930,8 @@ getLinearPotValue(short eX,short eY,short xH,short yH)
 
 
 @
-\section{process3d.c.pamphlet}
-<<view3d/process3d.c.pamphlet>>=
+\section{process3d.c}
+<<view3d/process3d.c>>=
 #define _PROCESS3D_C
 
 #include <string.h>
@@ -16190,12 +15942,12 @@ getLinearPotValue(short eX,short eY,short xH,short yH)
 #include <sys/time.h>
 
 
-#include "header.h"
-#include "cpanel.h"
-#include "volume.h"
-#include "mode.h"
-#include "process.h"
-#include "draw.h"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
+<<view3d/volume.h>>
+<<include/mode.h>>
+<<view3d/process.h>>
+<<view3d/draw.h>>
 #include "com.h"
 
 
@@ -17750,14 +17502,14 @@ processEvents(void)
 #define clipPlaneMax 250.0
 #define clipPlaneIncrement 10.0
 @
-\section{project3d.c.pamphlet}
-<<view3d/project3d.c.pamphlet>>=
+\section{project3d.c}
+<<view3d/project3d.c>>=
 #define _PROJECT3D_C
 #include <string.h>
 
-#include "header.h"
-#include "draw.h"
-#include "mode.h"   /* for #define components */
+<<view3d/header.h>>
+<<view3d/draw.h>>
+<<include/mode.h>>
 
 #include "all-3d.h1"
 
@@ -18109,16 +17861,16 @@ projectStuff(float x,float y,float z,int *px,int *py,float *Pz)
   viewScale = temps;
 }
 @
-\section{quit3d.c.pamphlet}
-<<view3d/quit3d.c.pamphlet>>=
+\section{quit3d.c}
+<<view3d/quit3d.c>>=
 #define _QUIT3D_C
 
 #include <string.h>
-#include "header.h"
-#include "cpanel.h"
-#include "volume.h"
-#include "../include/purty/volume.bitmap"
-#include "../include/purty/volume.mask"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
+<<view3d/volume.h>>
+<<include/purty/volume.bitmap>>
+<<include/purty/volume.mask>>
 
 #include "util.h1"
 #include "gfun.h1"
@@ -18240,12 +17992,12 @@ drawQuitPanel(void)
 
 }  /* drawQuitPanel */
 @
-\section{quitbut3d.c.pamphlet}
-<<view3d/quitbut3d.c.pamphlet>>=
+\section{quitbut3d.c}
+<<view3d/quitbut3d.c>>=
 #define _QUITBUT3D_C
 
-#include "header.h"
-#include "cpanel.h"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
 
 #include "all-3d.h1"
 
@@ -18290,17 +18042,17 @@ initQuitButtons (buttonStruct *quitButtons)
 
 
 @
-\section{save3d.c.pamphlet}
-<<view3d/save3d.c.pamphlet>>=
+\section{save3d.c}
+<<view3d/save3d.c>>=
 #define _SAVE3D_C
 
 #include <stdio.h>
 #include <string.h>
-#include "header.h"
-#include "cpanel.h"
-#include "volume.h"
-#include "../include/purty/volume.bitmap"
-#include "../include/purty/volume.mask"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
+<<view3d/volume.h>>
+<<include/purty/volume.bitmap>>
+<<include/purty/volume.mask>>
 
 #include "gfun.h1"
 #include "xspadfill.h1"
@@ -18416,12 +18168,12 @@ drawSavePanel(void)
 
 }  /* drawSavePanel */
 @
-\section{savebut3d.c.pamphlet}
-<<view3d/savebut3d.c.pamphlet>>=
+\section{savebut3d.c}
+<<view3d/savebut3d.c>>=
 #define _SAVEBUT3D_C
 
-#include "header.h"
-#include "cpanel.h"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
 
 #include "all-3d.h1"
 int 
@@ -18476,17 +18228,17 @@ initSaveButtons (buttonStruct *saveButtons)
 
 
 @
-\section{smoothshade3d.c.pamphlet}
-<<view3d/smoothshade3d.c.pamphlet>>=
+\section{smoothshade3d.c}
+<<view3d/smoothshade3d.c>>=
 #define _SMOOTHSHADE_C
 
 #include <string.h>
 #include <math.h>
 #include <stdlib.h>
 
-#include "header.h"
-#include "draw.h"
-#include "volume.h"
+<<view3d/header.h>>
+<<view3d/draw.h>>
+<<view3d/volume.h>>
 #include "mode.h"   /* for #define components */
 
 #include "spadcolors.h1"
@@ -18497,11 +18249,6 @@ initSaveButtons (buttonStruct *saveButtons)
 
 #define SAFE_VALUE 892347
 
-
-
-
-
-
 char 
 get_cBuffer_axes(int ix)
 {
@@ -19469,27 +19216,18 @@ drawPhong(int dFlag)
 
 } /* drawPhong */
 
-
-
-
-
-
-
-
-
-
 @
-\section{spadaction3d.c.pamphlet}
-<<view3d/spadaction3d.c.pamphlet>>=
+\section{spadaction3d.c}
+<<view3d/spadaction3d.c>>=
 #define _SPADACTION3D_C
 
 #include <unistd.h>
 #include <stdio.h>
 #include <string.h>
 
-#include "header.h"
-#include "process.h"
-#include "draw.h"
+<<view3d/header.h>>
+<<view3d/process.h>>
+<<view3d/draw.h>>
 
 #include "util.h1"
 #include "all-3d.h1"
@@ -19872,11 +19610,11 @@ static float labels[basicScreen][7] = {
   {0,11,103,0,9,102,labelColor},
   {0,9,102,0,9,105,labelColor}};  
 @
-\section{stuff3d.c.pamphlet}
-<<view3d/stuff3d.c.pamphlet>>=
+\section{stuff3d.c}
+<<view3d/stuff3d.c>>=
 #define _STUFF3D_C
 
-#include "header.h"
+<<view3d/header.h>>
 
 #include  <stdlib.h>
 #include  <unistd.h>
@@ -19885,7 +19623,7 @@ static float labels[basicScreen][7] = {
 
 
 #include "gfun.h1"
-#include "spadcolors.h1"
+/*#include "spadcolors.h"*/
 #include "util.h1"
 
 #include "all-3d.h1"
@@ -19996,17 +19734,17 @@ goodbye(int sig)
 
 
 @
-\section{surface3d.c.pamphlet}
-<<view3d/surface3d.c.pamphlet>>=
+\section{surface3d.c}
+<<view3d/surface3d.c>>=
 #define _SURFACE3D_C
 
 #include <string.h>
 #include <math.h>
 #include <stdlib.h>
 
-#include "header.h"
-#include "draw.h"
-#include "mode.h"   /* for #define components */
+<<view3d/header.h>>
+<<view3d/draw.h>>
+<<include/mode.h>>
 #include "com.h"
 
 #include "xspadfill.h1"
@@ -20735,8 +20473,8 @@ equal (float x,float y)
 }
 
 @
-\section{testcol.c.pamphlet}
-<<view3d/testcol.c.pamphlet>>=
+\section{testcol.c}
+<<view3d/testcol.c>>=
 #define _MAIN3D_C
 #include <string.h>
 #include <stdio.h>
@@ -20745,9 +20483,9 @@ equal (float x,float y)
 #include <signal.h>
 #include <math.h>
 
-#include "header.h"
-#include "cpanel.h"
-#include "process.h"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
+<<view3d/process.h>>
 #include "bsdsignal.h"
 
 #include "bsdsignal.h1"
@@ -20757,8 +20495,8 @@ equal (float x,float y)
 #include "xshade.h1"
 #include "all-3d.h1"
 
-#include "spadbitmap.bitmap"
-#include "spadmask.mask"
+<<include/purty/spadbitmap.bitmap>>
+<<include/purty/spadmask.mask>>
 
 viewPoints      *viewport;
 GCptr           GChead=NULL;    /* ptr to head of ps GC linked list */
@@ -21300,11 +21038,11 @@ main(void)
 
 
 @
-\section{transform3d.c.pamphlet}
-<<view3d/transform3d.c.pamphlet>>=
+\section{transform3d.c}
+<<view3d/transform3d.c>>=
 #define _TRANSFORM3D_C
 
-#include "header.h"
+<<view3d/header.h>>
 
 #include "all-3d.h1"
 
@@ -21394,8 +21132,8 @@ TRANSLATE(float x,float y,float z,float xxT[4][4])
   xxT[3][0] = x;   xxT[3][1] = y;   xxT[3][2] = z;    xxT[3][3] = 1.0;
 }
 @
-\section{viewport3d.c.pamphlet}
-<<view3d/viewport3d.c.pamphlet>>=
+\section{viewport3d.c}
+<<view3d/viewport3d.c>>=
 #define _VIEWPORT3D_C
 
 #include <math.h>
@@ -21404,10 +21142,10 @@ TRANSLATE(float x,float y,float z,float xxT[4][4])
 #include <unistd.h>
 #include <stdlib.h>
 
-#include "spadbitmap.bitmap"
-#include "spadmask.mask"
+<<include/purty/spadbitmap.bitmap>>
+<<include/purty/spadmask.mask>>
 
-#include "header.h"
+<<view3d/header.h>>
     /*** definition for the axes and labels - this is the minimun that will be
 	 drawn on the window - thus allowing the user some idea of the
 	 orientation of the coordinate axes when rotating, etc. The
@@ -21415,10 +21153,10 @@ TRANSLATE(float x,float y,float z,float xxT[4][4])
 	 The mesh should be scaled to the range of [-100..100] in all
 	 directions.  axisRange defines the range...change the stuff below
 	 if that has changed. ***/
-#include "static.h"
-#include "draw.h"
-#include "volume.h"
-#include "mode.h"
+<<view3d/static.h>>
+<<view3d/draw.h>>
+<<view3d/volume.h>>
+<<include/mode.h>>
 
 #include "util.h1"
 #include "gfun.h1"
@@ -22255,19 +21993,19 @@ keepDrawingViewport(void)
 
 }
 @
-\section{volume3d.c.pamphlet}
-<<view3d/volume3d.c.pamphlet>>=
+\section{volume3d.c}
+<<view3d/volume3d.c>>=
 #define _VOLUME3D_C
 
 #include <math.h>
 #include <string.h>
 
-#include "header.h"
-#include "cpanel.h"
-#include "process.h"
-#include "volume.h"
-#include "../include/purty/volume.bitmap"
-#include "../include/purty/volume.mask"
+<<view3d/header.h>>
+<<view3d/cpanel.h>>
+<<view3d/process.h>>
+<<view3d/volume.h>>
+<<include/purty/volume.bitmap>>
+<<include/purty/volume.mask>>
 
 
 
@@ -23199,16 +22937,16 @@ drawVolumePanel (void)
 #define clipZButBotEndY ((BB-AA+EE+FF)/2)
 #endif
 @
-\section{write3d.c.pamphlet}
-<<view3d/write3d.c.pamphlet>>=
+\section{write3d.c}
+<<view3d/write3d.c>>=
 #define _WRITE3D_C
 
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "header.h"
-#include "write.h"
-#include "mode.h"
+<<view3d/header.h>>
+<<include/write.h>>
+<<include/mode.h>>
 
 
 #include "pixmap.h1"
@@ -23774,7 +23512,7 @@ extern	char		*envAXIOM;     /* environment variable AXIOM or DEVE */
 #include <string.h>
 
 #include "gdraws0.h"
-#include "g.h"
+<<include/g.h>>
 #include "hash.h"
 
 #include "hash.h1"
diff --git a/changelog b/changelog
index 1704d83..a5715bf 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20080604 tpd src/graph/Makefile make view3d from bookvol8
+20080604 tpd books/bookvol8 make view3d
 20080602 tpd src/graph/view2d removed.
 20080602 tpd src/graph/view2d/write2d.c removed, replace by bookvol8
 20080602 tpd src/graph/view2d/viewport2d.c removed, replace by bookvol8
diff --git a/src/graph/Makefile.pamphlet b/src/graph/Makefile.pamphlet
index 16267c2..1daad5b 100644
--- a/src/graph/Makefile.pamphlet
+++ b/src/graph/Makefile.pamphlet
@@ -304,19 +304,21 @@ gdrawsclean: ${SRC}/graph/gdraws/Makefile
 <<view3ddir>>=
 view3ddir: ${SRC}/graph/view3d/Makefile
 	@echo 9 making ${SRC}/graph/view3d
-	@mkdir -p ${INT}/graph/view3d
 	@mkdir -p ${OBJ}/${SYS}/graph/view3d
 	@mkdir -p ${OBJ}/${SYS}/lib
 	@mkdir -p ${OBJ}/${SYS}/graph/gdraws
 	@mkdir -p ${MNT}/${SYS}/lib
 	@mkdir -p ${MNT}/${SYS}/doc/src/graph
-	@(cd view3d ; ${ENV} ${MAKE} )
+	@(cd ${INT}/graph/view3d ; ${ENV} ${MAKE} )
+
+${SRC}/graph/view3d/Makefile: ${SPD}/books/bookvol8.pamphlet
+	@echo 10 making ${SRC}/graph/view3d/Makefile from \
+                ${SPD}/books/bookvol8.pamphlet
+	@mkdir -p ${INT}/graph/view3d
+	@( cd ${INT}/graph/view3d ; \
+	  ${TANGLE} -t8 -R"view3d/Makefile" \
+                   ${SPD}/books/bookvol8.pamphlet >Makefile )
 
-${SRC}/graph/view3d/Makefile: ${SRC}/graph/view3d/Makefile.pamphlet
-	@echo 10 making ${SRC}/graph/view3d/Makefile from ${SRC}/graph/view3d/Makefile.pamphlet
-	@( cd view3d ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-	   cp Makefile.dvi ${MNT}/${SYS}/doc/src/graph.view3d.Makefile.dvi )
 
 view3ddocument: ${SRC}/graph/view3d/Makefile
 	@echo 11 documenting ${SRC}/graph/view3d

\start
Date: Wed, 4 Jun 2008 04:43:35 -0400
From: Tim Daly
To: Ted Kosan
Subject: Re: APL, J, and Axiom documentation

>Another thing that comes across fairly clearly in the talk is that Sun
>is planning to use Fortress as a way to create a large scientific
>computing community just like Java was used to create a large "web
>commerce" community.  The marketing person in me can't help but think
>that Axiom's algorithms would be very useful for helping to achieve
>this goal.

<rant>

Oh, please, not ANOTHER attempt. I made myself rather unpopular at the
CalculusFormalLibre conference over this point. A meeting was held to
decide whether there should be an effort to create a new computer
algebra system.

I pointed out that Axiom had been around for about 22 years.
In that time it had a large number of contributors, roughly
300 man-years of research, and about 42 million dollars invested.
It was one of the four large commercial systems along with Maple,
Matlab, and Mathematica. (Axiom was not yet free at the
time but I had been in private discussion with NAG about it).

I did not believe (and still do not) that any new effort will get
that level of sustained funding over so many years. It makes more
sense to start from a prepared base. There are a large number of
not-very-interesting technical issues that need to be re-solved
if you start from scratch. It would be much more productive to
spend any additional resource starting from a prepared base. Then
researchers can add new algorithms and work on the mathematics
rather than the language/porting/graphics/library/interpreter
and all the other uninteresting-but-needed details.

I'm watching Sage struggle over what is essentially a solved problem
in Axiom, that is, how to handle coercion and still be efficient.
That would be fine if it was a research attempt to define a theory
detailing the full lattice of coercions based on category theory.
That would be a lasting contribution to the field of computational
mathematics and would create a much stronger foundation for everyone.

Instead I'm watching what appears to be an ad-hoc war over dynamic
lookup vs performance. Axiom achieves both, getting the dynamic
lookup from the interpreter and performance from the compiler.
Unfortunately Sage is python-based and does not have a compiler.
So this is turning into a python vs cython debate which has NO
long term benefits for the field.

There are many, many more of these debates ahead (eg. noncommutative
issues, OpenMath-like communication issues, non-pythonic type
hierarchies, variable scoping rules, invalid object constructions
(e.g. matrix of streams), simplification, etc.). None of the Sage
discussions of ad-hoc solutions are likely to be of any real
research interest or achieve long term advancement of the field.

Work is being done to rewrite things like symbolic integration
in python when Axiom contains correct, fast, and efficient code
written by the people who invented the theory (Davenport, Trager,
Bronstein, etc.). The Axiom code is well tested and sound. A python
rewrite does not represent an advance.

I do hope that Sage is successful, in whatever sense that might be
taken, since it might expand the number of people who get interested
in the computational mathematics field. But I have to say that I
believe the effort would be much better spent concentrated on a
major code base such as Axiom or Maxima.

Clearly I have an interest in Axiom being chosen so my voice is
highly biased and, therefore, quite suspect and worth ignoring.
Despite that, I do believe I raise a valid point.

Watching SUN pour 42 million dollars into climbing the same mountain
that others have already climbed would be heartbreaking.

</rant>

\start
Date: Wed, 4 Jun 2008 06:20:16 -0500
From: Gabriel Dos Reis
To: Tim Daly
Subject: Re: APL, J, and Axiom documentation

On Wed, Jun 4, 2008 at 3:43 AM, Tim Daly wrote:
>>Another thing that comes across fairly clearly in the talk is that Sun
>>is planning to use Fortress as a way to create a large scientific
>>computing community just like Java was used to create a large "web
>>commerce" community.  The marketing person in me can't help but think
>>that Axiom's algorithms would be very useful for helping to achieve
>>this goal.
>
> <rant>
>
> Oh, please, not ANOTHER attempt. I made myself rather unpopular at the
> CalculusFormalLibre conference over this point. A meeting was held to
> decide whether there should be an effort to create a new computer
> algebra system.

I participated in that conference.  I think people just disagreed and
did what they thought they should do.  I don't think anyone had any
specific feeling with respect to you because you were of different
opinion.

\start
Date: Wed, 04 Jun 2008 07:13:26 -0700
From: Ed Borasky
To: Tim Daly
Subject: Re: APL, J, and Axiom documentation

root wrote:
> J/APL has advantage of forcing you to think about the solution to
> a problem in a completely orthogonal way to the usual programming
> paradigms. In my experience the "re-expression" of an idea in a
> second, very different form dramatically highlights the design
> decisions made in the first form. Since the original authors are
> no longer available we need to tease out the design decisions.
> 
> Unfortunately I'm unaware of any category or strongly typed work in J
> so I don't think the idea carries much weight beyond the numerics. I
> added a piecewise Gamma function to Axiom in February and have been
> looking at the special functions since then. J seems to be a good fit
> in this area, hence the original remark.

Well ... at one time I claimed there were only three "original" 
programming languages -- Lisp, APL and Forth. So if we call Axiom a 
"dialect of Lisp", recoding pieces of it in an APL dialect would give us 
two thirds of the spectrum. Perhaps someone would pick up the third??

But I really think the YAGNI principle needs to be observed here. You 
Ain't Gonna Need It! :)

\start
Date: Wed, 04 Jun 2008 07:24:36 -0700
From: Ed Borasky
To: Tim Daly
Subject: Re: APL, J, and Axiom documentation

root wrote:
> I had a 2D parser on my desk at IBM. Our Scratchpad group had an
> effort to do handwritten input. Maple had one also but I don't know
> what the outcome was. I gave a sample at ECCAD in Phila. If you ignore
> the handwritten portion of the problem it seems you could create a
> parser to handle 2D linear typewritten input. Thus a single program
> assignment statement such as:
> 
>             b
>      a  = ------
>              t
>             p q
> 
> Ideally it would be print/read equivalent to Axiom's Charybdis output.
> Ron Avitzur had a really nice, but small, subset of this.
> Sounds like a fantastic student project to me.

I'll have to go grubbing about in my collection of ancient history, but 
IIRC there was a language that did this -- 2D parsing -- on a 
Flexowriter in 1965. :)

Really -- I'm not making it up!

> I've had a small amount of correspondence with Guy Steele about
> whether Fortress can support Provisos natively but I've not actually
> seen the language up until now.
> 
> I'm not sure what ability Fortress will have to handle Axiom-style
> types. They aren't required for Fortran and Steele seems to have taken
> Fortran as the target replacement language. I'm also not sure if it
> can handle the category/domain questions.

Everybody is waiting with bated breath for Fortress. About the only 
thing it has going for it in my humble opinion is the marketing weight 
of Sun. There are real languages that really exist now that will do 
everything I want as efficiently as possible. They are called Scheme, 
Forth, Ruby, Axiom, Maxima, Common Lisp, Fortran, C, Perl, R, ...

> As for funding Axiom from anywhere by anyone... sigh.  The only hope I
> see for funding is if
> 
>   (a) Axiom is deeply documented,
>   (b) Computational Mathematics becomes its own department in many schools,
>   (c) Axiom gets picked up as the canonical teaching platform.

The thing is that Axiom *was* at one time funded -- it was a commercial 
product. It couldn't compete in its market place and now resides 
(mostly) in open source. Now there's Sage, which promises to give other 
commercial math packages a run for their money.

\start
Date: Wed, 4 Jun 2008 12:54:06 -0400
From: Tim Daly
To: Ed Borasky
Subject: Re: APL, J, and Axiom documentation

>> J/APL has advantage of forcing you to think about the solution to
>> a problem in a completely orthogonal way to the usual programming
>> paradigms. In my experience the "re-expression" of an idea in a
>> second, very different form dramatically highlights the design
>> decisions made in the first form. Since the original authors are
>> no longer available we need to tease out the design decisions.
>> 
>> Unfortunately I'm unaware of any category or strongly typed work in J
>> so I don't think the idea carries much weight beyond the numerics. I
>> added a piecewise Gamma function to Axiom in February and have been
>> looking at the special functions since then. J seems to be a good fit
>> in this area, hence the original remark.
>
>Well ... at one time I claimed there were only three "original" 
>programming languages -- Lisp, APL and Forth. So if we call Axiom a 
>"dialect of Lisp", recoding pieces of it in an APL dialect would give us 
>two thirds of the spectrum. Perhaps someone would pick up the third??
>
>But I really think the YAGNI principle needs to be observed here. You 
>Ain't Gonna Need It! :)

Essentially I've been spending a fair amount of time thinking about
Axiom's documentation mechanisms, Axiom's crystal work, and other
design issues. I've read a couple books from the design literature
(and now have joined the dangerously undereducated).

I've been spending time looking at the special functions since
January. One of the insights was that while making the equations
into procedures I was essentially "thinking in APL" (way back in
college I used APL on IBM selectric typeball terminals).

The connection of these two streams led me to look at the idea of
using APL for documentation purposes. Further investigation led me
to J, the ascii version of APL.

While I see the intellectual value of re-thinking by re-coding I'm
not sure J is a worthwhile idea, especially since the J language does
not support Axiom types well. Plus, as Scott points out, it is rather
a "write-only" language so its not clear that it helps anyone but the
person writing the original document.




If we were to re-think by re-coding it would make a lot more sense
to rewrite the algebra into Aldor. We might have the chance to
actually replace some of the existing algebra with the "documented in
Aldor" version. However, this idea comes up once a month and it isn't
going to happen anytime soon. The only possible path I see is the
effort by Gaby to define the "axiom virtual machine". This would 
give us a clean API under the algebra which could then be implemented
in Aldor, providing a new portable base.

Unfortunately my guess is that the axiom virtual machine, if it was
reimplemented in Aldor, would likely invoke Greenspun's Tenth Rule:
"Any sufficiently complicated C or Fortran program contains an ad hoc,
informally-specified, bug-ridden, slow implementation of half of
common lisp." However, if were implemented by cleaning up and
documenting the current version it would not involve that much rework.

One possible idea is to define an API domain which encapsulates the
lisp calls into one domain that exports spad/aldor functionality.
This collects all the lisp interface issues into one domain. I'm
not sure if this is technically possible though since I don't know
what the function signatures would look like. They may have to be
very special purpose signatures.





In any case, documentation ideas are front-and-center in my attention.

The new firefox browser front end is giving us access to a lot of new
tools. The latest task is to try to use JIT, the javascript information
visualization toolkit (see
http://blog.thejit.org/javascript-information-visualization-toolkit-jit)
We can put the algebra hierarchy into these kind of graphs.
Each graph node would be linked to the documentation and sources for
the underlying implementation. 

A recoding of this kind of visualization can give the underlying
skeletal machinery to the facets of the crystal. Each node in the
hyperbolic tree is shown onscreen as a crystal facet. Some details of
interest to work out include the ability to "in place edit" in the
browser facet window (nearly possible now) and have the result
recompile into place (somewhat more complex since this would require
restarting Axiom under the crystal).

If we wrap a crystal around each of the Axiom books 
(http://axiom.axiom-developer.org/axiom-website/documentation.html), 
and put the whole pile into a git-based repository, then each
user could have a complete, personal clone of Axiom. Completed
work could be git-pushed or git-pulled thru a browser "drag-and-drop"
interface.

Architecturally this isn't that far from the possible, which just 
leaves the minor issue of coding :-)

\start
Date: Wed, 04 Jun 2008 13:04:50 -0700
From: Arthur Ralfs
To: list
Subject: aldor concern

Tim, Waldek, Gaby,

It should be clear by now that I am only interested in working
with software which is completely free in the sense of Stallman.
For this reason I have not touched aldor.

This recent quote from Tim has me concerned:
 

"If we were to re-think by re-coding it would make a lot more sense
to rewrite the algebra into Aldor."


so I put the question if any of you are 100% committed to maintaining
your project as a free software project.  I do not object to supporting 
aldor
for the end user but I will not continue using axiom/fricas/open-axiom if
aldor becomes an essential component.

\start
Date: Wed, 4 Jun 2008 18:22:56 -0400
From: Tim Daly
To: Arthur Ralfs
Subject: Re: aldor concern

>so I put the question if any of you are 100% committed to maintaining
>your project as a free software project.  I do not object to
>supporting aldor for the end user but I will not continue using
>axiom/fricas/open-axiom if aldor becomes an essential component.

The Aldor software cannot become an essential component of Axiom due
to license issues. If the license changes I'd consider it for a more
fundamental role. However, additional, optional software components
can use the Aldor software. I have an Aldor branch locally but I am
reluctant to distribute it. One, among the many reasons, is that 
Aldor would need to be literate and I won't make that effort due to
the license.

While I support the right to attempt to monetize Aldor that does not
imply that I support the right to use my work to monetize Aldor. 

Support for the Aldor LANGUAGE using Spad compiler modifications, as
opposed to using the Aldor compiler software, is a feasible goal. The
Aldor language and the Spad language share a lot of common semantics.
Features like post-facto extensions imply the ability to extend the
domain vector dynamically which is certainly possible in Axiom.
Features like making types into first-class objects are also quite
possible in Axiom since types already exist as objects in the system.

Virtually all of the Axiom work I've done over the years has been and
will continue to be freely available. My philosophy is that we are
working on a new scientific discipline called Computational
Mathematics. As Josef Peiper points out in his book "Leisure, The
Basis of Culture", this is work done for its own sake. While I wouldn't
object to being paid to do it, I wouldn't do it for the pay. :-)

So be assured that Axiom will remain free.

\start
Date: 04 Jun 2008 17:13:26 -0500
From: Gabriel Dos Reis
To: list
Subject: Re: [fricas-devel] aldor concern

Arthur Ralfs writes:

| Tim, Waldek, Gaby,
| 
| It should be clear by now that I am only interested in working
| with software which is completely free in the sense of Stallman.
| For this reason I have not touched aldor.
| 
| This recent quote from Tim has me concerned:
|  
| 
| "If we were to re-think by re-coding it would make a lot more sense
| to rewrite the algebra into Aldor."
| 
| 
| so I put the question if any of you are 100% committed to maintaining
| your project as a free software project.  I do not object to supporting 
| aldor
| for the end user but I will not continue using axiom/fricas/open-axiom if
| aldor becomes an essential component.

OpenAxiom is a free software and will remain so.
OpenAxiom is under the BSD license and will remain so.

OpenAxiom will support libraries written in Aldor, but OpenAxiom's own 
algebra will not depend on Aldor.  

\start
Date: Wed, 04 Jun 2008 17:09:59 -0700
From: Arthur Ralfs
To: list
Subject: re: aldor concerns

Tim, Waldek, Gaby,

Thank you very much for allaying my fears about
creeping aldorization.

\start
Date: Thu, 5 Jun 2008 01:49:44 -0500
From: Tim Daly
To: list
Subject: 20080605.01.tpd.patch (remove view3d directory	and files)

The view3d files are now part of bookvol8.
They have been removed from the source tree.
=======================================================================
(patch text omitted due to size)

\start
Date: Fri, 6 Jun 2008 03:45:08 -0500
From: Tim Daly
To: list
Subject: 20080606.01.tpd.patch (make viewman from bookvol8)

Make the viewman program directly from bookvol8
=========================================================================
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index 6f7e98f..26c0cac 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -2653,8 +2653,8 @@ static char volumeMask_bits[] = {
 @
 
 \chapter{viewman}
-\subsection{cleanup.c.pamphlet}
-<<viewman/cleanup.c.pamphlet>>=
+\subsection{cleanup.c}
+<<viewman/cleanup.c>>=
 #define _CLEANUP_C
 
 #include <stdlib.h>
@@ -2667,7 +2667,7 @@ static char volumeMask_bits[] = {
 #include <signal.h>
 #include <sys/wait.h>
 
-#include "viewman.h"
+<<viewman/viewman.h>>
 #include "actions.h"
 
 #include "util.h1"
@@ -2829,8 +2829,8 @@ goodbye(int sig)
 
 
 @
-\subsection{fun2d.c.pamphlet}
-<<viewman/fun2d.c.pamphlet>>=
+\subsection{fun2d.c}
+<<viewman/fun2d.c>>=
 #define _FUN2D_C
 
 #include <stdlib.h>
@@ -2840,7 +2840,7 @@ goodbye(int sig)
 
 
 
-#include "viewman.h"
+<<viewman/viewman.h>>
 #include "actions.h"
 
 #include "util.h1"
@@ -3173,8 +3173,8 @@ sendGraphToView2D(int i,int there,viewManager *viewport,
 }
 
 @
-\subsection{fun3d.c.pamphlet}
-<<viewman/fun3d.c.pamphlet>>=
+\subsection{fun3d.c}
+<<viewman/fun3d.c>>=
 #define _FUN3D_C
 
 #include <stdlib.h>
@@ -3182,7 +3182,7 @@ sendGraphToView2D(int i,int there,viewManager *viewport,
 #include <stdio.h>
 #include <string.h>
 
-#include "viewman.h"
+<<viewman/viewman.h>>
 <<include/mode.h>>
 #include "actions.h"
   
@@ -3528,11 +3528,11 @@ extern int checkClosedChild,
            foundBrokenPipe;
 extern char propertyBuffer[];
 @
-\subsection{make2d.c.pamphlet}
-<<viewman/make2d.c.pamphlet>>=
+\subsection{make2d.c}
+<<viewman/make2d.c>>=
 #define _MAKE2D_C
 
-#include "viewman.h"
+<<viewman/viewman.h>>
 
 #include "sockio-c.h1"
 #include "make2d.h1"
@@ -3574,13 +3574,13 @@ makeView2DFromSpadData(view2DStruct *viewdata,graphStateStruct graphState[])
   }
 }
 @
-\subsection{make3d.c.pamphlet}
-<<viewman/make3d.c.pamphlet>>=
+\subsection{make3d.c}
+<<viewman/make3d.c>>=
 #define _MAKE3D_C
 
 #include <stdlib.h>
 
-#include "viewman.h"
+<<viewman/viewman.h>>
 <<include/mode.h>>
 
 #include "sockio-c.h1"
@@ -3702,7 +3702,7 @@ makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport)
 @
 \subsection{Makefile.pamphlet}
 <<viewman/Makefile>>=
-IN=	${SRC}/graph/viewman
+BOOK=${SPD}/books/bookvol8.pamphlet
 MIDINT=	${INT}/graph/viewman
 MIDOBJ=	${OBJ}/${SYS}/graph/viewman
 OUT=	${MNT}/${SYS}/lib
@@ -3716,217 +3716,116 @@ LINC=	${SRC}/graph/include
 GINC=	${SRC}/include
 
 
-CFLAGS  = ${CCF} -I${LINC} -I${GINC} -I${IN}
+CFLAGS  = ${CCF} -I${LINC} -I${GINC} 
 LDFLAGS = ${LDF} -lX11
 
-DOCFILES=${DOC}/viewman.c.dvi ${DOC}/sselect.c.dvi ${DOC}/cleanup.c.dvi \
-         ${DOC}/fun2d.c.dvi   ${DOC}/make2d.c.dvi  ${DOC}/makegraph.c.dvi \
-         ${DOC}/fun3d.c.dvi   ${DOC}/make3d.c.dvi  ${DOC}/readview.c.dvi
-
 OBJS=   ${MIDOBJ}/viewman.o ${MIDOBJ}/readview.o  ${MIDOBJ}/make3d.o \
 	${MIDOBJ}/fun3d.o   ${MIDOBJ}/makegraph.o ${MIDOBJ}/make2d.o \
         ${MIDOBJ}/fun2d.o   ${MIDOBJ}/cleanup.o   ${MIDOBJ}/sselect.o \
         ${OBJ}/${SYS}/lib/sockio-c.o
 
-HEADERS= ${IN}/viewman.h       ${LINC}/component.h ${LINC}/view2d.h  \
+HEADERS= ${LINC}/component.h ${LINC}/view2d.h  \
          ${LINC}/view3d.h      ${LINC}/tube.h      ${LINC}/actions.h \
          ${LINC}/viewcommand.h ${GINC}/com.h
 
-all: ${OBJS} ${OUT}/viewman ${DOCFILES}
-	@ echo 30 finished ${IN}
+all: ${OBJS} ${OUT}/viewman 
+	@ echo 30 finished viewman from bookvol8
 
 ${OUT}/viewman: ${OBJS} ${LIB}/util.o ${LIB}/bsdsignal.o
 	@ echo 1 linking ${OUT}/viewman
-	@ ${CC} ${OBJS} -o ${OUT}/viewman ${LIB}/util.o ${LIB}/bsdsignal.o ${LDFLAGS}
+	@ ${CC} ${OBJS} -o ${OUT}/viewman ${LIB}/util.o \
+            ${LIB}/bsdsignal.o ${LDFLAGS}
 
-
-${MIDINT}/viewman.c: ${IN}/viewman.c.pamphlet
-	@ echo 2 ${MIDINT}/viewman.c from ${IN}/viewman.c.pamphlet
+${MIDINT}/viewman.c: ${BOOK}
+	@ echo 2 ${MIDINT}/viewman.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/viewman.c.pamphlet >viewman.c )
+	${TANGLE} -R"viewman/viewman.c" ${BOOK} >viewman.c )
 
 ${MIDOBJ}/viewman.o: ${HEADERS} ${MIDINT}/viewman.c
 	@ echo 3 making ${MIDOBJ}/viewman.o from ${MIDINT}/viewman.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/viewman.c )
 
-${DOC}/viewman.c.dvi: ${IN}/viewman.c.pamphlet 
-	@echo 4 making ${DOC}/viewman.c.dvi from ${IN}/viewman.c.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/viewman.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} viewman.c ; \
-	rm -f ${DOC}/viewman.c.pamphlet ; \
-	rm -f ${DOC}/viewman.c.tex ; \
-	rm -f ${DOC}/viewman.c )
-
-
-${MIDINT}/sselect.c: ${IN}/sselect.c.pamphlet
-	@ echo 5 ${MIDINT}/sselect.c from ${IN}/sselect.c.pamphlet
+${MIDINT}/sselect.c: ${BOOK}
+	@ echo 5 ${MIDINT}/sselect.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/sselect.c.pamphlet >sselect.c )
+	${TANGLE} -R"viewman/sselect.c" ${BOOK} >sselect.c )
 
 ${MIDOBJ}/sselect.o: ${HEADERS} ${MIDINT}/sselect.c
 	@ echo 6 making ${MIDOBJ}/sselect.o from ${MIDINT}/sselect.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/sselect.c )
 
-${DOC}/sselect.c.dvi: ${IN}/sselect.c.pamphlet 
-	@echo 7 making ${DOC}/sselect.c.dvi from ${IN}/sselect.c.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/sselect.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} sselect.c ; \
-	rm -f ${DOC}/sselect.c.pamphlet ; \
-	rm -f ${DOC}/sselect.c.tex ; \
-	rm -f ${DOC}/sselect.c )
-
-
-${MIDINT}/cleanup.c: ${IN}/cleanup.c.pamphlet
-	@ echo 8 ${MIDINT}/cleanup.c from ${IN}/cleanup.c.pamphlet
+${MIDINT}/cleanup.c: ${BOOK}
+	@ echo 8 ${MIDINT}/cleanup.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/cleanup.c.pamphlet >cleanup.c )
+	${TANGLE} -R"viewman/cleanup.c" ${BOOK} >cleanup.c )
 
 ${MIDOBJ}/cleanup.o: ${HEADERS} ${MIDINT}/cleanup.c
 	@ echo 9 making ${MIDOBJ}/cleanup.o from ${MIDINT}/cleanup.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/cleanup.c )
 
-${DOC}/cleanup.c.dvi: ${IN}/cleanup.c.pamphlet 
-	@echo 10 making ${DOC}/cleanup.c.dvi from ${IN}/cleanup.c.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/cleanup.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} cleanup.c ; \
-	rm -f ${DOC}/cleanup.c.pamphlet ; \
-	rm -f ${DOC}/cleanup.c.tex ; \
-	rm -f ${DOC}/cleanup.c )
-
-
-${MIDINT}/fun2d.c: ${IN}/fun2d.c.pamphlet
-	@ echo 11 ${MIDINT}/fun2d.c from ${IN}/fun2d.c.pamphlet
+${MIDINT}/fun2d.c: ${BOOK}
+	@ echo 11 ${MIDINT}/fun2d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/fun2d.c.pamphlet >fun2d.c )
+	${TANGLE} -R"viewman/fun2d.c" ${BOOK} >fun2d.c )
 
 ${MIDOBJ}/fun2d.o: ${HEADERS} ${MIDINT}/fun2d.c
 	@ echo 12 making ${MIDOBJ}/fun2d.o from ${MIDINT}/fun2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/fun2d.c )
 
-${DOC}/fun2d.c.dvi: ${IN}/fun2d.c.pamphlet 
-	@echo 13 making ${DOC}/fun2d.c.dvi from ${IN}/fun2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/fun2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} fun2d.c ; \
-	rm -f ${DOC}/fun2d.c.pamphlet ; \
-	rm -f ${DOC}/fun2d.c.tex ; \
-	rm -f ${DOC}/fun2d.c )
-
-
-${MIDINT}/make2d.c: ${IN}/make2d.c.pamphlet
-	@ echo 14 ${MIDINT}/make2d.c from ${IN}/make2d.c.pamphlet
+${MIDINT}/make2d.c: ${BOOK}
+	@ echo 14 ${MIDINT}/make2d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/make2d.c.pamphlet >make2d.c )
+	${TANGLE} -R"viewman/make2d.c" ${BOOK} >make2d.c )
 
 ${MIDOBJ}/make2d.o: ${HEADERS} ${MIDINT}/make2d.c
 	@ echo 15 making ${MIDOBJ}/make2d.o from ${MIDINT}/make2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/make2d.c )
 
-${DOC}/make2d.c.dvi: ${IN}/make2d.c.pamphlet 
-	@echo 16 making ${DOC}/make2d.c.dvi from ${IN}/make2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/make2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} make2d.c ; \
-	rm -f ${DOC}/make2d.c.pamphlet ; \
-	rm -f ${DOC}/make2d.c.tex ; \
-	rm -f ${DOC}/make2d.c )
-
-
-${MIDINT}/makegraph.c: ${IN}/makegraph.c.pamphlet
-	@ echo 17 ${MIDINT}/makegraph.c from ${IN}/makegraph.c.pamphlet
+${MIDINT}/makegraph.c: ${BOOK}
+	@ echo 17 ${MIDINT}/makegraph.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/makegraph.c.pamphlet >makegraph.c )
+	${TANGLE} -R"viewman/makegraph.c" ${BOOK} >makegraph.c )
 
 ${MIDOBJ}/makegraph.o: ${HEADERS} ${MIDINT}/makegraph.c
 	@ echo 18 making ${MIDOBJ}/makegraph.o from ${MIDINT}/makegraph.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/makegraph.c )
 
-${DOC}/makegraph.c.dvi: ${IN}/makegraph.c.pamphlet 
-	@echo 19 making ${DOC}/makegraph.c.dvi from ${IN}/makegraph.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/makegraph.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} makegraph.c ; \
-	rm -f ${DOC}/makegraph.c.pamphlet ; \
-	rm -f ${DOC}/makegraph.c.tex ; \
-	rm -f ${DOC}/makegraph.c )
-
-
-${MIDINT}/fun3d.c: ${IN}/fun3d.c.pamphlet
-	@ echo 20 ${MIDINT}/fun3d.c from ${IN}/fun3d.c.pamphlet
+${MIDINT}/fun3d.c: ${BOOK}
+	@ echo 20 ${MIDINT}/fun3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/fun3d.c.pamphlet >fun3d.c )
+	${TANGLE} -R"viewman/fun3d.c" ${BOOK} >fun3d.c )
 
 ${MIDOBJ}/fun3d.o: ${HEADERS} ${MIDINT}/fun3d.c
 	@ echo 21 making ${MIDOBJ}/fun3d.o from ${MIDINT}/fun3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/fun3d.c )
 
-${DOC}/fun3d.c.dvi: ${IN}/fun3d.c.pamphlet 
-	@echo 22 making ${DOC}/fun3d.c.dvi from ${IN}/fun3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/fun3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} fun3d.c ; \
-	rm -f ${DOC}/fun3d.c.pamphlet ; \
-	rm -f ${DOC}/fun3d.c.tex ; \
-	rm -f ${DOC}/fun3d.c )
-
-
-${MIDINT}/make3d.c: ${IN}/make3d.c.pamphlet
-	@ echo 23 ${MIDINT}/make3d.c from ${IN}/make3d.c.pamphlet
+${MIDINT}/make3d.c: ${BOOK}
+	@ echo 23 ${MIDINT}/make3d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/make3d.c.pamphlet >make3d.c )
+	${TANGLE} -R"viewman/make3d.c" ${BOOK} >make3d.c )
 
 ${MIDOBJ}/make3d.o: ${HEADERS} ${MIDINT}/make3d.c
 	@ echo 24 making ${MIDOBJ}/make3d.o from ${MIDINT}/make3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/make3d.c )
 
-${DOC}/make3d.c.dvi: ${IN}/make3d.c.pamphlet 
-	@echo 25 making ${DOC}/make3d.c.dvi from ${IN}/make3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/make3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} make3d.c ; \
-	rm -f ${DOC}/make3d.c.pamphlet ; \
-	rm -f ${DOC}/make3d.c.tex ; \
-	rm -f ${DOC}/make3d.c )
-
-
-${MIDINT}/readview.c: ${IN}/readview.c.pamphlet
-	@ echo 26 ${MIDINT}/readview.c from ${IN}/readview.c.pamphlet
+${MIDINT}/readview.c: ${BOOK}
+	@ echo 26 ${MIDINT}/readview.c from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/readview.c.pamphlet >readview.c )
+	${TANGLE} -R"viewman/readview.c" ${BOOK} >readview.c )
 
 ${MIDOBJ}/readview.o: ${HEADERS} ${MIDINT}/readview.c
 	@ echo 27 making ${MIDOBJ}/readview.o from ${MIDINT}/readview.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/readview.c )
 
-${DOC}/readview.c.dvi: ${IN}/readview.c.pamphlet 
-	@echo 28 making ${DOC}/readview.c.dvi from ${IN}/readview.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/readview.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} readview.c ; \
-	rm -f ${DOC}/readview.c.pamphlet ; \
-	rm -f ${DOC}/readview.c.tex ; \
-	rm -f ${DOC}/readview.c )
-
-
-clean: 
-	@ echo 31 cleaning ${IN}/viewman
-
-document: 
-	@ echo 32 documenting ${IN}/viewman
-
-
 @
-\subsection{makegraph.c.pamphlet}
-<<viewman/makegraph.c.pamphlet>>=
+\subsection{makegraph.c}
+<<viewman/makegraph.c>>=
 #define _MAKEGRAPH_C
 
 #include <stdlib.h>
 #include <stdio.h>
 
-#include "viewman.h"
+<<viewman/viewman.h>>
 
 #include "sockio-c.h1"
 #include "makegraph.h1"
@@ -4022,15 +3921,15 @@ discardGraph (graphStruct *theGraph)
 
 }
 @
-\subsection{readview.c.pamphlet}
-<<viewman/readview.c.pamphlet>>=
+\subsection{readview.c}
+<<viewman/readview.c>>=
 #define _READVIEW_C
 
 #include <unistd.h>
 #include <stdio.h>
 #include <errno.h>
 
-#include "viewman.h"
+<<viewman/viewman.h>>
 
 #include "cleanup.h1"
 
@@ -4047,8 +3946,8 @@ again:
 }
 
 @
-\subsection{sselect.c.pamphlet}
-<<viewman/sselect.c.pamphlet>>=
+\subsection{sselect.c}
+<<viewman/sselect.c>>=
 #define _SSELECT_C
 
 #include <stdio.h>
@@ -4057,7 +3956,7 @@ again:
 #include <sys/wait.h>
 #include <signal.h>
 
-#include "viewman.h"
+<<viewman/viewman.h>>
 #include "bsdsignal.h"
 
 #include "sockio-c.h1"
@@ -4109,8 +4008,10 @@ superSelect(int n, int *rd, int *wr, int *ex, char *timeout)
   }
   return ret_val;
 }
-\subsection{viewman.c.pamphlet}
-<<viewman/viewman.c.pamphlet>>=
+
+@
+\subsection{viewman.c}
+<<viewman/viewman.c>>=
 #define _VIEWMAN_C
 
 #include <unistd.h>
@@ -4123,7 +4024,7 @@ superSelect(int n, int *rd, int *wr, int *ex, char *timeout)
 #include <bstring.h>
 #endif
 
-#include "viewman.h"
+<<viewman/viewman.h>>
 <<include/mode.h>>
 #include "actions.h"
 <<include/viewcommand.h>>
@@ -4344,7 +4245,7 @@ main (void)
 
 
 #include "com.h"
-#include "globalsm.h"
+<<viewman/globalsm.h>>
 @
 \chapter{viewalone}
 \section{Makefile.pamphlet}
@@ -7301,7 +7202,7 @@ ${OUT}/view2d: ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES}
 	@ ${CC} ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES} \
 	 -o ${OUT}/view2d $(LDFLAGS) 
 
-${MIDINT}/buttons2d.c: 
+${MIDINT}/buttons2d.c: ${BOOK}
 	@ echo 1 making ${MIDINT}/buttons2d.c from ${BOOK}
 	@( cd ${MIDINT} ; \
 	${TANGLE} -R"view2d/buttons2d.c" ${BOOK} >buttons2d.c )
diff --git a/changelog b/changelog
index 8f98c06..a24057b 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20080605 tpd books/bookvol8 make viewman
+20080605 tpd src/graph/Makefile extract viewman from bookvol8
 20080604 tpd src/graph/Makefile remove fileformats
 20080604 tpd src/graph/fileformats removed, replace by bookvol8
 20080604 tpd src/graph/view3d/Makefile removed, replace by bookvol8
diff --git a/src/graph/Makefile.pamphlet b/src/graph/Makefile.pamphlet
index 5fc687f..cf4f7b6 100644
--- a/src/graph/Makefile.pamphlet
+++ b/src/graph/Makefile.pamphlet
@@ -239,6 +239,7 @@ These variables are used to drive the make, make document, and
 make clean processes, respectively.
 
 <<environment>>=
+BOOK=${SPD}/books/bookvol8.pamphlet
 DIRS=viewmandir gdrawsdir view2ddir view3ddir viewalonedir
 DOCS=${DIRS:dir=document} 
 CLNS=${DIRS:dir=clean} 
@@ -247,29 +248,18 @@ CLNS=${DIRS:dir=clean}
 \subsection{The viewman directory}
 <<viewmandir>>=
 viewmandir: ${SRC}/graph/viewman/Makefile
-	@ echo 1 making ${SRC}/graph/viewman
-	@ mkdir -p ${INT}/graph/viewman
+	@ echo 1 making ${SRC}/graph/viewman 
 	@ mkdir -p ${OBJ}/${SYS}/graph/viewman
 	@ mkdir -p ${OBJ}/${SYS}/lib
 	@ mkdir -p ${MNT}/${SYS}/lib
 	@ mkdir -p ${MNT}/${SYS}/doc/src/graph
-	@(cd viewman ; ${ENV} ${MAKE} )
-
-${SRC}/graph/viewman/Makefile: ${SRC}/graph/viewman/Makefile.pamphlet
-	@echo 2 making ${SRC}/graph/viewman/Makefile from ${SRC}/graph/viewman/Makefile.pamphlet
-	@( cd viewman ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-	   cp Makefile.dvi ${MNT}/${SYS}/doc/src/graph.viewman.Makefile.dvi )
-
-viewmandocument: ${SRC}/graph/viewman/Makefile
-	@echo 3 documenting ${SRC}/graph/viewman
-	@( cd viewman ; ${ENV} ${MAKE} document )
+	@(cd ${INT}/graph/viewman ; ${ENV} ${MAKE} )
 
-viewmanclean: ${SRC}/graph/viewman/Makefile
-	@echo 4 cleaning ${SRC}/graph/viewman
-	@( cd viewman ; ${ENV} ${MAKE} clean )
-	@rm -f ${SRC}/graph/viewman/Makefile
-	@rm -f ${SRC}/graph/viewman/Makefile.dvi
+${SRC}/graph/viewman/Makefile: ${BOOK}
+	@echo 2 making ${SRC}/graph/viewman/Makefile from ${BOOK}
+	@ mkdir -p ${INT}/graph/viewman
+	@( cd ${INT}/graph/viewman ; \
+	  ${TANGLE} -t8 -R"viewman/Makefile" ${BOOK} >Makefile )
 
 @
 \subsection{The gdraws directory}
@@ -311,24 +301,11 @@ view3ddir: ${SRC}/graph/view3d/Makefile
 	@mkdir -p ${MNT}/${SYS}/doc/src/graph
 	@(cd ${INT}/graph/view3d ; ${ENV} ${MAKE} )
 
-${SRC}/graph/view3d/Makefile: ${SPD}/books/bookvol8.pamphlet
-	@echo 10 making ${SRC}/graph/view3d/Makefile from \
-                ${SPD}/books/bookvol8.pamphlet
+${SRC}/graph/view3d/Makefile: ${BOOK}
+	@echo 10 making ${SRC}/graph/view3d/Makefile from ${BOOK}
 	@mkdir -p ${INT}/graph/view3d
 	@( cd ${INT}/graph/view3d ; \
-	  ${TANGLE} -t8 -R"view3d/Makefile" \
-                   ${SPD}/books/bookvol8.pamphlet >Makefile )
-
-
-view3ddocument: ${SRC}/graph/view3d/Makefile
-	@echo 11 documenting ${SRC}/graph/view3d
-	@( cd view3d ; ${ENV} ${MAKE} document )
-
-view3dclean: ${SRC}/graph/view3d/Makefile
-	@echo 12 cleaning ${SRC}/graph/view3d
-	@( cd view3d ; ${ENV} ${MAKE} clean )
-	@rm -f ${SRC}/graph/view3d/Makefile
-	@rm -f ${SRC}/graph/view3d/Makefile.dvi
+	  ${TANGLE} -t8 -R"view3d/Makefile" ${BOOK} >Makefile )
 
 @
 \subsection{The view2d directory}
@@ -341,13 +318,11 @@ view2ddir: ${INT}/graph/view2d/Makefile
 	@mkdir -p ${MNT}/${SYS}/doc/src/graph
 	@(cd ${INT}/graph/view2d ; ${ENV} ${MAKE} )
 
-${INT}/graph/view2d/Makefile: ${SPD}/books/bookvol8.pamphlet
-	@echo 14 making ${SRC}/graph/view2d/Makefile from \
-		${SPD}/books/bookvol8.pamphlet
+${INT}/graph/view2d/Makefile: ${BOOK}
+	@echo 14 making ${SRC}/graph/view2d/Makefile from ${BOOK}
 	@mkdir -p ${INT}/graph/view2d
 	@( cd ${INT}/graph/view2d ; \
-	  ${TANGLE} -t8 -R"view2d/Makefile" \
-                   ${SPD}/books/bookvol8.pamphlet >Makefile )
+	  ${TANGLE} -t8 -R"view2d/Makefile" ${BOOK} >Makefile )
 
 @
 \subsection{The viewalone directory}

\start
Date: Sat, 7 Jun 2008 11:20:12 -0500
From: Tim Daly
To: list
Subject: 20080606.02.tpd.patch (remove view

The src/graph/viewman directory was removed.
The files are documented in bookvol8
========================================================================
diff --git a/changelog b/changelog
index a24057b..e0e7f6f 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,15 @@
+20080606 tpd src/graph/viewman.h removed, replace by bookvol8
+20080606 tpd src/graph/viewman.c removed, replace by bookvol8
+20080606 tpd src/graph/sselect.c removed, replace by bookvol8
+20080606 tpd src/graph/readview.c removed, replace by bookvol8
+20080606 tpd src/graph/makegraph.c removed, replace by bookvol8
+20080606 tpd src/graph/Makefile removed, replace by bookvol8
+20080606 tpd src/graph/make3d.c removed, replace by bookvol8
+20080606 tpd src/graph/make2d.c removed, replace by bookvol8
+20080606 tpd src/graph/globalsm.h removed, replace by bookvol8
+20080606 tpd src/graph/fun3d.c removed, replace by bookvol8
+20080606 tpd src/graph/fun2d.c removed, replace by bookvol8
+20080606 tpd src/graph/cleanup.c removed, replace by bookvol8
 20080605 tpd books/bookvol8 make viewman
 20080605 tpd src/graph/Makefile extract viewman from bookvol8
 20080604 tpd src/graph/Makefile remove fileformats
diff --git a/src/graph/viewman/Makefile.pamphlet b/src/graph/viewman/Makefile.pamphlet
deleted file mode 100644
index 35c4a9c..0000000
--- a/src/graph/viewman/Makefile.pamphlet
+++ /dev/null
@@ -1,330 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{src/graph/viewman Makefile}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{environment}
-<<environment>>=
-IN=	${SRC}/graph/viewman
-MIDINT=	${INT}/graph/viewman
-MIDOBJ=	${OBJ}/${SYS}/graph/viewman
-OUT=	${MNT}/${SYS}/lib
-LIB=    ${OBJ}/${SYS}/lib
-DOC=    ${MNT}/${SYS}/doc/src/graph
-
-# local include files shared by graphics
-LINC=	${SRC}/graph/include
-
-# global include files shared by everyone 
-GINC=	${SRC}/include
-
-@
-\section{viewman}
-<<viewman>>=
-${OUT}/viewman: ${OBJS} ${LIB}/util.o ${LIB}/bsdsignal.o
-	@ echo 1 linking ${OUT}/viewman
-	@ ${CC} ${OBJS} -o ${OUT}/viewman ${LIB}/util.o ${LIB}/bsdsignal.o ${LDFLAGS}
-
-@
-<<viewman.c (MIDINT from IN)>>=
-${MIDINT}/viewman.c: ${IN}/viewman.c.pamphlet
-	@ echo 2 ${MIDINT}/viewman.c from ${IN}/viewman.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/viewman.c.pamphlet >viewman.c )
-
-@
-<<viewman.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/viewman.o: ${HEADERS} ${MIDINT}/viewman.c
-	@ echo 3 making ${MIDOBJ}/viewman.o from ${MIDINT}/viewman.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/viewman.c )
-
-@
-<<viewman.c.dvi (DOC from IN)>>=
-${DOC}/viewman.c.dvi: ${IN}/viewman.c.pamphlet 
-	@echo 4 making ${DOC}/viewman.c.dvi from ${IN}/viewman.c.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/viewman.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} viewman.c ; \
-	rm -f ${DOC}/viewman.c.pamphlet ; \
-	rm -f ${DOC}/viewman.c.tex ; \
-	rm -f ${DOC}/viewman.c )
-
-@
-\section{sselect}
-<<sselect.c (MIDINT from IN)>>=
-${MIDINT}/sselect.c: ${IN}/sselect.c.pamphlet
-	@ echo 5 ${MIDINT}/sselect.c from ${IN}/sselect.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/sselect.c.pamphlet >sselect.c )
-
-@
-<<sselect.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/sselect.o: ${HEADERS} ${MIDINT}/sselect.c
-	@ echo 6 making ${MIDOBJ}/sselect.o from ${MIDINT}/sselect.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/sselect.c )
-
-@
-<<sselect.c.dvi (DOC from IN)>>=
-${DOC}/sselect.c.dvi: ${IN}/sselect.c.pamphlet 
-	@echo 7 making ${DOC}/sselect.c.dvi from ${IN}/sselect.c.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/sselect.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} sselect.c ; \
-	rm -f ${DOC}/sselect.c.pamphlet ; \
-	rm -f ${DOC}/sselect.c.tex ; \
-	rm -f ${DOC}/sselect.c )
-
-@
-\section{cleanup}
-<<cleanup.c (MIDINT from IN)>>=
-${MIDINT}/cleanup.c: ${IN}/cleanup.c.pamphlet
-	@ echo 8 ${MIDINT}/cleanup.c from ${IN}/cleanup.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/cleanup.c.pamphlet >cleanup.c )
-
-@
-<<cleanup.c (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/cleanup.o: ${HEADERS} ${MIDINT}/cleanup.c
-	@ echo 9 making ${MIDOBJ}/cleanup.o from ${MIDINT}/cleanup.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/cleanup.c )
-
-@
-<<cleanup.c.dvi (DOC from IN)>>=
-${DOC}/cleanup.c.dvi: ${IN}/cleanup.c.pamphlet 
-	@echo 10 making ${DOC}/cleanup.c.dvi from ${IN}/cleanup.c.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/cleanup.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} cleanup.c ; \
-	rm -f ${DOC}/cleanup.c.pamphlet ; \
-	rm -f ${DOC}/cleanup.c.tex ; \
-	rm -f ${DOC}/cleanup.c )
-
-@
-\section{fun2d}
-<<fun2d.c (MIDINT from IN)>>=
-${MIDINT}/fun2d.c: ${IN}/fun2d.c.pamphlet
-	@ echo 11 ${MIDINT}/fun2d.c from ${IN}/fun2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/fun2d.c.pamphlet >fun2d.c )
-
-@
-<<fun2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/fun2d.o: ${HEADERS} ${MIDINT}/fun2d.c
-	@ echo 12 making ${MIDOBJ}/fun2d.o from ${MIDINT}/fun2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/fun2d.c )
-
-@
-<<fun2d.c.dvi (DOC from IN)>>=
-${DOC}/fun2d.c.dvi: ${IN}/fun2d.c.pamphlet 
-	@echo 13 making ${DOC}/fun2d.c.dvi from ${IN}/fun2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/fun2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} fun2d.c ; \
-	rm -f ${DOC}/fun2d.c.pamphlet ; \
-	rm -f ${DOC}/fun2d.c.tex ; \
-	rm -f ${DOC}/fun2d.c )
-
-@
-\section{make2d}
-<<make2d.c (MIDINT from IN)>>=
-${MIDINT}/make2d.c: ${IN}/make2d.c.pamphlet
-	@ echo 14 ${MIDINT}/make2d.c from ${IN}/make2d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/make2d.c.pamphlet >make2d.c )
-
-<<make2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/make2d.o: ${HEADERS} ${MIDINT}/make2d.c
-	@ echo 15 making ${MIDOBJ}/make2d.o from ${MIDINT}/make2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/make2d.c )
-
-@
-<<make2d.c.dvi (DOC from IN)>>=
-${DOC}/make2d.c.dvi: ${IN}/make2d.c.pamphlet 
-	@echo 16 making ${DOC}/make2d.c.dvi from ${IN}/make2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/make2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} make2d.c ; \
-	rm -f ${DOC}/make2d.c.pamphlet ; \
-	rm -f ${DOC}/make2d.c.tex ; \
-	rm -f ${DOC}/make2d.c )
-
-@
-\section{makegraph}
-<<makegraph.c (MIDINT from IN)>>=
-${MIDINT}/makegraph.c: ${IN}/makegraph.c.pamphlet
-	@ echo 17 ${MIDINT}/makegraph.c from ${IN}/makegraph.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/makegraph.c.pamphlet >makegraph.c )
-
-@
-<<makegraph.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/makegraph.o: ${HEADERS} ${MIDINT}/makegraph.c
-	@ echo 18 making ${MIDOBJ}/makegraph.o from ${MIDINT}/makegraph.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/makegraph.c )
-
-@
-<<makegraph.c.dvi (DOC from IN)>>=
-${DOC}/makegraph.c.dvi: ${IN}/makegraph.c.pamphlet 
-	@echo 19 making ${DOC}/makegraph.c.dvi from ${IN}/makegraph.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/makegraph.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} makegraph.c ; \
-	rm -f ${DOC}/makegraph.c.pamphlet ; \
-	rm -f ${DOC}/makegraph.c.tex ; \
-	rm -f ${DOC}/makegraph.c )
-
-@
-\section{fun3d}
-<<fun3d.c (MIDINT from IN)>>=
-${MIDINT}/fun3d.c: ${IN}/fun3d.c.pamphlet
-	@ echo 20 ${MIDINT}/fun3d.c from ${IN}/fun3d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/fun3d.c.pamphlet >fun3d.c )
-
-@
-<<fun3d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/fun3d.o: ${HEADERS} ${MIDINT}/fun3d.c
-	@ echo 21 making ${MIDOBJ}/fun3d.o from ${MIDINT}/fun3d.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/fun3d.c )
-
-@
-<<fun3d.c.dvi (DOC from IN)>>=
-${DOC}/fun3d.c.dvi: ${IN}/fun3d.c.pamphlet 
-	@echo 22 making ${DOC}/fun3d.c.dvi from ${IN}/fun3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/fun3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} fun3d.c ; \
-	rm -f ${DOC}/fun3d.c.pamphlet ; \
-	rm -f ${DOC}/fun3d.c.tex ; \
-	rm -f ${DOC}/fun3d.c )
-
-@
-\section{make3d}
-<<make3d.c (MIDINT from IN)>>=
-${MIDINT}/make3d.c: ${IN}/make3d.c.pamphlet
-	@ echo 23 ${MIDINT}/make3d.c from ${IN}/make3d.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/make3d.c.pamphlet >make3d.c )
-
-@
-<<make3d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/make3d.o: ${HEADERS} ${MIDINT}/make3d.c
-	@ echo 24 making ${MIDOBJ}/make3d.o from ${MIDINT}/make3d.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/make3d.c )
-
-@
-<<make3d.c.dvi (DOC from IN)>>=
-${DOC}/make3d.c.dvi: ${IN}/make3d.c.pamphlet 
-	@echo 25 making ${DOC}/make3d.c.dvi from ${IN}/make3d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/make3d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} make3d.c ; \
-	rm -f ${DOC}/make3d.c.pamphlet ; \
-	rm -f ${DOC}/make3d.c.tex ; \
-	rm -f ${DOC}/make3d.c )
-
-@
-\section{readview}
-<<readview.c (MIDINT from IN)>>=
-${MIDINT}/readview.c: ${IN}/readview.c.pamphlet
-	@ echo 26 ${MIDINT}/readview.c from ${IN}/readview.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/readview.c.pamphlet >readview.c )
-
-@
-<<readview.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/readview.o: ${HEADERS} ${MIDINT}/readview.c
-	@ echo 27 making ${MIDOBJ}/readview.o from ${MIDINT}/readview.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/readview.c )
-
-@
-<<readview.c.dvi (DOC from IN)>>=
-${DOC}/readview.c.dvi: ${IN}/readview.c.pamphlet 
-	@echo 28 making ${DOC}/readview.c.dvi from ${IN}/readview.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/readview.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} readview.c ; \
-	rm -f ${DOC}/readview.c.pamphlet ; \
-	rm -f ${DOC}/readview.c.tex ; \
-	rm -f ${DOC}/readview.c )
-
-@
-<<*>>=
-<<environment>>
-
-CFLAGS  = ${CCF} -I${LINC} -I${GINC} -I${IN}
-LDFLAGS = ${LDF} -lX11
-
-DOCFILES=${DOC}/viewman.c.dvi ${DOC}/sselect.c.dvi ${DOC}/cleanup.c.dvi \
-         ${DOC}/fun2d.c.dvi   ${DOC}/make2d.c.dvi  ${DOC}/makegraph.c.dvi \
-         ${DOC}/fun3d.c.dvi   ${DOC}/make3d.c.dvi  ${DOC}/readview.c.dvi
-
-OBJS=   ${MIDOBJ}/viewman.o ${MIDOBJ}/readview.o  ${MIDOBJ}/make3d.o \
-	${MIDOBJ}/fun3d.o   ${MIDOBJ}/makegraph.o ${MIDOBJ}/make2d.o \
-        ${MIDOBJ}/fun2d.o   ${MIDOBJ}/cleanup.o   ${MIDOBJ}/sselect.o \
-        ${OBJ}/${SYS}/lib/sockio-c.o
-
-HEADERS= ${IN}/viewman.h       ${LINC}/component.h ${LINC}/view2d.h  \
-         ${LINC}/view3d.h      ${LINC}/tube.h      ${LINC}/actions.h \
-         ${LINC}/viewcommand.h ${GINC}/com.h
-
-all: ${OBJS} ${OUT}/viewman ${DOCFILES}
-	@ echo 30 finished ${IN}
-
-<<viewman>>
-
-<<viewman.c (MIDINT from IN)>>
-<<viewman.o (MIDOBJ from MIDINT)>>
-<<viewman.c.dvi (DOC from IN)>>
-
-<<sselect.c (MIDINT from IN)>>
-<<sselect.o (MIDOBJ from MIDINT)>>
-<<sselect.c.dvi (DOC from IN)>>
-
-<<cleanup.c (MIDINT from IN)>>
-<<cleanup.c (MIDOBJ from MIDINT)>>
-<<cleanup.c.dvi (DOC from IN)>>
-
-<<fun2d.c (MIDINT from IN)>>
-<<fun2d.o (MIDOBJ from MIDINT)>>
-<<fun2d.c.dvi (DOC from IN)>>
-
-<<make2d.c (MIDINT from IN)>>
-<<make2d.o (MIDOBJ from MIDINT)>>
-<<make2d.c.dvi (DOC from IN)>>
-
-<<makegraph.c (MIDINT from IN)>>
-<<makegraph.o (MIDOBJ from MIDINT)>>
-<<makegraph.c.dvi (DOC from IN)>>
-
-<<fun3d.c (MIDINT from IN)>>
-<<fun3d.o (MIDOBJ from MIDINT)>>
-<<fun3d.c.dvi (DOC from IN)>>
-
-<<make3d.c (MIDINT from IN)>>
-<<make3d.o (MIDOBJ from MIDINT)>>
-<<make3d.c.dvi (DOC from IN)>>
-
-<<readview.c (MIDINT from IN)>>
-<<readview.o (MIDOBJ from MIDINT)>>
-<<readview.c.dvi (DOC from IN)>>
-
-clean: 
-	@ echo 31 cleaning ${IN}/viewman
-
-document: 
-	@ echo 32 documenting ${IN}/viewman
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewman/cleanup.c.pamphlet b/src/graph/viewman/cleanup.c.pamphlet
deleted file mode 100644
index 0b9016e..0000000
--- a/src/graph/viewman/cleanup.c.pamphlet
+++ /dev/null
@@ -1,228 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewman cleanup.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _CLEANUP_C
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#if !defined(BSDplatform)
-#include <malloc.h>
-#endif
-#include <assert.h>
-#include <signal.h>
-#include <sys/wait.h>
-
-#include "viewman.h"
-#include "actions.h"
-
-#include "util.h1"
-#include "cleanup.h1"
-#include "makegraph.h1"
-#include "readview.h1"
-
-void
-brokenPipe(int sig)
-{
-  fprintf(stderr,
-          "The viewport manager tried to write to a non-existing pipe.\n");
-}
-
-
-void
-endChild(int sig)
-{
-
-  checkClosedChild = yes;
-}
-
-
-/****************************
- * void rmViewMgr(slotPtr)  *
- *                          *
- * given a pointer to a     *
- * viewManager, this        *
- * procedure removes it     *
- * from the viewport list   *
-*****************************/
-
-void 
-rmViewMgr(viewManager *slotPtr)
-{
-  
-  int i,throwAway,code;
-  viewManager *somePort, *someOtherPort;
-  graphStruct *someGraph,*someOtherGraph;   /* used in discarding graphs */
-  viewsWithThisGraph *someView,*someOtherView;
-  
-  for (somePort=someOtherPort=viewports;
-       (somePort != 0) && (somePort != slotPtr);
-       somePort=(someOtherPort=somePort)->nextViewport)
-    {}
-  assert ((somePort == 0) ||
-	  (somePort == viewports) ||
-	  (somePort == someOtherPort->nextViewport));
-
-  if (somePort) {
-    if (somePort == viewports) viewports=viewports->nextViewport;
-    else someOtherPort->nextViewport = somePort->nextViewport;
-  }
-  /*** if view2d, then clean up after the graphs as well ***/
-  if (slotPtr->viewType == view2DType) {
-    for (i=0; i<maxGraphs; i++) {
-      code=readViewport(slotPtr,&throwAway,intSize);  /* get the graph to discard */
-      if (code == -1) break; /* read failure - give up */
-      if (throwAway) {                           /* zero means no graph */
-
-	for (someGraph = someOtherGraph = graphList;
-             (someGraph != 0) && (someGraph->key != throwAway);
-	     someGraph=(someOtherGraph=someGraph)->nextGraph)
-	  {
-	  }
-        /* someGraph is 0 if not found */
-	/* someGraph == graphList if found at first */
-	/* otherwise someGraph == someOtherGraph->nextGraph */
-	assert( (someGraph == 0) ||
-		(someGraph == graphList) ||
-		(someGraph == someOtherGraph->nextGraph));
-
-        if (someGraph) {              /* if found (should always be true) */
-
-	  for(someView=someOtherView=someGraph->views;
-	      (someView !=0 ) && (someView->viewGr != slotPtr);
-	      someView=(someOtherView=someView)->nextViewthing)
-	    {
-	    }
-	  /* similarly */
-	  assert( (someView == 0) ||
-		  (someView == someGraph->views) ||
-		  (someView == someOtherView->nextViewthing));
-
-          if (someView) {     /* if found (should always be true) */
-	    if (someView == someGraph->views) 
-	      /* first */
-	      someGraph->views = someGraph->views->nextViewthing;
-	    else
-	      someOtherView->nextViewthing = someView->nextViewthing;
-            free(someView);                    /* remove this viewport 
-						  from list */
-          }
-	  /* if now nothing is pointing  to this graph , remove the graph from the list*/
-          if (someGraph->views == 0) {
-	    if (someGraph == graphList)
-	      graphList = graphList->nextGraph;
-	    else
-	      someOtherGraph->nextGraph = someGraph->nextGraph;
-            discardGraph(someGraph);           /* free the graph */
-          }
-        }  /* if someGraph */
-      } /* if throwAway */
-    } /* for i */
-  } /* if type is view2D */
-  close(slotPtr->viewIn);
-  close(slotPtr->viewOut);
-  free(slotPtr);
-} /* rmViewMgr() */
-
-
-/***********************************
- * int closeChildViewport(slotPtr) *
- *                                 *
- * given a pointer to a viewport   *
- * structure (viewManager) this    *
- * procedure first waits for the   *
- * actual process to die and then  *
- * removes it from the list of     *
- * viewports via rmViewMgr().      *
- ***********************************/
-
-void  
-closeChildViewport(viewManager *slotPtr)
-{
-  
-  int status;
-  rmViewMgr(slotPtr);
-  wait(&status); 
-  
-}  /* closeChildViewport */
-
-
-/*********************
- * int goodbye()     *
- *                   *
- * kill all children *
- * (how mean) and    *
- * then kill self.   *
- *********************/
-
-void 
-goodbye(int sig)
-{
-
-  viewManager *v;
-
-  v = viewports;
-  while (v) {
-    kill(v->PID,SIGTERM);
-    while (wait(NULL) == -1);
-    v = v->nextViewport;
-  }
-  exit(0);
-
-}
-
-
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewman/fun2d.c.pamphlet b/src/graph/viewman/fun2d.c.pamphlet
deleted file mode 100644
index 834bd79..0000000
--- a/src/graph/viewman/fun2d.c.pamphlet
+++ /dev/null
@@ -1,396 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewman fun2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _FUN2D_C
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-
-
-
-#include "viewman.h"
-#include "actions.h"
-
-#include "util.h1"
-#include "sockio-c.h1"
-#include "fun2d.h1"
-#include "readview.h1"
-#include "make2d.h1"
-
-#define writeEach
-
-void 
-funView2D(int viewCommand)
-{
-
-  int code;
-  int viewPID;
-  float f1,f2;
-  int i1,i2,i3;
-  viewManager *viewport;
-
-  viewPID = get_int(spadSock);
-
-
-  viewport = viewports;
-  while ((viewport) && (viewport->PID != viewPID)) {
-    viewport = viewport->nextViewport;
-  }
-  
-  if (viewport) {
-    send_int(spadSock,1);  /* acknowledge to spad */
-    code = write(viewport->viewOut,&viewCommand,intSize);
-
-
-    switch (viewCommand) {
-
-    case putGraph:
-      i1 = get_int(spadSock);  /* graph key */
-      i2 = get_int(spadSock);  /* viewport slot 1..9 */
-      i2--; /* 0..8*/
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,&i2,intSize);
-      i3 = 1; /* continue*/
-      code = write(viewport->viewOut,&i3,intSize);      
-      sendGraphToView2D(0,i1,viewport,&currentGraphState);
-     
-      break;
-
-    case translate2D:
-      i1 = get_int(spadSock);   /* graph index */
-      f1 = get_float(spadSock); /* translate in the x direction */
-      f2 = get_float(spadSock); /* translate in the y direction */
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,&f1,floatSize);
-      code = write(viewport->viewOut,&f2,floatSize);
-      break;
-
-    case scale2D:
-      i1 = get_int(spadSock);   /* graph index */
-      f1 = get_float(spadSock); /* scale in the x direction */
-      f2 = get_float(spadSock); /* scale in the y direction */
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,&f1,floatSize);
-      code = write(viewport->viewOut,&f2,floatSize);
-      break;
-
-    case hideControl2D:
-      i1 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      break;
-
-    case axesOnOff2D:
-    case unitsOnOff2D:
-    case connectOnOff:
-    case pointsOnOff:
-    case spline2D:
-    case showing2D:
-      i1 = get_int(spadSock);   /* graph index */
-      i2 = get_int(spadSock);   /* axes status */
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,&i2,intSize);
-      break;
-
-    case moveViewport:
-    case resizeViewport:
-      i1 = get_int(spadSock);
-      i2 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,&i2,intSize);
-      break;
-
-    case changeTitle:
-      s1 = get_string(spadSock);
-      i1 = strlen(s1);
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,s1,i1);
-      break;
-
-    case writeView:
-      s1 = get_string(spadSock);
-      i1 = strlen(s1);
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,s1,i1);
-        /* write out the types of things to be written */
-      i2 = get_int(spadSock);
-      code = write(viewport->viewOut,&i2,intSize);
-      while (i2) {
-        i2 = get_int(spadSock);
-        code = write(viewport->viewOut,&i2,intSize);
-      }
-      break;
-
-    case spadPressedAButton:
-      i1 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      break;
-
-    }  /* switch */
-         /*** get acknowledge from viewport */
-    code = readViewport(viewport,&acknow,intSize);
-    send_int(spadSock,1);  /* acknowledge to spad */
-  } else {  
-    send_int(spadSock,-1);  /* send error value in acknowledge to spad */
-  }
-
-}
-
-void 
-forkView2D(void)
-{
-
-  viewManager      *viewport;
-  int              childPID, code;
-  int              i;
-  view2DStruct     doView2D;
-  graphStateStruct doGraphStateArray[maxGraphs];
-  int              there;
-  int  pipe0[2], pipe1[2];
-
-  char envAXIOM[100],runView[100];
-
-#ifdef DEBUG
-  fprintf(stderr,"fun2d:Pipe calls for 2D\n");
-#endif
-  check(pipe(pipe0));
-  check(pipe(pipe1));
-
-#ifdef DEBUG
-  fprintf(stderr,"Fork routine for 2D\n");
-#endif
-  childPID = check(fork());
-
-  switch(childPID) {
-
-  case -1:
-    fprintf(stderr,
-            "The viewport manager cannot open a viewport window.\nTry closing some viewports.\n");
-    return;
-
-  case 0:
-    /*****************************
-     *       child process       *
-     *****************************/
-        /* map pipes from viewport manager to standard input and output */
-#ifdef DEBUG
-    fprintf(stderr,"Mapping pipes to standard I/O in 2D\n");
-#endif
-    check(dup2(pipe0[0],0));
-    check(dup2(pipe1[1],1));
-    close(pipe0[0]);
-    close(pipe0[1]);
-    close(pipe1[0]);
-    close(pipe1[1]);
-
-#ifdef DEBUG
-    fprintf(stderr,"Executing TwoDimensionalViewport process\n");
-#endif
-    sprintf(envAXIOM,"%s",getenv("AXIOM"));
-    sprintf(runView,"%s%s",envAXIOM,"/lib/view2d");
-    check(execl(runView,runView,NULL));
-    fprintf(stderr,"The viewport manager could not execute view2d.\nCheck that view2d is on your PATH.\n");
-    exit(-1);
-
-  default:
-    /******************************
-     *       parent process       *
-     ******************************/
-    if (!(viewport = (viewManager *)malloc(sizeof(viewManager)))) {
-      fprintf(stderr,"The viewport manager ran out of memory trying to create a new viewport window (viewManager).\n");
-      return;
-    }
-    viewport->viewType = view2DType;
-    viewport->PID = childPID;
-
-         /* set up pipes to child process */
-    close(pipe0[0]);
-    close(pipe1[1]);
-    viewport->viewIn  = pipe1[0];
-    viewport->viewOut = pipe0[1];
-
-         /* add new viewport to global list */
-    viewport->nextViewport = viewports;
-    viewports = viewport;
-
-    if (viewport->viewIn <0) {
-      fprintf(stderr,
- "viewman could not create connection to a 2D viewport window. Try again.\n");
-      return;
-    } else {
-
-      code = readViewport(viewport,&acknow,intSize);
-
-      if (code < 0) {
-        fprintf(stderr,
-         "viewman could not read from a 2D viewport window\ncode=%d\nack=%d\n",
-         code,acknow);
-        return;
-      }
-    } 
-
-    makeView2DFromSpadData(&doView2D,doGraphStateArray);
-
-      /* tell the child that mother is a viewport manager */
-    i = no;
-    write(viewport->viewOut,&i,sizeof(int));
-
-    write(viewport->viewOut,&doView2D,sizeof(view2DStruct));
-    i = strlen(doView2D.title)+1;
-    write(viewport->viewOut,&i,intSize); /* send length of the title child */
-    write(viewport->viewOut,doView2D.title,i);  /* send title to the child */
-    for (i=0; i<maxGraphs; i++) {
-      there = doView2D.graphKeyArray[i];
-      write(viewport->viewOut,&there,intSize);
-      sendGraphToView2D(i,there,viewport,doGraphStateArray);
-    };  /* for i in graphs */
-    
-         /*** get acknowledge from viewport */
-
-    code = readViewport(viewport,&(viewport->viewWindow),sizeof(Window));
-    sleep(1);  /* wait a second...*/
-    send_int(spadSock,viewport->PID);  /* acknowledge to spad */
-
-  }   /* switch */
-
-}    /* forkView2D() */
-
-
-
-void
-sendGraphToView2D(int i,int there,viewManager *viewport,
-                  graphStateStruct *doGraphStateArray)
-{
-
-  graphStruct      *gPtr;
-  pointListStruct  *llPtr;
-  pointStruct      *p;
-  viewsWithThisGraph *oneView;
-  int j,k;
-
-  if (there) {
-    gPtr = graphList;
-    while ( gPtr != NULL  &&   gPtr->key != there)    /** find the right graph (same key) in graph list **/
-      gPtr = gPtr->nextGraph;
-    if ((gPtr==NULL) ||(gPtr->key != there) ){
-      fprintf(stderr,
-              "The viewport manager cannot find the requested graph and will quit and restart.\n");
-      exit(-1);
-    } 
-    
-
-/*** Before sending off the data, insert a pointer to viewport from graph ***/
-  if (!(oneView = (viewsWithThisGraph *)malloc(sizeof(viewsWithThisGraph)))) {
-    fprintf(stderr,"The viewport manager ran out of memory trying to create a new graph (viewsWithThisGraph).\n");
-    return;
-  }
-  oneView->viewGr          = viewport;
-  oneView->nextViewthing   = gPtr->views;
-  gPtr->views              = oneView;
-
-#ifdef writeEach    
-    write(viewport->viewOut,&(gPtr->xmin),floatSize);
-    write(viewport->viewOut,&(gPtr->xmax),floatSize);
-    write(viewport->viewOut,&(gPtr->ymin),floatSize);
-    write(viewport->viewOut,&(gPtr->ymax),floatSize);
-    write(viewport->viewOut,&(gPtr->xNorm),floatSize);
-    write(viewport->viewOut,&(gPtr->yNorm),floatSize);
-    write(viewport->viewOut,&(gPtr->spadUnitX),floatSize);
-    write(viewport->viewOut,&(gPtr->spadUnitY),floatSize);
-    write(viewport->viewOut,&(gPtr->unitX),floatSize);
-    write(viewport->viewOut,&(gPtr->unitY),floatSize);
-    write(viewport->viewOut,&(gPtr->originX),floatSize);
-    write(viewport->viewOut,&(gPtr->originY),floatSize);
-    write(viewport->viewOut,&(gPtr->numberOfLists),intSize);
-#else
-    write(viewport->viewOut,gPtr,sizeof(graphStruct));
-#endif
-    
-    llPtr = gPtr->listOfListsOfPoints;
-    for (j=0; j<(gPtr->numberOfLists); j++) {
-      write(viewport->viewOut,&(llPtr->numberOfPoints),intSize);
-      p = llPtr->listOfPoints;
-      for (k=0; k<(llPtr->numberOfPoints); k++) {
-        write(viewport->viewOut,&(p->x),floatSize);
-        write(viewport->viewOut,&(p->y),floatSize);
-        write(viewport->viewOut,&(p->hue),floatSize);
-        write(viewport->viewOut,&(p->shade),floatSize);
-        p++;
-      }    /* for k in list of points */
-      write(viewport->viewOut,&(llPtr->pointColor),intSize);
-      write(viewport->viewOut,&(llPtr->lineColor),intSize);
-      write(viewport->viewOut,&(llPtr->pointSize),intSize);
-      llPtr++;
-    }   /* for j in list of lists of points */
-    
-    /* a graph state is defined for a graph if graph is there */
-    write(viewport->viewOut,&(doGraphStateArray[i].scaleX),floatSize);    
-    write(viewport->viewOut,&(doGraphStateArray[i].scaleY),floatSize);
-    write(viewport->viewOut,&(doGraphStateArray[i].deltaX),floatSize);
-    write(viewport->viewOut,&(doGraphStateArray[i].deltaY),floatSize);
-    write(viewport->viewOut,&(doGraphStateArray[i].pointsOn),intSize);
-    write(viewport->viewOut,&(doGraphStateArray[i].connectOn),intSize);
-    write(viewport->viewOut,&(doGraphStateArray[i].splineOn),intSize);
-    write(viewport->viewOut,&(doGraphStateArray[i].axesOn),intSize);
-    write(viewport->viewOut,&(doGraphStateArray[i].axesColor),intSize);
-    write(viewport->viewOut,&(doGraphStateArray[i].unitsOn),intSize);
-    write(viewport->viewOut,&(doGraphStateArray[i].unitsColor),intSize);
-    write(viewport->viewOut,&(doGraphStateArray[i].showing),intSize);
-
-  }   /* if graph is there */
-
-}
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewman/fun3d.c.pamphlet b/src/graph/viewman/fun3d.c.pamphlet
deleted file mode 100644
index 78de429..0000000
--- a/src/graph/viewman/fun3d.c.pamphlet
+++ /dev/null
@@ -1,384 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewman fun3d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _FUN3D_C
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "viewman.h"
-#include "mode.h"
-#include "actions.h"
-  
-#include "util.h1"
-#include "sockio-c.h1"
-#include "fun3d.h1"
-#include "make3d.h1"
-#include "readview.h1"
-
-void 
-funView3D(int viewCommand)
-{
-
-  int code;
-  int viewPID;
-  float f1,f2,f3,f4;
-  int i1,i2;
-  viewManager *viewport;
-
-  viewPID = get_int(spadSock);
-
-  viewport = viewports;
-  while ((viewport) && (viewport->PID != viewPID)) 
-    viewport = viewport->nextViewport;
-
-  if (viewport) {
-    send_int(spadSock,1);  /* acknowledge to spad */
-
-    viewmanEvent.xclient.window = viewport->viewWindow;
-
-    code = write(viewport->viewOut,&viewCommand,intSize);
-    switch (viewCommand) {
-    case rotate:
-      f1 = get_float(spadSock);
-      f2 = get_float(spadSock);
-      code = write(viewport->viewOut,&f1,floatSize);
-      code = write(viewport->viewOut,&f2,floatSize);
-      break;
-
-    case zoom:
-      f1 = get_float(spadSock);
-      code = write(viewport->viewOut,&f1,floatSize);
-      break;
-
-    case zoomx:
-      f1 = get_float(spadSock);
-      f2 = get_float(spadSock);
-      f3 = get_float(spadSock);
-      code = write(viewport->viewOut,&f1,floatSize);
-      code = write(viewport->viewOut,&f2,floatSize);
-      code = write(viewport->viewOut,&f3,floatSize);
-      break;
-
-    case translate:
-      f1 = get_float(spadSock);
-      f2 = get_float(spadSock);
-      code = write(viewport->viewOut,&f1,floatSize);
-      code = write(viewport->viewOut,&f2,floatSize);
-      break;
-
-    case modifyPOINT:
-      i1 = get_int(spadSock);
-      f1 = get_float(spadSock);
-      f2 = get_float(spadSock);
-      f3 = get_float(spadSock);
-      f4 = get_float(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,&f1,floatSize);
-      code = write(viewport->viewOut,&f2,floatSize);
-      code = write(viewport->viewOut,&f3,floatSize);
-      code = write(viewport->viewOut,&f4,floatSize);
-      break;
-
-    case hideControl:
-      i1 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      break;
-
-    case axesOnOff:
-    case perspectiveOnOff:
-    case region3D:
-    case clipRegionOnOff:
-    case clipSurfaceOnOff:
-      i1 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      break;
-
-    case eyeDistanceData:
-    case hitherPlaneData:
-      f1 = get_float(spadSock);
-      code = write(viewport->viewOut,&f1,floatSize);
-      break;
-
-    case colorDef:
-      i1 = get_int(spadSock);
-      i2 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,&i2,intSize);
-      break;
-
-    case moveViewport:
-      i1 = get_int(spadSock);
-      i2 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,&i2,intSize);
-      break;
-
-    case resizeViewport:
-      i1 = get_int(spadSock);
-      i2 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,&i2,intSize);
-      break;
-
-    case transparent:
-    case opaqueMesh:
-    case render:
-      break;
-
-    case lightDef:
-      f1 = get_float(spadSock);
-      f2 = get_float(spadSock);
-      f3 = get_float(spadSock);
-      code = write(viewport->viewOut,&f1,floatSize);
-      code = write(viewport->viewOut,&f2,floatSize);
-      code = write(viewport->viewOut,&f3,floatSize);
-      break;
-
-    case translucenceDef:
-      f1 = get_float(spadSock);
-      code = write(viewport->viewOut,&f1,floatSize);
-      break;
-
-
-    case changeTitle:
-      s1 = get_string(spadSock);
-      i1 = strlen(s1);
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,s1,i1);
-      break;
-
-    case writeView:
-      s1 = get_string(spadSock);
-      i1 = strlen(s1);
-      code = write(viewport->viewOut,&i1,intSize);
-      code = write(viewport->viewOut,s1,i1);
-      /* write out the types of things to be written */
-      i2 = get_int(spadSock);
-      code = write(viewport->viewOut,&i2,intSize);
-      while (i2) {
-        i2 = get_int(spadSock);
-        code = write(viewport->viewOut,&i2,intSize);
-      }
-      break;
-
-    case diagOnOff:
-      i1 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      break;
-
-    case outlineOnOff:
-      i1 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      break;
-
-    case spadPressedAButton:
-      i1 = get_int(spadSock);
-      code = write(viewport->viewOut,&i1,intSize);
-      break;
-    }  /* switch */
-    /*** get acknowledge from viewport */
-
-    code = readViewport(viewport,&acknow,intSize);
-    send_int(spadSock,1);  /* acknowledge to spad */
-  } else {  /* if (viewport) */
-    send_int(spadSock,-1);  /* send error value in acknowledge to spad */
-  }
-
-}
-void
-forkView3D(int typeOfViewport)
-{
-
-  viewManager *viewport;
-  int         childPID, code;
-  int         i;
-
-  view3DStruct doView3D;
-  int  pipe0[2],pipe1[2];
-  int *anIndex;
-
-  char envAXIOM[100],runView[100];
-  int j,k;
-  LLPoint *anLLPoint;
-  LPoint *anLPoint;
-
-#ifdef DEBUG
-  fprintf(stderr,"Pipe calls for 3D\n");
-#endif
-  check(pipe(pipe0));
-  check(pipe(pipe1));
-
-#ifdef DEBUG
-  fprintf(stderr,"Fork routine for 3D\n");
-#endif
-  switch(childPID = check(fork())) {
-
-  case -1:
-    printf("Cannot create a new process - you probably have too many things running already.\n");
-    return;
-
-  case 0:
-    /*****************************
-     *       child process       *
-     *****************************/
-        /* map pipes from viewport manager to standard input and output */
-#ifdef DEBUG
-    fprintf(stderr,"Mapping pipes to standard I/O in 3D\n");
-#endif
-    check(dup2(pipe0[0],0));
-    check(dup2(pipe1[1],1));
-    close(pipe0[0]);
-    close(pipe0[1]);
-    close(pipe1[0]);
-    close(pipe1[1]);
-
-#ifdef DEBUG
-    fprintf(stderr,"Executing ThreeDimensionalViewport process\n");
-#endif
-    sprintf(envAXIOM,"%s",getenv("AXIOM"));
-    sprintf(runView,"%s%s",envAXIOM,"/lib/view3d");
-    check(execl(runView,runView,NULL));
-    fprintf(stderr,"The viewport manager could not execute view3d.\nCheck that view3d is on your PATH.\n");
-    exit(-1);
-
-  default:
-    /******************************
-     *       parent process       *
-     ******************************/
-    if (!(viewport = (viewManager *)malloc(sizeof(viewManager)))) {
-      printf("Ran out of memory trying to create a new viewport process.\n");
-      return;
-    }
-    viewport->viewType = typeOfViewport;
-    viewport->PID = childPID;
-
-         /* set up pipes to child process */
-    close(pipe0[0]);
-    close(pipe1[1]);
-    viewport->viewIn  = pipe1[0];
-    viewport->viewOut = pipe0[1];
-
-         /* add new viewport to global list */
-    viewport->nextViewport = viewports;
-    viewports = viewport;
-
-    if (viewport->viewIn <0) {
-      fprintf(stderr,
-              "The viewport manager could not create connection to a 3D viewport window. Try again.\n");
-      return;
-    } else {
-
-      code = readViewport(viewport,&acknow,intSize);
-
-      if (code < 0) {
-        fprintf(stderr,
-              "The viewport manager could not read from a 3D viewport window\ncode=%d\nack=%d\n",code,acknow);
-        return;
-      }
-    } 
-
-    makeView3DFromSpadData(&doView3D,typeOfViewport);
-
-      /* tell the child that parent is a viewport manager */
-    i = no;
-    write(viewport->viewOut,&i,sizeof(int));
-
-    write(viewport->viewOut,&doView3D,sizeof(view3DStruct));
-
-    i = strlen(doView3D.title)+1;
-    write(viewport->viewOut,&i,intSize);        /* tell the length of the title to child */
-    write(viewport->viewOut,doView3D.title,i);  /* tell the title to the child */
-    write(viewport->viewOut,&(doView3D.lightVec[0]),floatSize);
-    write(viewport->viewOut,&(doView3D.lightVec[1]),floatSize);
-    write(viewport->viewOut,&(doView3D.lightVec[2]),floatSize);
-
-    /* send generalized 3D components */
-    write(viewport->viewOut,&(doView3D.numOfPoints),intSize);
-    for (i=0; i<doView3D.numOfPoints; i++) {
-      write(viewport->viewOut,&(refPt(doView3D,i)->x),floatSize);
-      write(viewport->viewOut,&(refPt(doView3D,i)->y),floatSize);
-      write(viewport->viewOut,&(refPt(doView3D,i)->z),floatSize);
-      write(viewport->viewOut,&(refPt(doView3D,i)->c),floatSize);
-    }
-    write(viewport->viewOut,&(doView3D.lllp.numOfComponents),intSize);
-    anLLPoint = doView3D.lllp.llp;
-    for (i=0; i<doView3D.lllp.numOfComponents; i++,anLLPoint++) {
-      write(viewport->viewOut,&(anLLPoint->prop.closed),intSize);
-      write(viewport->viewOut,&(anLLPoint->prop.solid),intSize);
-      write(viewport->viewOut,&(anLLPoint->numOfLists),intSize);
-      anLPoint = anLLPoint->lp;
-      for (j=0; j<anLLPoint->numOfLists; j++,anLPoint++) {
-        write(viewport->viewOut,&(anLPoint->prop.closed),intSize);
-        write(viewport->viewOut,&(anLPoint->prop.solid),intSize);
-        write(viewport->viewOut,&(anLPoint->numOfPoints),intSize);
-        anIndex = anLPoint->indices;
-        for (k=0; k<anLPoint->numOfPoints; k++,anIndex++)
-          write(viewport->viewOut,anIndex,intSize);
-      } /* for LPoints in LLPoints (j) */
-    } /* for LLPoints in LLLPoints (i) */
-    
-         /*** get acknowledge from viewport */
-    code = readViewport(viewport,&(viewport->viewWindow),sizeof(Window)); 
-    sleep(1);  /* wait a second...*/
-    send_int(spadSock,viewport->PID);  /* acknowledge to spad */
-
-  }   /* switch */
-
-}    /* forkView3D() */
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewman/globalsm.h b/src/graph/viewman/globalsm.h
deleted file mode 100755
index 019ecc3..0000000
--- a/src/graph/viewman/globalsm.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-extern viewManager *viewports,*slot,*stepSlot;
-extern Sock        *spadSock;
-extern int         viewType, viewCommand; 
-extern fd_set         filedes;
-extern int             acknow;
-extern int         graphKey; 
-extern graphStruct *graphList;
-extern char *s1;
-extern Display *dsply;
-extern int     defDsply;
-extern Window  root;
-extern XEvent  viewmanEvent;
-extern int              currentGraph;
-extern graphStateStruct currentGraphState;
-extern int picked;
-extern int viewOkay;
-extern int viewError;
-extern int checkClosedChild,
-           foundBrokenPipe;
-extern char propertyBuffer[];
diff --git a/src/graph/viewman/make2d.c.pamphlet b/src/graph/viewman/make2d.c.pamphlet
deleted file mode 100644
index 2a969aa..0000000
--- a/src/graph/viewman/make2d.c.pamphlet
+++ /dev/null
@@ -1,98 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewman make2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _MAKE2D_C
-
-#include "viewman.h"
-
-#include "sockio-c.h1"
-#include "make2d.h1"
-
-void 
-makeView2DFromSpadData(view2DStruct *viewdata,graphStateStruct graphState[])
-{
-
-  int i;
-
-  viewdata->title = get_string(spadSock);
-
-  viewdata->vX = get_int(spadSock);
-  viewdata->vY = get_int(spadSock);
-  viewdata->vW = get_int(spadSock);
-  viewdata->vH = get_int(spadSock);
-
-  viewdata->showCP = get_int(spadSock);
-
-  for (i=0; i<maxGraphs; i++) {
-    viewdata->graphKeyArray[i] = get_int(spadSock);
-    if (viewdata->graphKeyArray[i]) {
-
-      graphState[i].scaleX     = get_float(spadSock);
-      graphState[i].scaleY     = get_float(spadSock);
-      graphState[i].deltaX     = get_float(spadSock);
-      graphState[i].deltaY     = get_float(spadSock);  
-      graphState[i].pointsOn   = get_int(spadSock);
-      graphState[i].connectOn  = get_int(spadSock);
-      graphState[i].splineOn   = get_int(spadSock);
-      graphState[i].axesOn     = get_int(spadSock);
-      graphState[i].axesColor  = get_int(spadSock);
-      graphState[i].unitsOn    = get_int(spadSock);
-      graphState[i].unitsColor = get_int(spadSock);
-      graphState[i].showing    = get_int(spadSock);
-      graphState[i].selected   = 1;                /* always default to selected? */
-
-    }
-  }
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewman/make3d.c.pamphlet b/src/graph/viewman/make3d.c.pamphlet
deleted file mode 100644
index ec92bc0..0000000
--- a/src/graph/viewman/make3d.c.pamphlet
+++ /dev/null
@@ -1,178 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewman make3d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _MAKE3D_C
-
-#include <stdlib.h>
-
-#include "viewman.h"
-#include "mode.h"
-
-#include "sockio-c.h1"
-#include "make3d.h1"
-
-void 
-makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport)
-{
-
-  int i,j,k;
-  LLPoint *anLLPoint;
-  LPoint *anLPoint;
-  int *anIndex;
-  int firstPieceOfData = yes;
-  int constantColor;
-  double cMin = 0;
-  double cMax = 0;
-  double cNorm = 0;
-
-  viewdata->typeOf3D = typeOfViewport;
-
-  viewdata->title = get_string(spadSock);
-
-  viewdata->deltaX = get_float(spadSock);
-  viewdata->deltaY = get_float(spadSock);
-  viewdata->scale  = get_float(spadSock);
-  viewdata->scaleX = get_float(spadSock);
-  viewdata->scaleY = get_float(spadSock);
-  viewdata->scaleZ = get_float(spadSock);
-  viewdata->theta  = get_float(spadSock);
-  viewdata->phi    = get_float(spadSock);
-
-  viewdata->vX = get_int(spadSock);
-  viewdata->vY = get_int(spadSock);
-  viewdata->vW = get_int(spadSock);
-  viewdata->vH = get_int(spadSock);
-  
-  viewdata->showCP    = get_int(spadSock);
-  viewdata->style     = get_int(spadSock);
-  viewdata->AxesOn    = get_int(spadSock);
-  viewdata->diagonals = get_int(spadSock);
-  viewdata->outlineRenderOn = get_int(spadSock);
-  viewdata->box = get_int(spadSock);
-  viewdata->clipbox = get_int(spadSock);
-  viewdata->clipStuff = get_int(spadSock);
-
-  viewdata->hueOff    = get_int(spadSock);
-  viewdata->numOfHues = get_int(spadSock);
-
-  viewdata->lightVec[0]  = get_float(spadSock);
-  viewdata->lightVec[1]  = get_float(spadSock);
-  viewdata->lightVec[2]  = get_float(spadSock);
-  viewdata->translucency = get_float(spadSock);
-
-  viewdata->perspective = get_int(spadSock);
-  viewdata->eyeDistance = get_float(spadSock);
-
-  viewdata->numOfPoints = get_int(spadSock);
-  viewdata->points = (viewTriple *)malloc(viewdata->numOfPoints * sizeof(viewTriple));
-  for (i=0; i<viewdata->numOfPoints; i++) {
-    refPt(*viewdata,i)->x = get_float(spadSock);
-    refPt(*viewdata,i)->y = get_float(spadSock);
-    refPt(*viewdata,i)->z = get_float(spadSock);
-    refPt(*viewdata,i)->c = get_float(spadSock);
-          /* set min/max values */
-    if (firstPieceOfData) {
-      firstPieceOfData = no;
-      viewdata->xmin = viewdata->xmax = refPt(*viewdata,i)->x;
-      viewdata->ymin = viewdata->ymax = refPt(*viewdata,i)->y;
-      viewdata->zmin = viewdata->zmax = refPt(*viewdata,i)->z;
-      cMin = cMax = refPt(*viewdata,i)->c;
-    } else {
-      if (refPt(*viewdata,i)->x < viewdata->xmin) viewdata->xmin = refPt(*viewdata,i)->x;
-      else if (refPt(*viewdata,i)->x > viewdata->xmax) viewdata->xmax = refPt(*viewdata,i)->x;
-      if (refPt(*viewdata,i)->y < viewdata->ymin) viewdata->ymin = refPt(*viewdata,i)->y;
-      else if (refPt(*viewdata,i)->y > viewdata->ymax) viewdata->ymax = refPt(*viewdata,i)->y;
-      if (refPt(*viewdata,i)->z < viewdata->zmin) viewdata->zmin = refPt(*viewdata,i)->z;
-      else if (refPt(*viewdata,i)->z > viewdata->zmax) viewdata->zmax = refPt(*viewdata,i)->z;
-      if (refPt(*viewdata,i)->c < cMin) cMin = refPt(*viewdata,i)->c;
-      else if (refPt(*viewdata,i)->c > cMax) cMax = refPt(*viewdata,i)->c;
-    } /* if (firstPieceOfData) else */
-  } /* for i (point data) */
-
-  viewdata->lllp.numOfComponents = get_int(spadSock);
-  anLLPoint = viewdata->lllp.llp =
-    (LLPoint *)malloc(viewdata->lllp.numOfComponents*sizeof(LLPoint));
-  for (i=0; i<viewdata->lllp.numOfComponents; i++,anLLPoint++) {
-    anLLPoint->prop.closed = get_int(spadSock);
-    anLLPoint->prop.solid = get_int(spadSock);
-    anLLPoint->numOfLists = get_int(spadSock);
-    anLPoint = anLLPoint->lp =
-      (LPoint *)malloc(anLLPoint->numOfLists*sizeof(LPoint));
-    for (j=0; j<anLLPoint->numOfLists; j++,anLPoint++) {
-      anLPoint->prop.closed = get_int(spadSock);
-      anLPoint->prop.solid = get_int(spadSock);
-      anLPoint->numOfPoints = get_int(spadSock);
-      anIndex = anLPoint->indices =
-        (int *)malloc(anLPoint->numOfPoints*sizeof(int));
-      for (k=0; k<anLPoint->numOfPoints; k++,anIndex++)
-        *anIndex = get_int(spadSock);
-    } /* for LPoints in LLPoints (j) */
-  } /* for LLPoints in LLLPoints (i) */
-
-      /* now normalize the colors */
-  cNorm = cMax - cMin;
-         /*** new fields - cmin, cmax ***/
-  viewdata->cmin = cMin;
-  viewdata->cmax = cMax;
-
-  constantColor = (cNorm < 0.0001);
-  for (i=0; i<viewdata->numOfPoints; i++)
-    if (constantColor) refPt(*viewdata,i)->c = 0.5;
-    else refPt(*viewdata,i)->c = (refPt(*viewdata,i)->c - cMin)/cNorm;
-
-  viewdata->scaleDown = yes; 
-
-}
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewman/makegraph.c.pamphlet b/src/graph/viewman/makegraph.c.pamphlet
deleted file mode 100644
index 18dcc3d..0000000
--- a/src/graph/viewman/makegraph.c.pamphlet
+++ /dev/null
@@ -1,155 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewman makegraph.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _MAKEGRAPH_C
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "viewman.h"
-
-#include "sockio-c.h1"
-#include "makegraph.h1"
-
-graphStruct *
-makeGraphFromSpadData(void)
-{
-  
-  graphStruct     *graphData;
-  pointListStruct *pL;
-  pointStruct     *p;
-  int i,j;
-
-  if (!(graphData = (graphStruct *)malloc(sizeof(graphStruct)))) {
-    fprintf(stderr,"The viewport manager ran out of memory trying to create a new graph (graphStruct).\n");
-    exit(-1);
-  }
-
-  graphData->xmin = get_float(spadSock);   /* after everything is normalized */
-  graphData->xmax = get_float(spadSock);
-  graphData->ymin = get_float(spadSock);   /* view2d */
-  graphData->ymax = get_float(spadSock);
-
-  graphData->xNorm = 1/(graphData->xmax - graphData->xmin);
-  graphData->yNorm = 1/(graphData->ymax - graphData->ymin);
-
-  graphData->spadUnitX = get_float(spadSock);
-  graphData->spadUnitY = get_float(spadSock);
-
-  graphData->unitX = graphData->spadUnitX * graphData->xNorm;
-  graphData->unitY = graphData->spadUnitY * graphData->yNorm;
-
-  graphData->originX = -graphData->xmin * graphData->xNorm - 0.5;
-  graphData->originY = -graphData->ymin * graphData->yNorm - 0.5;
-
-
-  graphData->numberOfLists = get_int(spadSock);
-  if (!(pL = (pointListStruct *)malloc(graphData->numberOfLists * sizeof(pointListStruct)))) {
-    fprintf(stderr,"The viewport manager ran out of memory trying to create a new graph (pointListStruct).\n");
-    exit(-1);
-  }
-  graphData->listOfListsOfPoints = pL;
-
-  for (i=0; i<graphData->numberOfLists; i++) {
-
-    pL->numberOfPoints = get_int(spadSock);
-    if (!(p = (pointStruct *)malloc(pL->numberOfPoints * sizeof(pointStruct)))) {
-      fprintf(stderr,"The viewport manager ran out of memory trying to create a new graph (pointStruct).\n");
-      exit(-1);
-    }
-    pL->listOfPoints = p;             /** point to current point list **/
-
-    for (j=0; j<pL->numberOfPoints; j++) {
-      p->x     = get_float(spadSock);         /* get numbers from AXIOM */
-      p->y     = get_float(spadSock);
-      p->hue   = get_float(spadSock) - 1;     /* make zero based */
-      p->shade = get_float(spadSock) - 1;
-        /* normalize to range [-0.5..0.5] */
-      p->x = (p->x - graphData->xmin) * graphData->xNorm - 0.5;
-      p->y = (p->y - graphData->ymin) * graphData->yNorm - 0.5;
-      p++;
-    }
-        /* for now, getting hue, shade - do hue * totalHues + shade */
-    pL->pointColor = get_int(spadSock);
-    pL->lineColor = get_int(spadSock);
-    pL->pointSize = get_int(spadSock);
-    pL++;                          /** advance to next point list **/
-  }
-
-
-  graphData->key = graphKey++;
-  
-  send_int(spadSock,(graphKey-1));          /* acknowledge to spad */
-
-
-  return(graphData);
-
-}
-  
-
-void 
-discardGraph (graphStruct *theGraph)
-{
-
-  pointListStruct *pL;
-  int j;
-
-  for (j=0, pL=theGraph->listOfListsOfPoints; 
-          j<theGraph->numberOfLists; j++,pL++)
-    free(pL->listOfPoints);
-  free(theGraph->listOfListsOfPoints);
-  free(theGraph);
-
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewman/readview.c.pamphlet b/src/graph/viewman/readview.c.pamphlet
deleted file mode 100644
index 3c739d4..0000000
--- a/src/graph/viewman/readview.c.pamphlet
+++ /dev/null
@@ -1,78 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewman readview.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _READVIEW_C
-
-#include <unistd.h>
-#include <stdio.h>
-#include <errno.h>
-
-#include "viewman.h"
-
-#include "cleanup.h1"
-
-int 
-readViewport (viewManager *viewPort,void *info,int size)
-{
-
-  int canRead;
-
-again:  
-  if ((canRead=read(viewPort->viewIn,info,size)) > 0)   return(canRead); 
-  if (errno==EINTR || errno==EAGAIN) goto again;
-  return(-1);
-}
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewman/sselect.c.pamphlet b/src/graph/viewman/sselect.c.pamphlet
deleted file mode 100644
index 6722f7d..0000000
--- a/src/graph/viewman/sselect.c.pamphlet
+++ /dev/null
@@ -1,115 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewman sselect.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _SSELECT_C
-
-#include <stdio.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <sys/wait.h>
-#include <signal.h>
-
-#include "viewman.h"
-#include "bsdsignal.h"
-
-#include "sockio-c.h1"
-#include "bsdsignal.h1"
-#include "cleanup.h1"
-#include "sselect.h1"
-
-/*******************************************
- * int superSelect(n, rd, wr, ex, timeout) *
- *                                         *
- * superselect! if select returns a -1     *
- * due to an interrupt (EINTR), this       *
- * routine checks to see if it's a         *
- * child viewport that has closed.         *
- * Expected global variables:              *
- *   int  checkClosedChild                 *
- *******************************************/
- 
-int 
-superSelect(int n, int *rd, int *wr, int *ex, char *timeout)
-{
-  
-  int waiting;
-  viewManager *viewport;
-  int ret_val;
-  
-  ret_val = select(n, (void *)rd, (void *)wr, (void *)ex, (void *)timeout);
-  while (ret_val == -1 && errno == EINTR) {
-    /* checkClosedChild gets set by the SIGCHLD handler */
-    if (checkClosedChild) {
-      while ((waiting = wait(0)) == -1 );
-      viewport = viewports;
-      while ((viewport) && (viewport->PID != waiting))
-	viewport = viewport->nextViewport;
-      if (viewport) {
-	/* we shouldn't really be doing this since child is dead */
-	/* rmViewMgr(viewport); */
-	/* flush(spadSock); */
-        /* send_int(spadSock,1);   acknowledge to spad */
-        checkClosedChild = no;
-#if defined(BSDplatform) || defined(MACOSXplatform)
-        bsdSignal(SIGCHLD,endChild,DontRestartSystemCalls);
-#else
-        bsdSignal(SIGCLD,endChild,DontRestartSystemCalls);
-#endif
-      }
-    }
-    ret_val = select(n, (void *)rd, (void *)wr, (void *)ex, (void *)timeout);
-  }
-  return ret_val;
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewman/viewman.c.pamphlet b/src/graph/viewman/viewman.c.pamphlet
deleted file mode 100644
index 429c91c..0000000
--- a/src/graph/viewman/viewman.c.pamphlet
+++ /dev/null
@@ -1,271 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewman viewman.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _VIEWMAN_C
-
-#include <unistd.h>
-#include <sys/time.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <signal.h>
-#ifdef SGIplatform
-#include <bstring.h>
-#endif
-
-#include "viewman.h"
-#include "mode.h"
-#include "actions.h"
-#include "viewcommand.h"
-#include "bsdsignal.h"
-
-
-#include "bsdsignal.h1"
-#include "util.h1"
-#include "sockio-c.h1"
-#include "fun2d.h1"
-#include "fun3d.h1"
-#include "makegraph.h1"
-#include "readview.h1"
-#include "cleanup.h1"
-#include "sselect.h1"
-
-/************* global variables **************/
-
-Display *dsply;
-Window  root;
-XEvent  viewmanEvent;
-viewManager *viewports,
-  *slot,
-  *stepSlot;
-Sock        *spadSock;
-int         viewType, 
-  viewCommand,
-  acknow,
-  graphKey = 1,
-  defDsply,
-  currentGraph,
-  picked = no,
-  viewOkay  = 0,
-  viewError = -1,
-  checkClosedChild = no,
-  foundBrokenPipe = no;
-fd_set      filedes;
-graphStruct *graphList;
-graphStateStruct currentGraphState;
-char        *s1,
-  propertyBuffer[256];/* XProperty buffer */
-
-
-int
-main (void)
-{
-
-  graphStruct *aGraph;
-  int keepLooking,code;
-  
-  bsdSignal(SIGPIPE,brokenPipe,DontRestartSystemCalls);
-#if defined(BSDplatform) || defined(MACOSXplatform)
-  bsdSignal(SIGCHLD,endChild,RestartSystemCalls);
-#else
-  bsdSignal(SIGCLD,endChild,RestartSystemCalls);
-#endif
-  bsdSignal(SIGTERM,goodbye,DontRestartSystemCalls);
-  
-  /* Connect up to AXIOM server */
-  spadSock = connect_to_local_server(SpadServer,ViewportServer,Forever);
-  if (spadSock == NULL) {
-    fprintf(stderr,"The viewport manager couldn't connect to AXIOM\n");
-    exit(-1);
-  }
-#ifdef DEBUG
-  else
-    fprintf(stderr,"viewman: Connected to AXIOM\n");
-#endif
-  
-  /******** initialize ********/
-  viewports = 0;
-  graphList = 0;
-  
-  /******** getting stuff from spad and viewports ********
-  *********   the viewports have priority over    ****
-  ***   AXIOM.                              ***/
-  while (1) {
-    FD_ZERO(&filedes); /* zero out file descriptor */
-    FD_SET(spadSock->socket,&filedes);
-    slot = viewports;
-    while (slot) {
-      FD_SET(slot->viewIn,&filedes);
-      slot = slot->nextViewport;
-    }
-    
-#ifdef DEBUG
-    fprintf(stderr,"Selection for filedes of %x \n",filedes);
-#endif
-    code = check(superSelect(FD_SETSIZE,(void *) &filedes,0,0,0));
-    for (;code<=0;) 
-      code = check(superSelect(FD_SETSIZE,(void *)&filedes,0,0,0));
-    
-    slot = viewports;
-    keepLooking = 1;
-    while (keepLooking && slot) {
-      if (FD_ISSET(slot->viewIn,&filedes)) {
-        keepLooking = 0;
-#ifdef DEBUG
-        fprintf(stderr,"Reading child viewport...\n");
-#endif
-        readViewport(slot,&viewCommand,intSize);
-	
-        switch (viewCommand) {
-	  
-        case pick2D:
-#ifdef DEBUG
-          fprintf(stderr,"viewman: Doing 2D pick\n");
-#endif
-          picked = yes;
-	  
-          readViewport(slot,&currentGraph,intSize); /* get the graph to pick */
-          readViewport(slot,&currentGraphState,sizeof(graphStateStruct));
-          break;
-	  
-        case drop2D:
-#ifdef DEBUG
-          fprintf(stderr,"viewman: Doing 2D drop\n");
-#endif
-          if (picked) {
-            write(slot->viewOut,&viewOkay,intSize);
-            write(slot->viewOut,&currentGraph,intSize);
-            sendGraphToView2D(0,currentGraph,slot,&currentGraphState);
-          } else {
-            write(slot->viewOut,&viewError,intSize);
-            fprintf(stderr,"The viewport manager cannot drop a graph because nothing has been picked yet.\n");
-          }
-          break;
-	  
-        case viewportClosing:
-#ifdef DEBUG
-          fprintf(stderr,"viewman: closing viewport\n");
-#endif
-          closeChildViewport(slot);
-          break;
-
-        };  /* switch */
-	
-      };  /* if reading slot->viewIn */
-      stepSlot = slot;
-      slot = slot->nextViewport;
-    };  /* while */
-    
-    if (keepLooking) {   /* if  1 => slots not read, read from spad */
-#ifdef DEBUG
-      fprintf(stderr,"viewman: still looking\n");
-#endif
-      viewType = get_int(spadSock);
-      if (viewType == -1) goodbye(-1);
-      viewCommand = get_int(spadSock);
-      
-      switch (viewType) {
-        
-      case view3DType:
-#ifdef DEBUG
-        fprintf(stderr,"viewman: making 3D viewport\n");
-#endif
-        if (viewCommand == makeViewport) 
-          forkView3D(view3DType);
-	else 
-	  funView3D(viewCommand);
-        
-        break;
-	
-      case viewTubeType:
-#ifdef DEBUG
-        fprintf(stderr,"viewman: viewing a tube\n");
-#endif
-        if (viewCommand == makeViewport) 
-          forkView3D(viewTubeType);
-	else 
-          funView3D(viewCommand);
-        
-        break;
-        
-      case viewGraphType:
-#ifdef DEBUG
-        fprintf(stderr,"viewman: making a graph\n");
-#endif
-        if (viewCommand == makeGraph) {
-          aGraph            = makeGraphFromSpadData();
-          aGraph->nextGraph = graphList;
-          graphList         = aGraph;
-        }
-        break;
-        
-      case view2DType:
-#ifdef DEBUG
-	fprintf(stderr,"viewman: forking 2D\n");
-#endif
-        if (viewCommand == makeViewport) {
-          forkView2D();
-        } else {
-          funView2D(viewCommand);
-        }
-        break;
-        
-      }   /* switch on viewType */
-    }   /* if (keepLooking) */ 
-  }   /* while (1) */
-}
-
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewman/viewman.h b/src/graph/viewman/viewman.h
deleted file mode 100755
index d7df451..0000000
--- a/src/graph/viewman/viewman.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "view2d.h"
-#include "view3d.h"
-
-      /* Viewport Commands */
-#define makeViewport -1
-#define makeGraph    -1
-
-#define check(code) checker(code,__LINE__,"")
-#define maxConnect 40
-#define intSize sizeof(int)
-#define floatSize sizeof(float)
-#define yes 1
-#define no 0
-
-
-#include "com.h"
-#include "globalsm.h"

\start
Date: Sat, 7 Jun 2008 11:30:26 -0500
From: Tim Daly
To: list
Subject: 20080606.03.tpd.patch (correct pathnames in changelog)

The pathnames in changelog for 20080606.02.tpd.patch were incomplete.
=====================================================================
diff --git a/changelog b/changelog
index e0e7f6f..4f67a6d 100644
--- a/changelog
+++ b/changelog
@@ -1,15 +1,15 @@
-20080606 tpd src/graph/viewman.h removed, replace by bookvol8
-20080606 tpd src/graph/viewman.c removed, replace by bookvol8
-20080606 tpd src/graph/sselect.c removed, replace by bookvol8
-20080606 tpd src/graph/readview.c removed, replace by bookvol8
-20080606 tpd src/graph/makegraph.c removed, replace by bookvol8
-20080606 tpd src/graph/Makefile removed, replace by bookvol8
-20080606 tpd src/graph/make3d.c removed, replace by bookvol8
-20080606 tpd src/graph/make2d.c removed, replace by bookvol8
-20080606 tpd src/graph/globalsm.h removed, replace by bookvol8
-20080606 tpd src/graph/fun3d.c removed, replace by bookvol8
-20080606 tpd src/graph/fun2d.c removed, replace by bookvol8
-20080606 tpd src/graph/cleanup.c removed, replace by bookvol8
+20080606 tpd src/graph/viewman/viewman.h removed, replace by bookvol8
+20080606 tpd src/graph/viewman/viewman.c removed, replace by bookvol8
+20080606 tpd src/graph/viewman/sselect.c removed, replace by bookvol8
+20080606 tpd src/graph/viewman/readview.c removed, replace by bookvol8
+20080606 tpd src/graph/viewman/makegraph.c removed, replace by bookvol8
+20080606 tpd src/graph/viewman/Makefile removed, replace by bookvol8
+20080606 tpd src/graph/viewman/make3d.c removed, replace by bookvol8
+20080606 tpd src/graph/viewman/make2d.c removed, replace by bookvol8
+20080606 tpd src/graph/viewman/globalsm.h removed, replace by bookvol8
+20080606 tpd src/graph/viewman/fun3d.c removed, replace by bookvol8
+20080606 tpd src/graph/viewman/fun2d.c removed, replace by bookvol8
+20080606 tpd src/graph/viewman/cleanup.c removed, replace by bookvol8
 20080605 tpd books/bookvol8 make viewman
 20080605 tpd src/graph/Makefile extract viewman from bookvol8
 20080604 tpd src/graph/Makefile remove fileformats

\start
Date: Sat, 7 Jun 2008 12:39:46 -0500
From: Tim Daly
To: list
Subject: 20080607.01.tpd.patch (make viewalone from bookvol8)

Make the viewalone function from bookvol8.
A test case (parabola.view) is created from the data description
in the Graphics File Format chapter and written to the $AXIOM/graph
directory.
========================================================================
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index 26c0cac..633c050 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -450,7 +450,7 @@ version27:
   view3d: modified=[component.c]
 \end{verbatim}
 
-\chapter{file formats}
+\chapter{Graphics File Formats}
 \section{The viewFile data file format}
 The viewFile is a control file for graph information. It contains
 settings for particular graphs. There are some general window
@@ -686,7 +686,7 @@ copies of this data as there are points in the graph (G)
 0.5 0.5 0 2
 \end{verbatim}
 \section{The parabola}
-<<data>>=
+<<parabola.view/data>>=
 3
 x*x
 0 0 400 400
@@ -745,7 +745,7 @@ x*x
 1 1 0 1 0 0 0
 0 0
 @
-<<graph0>>=
+<<parabola.view/graph0>>=
 -3 0 3 9
 0.166667 0.111111
 1.49012e-08 -0.5
@@ -3700,7 +3700,7 @@ makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport)
 }
 
 @
-\subsection{Makefile.pamphlet}
+\subsection{viewman Makefile}
 <<viewman/Makefile>>=
 BOOK=${SPD}/books/bookvol8.pamphlet
 MIDINT=	${INT}/graph/viewman
@@ -4248,13 +4248,18 @@ main (void)
 <<viewman/globalsm.h>>
 @
 \chapter{viewalone}
-\section{Makefile.pamphlet}
+The TESTFILE is created in the mnt directory to provide an example
+file to use for viewalone. The parabola example is detailed in the
+chapter on Graphics File Formats. The directory parabola.view will
+contain the data and graph0 files and is autogenerated from the
+documentation in that chapter.
+\section{viewalone Makefile}
 <<viewalone/Makefile>>=
-IN=	${SRC}/graph/viewalone
+BOOK=${SPD}/books/bookvol8.pamphlet
 MIDINT=	${INT}/graph/viewalone
 MIDOBJ=	${OBJ}/${SYS}/graph/viewalone
 OUT=	${MNT}/${SYS}/bin
-DOC=    ${MNT}/${SYS}/doc/src/graph
+TESTFILE=${MNT}/${SYS}/graph/parabola.view
 
 # local include files shared by graphics
 LINC=	${SRC}/graph/include
@@ -4262,100 +4267,67 @@ LINC=	${SRC}/graph/include
 # global include files shared by everyone
 GINC=	${SRC}/include
 
-
-DOCFILES= ${DOC}/viewalone.c.dvi ${DOC}/spooncomp.c.dvi \
-          ${DOC}/spoon2d.c.dvi 
-
-CFLAGS = ${CCF} -I${IN} -I${LINC} -I${GINC} 
+CFLAGS = ${CCF} -I${LINC} -I${GINC} 
 LDFLAGS= ${LDF}
 
 OBJS=  ${MIDOBJ}/viewalone.o ${MIDOBJ}/spooncomp.o ${MIDOBJ}/spoon2d.o 
 
-HEADERS= ${IN}/viewalone.h     ${LINC}/component.h ${LINC}/view2d.h  \
+HEADERS= ${LINC}/component.h ${LINC}/view2d.h  \
          ${LINC}/view3d.h      ${LINC}/tube.h      ${LINC}/actions.h \
          ${LINC}/viewcommand.h 
 
-all: ${OBJS} ${OUT}/viewalone ${DOCFILES}
+all: ${OBJS} ${OUT}/viewalone ${TESTFILE}
 	@echo 12 finished ${IN}
 
 ${OUT}/viewalone: $(OBJS)  ${OBJ}/${SYS}/lib/util.o
 	@ echo 1 linking viewalone
-	@ ${CC} $(OBJS) ${OBJ}/${SYS}/lib/util.o -o ${OUT}/viewalone ${LDFLAGS} -lX11
+	@ ${CC} $(OBJS) ${OBJ}/${SYS}/lib/util.o \
+               -o ${OUT}/viewalone ${LDFLAGS} -lX11
 
-
-${MIDINT}/viewalone.c: ${IN}/viewalone.c.pamphlet
-	@ echo 2 making ${MIDINT}/viewalone.c from ${IN}/viewalone.c.pamphlet
+${MIDINT}/viewalone.c: ${BOOK} 
+	@ echo 2 making ${MIDINT}/viewalone.c from ${BOOK} 
 	@ ( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/viewalone.c.pamphlet >viewalone.c )
+	${TANGLE} -R"viewalone/viewalone.c" ${BOOK} >viewalone.c )
 
 ${MIDOBJ}/viewalone.o: ${HEADERS} ${MIDINT}/viewalone.c
 	@ echo 3 making ${MIDOBJ}/viewalone.o from ${MIDINT}/viewalone.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewalone.c )
 
-${DOC}/viewalone.c.dvi: ${IN}/viewalone.c.pamphlet 
-	@echo 4 making ${DOC}/viewalone.c.dvi from ${IN}/viewalone.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/viewalone.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} viewalone.c ; \
-	rm -f ${DOC}/viewalone.c.pamphlet ; \
-	rm -f ${DOC}/viewalone.c.tex ; \
-	rm -f ${DOC}/viewalone.c )
-
-
-${MIDINT}/spooncomp.c: ${IN}/spooncomp.c.pamphlet
-	@ echo 5 making ${MIDINT}/spooncomp.c from ${IN}/spooncomp.c.pamphlet
+${MIDINT}/spooncomp.c: ${BOOK} 
+	@ echo 5 making ${MIDINT}/spooncomp.c from ${BOOK} 
 	@ ( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/spooncomp.c.pamphlet >spooncomp.c )
+	${TANGLE} -R"viewalone/spooncomp.c" ${BOOK} >spooncomp.c )
 
 ${MIDOBJ}/spooncomp.o: ${HEADERS} ${MIDINT}/spooncomp.c
 	@ echo 6 making ${MIDOBJ}/spooncomp.o from ${MIDINT}/spooncomp.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spooncomp.c )
 
-${DOC}/spooncomp.c.dvi: ${IN}/spooncomp.c.pamphlet 
-	@echo 7 making ${DOC}/spooncomp.c.dvi from ${IN}/spooncomp.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/spooncomp.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} spooncomp.c ; \
-	rm -f ${DOC}/spooncomp.c.pamphlet ; \
-	rm -f ${DOC}/spooncomp.c.tex ; \
-	rm -f ${DOC}/spooncomp.c )
-
-
-${MIDINT}/spoon2d.c: ${IN}/spoon2d.c.pamphlet
-	@ echo 8 making ${MIDINT}/spoon2d.c from ${IN}/spoon2d.c.pamphlet
+${MIDINT}/spoon2d.c: ${BOOK} 
+	@ echo 8 making ${MIDINT}/spoon2d.c from ${BOOK} 
 	@ ( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/spoon2d.c.pamphlet >spoon2d.c )
+	${TANGLE} -R"viewalone/spoon2d.c" ${BOOK} >spoon2d.c )
 
 ${MIDOBJ}/spoon2d.o: ${HEADERS} ${MIDINT}/spoon2d.c
 	@ echo 9 making ${MIDOBJ}/spoon2d.o from ${MIDINT}/spoon2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spoon2d.c )
 
-${DOC}/spoon2d.c.dvi: ${IN}/spoon2d.c.pamphlet 
-	@echo 10 making ${DOC}/spoon2d.c.dvi from ${IN}/spoon2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/spoon2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} spoon2d.c ; \
-	rm -f ${DOC}/spoon2d.c.pamphlet ; \
-	rm -f ${DOC}/spoon2d.c.tex ; \
-	rm -f ${DOC}/spoon2d.c )
-
-
-clean: 
-	@ echo 13 cleaning ${IN}/viewalone
-
-document: 
-	@ echo 14 documenting ${IN}/viewalone
+${TESTFILE}: ${BOOK}
+	@ echo 10 making ${TESTFILE} from ${BOOK}
+	@ mkdir -p ${TESTFILE}
+	@ (cd ${TESTFILE} ; \
+	   ${TANGLE} -R"parabola.view/data" ${BOOK} >data ; \
+	   ${TANGLE} -R"parabola.view/graph0" ${BOOK} >graph0 )
 
 @
-\section{spoon2d.c.pamphlet}
-<<viewalone/spoon2d.c.pamphlet>>=
+\section{spoon2d.c}
+<<viewalone/spoon2d.c>>=
 #define _SPOON2D_C
 
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
 
-#include "viewalone.h"
+<<viewalone/viewalone.h>>
 
 
 #include "util.h1"
@@ -4675,15 +4647,15 @@ makeView2DFromFileData(view2DStruct *doView2D)
   } /* for i */
 } /* makeView2DFromFileData */
 @
-\section{spooncomp.c.pamphlet}
-<<viewalone/spooncomp.c.pamphlet>>=
+\section{spooncomp.c}
+<<viewalone/spooncomp.c>>=
 #define _SPOONCOMP_C
 
 #include <stdlib.h>
 #include <unistd.h>
 #include <string.h>
 
-#include "viewalone.h"
+<<viewalone/viewalone.h>>
 <<include/mode.h>>
 
 #include "util.h1"
@@ -4914,12 +4886,12 @@ makeView3DFromFileData(int type)
 }
 
 @
-\section{viewalone.c.pamphlet}
-<<viewalone/viewalone.c.pamphlet>>=
+\section{viewalone.c}
+<<viewalone/viewalone.c>>=
 #define _VIEWALONE_C
 
 #include <stdlib.h>
-#include "viewalone.h"
+<<viewalone/viewalone.h>>
 
 #include "all-alone.h1"
 
@@ -7162,7 +7134,7 @@ mergeDatabases(void)
 }
 
 @
-\section{Makefile.pamphlet}
+\section{view2d Makefile}
 <<view2d/Makefile>>=
 BOOK=${SPD}/books/bookvol8.pamphlet
 MIDINT=	${INT}/graph/view2d
@@ -23128,8 +23100,8 @@ font can be set in user program.  Right now, it uses only 1 font.
 units on the axes.
 \end{itemize}
 
-\section{data.c.pamphlet}
-<<gdraws/data.c.pamphlet>>=
+\section{data.c}
+<<gdraws/data.c>>=
 /* Data file to test out Gdraw functions */
 
 #include "gdraws0.h"
@@ -23403,8 +23375,8 @@ extern	char		*envAXIOM;     /* environment variable AXIOM or DEVE */
 
 
 @
-\section{gfun.c.pamphlet}
-<<gdraws/gfun.c.pamphlet>>=
+\section{gfun.c}
+<<gdraws/gfun.c>>=
 #define _GFUN_C
 
 #include <stdio.h>
@@ -24696,8 +24668,8 @@ XDeleteAssoc(Display * dsp,HashTable * table, Window w)
 
 
 @
-\section{loadfont.c.pamphlet}
-<<gdraws/loadfont.c.pamphlet>>=
+\section{loadfont.c}
+<<gdraws/loadfont.c>>=
 /* load_font for display to test out Gdraw functions in this directory */
 
 #include "gdraws0.h"
@@ -24714,8 +24686,8 @@ Gdraws_load_font(XFontStruct **font_info, char *fontname)
    }
 }
 @
-\section{main.c.pamphlet}
-<<gdraws/main.c.pamphlet>>=
+\section{main.c}
+<<gdraws/main.c>>=
 /* main procedure to test out Gdraw functions in this directory */
 #include <stdio.h>
 #include "gdraws0.h"
@@ -24876,7 +24848,7 @@ main(int argc, char **argv)
    return 0;
 }
 @
-\section{Makefile.pamphlet}
+\section{gdraws Makefile}
 \subsection{environment variables}
 <<gdraws/Makefile>>=
 IN=	${SRC}/graph/gdraws
@@ -25031,8 +25003,8 @@ document:
 	@ echo 23 documenting ${IN}/gdraws
 
 @
-\section{menu.c.pamphlet}
-<<gdraws/menu.c.pamphlet>>=
+\section{menu.c}
+<<gdraws/menu.c>>=
 /* menu of display used for testing out Gdraw functions in this directory */
 #include "gdraws0.h"
 #include "../include/g.h"
@@ -25061,8 +25033,8 @@ Gdraws_draw_menu(Window menu, char *str, int width, int height)
    XFlush(dsply);
 }
 @
-\section{psfiles.pamphlet}
-<<gdraws/psfiles.pamphlet>>=
+\section{psfiles}
+<<gdraws/psfiles>>=
 \section{The postscript command definitions}
 \subsection{colorpoly}
 \begin{verbatim}
@@ -25682,8 +25654,8 @@ region with background color (default: 1, or white).
 @
 <<*>>=
 @
-\section{yesorno.c.pamphlet}
-<<gdraws/yesorno.c.pamphlet>>=
+\section{yesorno.c}
+<<gdraws/yesorno.c>>=
 /*
  * Decides if mouse click was in yes or no region; used by program to test
  * out Gdraw functions in this directory.
diff --git a/changelog b/changelog
index 4f67a6d..2f008d7 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20080607 tpd books/bookvol8 make viewalone
+20080607 tpd src/graph/Makefile make viewalone
 20080606 tpd src/graph/viewman/viewman.h removed, replace by bookvol8
 20080606 tpd src/graph/viewman/viewman.c removed, replace by bookvol8
 20080606 tpd src/graph/viewman/sselect.c removed, replace by bookvol8
diff --git a/src/graph/Makefile.pamphlet b/src/graph/Makefile.pamphlet
index cf4f7b6..0c3407b 100644
--- a/src/graph/Makefile.pamphlet
+++ b/src/graph/Makefile.pamphlet
@@ -9,227 +9,9 @@
 \eject
 \tableofcontents
 \eject
-\section{General Comments}
-This directory contains the C source code for the Scratchpad's
-graphics. Comments given to the maintenance program refer to 
-version numbers. The versions are documented below, starting with
-version23.
-\begin{verbatim}
-version23: (first version after returning from Europe)
-   added a $DEVE environment variable - if it exists, the viewport manager 
-   tries those executable files first; if it was unsuccessful or, if the 
-   $DEVE variable was not defined, the $SPAD variable is used tube.c: 
-   changed order of crossedLines(p,q... to crossedLines(q,p... in order to
-   use segNum info (which segment of the second polygon the first polygon 
-   crosses) and using splitPolygon() rather than splitAndMove()
-   tube.c: changed crossedLines() to generalPartialSplit() - an algorithms 
-   i hope would work. it is not taken from any literature as all the 
-   literature i have looked into and tried out had design flaws or lacked 
-   precise specifications (including Foley & van Dam volume I, Newman & 
-   Sprouill and others) 
-   viewport3D.c: xPts now malloced as a global variable in makeView3D and 
-   not freed up at the end. quadMesh is also not freed anymore (shouldn't 
-   be as it was changed to a global some time ago).
-   made eyeDistance (3D stuff) into a float (from integer)
-   added outlineRender (outlineOnOff in actions.h) field. note that this 
-   and the previous change both affected the following files:
-      view3d/: main.c, process.c, viewport3D.c, spadAction.c, write.c
-      viewman/: fun3d.c make3d.c
-      viewalone/: spoon3D.c spoonTube.c
-      spad/: view3d.spad (viewport3D, makeViewport3D and the Rep)
-   3D: ability to write Stellar recognizable data files for Tube types
-   spad additions: write(v,fn,listOfTypes)
-   fixed perspective, added min/max range of eyeDistance
-
-version24: view3d/tube.c: put in calculations for xmin,xmax,ymin,ymax
-   >>> took them out again - doesn't the viewport manager do that?
-   polygon list saved if previous render/opaque (hidden surface)
-   was completed so that subsequent draws would be faster
-   view3d: added NIL(pType) macro which checks for a null pointer
-   >>> need same change in view2d (after testing)
-   totalShades is now a global variable (to be decremented if color trouble)
-   >>> need same change in view2d (after testing)
-   cleaning up: added exitWithAck(info,size,i) macro to send spad 
-   acknowledge right before exit of a troubled program. this
-   should avoid some of the causes of entering spad break loops
-   not enough colors could be allocated; now, only a message is given.
-   viewman: adding checks for abnormal exits of child processes (from
-   people who use the "Cancel" command from the X server).
-   deadBaby() and brokenPipe() in the works.
-   view3d: hey! there was a bug in the projections: with perspective on,
-   it turns out the Z-axis was rotating opposite of the rest of 
-   the system...?...
-   fixed perspective
-   added box (with back face removal)
-   function of 2 variables now has it's own substructure, like tube, and
-   shares the (now) general hidden surface subroutine used for the
-   tube stuff when the perspective is turned on (when perspective is
-   off, a simple back to front routine is sufficient and fast but the
-   property that allows that is not preserved in the perspective projection)
-   seems like (in tube.c) the overlap list property is not preserved (see
-   notes) so now, routine needs to check, for polygon i, polygons
-   i+1 through N, always.
-   affects ALL: added deltaZ to all the stuff 
-   (spad, viewman, viewalone, view3d) - though not used yet
-   error messages: if the .Xdefault not found (or .Xdefault wasn't defined) 
-   then view2d and view3d will a predefined default set of fonts. it that
-   still doesn't work, a (more or less useful) error message is displayed
-   and an error signal is sent to Scratchpad to prevent a freeze-up situation.
-   viewpack.spad (package VIEW) and view2d.spad (domain GRIMAGE) now check for
-   lists that contain illegal empty lists (i.e. point list contains nothing).
-   warnings are issued for lists containing both legal point lists and empty
-   point lists, errors are issued for lists containing nothing but empty lists.
-   made spadcolors30.c into an archived library by the name of libColors.a, 
-   source file changed to spadcolors.c; makeColors' arguments have changed 
-   and now returns the number of colors allocated - not a pointer to the 
-   pixel map
-   saymem, check, etc. moved to util.c for library archive
-   added a view.h file, with macros to be used by all view programs
-   monoColor(x) macro (in view.h) replaces spadColors[x] calls in case 
-   display is monochromatic (in global variable mono)
-   tube.c: connecting of slices - polygon points changed to outline the 
-   rectangular regions without the diagonals (may be prettier when outlines 
-   are sketched...slightly, if no split occurs).
-   clipping model: both against the hither plane as well as with a 
-   clipping volume
-   viewport3D.c: made polygon list for functions of two variables so
-   that it could call the general hidden surface algorithm (in tube.c) as
-   well (turns out that back to front property of 3D explicit equations is
-   not preserved when viewed with perspective)
-   added volume.c, volume.h for the frustrum (perspective), projected clipping
-   and clip volume interface
- 
-version25: 
-  view3d: added long jump to address signals that arrive while in the
-          XNextEvent call. spadSignalHandler() now calls spadAction()
-          if a signal is received.
-  view2d: added query button and messages for each graph image
-          (viewport2D.c, control.c, process.c)
-  view3d: tube.c: improved speed of drawPolygon by creating overlapped
-          list for unmoved polygon, and list for moved polygon that
-          may be smaller than the entire list. 
-          see "Notes on the Depth Sort Algorithm" for strategy, etc.
-          tube.c: moved the resetting of the variables relevant to recalc
-          from process.c to tube.c (rotated, switchedPerspective, 
-          changedEyeDistance)
-  GraphImage now supports 2D primitives like point(), component(), addPoint()
-  ViewportDefaultsPackage now exports viewXPos() and stuff; all references
-  to integers have been replaced by the more restrictive subdomains 
-  (e.g. PositiveInteger, NonNegativeInteger)
-  ViewportPackage has dwindled to just drawCurves() and graphCurves()
-  view2d, view3d: put in more robust signal handling routines so that
-  signals from the viewport manager (Scratchpad) are all processed properly.
-  the condition where the user is not allowed to use the control panel of the
-  viewport that Scratchpad is sending commands to no longer exists!!!! wow!!!
-  simultaneous processing without a race condition occuring (sorta) should
-  not occur anymore.
-  view3d: modification to keepDrawingViewport() so that signals also causes
-  a return of no. this allows Scratchpad input files to be indistinguishable
-  from interactive commands from a control panel! (that is, drawViewport()
-  no longer need to complete the drawing if it was called from Scratchpad.)
-  view2d: spadAction(): now only redraws viewport if the info was received for
-  a graph image that is being shown
-  view2d: fixed up pick/drop hangup problem. the "dodat" variable in process.c
-  needed to be reset earlier, and in each separate routine (pick, drop and 
-  query) that required sequential button clicks (e.g. 
-  "Drop" + graph number "1").
-  view2d: added global variable queriedGraph - so that the last queried graph
-  will always be the one displayed.
-  view2d.spad: default to points off
-  added inverse and monochrome fields in .Xdefaults 
-  (e.g. view3d*monochrome : on)
-  BUG FIXED: clipping of wire mesh for tubes
-  view3d.spad: function of three variables for color specifications ==> changes
-  in viewman, viewalone, and view3d to accept additional information.
-  structure of fun2VarModel in view3d.h changes *** not backwards 
-  compatible with version24.
-  BUG FOUND: viewport3D.c still drawing the function of 2 variables
-  without perspective (painter's algorithm without processing) wrong!
-  BUG FIXED: this time, for shur. flipped quadrants II and IV to remedy bug 
-  found in painter's algorithm in viewport3D.c.
-  tube.c (view3d): changed routine that redraws quickly from the saved up list
-  of processed polygons from the hidden surface algorithm so that each polygon
-
-version 26: 
-  view3d: switched over to a generalized subspace points definition.
-  so far, wire meshes work for existing types. code in viewport3D.c and tube.c
-  are replaced by one more general in component.c; size reduced in half. 
-  include: modified=[view3d.h] new=[component.h]
-  view3d: modified=[viewport3D.c, tube.c] new=[component.c]
-  viewman: modified=[fun3d.c, make3d.c]
-  representation should also handle future 3D things - like space curves, 
-  points and stuff without new data structures.
-  NEED: take out unused code
-  component.spad there temporarily to handle the new representation on the 
-  algebra side point.spad deals with the new representation in more 
-  generality on the algebra side
-  NEED: interface to rest of algebra world
-  view2d: draw dashed line if ticks are too close. view2d: 
-  modified=[viewport2D.c]
-  coord.spad added for coordinate transformation
-  xspadfill.c in the src/ directory for shade dithering in color - affects:
-  src: modified=[spadcolors.c, spadcolors.h] new=[xspadfill.c]
-  view3d: modified=[globals.h, main.c, tube.c]
-  view2d: added tick labels for 2D
-  view2d: modified=[viewport2D.c]
-  view3d: tube.c replaced by surface.c and project.c
-  viewman: for hue and shade fields in 2D, spad is one based and the viewport
-  stuff is 0 based. modified=[makeGraph.c]
-  --- backed up on tape ---
-  replaced sprintf of XGetDefault value with direct assignment since 
-  XGetDefault may  return a NULL value which causes sprintf to freak out 
-  (xDefault is now pointer to char rather than a character array)
-  view2d: modified=[globals.h, main.c]   
-  view3d: modified=[globals.h, main.c]   
-  BUG FOUND: on the PS2, redraws of hidden surface with saved data (quickList)
-  bombs.
-  BUG FIXED: no more bombs of quick draws
-  view3d: modified=[surface.c (previously, tube.c)]
-  put in SIGTERM handlers so that a kill signal to viewman would cause it 
-  exit cleanly (that is, kill all the child processes and then exit)
-  viewman: modified=[viewman.h, viewman.c, cleanup.c]
-  view3d: modified=[main.c]
-  view2d: modified=[main.c]
-  viewWoman: modified=[viewWoman.c]
-
-version27: 
-  3D primitives: added type flag to polygon structure (for 3D primitives) - 
-  may or may not actually be used
-  include: modified=[tube.c]
-  added "#define smwattDefaultToFast" which, when defined, defaults to the 
-  simple back-to-front draw rather than the full depth sort processes 
-  (click middle button to switch)
-  BUG FIXED: title reading in viewalone (to add \0 on top of the \newline 
-  fgets reads in)
-  viewalone: modified=[spoon2D.c, spoonComp.c]
-  points in 3D stored as references (indices) into a pool of points
-  include: modified=[tube.h, component.h]
-  view3d: modified=[main.c, project.c, surface.c, component.c]
-  added (maybe last version...?) window manager override flag in override.h 
-  file which sets to true or false (e.g. Presentation Manager may need 
-  override=false)
-  BUG FIXED: after the 3D stuff saves the ordering of polygons, the quick draw
-  misses the last polygon...had to change doNotStopDraw flag to affect the 
-  subsequent polygon.
-  view3d: modified=[surface.c]
-  added a development header file for temporary defines
-  include: added=[DEVE.h]
-  part II:
-  BUG FOUND: 3D color bar goes off the positive end
-  BUG FIXED: the color bar error
-  view3d: modified=[process.c]
-  put XMapWindow after the drawViewport in make3DComponents - fixes the 
-  problem of having an empty viewport window come up with no well defined data
-  view3d: modified=[component.c]
-  view3d: initialize the numOfPolygons and polygons field right before they're
-  used (as opposed to whereever i had them before)
-  view3d: modified=[component.c]
-\end{verbatim}
 \section{Directory overview}
 \subsection{Environment variables}
 DIRS is a list of directories with the suffix {\bf dir}.
-DOCS is the same list with {\bf dir} suffix replaced with {\bf document}.
-CLNS is the same list with {\bf dir} suffix replaced with {\bf clean}.
 
 Thus if we have a new directory {\bf foo} add it to the {\bf DIRS}
 variable as {\bf foodir}. It will automatically be added to {\bf DOCS}
@@ -241,8 +23,6 @@ make clean processes, respectively.
 <<environment>>=
 BOOK=${SPD}/books/bookvol8.pamphlet
 DIRS=viewmandir gdrawsdir view2ddir view3ddir viewalonedir
-DOCS=${DIRS:dir=document} 
-CLNS=${DIRS:dir=clean} 
 
 @
 \subsection{The viewman directory}
@@ -329,43 +109,22 @@ ${INT}/graph/view2d/Makefile: ${BOOK}
 <<viewalonedir>>=
 viewalonedir: ${SRC}/graph/viewalone/Makefile
 	@echo 17 making ${SRC}/graph/viewalone
-	@mkdir -p ${INT}/graph/viewalone
 	@mkdir -p ${OBJ}/${SYS}/graph/viewalone
 	@mkdir -p ${MNT}/${SYS}/bin
 	@mkdir -p ${MNT}/${SYS}/doc/src/graph
 	@(cd viewalone ; ${ENV} ${MAKE} )
 
-${SRC}/graph/viewalone/Makefile: ${SRC}/graph/viewalone/Makefile.pamphlet
-	@echo 18 making ${SRC}/graph/viewalone/Makefile from ${SRC}/graph/viewalone/Makefile.pamphlet
-	@( cd viewalone ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-	   cp Makefile.dvi ${MNT}/${SYS}/doc/src/graph.viewalone.Makefile.dvi )
-
-viewalonedocument: ${SRC}/graph/viewalone/Makefile
-	@echo 19 documenting ${SRC}/graph/viewalone
-	@( cd viewalone ; ${ENV} ${MAKE} document )
-
-viewaloneclean: ${SRC}/graph/viewalone/Makefile
-	@echo 20 cleaning ${SRC}/graph/viewalone
-	@( cd viewalone ; ${ENV} ${MAKE} clean )
-	@rm -f ${SRC}/graph/viewalone/Makefile
-	@rm -f ${SRC}/graph/viewalone/Makefile.dvi
-
-@
-\section{Documentation}
-\subsection{environment variables}
-DOC is the directory where we store final documentation.
-DOCFILES is the list of documents to create.
-<<docenviroment>>=
-IN=${SRC}/graph
-DOC=${MNT}/${SYS}/doc/src/graph
+${SRC}/graph/viewalone/Makefile: ${BOOK} 
+	@echo 18 making ${SRC}/graph/viewalone/Makefile from ${BOOK} 
+	@mkdir -p ${INT}/graph/viewalone
+	@( cd ${INT}/graph/viewalone ; \
+	  ${TANGLE} -t8 -R"viewalone/Makefile" ${BOOK} >Makefile )
 
 @
 <<*>>=
 <<environment>>
-<<docenviroment>>
 
-all: ${DIRS} ${DOCFILES} 
+all: ${DIRS} 
 	@ echo 24 finished ${IN}
 
 <<viewmandir>>

\start
Date: Sat, 7 Jun 2008 12:50:28 -0500
From: Tim Daly
To: list
Subject: 20080607.02.tpd.patch (Remove src/graph/viewalone directory)

Remove src/graph/viewalone directory. Use bookvol8.
=========================================================================
diff --git a/changelog b/changelog
index 2f008d7..d5e1216 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,12 @@
+20080607 tpd src/graph/viewalone/Makefile deleted (use bookvol8)
+20080607 tpd src/graph/viewalone/parabola.view/bitmap deleted (use bookvol8)
+20080607 tpd src/graph/viewalone/parabola.view/data deleted (use bookvol8)
+20080607 tpd src/graph/viewalone/parabola.view/graph0 deleted (use bookvol8)
+20080607 tpd src/graph/viewalone/parabola.view/pixmap deleted (use bookvol8)
+20080607 tpd src/graph/viewalone/spoon2d.c deleted (use bookvol8)
+20080607 tpd src/graph/viewalone/spooncomp.c deleted (use bookvol8)
+20080607 tpd src/graph/viewalone/viewalone.c deleted (use bookvol8)
+20080607 tpd src/graph/viewalone/viewalone.h deleted (use bookvol8)
 20080607 tpd books/bookvol8 make viewalone
 20080607 tpd src/graph/Makefile make viewalone
 20080606 tpd src/graph/viewman/viewman.h removed, replace by bookvol8
diff --git a/src/graph/viewalone/Makefile.pamphlet b/src/graph/viewalone/Makefile.pamphlet
deleted file mode 100644
index 9493dcb..0000000
--- a/src/graph/viewalone/Makefile.pamphlet
+++ /dev/null
@@ -1,150 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewalone Makefile}
-\author{Timothy Daly}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{environment}
-<<environment>>=
-IN=	${SRC}/graph/viewalone
-MIDINT=	${INT}/graph/viewalone
-MIDOBJ=	${OBJ}/${SYS}/graph/viewalone
-OUT=	${MNT}/${SYS}/bin
-DOC=    ${MNT}/${SYS}/doc/src/graph
-
-# local include files shared by graphics
-LINC=	${SRC}/graph/include
-
-# global include files shared by everyone
-GINC=	${SRC}/include
-
-@
-\section{viewalone}
-<<viewalone>>=
-${OUT}/viewalone: $(OBJS)  ${OBJ}/${SYS}/lib/util.o
-	@ echo 1 linking viewalone
-	@ ${CC} $(OBJS) ${OBJ}/${SYS}/lib/util.o -o ${OUT}/viewalone ${LDFLAGS} -lX11
-
-<<viewalone.c (MIDINT from IN)>>=
-${MIDINT}/viewalone.c: ${IN}/viewalone.c.pamphlet
-	@ echo 2 making ${MIDINT}/viewalone.c from ${IN}/viewalone.c.pamphlet
-	@ ( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/viewalone.c.pamphlet >viewalone.c )
-
-@
-<<viewalone.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/viewalone.o: ${HEADERS} ${MIDINT}/viewalone.c
-	@ echo 3 making ${MIDOBJ}/viewalone.o from ${MIDINT}/viewalone.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewalone.c )
-
-@
-<<viewalone.c.dvi (DOC from IN)>>=
-${DOC}/viewalone.c.dvi: ${IN}/viewalone.c.pamphlet 
-	@echo 4 making ${DOC}/viewalone.c.dvi from ${IN}/viewalone.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/viewalone.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} viewalone.c ; \
-	rm -f ${DOC}/viewalone.c.pamphlet ; \
-	rm -f ${DOC}/viewalone.c.tex ; \
-	rm -f ${DOC}/viewalone.c )
-
-@
-\section{spooncomp}
-<<spooncomp.c (MIDINT from IN)>>=
-${MIDINT}/spooncomp.c: ${IN}/spooncomp.c.pamphlet
-	@ echo 5 making ${MIDINT}/spooncomp.c from ${IN}/spooncomp.c.pamphlet
-	@ ( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/spooncomp.c.pamphlet >spooncomp.c )
-
-@
-<<spooncomp.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/spooncomp.o: ${HEADERS} ${MIDINT}/spooncomp.c
-	@ echo 6 making ${MIDOBJ}/spooncomp.o from ${MIDINT}/spooncomp.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spooncomp.c )
-
-@
-<<spooncomp.c.dvi (DOC from IN)>>=
-${DOC}/spooncomp.c.dvi: ${IN}/spooncomp.c.pamphlet 
-	@echo 7 making ${DOC}/spooncomp.c.dvi from ${IN}/spooncomp.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/spooncomp.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} spooncomp.c ; \
-	rm -f ${DOC}/spooncomp.c.pamphlet ; \
-	rm -f ${DOC}/spooncomp.c.tex ; \
-	rm -f ${DOC}/spooncomp.c )
-
-@
-\section{spoon2d}
-<<spoon2d.c (MIDINT from IN)>>=
-${MIDINT}/spoon2d.c: ${IN}/spoon2d.c.pamphlet
-	@ echo 8 making ${MIDINT}/spoon2d.c from ${IN}/spoon2d.c.pamphlet
-	@ ( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/spoon2d.c.pamphlet >spoon2d.c )
-
-@
-<<spoon2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/spoon2d.o: ${HEADERS} ${MIDINT}/spoon2d.c
-	@ echo 9 making ${MIDOBJ}/spoon2d.o from ${MIDINT}/spoon2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spoon2d.c )
-
-@
-<<spoon2d.c.dvi (DOC from IN)>>=
-${DOC}/spoon2d.c.dvi: ${IN}/spoon2d.c.pamphlet 
-	@echo 10 making ${DOC}/spoon2d.c.dvi from ${IN}/spoon2d.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/spoon2d.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} spoon2d.c ; \
-	rm -f ${DOC}/spoon2d.c.pamphlet ; \
-	rm -f ${DOC}/spoon2d.c.tex ; \
-	rm -f ${DOC}/spoon2d.c )
-
-@
-<<*>>=
-<<environment>>
-
-DOCFILES= ${DOC}/viewalone.c.dvi ${DOC}/spooncomp.c.dvi \
-          ${DOC}/spoon2d.c.dvi 
-
-CFLAGS = ${CCF} -I${IN} -I${LINC} -I${GINC} 
-LDFLAGS= ${LDF}
-
-OBJS=  ${MIDOBJ}/viewalone.o ${MIDOBJ}/spooncomp.o ${MIDOBJ}/spoon2d.o 
-
-HEADERS= ${IN}/viewalone.h     ${LINC}/component.h ${LINC}/view2d.h  \
-         ${LINC}/view3d.h      ${LINC}/tube.h      ${LINC}/actions.h \
-         ${LINC}/viewcommand.h 
-
-all: ${OBJS} ${OUT}/viewalone ${DOCFILES}
-	@echo 12 finished ${IN}
-
-<<viewalone>>
-
-<<viewalone.c (MIDINT from IN)>>
-<<viewalone.o (MIDOBJ from MIDINT)>>
-<<viewalone.c.dvi (DOC from IN)>>
-
-<<spooncomp.c (MIDINT from IN)>>
-<<spooncomp.o (MIDOBJ from MIDINT)>>
-<<spooncomp.c.dvi (DOC from IN)>>
-
-<<spoon2d.c (MIDINT from IN)>>
-<<spoon2d.o (MIDOBJ from MIDINT)>>
-<<spoon2d.c.dvi (DOC from IN)>>
-
-clean: 
-	@ echo 13 cleaning ${IN}/viewalone
-
-document: 
-	@ echo 14 documenting ${IN}/viewalone
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewalone/parabola.view/bitmap b/src/graph/viewalone/parabola.view/bitmap
deleted file mode 100755
index 1ebff18..0000000
--- a/src/graph/viewalone/parabola.view/bitmap
+++ /dev/null
@@ -1,1570 +0,0 @@
-#define bitmap_width 400
-#define bitmap_height 376
-static char bitmap_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x40, 0x10, 0x80, 0x43, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x60, 0x28, 0x40, 0xa4, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x44, 0x40, 0x14, 0x01, 0xc0, 0x07,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x44, 0x80, 0x13, 0x01,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x44, 0x40,
-   0x14, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
-   0x28, 0x44, 0xa4, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xf0, 0x11, 0x8e, 0x43, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x08, 0x02, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x14, 0x05,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x03,
-   0xa2, 0x08, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x02, 0xa2, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x02, 0xa2, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x08, 0x02, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03,
-   0x1c, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x02, 0x22, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0xa0, 0x08, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x98, 0x08, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x84, 0x08, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x02, 0x05,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70,
-   0x3e, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xe0, 0x03, 0x10, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18, 0x05, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x94, 0x08, 0xc0, 0x07,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x92, 0x08,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
-   0xbe, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x22, 0x10, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x71, 0x10, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x18, 0x02, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x05,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x82, 0x08, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x80, 0x01, 0x9a, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x02, 0xa6, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x22, 0x22, 0x05, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x71, 0x1c, 0x02, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
-   0x1c, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0xc0, 0x00, 0x22, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0xa0, 0x00, 0xa2, 0x08, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x9c, 0x08, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xa2, 0x08, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x22, 0x05,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x73,
-   0x1c, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00,
-   0x00, 0x01, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0xf0, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
-   0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
-   0x00, 0x00, 0x80, 0x00, 0x08, 0x18, 0x00, 0x01, 0x18, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
-   0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x04, 0x00, 0x00, 0x00, 0x40, 0x01, 0x14, 0x60, 0x0c, 0x31, 0x06, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7c, 0x3c,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x02, 0xa2, 0x08,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x02,
-   0xa2, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x40, 0x21, 0x14, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x70, 0x08, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x08, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x43, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80,
-   0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x08, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01,
-   0x8c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x40, 0xa4, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x40, 0x01, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x18, 0x40, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x60, 0x14,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x4a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14,
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0xa2, 0x08, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x14, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
-   0x50, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xc0, 0xc7, 0x00, 0x49, 0x04, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x11,
-   0x00, 0x13, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0xa2, 0x08, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x13, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x06, 0x48, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x5f, 0x04, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x10, 0x80, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0xa2,
-   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x10, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0xf8, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x88, 0x02, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x10, 0x44, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
-   0x21, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x44, 0xa0, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x39, 0x08, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xce, 0x47, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x80, 0x70, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xce,
-   0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcf, 0x41, 0x08, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x43, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x40, 0xa4, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x14, 0x01,
-   0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x11, 0x80,
-   0x13, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x10, 0x40, 0x14, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x10, 0x44, 0xa4, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x7c, 0x8e, 0x43, 0x00, 0x00, 0x01, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/src/graph/viewalone/parabola.view/data b/src/graph/viewalone/parabola.view/data
deleted file mode 100755
index 487adba..0000000
--- a/src/graph/viewalone/parabola.view/data
+++ /dev/null
@@ -1,57 +0,0 @@
-3
-x*x
-0 0 400 400
-1
-0.867014 0.575432
-0 0
-0 0
-1 1 1 1 61 1 68
-1 1
-0
-0.9 0.9
-0 0
-0 0
-1 1 0 1 0 0 0
-0 0
-0
-0.9 0.9
-0 0
-0 0
-1 1 0 1 0 0 0
-0 0
-0
-0.9 0.9
-0 0
-0 0
-1 1 0 1 0 0 0
-0 0
-0
-0.9 0.9
-0 0
-0 0
-1 1 0 1 0 0 0
-0 0
-0
-0.9 0.9
-0 0
-0 0
-1 1 0 1 0 0 0
-0 0
-0
-0.9 0.9
-0 0
-0 0
-1 1 0 1 0 0 0
-0 0
-0
-0.9 0.9
-0 0
-0 0
-1 1 0 1 0 0 0
-0 0
-0
-0.9 0.9
-0 0
-0 0
-1 1 0 1 0 0 0
-0 0
diff --git a/src/graph/viewalone/parabola.view/graph0 b/src/graph/viewalone/parabola.view/graph0
deleted file mode 100755
index cc962f2..0000000
--- a/src/graph/viewalone/parabola.view/graph0
+++ /dev/null
@@ -1,57 +0,0 @@
--3 0 3 9
-0.166667 0.111111
-1.49012e-08 -0.5
-1.2 1.8
-0.2 0.2
-1
-49
-91 135 3
--0.5 0.5 0 2
--0.479167 0.418403 0 2
--0.458333 0.340278 0 2
--0.4375 0.265625 0 2
--0.416667 0.194444 0 2
--0.395833 0.126736 0 2
--0.375 0.0625 0 2
--0.354167 0.00173611 0 2
--0.333333 -0.0555556 0 2
--0.3125 -0.109375 0 2
--0.291667 -0.159722 0 2
--0.270833 -0.206597 0 2
--0.25 -0.25 0 2
--0.229167 -0.289931 0 2
--0.208333 -0.326389 0 2
--0.1875 -0.359375 0 2
--0.166667 -0.388889 0 2
--0.145833 -0.414931 0 2
--0.125 -0.4375 0 2
--0.104167 -0.456597 0 2
--0.0833333 -0.472222 0 2
--0.0625 -0.484375 0 2
--0.0416667 -0.493056 0 2
--0.0208333 -0.498264 0 2
-1.49012e-08 -0.5 0 2
-0.0208333 -0.498264 0 2
-0.0416667 -0.493056 0 2
-0.0625 -0.484375 0 2
-0.0833334 -0.472222 0 2
-0.104167 -0.456597 0 2
-0.125 -0.4375 0 2
-0.145833 -0.414931 0 2
-0.166667 -0.388889 0 2
-0.1875 -0.359375 0 2
-0.208333 -0.326389 0 2
-0.229167 -0.289931 0 2
-0.25 -0.25 0 2
-0.270833 -0.206597 0 2
-0.291667 -0.159722 0 2
-0.3125 -0.109375 0 2
-0.333333 -0.0555556 0 2
-0.354167 0.00173611 0 2
-0.375 0.0625 0 2
-0.395833 0.126736 0 2
-0.416667 0.194444 0 2
-0.4375 0.265625 0 2
-0.458333 0.340278 0 2
-0.479167 0.418403 0 2
-0.5 0.5 0 2
diff --git a/src/graph/viewalone/parabola.view/pixmap b/src/graph/viewalone/parabola.view/pixmap
deleted file mode 100755
index 9e1d577..0000000
Binary files a/src/graph/viewalone/parabola.view/pixmap and /dev/null differ
diff --git a/src/graph/viewalone/spoon2d.c.pamphlet b/src/graph/viewalone/spoon2d.c.pamphlet
deleted file mode 100644
index 21c81d4..0000000
--- a/src/graph/viewalone/spoon2d.c.pamphlet
+++ /dev/null
@@ -1,380 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewalone spoon2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _SPOON2D_C
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "viewalone.h"
-
-
-#include "util.h1"
-#include "all-alone.h1"
-
-/* #define huhDEBUG */
-
-/* #define spoonDEBUG  */
-
-void 
-spoonView2D(void)
-{
-
-  int  i,code,pipe0[2],pipe1[2],there;
-  char envAXIOM[100],runView[100];
-
-  sprintf(errorStr,"%s","creating pipes");
-  check(pipe(pipe0));
-  check(pipe(pipe1));
-  switch(fork()) {
-
-  case -1:
-    fprintf(stderr,"Cannot create a new process - ");
-    fprintf(stderr,"probably have too many things running already.\n");
-    exit(-1);
-
-  case 0:
-    /************
-     *   Child  *
-     ************/
-    printf("(spoon2d child) mapping of pipes to standard I/O for view2d\n");
-    sprintf(errorStr,"%s","(viewalone) mapping of pipes to standard I/O for view2d");
-    check(dup2(pipe0[0],0));     
-    check(dup2(pipe1[1],1));
-    close(pipe0[0]);
-    close(pipe0[1]);
-    close(pipe1[0]);
-    close(pipe1[1]);
-    printf("(spoon2d child) start the TwoDimensionalViewport process\n");
-    sprintf(errorStr,"%s","(viewalone) execution of the TwoDimensionalViewport process");
-    sprintf(envAXIOM,"%s",getenv("AXIOM"));
-    sprintf(runView,"%s%s",envAXIOM,"/lib/view2d");
-    check(execl(runView,runView,NULL));
-    fprintf(stderr,"Could not execute view2d! Check that view2d is on your path variable.\n");
-    exit(-1);
-
-  default:
-    /*************
-     *   Parent  *
-     *************/
-
-    viewP.viewType = view2DType;
-    
-    /* set up pipes to child process */
-    close(pipe0[0]);
-    close(pipe1[1]);
-    viewP.viewIn  = pipe1[0];
-    viewP.viewOut = pipe0[1];
-    printf("(spoon2d parent) pipes created\n");
-    if (viewP.viewIn <0) {
-      fprintf(stderr,"  Could not connect from Viewport manager to viewport process. Try again.\n");
-      return;
-    } else {
-      code = read(viewP.viewIn,&ack,intSize);
-      if (code < 0) {
-        fprintf(stderr,"  Could not connect from Viewport manager to viewport process. Try again.\n");
-        return;
-      }
-    } 
-    printf("(spoon2d parent) making View2D data\n");
-    makeView2DFromFileData(&doView2D);
-
-    /* tell child it is to be a stand alone program */
-    i = yes;
-    fprintf(stderr,"  Transmitting data to viewport...\n");
-    write(viewP.viewOut,&i,intSize);
-
-    write(viewP.viewOut,&doView2D,sizeof(view2DStruct));
-    i = strlen(doView2D.title)+1;
-    write(viewP.viewOut,&i,intSize);        /* tell the length of the title to child */
-    write(viewP.viewOut,doView2D.title,i);  /* tell the title to the child, child */
-    for (i=0; i<maxGraphs; i++) {
-      there = graphArray[i].key;
-      write(viewP.viewOut,&there,intSize);
-      sendGraphToView2D(i,there,&viewP);
-    };  /* for i in graphs */
-
-    fprintf(stderr,"  Done.\n");
-    
-    /*** get acknowledge from viewport */
-
-    code = read(viewP.viewIn,&(viewP.viewWindow),sizeof(Window));
-    sleep(1);  /* wait a second...*/
-    exit(0); 
-
-  }   /* switch */
-
-}    /* forkView2D() */
-
-
-
-/*void sendGraphToView2D(i,there,viewP) */
-void 
-sendGraphToView2D(int i,int there,viewManager *viewP)
-{
-  graphStruct      *gPtr;
-  pointListStruct  *llPtr;
-  pointStruct      *p;
-  int j,k;
-  printf("(spoon2d sendGraphToView2D) i=%d there=%d\n",i,there);
-  if (there) {
-
-    gPtr = &(graphArray[i]);
-    printf("(spoon2d sendGraphToView2D) graph %d is there\n",i);
-    write(viewP->viewOut,&(gPtr->xmin),floatSize);
-    write(viewP->viewOut,&(gPtr->xmax),floatSize);
-    write(viewP->viewOut,&(gPtr->ymin),floatSize);
-    write(viewP->viewOut,&(gPtr->ymax),floatSize);
-    write(viewP->viewOut,&(gPtr->xNorm),floatSize);
-    write(viewP->viewOut,&(gPtr->yNorm),floatSize);
-    write(viewP->viewOut,&(gPtr->spadUnitX),floatSize);
-    write(viewP->viewOut,&(gPtr->spadUnitY),floatSize);
-    write(viewP->viewOut,&(gPtr->unitX),floatSize);
-    write(viewP->viewOut,&(gPtr->unitY),floatSize);
-    write(viewP->viewOut,&(gPtr->originX),floatSize);
-    write(viewP->viewOut,&(gPtr->originY),floatSize);
-    write(viewP->viewOut,&(gPtr->numberOfLists),intSize);
-    
-    llPtr = gPtr->listOfListsOfPoints;
-    for (j=0; j<(gPtr->numberOfLists); j++) {
-      write(viewP->viewOut,&(llPtr->numberOfPoints),intSize);
-      p = llPtr->listOfPoints;
-      for (k=0; k<(llPtr->numberOfPoints); k++) {
-        write(viewP->viewOut,&(p->x),floatSize);
-        write(viewP->viewOut,&(p->y),floatSize);
-        write(viewP->viewOut,&(p->hue),floatSize);
-        write(viewP->viewOut,&(p->shade),floatSize);
-        p++;
-      }    /* for k in list of points */
-      write(viewP->viewOut,&(llPtr->pointColor),intSize);
-      write(viewP->viewOut,&(llPtr->lineColor),intSize);
-      write(viewP->viewOut,&(llPtr->pointSize),intSize);
-      llPtr++;
-    }   /* for j in list of lists of points */
-    
-    /* a state is defined for a graph if it is there */
-    write(viewP->viewOut,&(graphStateArray[i].scaleX),floatSize);
-    write(viewP->viewOut,&(graphStateArray[i].scaleY),floatSize);
-    write(viewP->viewOut,&(graphStateArray[i].deltaX),floatSize);
-    write(viewP->viewOut,&(graphStateArray[i].deltaY),floatSize);
-    write(viewP->viewOut,&(graphStateArray[i].pointsOn),intSize);
-    write(viewP->viewOut,&(graphStateArray[i].connectOn),intSize);
-    write(viewP->viewOut,&(graphStateArray[i].splineOn),intSize);
-    write(viewP->viewOut,&(graphStateArray[i].axesOn),intSize);
-    write(viewP->viewOut,&(graphStateArray[i].axesColor),intSize);
-    write(viewP->viewOut,&(graphStateArray[i].unitsOn),intSize);
-    write(viewP->viewOut,&(graphStateArray[i].unitsColor),intSize);
-    write(viewP->viewOut,&(graphStateArray[i].showing),intSize);
-    
-  }   /* if graph is there */
-
-}
-
-
-void  
-makeView2DFromFileData(view2DStruct *doView2D)
-{
-  
-  int i,j,k;
-  char title[256];
-  FILE *graphFile;
-  char graphFilename[256];
-  pointListStruct *aList;
-  pointStruct     *aPoint;
-  printf("(spoon2d makeView2DFromFileData)\n");  
-  fgets(title,256,viewFile);
-  printf("(spoon2d) title=%s\n",title);  
-  if (!(doView2D->title = 
-	(char *)malloc((strlen(title)+1) * sizeof(char)))) {
-    fprintf(stderr,
-	    "Ran out of memory (malloc) trying to get the title.\n");
-    exit(-1);
-  }
-  sprintf(doView2D->title,"%s",title);
-  /* put in a null terminator over the newline that the fgets reads */
-  doView2D->title[strlen(doView2D->title)-1] = '\0'; 
-  fscanf(viewFile,"%d %d %d %d\n",
-	 &(doView2D->vX),
-	 &(doView2D->vY),
-	 &(doView2D->vW),
-	 &(doView2D->vH));
-  printf("(spoon2d) X=%d Y=%d W=%d H=%d \n",
-           doView2D->vX,doView2D->vY,doView2D->vW,doView2D->vH);
-  for (i=0; i<maxGraphs; i++) {
-    fscanf(viewFile,"%d\n",
-	   &(graphArray[i].key));
-    printf("(spoon2d) i=%d key=%d\n",
-           i,graphArray[i].key);  
-    fscanf(viewFile,"%g %g\n",
-	   &(graphStateArray[i].scaleX),
-	   &(graphStateArray[i].scaleY));
-    printf("(spoon2d) scaleX=%g scaleY=%g\n",
-	     graphStateArray[i].scaleX,graphStateArray[i].scaleY);
-    fscanf(viewFile,"%g %g\n",
-	   &(graphStateArray[i].deltaX),
-	   &(graphStateArray[i].deltaY));
-    printf("(spoon2d) deltaX=%g deltaY=%g\n",
-	     graphStateArray[i].deltaX,graphStateArray[i].deltaY);
-    fscanf(viewFile,"%g %g\n",
-	   &(graphStateArray[i].centerX),
-	   &(graphStateArray[i].centerY));
-    printf("(spoon2d) centerX=%g centerY=%g\n",
-	     graphStateArray[i].centerX,graphStateArray[i].centerY);
-    fscanf(viewFile,"%d %d %d %d %d %d %d\n",
-	   &(graphStateArray[i].pointsOn),
-	   &(graphStateArray[i].connectOn),
-	   &(graphStateArray[i].splineOn),
-	   &(graphStateArray[i].axesOn),
-	   &(graphStateArray[i].axesColor),
-	   &(graphStateArray[i].unitsOn),
-	   &(graphStateArray[i].unitsColor));
-    printf("(spoon2d) pointsOn=%d connectOn=%d splineOn=%d axesOn=%d axesColor=%d unitsOn=%d unitsColor=%d\n",
-           graphStateArray[i].pointsOn,graphStateArray[i].connectOn,
-           graphStateArray[i].splineOn,graphStateArray[i].axesOn,
-           graphStateArray[i].axesColor,graphStateArray[i].unitsOn,
-           graphStateArray[i].unitsColor);
-    fscanf(viewFile,"%d %d\n",
-	   &(graphStateArray[i].showing),
-	   &(graphStateArray[i].selected));
-    printf("(spoon2d) showing=%d selected=%d\n",
-            graphStateArray[i].showing,graphStateArray[i].selected);
-  }
-  fclose(viewFile);
-  for (i=0; i<maxGraphs; i++) {
-    if (graphArray[i].key) {
-      /** OPEN FILE FOR GRAPHS **/
-      sprintf(graphFilename,"%s%s%d",pathname,"/graph",i);
-      if ((graphFile = fopen(graphFilename,"r")) == NULL) {
-        fprintf(stderr,"   Error: Cannot find the file %s\n",graphFilename);
-        perror("fopen");
-        return;
-      } else {
-        printf("(spoon2d) \n\nGRAPH%i\n",i);
-        fscanf(graphFile,"%g %g %g %g\n",
-               &(graphArray[i].xmin),
-	       &(graphArray[i].ymin),
-               &(graphArray[i].xmax),
-	       &(graphArray[i].ymax));
-        printf("(spoon2d) xmin=%g ymin=%g xmax=%g ymax=%g\n",
-                graphArray[i].xmin,graphArray[i].ymin,
-                graphArray[i].xmax,graphArray[i].ymax);
-        fscanf(graphFile,"%g %g\n",
-               &(graphArray[i].xNorm),
-	       &(graphArray[i].yNorm));
-        printf("(spoon2d) xNorm=%g yNorm=%g\n",
-               graphArray[i].xNorm,graphArray[i].yNorm);
-        fscanf(graphFile,"%g %g\n",
-               &(graphArray[i].originX),
-	       &(graphArray[i].originY));
-        printf("(spoon2d) originX=%g originY=%g\n",
-               graphArray[i].originX,graphArray[i].originY);
-        fscanf(graphFile,"%g %g\n",
-               &(graphArray[i].spadUnitX),
-	       &(graphArray[i].spadUnitY));
-        printf("(spoon2d) spadUnitX=%g spadUnitY=%g\n",
-               graphArray[i].spadUnitX,graphArray[i].spadUnitY);
-        fscanf(graphFile,"%g %g\n",
-               &(graphArray[i].unitX),
-	       &(graphArray[i].unitY));
-        printf("(spoon2d) unitX=%g unitY=%g\n",
-               graphArray[i].unitX,graphArray[i].unitY);
-        fscanf(graphFile,"%d\n",
-	       &(graphArray[i].numberOfLists));
-        printf("(spoon2d) numberOfLists=%d\n",
-	        graphArray[i].numberOfLists);
-        if (!(aList =
-              (pointListStruct *)malloc(graphArray[i].numberOfLists * 
-					sizeof(pointListStruct)))) {
-          fprintf(stderr,"viewalone: Fatal Error>> Out of memory trying to receive a graph.\n");
-          exit(-1);
-        }
-        graphArray[i].listOfListsOfPoints = aList;
-        for (j=0;
-             j<graphArray[i].numberOfLists;
-             j++, aList++) {
-          printf("(spoon2d) list number %d\n",j);
-          fscanf(graphFile,"%d\n",&(aList->numberOfPoints));
-          printf("(spoon2d) number of points %d\n",
-                  aList->numberOfPoints);
-          fscanf(graphFile,"%d %d %d\n",
-                 &(aList->pointColor),
-		 &(aList->lineColor),
-		 &(aList->pointSize));
-          printf("(spoon2d) pointColor=%d lineColor=%d pointSize=%d\n",
-                 aList->pointColor,aList->lineColor,aList->pointSize);
-          if (!(aPoint = (pointStruct *)malloc(aList->numberOfPoints * 
-					       sizeof(pointStruct)))) {
-            fprintf(stderr,"viewalone: Fatal Error>> Out of memory trying to receive a graph.\n");
-            exit(-1);
-          }
-          aList->listOfPoints = aPoint;   /** point to current point list **/
-          for (k=0;
-               k<aList->numberOfPoints; 
-               k++,aPoint++) 
-          {  fscanf(graphFile,"%g %g %g %g\n",
-		   &(aPoint->x),
-		   &(aPoint->y),
-		   &(aPoint->hue),
-		   &(aPoint->shade));
-            printf("(spoon2d)k=%d x=%g y=%g hue=%g shade=%g\n",
-                   k,aPoint->x,aPoint->y,aPoint->hue,aPoint->shade);
-          }
-        } /* for j, aList */            
-        fclose(graphFile);
-      } /* else, opened up a file */
-    } /* if graph.key */
-  } /* for i */
-} /* makeView2DFromFileData */
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewalone/spooncomp.c.pamphlet b/src/graph/viewalone/spooncomp.c.pamphlet
deleted file mode 100644
index 1956460..0000000
--- a/src/graph/viewalone/spooncomp.c.pamphlet
+++ /dev/null
@@ -1,291 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewalone spooncomp.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _SPOONCOMP_C
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-
-#include "viewalone.h"
-#include "mode.h"
-
-#include "util.h1"
-#include "all-alone.h1"
-
-
-
-/* This file forks a child process and exits the parent. It 
-   has the same general form as ../viewman/funView3D() and so 
-   changes there may require similar changes here. */
-
-void 
-spoonView3D(int type)
-{
-  
-  int  i,j,k,code,pipe0[2],pipe1[2];
-  char envAXIOM[100],runView[100];
-  LLPoint *anLLPoint;
-  LPoint *anLPoint;
-  int *anIndex;
-  
-  sprintf(errorStr,"%s","creating pipes");
-  check(pipe(pipe0));
-  check(pipe(pipe1));
-  switch(fork()) {
-  case -1:
-    fprintf(stderr,"can't create a child process\n");
-    fprintf(stderr,"you may have too many processes running\n");
-    exit(-1);
-  case 0:
-    /*  Child  */
-    sprintf(errorStr,"%s",
-	    "(viewalone) mapping of pipes to standard I/O for view3d");
-    check(dup2(pipe0[0],0));     
-    check(dup2(pipe1[1],1));
-    close(pipe0[0]);
-    close(pipe0[1]);
-    close(pipe1[0]);
-    close(pipe1[1]);
-    
-    sprintf(errorStr,"%s",
-	    "(viewalone) execution of the ThreeDimensionalViewport process");
-    sprintf(envAXIOM,"%s",getenv("AXIOM"));
-    sprintf(runView,"%s%s",envAXIOM,"/lib/view3d");
-    check(execl(runView,runView,NULL));
-    fprintf(stderr,"Could not execute view3d!\n");
-    exit(-1);
-  default:
-    /*  Parent  */
-    
-    viewP.viewType = type;
-    
-    /* set up pipes to child process */
-    close(pipe0[0]);
-    close(pipe1[1]);
-    viewP.viewIn  = pipe1[0];
-    viewP.viewOut = pipe0[1];
-    
-    if (viewP.viewIn <0) {
-      fprintf(stderr,
-	      "can't set up pipes to viewport process. Try again.\n");
-      return;
-    } else {
-      code = read(viewP.viewIn,&ack,intSize);
-      if (code < 0) {
-        fprintf(stderr,"can't read from viewport process pipe. Try again.\n");
-        return;
-      }
-    } 
-    
-    makeView3DFromFileData(type);
-    /* tell child it is to be a stand alone program */
-    i = yes;
-    fprintf(stderr,"  Transmitting data to viewport...\n");
-    write(viewP.viewOut,&i,intSize);
-    write(viewP.viewOut,&doView3D,sizeof(view3DStruct));
-    i = strlen(doView3D.title)+1;
-    write(viewP.viewOut,&i,intSize);  /* tell the length of 
-					 the title to child */
-    write(viewP.viewOut,doView3D.title,i);  /* tell the title 
-					       to the child, child */
-    write(viewP.viewOut,&(doView3D.lightVec[0]),floatSize);
-    write(viewP.viewOut,&(doView3D.lightVec[1]),floatSize);
-    write(viewP.viewOut,&(doView3D.lightVec[2]),floatSize);
-    
-    write(viewP.viewOut,&(doView3D.numOfPoints),intSize);
-    for (i=0; i<doView3D.numOfPoints; i++) {
-      write(viewP.viewOut,&(refPt(doView3D,i)->x),floatSize);
-      write(viewP.viewOut,&(refPt(doView3D,i)->y),floatSize);
-      write(viewP.viewOut,&(refPt(doView3D,i)->z),floatSize);
-      write(viewP.viewOut,&(refPt(doView3D,i)->c),floatSize);
-    }
-    
-    /* send generalized 3D components */
-    write(viewP.viewOut,&(doView3D.lllp.numOfComponents),intSize);
-    anLLPoint = doView3D.lllp.llp;
-    for (i=0; i<doView3D.lllp.numOfComponents; i++,anLLPoint++) {
-      write(viewP.viewOut,&(anLLPoint->prop.closed),intSize);
-      write(viewP.viewOut,&(anLLPoint->prop.solid),intSize);
-      write(viewP.viewOut,&(anLLPoint->numOfLists),intSize);
-      anLPoint = anLLPoint->lp;
-      for (j=0; j<anLLPoint->numOfLists; j++,anLPoint++) {
-        write(viewP.viewOut,&(anLPoint->prop.closed),intSize);
-        write(viewP.viewOut,&(anLPoint->prop.solid),intSize);
-        write(viewP.viewOut,&(anLPoint->numOfPoints),intSize);
-        anIndex = anLPoint->indices;
-        for (k=0; k<anLPoint->numOfPoints; k++,anIndex++)
-          write(viewP.viewOut,anIndex,intSize);
-      } /* for LPoints in LLPoints (j) */
-    } /* for LLPoints in LLLPoints (i) */
-    fprintf(stderr,"    Done.\n");
-    
-    /*** get acknowledge from viewport */
-    code = read(viewP.viewIn,&(viewP.viewWindow),sizeof(Window));
-    sleep(1);  /* wait a second...*/
-    exit(0); 
-    
-  }   /* switch */
-  
-}    /* spoonView3D() */
-
-
-void
-makeView3DFromFileData(int type)
-{
-  
-  int i,j,k;
-  char title[256];
-  LLPoint *anLLPoint;
-  LPoint *anLPoint;
-  viewTriple *aPoint;
-  int *anIndex;
-
-  /* fscanf(doView3D,""); */
-  /* read in the view3DStruct stuff */
-  /* &view3DType already read */
-  doView3D.typeOf3D = type;
-  fscanf(viewFile,"%f %f %f %f %f %f\n",
-	 &(doView3D.xmin),
-	 &(doView3D.xmax),
-	 &(doView3D.ymin),
-	 &(doView3D.ymax),
-	 &(doView3D.zmin),
-	 &(doView3D.zmax));
-
-  fgets(title,256,viewFile);
-  if (!(doView3D.title = (char *)malloc((strlen(title)+1) * 
-					sizeof(char)))) {
-    fprintf(stderr,"Ran out of memory (malloc) trying to get the title.\n");
-    exit(-1);
-  }
-  sprintf(doView3D.title,"%s",title);
-  /* put in a null terminator over the newline that the fgets reads */
-  doView3D.title[strlen(doView3D.title)-1] = '\0'; 
-  
-  fscanf(viewFile,"%f %f %f %f %f %f %f %f\n",
-	 &(doView3D.deltaX),
-	 &(doView3D.deltaY),
-	 &(doView3D.scale),
-	 &(doView3D.scaleX),
-	 &(doView3D.scaleY),
-	 &(doView3D.scaleZ),
-	 &(doView3D.theta),
-	 &(doView3D.phi));
-  
-  fscanf(viewFile,"%d %d %d %d\n",
-	 &(doView3D.vX),
-	 &(doView3D.vY),
-	 &(doView3D.vW),
-	 &(doView3D.vH));
-  fscanf(viewFile,"%d %d %d %d %d %d %d\n",
-	 &(doView3D.showCP),
-	 &(doView3D.style),
-	 &(doView3D.AxesOn),
-	 &(doView3D.hueOff),
-	 &(doView3D.numOfHues),
-	 &(doView3D.diagonals),
-	 &(doView3D.outlineRenderOn));
-  fscanf(viewFile,"%f %f %f %f\n",
-	 &(doView3D.lightVec[0]),
-	 &(doView3D.lightVec[1]),
-	 &(doView3D.lightVec[2]),
-	 &(doView3D.translucency));
-  fscanf(viewFile,"%d %f\n",
-	 &(doView3D.perspective),
-	 &(doView3D.eyeDistance));
-  
-  /* get generalized 3D components */
-  
-  fscanf(viewFile,"%d\n",
-	 &(doView3D.numOfPoints));
-  aPoint = doView3D.points = (viewTriple *)malloc(doView3D.numOfPoints*
-						  sizeof(viewTriple));
-  for (i=0; i<doView3D.numOfPoints; i++, aPoint++)
-    fscanf(viewFile,"%g %g %g %g\n",
-           &(aPoint->x),
-	   &(aPoint->y),
-	   &(aPoint->z),
-	   &(aPoint->c));
-  fscanf(viewFile,"%d\n",
-	 &(doView3D.lllp.numOfComponents));
-  anLLPoint = doView3D.lllp.llp = 
-    (LLPoint *)malloc(doView3D.lllp.numOfComponents*sizeof(LLPoint));
-  for (i=0; i<doView3D.lllp.numOfComponents; i++,anLLPoint++) {
-    fscanf(viewFile,"%d %d\n",
-	   &(anLLPoint->prop.closed),
-	   &(anLLPoint->prop.solid));
-    fscanf(viewFile,"%d\n",
-	   &(anLLPoint->numOfLists));
-    anLPoint = anLLPoint->lp = 
-      (LPoint *)malloc(anLLPoint->numOfLists*sizeof(LPoint));
-    for (j=0; j<anLLPoint->numOfLists; j++,anLPoint++) {
-      fscanf(viewFile,"%d %d\n",
-	     &(anLPoint->prop.closed),
-	     &(anLPoint->prop.solid));
-      fscanf(viewFile,"%d\n",
-	     &(anLPoint->numOfPoints));
-      anIndex = anLPoint->indices =
-        (int *)malloc(anLPoint->numOfPoints*sizeof(int));
-      for (k=0; k<anLPoint->numOfPoints; k++,anIndex++) {
-        fscanf(viewFile,"%dn",anIndex);
-      } /* for points in LPoints (k) */
-    } /* for LPoints in LLPoints (j) */
-  } /* for LLPoints in LLLPoints (i) */
-  
-  fclose(viewFile);
-  doView3D.scaleDown = no ;
-}
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewalone/viewalone.c.pamphlet b/src/graph/viewalone/viewalone.c.pamphlet
deleted file mode 100644
index 6a673ff..0000000
--- a/src/graph/viewalone/viewalone.c.pamphlet
+++ /dev/null
@@ -1,133 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/viewalone viewalone.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _VIEWALONE_C
-
-#include <stdlib.h>
-#include "viewalone.h"
-
-#include "all-alone.h1"
-
-/************* global variables **************/
-
-viewManager viewP;   /* note that in viewman, this is called viewports */
-
-/* 3D stuff */
-view3DStruct doView3D;
-
-/* 2D stuff */
-view2DStruct doView2D;
-graphStruct      graphArray[maxGraphs];
-graphStateStruct graphStateArray[maxGraphs];
-
-/* tube stuff */
-tubeModel doViewTube;
-
-int         viewType;
-int         filedes,ack;
-
-char        errorStr[80];
-
-
-int viewOkay  = 0;
-int viewError = -1;
-
-FILE *viewFile;
-char filename[256];
-char pathname[256];
-
-/************* main program **************/
-
-int main (int argc,char *argv[])
-{
-        printf("viewalone called with argc=%d\n",argc);
-        printf("viewalone called with argv[1]=%s\n",argv[0]);
-        printf("viewalone called with argv[2]=%s\n",argv[1]);
-/******** Open files and Figure out the viewport type ********/
-
-	sprintf(filename,"%s%s",argv[1],".view/data");
-        if((viewFile = fopen(filename,"r")) == NULL ) {
-         
-           sprintf(filename,"%s%s",argv[1],"/data");
-           if((viewFile = fopen(filename,"r")) == NULL ){
-             fprintf(stderr,"Error: Cannot find the file %s%s or %s%s\n",
-                  argv[1],".view/data",argv[1],"/data");
-             exit(-1);
- 	   }
-           sprintf(pathname,"%s",argv[1]);
-	}
-        else{
-             sprintf(pathname,"%s%s",argv[1],".view");
-	   }
-	fscanf(viewFile,"%d\n",&viewType);
-        printf("filename = %s\n",filename);
-        printf("viewType = %d\n",viewType);
-	switch (viewType) {
-
-	case view3DType:
-	case viewTubeType:
-                printf("calling spoonView3D\n");
-		spoonView3D(viewType);
-		break;
-
-	case view2DType:
-                printf("calling spoonView2D\n");
-		spoonView2D();
-		break;
-
-	}  /* switch */
-      printf("The first number in the file, %d, called the viewType, not a valid value. It must be a number in the range of [1..4]\n",viewType);
-      return(0);
-      }
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/viewalone/viewalone.h b/src/graph/viewalone/viewalone.h
deleted file mode 100755
index af969a7..0000000
--- a/src/graph/viewalone/viewalone.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <stdio.h>
-#include "view3d.h"
-#include "view2d.h"
-#include "actions.h"
-#include "viewcommand.h"
-
-      /* Viewport Commands */
-#define makeViewport -1
-#define makeGraph    -1
-
-      /* Assorted Junk */
-#define check(code) checker(code,__LINE__,"")
-#define maxConnect 40
-#define intSize sizeof(int)
-#define floatSize sizeof(float)
-#define yes 1
-#define no 0
-
-extern viewManager viewP;
-extern view3DStruct doView3D;
-extern view2DStruct doView2D;
-extern graphStruct      graphArray[maxGraphs];
-extern graphStateStruct graphStateArray[maxGraphs],graphStateBackupArray[maxGraphs];
-extern tubeModel doViewTube;
-extern int         viewType;
-extern int         filedes,ack;
-extern char        errorStr[80];
-extern int viewOkay;
-extern int viewError;
-extern FILE *viewFile;
-extern char filename[256];
-extern char pathname[256];
-

\start
Date: Sat, 7 Jun 2008 13:20:12 -0500
From: Tim Daly
To: list
Subject: 20080607.03.tpd.patch (FAQ 48: Getting Axiom sources from git)

FAQ 48: Getting Axiom sources from git
=======================================================================
diff --git a/changelog b/changelog
index d5e1216..70b7bd7 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080607 tpd FAQ 48: Getting Axiom sources from git
 20080607 tpd src/graph/viewalone/Makefile deleted (use bookvol8)
 20080607 tpd src/graph/viewalone/parabola.view/bitmap deleted (use bookvol8)
 20080607 tpd src/graph/viewalone/parabola.view/data deleted (use bookvol8)
diff --git a/faq b/faq
index d9ba9a3..4cbe9af 100644
--- a/faq
+++ b/faq
@@ -46,6 +46,7 @@ FAQ 44: I don't have the math fonts
 FAQ 45: Axiom copyright information
 FAQ 46: Axiom trademark information
 FAQ 47: Axiom won't build on Fedora 9 (SELinux)
+FAQ 48: Getting Axiom sources from git
 
 ===================================================================
 FAQ 0: How do I use Axiom?
@@ -1732,4 +1733,25 @@ then do:
 cd /etc/selinux/strict/src/policy
 make load
 
+===================================================================
+FAQ 48: Getting Axiom sources from git
+===================================================================
+There are 2 git repositories for Axiom source code.
+
+The first repository is at github.com. This repository is the
+latest released version of Axiom (Gold). To get the source type:
+
+  git-clone git://github.com/daly/axiom.git
+
+The second repository is at axiom-developer.org. This repository is the
+latest development version of Axiom (Silver). To get the source type:
+
+  git-clone ssh://git@axiom-developer.org/home/git/silver
+  (pswd:linus)
+
+Once you have the source code visit 
+
+http://axiom.axiom-developer.org/axiom-website/download.html
+
+for further information.
 

\start
Date: Sat, 7 Jun 2008 21:31:12 -0500
From: Tim Daly
To: list
Subject: 20080608.01.tpd.patch (Make gdraws from bookvol8)

Make gdraws from bookvol8.

=======================================================================
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index 633c050..ecef4e1 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -23104,7 +23104,7 @@ units on the axes.
 <<gdraws/data.c>>=
 /* Data file to test out Gdraw functions */
 
-#include "gdraws0.h"
+<<gdraws/gdraws0.h>>
 #include "../view3d/header.h"
 #include "nox10.h"
 
@@ -23384,7 +23384,7 @@ extern	char		*envAXIOM;     /* environment variable AXIOM or DEVE */
 #include <stdlib.h>
 #include <string.h>
 
-#include "gdraws0.h"
+<<gdraws/gdraws0.h>>
 <<include/g.h>>
 #include "hash.h"
 
@@ -24672,8 +24672,8 @@ XDeleteAssoc(Display * dsp,HashTable * table, Window w)
 <<gdraws/loadfont.c>>=
 /* load_font for display to test out Gdraw functions in this directory */
 
-#include "gdraws0.h"
-#include "../include/g.h"
+<<gdraws/gdraws0.h>>
+<<include/g.h>>
 
 #include <stdio.h>
 
@@ -24690,7 +24690,7 @@ Gdraws_load_font(XFontStruct **font_info, char *fontname)
 <<gdraws/main.c>>=
 /* main procedure to test out Gdraw functions in this directory */
 #include <stdio.h>
-#include "gdraws0.h"
+<<gdraws/gdraws0.h>>
 #include "../view3d/header.h"
 
 GC		gc, gc1;
@@ -24851,12 +24851,11 @@ main(int argc, char **argv)
 \section{gdraws Makefile}
 \subsection{environment variables}
 <<gdraws/Makefile>>=
-IN=	${SRC}/graph/gdraws
+BOOK=${SPD}/books/bookvol8.pamphlet
 MIDINT=	${INT}/graph/gdraws
 MIDOBJ=	${OBJ}/${SYS}/graph/gdraws
 OUT=	${MNT}/${SYS}/lib
 PS=	${MNT}/${SYS}/lib/graph
-DOC=    ${MNT}/${SYS}/doc/src/graph
 
 # local include files shared by graphics
 LINC=	${SRC}/graph/include
@@ -24876,12 +24875,9 @@ DOTH=	${SRC}/graph/viewman
 # a .c file in the library subdirectory
 DOTC=	${SRC}/lib
 
+CFLAGS	    = ${CCF} -I${LINC} -I${GINC} -I${HINC}
 
-DOCFILES= ${DOC}/gfun.c.dvi ${DOC}/psfiles.dvi
-
-CFLAGS	    = ${CCF} -I${LINC} -I${GINC} -I${IN} -I${HINC}
-
-HEADERS = ${IN}/gdraws0.h ${LINC}/g.h     ${LINC}/gfun.h1    \
+HEADERS = ${LINC}/g.h     ${LINC}/gfun.h1    \
           ${GINC}/hash.h  ${GINC}/hash.h1 
 
 PSFiles= ${PS}/colorpoly.ps ${PS}/colorwol.ps  ${PS}/draw.ps      \
@@ -24891,123 +24887,95 @@ PSFiles= ${PS}/colorpoly.ps ${PS}/colorwol.ps  ${PS}/draw.ps      \
          ${PS}/end.ps       ${PS}/fillarc.ps   ${PS}/fillpoly.ps  \
          ${PS}/fillwol.ps   ${PS}/header.ps    ${PS}/setup.ps
 
-all: ${MIDOBJ}/gfun.o ${PSFiles} ${DOCFILES}
-	@ echo 21 finished making ${SRC}/gdraws
+all: ${MIDOBJ}/gfun.o ${PSFiles} 
+	@ echo 21 finished making gdraws from ${BOOK}
 
-${MIDINT}/gfun.c: ${IN}/gfun.c.pamphlet
-	@ echo 1 making ${MIDINT}/gfun.c from ${IN}/gfun.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/gfun.c.pamphlet >gfun.c )
+${MIDINT}/gfun.c: ${BOOK} 
+	@ echo 1 making ${MIDINT}/gfun.c from ${BOOK} 
+	@( cd ${MIDINT} ; ${TANGLE} -R"gdraws/gfun.c" ${BOOK} >gfun.c )
 
 ${MIDOBJ}/gfun.o: ${HEADERS} ${MIDINT}/gfun.c 
 	@ echo 2 making ${MIDOBJ}/gfun.o from ${MIDINT}/gfun.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/gfun.c )
 
-${DOC}/gfun.c.dvi: ${IN}/gfun.c.pamphlet 
-	@echo 3 making ${DOC}/gfun.c.dvi from ${IN}/gfun.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/gfun.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} gfun.c ; \
-	rm -f ${DOC}/gfun.c.pamphlet ; \
-	rm -f ${DOC}/gfun.c.tex ; \
-	rm -f ${DOC}/gfun.c )
-
-
-${PS}/colorpoly.ps: ${IN}/psfiles.pamphlet
-	@ echo 3 ${PS}/colorpoly.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"colorpoly" psfiles.pamphlet >${PS}/colorpoly.ps
+${PS}/colorpoly.ps: ${BOOK} 
+	@ echo 3 ${PS}/colorpoly.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/colorpoly" ${BOOK} >${PS}/colorpoly.ps
 
-${PS}/colorwol.ps: ${IN}/psfiles.pamphlet
-	@ echo 4 ${PS}/colorwol.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"colorwol" psfiles.pamphlet >${PS}/colorwol.ps
+${PS}/colorwol.ps: ${BOOK} 
+	@ echo 4 ${PS}/colorwol.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/colorwol" ${BOOK} >${PS}/colorwol.ps
 
-${PS}/draw.ps: ${IN}/psfiles.pamphlet
-	@ echo 5 ${PS}/draw.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"draw" psfiles.pamphlet >${PS}/draw.ps
+${PS}/draw.ps: ${BOOK} 
+	@ echo 5 ${PS}/draw.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/draw" ${BOOK} >${PS}/draw.ps
 
-${PS}/drawIstr.ps: ${IN}/psfiles.pamphlet
-	@ echo 6 ${PS}/drawIstr.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawIstr" psfiles.pamphlet >${PS}/drawIstr.ps
+${PS}/drawIstr.ps: ${BOOK} 
+	@ echo 6 ${PS}/drawIstr.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/drawIstr" ${BOOK} >${PS}/drawIstr.ps
 
-${PS}/drawarc.ps: ${IN}/psfiles.pamphlet
-	@ echo 7 ${PS}/drawarc.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawarc" psfiles.pamphlet >${PS}/drawarc.ps
+${PS}/drawarc.ps: ${BOOK} 
+	@ echo 7 ${PS}/drawarc.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/drawarc" ${BOOK} >${PS}/drawarc.ps
 
-${PS}/drawcolor.ps: ${IN}/psfiles.pamphlet
-	@ echo 8 ${PS}/drawcolor.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawcolor" psfiles.pamphlet >${PS}/drawcolor.ps
+${PS}/drawcolor.ps: ${BOOK} 
+	@ echo 8 ${PS}/drawcolor.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/drawcolor" ${BOOK} >${PS}/drawcolor.ps
 
-${PS}/drawline.ps: ${IN}/psfiles.pamphlet
-	@ echo 9 ${PS}/drawline.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawline" psfiles.pamphlet >${PS}/drawline.ps
+${PS}/drawline.ps: ${BOOK} 
+	@ echo 9 ${PS}/drawline.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/drawline" ${BOOK} >${PS}/drawline.ps
 
-${PS}/drawlines.ps: ${IN}/psfiles.pamphlet
-	@ echo 10 ${PS}/drawlines.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawlines" psfiles.pamphlet >${PS}/drawlines.ps
+${PS}/drawlines.ps: ${BOOK} 
+	@ echo 10 ${PS}/drawlines.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/drawlines" ${BOOK} >${PS}/drawlines.ps
 
-${PS}/drawpoint.ps: ${IN}/psfiles.pamphlet
-	@ echo 11 ${PS}/drawpoint.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawpoint" psfiles.pamphlet >${PS}/drawpoint.ps
+${PS}/drawpoint.ps: ${BOOK} 
+	@ echo 11 ${PS}/drawpoint.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/drawpoint" ${BOOK} >${PS}/drawpoint.ps
 
-${PS}/drawrect.ps: ${IN}/psfiles.pamphlet
-	@ echo 12 ${PS}/drawrect.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawrect" psfiles.pamphlet >${PS}/drawrect.ps
+${PS}/drawrect.ps: ${BOOK} 
+	@ echo 12 ${PS}/drawrect.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/drawrect" ${BOOK} >${PS}/drawrect.ps
 
-${PS}/drawstr.ps: ${IN}/psfiles.pamphlet
-	@ echo 13 ${PS}/drawstr.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawstr" psfiles.pamphlet >${PS}/drawstr.ps
+${PS}/drawstr.ps: ${BOOK} 
+	@ echo 13 ${PS}/drawstr.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/drawstr" ${BOOK} >${PS}/drawstr.ps
 
-${PS}/drwfilled.ps: ${IN}/psfiles.pamphlet
-	@ echo 14 ${PS}/drwfilled.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drwfilled" psfiles.pamphlet >${PS}/drwfilled.ps
+${PS}/drwfilled.ps: ${BOOK} 
+	@ echo 14 ${PS}/drwfilled.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/drwfilled" ${BOOK} >${PS}/drwfilled.ps
 
-${PS}/end.ps: ${IN}/psfiles.pamphlet
-	@ echo 15 ${PS}/end.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"end" psfiles.pamphlet >${PS}/end.ps
+${PS}/end.ps: ${BOOK} 
+	@ echo 15 ${PS}/end.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/end" ${BOOK} >${PS}/end.ps
 
-${PS}/fillarc.ps: ${IN}/psfiles.pamphlet
-	@ echo 16 ${PS}/fillarc.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"fillarc" psfiles.pamphlet >${PS}/fillarc.ps
+${PS}/fillarc.ps: ${BOOK} 
+	@ echo 16 ${PS}/fillarc.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/fillarc" ${BOOK} >${PS}/fillarc.ps
 
-${PS}/fillpoly.ps: ${IN}/psfiles.pamphlet
-	@ echo 17 ${PS}/fillpoly.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"fillpoly" psfiles.pamphlet >${PS}/fillpoly.ps
+${PS}/fillpoly.ps: ${BOOK} 
+	@ echo 17 ${PS}/fillpoly.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/fillpoly" ${BOOK} >${PS}/fillpoly.ps
 
-${PS}/fillwol.ps: ${IN}/psfiles.pamphlet
-	@ echo 18 ${PS}/fillwol.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"fillwol" psfiles.pamphlet >${PS}/fillwol.ps
+${PS}/fillwol.ps: ${BOOK} 
+	@ echo 18 ${PS}/fillwol.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/fillwol" ${BOOK} >${PS}/fillwol.ps
 
-${PS}/header.ps: ${IN}/psfiles.pamphlet
-	@ echo 19 ${PS}/header.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"header" psfiles.pamphlet >${PS}/header.ps
+${PS}/header.ps: ${BOOK} 
+	@ echo 19 ${PS}/header.ps from ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/header" ${BOOK} >${PS}/header.ps
 
-${PS}/setup.ps: ${IN}/psfiles.pamphlet
-	@ echo 20 ${PS}/setup.ps ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"setup" psfiles.pamphlet >${PS}/setup.ps
-
-
-${DOC}/psfiles.dvi: ${IN}/psfiles.pamphlet 
-	@echo 3 making ${DOC}/psfiles.dvi from ${IN}/psfiles.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/psfiles.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} psfiles ; \
-	rm -f ${DOC}/psfiles.pamphlet ; \
-	rm -f ${DOC}/psfiles.tex ; \
-	rm -f ${DOC}/psfiles )
-
-
-clean: 
-	@ echo 22 cleaning ${IN}/gdraws
-
-document: 
-	@ echo 23 documenting ${IN}/gdraws
+${PS}/setup.ps: ${BOOK} 
+	@ echo 20 ${PS}/setup.ps ${BOOK} 
+	@ ${TANGLE} -R"gdraws/psfiles/setup" ${BOOK} >${PS}/setup.ps
 
 @
 \section{menu.c}
 <<gdraws/menu.c>>=
 /* menu of display used for testing out Gdraw functions in this directory */
-#include "gdraws0.h"
-#include "../include/g.h"
+<<gdraws/gdraws0.h>>
+<<include/g.h>>
 
 extern GC gc;
 
@@ -25033,8 +25001,6 @@ Gdraws_draw_menu(Window menu, char *str, int width, int height)
    XFlush(dsply);
 }
 @
-\section{psfiles}
-<<gdraws/psfiles>>=
 \section{The postscript command definitions}
 \subsection{colorpoly}
 \begin{verbatim}
@@ -25050,7 +25016,7 @@ operand stack configuration in order to use psColorPoly:
 this draws a polygon by connecting all the points and fills the
 region with foreground color
 \end{verbatim}
-<<colorpoly>>=
+<<gdraws/psfiles/colorpoly>>=
 /psColorPoly
         {	gsave
                 newpath
@@ -25078,7 +25044,7 @@ operand stack configuration in order to use psDrawFilled:
 this draws lines connecting all the points and fills the
 region with background color (default: 1, or white).
 \end{verbatim}
-<<colorwol>>=
+<<gdraws/psfiles/colorwol>>=
 /psColorwOutline
         {	gsave
                 newpath
@@ -25108,7 +25074,7 @@ and height specifies the rectangle which encases the arc.
 Origin is at upper left corner of rectangle.
 This function uses "scale" to make cricles and ellipses.
 \end{verbatim}
-<<drawarc>>=
+<<gdraws/psfiles/drawarc>>=
 /psDrawArc 
         {	gsave
                 newpath
@@ -25142,7 +25108,7 @@ operand stack configuration in order to use psDrawColor:
 	graphics-context dictionary
 to draw lines connecting points in vlist[0] to vlist[n]
 \end{verbatim}
-<<drawcolor>>=
+<<gdraws/psfiles/drawcolor>>=
 /psDrawColor
         {	gsave
                 newpath
@@ -25167,7 +25133,7 @@ operand stack configuration in order to use psDrawIStr:
 it draws a text string in foreground color on top of bounding box of
 string, which is in background color.
 \end{verbatim}
-<<drawIstr>>=
+<<gdraws/psfiles/drawIstr>>=
 /psDrawIStr
         {	gsave
 		newpath					%% for rectangle
@@ -25217,7 +25183,7 @@ operand stack configuration in order to use psDrawLine:
 	graphics-context dictionary
 this draws a line from (x0, y0) to (x1, y1).
 \end{verbatim}
-<<drawline>>=
+<<gdraws/psfiles/drawline>>=
 /psDrawLine
         {	gsave
                 newpath
@@ -25241,7 +25207,7 @@ operand stack configuration in order to use psDrawLines:
 	graphics-context dictionary
 this draws lines connecting all the points.
 \end{verbatim}
-<<drawlines>>=
+<<gdraws/psfiles/drawlines>>=
 /psDrawLines
         {	gsave
                 newpath
@@ -25263,7 +25229,7 @@ operand stack configuration in order to use psDrawPoint:
 	graphics-context dictionary
 this draws a point at (x0, y0).
 \end{verbatim}
-<<drawpoint>>=
+<<gdraws/psfiles/drawpoint>>=
 /psDrawPoint
         {	gsave
                 newpath
@@ -25287,7 +25253,7 @@ operand stack configuration in order to use psDraw:
 	graphics-context dictionary
 to draw lines connecting points in vlist[0] to vlist[n]
 \end{verbatim}
-<<draw>>=
+<<gdraws/psfiles/draw>>=
 /psDraw
         {	gsave
                 newpath
@@ -25312,7 +25278,7 @@ operand stack configuration in order to use psDrawRect:
 this draws an outline of a rectangle whose origin is at (x,y) and is width
 + 1 wide and height + 1 tall.
 \end{verbatim}
-<<drawrect>>=
+<<gdraws/psfiles/drawrect>>=
 /psDrawRect
         {	gsave
                 newpath
@@ -25332,7 +25298,7 @@ operand stack configuration in order to use psDrawStr:
 	graphics-context dictionary
 this function draws a text string at (x,y).
 \end{verbatim}
-<<drawstr>>=
+<<gdraws/psfiles/drawstr>>=
 /psDrawStr
         {	gsave
 		newpath
@@ -25357,7 +25323,7 @@ operand stack configuration in order to use psDrawFilled:
 this draws lines connecting all the points and fills the
 region with background color (default: 1, or white).
 \end{verbatim}
-<<drwfilled>>=
+<<gdraws/psfiles/drwfilled>>=
 /psDrawFilled
         {	gsave
                 newpath
@@ -25373,7 +25339,7 @@ region with background color (default: 1, or white).
 \subsection{end}
 \begin{verbatim}
 \end{verbatim}
-<<end>>=
+<<gdraws/psfiles/end>>=
 
    cleartomark					%% clearing operand stack
 
@@ -25401,7 +25367,7 @@ and height specifies the rectangle which encases the arc.
 Origin is at upper left corner of rectangle.
 This function uses "scale" to make cricles and ellipses.
 \end{verbatim}
-<<fillarc>>=
+<<gdraws/psfiles/fillarc>>=
 /psFillArc
         {	gsave
 		yVal moveto
@@ -25437,7 +25403,7 @@ operand stack configuration in order to use psDrawFilled:
 this draws a polygon by connecting all the points and fills the
 region with foreground color
 \end{verbatim}
-<<fillpoly>>=
+<<gdraws/psfiles/fillpoly>>=
 /psFillPoly
         {	gsave
                 newpath
@@ -25465,7 +25431,7 @@ operand stack configuration in order to use psDrawFilled:
 this draws lines connecting all the points and fills the
 region with background color (default: 1, or white).
 \end{verbatim}
-<<fillwol>>=
+<<gdraws/psfiles/fillwol>>=
 /psFillwOutline
         {	gsave
                 newpath
@@ -25483,7 +25449,7 @@ region with background color (default: 1, or white).
 \subsection{header}
 \begin{verbatim}
 \end{verbatim}
-<<header>>=
+<<gdraws/psfiles/header>>=
 %!PS-Adobe-2.0
 %%DocumentFonts: Times-Roman
 %%Creator: Axiom
@@ -25644,7 +25610,7 @@ region with background color (default: 1, or white).
 \subsection{setup}
 \begin{verbatim}
 \end{verbatim}
-<<setup>>=
+<<gdraws/psfiles/setup>>=
 %-------------------------- script --------------------------%
 
 % 1 inch 1 inch translate
@@ -25652,8 +25618,6 @@ region with background color (default: 1, or white).
    mark					%% mark bottom of our stack
 
 @
-<<*>>=
-@
 \section{yesorno.c}
 <<gdraws/yesorno.c>>=
 /*
@@ -25661,7 +25625,7 @@ region with background color (default: 1, or white).
  * out Gdraw functions in this directory.
  */
 
-#include "gdraws0.h"
+<<gdraws/gdraws0.h>>
 
 int
 Gdraws_pressed_yes(int win_width, int win_height, int x, int y)
diff --git a/changelog b/changelog
index 70b7bd7..68f5eab 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20080608 tpd books/bookvol8 make gdraws
+20080608 tpd src/graph/Makefile make gdraws
 20080607 tpd FAQ 48: Getting Axiom sources from git
 20080607 tpd src/graph/viewalone/Makefile deleted (use bookvol8)
 20080607 tpd src/graph/viewalone/parabola.view/bitmap deleted (use bookvol8)
diff --git a/src/graph/Makefile.pamphlet b/src/graph/Makefile.pamphlet
index 0c3407b..69f0647 100644
--- a/src/graph/Makefile.pamphlet
+++ b/src/graph/Makefile.pamphlet
@@ -27,16 +27,16 @@ DIRS=viewmandir gdrawsdir view2ddir view3ddir viewalonedir
 @
 \subsection{The viewman directory}
 <<viewmandir>>=
-viewmandir: ${SRC}/graph/viewman/Makefile
-	@ echo 1 making ${SRC}/graph/viewman 
+viewmandir: ${INT}/graph/viewman/Makefile
+	@ echo 1 making ${INT}/graph/viewman 
 	@ mkdir -p ${OBJ}/${SYS}/graph/viewman
 	@ mkdir -p ${OBJ}/${SYS}/lib
 	@ mkdir -p ${MNT}/${SYS}/lib
 	@ mkdir -p ${MNT}/${SYS}/doc/src/graph
 	@(cd ${INT}/graph/viewman ; ${ENV} ${MAKE} )
 
-${SRC}/graph/viewman/Makefile: ${BOOK}
-	@echo 2 making ${SRC}/graph/viewman/Makefile from ${BOOK}
+${INT}/graph/viewman/Makefile: ${BOOK}
+	@ echo 2 making ${INT}/graph/viewman/Makefile from ${BOOK}
 	@ mkdir -p ${INT}/graph/viewman
 	@( cd ${INT}/graph/viewman ; \
 	  ${TANGLE} -t8 -R"viewman/Makefile" ${BOOK} >Makefile )
@@ -44,30 +44,19 @@ ${SRC}/graph/viewman/Makefile: ${BOOK}
 @
 \subsection{The gdraws directory}
 <<gdrawsdir>>=
-gdrawsdir: ${SRC}/graph/gdraws/Makefile
-	@echo 5 making ${SRC}/graph/gdraws
-	@mkdir -p ${INT}/graph/gdraws
+gdrawsdir: ${INT}/graph/gdraws/Makefile
+	@echo 5 making ${INT}/graph/gdraws
 	@mkdir -p ${OBJ}/${SYS}/graph/gdraws
 	@mkdir -p ${MNT}/${SYS}/lib
 	@mkdir -p ${MNT}/${SYS}/lib/graph
 	@mkdir -p ${MNT}/${SYS}/doc/src/graph
-	@(cd gdraws ; ${ENV} ${MAKE} )
-
-${SRC}/graph/gdraws/Makefile: ${SRC}/graph/gdraws/Makefile.pamphlet
-	@echo 6 making ${SRC}/graph/gdraws/Makefile from ${SRC}/graph/gdraws/Makefile.pamphlet
-	@( cd gdraws ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-	   cp Makefile.dvi ${MNT}/${SYS}/doc/src/graph.gdraws.Makefile.dvi )
+	@(cd ${INT}/graph/gdraws ; ${ENV} ${MAKE} )
 
-gdrawsdocument: ${SRC}/graph/gdraws/Makefile
-	@echo 7 documenting ${SRC}/graph/gdraws
-	@( cd gdraws ; ${ENV} ${MAKE} document )
-
-gdrawsclean: ${SRC}/graph/gdraws/Makefile
-	@echo 8 cleaning ${SRC}/graph/gdraws
-	@( cd gdraws ; ${ENV} ${MAKE} clean )
-	@rm -f ${SRC}/graph/gdraws/Makefile
-	@rm -f ${SRC}/graph/gdraws/Makefile.dvi
+${INT}/graph/gdraws/Makefile: ${BOOK} 
+	@echo 6 making ${INT}/graph/gdraws/Makefile from ${BOOK} 
+	@mkdir -p ${INT}/graph/gdraws
+	@( cd ${INT}/graph/gdraws ; \
+	  ${TANGLE} -t8 -R"gdraws/Makefile" ${BOOK} >Makefile )
 
 @
 \subsection{The view3d directory}
@@ -112,7 +101,7 @@ viewalonedir: ${SRC}/graph/viewalone/Makefile
 	@mkdir -p ${OBJ}/${SYS}/graph/viewalone
 	@mkdir -p ${MNT}/${SYS}/bin
 	@mkdir -p ${MNT}/${SYS}/doc/src/graph
-	@(cd viewalone ; ${ENV} ${MAKE} )
+	@(cd ${INT}/graph/viewalone ; ${ENV} ${MAKE} )
 
 ${SRC}/graph/viewalone/Makefile: ${BOOK} 
 	@echo 18 making ${SRC}/graph/viewalone/Makefile from ${BOOK} 

\start
Date: Sat, 7 Jun 2008 21:41:25 -0500
From: Tim Daly
To: list
Subject: 20080608.02.tpd.patch (remove gdraws directory, use bookvol8)

remove gdraws directory, use bookvol8
========================================================================
diff --git a/changelog b/changelog
index 68f5eab..af63055 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,12 @@
+20080608 tpd src/graph/gdraws/Makefile deleted, (use bookvol8)
+20080608 tpd src/graph/gdraws/data.c deleted, (use bookvol8)
+20080608 tpd src/graph/gdraws/gdraws0.h deleted, (use bookvol8)
+20080608 tpd src/graph/gdraws/gfun.c deleted, (use bookvol8)
+20080608 tpd src/graph/gdraws/loadfont.c deleted, (use bookvol8)
+20080608 tpd src/graph/gdraws/main.c deleted, (use bookvol8)
+20080608 tpd src/graph/gdraws/menu.c deleted, (use bookvol8)
+20080608 tpd src/graph/gdraws/psfiles deleted, (use bookvol8)
+20080608 tpd src/graph/gdraws/yesorno.c deleted, (use bookvol8)
 20080608 tpd books/bookvol8 make gdraws
 20080608 tpd src/graph/Makefile make gdraws
 20080607 tpd FAQ 48: Getting Axiom sources from git
diff --git a/src/graph/gdraws/Makefile.pamphlet b/src/graph/gdraws/Makefile.pamphlet
deleted file mode 100644
index dee8ca1..0000000
--- a/src/graph/gdraws/Makefile.pamphlet
+++ /dev/null
@@ -1,373 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/gdraws Makefile}
-\author{Timothy Daly}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{gdraws}
-This directory consists of all the Gdraw functions along with a local
-testing protocol to test out these functions.
-The subdirectory PS contains all the ps drawing functions in support of
-the Gdraw functions.
-
-\subsection{GDRAW}
-
-A Gdraw function, using a draw option dFlsg as input, provides drawings
-capability on different output devices.  Currently, Gdraw supports routines
-both in Xwindows functions, and in postscript functions on
-a postscript printer/interpreter.
-
-The general drawing functions are (see file for description of functionality)
-\begin{verbatim}
- 1.  Gdrawarc.c
- 2.  Gdrawstring.c
- 3.  Gdraw.c
- 4.  Gdrawline.c
- 5.  Gdrfilled.c
- 6.  GdrawFrame.c
- 7.  Gdrawlines.c
- 8.  Gfillarc.c
- 9.  GdrawIstr.c
- 10. Gdrawrect.c
- 11. Gmisc.c
- 12. GinitPS.c
- 13. GCreatePS.c
- 14. PSFill.c
- 15. ../include/g.h
-    header information needed by all the Gdraw routines and
-    view3d/view2d as well.
- 16. ps.h
-    header information needed by only the Gdraw routines.
-
-\subsection{POSTSCRIPT}
-
-A PostScript file can be generated by using a button on the control
-panel of a viewalone picture, or in Axiom, with the command write,
-option Postscript.  This file can be submitted to the postsctipt
-printer to be printed, or viewed using the postscript interpreter.  
-It will draw a window, title, and picture clipped to fit inside of the
-window.
-
-In order to generate a postscript output, we first initializ file names and
-paths to be used by our program by using
-\begin{verbatim}
-	InitPs(viewWindow, titleWindow)    [in GinitPS.c]
-\end{verbatim}
-then call the G draw routines with option "PS", which would generate postscript
-drawing commands.  Then create the output file (OUTPUT.ps by default) by using
-\begin{verbatim}
-	makePSfile(viewWindow, titleWindow, title)   [in GcreatePS.c]
-\end{verbatim}
-
-The output file would be in local directory, i.e., the directory where Axiom
-or viewalone, etc., was started up.
-
-The following routines are used to test out the Gdraw functions:
-\begin{verbatim}
-1.  main.c      creates windows, and titles and processes Xwindow events.
-2.  data.c      creates data for drawing and call Gdraw routines.
-3.  menu.c      draws menu when mouse clicks in viewWindow
-4.  yesorno.c   determines if mouse click in menu means "yes" or "no".
-5.  loadfont.c 	loads font for display
-\end{verbatim}
-
-The Gdraw routines have been written in such a way that they are usable by
-both view3d and view2d.  
-
-\subsection{TO USE G FUNCTIONS}
-
-In order to draw in postscript, use GSetForeground to set the foreground 
-colors for the drawing (and fill) functions.  Use GSetLineAttributes
-to set line attributes.  And finally, replace the XDraw commands with the
-corresponding GDraw commands with the appropriate parameters.  In addition,
-we need to: draw frame, set GC variable names, create GCs, initialize
-postscript data structures, cat all the procedures used together.
-
-{\bf IMPORTANT}:\\
-In order to create postscript command file, we need environment
-variable DEVE (i.e., setenv DEVE /u/jimwen/3D/version28) or SPAD (e.g., setenv
-SPAD /spad/mnt/rt in case gdraws directory has been installed on the server).
-Without this path, the program would not know where the postscript files (in
-gdraws/PS) are.
-
-{\bf LIMITATIONS} of current implementation:\\
-A picture is printed with 1 inch x direction, and 1 inch y direction 
-offset, and the largest complete picutre is the size of the page
-with the offest.
-
-{\bf BUGS}:\\
-The region box is not drawn correctly when perspective is altered.
-
-
-{\bf FUTURE DIRECTIONS}:
-\begin{itemize}
-\item for view3d color rendering, may want to convert LINE drawing color
-to the appropriate grayscale.  Right now, they're all drawn in black.
-\item for view3d's routines for color rendering, may want to implement
-color drawing for postscript functions just in case someone does
-have access to a color postscript printer.
-\item implement more functionality for attributes used in GC, i.e., dashed
-line, dotted line etc.
-\item implement a display postscript menu to set things like picture size,
-landscape/portrait orientation, picture centered, left, right, up,
-down, etc., reversed video.
-\item make font an attribute in postscripts's graphics context so the
-font can be set in user program.  Right now, it uses only 1 font.
-\item for view2d's stuff, implement a smaller font for the drawing the 
-units on the axes.
-\end{itemize}
-
-\section{environment variables}
-<<environment>>=
-IN=	${SRC}/graph/gdraws
-MIDINT=	${INT}/graph/gdraws
-MIDOBJ=	${OBJ}/${SYS}/graph/gdraws
-OUT=	${MNT}/${SYS}/lib
-PS=	${MNT}/${SYS}/lib/graph
-DOC=    ${MNT}/${SYS}/doc/src/graph
-
-# local include files shared by graphics
-LINC=	${SRC}/graph/include
-
-# global include files shared by everyone
-GINC=	${SRC}/include
-
-# include files in Hyperdoc
-HINC=	${SRC}/hyper
-
-# bitmaps for cursors
-BIT=	${SRC}/graph/include/bitmaps
-
-# a .h file stuck in a really wierd place
-DOTH=	${SRC}/graph/viewman
-
-# a .c file in the library subdirectory
-DOTC=	${SRC}/lib
-
-@
-\section{Gdraw code}
-\subsection{gfun}
-<<gfun.c (MIDINT from IN)>>=
-${MIDINT}/gfun.c: ${IN}/gfun.c.pamphlet
-	@ echo 1 making ${MIDINT}/gfun.c from ${IN}/gfun.c.pamphlet
-	@( cd ${MIDINT} ; \
-	${TANGLE} ${IN}/gfun.c.pamphlet >gfun.c )
-
-@
-<<gfun.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/gfun.o: ${HEADERS} ${MIDINT}/gfun.c 
-	@ echo 2 making ${MIDOBJ}/gfun.o from ${MIDINT}/gfun.c
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/gfun.c )
-
-@
-<<gfun.c.dvi (DOC from IN)>>=
-${DOC}/gfun.c.dvi: ${IN}/gfun.c.pamphlet 
-	@echo 3 making ${DOC}/gfun.c.dvi from ${IN}/gfun.c.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/gfun.c.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} gfun.c ; \
-	rm -f ${DOC}/gfun.c.pamphlet ; \
-	rm -f ${DOC}/gfun.c.tex ; \
-	rm -f ${DOC}/gfun.c )
-
-@
-\section{Postscript files}
-\subsection{colorpoly}
-<<colorpoly>>=
-${PS}/colorpoly.ps: ${IN}/psfiles.pamphlet
-	@ echo 3 ${PS}/colorpoly.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"colorpoly" psfiles.pamphlet >${PS}/colorpoly.ps
-
-@
-\subsection{colorwol}
-<<colorwol>>=
-${PS}/colorwol.ps: ${IN}/psfiles.pamphlet
-	@ echo 4 ${PS}/colorwol.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"colorwol" psfiles.pamphlet >${PS}/colorwol.ps
-
-@
-\subsection{draw}
-<<draw>>=
-${PS}/draw.ps: ${IN}/psfiles.pamphlet
-	@ echo 5 ${PS}/draw.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"draw" psfiles.pamphlet >${PS}/draw.ps
-
-@
-\subsection{drawIstr}
-<<drawIstr>>=
-${PS}/drawIstr.ps: ${IN}/psfiles.pamphlet
-	@ echo 6 ${PS}/drawIstr.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawIstr" psfiles.pamphlet >${PS}/drawIstr.ps
-
-@
-\subsection{drawarc}
-<<drawarc>>=
-${PS}/drawarc.ps: ${IN}/psfiles.pamphlet
-	@ echo 7 ${PS}/drawarc.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawarc" psfiles.pamphlet >${PS}/drawarc.ps
-
-@
-\subsection{drawcolor}
-<<drawcolor>>=
-${PS}/drawcolor.ps: ${IN}/psfiles.pamphlet
-	@ echo 8 ${PS}/drawcolor.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawcolor" psfiles.pamphlet >${PS}/drawcolor.ps
-
-@
-\subsection{drawline}
-<<drawline>>=
-${PS}/drawline.ps: ${IN}/psfiles.pamphlet
-	@ echo 9 ${PS}/drawline.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawline" psfiles.pamphlet >${PS}/drawline.ps
-
-@
-\subsection{drawlines}
-<<drawlines>>=
-${PS}/drawlines.ps: ${IN}/psfiles.pamphlet
-	@ echo 10 ${PS}/drawlines.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawlines" psfiles.pamphlet >${PS}/drawlines.ps
-
-@
-\subsection{drawpoint}
-<<drawpoint>>=
-${PS}/drawpoint.ps: ${IN}/psfiles.pamphlet
-	@ echo 11 ${PS}/drawpoint.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawpoint" psfiles.pamphlet >${PS}/drawpoint.ps
-
-@
-\subsection{drawrect}
-<<drawrect>>=
-${PS}/drawrect.ps: ${IN}/psfiles.pamphlet
-	@ echo 12 ${PS}/drawrect.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawrect" psfiles.pamphlet >${PS}/drawrect.ps
-
-@
-\subsection{drawstr}
-<<drawstr>>=
-${PS}/drawstr.ps: ${IN}/psfiles.pamphlet
-	@ echo 13 ${PS}/drawstr.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drawstr" psfiles.pamphlet >${PS}/drawstr.ps
-
-@
-\subsection{drwfilled}
-<<drwfilled>>=
-${PS}/drwfilled.ps: ${IN}/psfiles.pamphlet
-	@ echo 14 ${PS}/drwfilled.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"drwfilled" psfiles.pamphlet >${PS}/drwfilled.ps
-
-@
-\subsection{end}
-<<end>>=
-${PS}/end.ps: ${IN}/psfiles.pamphlet
-	@ echo 15 ${PS}/end.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"end" psfiles.pamphlet >${PS}/end.ps
-
-@
-\subsection{fillarc}
-<<fillarc>>=
-${PS}/fillarc.ps: ${IN}/psfiles.pamphlet
-	@ echo 16 ${PS}/fillarc.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"fillarc" psfiles.pamphlet >${PS}/fillarc.ps
-
-@
-\subsection{fillpoly}
-<<fillpoly>>=
-${PS}/fillpoly.ps: ${IN}/psfiles.pamphlet
-	@ echo 17 ${PS}/fillpoly.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"fillpoly" psfiles.pamphlet >${PS}/fillpoly.ps
-
-@
-\subsection{fillwol}
-<<fillwol>>=
-${PS}/fillwol.ps: ${IN}/psfiles.pamphlet
-	@ echo 18 ${PS}/fillwol.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"fillwol" psfiles.pamphlet >${PS}/fillwol.ps
-
-@
-\subsection{header}
-<<header>>=
-${PS}/header.ps: ${IN}/psfiles.pamphlet
-	@ echo 19 ${PS}/header.ps from ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"header" psfiles.pamphlet >${PS}/header.ps
-
-@
-\subsection{setup}
-<<setup>>=
-${PS}/setup.ps: ${IN}/psfiles.pamphlet
-	@ echo 20 ${PS}/setup.ps ${IN}/psfiles.pamphlet
-	@ ${TANGLE} -R"setup" psfiles.pamphlet >${PS}/setup.ps
-
-@
-<<psfiles.dvi (DOC from IN)>>=
-${DOC}/psfiles.dvi: ${IN}/psfiles.pamphlet 
-	@echo 3 making ${DOC}/psfiles.dvi from ${IN}/psfiles.pamphlet 
-	@(cd ${DOC} ; \
-	cp ${IN}/psfiles.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} psfiles ; \
-	rm -f ${DOC}/psfiles.pamphlet ; \
-	rm -f ${DOC}/psfiles.tex ; \
-	rm -f ${DOC}/psfiles )
-
-@
-<<*>>=
-<<environment>>
-
-DOCFILES= ${DOC}/gfun.c.dvi ${DOC}/psfiles.dvi
-
-CFLAGS	    = ${CCF} -I${LINC} -I${GINC} -I${IN} -I${HINC}
-
-HEADERS = ${IN}/gdraws0.h ${LINC}/g.h     ${LINC}/gfun.h1    \
-          ${GINC}/hash.h  ${GINC}/hash.h1 
-
-PSFiles= ${PS}/colorpoly.ps ${PS}/colorwol.ps  ${PS}/draw.ps      \
-         ${PS}/drawIstr.ps  ${PS}/drawarc.ps   ${PS}/drawcolor.ps \
-         ${PS}/drawline.ps  ${PS}/drawlines.ps ${PS}/drawpoint.ps \
-         ${PS}/drawrect.ps  ${PS}/drawstr.ps   ${PS}/drwfilled.ps \
-         ${PS}/end.ps       ${PS}/fillarc.ps   ${PS}/fillpoly.ps  \
-         ${PS}/fillwol.ps   ${PS}/header.ps    ${PS}/setup.ps
-
-all: ${MIDOBJ}/gfun.o ${PSFiles} ${DOCFILES}
-	@ echo 21 finished making ${SRC}/gdraws
-
-<<gfun.c (MIDINT from IN)>>
-<<gfun.o (MIDOBJ from MIDINT)>>
-<<gfun.c.dvi (DOC from IN)>>
-
-<<colorpoly>>
-<<colorwol>>
-<<draw>>
-<<drawIstr>>
-<<drawarc>>
-<<drawcolor>>
-<<drawline>>
-<<drawlines>>
-<<drawpoint>>
-<<drawrect>>
-<<drawstr>>
-<<drwfilled>>
-<<end>>
-<<fillarc>>
-<<fillpoly>>
-<<fillwol>>
-<<header>>
-<<setup>>
-
-<<psfiles.dvi (DOC from IN)>>
-
-clean: 
-	@ echo 22 cleaning ${IN}/gdraws
-
-document: 
-	@ echo 23 documenting ${IN}/gdraws
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/gdraws/data.c.pamphlet b/src/graph/gdraws/data.c.pamphlet
deleted file mode 100644
index 9e60d85..0000000
--- a/src/graph/gdraws/data.c.pamphlet
+++ /dev/null
@@ -1,256 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph data.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-/* Data file to test out Gdraw functions */
-
-#include "gdraws0.h"
-#include "../view3d/header.h"
-#include "nox10.h"
-
-extern GC gc, gc1;
-
-int
-Gdraws_data(int dFlag)
-{
-    static Vertex vlist[5];
-    static int vcount = 5;
-    static int x0, y0, x1, y1;
-    static char *str = "This is a text string.";
-    static int x, y;
-    static int FirstTime = yes;
-    static int Rx, Ry, Rwidth, Rheight;
-    static int Ix, Iy;
-    static char *Istr = "Image text string.";
-    static XPoint points[7];
-    static XPoint p1[7];
-    static int np1 = 7;
-    static int npoints, mode;
-    static int ax, ay, angle1, angle2;
-    static unsigned int awidth, aheight;
-    static Vertex dfvlist[7];
-    static int dfvcount = 7;
-    static XPoint dfvl1[7];
-    static int dfvc = 7;
-
-    if (FirstTime) {
-
-        vlist[0].x = 10;
-        vlist[0].y = 10;
-        vlist[0].flags = 0;
-
-        vlist[1].x = 250;
-        vlist[1].y = 10;
-        vlist[1].flags = 0;
-
-        vlist[2].x = 250;
-        vlist[2].y = 140;
-        vlist[2].flags = 0;
-
-        vlist[3].x = 10;
-        vlist[3].y = 140;
-        vlist[3].flags = 0;
-
-        vlist[4].x = 10;
-        vlist[4].y = 10;
-        vlist[4].flags = 0;
-
-        x0 = y0 = 12;
-        x1 = 248;
-        y1 = 138;
-
-        x = 25;
-        y = 50;
-
-        Ix = 20;
-        Iy = 180;
-
-        Rx = 160;
-        Ry = 40;
-        Rwidth = 30;
-        Rheight = 80;
-
-        points[0].x = 80;
-        points[0].y = 95;
-        points[1].x = 30;
-        points[1].y = 15;
-        points[2].x = 120;
-        points[2].y = 70;
-        points[3].x = 25;
-        points[3].y = 180;
-        points[4].x = 43;
-        points[4].y = 56;
-        points[5].x = 270;
-        points[6].y = 0;
-        points[6].x = 0;
-        points[5].y = 160;
-
-        p1[0].x = 2;
-        p1[0].y = 155;
-        p1[1].x = 99;
-        p1[1].y = 39;
-        p1[2].x = 260;
-        p1[2].y = 75;
-        p1[3].x = 33;
-        p1[3].y = 170;
-        p1[4].x = 4;
-        p1[4].y = 111;
-        p1[5].x = 203;
-        p1[6].y = 33;
-        p1[6].x = 170;
-        p1[5].y = 200;
-
-        npoints = 7;
-        mode = CoordModeOrigin; /* there's also CoordModePrevious */
-
-        ax = 130;
-        ay = 100;
-        awidth = 165;
-        aheight = 95;
-        angle1 = 165;
-        angle2 = -330;
-
-        dfvlist[0].x = 300;
-        dfvlist[0].y = 0;
-        dfvlist[0].flags = 0;
-
-        dfvlist[1].x = 200;
-        dfvlist[1].y = 0;
-        dfvlist[1].flags = 0;
-
-        dfvlist[2].x = 200;
-        dfvlist[2].y = 100;
-        dfvlist[2].flags = 0;
-
-        dfvlist[3].x = 100;
-        dfvlist[3].y = 100;
-        dfvlist[3].flags = 0;
-
-        dfvlist[4].x = 100;
-        dfvlist[4].y = 200;
-        dfvlist[4].flags = 0;
-
-        dfvlist[5].x = 0;
-        dfvlist[5].y = 200;
-        dfvlist[5].flags = 0;
-
-        dfvlist[6].x = 300;
-        dfvlist[6].y = 0;
-        dfvlist[6].flags = 0;
-
-        dfvl1[0].x = 0;
-        dfvl1[0].y = 300;
-        dfvl1[1].x = 0;
-        dfvl1[1].y = 200;
-        dfvl1[2].x = 100;
-        dfvl1[2].y = 200;
-        dfvl1[3].x = 100;
-        dfvl1[3].y = 100;
-        dfvl1[4].x = 200;
-        dfvl1[4].y = 100;
-        dfvl1[5].x = 200;
-        dfvl1[5].y = 0;
-        dfvl1[6].x = 0;
-        dfvl1[6].y = 300;
-
-        FirstTime = no;
-    }
-
-    if (dFlag == PS) {
-        GSetForeground(gc1, 0.3125, PS);
-        if (PSFillwOutline(gc1, dfvl1, dfvc) == psError)
-            return (psError);
-    }
-
-    if (GDrawString(gc, viewport->viewWindow, x, y, str, strlen(str), dFlag)
-        == psError)
-        return (psError);
-
-
-    if (GDrawLine(gc, viewport->viewWindow, x0, y0, x1, y1, dFlag) == psError)
-        return (psError);
-
-    if (GDrawRectangle(gc, viewport->viewWindow, Rx, Ry, Rwidth, Rheight, dFlag)
-        == psError)
-        return (psError);
-
-    if (GDrawLines(gc, viewport->viewWindow, points, npoints, mode, dFlag)
-        == psError)
-        return (psError);
-
-    if (GDrawArc(gc, viewport->viewWindow, ax, ay, awidth, aheight, angle1 * 64,
-                 angle2 * 64, dFlag) == psError)
-        return (psError);
-
-    GSetForeground(gc1, (float) psBlack, dFlag);
-    GSetBackground(gc1, (float) psWhite, dFlag);
-    if (GFillArc(gc1, viewport->viewWindow, 20, ay - 20, awidth / 2, aheight / 2,
-                 angle1 * 64, angle2 * 64, dFlag) == psError)
-        return (psError);
-
-
-    GSetForeground(gc1, (float) psWhite, dFlag);
-    GSetBackground(gc1, (float) psBlack, dFlag);
-    if (GDrawImageString(gc1, viewport->viewWindow, Ix, Iy,
-                         Istr, strlen(Istr), dFlag) == psError)
-        return (psError);
-
-    if (dFlag == PS) {
-        GSetForeground(gc1, 0.8, dFlag);
-        PSFillPolygon(gc1, p1, np1);
-        PSColorPolygon(0.2, 0.4, 0.8, p1, np1);
-    }
-
-    return (1);
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/gdraws/gdraws0.h b/src/graph/gdraws/gdraws0.h
deleted file mode 100755
index 576039b..0000000
--- a/src/graph/gdraws/gdraws0.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef _GDRAWS0_H_
-#define _GDRAWS0_H_ 1
-
-#include <X11/Xlib.h>
-
-
-#define yes		1
-#define no		0
-
-/*
- * Indices for PostScript draw procedures.
- *
- * The order of these defined variables are very important; they are used
- * to create the OUTPUT file.  Essentially, PSCreateFile() loops through the
- * index of 0 to psDrawNo and checks if the file/procedure is used.  If so,
- * the file is copied to the output file.
- */
-
-#define output		0		/* output file */
-#define headerps	1		/* postscript header file */
-#define drawps		2		/* draw procedure */
-#define drawarcps	3		/* draw arc procedure */
-#define drawfilledps	4		/* draw filled procedure */
-#define drawcolorps	5		/* draw color filled procedure */
-#define drawpointps	6		/* draw point procedure */
-#define fillpolyps	7		/* polygon filled procedure */
-#define fillwolps	8		/* polygon filled with outline proc */
-#define colorpolyps	9		/* polygon fill with color procedure */
-#define colorwolps	10		/* polygon fill with color procedure */
-#define drawlineps	11		/* draw line procedure */
-#define drawlinesps	12		/* draw lines procedure */
-#define drawIstrps	13		/* draw image string procedure */
-#define drawstrps	14		/* draw string procedure */
-#define drawrectps	15		/* draw rectangle procedure */
-#define fillarcps	16		/* filled arc procedure */
-#define setupps		17		/* setup, or pre-script */
-#define GCdictps	18		/* grahphics context definition file */
-#define scriptps	19		/* script file */
-#define endps		20		/* wrap up, close down, procedure */
-
-#define psDrawNo	21		/* for use in createPSfile() */
-
-
-/*
- * PostScript structures
- */
-
-typedef struct _psStruct {	/* data structure for ps routines info */
-	int	flag;
-	char	filename[200];
-} psStruct;
-
-psStruct psData[psDrawNo];	/* need psDrawNo of them */
-
-
-/*
- * These variables are expected to be declared in within client programs, eg,
- * main.c in view2d and view3d.
- */
-
-extern	int		scrn;	       /* screen */
-extern	Display		*dsply;	       /* display */
-extern	char		*envAXIOM;     /* environment variable AXIOM or DEVE */
-
-
-#endif
-
-
diff --git a/src/graph/gdraws/gfun.c.pamphlet b/src/graph/gdraws/gfun.c.pamphlet
deleted file mode 100644
index 5c13cdf..0000000
--- a/src/graph/gdraws/gfun.c.pamphlet
+++ /dev/null
@@ -1,1346 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph gfun.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-
-#define _GFUN_C
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "gdraws0.h"
-#include "g.h"
-#include "hash.h"
-
-#include "hash.h1"
-#include "gfun.h1"
-
-
-/*
- * Given 2 file pointers, this function copies file ifp to file ofp
- */
-
-static void
-filecopy(FILE * ifp, FILE * ofp)
-{
-
-  int c;
-
-  while ((c = getc(ifp)) != EOF)
-    putc(c, ofp);
-}
-
-
-/*
- * PSCreateFile generates the output file by using the order of defined
- * variables; they are used to create the OUTPUT file.  Essentially,
- * PSCreateFile() loop through the index of 0 to psDrawNo and checks if the
- * file/procedure is used.      If so, the file is included into the output
- * file.
- */
-
-int
-PSCreateFile(
-         int bWidth,            /* border width of picture frame */
-         Window vw, Window tw,  /* viewWindow, and titleWindow */
-         char *title)           /* title of picture to be drawn in title bar */
-{
-  FILE *ifp, *ofp, *fp;       /* input, output and temp file pointer */
-  int i;                      /* index */
-
-  /* last things to add to the script file */
-
-  fp = fopen(psData[scriptps].filename, "a");
-  fprintf(fp, "\n    grestore\t%% restore graphics state\n\n");
-  fclose(fp);
-
-#if 0
-  /* Make frame drawing optional. */
-
-  Gdraws_drawFrame(bWidth, vw, tw, title);
-#endif
-
-  /* put procedures and script together into OUTPUT.ps */
-
-  if ((ofp = fopen(psData[output].filename, "w")) == NULL) {
-    fprintf(stderr, "Cannot open %s to write.\n", psData[output].filename);
-    return (psError);
-  }
-  else {
-    i = 1;
-    while (i < psDrawNo) {  /* loops through each file/procedure */
-      if (psData[i].flag) { /* if set, procedure/file is used */
-	if ((ifp = fopen(psData[i].filename, "r")) == NULL) {
-	  if (i == GCdictps) {  /* GC dictionaries */
-	    fprintf(stderr, "Warning: missing GCdictionary.\n");
-          }
-	  else {
-	    fprintf(stderr, "Cannot open %s to read.\n",
-		    psData[i].filename);
-	    fclose(ofp);
-	    return (psError);
-	  }
-	}
-	else {
-	  filecopy(ifp, ofp);
-	  fclose(ifp);
-	}
-      }
-      i++;
-    }
-  }
-
-  /* remove script file in tmp */
-
-  unlink(psData[scriptps].filename);
-
-#if 0
-  /* remove GCdict file in tmp */
-  unlink(psData[GCdictps].filename);
-#endif
-
-  return (fclose(ofp));
-}
-
-
-
-/*
- * This function draws the frame of the picture, which corresponds to the
- * picture frame on the X display.  In addition, it draws the title window as
- * well as the title of the picture.
- */
-
-int
-Gdraws_drawFrame(
-          int borderW,          /* border width */
-          Window viewWindow, Window titleWindow,
-          char *title)          /* title of picture */
-{
-  FILE *fp;
-  XWindowAttributes vwInfo, twInfo;
-
-  /* choose 2 and "frameDict" for frame dictionary: can be anything else */
-
-  PSCreateContext((GC)2, "frameDict", borderW, psButtCap, psMiterJoin,
-		  psWhite, psBlack);
-
-  fp = fopen(psData[scriptps].filename, "a");
-
-  XGetWindowAttributes(dsply, viewWindow, &vwInfo);
-
-  /* draw title window */
-
-  XGetWindowAttributes(dsply, titleWindow, &twInfo);
-  fprintf(fp, "\t%s\t%d\t%d\t%d\t%d\ttitle\n", "frameDict",
-	  twInfo.height - vwInfo.height, twInfo.width, 0, vwInfo.height);
-
-  /* draw viewport window */
-
-  fprintf(fp, "\t%s\tdrawFrame\n", "frameDict");      /* using Gdraws_setDimension() */
-
-  /* draw title text */
-
-  psData[drawIstrps].flag = yes;
-  fprintf(fp, "\t%s\tloadFont\n\t%d\t(%s) stringwidth pop sub 2 div\n",
-	  "frameDict", twInfo.width, title);
-  fprintf(fp, "\t%d\t(%s)\t(%s)\tpsDrawIStr\n", 15, title, "title");
-
-  return (fclose(fp));
-}
-
-
-/* setDimension sets the dimension of the picture */
-
-int
-Gdraws_setDimension(
-		    Window viewWindow, 
-		    Window titleWindow)
-{
-  FILE *fp;
-  XWindowAttributes vwInfo, twInfo;
-  float pageWidth, pageHeight, width;
-
-  fp = fopen(psData[scriptps].filename, "w");
-
-  XGetWindowAttributes(dsply, titleWindow, &twInfo);
-  XGetWindowAttributes(dsply, viewWindow, &vwInfo);
-  pageWidth = 575.0;
-  pageHeight = 750.0;
-
-#if 0
-  pageWidth = (float) (DisplayWidth(dsply, scrn) / DisplayWidthMM(dsply, scrn));
-  pageWidth *= 160.0;
-  pageHeight = (float) (DisplayHeight(dsply, scrn) / DisplayHeightMM(dsply, scrn));
-  pageHeight *= 210.0;
-  fprintf(stderr, "%f, %f\n", pageWidth, pageHeight);
-#endif
-
-  fprintf(fp, "\n    gsave\t%% save graphics state for clipping path\n\n");
-  if ((vwInfo.height > pageWidth) || (vwInfo.height > pageHeight)) {
-    width = (float) vwInfo.width;
-    if (vwInfo.height > pageWidth) {
-      width = pageWidth / width;
-      fprintf(fp, "\t%f\t%f", width, width);
-    }
-    else {
-      if (vwInfo.height > pageHeight)
-	fprintf(fp, "\t%f\t%f", width, pageHeight / width);
-    }
-  }
-  else {
-    fprintf(fp, "\t%f\t%f", 1.0, 1.0);
-  }
-  fprintf(fp, "\tscale\n\n");
-
-  fprintf(fp, "\t%d\t%d\t%d\tsetDim\n", twInfo.height - vwInfo.height,
-	  vwInfo.height, vwInfo.width);
-
-  /* Write a Bounding Box for psfig etc. */
-
-  fprintf(fp, "%%%%BoundingBox: 0 0 %d %d\n", vwInfo.height, vwInfo.width);
-
-  fprintf(fp, "\tmaxX maxY\t0 0\trectangle\tclip\t%% set clip path\n\n");
-  return (fclose(fp));
-}
-/*
- * GDrawImageString draws an image text string 
- */
-
-int
-GDrawImageString(
-                 GC gc,         /* graphics context */
-                 Window wid,    /* window id */
-                 int x, int y,
-                 char *string,
-                 int length, int dFlag)
-{
-  int s;
-
-  switch (dFlag) {
-  case Xoption:
-    s = XDrawImageString(dsply, wid, gc, x, y, string, length);
-    break;
-  case PSoption:
-    {
-      FILE *fp;
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GDrawImageString cannot open %s\n",
-		psData[scriptps].filename);
-	return (psError);
-      }
-
-      psData[drawIstrps].flag = yes;      /* set procedure flag */
-      fprintf(fp, "\t%s\t%d\t%d\t(%s)\t(%s)\tpsDrawIStr\n",
-	      PSfindGC(gc), x, y, string, "window");
-      s = fclose(fp);
-    }
-    break;
-  default:
-    fprintf(stderr, "GdrawImagestring request (%d) not implemented yet.\n", dFlag);
-    return (psError);
-  }
-  return (s);
-}
-
-/* Draws an arc; see XDrawArc */
-
-int
-GDrawArc(
-         GC gc,                 /* graphics context */
-         Window wid,            /* window id */
-         int x, int y,
-         unsigned int wdth, unsigned int hght,
-         int ang1, int ang2, int dFlag)
-{
-  int s = 0;
-
-  switch (dFlag) {
-  case Xoption:
-    XDrawArc(dsply, wid, gc, x, y, wdth, hght, ang1, ang2);
-    break;
-  case PSoption:
-    {
-      FILE *fp;
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GDrawArc cannot open %s\n",
-		psData[scriptps].filename);
-	return (psError);
-      }
-
-      psData[drawarcps].flag = yes;
-      fprintf(fp, "\t%s\t%d\t%d\t%d\t%d\t%d\t%d\tpsDrawArc\n",
-	      PSfindGC(gc), x, y, hght, wdth, ang1 / 64, ang2 / 64);
-      s = fclose(fp);
-    }
-    break;
-  default:
-    fprintf(stderr, "Gdrawarc request (%d) not implemented yet.\n",
-	    dFlag);
-    return (psError);
-  }
-  return (s);
-}
-/*
- * GDrawLine draws a line, see XDrawLine 
- */
-
-int
-GDrawLine(
-          GC gc,                /* graphics context */
-          Window wid,           /* window id */
-          int x0, int y0, int x1, int y1, int dFlag)
-{
-  int s = 0;
-
-  switch (dFlag) {
-  case Xoption:
-    XDrawLine(dsply, wid, gc, x0, y0, x1, y1);
-    break;
-  case PSoption:
-    {
-      FILE *fp;
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GDrawLine cannot open %s\n",
-		psData[scriptps].filename);
-	return (psError);
-      }
-
-      psData[drawlineps].flag = yes;      /* sets procedure flag */
-      fprintf(fp, "\t%s\t%d\t%d\t%d\t%d\tpsDrawLine\n",
-	      PSfindGC(gc), x1, y1, x0, y0);
-      s = fclose(fp);
-    }
-    break;
-  default:
-    fprintf(stderr, "Gdrawline request (%d) not implemented yet.\n",
-	    dFlag);
-    return (psError);
-  }
-  return (s);
-}
-
-
-
-
-
-/*
- * GDrawLines draws lines; see XDrawLines
- */
-
-int
-GDrawLines(
-           GC gc,               /* graphics context */
-           Window wid,          /* window id */
-           XPoint * points,     /* points */
-           int numberOfPoints, int mode, int dFlag)
-                                /* number of points, mode and display flag */
-{
-  int s = 0;
-
-  switch (dFlag) {
-  case Xoption:
-    XDrawLines(dsply, wid, gc, points, numberOfPoints, mode);
-    break;
-  case PSoption:
-    {
-      FILE *fp;           /* not dealing with modes yet */
-      int i = 0;
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GDrawLines cannot open %s\n",
-		psData[scriptps].filename);
-	return (psError);
-      }
-
-      psData[drawlinesps].flag = yes;     /* set procedure flag */
-      fprintf(fp, "\t%s\n", PSfindGC(gc));
-      i = numberOfPoints - 1;
-      while (i > 0)
-      { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y);
-        i = i-1;
-      }
-
-      fprintf(fp, "\t%d\t%d\t%d\tpsDrawLines\n",
-	      numberOfPoints, points[i].x, points[i].y);
-      s = fclose(fp);
-    }
-    break;
-  default:
-    fprintf(stderr, "Gdrawlines request (%d) not implemented yet\n",
-	    dFlag);
-    return (psError);
-  }
-  return (s);
-}
-
-/*
- * GDrawPoint draws a point, see XDrawPoint 
- */
-
-int
-GDrawPoint(
-           Window wid,          /* window id */
-           GC gc,               /* graphics context */
-           int x0, int y0, int dFlag)
-{
-  int s = 0;
-
-  switch (dFlag) {
-  case Xoption:
-    XDrawPoint(dsply, wid, gc, x0, y0);
-    break;
-  case PSoption:
-    {
-      FILE *fp;
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GDrawPoint cannot open %s\n",
-		psData[scriptps].filename);
-	return (psError);
-      }
-
-      psData[drawpointps].flag = yes;     /* sets procedure flag */
-      fprintf(fp, "\t%s\t%d\t%d\t%d\t%d\tpsDrawPoint\n",
-	      PSfindGC(gc), x0, y0, x0 + 1, y0 + 1);
-      s = fclose(fp);
-    }
-    break;
-  default:
-    fprintf(stderr, "Gdrawpoint request (%d) not implemented yet\n",
-	    dFlag);
-    return (psError);
-  }
-  return (s);
-}
-
-/*
- * GDrawRectangle draws a rectangle; see XDrawRectangle
- */
-
-int
-GDrawRectangle(
-               GC gc,
-               Window windowId,
-               short int x,short  int y,short  int width,short  int height,
-               int dFlag)
-{
-  int s = 0;
-
-  switch (dFlag) {
-  case Xoption:
-    XDrawRectangle(dsply, windowId, gc, x, y, width, height);
-    break;
-  case PSoption:
-    {
-      FILE *fp;
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GDrawRect cannot open %s\n",
-		psData[scriptps].filename);
-	return (psError);
-      }
-
-      psData[drawrectps].flag = yes;
-      fprintf(fp, "\t%s\t%d\t%d\t%d\t%d\tpsDrawRect\n",
-	      PSfindGC(gc), width, height, x, y);
-      s = fclose(fp);
-    }
-    break;
-  default:
-    fprintf(stderr, "Gdrawrect request (%d) not implemented yet\n",
-	    dFlag);
-    return (psError);
-  }
-  return (s);
-}
-
-/*
- * GDraw3DButtonOut draws a rectangle with 3D shading on rhs and bottom
- */
-
-int
-GDraw3DButtonOut(
-                 GC gc,
-                 Window windowId,
-                 short int x,short  int y,short  int width,short  int height,
-                 int dFlag)
-{
-  /* draw regular rectangle */
-
-  int s = GDrawRectangle(gc, windowId, x, y, width - 1, height - 1, dFlag);
-
-  /* add extra line down rhs */
-
-  GDrawLine(gc, windowId,
-	    x + width, y + 1, x + width, y + height,
-	    dFlag);
-
-  /* add extra line across bottom */
-
-  GDrawLine(gc, windowId,
-	    x + 1, y + height, x + width, y + height,
-	    dFlag);
-
-  return (s);
-}
-
-/*
- * GDraw3DButtonIn draws a rectangle with 3D shading on lhs and top
- */
-
-int
-GDraw3DButtonIn(
-                GC gc,
-                Window windowId,
-                short int x,short  int y,short  int width,short  int height,
-                int dFlag)
-{
-  /* draw regular rectangle */
-
-  int s = GDrawRectangle(gc, windowId, x + 1, y + 1, width - 1, height - 1, dFlag);
-
-  /* add extra line down lhs */
-
-  GDrawLine(gc, windowId,
-	    x, y, x, y + height - 1,
-	    dFlag);
-
-  /* add extra line across top */
-
-  GDrawLine(gc, windowId,
-	    x, y, x + width - 1, y,
-	    dFlag);
-
-  return (s);
-}
-
-/*
- * GDrawPushButton draws a push button whose appearance depends on "isOn."
- */
-
-int
-GDrawPushButton(
-                Display * display,
-                GC gc1, GC gc2, GC gc3,
-                Window windowId,
-                short int x,short int y,short  int width,short  int height,
-                int isOn, char *text,
-                unsigned long buttonColor, unsigned long color,
-                int dFlag)
-{
-  int len = strlen(text);
-
-  if (dFlag == Xoption)
-    XClearArea(display, windowId, x, y, width + 1, height + 1, False);
-
-  GSetForeground(gc1, (float) buttonColor, dFlag);
-
-  if (isOn)
-    GDraw3DButtonIn(gc1, windowId, x, y, width, height, dFlag);
-  else
-    GDraw3DButtonOut(gc1, windowId, x, y, width, height, dFlag);
-
-  GSetForeground(gc2, (float) color, dFlag);
-
-  return GDrawString(gc2, windowId,
-		     x + (isOn ? 2 : 0) + centerX(gc3, text, len, width),
-		     y + (isOn ? 2 : 0) + centerY(gc3, height),
-		     text, len, dFlag);
-}
-
-
-
-/*
- * Draws a string; see XDrawString
- */
-
-int
-GDrawString(
-            GC gc,              /* graphics context */
-            Window wid,         /* window id */
-            int x, int y,
-            char *string,       /* string to be drawn */
-            int length, int dFlag)
-{
-  int s;
-
-  switch (dFlag) {
-  case Xoption:
-    s = XDrawString(dsply, wid, gc, x, y, string, length);
-    break;
-  case PSoption:
-    {
-      FILE *fp;
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GDrawString cannot open %s\n",
-		psData[scriptps].filename);
-	return (psError);
-      }
-
-      psData[drawstrps].flag = yes;       /* sets procedure flag */
-      fprintf(fp, "\t%s\t(%s)\t%d\t%d\tpsDrawStr\n",
-	      PSfindGC(gc), string, x, y);
-
-      s = fclose(fp);
-    }
-    break;
-  default:
-    fprintf(stderr, "Gdrawstring request (%d) not implemented yet\n",
-	    dFlag);
-    return (psError);
-  }
-  return (s);
-}
-
-/*
- * Draws and fills an arc with foreground color; see XFillArc
- */
-
-int
-GFillArc(
-         GC gc,                 /* graphics context */
-         Window wid,            /* window id */
-         int x, int y,
-         unsigned int wdth, unsigned int hght,
-         int ang1, int ang2, int dFlag)
-{
-  int s = 0;
-
-  switch (dFlag) {
-  case Xoption:                   /* angle: times 64 already */
-    XFillArc(dsply, wid, gc, x, y, wdth, hght, ang1, ang2);
-    break;
-  case PSoption:
-    {
-      FILE *fp;
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GFillArc cannot open %s\n",
-		psData[scriptps].filename);
-	return (psError);
-      }
-
-      psData[fillarcps].flag = yes;       /* sets procedure flag */
-      fprintf(fp, "\t%s\t%d %d\t%d %d\t%d %d\t%d %d\tpsFillArc\n",
-	      PSfindGC(gc), x, y, hght, wdth, ang1 / 64, ang2 / 64,
-	      x + wdth / 2, y + hght / 2);
-      s = fclose(fp);
-    }
-    break;
-  default:
-    fprintf(stderr, "GFillArc request (%d) not implemented yet\n",
-	    dFlag);
-    return (psError);
-  }
-  return (s);
-}
-
-/*
- * Initializes the path and files to be used.
- */
-
-int
-PSGlobalInit(void)
-{                               /* This needs to be called only once each
-                                 * session. */
-  char *tmp;
-
-  /* path-independent global file name */
-  psData[GCdictps].flag = yes;
-  tmp = tempnam(NULL, "axPS");
-  sprintf(psData[GCdictps].filename, "%s", tmp);
-  free(tmp);
-  psData[setupps].flag = yes;
-  psData[scriptps].flag = yes;/* new script file name */
-  psData[endps].flag = yes;
-
-  /* path specific file names */
-
-  if ((envAXIOM = getenv("DEVE")) != NULL) {  /* get env var AXIOM */
-
-    psData[headerps].flag = yes;
-    sprintf(psData[headerps].filename, "%s%s", envAXIOM, "/Gdraws/PS/header.ps");
-    sprintf(psData[drawps].filename, "%s%s", envAXIOM, "/Gdraws/PS/draw.ps");
-    sprintf(psData[drawarcps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/drawarc.ps");
-    sprintf(psData[drawfilledps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/drwfilled.ps");
-    sprintf(psData[drawcolorps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/drawcolor.ps");
-    sprintf(psData[fillpolyps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/fillpoly.ps");
-    sprintf(psData[colorpolyps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/colorpoly.ps");
-    sprintf(psData[fillwolps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/fillwol.ps");
-    sprintf(psData[colorwolps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/colorwol.ps");
-    sprintf(psData[drawpointps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/drawpoint.ps");
-    sprintf(psData[drawlineps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/drawline.ps");
-    sprintf(psData[drawlinesps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/drawlines.ps");
-    sprintf(psData[drawrectps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/drawrect.ps");
-    sprintf(psData[drawstrps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/drawstr.ps");
-    sprintf(psData[drawIstrps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/drawIstr.ps");
-    sprintf(psData[fillarcps].filename, "%s%s", envAXIOM,
-	    "/Gdraws/PS/fillarc.ps");
-    sprintf(psData[setupps].filename, "%s%s", envAXIOM, "/Gdraws/PS/setup.ps");
-    sprintf(psData[endps].filename, "%s%s", envAXIOM, "/Gdraws/PS/end.ps");
-  }
-  else if ((envAXIOM = getenv("AXIOM")) != NULL) {
-    psData[headerps].flag = yes;
-    sprintf(psData[headerps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/header.ps");
-    sprintf(psData[drawps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/draw.ps");
-    sprintf(psData[drawarcps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/drawarc.ps");
-    sprintf(psData[drawfilledps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/drwfilled.ps");
-    sprintf(psData[drawcolorps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/drawcolor.ps");
-    sprintf(psData[fillpolyps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/fillpoly.ps");
-    sprintf(psData[colorpolyps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/colorpoly.ps");
-    sprintf(psData[fillwolps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/fillwol.ps");
-    sprintf(psData[colorwolps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/colorwol.ps");
-    sprintf(psData[drawpointps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/drawpoint.ps");
-    sprintf(psData[drawlineps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/drawline.ps");
-    sprintf(psData[drawlinesps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/drawlines.ps");
-    sprintf(psData[drawrectps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/drawrect.ps");
-    sprintf(psData[drawstrps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/drawstr.ps");
-    sprintf(psData[drawIstrps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/drawIstr.ps");
-    sprintf(psData[fillarcps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/fillarc.ps");
-    sprintf(psData[setupps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/setup.ps");
-    sprintf(psData[endps].filename, "%s%s", envAXIOM,
-	    "/lib/graph/end.ps");
-  }
-  else {
-    fprintf(stderr, " need environment variable AXIOM or DEVE; process aborted\n");
-    return (psError);
-  }
-
-  return (psInit = yes);
-}
-
-
-/*
- * This needs to be called for every postscript file generated. It
- * initializes the procedure flags.
- */
-
-int
-PSInit(Window vw, Window tw)
-{
-  if (!psInit) {
-    /* must have PSGlobalInit() called before this */
-    fprintf(stderr, "Error: need initialization for ps data files: call PSGlobalInit().\n");
-    return (psError);
-  }
-
-  sprintf(psData[output].filename, "%s", PSfilename); /* output file name */
-
-  psData[drawps].flag = no;   /* ps procedures flags */
-  psData[drawarcps].flag = no;
-  psData[drawfilledps].flag = no;
-  psData[drawcolorps].flag = no;
-  psData[fillpolyps].flag = no;
-  psData[fillwolps].flag = no;
-  psData[colorpolyps].flag = no;
-  psData[colorwolps].flag = no;
-  psData[drawpointps].flag = no;
-  psData[drawlineps].flag = no;
-  psData[drawlinesps].flag = no;
-  psData[drawrectps].flag = no;
-  psData[drawstrps].flag = no;
-  psData[drawIstrps].flag = no;
-  psData[fillarcps].flag = no;
-
-  sprintf(psData[scriptps].filename, "%s", tmpnam(NULL));     /* script file */
-  return (Gdraws_setDimension(vw, tw));
-}
-
-/*
- * This procedure sets the line attributes; notice that lineWidth is not set
- * for PS, this is because lineWidth of 0, the thinest line on the ps device,
- * is device-dependent, thus, we'll leave it and use default. Also lineStyle
- * is solid in ps by default, thus we don't need to set it. We'll leave out
- * line style here since we really never used anything other than line solid
- * which is the default line style in postscript.
- */
-
-int
-PSCreateContext(
-                GC gc,       /* graphics context */
-                char *C_gc,     /* GC name to be used as postscript variable */
-                int lineWidth, int capStyle, int joinStyle,
-                float bg, float fg)
-{
-  FILE *fp;
-  GCptr newGC, curGC;
-  
-  /* get memory for new GC cell */
-  
-  if (!(newGC = (GCptr) malloc(sizeof(GCstruct)))) {
-    fprintf(stderr, "Ran out of memory(malloc) trying to create a ps GC.\n");
-    exit(-1);
-  }
-  
-  /* attach newGC to chain */
-  
-  if (GChead == NULL)
-    GChead = newGC;
-  else {                      /* attach newGC to end of linked list */
-    curGC = GChead;
-    while (curGC->next != NULL)
-      curGC = curGC->next;
-    curGC->next = newGC;
-  }
-  
-  /* fill newGC with information */
-  
-  newGC->GCint = gc;
-  sprintf(newGC->GCchar, "%s", C_gc);
-  newGC->next = NULL;
-  
-  if ((fp = fopen(psData[GCdictps].filename, "a")) == NULL) {
-    fprintf(stderr, "PSCreateContext cannot open %s\n",
-	    psData[GCdictps].filename);
-    return (psError);
-  }
-  
-  fprintf(fp, "\t%d\t%d\t%d\n\t%f\t%f\t/%s\tmakeDict\n", joinStyle,
-	  capStyle, lineWidth, bg, fg, C_gc);
-  
-  return (fclose(fp));
-}
-
-/*
- * Looks into GC linked list with gc (unsigned long) as index to find the
- * character name.
- */
-
-char *
-PSfindGC(GC gc)
-{
-  GCptr curGC;
-  
-  curGC = GChead;
-  while ((curGC != NULL) && (curGC->GCint != gc))
-    curGC = curGC->next;
-  
-  if (curGC == NULL) {
-    fprintf(stderr, "PSfindGC cannot find gc: %p.\n",gc);
-    return (NULL);
-  }
-  else
-    return (curGC->GCchar);
-}
-
-/*
- * Sets foreground color; see XSetForeground
- */
-
-int
-GSetForeground(
-               GC gc,           /* graphics context */
-               float color,     /* foreground color to be set */
-               int dFlag)       /* display flag: PS, X,... */
-{
-  int s = 0;
-
-  switch (dFlag) {
-  case Xoption:
-    XSetForeground(dsply, gc, (unsigned long) color);
-    break;
-  case PSoption:
-    {
-      FILE *fp;
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GSetForeground cannot open %s\n",
-		psData[scriptps].filename);
-	return (0);
-      }
-      fprintf(fp, "\t%s\t%f\tsetForeground\n", PSfindGC(gc), color);
-      s = fclose(fp);
-      break;
-    }
-  default:
-    fprintf(stderr, "GSetForeground request (%d) not implemented yet\n", dFlag);
-    return (0);
-  }
-  return (s);
-}
-
-/*
- * Sets background color; see XSetBackground
- */
-
-int
-GSetBackground(
-               GC gc,           /* graphics context */
-               float color,     /* background color to be set */
-               int dFlag)       /* display flag: PS, X,... */
-{
-  int s = 0;
-
-  switch (dFlag) {
-  case Xoption:
-    XSetBackground(dsply, gc, (unsigned long) color);
-    break;
-  case PSoption:
-    {
-      FILE *fp;
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GSetBackground cannot open %s\n",
-		psData[scriptps].filename);
-	return (0);
-      }
-      fprintf(fp, "\t%s\t%f\tsetBackground\n", PSfindGC(gc), color);
-      s = fclose(fp);
-      break;
-    }
-  default:
-    fprintf(stderr, "GSetBackground request (%d) not implemented yet\n", dFlag);
-    return (0);
-  }
-  return (s);
-}
-
-/*
- * See XSetLineAttributes.  Notice that we'll not setting line style for
- * postscript.  This is because solid is the ls in ps and in view3d and 2d,
- * we really don't use anything else than solid.
- */
-
-int
-GSetLineAttributes(
-                   GC gc,
-                   int lineWidth, int lineStyle, int capStyle, int joinStyle,
-                   int dFlag)
-{
-  int s = 0;
-  
-  switch (dFlag) {
-  case Xoption:
-    XSetLineAttributes(dsply, gc, lineWidth, lineStyle,
-			   capStyle, joinStyle);
-    break;
-  case PSoption:
-    {
-      FILE *fp;
-      int psCap, psJoin;
-
-      switch (capStyle) {
-      case 0:           /* CapNotLast is not implemented in ps */
-      case 1:
-	psCap = psButtCap;
-	break;
-      case 2:
-	psCap = psRoundCap;
-	break;
-      case 3:
-	psCap = psPSqCap;
-	break;
-      default:
-	fprintf(stderr, "cap style: %d unknown, using default.\n", capStyle);
-	psCap = psButtCap;
-      }
-
-      switch (joinStyle) {
-      case 0:
-	psJoin = psMiterJoin;
-	break;
-      case 1:
-	psJoin = psRoundJoin;
-	break;
-      case 2:
-	psJoin = psBevelJoin;
-	break;
-      default:
-	fprintf(stderr, "join style: %d unknown, using default.\n", joinStyle);
-	psJoin = psMiterJoin;
-      }
-
-      /*
-       * width of zero is machine-dependent and is not recom- mended,
-       * we'll use 1 as the thinest line available if (lineWidth < 1)
-       * lineWidth = 1;
-       */
-
-      if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-	fprintf(stderr, "GSetLineAttributes cannot open %s\n",
-		psData[scriptps].filename);
-	return (0);
-      }
-
-      fprintf(fp, "\t%d\t%d\t%d\t%s\tsetLineAttributes\n",
-	      lineWidth, psCap, psJoin, PSfindGC(gc));
-      s = fclose(fp);
-    }
-    break;
-  default:
-    fprintf(stderr, "GSetLineAttributes request (%d) not implemented yet\n", dFlag);
-    return (0);
-  }
-  return (s);
-}
-
-/*
- * This procedure frees the data structure used for GC information, and also
- * unlinks the GC dictionary file.
- */
-
-int
-PSClose(void)
-{
-  if (GChead != NULL) {
-
-    /* free memory used by GC struct */
-
-    GCptr curGC = GChead;
-
-    while (curGC != NULL) {
-      GCptr freeGC = curGC;
-
-      curGC = curGC->next;
-      free(freeGC);
-    }
-  }
-
-  /* remove GC dictionary file */
-
-  return (unlink(psData[GCdictps].filename));
-}
-
-
-
-
-int 
-centerX (GC viewGCx,char * theString,int strlength,int windowWidth)
-{
-  XFontStruct *fontStruct;
-  GContext con;
-  int result;
-
-
-  con=XGContextFromGC(viewGCx);
-  fontStruct = XQueryFont(dsply,con);
-  if(fontStruct == NULL) return(0);
-  result = (windowWidth - XTextWidth(fontStruct,theString,strlength))/2 -
-    fontStruct->min_bounds.lbearing;
-  XFreeFontInfo(NULL,fontStruct,1); 
-  return(result);
-}
-
-
-int 
-centerY (GC viewGCy,int windowHeight)
-{
-
-  XFontStruct *fontStruct;
-  GContext con;
-  int result;
-
-  con=XGContextFromGC(viewGCy);
-  fontStruct = XQueryFont(dsply,con);
-  if (fontStruct == NULL) return(0);
-  result = (windowHeight -
-	    (fontStruct->max_bounds.ascent + fontStruct->max_bounds.descent))/2 +
-    fontStruct->max_bounds.ascent;
-  XFreeFontInfo(NULL,fontStruct,1);
-  return(result);
-
-}
- 
-
-/*
- * PSColorPolygon draws and fills a polygon given data in XPoint; see
- * XFillPolygon
- */
-
-int
-PSColorPolygon(
-               float r, float g, float b,       /* red, green and blue color
-                                                 * components */
-               XPoint * points,         /* vertices of polygon */
-               int numberOfPoints)      /* number of points */
-{
-  int i = 0;
-  FILE *fp;
-
-  if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-    fprintf(stderr, "PSColorPolygon cannot open %s\n",
-	    psData[scriptps].filename);
-    return (psError);
-  }
-
-  psData[colorpolyps].flag = yes;     /* sets procedure flag */
-
-  fprintf(fp, "\t%f\t%f\t%f\tsetrgbcolor\n", r, g, b);
-
-  i = numberOfPoints - 1;
-  while (i > 0)
-  { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y);
-    i = i-1;
-  }
-
-  fprintf(fp, "\t%d\t%d\t%d\tpsColorPoly\n", numberOfPoints, points[i].x, points[i].y);
-
-  return (fclose(fp));
-}
-
-
-/*
- * PSColorwOutline draws and also outlines the colored polygon.
- */
-
-int
-PSColorwOutline(
-                float r, float g, float b,      /* red, green and blue color
-                                                 * components */
-                XPoint * points,        /* vertices of polygon */
-                int numberOfPoints)     /* number of points */
-{
-  int i = 0;
-  FILE *fp;
-
-  if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-    fprintf(stderr, "PSDrawFOL cannot open %s\n", psData[scriptps].filename);
-    return (psError);
-  }
-
-  psData[colorwolps].flag = yes;      /* sets procedure flag */
-
-  fprintf(fp, "\t%f\t%f\t%f\tsetrgbcolor\n", r, g, b);
-
-  i = numberOfPoints - 1;
-  while (i > 0)
-  { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y);
-    i = i-1;
-  }
-
-  fprintf(fp, "\t%d\t%d\t%d\tpsFillwOutline\n",
-	  numberOfPoints, points[i].x, points[i].y);
-
-  return (fclose(fp));
-}
-/*
- * This function does what XDraw would do, notice that only a subset of
- * attributes in GC is implemented -- adequate for our purpose now
- */
-
-int
-PSDrawColor(
-    float r, float g, float b,  /* red, green and blue color components */
-    XPoint *points,             /* point list */
-    int numberOfPoints)         /* vertex count and display flag (X, PS,...) */
-{
-  int i = 0;
-  FILE *fp;
-
-  if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-    fprintf(stderr, "GDraw cannot open %s\n",
-	    psData[scriptps].filename);
-    return (psError);
-  }
-
-  psData[drawcolorps].flag = yes;     /* set procedure flag */
-
-  fprintf(fp, "\t%f\t%f\t%f\tsetrgbcolor\n", r, g, b);
-
-  i = numberOfPoints - 1;
-  while (i > 0)
-  { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y);
-    i=i-1;
-  }
-
-  fprintf(fp, "\t%d\t%d\t%d\tpsDrawColor\n", numberOfPoints, points[i].x, points[i].y);
-
-  return (fclose(fp));
-}
-/*
- * PSFillPolygon draws and fills a polygon given data in XPoint; see
- * XFillPolygon.
- */
-
-int
-PSFillPolygon(
-              GC gc,               /* graphics context */
-              XPoint * points,      /* vertices of polygon */
-              int numberOfPoints)   /* number of points */
-{
-  int i = 0;
-  FILE *fp;
-
-  if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-    fprintf(stderr, "PSFillPolygon cannot open %s\n",
-	    psData[scriptps].filename);
-    return (psError);
-  }
-
-  psData[fillpolyps].flag = yes;      /* sets procedure flag */
-  fprintf(fp, "\t%s\n", PSfindGC(gc));
-
-  i = numberOfPoints - 1;
-  while (i > 0)
-  { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y);
-    i = i-1;
-  }
-
-  fprintf(fp, "\t%d\t%d\t%d\tpsFillPoly\n", numberOfPoints, points[i].x, points[i].y);
-
-  return (fclose(fp));
-}
-
-/*
- * PSFillwOutline draws and also outlines the filled polygon.
- */
-
-int
-PSFillwOutline(
-               GC gc,           /* graphics context */
-               XPoint * points, /* vertices of polygon */
-               int numberOfPoints) /* number of points */
-{
-  int i = 0;
-  FILE *fp;
-
-  if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) {
-    fprintf(stderr, "PSDrawFOL cannot open %s\n", psData[scriptps].filename);
-    return (psError);
-  }
-
-  psData[fillwolps].flag = yes;       /* sets procedure flag */
-  fprintf(fp, "\t%s\n", PSfindGC(gc));
-
-  i = numberOfPoints - 1;
-  while (i > 0)
-  { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y);
-    i = i-1;
-  }
-
-  fprintf(fp, "\t%d\t%d\t%d\tpsFillwOutline\n",
-	  numberOfPoints, points[i].x, points[i].y);
-
-  return (fclose(fp));
-}
-static int 
-TrivEqual(Window s1,Window s2)
-{
-  return ( s1 == s2);
-}
-
-static int 
-TrivHash_code(Window s,int size)
-{
-  return (s % size);
-}
-
-
-HashTable *
-XCreateAssocTable(int size)
-{
-  HashTable * table;
-  table = (HashTable *) malloc(sizeof(HashTable));
-  hash_init(table,size,(EqualFunction)TrivEqual,(HashcodeFunction)TrivHash_code);
-  return table;
-}
-
-void 
-XMakeAssoc(Display * dsp, HashTable *table, Window w, int * p)
-{
-  hash_insert(table,(char *) p, (char *) w);
-}
-
-int *
-XLookUpAssoc(Display * dsp, HashTable *table,Window w)
-{
-  return (int *) hash_find(table,(char *)w);
-}
-
-void 
-XDeleteAssoc(Display * dsp,HashTable * table, Window w)
-{
-  hash_delete(table,(char *) w);
-}
-
-
-
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/gdraws/loadfont.c.pamphlet b/src/graph/gdraws/loadfont.c.pamphlet
deleted file mode 100644
index 9f31e93..0000000
--- a/src/graph/gdraws/loadfont.c.pamphlet
+++ /dev/null
@@ -1,71 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph loadfont.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-
-/* load_font for display to test out Gdraw functions in this directory */
-
-#include "gdraws0.h"
-#include "../include/g.h"
-
-#include <stdio.h>
-
-void
-Gdraws_load_font(XFontStruct **font_info, char *fontname)
-{
-   if ((*font_info = XLoadQueryFont(dsply, fontname)) == NULL) {
-     fprintf(stderr, "cannot open font %s\n", fontname);
-     exit(-1);
-   }
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/gdraws/main.c.pamphlet b/src/graph/gdraws/main.c.pamphlet
deleted file mode 100644
index a8b4fdd..0000000
--- a/src/graph/gdraws/main.c.pamphlet
+++ /dev/null
@@ -1,215 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph main.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-
-/* main procedure to test out Gdraw functions in this directory */
-#include <stdio.h>
-#include "gdraws0.h"
-#include "../view3d/header.h"
-
-GC		gc, gc1;
-Display		*dsply;
-int		scrn;
-viewPoints	*viewport;
-
-int		psInit=no;
-GCptr		GChead=NULL;
-char		*PSfilename="OUTPUT.ps";
-char		*envAXIOM;
-
-int
-main(int argc, char **argv)
-{
-
-   XGCValues	values;
-
-   XEvent	report;
-   int		x0=0, y0=0, width=300, height=200, border=3;
-
-   char		*fontname = "6x13";
-   XFontStruct	*dsp_font;
-
-   Window	menu;
-   char		*str1 = "     Print out the PostScript file?    ",
-		*str0 = "Generate a PostScript file (OUTPUT.ps)?";
-   int		m_width, m_height, flag=yes;
-
-   /* open display */
-   if ((dsply = XOpenDisplay(NULL)) == NULL) {
-     printf("Can't open display NULL\n");
-     exit(-1);
-   }
-
-   scrn = DefaultScreen(dsply);
-
-   /* access font */
-   Gdraws_load_font(&dsp_font, fontname);
-
-   values.background = WhitePixel(dsply, scrn);
-   values.foreground = BlackPixel(dsply, scrn);
-
-   gc = XCreateGC(dsply, RootWindow(dsply, scrn),
-		  (GCForeground | GCBackground), &values);
-   PSGlobalInit();	/* must initiate before using G/PS functions */
-   PSCreateContext(gc, "gc", psNormalWidth, psButtCap,
-		   psMiterJoin, psWhite, psBlack);
-   XSetFont(dsply, gc, dsp_font->fid);
-   gc1 = XCreateGC(dsply, RootWindow(dsply, scrn),
-		   (GCForeground | GCBackground), &values);
-   PSCreateContext(gc1, "gc1", psNormalWidth, psButtCap, psMiterJoin,
-		   psWhite, psBlack);
-   XSetFont(dsply, gc1, dsp_font->fid);
-
-   if (!(viewport = (viewPoints *)malloc(sizeof(viewPoints)))) {
-     fprintf(stderr,"Ran out of memory (malloc) trying to create a viewport.\n");
-     exit(-1);
-   }
-
-   viewport->titleWindow = XCreateSimpleWindow(dsply, RootWindow(dsply,scrn),
-					       x0, y0, width+6,
-					       height+32+height/4, border,
-					       BlackPixel(dsply, scrn),
-					       WhitePixel(dsply, scrn));
-
-   viewport->viewWindow = XCreateSimpleWindow(dsply, viewport->titleWindow,
-					      x0, y0+20, width, height, border,
-					      BlackPixel(dsply, scrn),
-					      WhitePixel(dsply, scrn));
-
-   strcpy(viewport->title, "what is a test title?");
-
-   m_width = width; m_height = height/4;
-   menu = XCreateSimpleWindow(dsply, viewport->titleWindow, x0, y0+20+height+6,
-			      m_width, m_height, border,
-			      BlackPixel(dsply,scrn), WhitePixel(dsply,scrn));
-
-   XSelectInput(dsply, viewport->viewWindow,
-		KeyPressMask|ButtonPressMask|ExposureMask);
-   XSelectInput(dsply, viewport->titleWindow, KeyPressMask|ExposureMask);
-   XSelectInput(dsply, menu, KeyPressMask|ButtonPressMask|ExposureMask);
-
-   XMapWindow(dsply, viewport->viewWindow);
-   XMapWindow(dsply, viewport->titleWindow);
-   XFlush(dsply);
-
-   while (yes) {
-      XNextEvent(dsply, &report);
-      switch (report.type) {
-
-	 case Expose:
-		if (report.xexpose.window==viewport->titleWindow) {
-		  if (GDrawImageString(gc, viewport->titleWindow,
-				       20, 15, viewport->title,
-				       strlen(viewport->title),X) == psError)
-		    printf("screen draw image string failed.\n");
-		  if (Gdraws_data(X) == psError)
-		    printf("screen Gdraws_data failed.\n");
-		}
-		if (report.xexpose.window==viewport->viewWindow) {
-		  if (Gdraws_data(X) == psError)
-		    printf("screen Gdraws_data failed.\n");
-		}
-		else if (report.xexpose.window==menu) {
-		  if (flag)
-		    Gdraws_draw_menu(menu, str0, m_width, m_height);
-		  else
-		    Gdraws_draw_menu(menu, str1, m_width, m_height);
-		}
-		break;
-
-	 case ButtonPress:
-		if (report.xbutton.window==viewport->viewWindow) {
-		  XMapWindow(dsply, menu);
-		  XFlush(dsply);
-		}
-		else if (report.xbutton.window==menu && flag) {
-		       XUnmapWindow(dsply, menu);
-		       if (Gdraws_pressed_yes(m_width, m_height, report.xbutton.x,
-			   report.xbutton.y)) {
-			 flag=no;
-			 XMapWindow(dsply, menu);
-			 PSInit(viewport->viewWindow, viewport->titleWindow);
-			 if (Gdraws_data(PS) != psError)
-			   PSCreateFile(3,viewport->viewWindow,
-					viewport->titleWindow,viewport->title);
-			 else printf("PS Gdraws_data failed.\n");
-		       }
-		     }
-		else if (report.xbutton.window==menu && !flag) {
-		       XUnmapWindow(dsply, menu);
-		       if (Gdraws_pressed_yes(m_width, m_height, report.xbutton.x,
-			   report.xbutton.y))
-			 system("print OUTPUT.ps");
-		       flag = yes;
-		     }
-		break;
-
-	 case KeyPress:
-		if (report.xkey.window==viewport->viewWindow ||
-		    report.xkey.window==viewport->titleWindow) {
-		  XFreeGC(dsply, gc);
-		  XFreeGC(dsply, gc1);
-		  XCloseDisplay(dsply);
-		  PSClose();
-		  exit(1);
-		}
-		else if (report.xkey.window==menu) XUnmapWindow(dsply, menu);
-
-	 default:
-		break;
-      }
-   }
-   return 0;
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/gdraws/menu.c.pamphlet b/src/graph/gdraws/menu.c.pamphlet
deleted file mode 100644
index fe24991..0000000
--- a/src/graph/gdraws/menu.c.pamphlet
+++ /dev/null
@@ -1,82 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph menu.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-/* menu of display used for testing out Gdraw functions in this directory */
-#include "gdraws0.h"
-#include "../include/g.h"
-
-extern GC gc;
-
-void
-Gdraws_draw_menu(Window menu, char *str, int width, int height)
-{
-   char *str1 = "y e s", *str2 = "n o";
-   int x0=0, y0=0;
-
-   XDrawString(dsply, menu, gc, 30, height/4+3, str, strlen(str));
-
-   XFillArc(dsply, menu, gc, 35, height/3+5, width/2-50, height/3*2-10,
-	    0*64, 360*64);
-
-   XFillArc(dsply, menu, gc, width/2+5, height/3+5, width/2-50, height/3*2-10,
-	    0*64, 360*64);
-
-   XSetForeground(dsply, gc, WhitePixel(dsply, scrn));
-   XDrawString(dsply, menu, gc, width/4-5, height/3*2+3, str1, strlen(str1));
-   XDrawString(dsply, menu, gc, width/4*3-28,height/3*2+3, str2, strlen(str2));
-   XSetForeground(dsply, gc, BlackPixel(dsply, scrn));
-
-   XFlush(dsply);
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/gdraws/psfiles.pamphlet b/src/graph/gdraws/psfiles.pamphlet
deleted file mode 100644
index bcdfd40..0000000
--- a/src/graph/gdraws/psfiles.pamphlet
+++ /dev/null
@@ -1,635 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/gdraws psfiles}
-\author{Timothy Daly}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{The postscript command definitions}
-\subsection{colorpoly}
-\begin{verbatim}
-operand stack configuration in order to use psColorPoly:
-	psFillPoly
-	XPoint[0].y
-	XPoint[0].x
-	n
-	...
-	XPoint[n].y
-	XPoint[n].x
-	graphics-context dictionary
-this draws a polygon by connecting all the points and fills the
-region with foreground color
-\end{verbatim}
-<<colorpoly>>=
-/psColorPoly
-        {	gsave
-                newpath
-                yVal moveto
-                1 sub {
-                        yVal lineto
-                } repeat
-		closepath
-		fill	%% fills with foreground color
-                grestore }
-        def
-
-@
-\subsection{colorwol}
-\begin{verbatim}
-operand stack configuration in order to use psDrawFilled:
-	psFillwOL
-	XPoint[0].y
-	XPoint[0].x
-	n
-	...
-	XPoint[n].y
-	XPoint[n].x
-	graphics-context dictionary
-this draws lines connecting all the points and fills the
-region with background color (default: 1, or white).
-\end{verbatim}
-<<colorwol>>=
-/psColorwOutline
-        {	gsave
-                newpath
-                yVal moveto
-                1 sub {
-                        yVal lineto
-                } repeat
-		closepath
-		begin gsave fill grestore	%% fills with foreground color
-		0 setgray stroke grestore end }	%% outline it with black
-        def
-
-@
-\subsection{drawarc}
-\begin{verbatim}
-operand stack configuration in order to use psDrawArc:
-	psDrawArc
-	angle2
-	angle1
-	width
-	height
-	y
-	x
-	graphics-context dictionary
-this draws an arc whose origin is at x, y, and whose width
-and height specifies the rectangle which encases the arc.
-Origin is at upper left corner of rectangle.
-This function uses "scale" to make cricles and ellipses.
-\end{verbatim}
-<<drawarc>>=
-/psDrawArc 
-        {	gsave
-                newpath
-                /sfactor 4 index 4 index div def %% scale factor
-                1 sfactor scale
-                6 5 roll		 	%%      x on top of stack
-                3 index 2 div add        	%% define x origin
-                6 5 roll			%%      y on top of stack
-                6 5 roll		 	%%      h on top of stack
-                2 div add yVal sfactor div      %% define y origin
-                5 4 roll		 	%%      w on top of stack
-                2 div                           %% define radius
-                5 3 roll		 	%%      a1 a2 on top of stack
-                1 index add
-                arcn                            %% draw clockwise arc
-		begin installGC stroke end
-		grestore }
-        def
-
-@
-\subsection{drawcolor}
-\begin{verbatim}
-operand stack configuration in order to use psDrawColor:
-	psDraw
-	vlist[0].y
-	vlist[0].x
-	n
-	...
-	vlist[n].y
-	vlist[n].x
-	graphics-context dictionary
-to draw lines connecting points in vlist[0] to vlist[n]
-\end{verbatim}
-<<drawcolor>>=
-/psDrawColor
-        {	gsave
-                newpath
-                yVal moveto		%% set currentpoint
-                1 sub {			%% loop to draw lines.
-                        yVal lineto
-                } repeat
-		stroke %% draw in foreground color
-                grestore }
-        def
-
-@
-\subsection{drawIstr}
-\begin{verbatim}
-operand stack configuration in order to use psDrawIStr:
-	psDrawIStr
-	window type: title or window
-	string
-	y
-	x
-	graphics-context dictionary
-it draws a text string in foreground color on top of bounding box of
-string, which is in background color.
-\end{verbatim}
-<<drawIstr>>=
-/psDrawIStr
-        {	gsave
-		newpath					%% for rectangle
-                loadFont
-
-		/window exch def			%% get window type
-
-                %% draw bounding box with background color
-                /str exch def				%% get text string
-                str stringwidth pop 1 sub               %% width
-                FontHeight 1 sub                        %% height
-                currentfont begin			%% get font height
-                        FontBBox
-                end
-                /ypos exch def pop			%% define ypos
-                neg ypos add /offset exch def pop
-                /offset ypos offset div FontHeight mul def %% define offset
-                /h exch def /w exch def			%% define h
-                /y0 exch def				%% define y0
-                /x0 exch def				%% define x0
-                w h x0 y0 offset sub
-		window (title) eq
-		{hVal moveto drawRect}		       %% draws in title window
-		{rectangle} ifelse		       %% draws in view window
-		begin
-                BGcolor setgray fill	%% set background box color
-
-		x0 y0
-		window (title) eq 
-                {hVal}					%% print title text
-                {yVal} ifelse				%% print window text
-		moveto str 
-                FGcolor setgray show			%% set text color
-		end
-                grestore }
-        def
-
-@
-\subsection{drawline}
-\begin{verbatim}
-operand stack configuration in order to use psDrawLine:
-	psDrawLine
-	y0
-	x0
-	y1
-	x1
-	graphics-context dictionary
-this draws a line from (x0, y0) to (x1, y1).
-\end{verbatim}
-<<drawline>>=
-/psDrawLine
-        {	gsave
-                newpath
-                yVal moveto
-                yVal lineto
-		begin installGC stroke end
-		grestore }
-        def
-
-@
-\subsection{drawlines}
-\begin{verbatim}
-operand stack configuration in order to use psDrawLines:
-	psDrawLines
-	points[0].y
-	points[0].x
-	n
-	...
-	points[n].y
-	points[n].x
-	graphics-context dictionary
-this draws lines connecting all the points.
-\end{verbatim}
-<<drawlines>>=
-/psDrawLines
-        {	gsave
-                newpath
-                yVal moveto
-                1 sub {
-                        yVal lineto
-                } repeat
-		begin installGC stroke end
-		grestore }
-        def
-
-@
-\subsection{drawpoint}
-\begin{verbatim}
-operand stack configuration in order to use psDrawPoint:
-	psDrawPoint
-	y0
-	x0
-	graphics-context dictionary
-this draws a point at (x0, y0).
-\end{verbatim}
-<<drawpoint>>=
-/psDrawPoint
-        {	gsave
-                newpath
-                yVal moveto
-                yVal lineto
-		begin installGC stroke end       %%fills with foreground color
-		grestore }
-        def
-
-@
-\subsection{draw}
-\begin{verbatim}
-operand stack configuration in order to use psDraw:
-	psDraw
-	vlist[0].y
-	vlist[0].x
-	n
-	...
-	vlist[n].y
-	vlist[n].x
-	graphics-context dictionary
-to draw lines connecting points in vlist[0] to vlist[n]
-\end{verbatim}
-<<draw>>=
-/psDraw
-        {	gsave
-                newpath
-                yVal moveto		%% set currentpoint
-                1 sub {			%% loop to draw lines.
-                        yVal lineto
-                } repeat
-		begin installGC stroke end  %% draw in foreground color
-                grestore }
-        def
-
-@
-\subsection{drawrect}
-\begin{verbatim}
-operand stack configuration in order to use psDrawRect:
-	psDrawRect
-	y
-	x
-	height
-	width
-	graphics-context dictionary
-this draws an outline of a rectangle whose origin is at (x,y) and is width
-+ 1 wide and height + 1 tall.
-\end{verbatim}
-<<drawrect>>=
-/psDrawRect
-        {	gsave
-                newpath
-                rectangle
-		begin installGC stroke end
-		grestore }
-        def
-
-@
-\subsection{drawstr}
-\begin{verbatim}
-operand stack configuration in order to use psDrawStr:
-	psDrawStr
-	y
-	x
-	string
-	graphics-context dictionary
-this function draws a text string at (x,y).
-\end{verbatim}
-<<drawstr>>=
-/psDrawStr
-        {	gsave
-		newpath
-                loadFont
-                yVal moveto
-		exch begin installGC show end
-                grestore }
-        def
-
-@
-\subsection{drwfilled}
-\begin{verbatim}
-operand stack configuration in order to use psDrawFilled:
-	psDrawFilled
-	vlist[0].y
-	vlist[0].x
-	n
-	...
-	vlist[n].y
-	vlist[n].x
-	graphics-context dictionary
-this draws lines connecting all the points and fills the
-region with background color (default: 1, or white).
-\end{verbatim}
-<<drwfilled>>=
-/psDrawFilled
-        {	gsave
-                newpath
-                yVal moveto
-                1 sub {
-                        yVal lineto
-                } repeat
-		begin installGC fill end	%% fills with foreground color
-                grestore }
-        def
-
-@
-\subsection{end}
-\begin{verbatim}
-\end{verbatim}
-<<end>>=
-
-   cleartomark					%% clearing operand stack
-
-end		%% pops mainDict from dictionary stack
-
-showpage
-
-%-------------------------- end --------------------------%
-@
-\subsection{fillarc}
-\begin{verbatim}
-operand stack configuration in order to use psFillArc:
-	psFillArc
-	y center of rectangle
-	x center of rectangle
-	angle2
-	angle1
-	width
-	height
-	y
-	x
-	graphics-context dictionary
-this draws and fills an arc whose origin is at x, y, and whose width
-and height specifies the rectangle which encases the arc.
-Origin is at upper left corner of rectangle.
-This function uses "scale" to make cricles and ellipses.
-\end{verbatim}
-<<fillarc>>=
-/psFillArc
-        {	gsave
-		yVal moveto
-                newpath
-                /sfactor 4 index 4 index div def
-                1 sfactor scale
-                6 5 roll			%%	 x on top of stack
-                3 index 2 div add               %% define x origin
-                6 5 roll			%%	 y on top of stack
-                6 5 roll			%%	 h on top of stack
-                2 div add yVal sfactor div      %% define y origin
-                5 4 roll			%%	 w on top of stack
-                2 div                           %% define radius
-                5 3 roll			%%	 a1 a2 now on top
-                1 index add
-                arc                             %% draw clockwise arc
-                begin installGC fill end	%% fills with foreground color
-                grestore }
-        def
-
-@
-\subsection{fillpoly}
-\begin{verbatim}
-operand stack configuration in order to use psDrawFilled:
-	psFillPoly
-	XPoint[0].y
-	XPoint[0].x
-	n
-	...
-	XPoint[n].y
-	XPoint[n].x
-	graphics-context dictionary
-this draws a polygon by connecting all the points and fills the
-region with foreground color
-\end{verbatim}
-<<fillpoly>>=
-/psFillPoly
-        {	gsave
-                newpath
-                yVal moveto
-                1 sub {
-                        yVal lineto
-                } repeat
-		closepath
-		begin installGC fill end	%% fills with foreground color
-                grestore }
-        def
-
-@
-\subsection{fillwol}
-\begin{verbatim}
-operand stack configuration in order to use psDrawFilled:
-	psFillwOL
-	XPoint[0].y
-	XPoint[0].x
-	n
-	...
-	XPoint[n].y
-	XPoint[n].x
-	graphics-context dictionary
-this draws lines connecting all the points and fills the
-region with background color (default: 1, or white).
-\end{verbatim}
-<<fillwol>>=
-/psFillwOutline
-        {	gsave
-                newpath
-                yVal moveto
-                1 sub {
-                        yVal lineto
-                } repeat
-		closepath
-		begin installGC
-			gsave fill grestore	%% fills with foreground color
-		0 setgray stroke grestore end }	%% outline it with black
-        def
-
-@
-\subsection{header}
-\begin{verbatim}
-\end{verbatim}
-<<header>>=
-%!PS-Adobe-2.0
-%%DocumentFonts: Times-Roman
-%%Creator: AXIOM
-%%CreationDate: today
-%%Pages: 1
-%%processing (hard) limit: 250 pts or 500 values for the operand stack.
-%%EndComments
-
-%------------------------------- prologue -------------------------------%
-%-------------------------- support procedures --------------------------%
-
-%--------- first create user dictionary with 100 entries max ------------%
-%          (number can be changed to accomodate definitions)             %
-
-100	dict	begin		%% using 100 entries in top level dictionary
-
-/FontHeight     12 def
-
-/inch
-        {       72 mul }
-        def
-
-% yVal and hVal are necessary because the Xwindow display origin
-% is at the upper left corner, while the postscript display
-% origin is at the lower left hand corner.
-
-/yVal		%% get Y value -- make upper left corner origin
-        {       maxY exch sub  }	%% maxY is viewWindow height
-        def
-
-/hVal		%% get H value -- used for displaying title text
-        {       maxH sub abs }	%% maxH is viewWindow height+titleWindow height
-        def
-
-% loads in the font
-
-/loadFont
-        {       /Times-Roman findfont FontHeight scalefont setfont }
-        def
-
-% draws a rectangle with input operand: 
-%		height
-%		width
-% notice that this function does not "draw" or ink the rectangle.
-/drawRect
-	{	1 index 1 add 0 rlineto		%% draw first side
-                0 exch 1 add neg rlineto	%% draw second side
-                1 add neg 0 rlineto		%% draw third side
-                closepath }			%% draw fourth side
-        def
-
-% create a rectangle with input operand in the view window: 
-%		y
-%		x
-%		height
-%		width
-% notice that this function does not "draw" or ink the rectangle.
-/rectangle
-        {       yVal moveto			%% set currentpoint for line
-		drawRect }			%% draws the rectangle
-        def
-
-% These are global variables that every draw procedure uses
-% THe operand should be as follows:
-%		viewWindow width
-%		viewWindow height
-%		title height
-/setDim
-        {       /maxX exch def			%% width of display
-                /maxY exch def			%% height of display
-		/titleH exch def		%% height of title
-		/maxH maxY titleH add def	%% height of display + title
-        } def
-
-%-------------------------- major procedures --------------------------%
-
-/title		%% draws a rectangle around the title of picture
-	{	gsave
-		newpath
-		moveto				%% lower left of title
-                titleH 1 add 0 exch rlineto	%% draw first side
-                1 add 0 rlineto			%% draw second side
-                1 add neg 0 exch rlineto
-		begin installGC stroke end	%% draw third side
-		grestore }
-	def
-
-/drawFrame      %% draw display frame
-        {	gsave
-                newpath
-                maxX maxY 0 0 rectangle
-		begin installGC stroke end
-                grestore }
-        def
-
-% updates the foreground color of existing graphics-context dictionary:
-%		foreground color
-%		dictionary name
-/setForeground
-	{	/FGcolor exch put }
-	def
-
-% updates the background color of existing graphics-context dictionary:
-%		background color
-%		dictionary name
-/setBackground
-	{	/BGcolor exch put }
-	def
-
-% updates the line width, line style, cap style, join style of
-% existing graphics-context dictionary:
-%		dictionary name
-%		join style
-%		cap style
-%		line width
-/setLineAttributes
-	{	begin
-		/JoinStyle exch def
-		/CapStyle  exch def
-		/LineWidth exch def
-		end }
-	def
-
-% creates a graphics context dictionary with the following information:
-%		/dictionary name
-%		foreground color
-%		background color
-%		line width
-%		cap style
-%		join style
-% this creates different graphical contexts for different drawing functions.
-/makeDict
-	{	5 dict 2 copy def begin	pop %% with dict name on top of stack
-		/FGcolor   exch def	%% define drawing attributes
-		/BGcolor   exch def	%% not heavily used
-		/LineWidth exch def
-		/CapStyle  exch def
-		/JoinStyle exch def
-		end }
-	def
-
-% makes the current dictionary attributes effective
-% this function takes the values in the current dictionary to set the context
-% these are the values currently being used: foreground, cap, join, and width
-/installGC
-	{
-		FGcolor currentgray ne
-		{FGcolor setgray} if		%% foreground color
-		CapStyle currentlinecap ne
-		{CapStyle setlinecap} if	%% cap style
-		JoinStyle currentlinejoin ne
-		{JoinStyle setlinejoin} if	%% join style
-		LineWidth currentlinewidth ne
-		{LineWidth setlinewidth} if }	%% line width
-	def
-
-@
-\subsection{setup}
-\begin{verbatim}
-\end{verbatim}
-<<setup>>=
-%-------------------------- script --------------------------%
-
-% 1 inch 1 inch translate
-
-   mark					%% mark bottom of our stack
-
-@
-<<*>>=
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/gdraws/yesorno.c.pamphlet b/src/graph/gdraws/yesorno.c.pamphlet
deleted file mode 100644
index 693428d..0000000
--- a/src/graph/gdraws/yesorno.c.pamphlet
+++ /dev/null
@@ -1,67 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph yesorno.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    - Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    - Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-
-    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-/*
- * Decides if mouse click was in yes or no region; used by program to test
- * out Gdraw functions in this directory.
- */
-
-#include "gdraws0.h"
-
-int
-Gdraws_pressed_yes(int win_width, int win_height, int x, int y)
-{
-    return (x < win_width / 2) ? yes : no;
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}

\start
Date: Sun, 8 Jun 2008 07:53:27 -0500
From: Tim Daly
To: list
Subject: 20080608.03.tpd.patch (remove src/graph, use bookvol8)

The src/graph directory no longer exists.
The whole graphics subsystem is now in book volume 8.

=========================================================================
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index ecef4e1..c42ff93 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -1156,50 +1156,50 @@ x*x
 \section{all-2d.h1}
 <<include/all-2d.h1>>=
 /* declarations in view2d */
-#include "buttons2d.h1"
-#include "control2d.h1"
-#include "graph2d.h1"
-#include "main2d.h1"
-#include "pot2d.h1"
-#include "process2d.h1"
-#include "spadaction2d.h1"
-#include "stuff2d.h1"
-#include "viewport2d.h1"
-#include "write2d.h1"
+<<include/buttons2d.h1>>
+<<include/control2d.h1>>
+<<include/graph2d.h1>>
+<<include/main2d.h1>>
+<<include/pot2d.h1>>
+<<include/process2d.h1>>
+<<include/spadaction2d.h1>>
+<<include/stuff2d.h1>>
+<<include/viewport2d.h1>>
+<<include/write2d.h1>>
 @
 \section{all-3d.h1}
 <<include/all-3d.h1>>=
-#include "stuff3d.h1"
-#include "buttons3d.h1"
-#include "write3d.h1"
-#include "volume3d.h1"
-#include "control3d.h1"
-#include "transform3d.h1"
-#include "closeview3d.h1"
-#include "illuminate3d.h1"
-#include "msort3d.h1"
-#include "surface3d.h1"
-#include "mesh3d.h1"
-#include "project3d.h1"
-#include "lighting3d.h1"
-#include "lightbut3d.h1"
-#include "spadaction3d.h1"
-#include "viewport3d.h1"
-#include "pot3d.h1"
-#include "process3d.h1"
-#include "quitbut3d.h1"
-#include "quit3d.h1"
-#include "component3d.h1"
-#include "smoothshade3d.h1"
-#include "savebut3d.h1"
-#include "save3d.h1"
-#include "main3d.h1"
+<<include/stuff3d.h1>>
+<<include/buttons3d.h1>>
+<<include/write3d.h1>>
+<<include/volume3d.h1>>
+<<include/control3d.h1>>
+<<include/transform3d.h1>>
+<<include/closeview3d.h1>>
+<<include/illuminate3d.h1>>
+<<include/msort3d.h1>>
+<<include/surface3d.h1>>
+<<include/mesh3d.h1>>
+<<include/project3d.h1>>
+<<include/lighting3d.h1>>
+<<include/lightbut3d.h1>>
+<<include/spadaction3d.h1>>
+<<include/viewport3d.h1>>
+<<include/pot3d.h1>>
+<<include/process3d.h1>>
+<<include/quitbut3d.h1>>
+<<include/quit3d.h1>>
+<<include/component3d.h1>>
+<<include/smoothshade3d.h1>>
+<<include/savebut3d.h1>>
+<<include/save3d.h1>>
+<<include/main3d.h1>>
 @
 \section{all-alone.h1}
 <<include/all-alone.h1>>=
-#include "spoon2d.h1"
-#include "spooncomp.h1"
-#include "viewalone.h1"
+<<include/spoon2d.h1>>
+<<include/spooncomp.h1>>
+<<include/viewalone.h1>>
 @
 \section{buttons2d.h1}
 <<include/buttons2d.h1>>=
@@ -1222,6 +1222,8 @@ extern void goodbye(int sig);
 extern void closeViewport(void);
 @
 \section{colors.h}
+This include file appears not to be used. 
+However, the moColor macro IS used but not included.
 <<include/colors.h>>=
 /*
   colors.h
@@ -2668,12 +2670,12 @@ static char volumeMask_bits[] = {
 #include <sys/wait.h>
 
 <<viewman/viewman.h>>
-#include "actions.h"
+<<include/actions.h>>
 
 #include "util.h1"
-#include "cleanup.h1"
-#include "makegraph.h1"
-#include "readview.h1"
+<<include/cleanup.h1>>
+<<include/makegraph.h1>>
+<<include/readview.h1>>
 
 void
 brokenPipe(int sig)
@@ -2841,13 +2843,13 @@ goodbye(int sig)
 
 
 <<viewman/viewman.h>>
-#include "actions.h"
+<<include/actions.h>>
 
 #include "util.h1"
 #include "sockio-c.h1"
-#include "fun2d.h1"
-#include "readview.h1"
-#include "make2d.h1"
+<<include/fun2d.h1>>
+<<include/readview.h1>>
+<<include/make2d.h1>>
 
 #define writeEach
 
@@ -3184,13 +3186,13 @@ sendGraphToView2D(int i,int there,viewManager *viewport,
 
 <<viewman/viewman.h>>
 <<include/mode.h>>
-#include "actions.h"
+<<include/actions.h>>
   
 #include "util.h1"
 #include "sockio-c.h1"
-#include "fun3d.h1"
-#include "make3d.h1"
-#include "readview.h1"
+<<include/fun3d.h1>>
+<<include/make3d.h1>>
+<<include/readview.h1>>
 
 void 
 funView3D(int viewCommand)
@@ -3535,7 +3537,7 @@ extern char propertyBuffer[];
 <<viewman/viewman.h>>
 
 #include "sockio-c.h1"
-#include "make2d.h1"
+<<include/make2d.h1>>
 
 void 
 makeView2DFromSpadData(view2DStruct *viewdata,graphStateStruct graphState[])
@@ -3584,7 +3586,7 @@ makeView2DFromSpadData(view2DStruct *viewdata,graphStateStruct graphState[])
 <<include/mode.h>>
 
 #include "sockio-c.h1"
-#include "make3d.h1"
+<<include/make3d.h1>>
 
 void 
 makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport)
@@ -3709,14 +3711,7 @@ OUT=	${MNT}/${SYS}/lib
 LIB=    ${OBJ}/${SYS}/lib
 DOC=    ${MNT}/${SYS}/doc/src/graph
 
-# local include files shared by graphics
-LINC=	${SRC}/graph/include
-
-# global include files shared by everyone 
-GINC=	${SRC}/include
-
-
-CFLAGS  = ${CCF} -I${LINC} -I${GINC} 
+CFLAGS  = ${CCF} -I${SRC}/include
 LDFLAGS = ${LDF} -lX11
 
 OBJS=   ${MIDOBJ}/viewman.o ${MIDOBJ}/readview.o  ${MIDOBJ}/make3d.o \
@@ -3724,10 +3719,6 @@ OBJS=   ${MIDOBJ}/viewman.o ${MIDOBJ}/readview.o  ${MIDOBJ}/make3d.o \
         ${MIDOBJ}/fun2d.o   ${MIDOBJ}/cleanup.o   ${MIDOBJ}/sselect.o \
         ${OBJ}/${SYS}/lib/sockio-c.o
 
-HEADERS= ${LINC}/component.h ${LINC}/view2d.h  \
-         ${LINC}/view3d.h      ${LINC}/tube.h      ${LINC}/actions.h \
-         ${LINC}/viewcommand.h ${GINC}/com.h
-
 all: ${OBJS} ${OUT}/viewman 
 	@ echo 30 finished viewman from bookvol8
 
@@ -3741,7 +3732,7 @@ ${MIDINT}/viewman.c: ${BOOK}
 	@( cd ${MIDINT} ; \
 	${TANGLE} -R"viewman/viewman.c" ${BOOK} >viewman.c )
 
-${MIDOBJ}/viewman.o: ${HEADERS} ${MIDINT}/viewman.c
+${MIDOBJ}/viewman.o: ${SRC}/include/com.h ${MIDINT}/viewman.c
 	@ echo 3 making ${MIDOBJ}/viewman.o from ${MIDINT}/viewman.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/viewman.c )
 
@@ -3750,7 +3741,7 @@ ${MIDINT}/sselect.c: ${BOOK}
 	@( cd ${MIDINT} ; \
 	${TANGLE} -R"viewman/sselect.c" ${BOOK} >sselect.c )
 
-${MIDOBJ}/sselect.o: ${HEADERS} ${MIDINT}/sselect.c
+${MIDOBJ}/sselect.o: ${SRC}/include/com.h ${MIDINT}/sselect.c
 	@ echo 6 making ${MIDOBJ}/sselect.o from ${MIDINT}/sselect.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/sselect.c )
 
@@ -3759,7 +3750,7 @@ ${MIDINT}/cleanup.c: ${BOOK}
 	@( cd ${MIDINT} ; \
 	${TANGLE} -R"viewman/cleanup.c" ${BOOK} >cleanup.c )
 
-${MIDOBJ}/cleanup.o: ${HEADERS} ${MIDINT}/cleanup.c
+${MIDOBJ}/cleanup.o: ${SRC}/include/com.h ${MIDINT}/cleanup.c
 	@ echo 9 making ${MIDOBJ}/cleanup.o from ${MIDINT}/cleanup.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/cleanup.c )
 
@@ -3768,7 +3759,7 @@ ${MIDINT}/fun2d.c: ${BOOK}
 	@( cd ${MIDINT} ; \
 	${TANGLE} -R"viewman/fun2d.c" ${BOOK} >fun2d.c )
 
-${MIDOBJ}/fun2d.o: ${HEADERS} ${MIDINT}/fun2d.c
+${MIDOBJ}/fun2d.o: ${SRC}/include/com.h ${MIDINT}/fun2d.c
 	@ echo 12 making ${MIDOBJ}/fun2d.o from ${MIDINT}/fun2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/fun2d.c )
 
@@ -3777,7 +3768,7 @@ ${MIDINT}/make2d.c: ${BOOK}
 	@( cd ${MIDINT} ; \
 	${TANGLE} -R"viewman/make2d.c" ${BOOK} >make2d.c )
 
-${MIDOBJ}/make2d.o: ${HEADERS} ${MIDINT}/make2d.c
+${MIDOBJ}/make2d.o: ${SRC}/include/com.h ${MIDINT}/make2d.c
 	@ echo 15 making ${MIDOBJ}/make2d.o from ${MIDINT}/make2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/make2d.c )
 
@@ -3786,7 +3777,7 @@ ${MIDINT}/makegraph.c: ${BOOK}
 	@( cd ${MIDINT} ; \
 	${TANGLE} -R"viewman/makegraph.c" ${BOOK} >makegraph.c )
 
-${MIDOBJ}/makegraph.o: ${HEADERS} ${MIDINT}/makegraph.c
+${MIDOBJ}/makegraph.o: ${SRC}/include/com.h ${MIDINT}/makegraph.c
 	@ echo 18 making ${MIDOBJ}/makegraph.o from ${MIDINT}/makegraph.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/makegraph.c )
 
@@ -3795,7 +3786,7 @@ ${MIDINT}/fun3d.c: ${BOOK}
 	@( cd ${MIDINT} ; \
 	${TANGLE} -R"viewman/fun3d.c" ${BOOK} >fun3d.c )
 
-${MIDOBJ}/fun3d.o: ${HEADERS} ${MIDINT}/fun3d.c
+${MIDOBJ}/fun3d.o: ${SRC}/include/com.h ${MIDINT}/fun3d.c
 	@ echo 21 making ${MIDOBJ}/fun3d.o from ${MIDINT}/fun3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/fun3d.c )
 
@@ -3804,7 +3795,7 @@ ${MIDINT}/make3d.c: ${BOOK}
 	@( cd ${MIDINT} ; \
 	${TANGLE} -R"viewman/make3d.c" ${BOOK} >make3d.c )
 
-${MIDOBJ}/make3d.o: ${HEADERS} ${MIDINT}/make3d.c
+${MIDOBJ}/make3d.o: ${SRC}/include/com.h ${MIDINT}/make3d.c
 	@ echo 24 making ${MIDOBJ}/make3d.o from ${MIDINT}/make3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/make3d.c )
 
@@ -3813,7 +3804,7 @@ ${MIDINT}/readview.c: ${BOOK}
 	@( cd ${MIDINT} ; \
 	${TANGLE} -R"viewman/readview.c" ${BOOK} >readview.c )
 
-${MIDOBJ}/readview.o: ${HEADERS} ${MIDINT}/readview.c
+${MIDOBJ}/readview.o: ${SRC}/include/com.h ${MIDINT}/readview.c
 	@ echo 27 making ${MIDOBJ}/readview.o from ${MIDINT}/readview.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/readview.c )
 
@@ -3828,7 +3819,7 @@ ${MIDOBJ}/readview.o: ${HEADERS} ${MIDINT}/readview.c
 <<viewman/viewman.h>>
 
 #include "sockio-c.h1"
-#include "makegraph.h1"
+<<include/makegraph.h1>>
 
 graphStruct *
 makeGraphFromSpadData(void)
@@ -3931,7 +3922,7 @@ discardGraph (graphStruct *theGraph)
 
 <<viewman/viewman.h>>
 
-#include "cleanup.h1"
+<<include/cleanup.h1>>
 
 int 
 readViewport (viewManager *viewPort,void *info,int size)
@@ -3961,8 +3952,8 @@ again:
 
 #include "sockio-c.h1"
 #include "bsdsignal.h1"
-#include "cleanup.h1"
-#include "sselect.h1"
+<<include/cleanup.h1>>
+<<include/sselect.h1>>
 
 /*******************************************
  * int superSelect(n, rd, wr, ex, timeout) *
@@ -4026,7 +4017,7 @@ superSelect(int n, int *rd, int *wr, int *ex, char *timeout)
 
 <<viewman/viewman.h>>
 <<include/mode.h>>
-#include "actions.h"
+<<include/actions.h>>
 <<include/viewcommand.h>>
 #include "bsdsignal.h"
 
@@ -4034,12 +4025,12 @@ superSelect(int n, int *rd, int *wr, int *ex, char *timeout)
 #include "bsdsignal.h1"
 #include "util.h1"
 #include "sockio-c.h1"
-#include "fun2d.h1"
-#include "fun3d.h1"
-#include "makegraph.h1"
-#include "readview.h1"
-#include "cleanup.h1"
-#include "sselect.h1"
+<<include/fun2d.h1>>
+<<include/fun3d.h1>>
+<<include/makegraph.h1>>
+<<include/readview.h1>>
+<<include/cleanup.h1>>
+<<include/sselect.h1>>
 
 /************* global variables **************/
 
@@ -4229,8 +4220,8 @@ main (void)
 @
 \subsection{viewman.h}
 <<viewman/viewman.h>>=
-#include "view2d.h"
-#include "view3d.h"
+<<include/view2d.h>>
+<<include/view3d.h>>
 
       /* Viewport Commands */
 #define makeViewport -1
@@ -4261,54 +4252,35 @@ MIDOBJ=	${OBJ}/${SYS}/graph/viewalone
 OUT=	${MNT}/${SYS}/bin
 TESTFILE=${MNT}/${SYS}/graph/parabola.view
 
-# local include files shared by graphics
-LINC=	${SRC}/graph/include
-
-# global include files shared by everyone
-GINC=	${SRC}/include
-
-CFLAGS = ${CCF} -I${LINC} -I${GINC} 
+CFLAGS = ${CCF} -I${SRC}/include
 LDFLAGS= ${LDF}
 
 OBJS=  ${MIDOBJ}/viewalone.o ${MIDOBJ}/spooncomp.o ${MIDOBJ}/spoon2d.o 
 
-HEADERS= ${LINC}/component.h ${LINC}/view2d.h  \
-         ${LINC}/view3d.h      ${LINC}/tube.h      ${LINC}/actions.h \
-         ${LINC}/viewcommand.h 
+all: ${OUT}/viewalone ${TESTFILE}
+	@echo 12 finished viewalone from ${BOOK}
 
-all: ${OBJS} ${OUT}/viewalone ${TESTFILE}
-	@echo 12 finished ${IN}
-
-${OUT}/viewalone: $(OBJS)  ${OBJ}/${SYS}/lib/util.o
+${OUT}/viewalone: ${OBJS} ${OBJ}/${SYS}/lib/util.o
 	@ echo 1 linking viewalone
 	@ ${CC} $(OBJS) ${OBJ}/${SYS}/lib/util.o \
                -o ${OUT}/viewalone ${LDFLAGS} -lX11
 
-${MIDINT}/viewalone.c: ${BOOK} 
-	@ echo 2 making ${MIDINT}/viewalone.c from ${BOOK} 
+${MIDOBJ}/viewalone.o: ${BOOK}
+	@ echo 3 making ${MIDOBJ}/viewalone.o from ${BOOK}
 	@ ( cd ${MIDINT} ; \
-	${TANGLE} -R"viewalone/viewalone.c" ${BOOK} >viewalone.c )
-
-${MIDOBJ}/viewalone.o: ${HEADERS} ${MIDINT}/viewalone.c
-	@ echo 3 making ${MIDOBJ}/viewalone.o from ${MIDINT}/viewalone.c
+	   ${TANGLE} -R"viewalone/viewalone.c" ${BOOK} >viewalone.c )
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewalone.c )
 
-${MIDINT}/spooncomp.c: ${BOOK} 
-	@ echo 5 making ${MIDINT}/spooncomp.c from ${BOOK} 
+${MIDOBJ}/spooncomp.o: ${BOOK}
+	@ echo 6 making ${MIDOBJ}/spooncomp.o from ${BOOK}
 	@ ( cd ${MIDINT} ; \
-	${TANGLE} -R"viewalone/spooncomp.c" ${BOOK} >spooncomp.c )
-
-${MIDOBJ}/spooncomp.o: ${HEADERS} ${MIDINT}/spooncomp.c
-	@ echo 6 making ${MIDOBJ}/spooncomp.o from ${MIDINT}/spooncomp.c
+	   ${TANGLE} -R"viewalone/spooncomp.c" ${BOOK} >spooncomp.c )
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spooncomp.c )
 
-${MIDINT}/spoon2d.c: ${BOOK} 
-	@ echo 8 making ${MIDINT}/spoon2d.c from ${BOOK} 
+${MIDOBJ}/spoon2d.o: ${BOOK}
+	@ echo 9 making ${MIDOBJ}/spoon2d.o from ${BOOK}
 	@ ( cd ${MIDINT} ; \
-	${TANGLE} -R"viewalone/spoon2d.c" ${BOOK} >spoon2d.c )
-
-${MIDOBJ}/spoon2d.o: ${HEADERS} ${MIDINT}/spoon2d.c
-	@ echo 9 making ${MIDOBJ}/spoon2d.o from ${MIDINT}/spoon2d.c
+	     ${TANGLE} -R"viewalone/spoon2d.c" ${BOOK} >spoon2d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spoon2d.c )
 
 ${TESTFILE}: ${BOOK}
@@ -4331,7 +4303,7 @@ ${TESTFILE}: ${BOOK}
 
 
 #include "util.h1"
-#include "all-alone.h1"
+<<include/all-alone.h1>>
 
 /* #define huhDEBUG */
 
@@ -4659,7 +4631,7 @@ makeView2DFromFileData(view2DStruct *doView2D)
 <<include/mode.h>>
 
 #include "util.h1"
-#include "all-alone.h1"
+<<include/all-alone.h1>>
 
 
 
@@ -4893,7 +4865,7 @@ makeView3DFromFileData(int type)
 #include <stdlib.h>
 <<viewalone/viewalone.h>>
 
-#include "all-alone.h1"
+<<include/all-alone.h1>>
 
 /************* global variables **************/
 
@@ -4970,9 +4942,9 @@ int main (int argc,char *argv[])
 \section{viewalone.h}
 <<viewalone/viewalone.h>>=
 #include <stdio.h>
-#include "view3d.h"
-#include "view2d.h"
-#include "actions.h"
+<<include/view3d.h>>
+<<include/view2d.h>>
+<<include/actions.h>>
 <<include/viewcommand.h>>
 
       /* Viewport Commands */
@@ -5011,8 +4983,7 @@ extern char pathname[256];
 #include <string.h>
 
 <<view2d/header2.h>>
-#include "buttons2d.h1"
-#include "all-2d.h1"
+<<include/all-2d.h1>>
 
 
 
@@ -5697,9 +5668,8 @@ initButtons (buttonStruct *buttons)
 #include <X11/Xutil.h>
 
 <<view2d/header2.h>>
-#include "buttons2d.h1"
-#include "all-2d.h1"
-#include "gfun.h1"
+<<include/all-2d.h1>>
+<<include/gfun.h1>>
 #include "xspadfill.h1"
 #include "util.h1"
 
@@ -6306,7 +6276,7 @@ extern Atom wm_delete_window;
 
 <<view2d/header2.h>>
 
-#include "all-2d.h1"
+<<include/all-2d.h1>>
 #include "util.h1"
 
 
@@ -6431,13 +6401,13 @@ freeGraph(int i)
 #define view2d 
 
 #include "hash.h"
-#include "nox10.h"
+<<include/nox10.h>>
 <<include/view.h>>
-#include "view2d.h"
+<<include/view2d.h>>
 <<include/actions.h>>
 <<include/viewcommand.h>>
 <<include/xdefs.h>>
-#include "override.h"
+<<include/override.h>>
 <<include/g.h>>
 
 #define carefullySetFont(gc,font) if (font != serverFont) XSetFont(dsply,gc,font->fid)
@@ -6686,8 +6656,8 @@ typedef struct _xPointStruct {
 #include "bsdsignal.h"
 <<view2d/globals2.h>>
 #include "bsdsignal.h1"
-#include "all-2d.h1"
-#include "gfun.h1"
+<<include/all-2d.h1>>
+<<include/gfun.h1>>
 #include "util.h1"
 #include "xspadfill.h1"
 
@@ -7142,15 +7112,9 @@ MIDOBJ=	${OBJ}/${SYS}/graph/view2d
 LIB=	${OBJ}/${SYS}/lib
 OUT=	${MNT}/${SYS}/lib
 
-# local include files shared by graphics
-LINC=	${SRC}/graph/include
-
-# global include files shared by everyone
-GINC=	${SRC}/include
-
 LDFLAGS = ${LDF} ${STATIC} -lX11 -lm ${LDF}
 
-CFLAGS  = ${CCF} -I${LINC} -I${GINC} 
+CFLAGS  = ${CCF} -I${SRC}/include
 
 VIEW2D_OBJS= \
  ${MIDOBJ}/buttons2d.o    ${MIDOBJ}/control2d.o ${MIDOBJ}/graph2d.o    \
@@ -7166,7 +7130,7 @@ LIBFILES=${LIB}/bsdsignal.o ${LIB}/util.o       ${LIB}/pixmap.o    \
          ${LIB}/halloc.o    ${LIB}/spadcolors.o ${LIB}/xspadfill.o \
          ${LIB}/xdither.o   ${LIB}/xshade.o 
 
-all: ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES} ${OUT}/view2d 
+all: ${GDRAW_OBJS} ${LIBFILES} ${OUT}/view2d 
 	@ echo 36 finished bookvol8 view2d
 
 ${OUT}/view2d: ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES}
@@ -7174,89 +7138,59 @@ ${OUT}/view2d: ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES}
 	@ ${CC} ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES} \
 	 -o ${OUT}/view2d $(LDFLAGS) 
 
-${MIDINT}/buttons2d.c: ${BOOK}
-	@ echo 1 making ${MIDINT}/buttons2d.c from ${BOOK}
+${MIDOBJ}/buttons2d.o: ${BOOK}
+	@ echo 2 making ${MIDOBJ}/buttons2d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view2d/buttons2d.c" ${BOOK} >buttons2d.c )
-
-${MIDOBJ}/buttons2d.o: ${MIDINT}/buttons2d.c
-	@ echo 2 making ${MIDOBJ}/buttons2d.o from ${MIDINT}/buttons2d.c
+	      ${TANGLE} -R"view2d/buttons2d.c" ${BOOK} >buttons2d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/buttons2d.c )
 
-${MIDINT}/control2d.c: ${BOOK}
-	@ echo 4 making ${MIDINT}/control2d.c from ${BOOK}
+${MIDOBJ}/control2d.o: ${BOOK}
+	@ echo 5 making ${MIDOBJ}/control2d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	   ${TANGLE} -R"view2d/control2d.c" ${BOOK} >control2d.c )
-
-${MIDOBJ}/control2d.o: ${MIDINT}/control2d.c 
-	@ echo 5 making ${MIDOBJ}/control2d.o from ${MIDINT}/control2d.c
+	      ${TANGLE} -R"view2d/control2d.c" ${BOOK} >control2d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/control2d.c )
 
-${MIDINT}/graph2d.c: ${BOOK}
-	@ echo 7 making ${MIDINT}/graph2d.c from ${BOOK}
+${MIDOBJ}/graph2d.o: ${BOOK}
+	@ echo 8 making ${MIDOBJ}/graph2d.o from ${BOOK}
 	@( cd ${MIDINT} ; ${TANGLE} -R"view2d/graph2d.c" ${BOOK} >graph2d.c )
-
-${MIDOBJ}/graph2d.o: ${MIDINT}/graph2d.c
-	@ echo 8 making ${MIDOBJ}/graph2d.o from ${MIDINT}/graph2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/graph2d.c )
 
-${MIDINT}/main2d.c: ${BOOK}
-	@ echo 10 making ${MIDINT}/main2d.c from ${BOOK}
+${MIDOBJ}/main2d.o: ${BOOK}
+	@ echo 11 making ${MIDOBJ}/main2d.o from ${BOOK}
 	@( cd ${MIDINT} ; ${TANGLE} -R"view2d/main2d.c" ${BOOK} >main2d.c )
-
-${MIDOBJ}/main2d.o: ${MIDINT}/main2d.c
-	@ echo 11 making ${MIDOBJ}/main2d.o from ${MIDINT}/main2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/main2d.c )
 
-${MIDINT}/pot2d.c: ${BOOK}
-	@ echo 13 making ${MIDINT}/pot2d.c from ${BOOK}
+${MIDOBJ}/pot2d.o: ${BOOK}
+	@ echo 14 making ${MIDOBJ}/pot2d.o from ${BOOK}
 	@( cd ${MIDINT} ; ${TANGLE} -R"view2d/pot2d.c" ${BOOK} >pot2d.c )
-
-${MIDOBJ}/pot2d.o: ${MIDINT}/pot2d.c
-	@ echo 14 making ${MIDOBJ}/pot2d.o from ${MIDINT}/pot2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/pot2d.c )
 
-${MIDINT}/process2d.c: ${BOOK}
-	@ echo 16 making ${MIDINT}/process2d.c from ${BOOK}
+${MIDOBJ}/process2d.o: ${BOOK}
+	@ echo 17 making ${MIDOBJ}/process2d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view2d/process2d.c" ${BOOK} >process2d.c )
-
-${MIDOBJ}/process2d.o: ${MIDINT}/process2d.c
-	@ echo 17 making ${MIDOBJ}/process2d.o from ${MIDINT}/process2d.c
+	      ${TANGLE} -R"view2d/process2d.c" ${BOOK} >process2d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/process2d.c )
 
-${MIDINT}/spadaction2d.c: ${BOOK}
-	@ echo 19 making ${MIDINT}/spadaction2d.c from ${BOOK}
+${MIDOBJ}/spadaction2d.o: ${BOOK}
+	@ echo 20 making ${MIDOBJ}/spadaction2d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view2d/spadaction2d.c" ${BOOK} >spadaction2d.c )
-
-${MIDOBJ}/spadaction2d.o: ${MIDINT}/spadaction2d.c
-	@ echo 20 making ${MIDOBJ}/spadaction2d.o from ${MIDINT}/spadaction2d.c
+	   ${TANGLE} -R"view2d/spadaction2d.c" ${BOOK} >spadaction2d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spadaction2d.c )
 
-${MIDINT}/stuff2d.c: ${BOOK}
-	@ echo 25 making ${MIDINT}/stuff2d.c from ${BOOK}
+${MIDOBJ}/stuff2d.o: ${BOOK}
+	@ echo 26 making ${MIDOBJ}/stuff2d.o from ${BOOK}
 	@( cd ${MIDINT} ; ${TANGLE} -R"view2d/stuff2d.c" ${BOOK} >stuff2d.c )
-
-${MIDOBJ}/stuff2d.o: ${MIDINT}/stuff2d.c
-	@ echo 26 making ${MIDOBJ}/stuff2d.o from ${MIDINT}/stuff2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/stuff2d.c )
 
-${MIDINT}/viewport2d.c: ${BOOK}
-	@ echo 28 making ${MIDINT}/viewport2d.c from ${BOOK}
+${MIDOBJ}/viewport2d.o: ${BOOK}
+	@ echo 29 making ${MIDOBJ}/viewport2d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
 	   ${TANGLE} -R"view2d/viewport2d.c" ${BOOK} >viewport2d.c )
-
-${MIDOBJ}/viewport2d.o: ${MIDINT}/viewport2d.c 
-	@ echo 29 making ${MIDOBJ}/viewport2d.o from ${MIDINT}/viewport2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewport2d.c )
 
-${MIDINT}/write2d.c: ${BOOK}
-	@ echo 31 making ${MIDINT}/write2d.c from ${IN}/write2d.c.pamphlet
+${MIDOBJ}/write2d.o: ${BOOK}
+	@ echo 32 making ${MIDOBJ}/write2d.o from ${BOOK}
 	@( cd ${MIDINT} ; ${TANGLE} -R"view2d/write2d.c" ${BOOK} >write2d.c )
-
-${MIDOBJ}/write2d.o: ${MIDINT}/write2d.c ${LINC}/write.h 
-	@ echo 32 making ${MIDOBJ}/write2d.o from ${MIDINT}/write2d.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/write2d.c )
 
 @
@@ -7266,7 +7200,7 @@ ${MIDOBJ}/write2d.o: ${MIDINT}/write2d.c ${LINC}/write.h
 
 <<view2d/header2.h>>
 
-#include "all-2d.h1"
+<<include/all-2d.h1>>
 
 mouseCoord 
 getPotValue(short eX,short eY,short xH,short yH)
@@ -7301,9 +7235,9 @@ getPotValue(short eX,short eY,short xH,short yH)
 
 <<view2d/header2.h>>
 
-#include "all-2d.h1"
+<<include/all-2d.h1>>
 #include "util.h1"
-#include "gfun.h1"
+<<include/gfun.h1>>
 #include "xspadfill.h1"
 
 
@@ -8165,7 +8099,7 @@ clickedOnGraph (int i,int bKey)
 
 <<view2d/header2.h>>
 
-#include "all-2d.h1"
+<<include/all-2d.h1>>
 #include "util.h1"
 
 
@@ -8420,8 +8354,8 @@ spadAction(void)
 
 <<view2d/header2.h>>
 
-#include "all-2d.h1"
-#include "gfun.h1"
+<<include/all-2d.h1>>
+<<include/gfun.h1>>
 #include "util.h1"
 
 
@@ -8512,8 +8446,8 @@ goodbye(int sig)
 
 <<view2d/header2.h>>
 
-#include "all-2d.h1"
-#include "gfun.h1"
+<<include/all-2d.h1>>
+<<include/gfun.h1>>
 #include "util.h1"
 #include "xspadfill.h1"
 
@@ -9163,9 +9097,9 @@ makeView2D(view2DStruct *viewdata)
 <<view2d/header2.h>>
 <<include/write.h>>
 
-#include "all-2d.h1"
+<<include/all-2d.h1>>
 #include "pixmap.h1"
-#include "gfun.h1"
+<<include/gfun.h1>>
 
 
 #define numBits (8*sizeof(int))
@@ -9328,7 +9262,7 @@ writeViewport(int thingsToWrite)
 <<view3d/header.h>>
 <<view3d/cpanel.h>>
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 #define BH	31  /* button window height */
 #define PH	80  /* potentiometer window height */
 #define XEDGE	5   /* leftmost button starts here */
@@ -9720,8 +9654,8 @@ initButtons (buttonStruct *buttons)
 <<view3d/header.h>>
 
 #include "util.h1"
-#include "gfun.h1"
-#include "all-3d.h1"
+<<include/gfun.h1>>
+<<include/all-3d.h1>>
 
 
 
@@ -9777,11 +9711,11 @@ closeViewport (void)
 <<view3d/header.h>>
 <<view3d/draw.h>>
 
-#include "gfun.h1"
+<<include/gfun.h1>>
 #include "util.h1"
 #include "xspadfill.h1"
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 #define axisLength	1.0   /* use 100.0, if data is not to be normalized */
 
@@ -12224,8 +12158,8 @@ update_contour_latitude(void)
 #include "util.h1"
 #include "xshade.h1"
 #include "xspadfill.h1"
-#include "gfun.h1"
-#include "all-3d.h1"
+<<include/gfun.h1>>
+<<include/all-3d.h1>>
 
 /* Defines the pixmap for the arrow displayed in the scale window */
 #define zoomArrowN 11
@@ -13497,11 +13431,11 @@ extern Atom wm_delete_window;
 <<include/view.h>>
 
 
-#include "view3d.h"
-#include "actions.h"
+<<include/view3d.h>>
+<<include/actions.h>>
 <<include/viewcommand.h>>
 <<include/xdefs.h>>
-#include "override.h"
+<<include/override.h>>
 <<include/g.h>>
 
 #define swap(a,b) {a^=b; b^=a; a^=b;}
@@ -13835,7 +13769,7 @@ typedef struct _controlXY {
 <<view3d/header.h>>
 <<view3d/draw.h>>
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 /***********************
  * void phong(pt,N)    *
@@ -13989,7 +13923,7 @@ hlsTOrgb(float h,float l,float s)
 <<view3d/header.h>>
 <<view3d/cpanel.h>>
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 /*****************************************************
  * int initLightButtons (lightButtons)               *
  *                                                   *
@@ -14113,9 +14047,9 @@ initLightButtons (buttonStruct *lightButtons)
 <<view3d/cpanel.h>>
 <<view3d/volume.h>>
 
-#include "gfun.h1"
+<<include/gfun.h1>>
 #include "xspadfill.h1"
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 #define lightMASK ExposureMask
 #define lightCursorForeground lightingTitleColor
@@ -14670,10 +14604,10 @@ drawLightingPanel(void)
 
 #include "bsdsignal.h1"
 #include "util.h1"
-#include "gfun.h1"
+<<include/gfun.h1>>
 #include "xspadfill.h1"
 #include "xshade.h1"
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
                                  /**********************/
                                  /** global variables **/
@@ -15267,14 +15201,7 @@ DOC=    ${MNT}/${SYS}/doc/src/graph
 LIB=    ${OBJ}/${SYS}/lib
 GDRAW=  ${OBJ}/${SYS}/graph/gdraws
 
-# local include files shared by graphics
-LINC=	${SRC}/graph/include
-
-# global include files shared by everyone 
-GINC=	${SRC}/include
-
-
-CFLAGS  = ${CCF} -I${LINC} -I${GINC} 
+CFLAGS  = ${CCF} -I${SRC}/include
 LDFLAGS =  ${LDF} ${STATIC} -lX11 -lm 
 
 OBJS = \
@@ -15290,246 +15217,167 @@ OBJS = \
 
 GDRAW_OBJS  = ${GDRAW}/gfun.o ${OBJ}/${SYS}/lib/hash.o
 
-all: ${OBJS} ${GDRAW_OBJS} ${OUT}/view3d ${DOCFILES}
-	@echo 78 finished bookvol8 view3d
+all: ${OUT}/view3d 
+	@echo 78 finished view3d from bookvol8
+
+${OUT}/view3d: ${OBJS} ${GDRAW_OBJS} ${LIB}/bsdsignal.o ${LIB}/util.o \
+               ${LIB}/xshade.o ${LIB}/halloc.o ${LIB}/pixmap.o \
+               ${LIB}/spadcolors.o ${LIB}/xspadfill.o ${LIB}/xdither.o 
+	@ echo 76 linking ${OUT}/view3d $(LDFLAGS)
+	@ ${CC} ${OBJS} ${GDRAW_OBJS} ${LIB}/bsdsignal.o \
+	${LIB}/util.o  ${LIB}/xshade.o ${LIB}/halloc.o \
+	${LIB}/pixmap.o ${LIB}/spadcolors.o ${LIB}/xspadfill.o \
+	${LIB}/xdither.o -o ${OUT}/view3d $(LDFLAGS) -lXpm
 
-${MIDINT}/buttons3d.c: ${BOOK}
-	@ echo 1 ${MIDINT}/buttons3d.c from ${BOOK}
+${MIDOBJ}/buttons3d.o: ${BOOK}
+	@ echo 2 making ${MIDOBJ}/buttons3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/buttons3d.c" ${BOOK} >buttons3d.c )
-	
-${MIDOBJ}/buttons3d.o: ${MIDINT}/buttons3d.c
-	@ echo 2 making ${MIDOBJ}/buttons3d.o from ${MIDINT}/buttons3d.c
-	 ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/buttons3d.c )
+	      ${TANGLE} -R"view3d/buttons3d.c" ${BOOK} >buttons3d.c )
+	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/buttons3d.c )
 
-${MIDINT}/closeview3d.c: ${BOOK}
-	@ echo 4 ${MIDINT}/closeview3d.c from ${BOOK}
+${MIDOBJ}/closeview3d.o: ${BOOK}
+	@ echo 5 making ${MIDOBJ}/closeview3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/closeview3d.c" ${BOOK} >closeview3d.c )
-	
-${MIDOBJ}/closeview3d.o: ${MIDINT}/closeview3d.c
-	@ echo 5 making ${MIDOBJ}/closeview3d.o from ${MIDINT}/closeview3d.c
+	    ${TANGLE} -R"view3d/closeview3d.c" ${BOOK} >closeview3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/closeview3d.c )
 
-${MIDINT}/component3d.c: ${BOOK}
-	@ echo 7 ${MIDINT}/component3d.c from ${BOOK}
+${MIDOBJ}/component3d.o: ${BOOK}
+	@ echo 8 making ${MIDOBJ}/component3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/component3d.c" ${BOOK} >component3d.c )
-	
-${MIDOBJ}/component3d.o:  ${MIDINT}/component3d.c
-	@ echo 8 making ${MIDOBJ}/component3d.o from ${MIDINT}/component3d.c
+	    ${TANGLE} -R"view3d/component3d.c" ${BOOK} >component3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/component3d.c )
 
-${MIDINT}/control3d.c: ${BOOK}
-	@ echo 10 ${MIDINT}/control3d.c from ${BOOK}
+${MIDOBJ}/control3d.o: ${BOOK}
+	@ echo 11 making ${MIDOBJ}/control3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/control3d.c" ${BOOK} >control3d.c )
-	
-${MIDOBJ}/control3d.o: ${MIDINT}/control3d.c
-	@ echo 11 making ${MIDOBJ}/control3d.o from ${MIDINT}/control3d.c
+	      ${TANGLE} -R"view3d/control3d.c" ${BOOK} >control3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/control3d.c )
 
-${MIDINT}/illuminate3d.c: ${BOOK}
-	@ echo 13 ${MIDINT}/illuminate3d.c from ${BOOK}
+${MIDOBJ}/illuminate3d.o: ${BOOK}
+	@ echo 14 making ${MIDOBJ}/illuminate3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/illuminate3d.c" ${BOOK} >illuminate3d.c )
-	
-${MIDOBJ}/illuminate3d.o:  ${MIDINT}/illuminate3d.c
-	@ echo 14 making ${MIDOBJ}/illuminate3d.o from ${MIDINT}/illuminate3d.c
+	   ${TANGLE} -R"view3d/illuminate3d.c" ${BOOK} >illuminate3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/illuminate3d.c )
 
-${MIDINT}/lightbut3d.c: ${BOOK}
-	@ echo 16 ${MIDINT}/lightbut3d.c from ${BOOK}
+${MIDOBJ}/lightbut3d.o: ${BOOK}
+	@ echo 17 making ${MIDOBJ}/lightbut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/lightbut3d.c" ${BOOK} >lightbut3d.c )
-	
-${MIDOBJ}/lightbut3d.o: ${MIDINT}/lightbut3d.c
-	@ echo 17 making ${MIDOBJ}/lightbut3d.o from ${MIDINT}/lightbut3d.c
+	     ${TANGLE} -R"view3d/lightbut3d.c" ${BOOK} >lightbut3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/lightbut3d.c )
 
-${MIDINT}/lighting3d.c: ${BOOK}
-	@ echo 19 ${MIDINT}/lighting3d.c from ${BOOK}
+${MIDOBJ}/lighting3d.o: ${BOOK}
+	@ echo 20 making ${MIDOBJ}/lighting3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/lighting3d.c" ${BOOK} >lighting3d.c )
-	
-${MIDOBJ}/lighting3d.o: ${MIDINT}/lighting3d.c
-	@ echo 20 making ${MIDOBJ}/lighting3d.o from ${MIDINT}/lighting3d.c
+	     ${TANGLE} -R"view3d/lighting3d.c" ${BOOK} >lighting3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/lighting3d.c )
 
-${MIDINT}/main3d.c: ${BOOK}
-	@ echo 22 ${MIDINT}/main3d.c from ${BOOK}
+${MIDOBJ}/main3d.o: ${BOOK}
+	@ echo 23 making ${MIDOBJ}/main3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/main3d.c" ${BOOK} >main3d.c )
-	
-${MIDOBJ}/main3d.o: ${MIDINT}/main3d.c
-	@ echo 23 making ${MIDOBJ}/main3d.o from ${MIDINT}/main3d.c
+	         ${TANGLE} -R"view3d/main3d.c" ${BOOK} >main3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/main3d.c )
 
-${MIDINT}/mesh3d.c: ${BOOK}
-	@ echo 25 ${MIDINT}/mesh3d.c from ${BOOK}
+${MIDOBJ}/mesh3d.o: ${BOOK}
+	@ echo 26 making ${MIDOBJ}/mesh3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/mesh3d.c" ${BOOK} >mesh3d.c )
-	
-${MIDOBJ}/mesh3d.o: ${MIDINT}/mesh3d.c
-	@ echo 26 making ${MIDOBJ}/mesh3d.o from ${MIDINT}/mesh3d.c
+	         ${TANGLE} -R"view3d/mesh3d.c" ${BOOK} >mesh3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/mesh3d.c )
 
-${MIDINT}/msort3d.c: ${BOOK}
-	@ echo 28 ${MIDINT}/msort3d.c from ${BOOK}
+${MIDOBJ}/msort3d.o: ${BOOK}
+	@ echo 29 making ${MIDOBJ}/msort3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/msort3d.c" ${BOOK} >msort3d.c )
-	
-${MIDOBJ}/msort3d.o: ${MIDINT}/msort3d.c
-	@ echo 29 making ${MIDOBJ}/msort3d.o from ${MIDINT}/msort3d.c
+	        ${TANGLE} -R"view3d/msort3d.c" ${BOOK} >msort3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/msort3d.c )
 
-${MIDINT}/pot3d.c: ${BOOK}
-	@ echo 31 ${MIDINT}/pot3d.c from ${BOOK}
+${MIDOBJ}/pot3d.o: ${BOOK}
+	@ echo 32 making ${MIDOBJ}/pot3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/pot3d.c" ${BOOK} >pot3d.c )
-	
-${MIDOBJ}/pot3d.o: ${MIDINT}/pot3d.c
-	@ echo 32 making ${MIDOBJ}/pot3d.o from ${MIDINT}/pot3d.c
+	          ${TANGLE} -R"view3d/pot3d.c" ${BOOK} >pot3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/pot3d.c )
 
-${MIDINT}/process3d.c: ${BOOK}
-	@ echo 34 ${MIDINT}/process3d.c from ${BOOK}
+${MIDOBJ}/process3d.o: ${BOOK}
+	@ echo 35 making ${MIDOBJ}/process3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/process3d.c" ${BOOK} >process3d.c )
-	
-${MIDOBJ}/process3d.o: ${MIDINT}/process3d.c
-	@ echo 35 making ${MIDOBJ}/process3d.o from ${MIDINT}/process3d.c
+	      ${TANGLE} -R"view3d/process3d.c" ${BOOK} >process3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/process3d.c )
 
-${MIDINT}/project3d.c: ${BOOK}
-	@ echo 37 ${MIDINT}/project3d.c from ${BOOK}
+${MIDOBJ}/project3d.o: ${BOOK}
+	@ echo 38 making ${MIDOBJ}/project3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/project3d.c" ${BOOK} >project3d.c )
-	
-${MIDOBJ}/project3d.o: ${MIDINT}/project3d.c
-	@ echo 38 making ${MIDOBJ}/project3d.o from ${MIDINT}/project3d.c
+	      ${TANGLE} -R"view3d/project3d.c" ${BOOK} >project3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/project3d.c )
 
-${MIDINT}/quitbut3d.c: ${BOOK}
-	@ echo 40 ${MIDINT}/quitbut3d.c from ${BOOK}
-	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/quitbut3d.c" ${BOOK} >quitbut3d.c )
-	
-${MIDOBJ}/quitbut3d.o: ${MIDINT}/quitbut3d.c
+${MIDOBJ}/quitbut3d.o: ${BOOK}
 	@ echo 41 making ${MIDOBJ}/quitbut3d.o from ${MIDINT}/quitbut3d.c
+	@( cd ${MIDINT} ; \
+	      ${TANGLE} -R"view3d/quitbut3d.c" ${BOOK} >quitbut3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/quitbut3d.c )
 
-${MIDINT}/quit3d.c: ${BOOK}
-	@ echo 43 ${MIDINT}/quit3d.c from ${BOOK}
+${MIDOBJ}/quit3d.o: ${BOOK}
+	@ echo 44 making ${MIDOBJ}/quit3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/quit3d.c" ${BOOK} >quit3d.c )
-	
-${MIDOBJ}/quit3d.o: ${MIDINT}/quit3d.c
-	@ echo 44 making ${MIDOBJ}/quit3d.o from ${MIDINT}/quit3d.c
+	         ${TANGLE} -R"view3d/quit3d.c" ${BOOK} >quit3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/quit3d.c )
 
-${MIDINT}/save3d.c: ${BOOK}
-	@ echo 46 ${MIDINT}/save3d.c from ${BOOK}
+${MIDOBJ}/save3d.o: ${BOOK}
+	@ echo 47 making ${MIDOBJ}/savebut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/save3d.c" ${BOOK} >save3d.c )
-	
-${MIDOBJ}/save3d.o: ${MIDINT}/save3d.c
-	@ echo 47 making ${MIDOBJ}/savebut3d.o from ${MIDINT}/savebut3d.c
+	         ${TANGLE} -R"view3d/save3d.c" ${BOOK} >save3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/save3d.c )
 
-${MIDINT}/savebut3d.c: ${BOOK}
-	@ echo 49 ${MIDINT}/savebut3d.c from ${BOOK}
+${MIDOBJ}/savebut3d.o: ${BOOK}
+	@ echo 50 making ${MIDOBJ}/savebutbut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/savebut3d.c" ${BOOK} >savebut3d.c )
-	
-${MIDOBJ}/savebut3d.o: ${MIDINT}/savebut3d.c
-	@ echo 50 making ${MIDOBJ}/savebutbut3d.o from ${MIDINT}/savebutbut3d.c
+	      ${TANGLE} -R"view3d/savebut3d.c" ${BOOK} >savebut3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/savebut3d.c )
 
-${MIDINT}/smoothshade3d.c: ${BOOK}
-	@ echo 52 ${MIDINT}/smoothshade3d.c from ${BOOK}
+${MIDOBJ}/smoothshade3d.o: ${BOOK}
+	@ echo 53 making ${MIDOBJ}/smoothShadebut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/smoothshade3d.c" ${BOOK} >smoothshade3d.c )
-	
-${MIDOBJ}/smoothshade3d.o: ${MIDINT}/smoothshade3d.c
-	@ echo 53 making ${MIDOBJ}/smoothShadebut3d.o \
-            from ${MIDINT}/smoothShadebut3d.c
+	  ${TANGLE} -R"view3d/smoothshade3d.c" ${BOOK} >smoothshade3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/smoothshade3d.c )
 
-${MIDINT}/spadaction3d.c: ${BOOK}
-	@ echo 55 ${MIDINT}/spadaction3d.c from ${BOOK}
+${MIDOBJ}/spadaction3d.o: ${BOOK}
+	@ echo 56 making ${MIDOBJ}/spadActionbut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/spadaction3d.c" ${BOOK} >spadaction3d.c )
-	
-${MIDOBJ}/spadaction3d.o: ${MIDINT}/spadaction3d.c
-	@ echo 56 making ${MIDOBJ}/spadActionbut3d.o \
-            from ${MIDINT}/spadActionbut3d.c
+	   ${TANGLE} -R"view3d/spadaction3d.c" ${BOOK} >spadaction3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/spadaction3d.c )
 
-${MIDINT}/stuff3d.c: ${BOOK}
-	@ echo 58 ${MIDINT}/stuff3d.c from ${BOOK}
+${MIDOBJ}/stuff3d.o: ${BOOK}
+	@ echo 59 making ${MIDOBJ}/stuffbut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/stuff3d.c" ${BOOK} >stuff3d.c )
-	
-${MIDOBJ}/stuff3d.o: ${MIDINT}/stuff3d.c
-	@ echo 59 making ${MIDOBJ}/stuffbut3d.o from ${MIDINT}/stuffbut3d.c
+	        ${TANGLE} -R"view3d/stuff3d.c" ${BOOK} >stuff3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/stuff3d.c )
 
-${MIDINT}/surface3d.c: ${BOOK}
-	@ echo 61 ${MIDINT}/surface3d.c from ${BOOK}
+${MIDOBJ}/surface3d.o: ${BOOK}
+	@ echo 62 making ${MIDOBJ}/surfacebut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/surface3d.c" ${BOOK} >surface3d.c )
-	
-${MIDOBJ}/surface3d.o: ${MIDINT}/surface3d.c
-	@ echo 62 making ${MIDOBJ}/surfacebut3d.o from ${MIDINT}/surfacebut3d.c
+	      ${TANGLE} -R"view3d/surface3d.c" ${BOOK} >surface3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/surface3d.c )
 
-${MIDINT}/transform3d.c: ${BOOK}
-	@ echo 64 ${MIDINT}/transform3d.c from ${BOOK}
+${MIDOBJ}/transform3d.o: ${BOOK}
+	@ echo 65 making ${MIDOBJ}/transformbut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/transform3d.c" ${BOOK} >transform3d.c )
-	
-${MIDOBJ}/transform3d.o: ${MIDINT}/transform3d.c
-	@ echo 65 making ${MIDOBJ}/transformbut3d.o \
-             from ${MIDINT}/transformbut3d.c
+	    ${TANGLE} -R"view3d/transform3d.c" ${BOOK} >transform3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/transform3d.c )
 
-${MIDINT}/viewport3d.c: ${BOOK}
-	@ echo 67 ${MIDINT}/viewport3d.c from ${BOOK}
+${MIDOBJ}/viewport3d.o: ${BOOK}
+	@ echo 68 making ${MIDOBJ}/viewportbut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/viewport3d.c" ${BOOK} >viewport3d.c )
-	
-${MIDOBJ}/viewport3d.o: ${MIDINT}/viewport3d.c
-	@ echo 68 making ${MIDOBJ}/viewportbut3d.o \
-              from ${MIDINT}/viewportbut3d.c
+	     ${TANGLE} -R"view3d/viewport3d.c" ${BOOK} >viewport3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/viewport3d.c )
 
-${MIDINT}/volume3d.c: ${BOOK}
-	@ echo 70 ${MIDINT}/volume3d.c from ${BOOK}
+${MIDOBJ}/volume3d.o: ${BOOK}
+	@ echo 71 making ${MIDOBJ}/volumebut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; \
-	${TANGLE} -R"view3d/volume3d.c" ${BOOK} >volume3d.c )
-	
-${MIDOBJ}/volume3d.o: ${MIDINT}/volume3d.c
-	@ echo 71 making ${MIDOBJ}/volumebut3d.o from ${MIDINT}/volumebut3d.c
+	       ${TANGLE} -R"view3d/volume3d.c" ${BOOK} >volume3d.c )
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/volume3d.c )
 
-${MIDINT}/write3d.c: ${BOOK}
-	@ echo 73 ${MIDINT}/write3d.c from ${BOOK}
+${MIDOBJ}/write3d.o: ${BOOK}
+	@ echo 74 making ${MIDOBJ}/writebut3d.o from ${BOOK}
 	@( cd ${MIDINT} ; ${TANGLE} -R"view3d/write3d.c" ${BOOK} >write3d.c )
-	
-${MIDOBJ}/write3d.o: ${MIDINT}/write3d.c
-	@ echo 74 making ${MIDOBJ}/writebut3d.o from ${MIDINT}/writebut3d.c
 	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/write3d.c )
 
-${OUT}/view3d: ${OBJS} ${GDRAW_OBJS} ${LIB}/bsdsignal.o ${LIB}/util.o \
-               ${LIB}/xshade.o ${LIB}/halloc.o ${LIB}/pixmap.o \
-               ${LIB}/spadcolors.o ${LIB}/xspadfill.o ${LIB}/xdither.o 
-	@ echo 76 linking ${OUT}/view3d $(LDFLAGS)
-	@ ${CC} ${OBJS} ${GDRAW_OBJS} ${LIB}/bsdsignal.o \
-	${LIB}/util.o  ${LIB}/xshade.o ${LIB}/halloc.o \
-	${LIB}/pixmap.o ${LIB}/spadcolors.o ${LIB}/xspadfill.o \
-	${LIB}/xdither.o -o ${OUT}/view3d $(LDFLAGS) -lXpm
-
 @
 \section{mesh3d.c}
 <<view3d/mesh3d.c>>=
@@ -15537,7 +15385,7 @@ ${OUT}/view3d: ${OBJS} ${GDRAW_OBJS} ${LIB}/bsdsignal.o ${LIB}/util.o \
 #include <math.h>
 
 <<view3d/header.h>>
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 /***************************************************************************
  *** void getMeshNormal(x0,y0,z0,x1,y1,z1,x2,y2,z2,zMin,zRange,Normal);  ***
@@ -15667,7 +15515,7 @@ dotProduct(float * a,float *b,int size)
 
 <<view3d/header.h>>
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 
 #define   linkThing poly
@@ -15754,7 +15602,7 @@ msort(linkThing *p,int min,int max,int (*compare)(linkThing *, linkThing *))
 #define _POT3D_C
 
 <<view3d/header.h>>
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 /****************************/
 /***  void getPotValue()  ***/
@@ -15825,11 +15673,11 @@ getLinearPotValue(short eX,short eY,short xH,short yH)
 
 
 #include "util.h1"
-#include "gfun.h1"
+<<include/gfun.h1>>
 #include "pixmap.h1"
 #include "xshade.h1"
 #include "xspadfill.h1"
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 #define inside(A,B) (((XButtonEvent *)event)->x >= A && \
 		     ((XButtonEvent *)event)->x <= B)
@@ -17384,7 +17232,7 @@ processEvents(void)
 <<view3d/draw.h>>
 <<include/mode.h>>
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 /*******************************************
  * void project(aViewTriple,someXpoints,i) *
@@ -17746,9 +17594,9 @@ projectStuff(float x,float y,float z,int *px,int *py,float *Pz)
 <<include/purty/volume.mask>>
 
 #include "util.h1"
-#include "gfun.h1"
+<<include/gfun.h1>>
 #include "xspadfill.h1"
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 #define quitMASK ExposureMask
 #define quitCursorForeground monoColor(55)
@@ -17872,7 +17720,7 @@ drawQuitPanel(void)
 <<view3d/header.h>>
 <<view3d/cpanel.h>>
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 
 
@@ -17927,9 +17775,9 @@ initQuitButtons (buttonStruct *quitButtons)
 <<include/purty/volume.bitmap>>
 <<include/purty/volume.mask>>
 
-#include "gfun.h1"
+<<include/gfun.h1>>
 #include "xspadfill.h1"
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 #define saveMASK ExposureMask
 #define saveCursorForeground monoColor(55)
@@ -18048,7 +17896,7 @@ drawSavePanel(void)
 <<view3d/header.h>>
 <<view3d/cpanel.h>>
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 int 
 initSaveButtons (buttonStruct *saveButtons)
 {
@@ -18112,13 +17960,13 @@ initSaveButtons (buttonStruct *saveButtons)
 <<view3d/header.h>>
 <<view3d/draw.h>>
 <<view3d/volume.h>>
-#include "mode.h"   /* for #define components */
+<<include/mode.h>>
 
 #include "spadcolors.h1"
-#include "gfun.h1"
+<<include/gfun.h1>>
 #include "util.h1"
 #include "xspadfill.h1"
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 #define SAFE_VALUE 892347
 
@@ -19103,7 +18951,7 @@ drawPhong(int dFlag)
 <<view3d/draw.h>>
 
 #include "util.h1"
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 int 
 readViewman (void *info,int size)
@@ -19495,11 +19343,11 @@ static float labels[basicScreen][7] = {
 
 
 
-#include "gfun.h1"
+<<include/gfun.h1>>
 /*#include "spadcolors.h"*/
 #include "util.h1"
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 /*****************************
  ***      traverse(n)      ***
  *** returns the nth point ***
@@ -19623,8 +19471,8 @@ goodbye(int sig)
 #include "xspadfill.h1"
 #include "xshade.h1"
 #include "util.h1"
-#include "gfun.h1"
-#include "all-3d.h1"
+<<include/gfun.h1>>
+<<include/all-3d.h1>>
 
 
   /**** useful defines ****/
@@ -20363,10 +20211,10 @@ equal (float x,float y)
 
 #include "bsdsignal.h1"
 #include "util.h1"
-#include "gfun.h1"
+<<include/gfun.h1>>
 #include "xspadfill.h1"
 #include "xshade.h1"
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 <<include/purty/spadbitmap.bitmap>>
 <<include/purty/spadmask.mask>>
@@ -20917,7 +20765,7 @@ main(void)
 
 <<view3d/header.h>>
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 void 
 matrixMultiply4x4(float xxA[4][4],float xxB[4][4],float array[4][4])   
@@ -21032,9 +20880,9 @@ TRANSLATE(float x,float y,float z,float xxT[4][4])
 <<include/mode.h>>
 
 #include "util.h1"
-#include "gfun.h1"
+<<include/gfun.h1>>
 #include "xspadfill.h1"
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
 #define axesOffset  5
 
@@ -21883,8 +21731,8 @@ keepDrawingViewport(void)
 
 
 #include "xspadfill.h1"
-#include "gfun.h1"
-#include "all-3d.h1"
+<<include/gfun.h1>>
+<<include/all-3d.h1>>
 
 #define eyeDistMessX (frusX(eyeWinX+27))
 #define eyeDistMessY (frusY(eyeWinY-5))
@@ -22824,9 +22672,9 @@ drawVolumePanel (void)
 
 #include "pixmap.h1"
 #include "xshade.h1"
-#include "gfun.h1"
+<<include/gfun.h1>>
 
-#include "all-3d.h1"
+<<include/all-3d.h1>>
 
   /* upper limit as to how many kinds of files could be written (numBits-1) */
 #define numBits (8*sizeof(int))
@@ -23105,8 +22953,8 @@ units on the axes.
 /* Data file to test out Gdraw functions */
 
 <<gdraws/gdraws0.h>>
-#include "../view3d/header.h"
-#include "nox10.h"
+<<view3d/header.h>>
+<<include/nox10.h>>
 
 extern GC gc, gc1;
 
@@ -23389,7 +23237,7 @@ extern	char		*envAXIOM;     /* environment variable AXIOM or DEVE */
 #include "hash.h"
 
 #include "hash.h1"
-#include "gfun.h1"
+<<include/gfun.h1>>
 
 
 /*
@@ -24691,7 +24539,7 @@ Gdraws_load_font(XFontStruct **font_info, char *fontname)
 /* main procedure to test out Gdraw functions in this directory */
 #include <stdio.h>
 <<gdraws/gdraws0.h>>
-#include "../view3d/header.h"
+<<view3d/header.h>>
 
 GC		gc, gc1;
 Display		*dsply;
@@ -24857,28 +24705,9 @@ MIDOBJ=	${OBJ}/${SYS}/graph/gdraws
 OUT=	${MNT}/${SYS}/lib
 PS=	${MNT}/${SYS}/lib/graph
 
-# local include files shared by graphics
-LINC=	${SRC}/graph/include
-
-# global include files shared by everyone
-GINC=	${SRC}/include
+CFLAGS	    = ${CCF} -I${SRC}/include -I${SRC}/hyper
 
-# include files in Hyperdoc
-HINC=	${SRC}/hyper
-
-# bitmaps for cursors
-BIT=	${SRC}/graph/include/bitmaps
-
-# a .h file stuck in a really wierd place
-DOTH=	${SRC}/graph/viewman
-
-# a .c file in the library subdirectory
-DOTC=	${SRC}/lib
-
-CFLAGS	    = ${CCF} -I${LINC} -I${GINC} -I${HINC}
-
-HEADERS = ${LINC}/g.h     ${LINC}/gfun.h1    \
-          ${GINC}/hash.h  ${GINC}/hash.h1 
+HEADERS =  ${SRC}/include/hash.h  ${SRC}/include/hash.h1 
 
 PSFiles= ${PS}/colorpoly.ps ${PS}/colorwol.ps  ${PS}/draw.ps      \
          ${PS}/drawIstr.ps  ${PS}/drawarc.ps   ${PS}/drawcolor.ps \
@@ -24890,12 +24719,9 @@ PSFiles= ${PS}/colorpoly.ps ${PS}/colorwol.ps  ${PS}/draw.ps      \
 all: ${MIDOBJ}/gfun.o ${PSFiles} 
 	@ echo 21 finished making gdraws from ${BOOK}
 
-${MIDINT}/gfun.c: ${BOOK} 
-	@ echo 1 making ${MIDINT}/gfun.c from ${BOOK} 
+${MIDOBJ}/gfun.o: ${HEADERS} ${BOOK}
+	@ echo 2 making ${MIDOBJ}/gfun.o from ${BOOK}
 	@( cd ${MIDINT} ; ${TANGLE} -R"gdraws/gfun.c" ${BOOK} >gfun.c )
-
-${MIDOBJ}/gfun.o: ${HEADERS} ${MIDINT}/gfun.c 
-	@ echo 2 making ${MIDOBJ}/gfun.o from ${MIDINT}/gfun.c
 	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/gfun.c )
 
 ${PS}/colorpoly.ps: ${BOOK} 
@@ -25634,216 +25460,66 @@ Gdraws_pressed_yes(int win_width, int win_height, int x, int y)
 }
 @
 \chapter{Makefile}
-\section{Directory overview}
-\subsection{Environment variables}
-DIRS is a list of directories with the suffix {\bf dir}.
-DOCS is the same list with {\bf dir} suffix replaced with {\bf document}.
-CLNS is the same list with {\bf dir} suffix replaced with {\bf clean}.
-
-Thus if we have a new directory {\bf foo} add it to the {\bf DIRS}
-variable as {\bf foodir}. It will automatically be added to {\bf DOCS}
-as {\bf foodocument} and {\bf CLNS} as {\bf fooclean}.
-
-These variables are used to drive the make, make document, and
-make clean processes, respectively.
-<<environment>>=
-DIRS=viewmandir gdrawsdir view2ddir view3ddir viewalonedir
-DOCS=${DIRS:dir=document} 
-CLNS=${DIRS:dir=clean} 
+<<*>>=
+BOOK=${SPD}/books/bookvol8.pamphlet
 
-@
-\subsection{The viewman directory}
-<<viewmandir>>=
-viewmandir: ${SRC}/graph/viewman/Makefile
-	@ echo 1 making ${SRC}/graph/viewman
-	@ mkdir -p ${INT}/graph/viewman
+all: viewmandir gdrawsdir view2ddir view3ddir viewalonedir
+	@ echo 24 finished ${IN}
+
+viewmandir: ${BOOK}
+	@ echo 1 making viewman from ${BOOK}
 	@ mkdir -p ${OBJ}/${SYS}/graph/viewman
 	@ mkdir -p ${OBJ}/${SYS}/lib
 	@ mkdir -p ${MNT}/${SYS}/lib
 	@ mkdir -p ${MNT}/${SYS}/doc/src/graph
-	@(cd viewman ; ${ENV} ${MAKE} )
-
-${SRC}/graph/viewman/Makefile: ${SRC}/graph/viewman/Makefile.pamphlet
-	@echo 2 making ${SRC}/graph/viewman/Makefile from ${SRC}/graph/viewman/Makefile.pamphlet
-	@( cd viewman ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-	   cp Makefile.dvi ${MNT}/${SYS}/doc/src/graph.viewman.Makefile.dvi )
-
-viewmandocument: ${SRC}/graph/viewman/Makefile
-	@echo 3 documenting ${SRC}/graph/viewman
-	@( cd viewman ; ${ENV} ${MAKE} document )
-
-viewmanclean: ${SRC}/graph/viewman/Makefile
-	@echo 4 cleaning ${SRC}/graph/viewman
-	@( cd viewman ; ${ENV} ${MAKE} clean )
-	@rm -f ${SRC}/graph/viewman/Makefile
-	@rm -f ${SRC}/graph/viewman/Makefile.dvi
-
-@
-\subsection{The gdraws directory}
-<<gdrawsdir>>=
-gdrawsdir: ${SRC}/graph/gdraws/Makefile
-	@echo 5 making ${SRC}/graph/gdraws
-	@mkdir -p ${INT}/graph/gdraws
-	@mkdir -p ${OBJ}/${SYS}/graph/gdraws
-	@mkdir -p ${MNT}/${SYS}/lib
-	@mkdir -p ${MNT}/${SYS}/lib/graph
-	@mkdir -p ${MNT}/${SYS}/doc/src/graph
-	@(cd gdraws ; ${ENV} ${MAKE} )
-
-${SRC}/graph/gdraws/Makefile: ${SRC}/graph/gdraws/Makefile.pamphlet
-	@echo 6 making ${SRC}/graph/gdraws/Makefile from ${SRC}/graph/gdraws/Makefile.pamphlet
-	@( cd gdraws ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-	   cp Makefile.dvi ${MNT}/${SYS}/doc/src/graph.gdraws.Makefile.dvi )
-
-gdrawsdocument: ${SRC}/graph/gdraws/Makefile
-	@echo 7 documenting ${SRC}/graph/gdraws
-	@( cd gdraws ; ${ENV} ${MAKE} document )
-
-gdrawsclean: ${SRC}/graph/gdraws/Makefile
-	@echo 8 cleaning ${SRC}/graph/gdraws
-	@( cd gdraws ; ${ENV} ${MAKE} clean )
-	@rm -f ${SRC}/graph/gdraws/Makefile
-	@rm -f ${SRC}/graph/gdraws/Makefile.dvi
-
-@
-\subsection{The view3d directory}
-<<view3ddir>>=
-view3ddir: ${SRC}/graph/view3d/Makefile
-	@echo 9 making ${SRC}/graph/view3d
-	@mkdir -p ${INT}/graph/view3d
-	@mkdir -p ${OBJ}/${SYS}/graph/view3d
-	@mkdir -p ${OBJ}/${SYS}/lib
-	@mkdir -p ${OBJ}/${SYS}/graph/gdraws
-	@mkdir -p ${MNT}/${SYS}/lib
-	@mkdir -p ${MNT}/${SYS}/doc/src/graph
-	@(cd view3d ; ${ENV} ${MAKE} )
-
-${SRC}/graph/view3d/Makefile: ${SRC}/graph/view3d/Makefile.pamphlet
-	@echo 10 making ${SRC}/graph/view3d/Makefile from ${SRC}/graph/view3d/Makefile.pamphlet
-	@( cd view3d ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-	   cp Makefile.dvi ${MNT}/${SYS}/doc/src/graph.view3d.Makefile.dvi )
-
-view3ddocument: ${SRC}/graph/view3d/Makefile
-	@echo 11 documenting ${SRC}/graph/view3d
-	@( cd view3d ; ${ENV} ${MAKE} document )
-
-view3dclean: ${SRC}/graph/view3d/Makefile
-	@echo 12 cleaning ${SRC}/graph/view3d
-	@( cd view3d ; ${ENV} ${MAKE} clean )
-	@rm -f ${SRC}/graph/view3d/Makefile
-	@rm -f ${SRC}/graph/view3d/Makefile.dvi
-
-@
-\subsection{The view2d directory}
-<<view2ddir>>=
-view2ddir: ${SRC}/graph/view2d/Makefile
-	@echo 13 making ${SRC}/graph/view2d
-	@mkdir -p ${INT}/graph/view2d
-	@mkdir -p ${OBJ}/${SYS}/graph/view2d
-	@mkdir -p ${OBJ}/${SYS}/lib
-	@mkdir -p ${MNT}/${SYS}/lib
-	@mkdir -p ${MNT}/${SYS}/doc/src/graph
-	@(cd view2d ; ${ENV} ${MAKE} )
-
-${SRC}/graph/view2d/Makefile: ${SRC}/graph/view2d/Makefile.pamphlet
-	@echo 14 making ${SRC}/graph/view2d/Makefile from ${SRC}/graph/view2d/Makefile.pamphlet
-	@( cd view2d ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-	   cp Makefile.dvi ${MNT}/${SYS}/doc/src/graph.view2d.Makefile.dvi )
-
-view2ddocument: ${SRC}/graph/view2d/Makefile
-	@echo 15 documenting ${SRC}/graph/view2d
-	@( cd view2d ; ${ENV} ${MAKE} document )
-
-view2dclean: ${SRC}/graph/view2d/Makefile
-	@echo 16 cleaning ${SRC}/graph/view2d
-	@( cd view2d ; ${ENV} ${MAKE} clean )
-	@rm ${SRC}/graph/view2d/Makefile
-	@rm ${SRC}/graph/view2d/Makefile.dvi
-
-@
-\subsection{The viewalone directory}
-<<viewalonedir>>=
-viewalonedir: ${SRC}/graph/viewalone/Makefile
-	@echo 17 making ${SRC}/graph/viewalone
-	@mkdir -p ${INT}/graph/viewalone
-	@mkdir -p ${OBJ}/${SYS}/graph/viewalone
-	@mkdir -p ${MNT}/${SYS}/bin
-	@mkdir -p ${MNT}/${SYS}/doc/src/graph
-	@(cd viewalone ; ${ENV} ${MAKE} )
-
-${SRC}/graph/viewalone/Makefile: ${SRC}/graph/viewalone/Makefile.pamphlet
-	@echo 18 making ${SRC}/graph/viewalone/Makefile from ${SRC}/graph/viewalone/Makefile.pamphlet
-	@( cd viewalone ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-	   cp Makefile.dvi ${MNT}/${SYS}/doc/src/graph.viewalone.Makefile.dvi )
-
-viewalonedocument: ${SRC}/graph/viewalone/Makefile
-	@echo 19 documenting ${SRC}/graph/viewalone
-	@( cd viewalone ; ${ENV} ${MAKE} document )
-
-viewaloneclean: ${SRC}/graph/viewalone/Makefile
-	@echo 20 cleaning ${SRC}/graph/viewalone
-	@( cd viewalone ; ${ENV} ${MAKE} clean )
-	@rm -f ${SRC}/graph/viewalone/Makefile
-	@rm -f ${SRC}/graph/viewalone/Makefile.dvi
-
-@
-\section{Documentation}
-\subsection{environment variables}
-DOC is the directory where we store final documentation.
-DOCFILES is the list of documents to create.
-<<docenviroment>>=
-IN=${SRC}/graph
-MID=${INT}/graph/parabola
-DOC=${MNT}/${SYS}/doc/src/graph
-DOCFILES=${DOC}/fileformats.dvi
-
-@
-\subsection{file formats}
-<<fileformats (DOC from IN)>>=
-${DOC}/fileformats.dvi: ${IN}/fileformats.pamphlet 
-	@echo 21 making ${DOC}/fileformats.dvi from ${IN}/fileformats.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/fileformats.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} fileformats ; \
-	rm -f ${DOC}/fileformats.pamphlet ; \
-	rm -f ${DOC}/fileformats.tex ; \
-	rm -f ${DOC}/fileformats )
-
-@
-<<fileformats (MID from IN)>>=
-${MID}/data: ${IN}/fileformats.pamphlet
-	@echo 22 making ${MID}/data from ${IN}/fileformats.pamphlet
-	@(cd ${MID} ; \
-	${TANGLE} -R"data" ${IN}/fileformats.pamphlet >data ; \
-	${TANGLE} -R"graph0" ${IN}/fileformats.pamphlet >graph0 )
-
-@
-<<*>>=
-<<environment>>
-<<docenviroment>>
-
-all: ${DIRS} ${DOCFILES} ${MID}/data 
-	@ echo 24 finished ${IN}
-
-<<viewmandir>>
-<<gdrawsdir>>
-<<view3ddir>>
-<<view2ddir>>
-<<viewalonedir>>
-
-<<fileformats (DOC from IN)>>
-<<fileformats (MID from IN)>>
-
-clean: ${CLNS}
-	@ echo 25 cleaning ${SRC}/graph
+	@ mkdir -p ${INT}/graph/viewman
+	@( cd ${INT}/graph/viewman ; \
+	  ${TANGLE} -t8 -R"viewman/Makefile" ${BOOK} >Makefile ; \
+          ${ENV} ${MAKE} )
 
-document: ${DIRS}
-	@ echo 26 documenting graph
+gdrawsdir: ${BOOK}
+	@ echo 5 making gdraws from ${BOOK}
+	@ mkdir -p ${OBJ}/${SYS}/graph/gdraws
+	@ mkdir -p ${MNT}/${SYS}/lib
+	@ mkdir -p ${MNT}/${SYS}/lib/graph
+	@ mkdir -p ${MNT}/${SYS}/doc/src/graph
+	@ mkdir -p ${INT}/graph/gdraws
+	@( cd ${INT}/graph/gdraws ; \
+	  ${TANGLE} -t8 -R"gdraws/Makefile" ${BOOK} >Makefile ; \
+	  ${ENV} ${MAKE} )
+
+view3ddir: ${BOOK}
+	@ echo 9 making view3d from ${BOOK}
+	@ mkdir -p ${OBJ}/${SYS}/graph/view3d
+	@ mkdir -p ${OBJ}/${SYS}/lib
+	@ mkdir -p ${OBJ}/${SYS}/graph/gdraws
+	@ mkdir -p ${MNT}/${SYS}/lib
+	@ mkdir -p ${MNT}/${SYS}/doc/src/graph
+	@ mkdir -p ${INT}/graph/view3d
+	@( cd ${INT}/graph/view3d ; \
+	  ${TANGLE} -t8 -R"view3d/Makefile" ${BOOK} >Makefile ; \
+	  ${ENV} ${MAKE} )
+
+view2ddir: ${BOOK}
+	@ echo 13 making view2d from ${BOOK}
+	@ mkdir -p ${OBJ}/${SYS}/graph/view2d
+	@ mkdir -p ${OBJ}/${SYS}/lib
+	@ mkdir -p ${MNT}/${SYS}/lib
+	@ mkdir -p ${MNT}/${SYS}/doc/src/graph
+	@ mkdir -p ${INT}/graph/view2d
+	@( cd ${INT}/graph/view2d ; \
+	  ${TANGLE} -t8 -R"view2d/Makefile" ${BOOK} >Makefile ; \
+	  ${ENV} ${MAKE} )
+
+viewalonedir: ${BOOK}
+	@ echo 17 making viewalone from ${BOOK}
+	@ mkdir -p ${OBJ}/${SYS}/graph/viewalone
+	@ mkdir -p ${MNT}/${SYS}/bin
+	@ mkdir -p ${MNT}/${SYS}/doc/src/graph
+	@ mkdir -p ${INT}/graph/viewalone
+	@( cd ${INT}/graph/viewalone ; \
+	  ${TANGLE} -t8 -R"viewalone/Makefile" ${BOOK} >Makefile ; \
+	  ${ENV} ${MAKE} )
 
 @
 \begin{thebibliography}{99}
diff --git a/changelog b/changelog
index af63055..e4f1b86 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20080608 tpd src/Makefile remove src/graph (use bookvol8)
+20080608 tpd books/bookvol8 remove src/graph (use bookvol8)
 20080608 tpd src/graph/gdraws/Makefile deleted, (use bookvol8)
 20080608 tpd src/graph/gdraws/data.c deleted, (use bookvol8)
 20080608 tpd src/graph/gdraws/gdraws0.h deleted, (use bookvol8)
diff --git a/src/Makefile.pamphlet b/src/Makefile.pamphlet
index ebb9f2d..5644071 100644
--- a/src/Makefile.pamphlet
+++ b/src/Makefile.pamphlet
@@ -538,32 +538,14 @@ docclean: ${SRC}/doc/Makefile
 @
 \subsection{The graph directory}
 <<graphdir>>=
-graphdir: ${SRC}/graph/Makefile
-	@echo 45 making ${SRC}/graph
+graphdir: ${SPD}/books/bookvol8.pamphlet
+	@echo 45 making graph from bookvol8
 	@mkdir -p ${INT}/graph/parabola
 	@mkdir -p ${OBJ}/${SYS}/graph
-	@(cd graph ; ${ENV} ${MAKE} )
-
-${SRC}/graph/Makefile: ${SRC}/graph/Makefile.pamphlet
-	@echo 46 making ${SRC}/graph/Makefile from \
-                 ${SRC}/graph/Makefile.pamphlet
-	@( cd graph ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-           cp Makefile.dvi ${MNT}/${SYS}/doc/src/graph.Makefile.dvi )
-
-graphdocument: ${SRC}/graph/Makefile
-	@echo 47 documenting ${SRC}/graph
-	@mkdir -p ${INT}/doc/src/graph
-	@( cd graph ; ${ENV} ${MAKE} document )
-
-graphclean: ${SRC}/graph/Makefile
-	@echo 48 cleaning ${SRC}/graph
-	@( cd graph ; ${ENV} ${MAKE} clean )
-	@rm -rf ${INT}/graph
-	@rm -rf ${OBJ}/${SYS}/graph
-	@rm -rf ${MNT}/${SYS}/graph
-	@rm -f ${SRC}/graph/Makefile
-	@rm -f ${SRC}/graph/Makefile.dvi
+	@mkdir -p ${INT}/graph
+	@(cd ${INT}/graph ; \
+	  ${TANGLE} -t8 ${SPD}/books/bookvol8.pamphlet >Makefile ; \
+	  ${ENV} ${MAKE} )
 
 @
 \section{The Makefile}

\start
Date: Mon, 09 Jun 2008 23:19:07 +0200
From: Ralf Hemmecke
To: list
Subject: Attributes

The file xpoly.spad.pamphlet (LIECAT.spad) contains

LieAlgebra(R: CommutativeRing): Category ==  Module(R) with
   --attributes
     NullSquare
     JacobiIdentity
     ...

but I don't see NullSquare or JacobiIdentity listed in 
src/interp/daase.lisp.

Actually, I should ask: why is *attributes* hardcoded in daase.lisp?
Shouldn't that be inferred from the .spad files? And what is the 
relation to the AttributeRegistry in /src/algebra/attreg.spad.pamphlet?

What should be considered the original source?

\start
Date: Tue, 10 Jun 2008 13:44:47 -0500
From: Tim Daly
To: list
Subject: 20080609.01.tpd.patch (move hypertex into bookvol7)

The source code for hypertex, htsearch, spadbuf, hthits, ex2ht and htadd
has been migrated to bookvol7.
=======================================================================
(patch text elided for size)

\start
Date: Tue, 10 Jun 2008 14:05:29 -0500
From: Tim Daly
To: list
Subject: 20080609.02.tpd.patch (remove unused files in src/hyper)

Since the source code is now in bookvol7, the sources in src/hyper
are no longer used and have been removed.
====================================================================
(patch text removed for size)

\start
Date: Wed, 11 Jun 2008 00:04:39 +0200
From: Bertfried Fauser
To: list
Subject: Re: 20080609.02.tpd.patch (remove unused files in src/hyper)

Hi,

sorry for posting this here, but for one of you this might be just a
minor problem.

In the aldor distribution is a program dosify, which does some
mysterious things certain files (it destroys for example pdfs).
By accident in a program dosify ran on my machine and destroyed many filed.

Is this reversible is there an undosify?

dosify has no help page, dosify -h and dosify --help give no usage.
Google search for doify gives lyrics links :(

deeply dosified

\start
Date: Tue, 10 Jun 2008 16:16:31 -0600
From: Zach Smith
To: Bertfried Fauser
Subject: Re: 20080609.02.tpd.patch (remove unused files in src/hyper)

Is it possible that this is just a program that changes the *nix style
line-feeds terminated lines to the DOS style carrage-return + line-feeds
terminated lines for ascii text files?  If it just scanned over the bytes of
a binary file, that would certainly screw it up.  On my Slackware box there
is a program like this called `todos' and inverse command called `fromdos'
which would assumedly fix the problem, if that were the problem...

Zach


On Tue, Jun 10, 2008 at 4:04 PM, Bertfried Fauser <
Bertfried Fauser> wrote:

> Hi,
>
> sorry for posting this here, but for one of you this might be just a
> minor problem.
>
> In the aldor distribution is a program dosify, which does some
> mysterious things certain files (it destroys for example pdfs).
> By accident in a program dosify ran on my machine and destroyed many filed.
>
> Is this reversible is there an undosify?
>
> dosify has no help page, dosify -h and dosify --help give no usage.
> Google search for doify gives lyrics links :(
>
> deeply dosified

\start
Date: Wed, 11 Jun 2008 00:28:29 +0200
From: Ralf Hemmecke
To: Bertfried Fauser
Subject: Re: 20080609.02.tpd.patch (remove unused files in src/hyper)

Hi Bertfried,

the source is at

https://svn.origo.ethz.ch/algebraist/trunk/aldor/aldor/tools/port/dosify

and more importantly at

https://svn.origo.ethz.ch/algebraist/trunk/aldor/aldor/tools/port/txt2txt.c

Maybe somebody knows how to undo the changes.

Perhaps you try unixify which should lie in the same directory.
I have however no idea whether that is really the invers of dosify also 
for binary files. For that you have to investigate the C source.

\start
Date: Tue, 10 Jun 2008 22:47:21 -0500
From: Tim Daly
To: list
Subject: 20080610.01.tpd.patch (build bookvol11)

This patch builds bookvol11 from the books subdirectory.
======================================================================
(patch elided due to size)

\start
Date: Tue, 10 Jun 2008 22:55:05 -0500
From: Tim Daly
To: list
Subject: 20080610.02.tpd.patch (stop redundant builds)

The preconditions on the stanzas for axiom.sty were moved up further
in the requirements chain.
====================================================================
diff --git a/books/Makefile.pamphlet b/books/Makefile.pamphlet
index 27843db..75c7e81 100644
--- a/books/Makefile.pamphlet
+++ b/books/Makefile.pamphlet
@@ -27,13 +27,13 @@ BOOKS=${PDF}/bookvol0.pdf ${PDF}/bookvol1.pdf ${PDF}/bookvol2.pdf \
       ${PDF}/bookvol9.pdf ${PDF}/bookvol10.pdf ${PDF}/bookvol11.pdf \
       ${PDF}/bookvol12.pdf 
 
-all: ${BOOKS} ${PDF}/toc.pdf
+all: ${PDF}/axiom.sty ${BOOKS} ${PDF}/toc.pdf
 
 @
 \section{Volume 0: Axiom Jenks and Sutor}
 This is the reconstructed Jenks and Sutor volume.
 <<*>>=
-${PDF}/bookvol0.pdf: ${IN}/bookvol0.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol0.pdf: ${IN}/bookvol0.pamphlet 
 	@echo 0 making ${PDF}/bookvol0.pdf from ${IN}/bookvol0.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol0.pamphlet ${PDF} ; \
@@ -61,7 +61,7 @@ ${PDF}/bookvol0.pdf: ${IN}/bookvol0.pamphlet ${PDF}/axiom.sty
 This is the tutorial volume. ISBN 1-411-66587-X. 
 Hardcopy is available from Amazon.com or Lulu.com.
 <<*>>=
-${PDF}/bookvol1.pdf: ${IN}/bookvol1.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol1.pdf: ${IN}/bookvol1.pamphlet 
 	@echo 1 making ${PDF}/bookvol1.pdf from ${IN}/bookvol1.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol1.pamphlet ${PDF} ; \
@@ -89,7 +89,7 @@ ${PDF}/bookvol1.pdf: ${IN}/bookvol1.pamphlet ${PDF}/axiom.sty
 This is a more detailed explanation with current information
 for Axiom users.
 <<*>>=
-${PDF}/bookvol2.pdf: ${IN}/bookvol2.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol2.pdf: ${IN}/bookvol2.pamphlet 
 	@echo 2 making ${PDF}/bookvol2.pdf from ${IN}/bookvol2.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol2.pamphlet ${PDF} ; \
@@ -116,7 +116,7 @@ ${PDF}/bookvol2.pdf: ${IN}/bookvol2.pamphlet ${PDF}/axiom.sty
 This is information about the language and algebra hierarchy
 for Spad language programmers.
 <<*>>=
-${PDF}/bookvol3.pdf: ${IN}/bookvol3.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol3.pdf: ${IN}/bookvol3.pamphlet 
 	@echo making ${PDF}/bookvol3.pdf from ${IN}/bookvol3.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol3.pamphlet ${PDF} ; \
@@ -142,7 +142,7 @@ ${PDF}/bookvol3.pdf: ${IN}/bookvol3.pamphlet ${PDF}/axiom.sty
 \section{Volume 4: Axiom Developers Guide}
 This is a collection of userful information for developers.
 <<*>>=
-${PDF}/bookvol4.pdf: ${IN}/bookvol4.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol4.pdf: ${IN}/bookvol4.pamphlet 
 	@echo making ${PDF}/bookvol4.pdf from ${IN}/bookvol4.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol4.pamphlet ${PDF} ; \
@@ -168,7 +168,7 @@ ${PDF}/bookvol4.pdf: ${IN}/bookvol4.pamphlet ${PDF}/axiom.sty
 \section{Volume 5: Axiom Interpreter}
 This is the source code and explanation for the interpreter.
 <<*>>=
-${PDF}/bookvol5.pdf: ${IN}/bookvol5.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol5.pdf: ${IN}/bookvol5.pamphlet 
 	@echo making ${PDF}/bookvol5.pdf from ${IN}/bookvol5.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol5.pamphlet ${PDF} ; \
@@ -194,7 +194,7 @@ ${PDF}/bookvol5.pdf: ${IN}/bookvol5.pamphlet ${PDF}/axiom.sty
 \section{Volume 6: Axiom Command}
 This covers the axiom commands, sman, and some other system related issues.
 <<*>>=
-${PDF}/bookvol6.pdf: ${IN}/bookvol6.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol6.pdf: ${IN}/bookvol6.pamphlet 
 	@echo making ${PDF}/bookvol6.pdf from ${IN}/bookvol6.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol6.pamphlet ${PDF} ; \
@@ -220,7 +220,7 @@ ${PDF}/bookvol6.pdf: ${IN}/bookvol6.pamphlet ${PDF}/axiom.sty
 \section{Volume 7: Axiom Hyperdoc}
 This is the source and explanation for the X11 hyperdoc subsystem
 <<*>>=
-${PDF}/bookvol7.pdf: ${IN}/bookvol7.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol7.pdf: ${IN}/bookvol7.pamphlet 
 	@echo making ${PDF}/bookvol7.pdf from ${IN}/bookvol7.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol7.pamphlet ${PDF} ; \
@@ -246,13 +246,14 @@ ${PDF}/bookvol7.pdf: ${IN}/bookvol7.pamphlet ${PDF}/axiom.sty
 \section{Volume 8: Axiom Graphics}
 This is the source and explanation for the X11 graphics subsystem
 <<*>>=
-${PDF}/bookvol8.pdf: ${IN}/bookvol8.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol8.pdf: ${IN}/bookvol8.pamphlet 
 	@echo making ${PDF}/bookvol8.pdf from ${IN}/bookvol8.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol8.pamphlet ${PDF} ; \
 	  ${WEAVE} -delay bookvol8.pamphlet >bookvol8.tex ; \
 	  if [ -z "${NOISE}" ] ; then \
 	    ${LATEX} bookvol8.tex ; \
+	    ${MAKEINDEX} bookvol8 >/dev/null ; \
 	    ${LATEX} bookvol8.tex >/dev/null ; \
 	    ${DVIPS} bookvol8.dvi 2>/dev/null ; \
 	    ${PS2PDF} bookvol8.ps >/dev/null ; \
@@ -261,6 +262,7 @@ ${PDF}/bookvol8.pdf: ${IN}/bookvol8.pamphlet ${PDF}/axiom.sty
 	  else \
 	    ${LATEX} bookvol8.tex >${TMP}/trace ; \
 	    echo ...first latex complete ; \
+	    ${MAKEINDEX} bookvol8 >${TMP}/trace ; \
 	    ${LATEX} bookvol8.tex >${TMP}/trace ; \
 	    ${DVIPS} bookvol8.dvi 2>${TMP}/trace  ; \
 	    ${PS2PDF} bookvol8.ps >${TMP}/trace  ; \
@@ -272,7 +274,7 @@ ${PDF}/bookvol8.pdf: ${IN}/bookvol8.pamphlet ${PDF}/axiom.sty
 \section{Volume 9: Axiom Compiler}
 This is the source and explanation for the spad compiler.
 <<*>>=
-${PDF}/bookvol9.pdf: ${IN}/bookvol9.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol9.pdf: ${IN}/bookvol9.pamphlet 
 	@echo making ${PDF}/bookvol9.pdf from ${IN}/bookvol9.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol9.pamphlet ${PDF} ; \
@@ -298,7 +300,7 @@ ${PDF}/bookvol9.pdf: ${IN}/bookvol9.pamphlet ${PDF}/axiom.sty
 \section{Volume 10: Axiom Algebra}
 This ia multi-volumne set covering the algebra.
 <<*>>=
-${PDF}/bookvol10.pdf: ${IN}/bookvol10.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol10.pdf: ${IN}/bookvol10.pamphlet 
 	@echo 10 making ${PDF}/bookvol10.pdf from ${IN}/bookvol10.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol10.pamphlet ${PDF} ; \
@@ -324,7 +326,7 @@ ${PDF}/bookvol10.pdf: ${IN}/bookvol10.pamphlet ${PDF}/axiom.sty
 \section{Volume 11: Axiom Browser}
 This is the source and explanation of the new Firefox browser front end.
 <<*>>=
-${PDF}/bookvol11.pdf: ${IN}/bookvol11.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol11.pdf: ${IN}/bookvol11.pamphlet 
 	@echo 11 making ${PDF}/bookvol11.pdf from ${IN}/bookvol11.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol11.pamphlet ${PDF} ; \
@@ -350,7 +352,7 @@ ${PDF}/bookvol11.pdf: ${IN}/bookvol11.pamphlet ${PDF}/axiom.sty
 \section{Volume 12: Axiom Crystal}
 This is the design documents for the crystal interface.
 <<*>>=
-${PDF}/bookvol12.pdf: ${IN}/bookvol12.pamphlet ${PDF}/axiom.sty
+${PDF}/bookvol12.pdf: ${IN}/bookvol12.pamphlet 
 	@echo 12 making ${PDF}/bookvol12.pdf from ${IN}/bookvol12.pamphlet
 	@(cd ${PDF} ; \
 	  cp ${IN}/bookvol12.pamphlet ${PDF} ; \
diff --git a/changelog b/changelog
index a509824..ecc0ca2 100644
--- a/changelog
+++ b/changelog
@@ -1,7 +1,9 @@
+20080610 tpd books/Makefile stop redundant builds
 20080610 tpd books/bookvol7 remove bookvol11 handling
 20080610 tpd books/bookvol11 update the Makefile 
 20080610 tpd Makefile add browserdir to SRCDIR variable
 20080610 tpd src/Makefile write browserdir stanze for bookvol11
+20080610 tpd src/hyper/bookvol11 removed
 20080609 tpd src/hyper/Makefile removed (use bookvol7)
 20080609 tpd src/hyper/addfile removed (use bookvol7)
 20080609 tpd src/hyper/bitmaps removed (use bookvol7)


\start
Date: Fri, 13 Jun 2008 10:36:07 -0500
From: Tim Daly
To: list
Subject: 20080612.01.tpd.patch (general form updates for books)

The Makefile machinery has been refined, bookvol10 has been expanded,
bookvol11 is now built from the books directory, and the whole set now
has indexing.

bookvol0 (jenks and sutor) now has the \condata expression expanded
properly and the appendix sections are now properly labelled.
=====================================================================
diff --git a/books/Makefile.pamphlet b/books/Makefile.pamphlet
index 75c7e81..c8af5f5 100644
--- a/books/Makefile.pamphlet
+++ b/books/Makefile.pamphlet
@@ -29,349 +29,27 @@ BOOKS=${PDF}/bookvol0.pdf ${PDF}/bookvol1.pdf ${PDF}/bookvol2.pdf \
 
 all: ${PDF}/axiom.sty ${BOOKS} ${PDF}/toc.pdf
 
-@
-\section{Volume 0: Axiom Jenks and Sutor}
-This is the reconstructed Jenks and Sutor volume.
-<<*>>=
-${PDF}/bookvol0.pdf: ${IN}/bookvol0.pamphlet 
-	@echo 0 making ${PDF}/bookvol0.pdf from ${IN}/bookvol0.pamphlet
+${PDF}/%.pdf: ${IN}/%.pamphlet 
+	@echo 0 making ${PDF}/$*.pdf from ${IN}/$*.pamphlet
 	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol0.pamphlet ${PDF} ; \
+	  cp ${IN}/$*.pamphlet ${PDF} ; \
 	  cp -pr ${IN}/ps ${PDF} ; \
-	  ${WEAVE} -delay bookvol0.pamphlet >bookvol0.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol0.tex ; \
-	    ${LATEX} bookvol0.tex >/dev/null ; \
-	    ${DVIPS} bookvol0.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol0.ps >/dev/null ; \
-	    ${RM} bookvol0.aux bookvol0.dvi bookvol0.log bookvol0.ps \
-                  bookvol0.idx bookvol0.tex bookvol0.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol0.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol0.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol0.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol0.ps >${TMP}/trace  ; \
-	    ${RM} bookvol0.aux bookvol0.dvi bookvol0.log bookvol0.ps \
-                  bookvol0.idx bookvol0.tex bookvol0.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 1: Axiom Tutorial}
-This is the tutorial volume. ISBN 1-411-66587-X. 
-Hardcopy is available from Amazon.com or Lulu.com.
-<<*>>=
-${PDF}/bookvol1.pdf: ${IN}/bookvol1.pamphlet 
-	@echo 1 making ${PDF}/bookvol1.pdf from ${IN}/bookvol1.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol1.pamphlet ${PDF} ; \
-	  cp -pr ${IN}/ps ${PDF} ; \
-	  ${WEAVE} -delay bookvol1.pamphlet >bookvol1.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol1.tex ; \
-	    ${LATEX} bookvol1.tex >/dev/null ; \
-	    ${DVIPS} bookvol1.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol1.ps >/dev/null ; \
-	    ${RM} bookvol1.aux bookvol1.dvi bookvol1.log bookvol1.ps \
-                  bookvol1.idx bookvol1.tex bookvol1.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol1.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol1.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol1.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol1.ps >${TMP}/trace  ; \
-	    ${RM} bookvol1.aux bookvol1.dvi bookvol1.log bookvol1.ps \
-                  bookvol1.idx bookvol1.tex bookvol1.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 2: Axiom Users Guide}
-This is a more detailed explanation with current information
-for Axiom users.
-<<*>>=
-${PDF}/bookvol2.pdf: ${IN}/bookvol2.pamphlet 
-	@echo 2 making ${PDF}/bookvol2.pdf from ${IN}/bookvol2.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol2.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol2.pamphlet >bookvol2.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol2.tex ; \
-	    ${LATEX} bookvol2.tex >/dev/null ; \
-	    ${DVIPS} bookvol2.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol2.ps >/dev/null ; \
-	    ${RM} bookvol2.aux bookvol2.dvi bookvol2.log bookvol2.ps \
-                  bookvol2.idx bookvol2.tex bookvol2.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol2.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol2.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol2.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol2.ps >${TMP}/trace  ; \
-	    ${RM} bookvol2.aux bookvol2.dvi bookvol2.log bookvol2.ps \
-                  bookvol2.idx bookvol2.tex bookvol2.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 3: Axiom Programmers Guide}
-This is information about the language and algebra hierarchy
-for Spad language programmers.
-<<*>>=
-${PDF}/bookvol3.pdf: ${IN}/bookvol3.pamphlet 
-	@echo making ${PDF}/bookvol3.pdf from ${IN}/bookvol3.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol3.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol3.pamphlet >bookvol3.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol3.tex ; \
-	    ${LATEX} bookvol3.tex >/dev/null ; \
-	    ${DVIPS} bookvol3.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol3.ps >/dev/null ; \
-	    ${RM} bookvol3.aux bookvol3.dvi bookvol3.log bookvol3.ps \
-                  bookvol3.idx bookvol3.tex bookvol3.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol3.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol3.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol3.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol3.ps >${TMP}/trace  ; \
-	    ${RM} bookvol3.aux bookvol3.dvi bookvol3.log bookvol3.ps \
-                  bookvol3.idx bookvol3.tex bookvol3.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 4: Axiom Developers Guide}
-This is a collection of userful information for developers.
-<<*>>=
-${PDF}/bookvol4.pdf: ${IN}/bookvol4.pamphlet 
-	@echo making ${PDF}/bookvol4.pdf from ${IN}/bookvol4.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol4.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol4.pamphlet >bookvol4.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol4.tex ; \
-	    ${LATEX} bookvol4.tex >/dev/null ; \
-	    ${DVIPS} bookvol4.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol4.ps >/dev/null ; \
-	    ${RM} bookvol4.aux bookvol4.dvi bookvol4.log bookvol4.ps \
-                  bookvol4.idx bookvol4.tex bookvol4.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol4.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol4.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol4.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol4.ps >${TMP}/trace  ; \
-	    ${RM} bookvol4.aux bookvol4.dvi bookvol4.log bookvol4.ps \
-                  bookvol4.idx bookvol4.tex bookvol4.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 5: Axiom Interpreter}
-This is the source code and explanation for the interpreter.
-<<*>>=
-${PDF}/bookvol5.pdf: ${IN}/bookvol5.pamphlet 
-	@echo making ${PDF}/bookvol5.pdf from ${IN}/bookvol5.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol5.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol5.pamphlet >bookvol5.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol5.tex ; \
-	    ${LATEX} bookvol5.tex >/dev/null ; \
-	    ${DVIPS} bookvol5.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol5.ps >/dev/null ; \
-	    ${RM} bookvol5.aux bookvol5.dvi bookvol5.log bookvol5.ps \
-                  bookvol5.idx bookvol5.tex bookvol5.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol5.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol5.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol5.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol5.ps >${TMP}/trace  ; \
-	    ${RM} bookvol5.aux bookvol5.dvi bookvol5.log bookvol5.ps \
-                  bookvol5.idx bookvol5.tex bookvol5.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 6: Axiom Command}
-This covers the axiom commands, sman, and some other system related issues.
-<<*>>=
-${PDF}/bookvol6.pdf: ${IN}/bookvol6.pamphlet 
-	@echo making ${PDF}/bookvol6.pdf from ${IN}/bookvol6.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol6.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol6.pamphlet >bookvol6.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol6.tex ; \
-	    ${LATEX} bookvol6.tex >/dev/null ; \
-	    ${DVIPS} bookvol6.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol6.ps >/dev/null ; \
-	    ${RM} bookvol6.aux bookvol6.dvi bookvol6.log bookvol6.ps \
-                  bookvol6.idx bookvol6.tex bookvol6.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol6.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol6.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol6.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol6.ps >${TMP}/trace  ; \
-	    ${RM} bookvol6.aux bookvol6.dvi bookvol6.log bookvol6.ps \
-                  bookvol6.idx bookvol6.tex bookvol6.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 7: Axiom Hyperdoc}
-This is the source and explanation for the X11 hyperdoc subsystem
-<<*>>=
-${PDF}/bookvol7.pdf: ${IN}/bookvol7.pamphlet 
-	@echo making ${PDF}/bookvol7.pdf from ${IN}/bookvol7.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol7.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol7.pamphlet >bookvol7.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol7.tex ; \
-	    ${LATEX} bookvol7.tex >/dev/null ; \
-	    ${DVIPS} bookvol7.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol7.ps >/dev/null ; \
-	    ${RM} bookvol7.aux bookvol7.dvi bookvol7.log bookvol7.ps \
-                  bookvol7.idx bookvol7.tex bookvol7.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol7.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol7.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol7.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol7.ps >${TMP}/trace  ; \
-	    ${RM} bookvol7.aux bookvol7.dvi bookvol7.log bookvol7.ps \
-                  bookvol7.idx bookvol7.tex bookvol7.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 8: Axiom Graphics}
-This is the source and explanation for the X11 graphics subsystem
-<<*>>=
-${PDF}/bookvol8.pdf: ${IN}/bookvol8.pamphlet 
-	@echo making ${PDF}/bookvol8.pdf from ${IN}/bookvol8.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol8.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol8.pamphlet >bookvol8.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol8.tex ; \
-	    ${MAKEINDEX} bookvol8 >/dev/null ; \
-	    ${LATEX} bookvol8.tex >/dev/null ; \
-	    ${DVIPS} bookvol8.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol8.ps >/dev/null ; \
-	    ${RM} bookvol8.aux bookvol8.dvi bookvol8.log bookvol8.ps \
-                  bookvol8.idx bookvol8.tex bookvol8.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol8.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${MAKEINDEX} bookvol8 >${TMP}/trace ; \
-	    ${LATEX} bookvol8.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol8.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol8.ps >${TMP}/trace  ; \
-	    ${RM} bookvol8.aux bookvol8.dvi bookvol8.log bookvol8.ps \
-                  bookvol8.idx bookvol8.tex bookvol8.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 9: Axiom Compiler}
-This is the source and explanation for the spad compiler.
-<<*>>=
-${PDF}/bookvol9.pdf: ${IN}/bookvol9.pamphlet 
-	@echo making ${PDF}/bookvol9.pdf from ${IN}/bookvol9.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol9.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol9.pamphlet >bookvol9.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol9.tex ; \
-	    ${LATEX} bookvol9.tex >/dev/null ; \
-	    ${DVIPS} bookvol9.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol9.ps >/dev/null ; \
-	    ${RM} bookvol9.aux bookvol9.dvi bookvol9.log bookvol9.ps \
-                  bookvol9.idx bookvol9.tex bookvol9.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol9.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol9.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol9.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol9.ps >${TMP}/trace  ; \
-	    ${RM} bookvol9.aux bookvol9.dvi bookvol9.log bookvol9.ps \
-                  bookvol9.idx bookvol9.tex bookvol9.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 10: Axiom Algebra}
-This ia multi-volumne set covering the algebra.
-<<*>>=
-${PDF}/bookvol10.pdf: ${IN}/bookvol10.pamphlet 
-	@echo 10 making ${PDF}/bookvol10.pdf from ${IN}/bookvol10.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol10.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol10.pamphlet >bookvol10.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol10.tex ; \
-	    ${LATEX} bookvol10.tex >/dev/null ; \
-	    ${DVIPS} bookvol10.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol10.ps >/dev/null ; \
-	    ${RM} bookvol10.aux bookvol10.dvi bookvol10.log bookvol10.ps \
-                  bookvol10.idx bookvol10.tex bookvol10.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol10.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol10.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol10.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol10.ps >${TMP}/trace  ; \
-	    ${RM} bookvol10.aux bookvol10.dvi bookvol10.log bookvol10.ps \
-                  bookvol10.idx bookvol10.tex bookvol10.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 11: Axiom Browser}
-This is the source and explanation of the new Firefox browser front end.
-<<*>>=
-${PDF}/bookvol11.pdf: ${IN}/bookvol11.pamphlet 
-	@echo 11 making ${PDF}/bookvol11.pdf from ${IN}/bookvol11.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol11.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol11.pamphlet >bookvol11.tex ; \
-	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol11.tex ; \
-	    ${LATEX} bookvol11.tex >/dev/null ; \
-	    ${DVIPS} bookvol11.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol11.ps >/dev/null ; \
-	    ${RM} bookvol11.aux bookvol11.dvi bookvol11.log bookvol11.ps \
-                  bookvol11.idx bookvol11.tex bookvol11.pamphlet ; \
-	  else \
-	    ${LATEX} bookvol11.tex >${TMP}/trace ; \
-	    echo ...first latex complete ; \
-	    ${LATEX} bookvol11.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol11.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol11.ps >${TMP}/trace  ; \
-	    ${RM} bookvol11.aux bookvol11.dvi bookvol11.log bookvol11.ps \
-                  bookvol11.idx bookvol11.tex bookvol11.pamphlet ; \
-	  fi )
-
-@
-\section{Volume 12: Axiom Crystal}
-This is the design documents for the crystal interface.
-<<*>>=
-${PDF}/bookvol12.pdf: ${IN}/bookvol12.pamphlet 
-	@echo 12 making ${PDF}/bookvol12.pdf from ${IN}/bookvol12.pamphlet
-	@(cd ${PDF} ; \
-	  cp ${IN}/bookvol12.pamphlet ${PDF} ; \
-	  ${WEAVE} -delay bookvol12.pamphlet >bookvol12.tex ; \
+	  ${WEAVE} -delay $*.pamphlet >$*.tex ; \
 	  if [ -z "${NOISE}" ] ; then \
-	    ${LATEX} bookvol12.tex ; \
-	    ${LATEX} bookvol12.tex >/dev/null ; \
-	    ${DVIPS} bookvol12.dvi 2>/dev/null ; \
-	    ${PS2PDF} bookvol12.ps >/dev/null ; \
-	    ${RM} bookvol12.aux bookvol12.dvi bookvol12.log bookvol12.ps \
-                  bookvol12.idx bookvol12.tex bookvol12.pamphlet ; \
+	    ${LATEX} $*.tex ; \
+	    ${MAKEINDEX} $* >/dev/null ; \
+	    ${LATEX} $*.tex >/dev/null ; \
+	    ${DVIPS} $*.dvi 2>/dev/null ; \
+	    ${PS2PDF} $*.ps >/dev/null ; \
+	    ${RM} $*.aux $*.dvi $*.log $*.ps $*.idx $*.tex $*.pamphlet ; \
 	  else \
-	    ${LATEX} bookvol12.tex >${TMP}/trace ; \
+	    ${LATEX} $*.tex >${TMP}/trace ; \
 	    echo ...first latex complete ; \
-	    ${LATEX} bookvol12.tex >${TMP}/trace ; \
-	    ${DVIPS} bookvol12.dvi 2>${TMP}/trace  ; \
-	    ${PS2PDF} bookvol12.ps >${TMP}/trace  ; \
-	    ${RM} bookvol12.aux bookvol12.dvi bookvol12.log bookvol12.ps \
-                  bookvol12.idx bookvol12.tex bookvol12.pamphlet ; \
+	    ${MAKEINDEX} $* >${TMP}/trace ; \
+	    ${LATEX} $*.tex >${TMP}/trace ; \
+	    ${DVIPS} $*.dvi 2>${TMP}/trace  ; \
+	    ${PS2PDF} $*.ps >${TMP}/trace  ; \
+	    ${RM} $*.aux $*.dvi $*.log $*.ps $*.idx $*.tex $*.pamphlet ; \
 	  fi )
 
 @
@@ -444,12 +122,12 @@ ${PDF}/toc.pdf: ${BOOKS}
 	  ${LATEX} toc.tex ; \
 	  ${DVIPS} toc.dvi 2>/dev/null ; \
 	  ${PS2PDF} toc.ps >/dev/null ; \
-	  ${RM} -f *.toc toc.aux toc.dvi toc.log toc.ps toc.tex toc.toc ; \
+	  ${RM} -f toc.aux toc.dvi toc.log toc.ps toc.tex toc.toc ; \
 	else \
 	  ${LATEX} toc.tex >${TMP}/trace ; \
 	  ${DVIPS} toc.dvi 2>${TMP}/trace ; \
 	  ${PS2PDF} toc.ps >${TMP}/trace ; \
-	  ${RM} -f *.toc toc.aux toc.dvi toc.log toc.ps toc.tex toc.toc ; \
+	  ${RM} -f toc.aux toc.dvi toc.log toc.ps toc.tex toc.toc ; \
 	fi )
 
 ${PDF}/axiom.sty: ${SRC}/scripts/tex/axiom.sty
diff --git a/books/bookvol0.pamphlet b/books/bookvol0.pamphlet
index 8de7c52..ca200f4 100644
--- a/books/bookvol0.pamphlet
+++ b/books/bookvol0.pamphlet
@@ -1,5 +1,7 @@
 \documentclass{book}
 %\usepackage{axiom}
+\usepackage{makeidx}
+\makeindex
 \usepackage{graphicx}
 % struggle with latex figure-floating behavior
 \renewcommand\floatpagefraction{.9}
@@ -60011,7 +60013,7 @@ compilers.
 \newcommand{\lanb}{{\tt [}}
 \newcommand{\ranb}{{\tt ]}}
 \newcommand{\vertline}{$|$}
-
+\appendix
 \chapter{Axiom System Commands}
 \label{ugSysCmd}
 
@@ -60127,7 +60129,6 @@ Finally, in the syntax descriptions we may also list the syntax of
 related commands.
 
 \section{)abbreviation}
-
 \index{abbreviation}
 
 
@@ -60250,6 +60251,28 @@ obtained by translating the BOOT code.
 {\tt )set} \index{ugSysCmdset}, and
 {\tt )system} \index{ugSysCmdsystem}.
 
+\section{)browse}
+\index{browse}
+\par\noindent{\bf User Level Required:} interpreter
+\par\noindent{\bf Command Syntax:}
+\begin{list}{}
+\item {\tt )browse}
+\end{list}
+
+\par\noindent{\bf Command Description:}
+
+The browse command changes the interpreter command loop to listen
+for http connections on IP address 127.0.0.1 port 8085.
+
+In order to access the new pages start Firefox.
+Assuming the path to the file rootpage.xhtml is:\\
+{\tt /spad/mnt/linux/doc/hypertex/rootpage.xhtml}\\
+you would visit the URL:\\
+{\tt 127.0.0.1:8085/spad/mnt/linux/doc/hypertex/rootpage.xhtml}
+
+Note that it may be necessary to install fonts into the Firefox
+browser in order to see correct mathML mathematics output. See
+the faq file for details.
 
 \section{)cd}
 \index{ugSysCmdcd}
@@ -60745,15 +60768,6 @@ should stop at the first error.
 The value of the {\tt )set break} variable then controls what happens.
 
 
-%% BEGIN OBSOLTE
-% It is important for you to realize that it does not suffice to compile a
-% constructor to use the new code in the interpreter.
-% After compilation, the {\tt )load} command with the
-% {\tt )update} option should be used to bring in the new code
-% and update internal system tables with information about the
-% constructor.
-%% END OBSOLTE
-
 \par\noindent{\bf Also See:}
 {\tt )abbreviation} \index{ugSysCmdabbreviation},
 {\tt )edit} \index{ugSysCmdedit}, and
@@ -62411,9 +62425,11 @@ $\hbox{{\sf Category}}_{i}$ & is a category to which the category belongs. \\
 $\hbox{{\rm op}}_{j}$ & is an operation exported by the category.
 \end{tabular}
 
-\appendix{Categories}
-%tpdclip2
 
+\def\condata#1#2#3#4{{%
+   \par\vskip 1pt%
+   {\bf #2}\allowbreak\{{\tt #1}\}: {\sl #3} {\tt with }%
+   {\rm #4}\par}}
 % ----------------------------------------------------------------------
 \chapter{constructorListing}
 % ----------------------------------------------------------------------
@@ -62883,7 +62899,6 @@ $\hbox{{\sf Category}}_{i}$ & is a category to which the domain belongs. \\
 $\hbox{{\rm op}}_{j}$ & is an operation exported by the domain.
 \end{tabular}
 
-\appendix{Domains}
 
 % ----------------------------------------------------------------------
 %\begin{constructorListing}
@@ -64126,7 +64141,6 @@ $\hbox{{\sf Category}}_{i}$ & is a category to which the package belongs. \\
 $\hbox{{\rm op}}_{j}$ & is an operation exported by the package.
 \end{tabular}
 
-\appendix{Packages}
 
 % ----------------------------------------------------------------------
 %\begin{constructorListing}
@@ -64903,7 +64917,6 @@ in the input area on the main Browse menu and then click on
 
 \vskip \baselineskip
 %]
-\appendix{Operations}
 \def\alt#1#2{{$\lbrace$#1$\mid$#2$\rbrace$}}
 \def\altx#1#2#3{{$\lbrace$#1$\mid$#2$\mid$#3$\rbrace$}}
 \def\opt#1{{$\,\lbrack$#1$\rbrack$}}
@@ -65725,8 +65738,6 @@ drawOneScherk(s) ==                                  Draw the surface by
 \chapter{Glossary}
 \label{ugGlossary}
 
-\appendix{Glossary}
-
 \sloppy
 
 \ourGloss{\glossarySyntaxTerm{!}}{%
@@ -67647,7 +67658,7 @@ Each interactive {\it frame} has its own workspace.
 \eject
 \setcounter{chapter}{7} % Appendix H
 \chapter{License}
-%\appendix{License}
+
 \begin{verbatim}
 Portions of this document are Copyright by their respective authors.
 All rights reserved by the authors. Used by permission.
@@ -67687,33 +67698,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 \end{verbatim}
 
 \eject
-\begin{verbatim}
-Testing involves function calls which are intended to fail in
-the normal course of testing. In order to distinguish cases
-where things fail by design you can issue the command
-{\tt )set message test on}. This inhibits the message
-"Daly Bug". You can now distinguish between intentional
-failures which do not contain the "Daly Bug" message and
-unintentional failures which do.
-
-
-RDJ note to RSS: Expressions not statements or lines-- By an
-expression I mean any syntactically correct program fragment.
-Everything in AXIOM is an expression since every fragment has a value
-and a type.  In most languages including LISP, a "statement" is
-different from an expression: it is executed for side-effect only and
-an error is incurred if you assign it a value.  This "gimmick" takes
-care of incomplete expressions such as "if x > 0 then y" in blocks.
-In LISP, "u := (if x > 0 then y)" is illegal but in AXIOM it is legal.
-Also, in AXIOM the value of a repeat loop is void even though you
-might be be able to prove that it always returns a valid value (you
-have an example of this)!  This will be considered a bug not a
-feature. But it is how things stand.  In any case---this point should
-be in a box somewhere since it is key to a user's understanding to the
-language. I am not sure where. You only gain an appreciation for it
-after awhile in chapter 5.
-
-\end{verbatim}
 \eject
 \begin{thebibliography}{99}
 \bibitem{1} Lamport, Leslie, 
@@ -67728,5 +67712,8 @@ Addison-Wesley Publishing Company, Inc.,
 \bibitem{3} Jenks, Richard D. and Sutor, Robert S.,\\
 {\it Axiom, The Scientific Computation System} \\
 Springer-Verlag, New York, NY 1992 ISBN 0-387-97855-0
+\bibitem{4} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
+\printindex
 \end{document}
diff --git a/books/bookvol1.pamphlet b/books/bookvol1.pamphlet
index 25bb7bc..c758fce 100644
--- a/books/bookvol1.pamphlet
+++ b/books/bookvol1.pamphlet
@@ -14819,8 +14819,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -14828,6 +14828,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol10.pamphlet b/books/bookvol10.pamphlet
index 089b5b2..1148bd8 100644
--- a/books/bookvol10.pamphlet
+++ b/books/bookvol10.pamphlet
@@ -1,4 +1,5 @@
 \documentclass{book}
+\usepackage{amssymb}
 \usepackage{axiom}
 \usepackage{makeidx}
 \makeindex
@@ -290,44 +291,1861 @@ November 10, 2003 ((iHy))
 \eject
 \pagenumbering{arabic}
 \setcounter{chapter}{0} % Chapter 1
+\chapter{Integration}
+An {\sl elementary function}
+\index{elementary function}
+of a variable $x$ is a function that can
+be obtained from the rational functions in $x$ by repeatedly adjoining
+a finite number of nested logarithms, exponentials, and algebraic
+numbers or functions. Since $\sqrt{-1}$ is elementary, the
+trigonometric functions and their inverses are also elementary (when
+they are rewritten using complex exponentials and logarithms) as well
+as all the ``usual'' functions of calculus. For example,
+\begin{equation}
+\sin(x+\tan(x^3-\sqrt{x^3-x+1}))
+\end{equation}
+is elementary when rewritten as
+\[
+\frac{\sqrt{-1}}{2}(e^{t-x\sqrt{-1}}-e^{x\sqrt{-1}-t})
+{\rm\ where\ }
+t=\frac{1-e^{2\sqrt{-1}(x^3-\sqrt{x^3-x+1})}}
+{1+e^{2\sqrt{-1}(x^3-\sqrt{x^3-x+1})}}
+\]
+This tutorial describes recent algorithmic solutions to the {\sl
+problem of integration in finite terms}: 
+\index{integration in finite terms}
+to decide in a finite number
+of steps whether a given elementary funcction has an elementary
+indefinite integral, and to compute it explicitly if it exists. While
+this problem was studied extensively by Abel and Liouville during the
+last century, the difficulties posed by algebraic functions caused
+Hardy (1916) to state that ``there is reason to suppose that no such
+method can be given''. This conjecture was eventually disproved by
+Risch (1970), who described an algorithm for this problem in a series
+of reports \cite{12,13,14,15}. In the past 30 years, this procedure
+has been repeatedly improved, extended and refined, yielding practical
+algorithms that are now becoming standard and are implemented in most
+of the major computer algebra systems. In this tutorial, we outline
+the above algorithms for various classes of elementary functions,
+starting with rational functions and progressively increasing the
+class of functions up to general elementary functions. Proofs of
+correctness of the algorithms presented here can be found in several
+of the references, and are generally too long and too detailed to be
+described in this tutorial.
+
+{\bf Notations}: we write $x$ for the variable of integration, and '
+for the derivation $d/dx$. $\mathbb{Z}$,$\mathbb{Q}$,$\mathbb{R}$,and
+$\mathbb{C}$ denote respectively the integers, rational, real and
+complex numbers. All fields are commutative and, except when mentioned
+explicitly otherwise, have characteristic 0. If $K$ is a field, then
+$\overline{K}$ denotes its algebraic closure. For a polynomial $p$, 
+pp($p$) denotes the primitive
+part of $p$, {\sl i. e.} $p$ divided by the gcd of its coefficients.
+\section{Rational Functions}
+By a {\sl rational function}, we mean a quotient of polynomials in the
+integration variable $x$. This means that other functions can appear
+in the integrand, provided they do not involve $x$, hence that the
+coefficients of our polynomials in $x$ lie in an arbitrary field $K$
+satisfying: $\forall{a} \in K,\ a^{'}=0$.
+
+\subsection{The full partial-fraction algorithm}
+This method, which dates back to Newton, Leibniz, and Bernoulli,
+should not be used in practice, yet it remains the method found in
+most calculus tests and is often taught. Its major drawback is the
+factorization of the denominator of the integrand over the real or
+complex numbers. We outline it because it provides the theoretical
+foundations for all the subsequent algorithms. Let 
+$f \in \mathbb{R}(x)$ be our integrand, and write 
+$f=P+A/D$ where $P, A, D \in \mathbb{R}[x]$, $gcd(A,D)=1$, and
+$deg(A) < deg(D)$. Let
+\[
+D=c\prod_{i=1}^n(x-a_i)^{e_i}\prod_{j=1}^m(x^2+b_jx+c_j)^{f_j}
+\]
+be the irreducible factorization of $D$ over $\mathbb{R}$, where $c$,
+the $a_i$'s, $b_j$'s and $c_j$'s are in $\mathbb{R}$ and the $e_i$'s
+and $f_j$'s are positive integers. Computing the partial fraction
+decomposition of $f$, we get
+\[
+f=P+\sum_{i=1}^n\sum_{k=1}^{e_i}\frac{A_{ik}}{(x-a_i)^k}
++\sum_{j=1}^m\sum_{k=1}^{f_i}\frac{B_{jk}x+C_{jk}}{(x^2+b_jx+c_j)^k}
+\]
+where the $A_{ik}$'s, $B_{jk}$'s, and $C_{jk}$'s are in
+$\mathbb{R}$. Hence,
+\[
+\int{f}=\int{P}+\sum_{i=1}^n\sum_{k=1}^{e_i}\int{\frac{A_{ik}}{(x-a_i)^k}}
++\sum_{j=1}^m\sum_{k=1}^{f_i}\int{\frac{B_{jk}x+C_{jk}}{(x^2+b_jx+c_j)^k}}
+\]
+Computing $\int{P}$ poses no problem (it will for any other class of
+functions), and for the other terms we have
+\begin{equation}
+\int{\frac{A_{ik}}{(x-a_i)^k}}=\left\{
+\begin{array}{lc}
+A_{ik}(x-a_i)^{1-k}/(1-k)&{\rm if\ } k > 1\\
+A_{i1}\log(x-a_i)&{\rm if\ } k = 1\\
+\end{array}
+\right.
+\end{equation}
+and, noting that $b_j^2-4c_j < 0$ since $x^2+b_jx+c_j$ is irreducible
+in $\mathbb{R}$[x].
+\[
+\int\frac{B_{j1}x+C_{j1}}{(x^2+b_jx+c_j)}=
+\frac{B_{j1}}{2}\log(x^2+b_jx+c_j)
++\frac{2C_{j1}-b_jB_{j1}}{\sqrt{4c_j-b_j^2}}
+arctan\left(\frac{2x+b_j}{\sqrt{4c_j-b_j^2}}\right)
+\]
+and for $k > 1$,
+\[
+\begin{array}{lcl}
+\displaystyle
+\int{\frac{B_{jk}x+C_{jk}}{(x^2+b_jx+c_j)^k}}&=&
+\displaystyle\frac{(2C_{jk}-b_jB_{jk})x+b_jC_{jk}-2c_jB_{jk}}
+{(k-1)(4c_j-b_j^2)(x^2+b_jx+c_j)^{k-1}}\\
+&&\displaystyle+\int{\frac{(2k-3)(2C_{jk}-b_jB_{jk})}
+{(k-1)(4c_j-b_j^2)(x^2+b_jx+c_j)^{k-1}}}\\
+\end{array}
+\]
+This last formula is then used recursively until $k=1$.
+
+An alternative is to factor $D$ linearly over $\mathbb{C}$:
+$D=\prod_{i=1}^q(x-\alpha_i)^{e_i}$, and then use (2) on each term of
+\begin{equation}
+f=P+\sum_{i=1}^q\sum_{j=1}^{e_i}\frac{A_{ij}}{(x-\alpha_i)^j}
+\end{equation}
+Note that this alternative is applicable to coefficients in any field
+$K$, if we factor $D$ linearly over its algebraic closure
+$\overline{K}$, and is equivalent to expanding $f$ into its Laurent
+series at all its finite poles, since that series at 
+$x=\alpha_i \in \overline{K}$ is
+\[
+f=\frac{A_{ie_i}}{(x-\alpha_i)^{e_i}}
++\cdots
++\frac{A_{i2}}{(x-\alpha_i)^2}
++\frac{A_{i1}}{(x-\alpha_i)}
++\cdots
+\]
+where the $A_{ij}$'s are the same as those in (3). Thus, this approach
+can be seen as expanding the integrand into series around all the
+poles (including $\infty$), then integrating the series termwise, and
+then interpolating for the answer, by summing all the polar terms,
+obtaining the integral of (3). In addition, this alternative shows
+that any rational function $f \in K(x)$ has an elementary integral of
+the form
+\begin{equation}
+\int{f}=v+c_1\log(u_1)+\cdots+c_m\log(u_m)
+\end{equation}
+where $v,u_1,\ldots,u_m \in \overline{K}(x)$ are the rational
+functions, and $c_1,\ldots,c_m \in \overline{K}$ are constants. The
+original Risch algorithm is essentially a generalization of this
+approach that searches for integrals of arbitrary elementary functions
+in a form similar to (4).
+
+\subsection{The Hermite reduction}
+The major computational inconvenience of the full partial fraction
+approach is the need to factor polynomials over $\mathbb{R}$,
+$\mathbb{C}$, or $\overline{K}$, thereby introducing algebraic numbers
+even if the integrand and its integral are both in $\mathbb{Q}(x)$. On
+the other hand, introducing algebraic numbers may be necessary, for
+example it is proven in \cite{14} that any field containing an
+integral of $1/(x^2+2)$ must also contain $\sqrt{2}$. Modern research
+has yielded so-called ``rational'' algorithms that
+\begin{itemize}
+\item compute as much of the integral as possible with all
+calculations being done in $K(x)$, and
+\item compute the minimal algebraic extension of $K$ necessary to
+express the integral
+\end{itemize}
+The first rational algorithms for integration date back to the
+$19^{{\rm th}}$ century, when both Hermite\cite{6} and
+Ostrogradsky\cite{11} invented methods for computing the $v$ of (4)
+entirely within $K(x)$. We describe here only Hermite's method, since
+it is the one that has been generalized to arbitrary elementary
+functions. The basic idea is that if an irreducible $p \in K[x]$
+appears with multiplicity $k > 1$ in the factorization of the
+denominator of the integrand, then (2) implies that it appears with
+multiplicity $k-1$ in the denominator of the integral. Furthermore, it
+is possible to compute the product of all such irreducibles for each
+$k$ without factoring the denominator into irreducibles by computing
+its {\sl squarefree factorization}, {\sl i.e} a factorization
+$D=D_1D_2^2\cdots D_m^m$, where each $D_i$ is squarefree and 
+$gcd(D_i,D_j)=1$ for $i \ne j$. A straightforward way to compute it is
+as follows: let $R=gcd(D,D^{'})$, then $R=D_2D_2^3\cdots D_m^{m-1}$, so 
+$D/R=D_1D_2\cdots D_m$ and $gcd(R,D/R)=D_2\cdots D_m$, which implies
+finally that
+\[
+D_1=\frac{D/R}{gcd(R,D/R)}
+\]
+Computing recursively a squarefree factorization of $R$ completes the
+one for $D$. Note that \cite{23} presents a more efficient method for
+this decomposition. Let now $f \in K(x)$ be our integrand, and write
+$f=P+A/D$ where $P,A,D \in K[x]$, $gcd(A,D)=1$, and $deg(A)<deg(D)$. 
+Let $D=D_1D_2^2\cdots D_m^m$ be a squarefree factorization of $D$ and
+suppose that $m \ge 2$ (otherwise $D$ is already squarefree). Let then
+$V=D_m$ and $U=D/V^m$. Since $gcd(UV^{'},V)=1$, we can use the
+extended Euclidean algorithm to find $B,C \in K[x]$ such that
+\[
+\frac{A}{1-m}=BUV^{'}+CV
+\]
+and $deg(B) < deg(V)$. Multiplying both sides by $(1-m)/(UV^m)$ gives
+\[
+\frac{A}{UV^m}=\frac{(1-m)BV^{'}}{V^m}+\frac{(1-m)C}{UV^{m-1}}
+\]
+so, adding and subtracting $B^{'}/V^{m-1}$ to the right hand side, we
+get
+\[
+\frac{A}{UV^m}=\left(\frac{B^{'}}{V^{m-1}}-\frac{(m-1)BV^{'}}{V^m}\right)
++\frac{(1-m)C-UB^{'}}{UV^{m-1}}
+\]
+and integrating both sides yields
+\[
+\int\frac{A}{UV^m}=\frac{B}{V^{m-1}}+\int\frac{(1-m)C-UB^{'}}{UV^{m-1}}
+\]
+so the integrand is reduced to one with a smaller power of $V$ in the
+denominator. This process is repeated until the denominator is
+squarefree, yielding $g,h \in K(x)$ such that $f=g^{'}+h$ and $h$ has
+a squarefree denominator.
+
+\subsection{The Rothstein-Trager and Lazard-Rioboo-Trager algorithms}
+Following the Hermite reduction, we only have to integrate fractions
+of the form $f=A/D$ with $deg(A)<deg(D)$ and $D$ squarefree. It
+follows from (2) that
+\[
+\int{f}=\sum_{i=1}^n a_i\log(x-\alpha_i)
+\]
+where the $\alpha_i$'s are the zeros of $D$ in $\overline{K}$, and the
+$a_i$'s are the residues of $f$ at the $\alpha_i$'s. The problem
+is then to compute those residues without splitting $D$. Rothstein
+\cite{18} and Trager \cite{19} independently proved that the
+$\alpha_i$'s are exactly the zeros of
+\begin{equation}
+R=resultant_x(D,A-tD^{'}) \in K[t]
+\end{equation}
+and that the splitting field of $R$ over $K$ is indeed the minimal
+algebraic extension of $K$ necessary to express the integral in the
+form (4). The integral is then given by
+\begin{equation}
+\int\frac{A}{D}=\sum_{i=1}^m\sum_{a|R_i(a)=0}a\log(\gcd(D,A-aD^{'}))
+\end{equation}
+where $R=\prod_{i=1}^m R_i^{e_i}$ is the irreducible factorization of
+$R$ over $K$. Note that this algorithm requires factoring $R$ into
+irreducibles over $K$, and computing greatest common divisors in
+$(K[t]/(R_i))[x]$, hence computing with algebraic numbers. Trager and
+Lazard \& Rioboo \cite{7} independently discovered that those
+computations can be avoided, if one uses the subresultant PRS
+algorithm to compute the resultant of (5): let 
+$(R_0,R_1,\ldots R_k\ne 0,0,\ldots)$ be the subresultant PRS with
+respect to $x$ of $D$ and $A-tD^{'}$ and $R=Q_1Q_2^2\ldots Q_m^m$ be a 
+{\sl squarefree} factorization of their resultant. Then,
+\[
+\sum_{a|Q_i(a)=0} a\log(\gcd(D,A-aD^{'}))=\hbox{\hskip 5.0cm}
+\]
+\[
+\left\{
+\begin{array}{ll}
+\sum_{a|Q_i(a)=0} a \log(D) & {\rm if\ }i = deg(D)\\
+\sum_{a|Q_i(a)=0} a \log({\rm pp}_x(R_{k_i})(a,x))&
+{\rm where\ }deg(R_{k_i})=i,1 \le k_i \le n\\
+&{\rm if\ }i < deg(D)
+\end{array}
+\right.
+\]
+Evaluating ${\rm pp}_x(R_{k_i})$ at $t=a$ where $a$ is a root of $Q_i$
+is equivalent to reducing each coefficient with respect to $x$ of
+${\rm pp}_x(R_{k_i})$ module $Q_i$, hence computing in the algebraic
+extension $K[t]/(Q_i)$. Even this step can be avoided: it is in fact
+sufficient to ensure that $Q_i$ and the leading coefficient with
+respect to $x$ of $R_{k_i}$ do not have a nontrivial common factor,
+which implies then that the remainder by $Q_i$ is nonzero, see
+\cite{10} for details and other alternatives for computing
+${\rm pp}_x(R_{k_i})(a,x)$
+
+\section{Algebraic Functions}
+By an {\sl algebraic function}, we mean an element of a finitely
+generated algebraic extension $E$ of the rational function field
+$K(x)$. This includes nested radicals and implicit algebraic
+functions, not all of which can be expressed by radicals. It turns out
+that the algorithms we used for rational functions can be extended to
+algebraic functions, but with several difficulties, the first one
+being to define the proper analogues of polynomials, numerators and
+denominators. Since $E$ is algebraic over $K(x)$, for any
+$\alpha \in E$, there exists a polynomial $p \in K[x][y]$ such that 
+$p(x,\alpha)=0$. We say that $\alpha \in E$ is {\sl integral over}
+$K[x]$ if there is a polynomial $p \in K[x][y]$, {\sl monic in y},
+such that $p(x,\alpha)=0$. Integral elements are analogous to
+polynomials in that their value is defined for any 
+$x \in \overline{K}$ (unlike non-integral elements, which must have at
+least one pole in $\overline{K}$). The set
+\[
+{\bf O}_{K[x]} = \{\alpha \in E {\rm\ such\ that\ }\alpha
+{\rm\ is\ integral\ over\ }K[x]\}
+\]
+is called the {\sl integral closure of} $K[x]$ {\sl in E}. It is a
+ring and a finitely generated $K[x]$-module. Let $\alpha \in E^{*}$ be
+any element and $p=\sum_{i=0}^m a_iy^i \in K[x][y]$ be such that
+$p(x,\alpha)=0$ and $a_m \ne 0$. Then, $q(x,a_my)=0$ where
+$q=y^m+\sum_{i=0}^{m-1} a_ia_m^{m-i-1}y^i$ is monic in $y$, 
+so $a_my \in {\bf O}_{K[x]}$. We need a canonical representation
+for algebraic functions similar to quotients of polynomials for
+rational functions. Expressions as quotients of integral functions are
+not unique, for example, $\sqrt{x}/x=x/\sqrt{x}$. Hoever, $E$ is a
+finite-dimensional vector space over $K(x)$, so let $n=[E:K(x)]$ and
+$w=(w_1,\ldots,w_n)$ be any basis for $E$ over $K(x)$. By the above
+remark, there are $a_1,\ldots,a_n \in K(x)^{*}$ such that
+$a_iw_i \in {\bf O}_{K[x]}$ for each $i$. Since
+$(a_1w_1,\ldots,a_nw_n)$ is also a basis for $E$ over $K(x)$, we can
+assume without loss of generality that the basis $w$ is composed of
+integral elements. Any $\alpha \in E$ can be written uniquely as
+$\alpha = \sum_{i=1}^n f_iw_i$ for $f_1,\ldots,f_n \in K(x)$, and
+putting the $f_i$'s over a monic common denominator $D \in K[x]$, we
+get an expression
+\[
+\alpha = \frac{A_1w_1+\ldots+A_nw_n}{D}
+\]
+where $A_1,\ldots,A_n \in K[x]$ and $\gcd(D,A_1,\ldots,A_n)=1$. We
+call $\sum_{i=1}^n A_iw_i \in {\bf O}_{K[x]}$ and
+$D \in K[x]$ respectively the {\sl numerator} and {\sl denominator} of
+$\alpha$ with respect to $w$. They are defined uniquely once the basis
+$w$ is fixed.
+\subsection{The Hermite reduction}
+Now that we have numerators and denominators for algebraic functions,
+we can attempt to generalize the Hermite reduction of the previous
+section, so let $f \in E$ be our integrand, 
+$w=(w_1,\ldots,w_n) \in {{\bf O}_{K[n]}}^{n}$ be a basis for $E$
+over $K(x)$ and let $\sum_{i=1}^m A_iw_i \in {\bf O}_{K[x]}$
+and $D \in K[x]$ be the numerator and denominator of $f$ with respect
+to $w$, Let $D=D_1D_2^2\ldots D_m^m$ be a squarefree factorization of
+$D$ and suppose that $m \ge 2$. Let then $V=D_m$ and $U=D/V^m$, and we
+ask whether we can compute 
+$B=\sum_{i=1}^n B_iw_i \in {\bf O}_{K[x]}$ and $h \in E$ such
+that $deg(B_i) < deg(V)$ for each $i$,
+\begin{equation}
+\int\frac{\sum_{i=1}^n A_iw_i}{UV^m}=\frac{B}{V^{m-1}}+\int{h}
+\end{equation}
+and the denominator of $h$ with respect to $w$ has no factor of order
+$m$ or higher. This turns out to reduce to solving the following
+linear system
+\begin{equation}
+f_1S_1+\ldots+f_nS_n=A_1w_1+\ldots+A_nw_n
+\end{equation}
+for $f_1,\ldots,f_n \in K(x)$, where
+\begin{equation}
+S_i=UV^m\left(\frac{w_i}{V^{m-1}}\right)^{'}\quad{\rm for\ }1\le i\le n
+\end{equation}
+Indeed, suppose that (8) has a solution $f_1,\ldots,f_n \in K(x)$, and
+write $f_i=T_i/Q$, where $Q,T_1,\ldots,T_n \in K[x]$ and
+$\gcd(Q,T_1,\ldots,T_n)=1$. Suppose further that $\gcd(Q,V)=1$. Then,
+we can use the extended Euclidean algorithm to find $A,R \in K[x]$
+such that $AV+RQ=1$, and Euclidean division to find $Q_i,B_i \in K[x]$
+such that $deg(B_i)<deg(V)$ when $B_i \ne 0$ and $RT_i=VQ_i+B_i$ for
+each $i$. We then have
+\[
+\begin{array}{lcl}
+h&=&\displaystyle
+f-\left(\frac{\sum_{i=1}^n B_iw_i}{V^{m-1}}\right)^{'}\\
+&&\\
+&=&\displaystyle
+\frac{\sum_{i=1}^nA_iw_i}{UV^m}
+-\frac{\sum_{i=1}^nB_i^{'}w_i}{V^{m-1}}
+-\sum_{i=1}^n(RT_i-VQ_i)\left(\frac{w_i}{V^{m-1}}\right)^{'}\\
+&&\\
+&=&\displaystyle
+\frac{\sum_{i=1}^nA_iw_i}{UV^m}
+-\frac{R\sum_{i=1}^nT_iS_i}{UV^m}
++V\sum_{i=1}^nQ_i\left(\frac{w_i}{V^{m-1}}\right)^{'}
+-\frac{\sum_{i=1}^nB_i^{'}w_i}{V^{m-1}}\\
+&&\\
+&=&\displaystyle
+\frac{(1-RQ)\sum_{i=1}^nA_iw_i}{UV^m}
++\frac{\sum_{i=1}^nQ_iw_i^{'}}{V^{m-2}}
+-(m-1)V^{'}\frac{\sum_{i=1}^nQ_iw_i}{V^{m-1}}
+-\frac{\sum_{i=1}^nB_i^{'}w_i}{V^{m-1}}\\
+&&\\
+&=&\displaystyle
+\frac{\sum_{i=1}^nAA_iw_i}{UV^{m-1}}
+-\frac{\sum_{i=1}^n((m-1)V^{'}Q_i+B_i^{'})w_i}{V^{m-1}}
++\frac{\sum_{i=1}^nQ_iw_i^{'}}{V^{m-2}}
+\end{array}
+\]
+Hence, if in addition the denominator of $h$ has no factor of order
+$m$ or higher, then $B=\sum_{i=1}^nB_iw_i \in {\bf O}_{K[x]}$
+and $h$ solve (7) and we have reduced the integrand. Unfortunately, it
+can happen that the denominator of $h$ has a factor of order $m$ or
+higher, or that (8) has no solution in $K(x)$ whose denominator is
+coprime with $V$, as the following example shows.
+
+\noindent
+{\bf Example 1} Let $E=K(x)[y]/(y^4+(x^2+x)y-x^2)$ {\sl with basis}
+$w=(1,y,y^2,y^3)$ {\sl over} $K(x)$ {\sl and consider the integrand}
+\[
+f=\frac{y^3}{x^2}=\frac{w_4}{x^2}\in E
+\]
+We have $D=x^2$, so $U=1,V=x$ and $m=2$.
+Then, $S_1=x^2(1/x)^{'}=-1$,
+\[
+\begin{array}{lcl}
+\displaystyle S_2&=&x^2\left(\frac{y}{x}\right)^{'}\\
+&&\\
+\displaystyle &=&\frac{24(1-x^2)y^3+32x(1-x)y^2-(9x^4+45x^3+209x^2+63x+18)y
+-18x(x^3+x^2-x-1)}{27x^4+108x^3+418x^2+108x+27}\\
+&&\\
+\displaystyle S_3&=&x^2\left(\frac{y^2}{x}\right)^{'}\\
+&&\\
+\displaystyle &=&
+\frac{64x(1-x)y^3+9(x^4+2x^3-2x-1)y^2+12x(x^3+x^2-x-1)y+48x^2(1-x^2)}
+{27x^4+108x^3+418x^2+108x+27}\\
+&&\\
+and&&\\
+&&\\
+\displaystyle S_4&=&x^2\left(\frac{y^3}{x}\right)^{'}\\
+&&\\
+\displaystyle &=&\frac{(27x^4+81x^3+209x^2+27x)y^3+18x(x^3+x^2-x-1)y^2
++24x^2(x^2-1)y+96x^3(1-x)}
+{27x^4+108x^3+418x^2+108x+27}
+\end{array}
+\]
+{\sl so (8) becomes}
+\begin{equation}
+M
+\left(
+\begin{array}{c}
+f_1\\
+f_2\\
+f_3\\
+f_4
+\end{array}
+\right)=
+\left(
+\begin{array}{c}
+0\\
+0\\
+0\\
+1
+\end{array}
+\right)
+\end{equation}
+{\sl where}
+\[
+M=\left(
+\begin{array}{cccc}
+\displaystyle -1&\frac{-18x(x^3+x^2-x-1)}{F}&\frac{48x^2(1-x^2)}{F}
+&\frac{96x^3(1-x)}{F}\\
+\displaystyle 0&\frac{-(9x^4+45x^3+209x^2+63x+18)}{F}
+&\frac{12x(x^3+x^2-x-1)}{F}&\frac{24x^2(x^2-1)}{F}\\
+\displaystyle 0&\frac{32x(1-x)}{F}&\frac{9(x^4+2x^3-2x-1)}{F}
+&\frac{18x(x^3+x^2-x-1)}{F}\\
+\displaystyle 0&\frac{24(1-x^2)}{F}&\frac{64x(1-x)}{F}
+&\frac{(27x^4+81x^3+209x^2+27x)}{F}
+\end{array}
+\right)
+\]
+and $F=27x^4+108x^3+418x^2+108x+27$. The system (10) admits a unique
+solution $f_1=f_2=0, f_3=-2$ and $f_4=(x+1)/x$, whose denominator is
+not coprime with $V$, so the Hermite reduction is not applicable.
+
+The above problem was first solved by Trager \cite{20}, who proved 
+that if $w$ is an {\sl integral basis, i.e.} its elements generate 
+${\bf O}_{K[x]}$ over $K[x]$, then the system (8) always has a
+unique solution in $K(x)$ when $m > 1$, and that solution always has a
+denominator coprime with V. Furthermore, the denominator of each
+$w_i^{'}$ must be squarefree, implying that the denominator of $h$ is
+a factor of $FUV^{m-1}$ where $F \in K[x]$ is squarefree and coprime
+with $UV$. He also described an algorithm for computing an integral
+basis, a necessary preprocessing for his Hermite reduction. The main
+problem with that approach is that computing the integral basis,
+whether by the method of \cite{20} or the local alternative \cite{21},
+can be in general more expansive than the rest of the reduction
+process. We describe here the lazy Hermite reduction \cite{5}, which
+avoids the precomputation of an integral basis. It is based on the
+observation that if $m > 1$ and (8) does not have a solution allowing
+us to perform the reduction, then either
+\begin{itemize}
+\item the $S_i$'s are linearly dependent over $K(x)$, or
+\item (8) has a unique solution in $K(x)$ whose denominator has a
+nontrivial common factor with $V$, or
+\item the denominator of some $w_i$ is not squarefree
+\end{itemize}
+In all of the above cases, we can replace our basis $w$ by a new one,
+also made up of integral elements, so that that $K[x]$-module
+generated by the new basis strictly contains the one generated by $w$:
+
+\noindent
+{\bf Theorem 1 (\cite{5})} {\sl Suppose that $m \ge 2$ and that 
+$\{S_1,\ldots,S_n\}$ as given by (9) are linearly dependent over $K(x)$,
+and let $T_1,\ldots,T_n \in K[x]$ be not all 0 and such that
+$\sum_{i=1}^n T_iS_i=0$. Then,
+\[
+w_0=\frac{U}{V}\sum_{i=1}^n T_iw_i \in {\bf O}_{K[x]}
+\]
+Furthermore, if $\gcd(T_1,\ldots,T_n)=1$ then
+$w_0 \notin K[x]w_1+\cdots+K[x]w_n$.}
+
+\noindent
+{\bf Theorem 2 (\cite{5})} {\sl Suppose that $m \ge 2$ and that
+$\{S_1,\ldots,S_n\}$ as given by (9) are linearly independent over
+$K(x)$, and let $Q,T_1,\ldots,T_n \in K[x]$ be such that
+\[
+\sum_{i=1}^n A_iw_i = \frac{1}{Q}\sum_{i=1}^n T_iS_i
+\]
+Then,
+\[
+w_0=\frac{U(V/\gcd(V,Q))}{\gcd(V,Q)}\sum_{i=1}^n T_iw_i \in 
+{\bf O}_{K[x]}
+\]
+Furthermore, 
+if $\gcd(Q,T_1,\ldots,T_n)=1$ and $\deg(\gcd(V,Q)) \ge 1$, then
+$w_0 \notin K[x]w_1+\cdots+K[x]w_n$.}
+
+{\bf Theorem 3 (\cite{5})} {\sl Suppose that the denominator $F$ of
+some $w_i$ is not squarefree, and let $F=F_1F_2^2\cdots F_k^k$ be its
+squarefree factorization. Then,}
+\[
+w_0=F_1\cdots F_kw_i^{'} \in {\bf O}_{K[x]} \backslash
+(K[x]w_1+\cdots+K[x]w_n).
+\]
+
+The lazy Hermite reduction proceeds by solving the system (8) in
+$K(x)$. Either the reduction will succeed, or one of the above
+theorems produces an element
+$w_0 \in {\bf O}_{K[x]} \backslash (K[x]w_1+\cdots+K[x]w_n).$ Let then
+$\sum_{i=1}^n C_iw_i$ and $F$ be the numerator and denominator of
+$w_0$ with respect to $w$. Using Hermitian row reduction, we can zero
+out the last row of
+\[
+\left(
+\begin{array}{cccc}
+F  &   &      &\\
+   &F  &      &\\
+   &   &\ddots&\\
+   &   &      &F\\
+C_1&C_2&\cdots&C_n
+\end{array}
+\right)
+\]
+obtaining a matrix of the form
+\[
+\left(
+\begin{array}{cccc}
+C_{1,1} & C_{1,2} & \cdots & C_{1,n}\\
+C_{2,1} & C_{2,2} & \cdots & C_{2,n}\\
+\vdots  & \vdots  &        & \vdots\\
+C_{n,1} & C_{n,2} & \cdots & C_{n,n}\\
+0       & 0       & \cdots & 0\\
+\end{array}
+\right)
+\]
+with $C_{ij} \in K[x]$. Let $\overline{w}_i=(\sum_{j=1}^n
+C_{ij}w_j)/F$
+for $1 \le i \le n$. Then, 
+$\overline{w}=(\overline{w}_1,\ldots,\overline{w}_n)$ is a basis for
+$E$ over $K$ and
+\[
+K[x]\overline{w}_1+\cdots+K[x]\overline{w}_n=K[x]w_1+\cdots+K[x]w_n+K[x]w_0
+\]
+is a submodule of ${\bf O}_{K[x]}$, which strictly contains
+$K[x]w_1+\cdots+K[x]w_n$, since it contains $w_0$. Any strictly
+increasing chain of submodules of ${\bf O}_{K[x]}$ must
+stabilize after a finite number of steps, which means that this
+process produces a basis for which either the Hermite reduction can be
+carried out, or for which $f$ has a squarefree denominator.
+
+\noindent
+{\bf Example 2} Continuing example 1 for which the Hermite reduction
+failed, Theorem 2 implies that
+\[
+w_0=\frac{1}{x}(-2xw_3+(x+1)w_4)=(-2xy^2+(x+1)y^3)x \in {\bf O}_{K[x]}
+\]
+Performing a Hermitian row reduction on
+\[
+\left(
+\begin{array}{cccc}
+x& &   & \\
+ &x&   & \\
+ & &x  & \\
+ & &   &x\\
+0&0&-2x&x+1\\
+\end{array}
+\right)
+\]
+yields
+\[
+\left(
+\begin{array}{cccc}
+x& & & \\
+ &x& & \\
+ & &x& \\
+ & & &1\\
+0&0&0&0\\
+\end{array}
+\right)
+\]
+so the new basis is $\overline{w}=(1,y,y^2,y^3/x)$, and the
+denominator of $f$ with respect to $\overline{w}$ is 1, which is
+squarefree. 
+
+\subsection{Simple radical extensions}
+The integration algorithm becomes easier when $E$ is a simple radical
+extension of $K(x)$, {\sl i.e.} $E=K(x)[y]/(y^n-a)$ for some 
+$a \in K(x)$. Write $a=A/D$ where $A,D \in K[x]$, and let
+$AD^{n-1}=A_1A_2^2\cdots A_k^k$ be a squarefree factorization of 
+$AD^{n-1}$. Writing $i=nq_i+r_i$, for $1 \le i \le k$, where
+$0 \le r_i < n$, let $F=A_1^{q_1}\cdots A_k^{q_k}$,
+$H=A_1^{r_1}\cdots A_k^{r_k}$ and $z=yD/F$. Then,
+\[
+z^n=\left(y\frac{D}{F}\right)^n=\frac{y^nD^n}{F^n}=\frac{AD^{n-1}}{F}
+=A_1^{r_1}\cdots A_k^{r_k}=H
+\]
+Since $r_i < n$ for each $i$, the squarefree factorization of $H$ is
+of the form $H=H_1H_2^2\cdots H_m^m$ with $m<n$. An integral basis is
+then $w=(w_1,\ldots,w_n)$ where
+\begin{equation}
+w_i=\frac{z^{i-1}}{\prod_{j=1}^m H_j^{\lfloor(i-1)j/n\rfloor}}\quad
+1 \le i \le n
+\end{equation}
+and the Hermite reductions with respect to the above basis is always 
+guaranteed to succeed. Furthermore, when using that basis, the system
+(8) becomes diagonal and its solution can be written explicitly:
+writing $D_i=\prod_{j=1}^m H_j^{\lfloor ij/n\rfloor}$ we have
+\[
+\begin{array}{ccl}
+S_i & = &\displaystyle UV^m\left(\frac{w_i}{V^{m-1}}\right)^{'}
+=UV^m\left(\frac{z^{i-1}}{D_{i-1}V^{m-1}}\right)^{'}\\
+&&\\
+&=&\displaystyle UV^m\left(\frac{i-1}{n}\frac{H^{'}}{H}-
+\frac{{D_{i-1}}^{'}}{D_{i-1}}
+-(m-1)\frac{V^{'}}{V}\right)\left(\frac{z^{i-1}}{D_{i-1}V^{m-1}}\right)\\
+&&\\
+&=&\displaystyle U\left(V\left(\frac{i-1}{n}\frac{H^{'}}{H}
+-\frac{{D_{i-1}}^{'}}{D_{i-1}}\right)-(m-1)V^{'}\right)w_i
+\end{array}
+\]
+so the unique solution of (8) in $K(x)$ is
+\begin{equation}
+f_i=\frac{A_i}{U\left(V\left(\frac{i-1}{n}\frac{H^{'}}{H}-
+\frac{{D_{i-1}}^{'}}{D_{i-1}}\right)-(m-1)V^{'}\right)}
+\quad{\rm for\ }1 \le i \le n
+\end{equation}
+and it can be shown that the denominator of each $f_i$ is coprime with 
+$V$ when $m \ge 2$.
+
+\noindent
+{\bf Example 3} {\sl Consider
+\[
+\int\frac{(2x^8+1)\sqrt{(x^8+1)}}{x^{17}+2x^9+x}~dx
+\]
+The integrand is
+\[
+f=\frac{(2x^8+1)y}{x^{17}+2x^9+x} \in E
+=\mathbb{Q}(x)[y]/(y^2-x^8-1)
+\]
+so $H=x^8+1$ which is squarefree, implying that the integral basis
+(11) is $(w_1,w_2)=(1,y)$. The squarefree factorization of
+$x^{17}+2x^9+x$ is $x(x^8+1)^2$ so $U=x$, $V=x^8+1$, $m=2$, and the
+solution (12) of (8) is
+\[
+f_1=0,\quad
+f_2=\frac{2x^8+1}{x\left((x^8+1)\frac{1}{2}\frac{8x^7}{x^8+1}
+-8x^7\right)}=-\frac{(2x^8+1)/4}{x^8}
+\]
+We have $Q=x^8$, so $V-Q=1$, $A=1$, $R=-1$ and $RQf_2=V/2-1/4$,
+implying that
+\[
+B=-\frac{y}{4}\quad {\rm and}\quad h=f-\left(\frac{B}{V}\right)^{'}
+=\frac{y}{x(x^8+1)}
+\]
+solve (7), i.e.
+\[
+\int\frac{(2x^8+1)\sqrt{(x^8+1)}}{x^{17}+2x^9+x}~dx=
+-\frac{\sqrt{x^8+1}}{4(x^8+1)}
++\int\frac{\sqrt{x^8+1}}{x(x^8+1)}~dx
+\]
+and the remaining integrand has a squarefree denominator.}
+
+\subsection{Liouville's Theorem}
+Up to this point, the algorithms we have presented never fail, yet it
+can happen that an algebraic function does not have an elementary
+integral, for example
+\[
+\int{\frac{x~dx}{\sqrt{1-x^3}}}
+\]
+which is not an elementary function of $x$. So we need a way to
+recognize such functions before completing the integration
+algorithm. Liouville was the first to state and prove a precise
+theorem from Laplace's observation that we can restrict the elementary
+integration problem by allowing only new logarithms to appear linearly
+in the integral, all the other terms appearing in the integral being
+already in the integrand.
+
+{\bf Theorem 4 (Liouville \cite{8,9})} {\sl
+Let $E$ be an algebraic extension of the rational function field
+$K(x)$, and $f \in E$. If $f$ has an elementary integral, then there
+exist $v \in E$, constants $c_1,\ldots,c_n \in \overline{K}$ and
+$u_1,\ldots,u_k \in E(c_1,\ldots,c_k)^{*}$ such that}
+\begin{equation}
+f=v^{'}+c_1\frac{u_1^{'}}{u_1}+\cdots+c_k\frac{u_k^{'}}{u_k}
+\end{equation}
+The above is a restriction to algebraic functions of the strong
+Liouville Theorem, whose proof can be found in \cite{4,14}. An elegant
+and elementary algebraic proof of a slightly weaker version can be
+found in \cite{17}. As a consequence, we can look for an integral of
+the form (4), Liouville's Theorem guaranteeing that there is no
+elementary integral if we cannot find one in that form. Note that the
+above theorem does not say that every integral must have the above
+form, and in fact that form is not always the most convenient one, for
+example, 
+\[
+\int{\frac{dx}{1+x^2}}=arctan(x)=\frac{\sqrt{-1}}{2}
+\log\left(\frac{\sqrt{-1}+x}{\sqrt{-1}-x}\right)
+\]
+
+\subsection{The integral part}
+Following the Hermite reduction, we can assume that we have a basis 
+$w=(w_1,\ldots,w_n)$ of $E$ over $K(x)$ made of integral elements such
+that our integrand is of the form $f=\sum_{i=1}^n A_iw_i/D$ where 
+$D \in K[x]$ is squarefree. Given Liouville's Theorem, we now have to
+solve equation (13) for $v$, $u_1,\ldots,u_k$ and the constants 
+$c_1,\ldots,c_k$. Since $D$ is squarefree, it can be shown that 
+$v \in {\bf O}_{K[x]}$ for any solution, and in fact $v$
+corresponds to the polynomial part of the integral of rational
+functions. It is however more difficult to compute than the integral
+of polynomials, so Trager \cite{20} gave a change of variable that
+guarantees that either $v^{'}=0$ or $f$ has no elementary integral. In
+order to describe it, we need to define the analogue for algebraic
+functions of having a nontrivial polynomial part: we say that 
+$\alpha \in E$ is {\sl integral at infinity} if there is a polynomial
+$p=\sum_{i=1}^m a_iy^i \in K[x][y]$ such that $p(x,\alpha)=0$ and
+$deg(a_m) \ge deg(a_i)$ for each $i$. Note that a rational function
+$A/D \in K(x)$ is integral at infinity if and only if 
+$deg(A) \le deg(D)$ since it is a zero of $Dy-A$. When $\alpha-E$ is
+not integral at infinity, we say that it has a {\sl pole at
+infinity}. Let
+\[
+{\bf O}_\infty = \{\alpha \in E {\rm\ such\ that\ }\alpha
+{\rm\ is\ integral\ at\ infinity}\}
+\]
+A set $(b_1,\ldots,b_n) \in E^n$ is called {\sl normal at infinity} if
+there are $r_1,\ldots,r_n \in K(x)$ such that every 
+$\alpha \in {\bf O}_\infty$ can be written as
+$\alpha = \sum_{i=1}^n B_ir_ib_i/C$ where $C,B_1,\ldots,B_n \in K[x]$
+and $deg(C) \ge deg(B_i)$ for each $i$. We say that the differential
+$\alpha ~dx$ is integral at infinity if 
+$\alpha x^{1+1/r} \in {\bf O}_\infty$ where $r$ is the smallest
+ramification index at infinity. Trager \cite{20} described an
+algorithm that converts an arbitrary integral basis $w_1,\ldots,w_n$
+into one that is also normal at infinity, so the first part of his
+integration algorithm is as follows:
+\begin{enumerate}
+\item Pick any basis $b=(b_1,\ldots,b_n)$ of $E$ over $K(x)$ that is
+composed of integral elements.
+\item Pick an integer $N \in \mathbb{Z}$ that is not zero of the
+denominator of $f$ with respect to $b$, nor of the discriminant of $E$
+over $K(x)$, and perform the change of variable $x=N+1/z$,
+$dx=-dz/z^2$ on the integrand.
+\item Compute an integral basis $w$ for $E$ over $K(z)$ and make it
+normal at infinity
+\item Perform the Hermite reduction on $f$ using $w$, this yields 
+$g,h \in E$ such that $\int{f~dz}=g+\int{h~dz}$ and $h$ has a
+squarefree denominator with respect to $w$.
+\item If $hz^2$ has a pole at infinity, then $\int{f~dz}$ and
+$\int{h~dz}$ are not elementary functions
+\item Otherwise, $\int{h~dz}$ is elementary if and only if there are
+constants $c_1,\ldots,c_k \in \overline{K}$ and 
+$u_1,\ldots,u_k \in E(c_1,\ldots,c_k)^{*}$ such that
+\end{enumerate}
+\begin{equation}
+h=\frac{c_1}{u_1}\frac{du_1}{dz}+\cdots+\frac{c_k}{u_k}\frac{du_k}{dz}
+\end{equation}
+The condition that $N$ is not a zero of the denominator of $f$ with
+respect to $b$ implies that the $f~dz$ is integral at infinity after
+the change of variable, and Trager proved that if $h~dz$ is not
+integral at infinity after the Hermite reduction, then $\int{h~dz}$
+and $\int{f~dz}$ are not elementary functions. The condition that $N$
+is not a zero of the discriminant of $E$ over $K(x)$ implies that the
+ramification indices at infinity are all equal to 1 after the change
+of variable, hence that $h~dz$ is integral at infinity if and only if
+$hz^2 \in {\bf O}_\infty$. That second condition on $N$ can be
+disregarded, in which case we must replace $hz^2$ in step 5 by 
+$hz^{1+1/r}$ where $r$ is the smallest ramification index at
+infinity. Note that $hz^2 \in {\bf O}_\infty$ implies that 
+$hz^{1+1/r} \in {\bf O}_\infty$, but not conversely. Finally, we
+remark that for simple radical extensions, the integral basis (11) is
+already normal at infinity.
+
+Alternatively, we can use lazy Hermite reduction in the above
+algorithm: in step 3, we pick any basis made of integral elements,
+then perform the lazy Hermite reduction in step 4. If $h \in K(z)$
+after the Hermite reduction, then we can complete the integral without
+computing an integral basis. Otherwise, we compute an integral basis
+and make it normal at infinity between steps 4 and 5. This lazy
+variant can compute $\int{f~dx}$ whenever it is an element of $E$
+without computing an integral basis.
+
+\subsection{The logarithmic part}
+Following the previous sections, we are left with solving equation
+(14) for the constants $c_1,\ldots,c_k$ and for $u_1,\ldots,u_k$. We
+must make at this point the following additional assumptions:
+\begin{itemize}
+\item we have an integral primitive element for $E$ over $K(z)$, {\sl
+i.e.} $y \in {\bf O}_{K[z]}$ such that $E=K(z)(y)$,
+\item $[E : K(z)]=[E : \overline{K}(z)]$, {\sl i.e.} the minimal
+polynomial for $y$ over $K[z]$ is absolutely reducible, and
+\item we have an integral basis $w=(w_1,\ldots,w_n)$ for $E$ over
+$K(z)$, and $w$ is normal at infinity
+\end{itemize}
+A primitive element can be computed by considering linear combinations
+of the generators of $E$ over $K(x)$ with random coefficients in
+$K(x)$, and Trager \cite{20} describes an absolute factorization
+algorithm, so the above assumptions can be ensured, although those
+steps can be computationally very expensive, except in the case of
+simple radical extensions. Before describing the second part of
+Trager's integration algorithm, we need to define some concepts from
+the theory of algebraic curves. Given a finite algebraic extension 
+$E=K(z)(y)$ of $K(z)$, a {\sl place} $P$ of $E$ is a proper local
+subring of $E$ containing $K$, and a {\sl divisor} is a formal sum
+$\sum{n_PP}$ with finite support, where the $n_P$'s are integers and
+the $P$'s are places. Let $P$ be a place, then its maximal ideal
+$\mu_P$ is principal, so let $p\in E$ be a generator of $\mu_P$. The
+{\sl order at} $P$ is the function 
+$\nu_P : E^{*} \rightarrow \mathbb{Z}$ which maps $f \in E^{*}$ to the
+largest $k \in \mathbb{Z}$ such that $f \in p^kP$. Given 
+$f \in E^{*}$, the {\sl divisor of} $f$ is $(f) = \sum{\nu_P(f)P}$
+where the sum is taken over all the places. It has finite support
+since $\nu_P(f) \ne 0$ if and only if $P$ is a pole or zero of
+$f$. Finally, we way that a divisor $\delta = \sum{n_PP}$ is
+{\sl principal} if $\delta=(f)$ for some $f \in E^{*}$. Note that if 
+$\delta$ is principal, the $\sum{n_P}=0$, but the converse is not
+generally true, except if $E=K(z)$. Trager's algorithm proceeds
+essentially by constructing candidate divisors for the $u_i$'s of
+(14): 
+\begin{itemize}
+\item Let $\sum_{i=1}^n A_iw_i$ be the numerator of $h$ with respect
+to $w$, and $D$ be its (squarefree) denominator
+\item Write $\sum_{i=1}^n A_iw_i=G/H$, where $G \in K[z,y]$ and 
+$H \in K[z]$
+\item Let $f \in K[z,y]$ be the (monic) minimum polynomial for $y$
+over $K(z)$, $t$ be a new indeterminante and compute
+\[
+R(t)={\rm resultant_z\ }\left({\rm\ pp_t }\left({\rm\ resultant_y\ }\left(
+G-tH\frac{dD}{dz},F\right)\right),D\right) \in K[t]
+\]
+\item Let $\alpha_1,\ldots,\alpha_s \in \overline{K}$ be the distinct
+nonzero roots of $R$, $(q_1,\ldots,q_k)$ be a basis for the vector
+space that they generate over $\mathbb{Q}$, write
+$\alpha_i=r_{i1}q_1+\cdots+r_{ik}q_k$ for each $i$, where 
+$r_{ij} \in \mathbb{Q}$ and let $m > 0$ be a common denominator for
+all the $r_{ij}$'s
+\item For $1 \le j \le k$, let 
+$\delta_j=\sum_{i=1}^s mr_{ij}\sum_l r_lP_l$ where $r_l$ is the
+ramification index of $P_l$ and $P_l$ runs over all the places at
+which $h~dz$ has residue $r_i\alpha_i$
+\item If there are nonzero integers $n_1,\ldots,n_k$ such that 
+$n_j\delta_j$ is principal for each $j$, then let
+\[
+u=h-\frac{1}{m}\sum_{j=1}^k\frac{q_j}{n_ju_j}\frac{du_j}{dz}
+\]
+where $u_j \in E(\alpha_1,\ldots,\alpha_s)^{*}$ is such that 
+$n_j\delta_j=(u_j)$. If $u=0$, then 
+$\int{h~dz}=\sum_{j=1}^k q_j\log(u_j)/(mn_j)$, otherwise if either 
+$u \ne 0$ or there is no such integer $n_j$ for at least one $j$,
+then $h~dz$ has no elementary integral.
+\end{itemize}
+Note that this algorithm expresses the integral, when it is
+elementary, with the smallest possible number of logarithms. Steps 3
+to 6 requires computing in the splitting field $K_0$ of $R$ over $K$,
+but it can be proven that, as in the case of rational functions, $K_0$
+is the minimal algebraic extension of $K$ necessary to express the
+integral in the form (4). Trager \cite{20} describes a representation
+of divisors as fractional ideals and gives algorithms for the
+arithmetic of divisors and for testing whether a given divisor is
+principal. In order to determine whether there exists an integer $N$
+such that $N\delta$ is principal, we need to reduce the algebraic
+extension to one over a finite field $\mathbb{F}_{p^q}$ for some
+``good'' prime $p \in \mathbb{Z}$. Over $\mathbb{F}_{p^q}$, it is
+known that for every divisor $\delta=\sum{n_PP}$ such that
+$\sum{n_P}=0$, $M\delta$ is principal for some integer
+$1 \le M \le (1+\sqrt{p^q})^{2g}$, where $g$ is the genus of the curve
+\cite{22}, so we compute such an $M$ by testing $M=1,2,3,\ldots$ until
+we find it. It can then be shown that for almost all primes $p$, if
+$M\delta$ is not principal in characteristic 0, the $N\delta$ is not
+principal for any integer $N \ne 0$. Since we can test whether the
+prime $p$ is ``good'' by testing whether the image in
+$\mathbb{F}_{p^q}$ of the discriminant of the discriminant of the
+minimal polynomial for $y$ over $K[z]$ is 0, this yields a complete
+algorithm. In the special case of hyperelliptic extensions, {\sl i.e.}
+simple radical extensions of degree 2, Bertrand \cite{1} describes a
+simpler representation of divisors for which the arithmetic and
+principality tests are more efficient than the general methods.
+
+\noindent
+{\bf Example 4} {\sl
+Continuing example 3, we were left with the integrand
+\[
+\frac{\sqrt{x^8+1}}{x(x^8+1)}=\frac{w_2}{x(x^8+1)} \in E
+=\mathbb{Q}(x)[y]/(y^2-x^8-1)
+\]
+where $(w_1,w_2)=(1,y)$ is an integral basis normal at infinity, and
+the denominator $D=x(x^8+1)$ of the integrand is squarefree. Its
+numerator is $w_2=y$, so the resultant of step 3 is
+\[
+resultant_x(pp_t(resultant_y(y-t(9x^8+1),y^2-x^8-1)),x(x^8+1))=
+ct^{16}(t^2-1)
+\]
+where $c$ is a large nonzero integer. Its nonzero roots are $\pm 1$,
+and the integrand has residue 1 at the place $P$ corresponding to the
+point $(x,y)=(0,1)$ and $-1$ at the place $Q$ corresponding to the
+point $(x,y)=(0,-1)$, so the divisor $\delta_1$ of step 5 is 
+$\delta_1=P-Q$. It turns out that $\delta_1$, $2\delta_1$, and 
+$3\delta_1$ are not principal, but that
+\[
+4\delta_1=\left(\frac{x^4}{1+y}\right)\quad{\rm\ and\ }\quad
+\frac{w_2}{x(x^8+1)}
+-\frac{1}{4}\frac{(x^4/(1+y))^{'}}{x^4/(1+y)}=0
+\]
+which implies that
+\[
+\int{\frac{\sqrt{x^8+1}}{x(x^8+1)}}~dx
+=\frac{1}{4}\log\left(\frac{x^4}{1+\sqrt{x^8+1}}\right)
+\]}
+
+\noindent
+{\bf Example 5} {\sl
+Consider
+\[
+\int{\frac{x~dx}{\sqrt{1-x^3}}}
+\]
+The integrand is 
+\[
+f=\frac{xy}{1-x^3} \in E =
+\mathbb{Q}(x)[y]/(y^2+x^3-1)
+\]
+where $(w_1,w_2)=(1,y)$ is an integral basis normal at infinity, and
+the denominaotr $D=1-x^3$ of the integrand is squarefree. Its
+numerator is $xw_2=xy$, so the resultant of step 3 is
+\[
+resultant_x(pp_t(resultant_y(xy+3tx^2,y^2+x^3-1)),1-x^3)=729t^6
+\]
+whose only root is 0. Since $f \ne 0$, we conclude from step 6 that
+$\int{f~dx}$ is not an elementary function.}
+
+\noindent
+{\bf Example 6} {\sl
+\[
+\int{\frac{dx}{x\sqrt{1-x^3}}}
+\]
+The integrand is
+\[
+f=\frac{y}{x-x^4} \in E =
+\mathbb{Q}(x)[y]/(y^2+x^3-1)
+\]
+where $(w_1,w_2)=(1,y)$ is an integral basis normal at infinity, and
+the denominator $D=x-x^4$ of the integrand is squarefree. Its
+numerator is $w_2=y$, so the resultant of step 3 is
+\[
+resultant_x(pp_t(resultant_y(y+t(4x^3-1),y^2+x^3-1)),x-x^4)=729t^6(t^2-1)
+\]
+Its nonzero roots are $\pm 1$, and the integrand has residue 1 at the
+place $P$ corrseponding to the point $(x,y)=(0,1)$ and $-1$ at the
+place $Q$ corresponding to the point $(x,y)=(0,-1)$ so the divisor
+$\delta_1$ of step 5 is $\delta_1=P-Q$. It turns out that $\delta_1$
+and $2\delta_1$ are not principal, but that
+\[
+3\delta_1=\left(\frac{y-1}{y+1}\right)\quad{\rm and}\quad
+\frac{y}{x-x^4}-\frac{1}{3}\frac{((y-1)/(y+1))^{'}}{(y-1)/(y+1)}=0
+\]
+which implies that
+\[
+\int{\frac{dx}{x\sqrt{1-x^3}}}
+=\frac{1}{3}\log\left(\frac{\sqrt{1-x^3}-1}{\sqrt{1-x^3}+1}\right)
+\]}
+
+\section{Elementary Functions}
+Let $f$ be an arbitrary elementary function. In order to generalize
+the algorithms of the previous sections, we need to build an algebraic
+model in which $f$ behaves in some sense like a rational or algebraic
+function. For that purpose, we need to formally define differential
+fields and elementary functions.
+
+\subsection{Differential algebra}
+A {\sl differential field} $(K,')$ is a {\sl differential extension} 
+of $(K,')$ with a given map $a \rightarrow a'$ from $K$ into $K$,
+satisfying $(a+b)'=a'+b'$ and $(ab)'=a'b+ab'$. Such a map is called a
+{\sl derivation} on $K$. An element $a \in K$ which satisfies $a'=0$
+is called a {\sl constant}, and the set 
+Const($K$)$=\{a \in K {\rm\ such\ that\ }a'=0\}$ of all the constants
+of $K$ is a subfield of $K$.
+
+A differential field $(E,')$ is a {\sl differential equation} of
+$(K,')$ if $K \subseteq E$ and the derivation on $E$ extends the one
+on $K$. In that case, an element $t \in E$ is a {\sl monomial} over
+$K$ if $t$ is transcendental over $K$ and $t' \in K[t]$, which implies
+that both $K[t]$ and $K(t)$ are closed under '. An element $t \in E$
+is {\sl elementary over} $K$ if either
+\begin{itemize}
+\item $t'=b'/b$ for some $b \in K^{*}$, in which case we say that $t$
+is a {\sl logarithm} over $K$, and write $t=log(b)$, or
+\item $t'=b't$ for some $b \in K^{*}$, in which case we say that $t$
+is an {\sl exponential} over $K$, and write $t=e^b$, or
+\item $t$ is algebraic over $K$
+\end{itemize}
+
+A differential extension $(E,')$ of $(K,')$ is {\sl elementary over}
+$K$, if there exist $t_1,\ldots,t_m$ in $E$ such that
+$E=K(t_1,\ldots,t_m)$ and each $t_i$ is elementary over
+$K(t_1,\ldots,t_{i-1})$. We say that $f \in K$ {\sl has an elementary
+integral} over $K$ if there exists an elementary extension $(F,')$ of
+$(K,')$ and $g \in F$ such that $g'=f$. An {\sl elementary function}
+of the variable $x$ is an element of an elementary extension of the
+rational function field $(C(x),d/dx)$, where $C={\rm Const}(C(x))$.
+
+Elementary extensions are useful for modeling any function as a
+rational or algebraic function of one main variable over the other
+terms present in the function: given an elementary integrand
+$f(x)~dx$, the integration algorithm first constructs a field $C$
+containing all the constants appearing in $f$, then the rational
+function field $(C(x),d/dx)$, then an elementary tower 
+$E=C(x)(t_1,\ldots,t_k)$ containing $f$. Note that such a tower is not
+unique, and in addition, ajoining a logarithm could in fact adjoin a
+new constant, and an exponential could in fact be algebraic, for
+example $\mathbb{Q}(x)(log(x),log(2x))=\mathbb{Q}(log(2))(x)(log(x))$
+and $\mathbb{Q}(x)(e^{log(x)/2})=\mathbb{Q}(x)(\sqrt{x})$. There are
+however algorithms that detect all such occurences and modify the
+tower accordingly \cite{16}, so we can assume that all the logarithms
+and exponentials appearing in $E$ are monomials, and that 
+${\rm Const}(E)=C$. Let now $k_0$ be the largest index such that
+$t_{k_0}$ is transcendental over $K=C(x)(t_1,\ldots,t_{k_0-1})$ and
+$t=t_{k_0}$. Then $E$ is a finitely generated algebraic extension of
+$K(t)$, and in the special case $k_0=k$, $E=K(t)$. Thus, $f \in E$ can
+be seen as a univariate rational or algebraic function over $K$, the
+major difference with the pure rational or algebraic cases being that
+$K$ is not constant with respect to the derivation. It turns out that
+the algorithms of the previous section can be generalized to such
+towers, new methods being required only for the polynomial (or
+integral) part. We note that Liouville's Theorem remains valid when
+$E$ is an arbitrary differential field, so the integration algorithms
+work by attempting to solve equation (13) as previously.
+
+\noindent
+{\bf Example 7} {\sl
+The function (1) is the element $f=(t-t^{-1})\sqrt{-1}/2$ of $E=K(t)$
+where $K=\mathbb{Q}(\sqrt{-1})(x)(t_1,t_2)$ with
+\[
+t_1=\sqrt{x^3-x+1},\quad t_2=e^{2\sqrt{-1}(x^3-t_1)},\quad{\rm and}\quad
+t=e^{((1-t_2)/(1+t_2))-x\sqrt{-1}}
+\]
+which is transcendental over $K$. Alternatively, it can also be
+written as the element $f=2\theta/(1+\theta^2)$ of $F=K(\theta)$ where 
+$K==\mathbb{Q}(x)(\theta_1,\theta_2)$ with
+\[
+\theta_1=\sqrt{x^3-x+1},\quad\theta_2=\tan(x^3-\theta_1),\quad{\rm
+and}\quad\theta=\tan\left(\frac{x+\theta_2}{2}\right)
+\]
+which is a transcendental monomial over $K$. It turns out that both
+towers can be used in order to integrate $f$.}
+
+The algorithms of the previous sections relied extensively on
+squarefree factorization and on the concept of squarefree
+polynomials. The appropriate analogue in monomial extensions is the
+notion of {\sl normal} polynomials: let $t$ be a monomial over $K$, we
+say that $p\in K[t]$ is {\sl normal} (with respect to ') if
+$\gcd(p,p')=1$, and that $p$ is {\sl special} if $\gcd(p,p')=p$, 
+{\sl i.e.} $p | p'$ in $K[t]$. For $p \in K[t]$ squarefree, let 
+$p_s=\gcd(p,p')$ and $p_n=p/p_s$. Then $p=p_sp_n$, while $p_s$ is
+special and $p_n$ is normal. Therefore, squarefree factorization can
+be used to write any $q \in K[t]$ as a product $q=q_sq_n$, where
+$\gcd(q_s,q_n)=1$, $q_s$ is special and all the squarefree factors of
+$q_n$ are normal. We call $q_s$ the {\sl special part} of $q$ and
+$q_n$ its {\sl normal part}.
+
+\subsection{The Hermite reduction}
+The Hermite reductions we presented for rational and algebraic
+functions work in exactly the same way algebraic extensions of
+monomial extensions of $K$, as long as we apply them only to the
+normal part of the denominator of the integrand. Thus, if $D$ is the
+denominator of the integrand, we let $S$ be the special part of $D$,
+$D_1D_2^2\ldots D_m^m$ be a squarefree factorization of the {\sl
+normal} part of $D$, $V=D_m$, $U=D/V^m$ and the rational and algebraic
+Hermite reductions proceed normally, eventually yielding an integrand
+whose denominator has a squarefree normal part.
+
+\noindent
+{\bf Example 8} {\sl
+Consider
+\[
+\int{\frac{x-\tan(x)}{\tan(x)^2}}~dx
+\]
+The integrand is
+\[
+f=\frac{x-t}{t^2} \in K(t)\quad {\rm where\ }
+K=\mathbb{Q}(x) {\rm\ and\ }t'=t^2+1
+\]
+Its denominator is $D=t^2$, and $\gcd(t,t')=1$ implying that $t$ is
+normal, so $m=2$, $V=t$, $U=D/t^2=1$, and the extended Euclidean
+algorithm yields
+\[
+\frac{A}{1-m}=t-x=-x(t^2+1)+(xt+1)t=-xUV'+(xt+1)V
+\]
+implying that
+\[
+\int{\frac{x-\tan(x)}{\tan(x)^2}}~dx=-\frac{x}{\tan(x)}-\int{x}~dx
+\]
+and the remaining integrand has a squarefree denominator.}
+
+\noindent
+{\bf Example 9} {\sl
+Consider
+\[
+\int{\frac{\log(x)^2+2x\log(x)+x^2+(x+1)\sqrt{x+\log(x)}}
+{x\log(x)^2+2x^2\log(x)+x^3}}~dx
+\]
+The integrand is
+\[
+f=\frac{t^2+2xt+x^2+(x+1)y}{xt^2+2x^2t+x^3} \in E
+=K(t)[y]/(y^2-x-t)
+\]
+where $K=\mathbb{Q}(x)$ and $t=log(x)$. The denominator of $f$ with
+respect to the basis $w=(1,y)$ is $D=xt^2+2x^2t+x^3$ whose squarefree
+factorization is $x(t+x)^2$. Both $x$ and $t+x$ are normal, so $m=2$,
+$V=t+x$, $U=D/V^2=x$, and the solution (12) of (8) is
+\[
+f_1=\frac{t^2+2xt+x^2}{x(-(t'+1))}
+=-\frac{t^2+2xt+x^2}{x+1},
+\]
+\[
+f_2=\frac{x+1}{x\left((t+x)\frac{1}{2}\frac{t^{'}+1}{t+z}-(t'+1)\right)}=-2
+\]
+We have $Q=1$, so $0V+1Q=1$, $A=0$, $R=1$, $RQf_1=f_1=-V^2/(x+1)$ and
+$RQf_2=f_2=0V-2$, so $B=-2y$ and
+\[
+h=f-\left(\frac{B}{V}\right)^{'}=\frac{1}{x}
+\]
+implying that
+\[
+\int{\frac{\log(x)^2+2x\log(x)+x^2+(x+1)\sqrt{x+\log(x)}}
+{x\log(x)^2+2x^2\log(x)+x^2}}~dx
+=\frac{2}{\sqrt{x+log(x)}}+\int{\frac{dx}{x}}
+\]
+and the remaining integrand has a squarefree denominator.}
+
+\subsection{The polynomial reduction}
+In the transcendental case $E=K(t)$ and when $t$ is a monomial
+satisfying $deg_t(t') \ge 2$, then it is possible to reduce the
+degree of the polynomial part of the integrand until it is smaller
+than $deg_t(t')$. In the case when $t=\tan(b)$ for some $b \in K$, then
+it is possible either to prove that the integral is not elementary, or
+to reduce the polynomial part of the integrand to be in $K$. Let 
+$f \in K(t)$ be our integrand and write $f=P+A/D$, where
+$P,A,D \in K[t]$ and $deg(A) < deg(D)$. Write 
+$P=\sum_{i=1}^e p_it^i$ and $t'=\sum_{i=0}^d c_it^i$ where
+$p_0,\ldots,p_e,c_0,\ldots,c_d \in K$, $d \ge 2$, $p_e\ne 0$ and 
+$c_d\ne 0$. It is easy to verify that if $e \ge d$, then
+\begin{equation}
+P=\left(\frac{a_e}{(e-d+1)c_d}t^{e-d_1}\right)^{'}+\overline{P}
+\end{equation}
+where $\overline{P} \in K[t]$ is such that $\overline{P}=0$ or 
+$deg_t(\overline{P}) < e$. Repeating the above transformation we
+obtain $Q,R \in K[t]$ such that $R=0$ or $deg_t(R) < d$ and $P=Q'+R$. 
+Write then $R=\sum_{i=0}^{d-1} r_it^i$ where
+$r_0,\ldots,r_{d-1} \in K$. Again, it is easy to verify that for any
+special $S \in K[t]$ with $deg_t(S) > 0$, we have
+\[
+R=\frac{1}{deg_t(S)}\frac{r_{d-1}}{c_d}\frac{S'}{S}+\overline{R}
+\]
+where $\overline{R} \in K[t]$ is such that $\overline{R}=0$ or
+$deg_t(\overline{R}) < e-1$. Furthermore, it can be proven \cite{4}
+that if $R+A/D$ has an elementary integral over $K(t)$, then 
+$r_{d-1}/{c_d}$ is a constant, which implies that
+\[
+\int{R}=\frac{1}{deg_t(S)}\frac{r_{d-1}}{c_d}\log(S)
++\int\left(\overline{R}+\frac{A}{D}\right)
+\]
+so we are left with an integrand whose polynomial part has degree at
+most $deg_t(t')-2$. In this case $t=\tan(b)$ for $b \in K$, then
+$t'=b't^2+b'$, so $\overline{R} \in K$.
+
+{\bf Example 10} {\sl
+Consider
+\[
+\int(1+x\tan(x)+\tan(x)^2)~dx
+\]
+The integrand is
+\[
+f=1+xt+t^2 \in K(t)\quad{\rm where\ }K=\mathbb{Q}(x)
+{\rm\ and\ }t'=t^2+1
+\]
+Using (15), we get $\overline{P}=f-t'=f-(t^2+1)=xt$ so
+\[
+\int(1+x\tan(x)+\tan(x)^2)~dx=\tan(x)+\int{x\tan(x)}~dx
+\]
+and since $x'\ne 0$, the above criterion imples that the remaining
+integral is not an elementary function.}
+
+\subsection{The residue criterion}
+Similarly to the Hermite reduction, the Rothstein-Trager and
+Lazard-Rioboo-Trager algorithms are easy to generalize to the
+transcendental case $E=K(t)$ for arbitrary monomials $t$: let 
+$f\in K(t)$ be our integrand and write $f=P+A/D+B/S$ where
+$P,A,D,B,S \in K[t]$, $deg(A) < deg(D)$, $S$ is special and, following
+the Hermite reduction, $D$ is normal. Let then $z$ be a new
+indeterminate, $\kappa : K[z] \rightarrow K[z]$ be give by 
+$\kappa(\sum_i a_iz^i)=\sum_i a_i^{'}z^i$,
+\[
+R={\rm resultant_t}(D,A-zD') \in K[z]
+\]
+be the Rothstein-Trager resultant, $R=R_1R_2^2\ldots R_k^k$ be its
+squarefree factorization, $Q_i=\gcd_z(R_i,\kappa(R_i))$ for each $i$,
+and 
+\[
+g=\sum_{i=1}^k\sum_{a|Q_i(a)=0} a\log(\gcd{}_t(D,A-aD'))
+\]
+
+Note that the roots of each $Q_i$ must all be constants, and that the
+arguments of the logarithms can be obtained directly from the
+subresultant PRS of $D$ and $A-zD'$ as in the rational function
+case. It can then be proven \cite{4} that
+\begin{itemize}
+\item $f-g'$ is always ``simpler'' than $f$
+\item the splitting field of $Q_1\cdots Q_k$ over $K$ is the minimal
+algebraic extension of $K$ needed in order to express $\int f$ in the
+form (4)
+\item if $f$ has an elementary integral over $K(t)$, then 
+$R | \kappa(R)$ in $K[z]$ and the denominator of $f-q'$ is special
+\end{itemize}
+Thus, while in the pure rational function case the remaining integrand
+is a polynomial, in this case the remaining integrand has a special
+denominator. In that case we have additionally that if its integral is
+elementary, then (13) has a solution such that $v\in K(t)$ has a
+special denominator, and each $u_i \in K(c_1,\ldots,c_k)[t]$ is
+special.
+
+\noindent
+{\bf Example 11} {\sl
+Consider
+\[
+\int{\frac{2\log(x)^2-\log(x)-x^2}{\log(x)^3-x^2\log(x)}}~dx
+\]
+The integrand is
+\[
+f=\frac{2t^2-t-x^2}{t^2-xt^2} \in K(t)\quad
+{\rm where\ }K=\mathbb{Q}(x){\rm\ and\ }t=\log(x)
+\]
+Its denominator is $D=t^3-x^2t$, which is normal, and the resultant is 
+\[
+\begin{array}{ccl}
+R&=&\displaystyle
+resultant_t\left(t^3-x^2t,\frac{2x-3z}{x}t^2+(2xz-1)t+x(z-x)\right)\\
+&&\\
+&=&\displaystyle
+4x^3(1-x^2)\left(z^3-xz^2-\frac{1}{4}z+\frac{x}{4}\right)
+\end{array}
+\]
+which is squarefree in $K[z]$. We have
+\[
+\kappa(R)=-x^2(4(5x^2+3)z^3+8x(3x^2-2)z^2+(5x^2-3)z-2x(3x^2-2))
+\]
+so
+\[
+Q_1=\gcd{}_z(R,\kappa R)=x^2\left(z^2-\frac{1}{4}\right)
+\]
+and
+\[
+\gcd{}_t\left(t^3+x^2t,\frac{2x-3a}{x}t^2+(2xa-1)t+x(a-x)\right)=t+2ax
+\]
+where $a^2-1/4=0$, whence
+\[
+g=\sum_{a|a^2-1/4=0} a\log(t+2ax)=\frac{1}{2}\log(t+x)-\frac{1}{2}\log(t-x)
+\]
+Computing $f-g'$ we find
+\[
+\int{\frac{2\log(x)^2-\log(x)-x^2}{\log(x)^3-x^2\log(x)}}~dx
+=\frac{1}{2}\log\left(\frac{\log(x)+x}{\log(x)-x}\right)
++\int{\frac{dx}{\log(x)}}
+\]
+and since $deg_z(Q_1) < deg_z(R)$, it follows that the remaining
+integral is not an elementary function (it is in fact the logarithmic
+integral $Li(x)$).}
+
+In the most general case, when $E=K(t)(j)$ is algebraic over $K(t)$ and
+$y$ is integral over $K[t]$, the criterion part of the above result
+remains valid: let $w=(w_1,\ldots,w_n)$ be an integral basis for $E$
+over $K(t)$ and write the integrand $f \in E$ as 
+$f=\sum_{i=1}^n A_iw_i/D+\sum_{i=1}^n B_iw_i/S$ where $S$ is special
+and, following the Hermite reduction, $D$ is normal. Write 
+$\sum_{i=1}^n A_iw_i=G/H$, where $G \in K[t,y]$ and $H \in K[t]$, let
+$F \in K[t,y]$ be the (monic) minimum polynomial for $y$ over $K(t)$,
+$z$ be a new indeterminante and compute
+\begin{equation}
+R(z)={\rm resultant_t}({\rm pp_z}({\rm resultant_y}(G-tHD',F)),D) \in K[t]
+\end{equation}
+It can then be proven \cite{2} that if $f$ has an elementary integral
+over $E$, then $R|\kappa(R)$ in $K[z]$.
+
+{\bf Example 12} {\sl
+Consider
+\begin{equation}
+\int{\frac{\log(1+e^x)^{(1/3)}}{1+\log(1+e^x)}}~dx
+\end{equation}
+The integrand is
+\[
+f=\frac{y}{t+1} \in E = K(t)[y]/(y^3-t)
+\]
+where $K=\mathbb{Q}(x)(t_1)$,$t_1=e^x$ and $t=\log(1+t_1)$. Its
+denominator with respect to the integral basis $w=(1,y,y^2)$ is
+$D=t+1$, which is normal, and the resultant is
+\[
+R={\rm resultant_t}({\rm pp_z}({\rm resultant_y}(y-zt_1/(1+t_1),y^3-t)),t+1)
+=-\frac{t_1^3}{(1+t_1)^3}z^3-1
+\]
+We have
+\[
+\kappa(R)=-\frac{3t_1^3}{(1+t_1)^4}z^3
+\]
+which is coprime with $R$ in $K[z]$, implying that the integral (17)
+is not an elementary function.
+}
+
+\subsection{The transcendental logarithmic case}
+Suppose now that $t=\log(b)$ for some $b \in K^{*}$, and that
+$E=K(t)$. Then, every special polynomial must be in $K$, so, following
+the residue criterion, we must look for a solution $v \in K[t]$,
+$u_1,\ldots,u_k \in K(c_1,\ldots,c_n)^{*}$ of (13). Furthermore, the
+integrand $f$ is also in $K[t]$, so write
+$f=\sum_{i=0}^d f_it^i$ where $f_0,\ldots,f_d \in K$ and $f_d \ne 0$. We
+must have $deg{}_t(v) \le d_1$, so writing $v=\sum_{i=0}^{d+1} v_it^i$,
+we get 
+\[
+\int f_dt^d+\cdots+f_1t+f_0=v_{d+1}t^{d+1}+\cdots+v_1t+v_0
++\sum_{i=1}^k c_i\log(u_i)
+\]
+If $d=0$, then the above is simply an integration problem for 
+$f_0 \in K$, which can be solved recursively. Otherwise,
+differentiating both sides and equating the coefficients of $t^d$, we
+get ${v_{d+1}}'=0$ and
+\begin{equation}
+f_d=v_d'+(d+1)v_{d+1}\frac{b'}{b}
+\end{equation}
+Since $f_d \in K$, we can recursively apply the integration algorithm
+to $f_d$, either proving that (18) has no solution, in which case $f$
+has no elementary integral, or obtaining the constant $v_{d+1}$, and
+$v_d$ up to an additive constant (in fact, we apply recursively a
+specialized version of the integration algorithm to equations of the
+form (18), see \cite{4} for details). Write then
+$v_d=\overline{v_d}+c_d$ where $\overline{v_d} \in K$ is known and 
+$c_d \in {\rm Const}(K)$ is undetermined. Equating the coefficients of
+$t^{d-1}$ yields
+\[
+f_{d-1}-d\overline{v_d}\frac{b'}{b}={v_{d-1}}'+dc_d\frac{b'}{b}
+\]
+which is an equation of the form (18), so we again recursively compute
+$c_d$ and $v_{d-1}$ up to an additive constant. We repeat this process
+until either one of the recursive integrations fails, in which case $f$
+has no elementary integral, or we reduce our integrand to an element
+of $K$, which is then integrated recursively. The algorithm of this
+section can also be applied to real arc-tangent extensions, {\sl i.e.}
+$K(t)$ where $t$ is a monomial satisfying $t'=b'/(1+b^2)$ for some 
+$b \in K$.
+
+\subsection{The transcendental exponential case}
+Suppose now that $t=e^b$ for some $b \in K$, and that $E =
+K(t)$. Then, every nonzero special polynomial must be of the form
+$at^m$ for $a \in K^{*}$ and $m \in \mathbb{N}$. Since
+\[
+\frac{(at^m)'}{at^m}=\frac{a'}{a}+m\frac{t'}{t}=\frac{a'}{a}+mb'
+\]
+we must then look for a solution $v\in K[t,t^{-1}]$,
+$u_1,\ldots,u_k \in K(c_1,\ldots,c_n)^{*}$ of (13). Furthermore, the
+integrand $f$ is also in $K[t,t^{-1}]$, so write
+$f=\sum_{i=e}^d f_it^i$ where $f_e,\ldots,f_d \in K$ and 
+$e,d\in \mathbb{Z}$. Since $(at^{m})'=(a'+mb')t^m$ for any 
+$m\in \mathbb{Z}$, we must have $v=Mb+\sum_{i=e}^d v_it^i$ for some
+integer $M$, hence
+\[
+\int\sum_{i=e}^d f_it^i=Mb+\sum_{i=e}^d v_it^i+\sum_{i=1}^k c_i\log(u_i)
+\]
+Differentiating both sides and equating the coefficients of each power
+to $t^d$, we get
+\[
+f_0=(v_0+Mb)'+\sum_{i=1}^k c_i\frac{u_i^{'}}{u_i}
+\]
+which is simply an integration problem for $f_0 \in K$, and
+\[
+f_i=v_i^{'}+ib'v_i\quad{\rm for\ }e \le i \le d, i \ne 0
+\]
+The above problem is called a {\sl Risch differential equation over
+K}. Although solving it seems more complicated than solving $g'=f$, it
+is actually simpler than an integration problem because we look for
+the solutions $v_i$ in $K$ only rather than in an extension of
+$K$. Bronstein \cite{2,3,4} and Risch \cite{12,13,14} describe
+algorithms for solving this type of equation when $K$ is an elementary
+extension of the rational function field.
+
+\subsection{The transcendental tangent case}
+Suppose now that $t=\tan(b)$ for some $b \in K$, {\sl i.e.}
+$t'=b'(1+t^2)$, that $\sqrt{-1} \notin K$ and that $E=K(t)$. Then,
+every nonzero special polynomial must be of the form $a(t^2+1)^m$ for
+$a \in K^{*}$ and $m \in \mathbb{N}$. Since
+\[
+\frac{(a(t^2+1)^m)'}{a(t^2+1)^m}
+=\frac{a'}{a}+m\frac{(t^2+1)'}{t^2+1}
+=\frac{a'}{a}+2mb't
+\]
+we must look for $v=V/(t^2+1)^m$ where $V\in K[t]$, 
+$m_1,\ldots,m_k \in \mathbb{N}$, constants 
+$c_1,\ldots,c_k \in \overline{K}$ and
+$u_1,\ldots,u_k \in K(c_1,\ldots,c_k)^{*}$ such that
+\[
+f=v'+2b't\sum_{i=1}^k c_im_i + \sum_{i=1}^k c_i\frac{u_i^{'}}{u_i}
+\]
+Furthermore, the integrand $f \in K(t)$ following the residue
+criterion must be of the form $f=A/(t^2+1)^M$ where $A \in K[t]$ and
+$M \ge 0$. If $M > 0$, it can be shown that $m=M$ and that
+\begin{equation}
+\left(
+\begin{array}{c}
+c'\\
+d'
+\end{array}
+\right)+
+\left(
+\begin{array}{cc}
+0&-2mb'\\
+2mb'&0\\
+\end{array}
+\right)
+\left(
+\begin{array}{c}
+c\\
+d
+\end{array}
+\right)=
+\left(
+\begin{array}{c}
+a\\
+b
+\end{array}
+\right)
+\end{equation}
+where $at+b$ and $ct+d$ are the remainders module $t^2+1$ of $A$ and
+$V$ respectively. The above is a coupled differential system, which
+can be solved by methods similar to the ones used for Risch
+differential equations \cite{4}. If it has no solution, then the
+integral is not elementary, otherwise we reduce the integrand to 
+$h \in K[t]$, at which point the polynomial reduction either proves
+that its integral is not elementary, or reduce the integrand to an
+element of $K$, which is integrated recursively.
+
+\noindent
+{\bf Example 13} {\sl
+Consider
+\[
+\int{\frac{sin(x)}{x}}~dx
+\]
+The integrand is
+\[
+f=\frac{2t/x}{t^2+1} \in K(t)\quad{\rm where\ }K=\mathbb{Q}(x)
+{\rm\ and\ }t=\tan\left(\frac{x}{2}\right)
+\]
+Its denominator is $D=t^2+1$, which is special, and the system (19)
+becomes 
+\[
+\left(
+\begin{array}{c}
+c'\\
+d'
+\end{array}
+\right)+
+\left(
+\begin{array}{cc}
+0&-1\\
+1&0\\
+\end{array}
+\right)
+\left(
+\begin{array}{c}
+c\\
+d
+\end{array}
+\right)=
+\left(
+\begin{array}{c}
+2/x\\
+0
+\end{array}
+\right)
+\]
+which has no solution in $\mathbb{Q}(x)$, implying that the integral
+is not an elementary function.}
+
+\subsection{The algebraic logarithmic case}
+The transcendental logarithmic case method also generalizes to the
+case when $E=K(t)(y)$ is algebraic over $K(t)$, $t=log(b)$ for 
+$b \in K^{*}$ and $y$ is integral over $K[t]$: following the residue
+criterion, we can assume that $R | \kappa(R)$ where $R$ is given by
+(16), hence that all its roots in $\overline{K}$ are constants. The
+polynomial part of the integrand is replace by a family of at most
+$[E : K(t)]$ Puiseux expansions at infinity, each of the form
+\begin{equation}
+a_{-m}\theta^{-m}+\cdots+a_{-1}\theta^{-1}+\sum_{i \ge 0} a_i\theta^i
+\end{equation}
+where $\theta^r=t^{-1}$ for some positive integer $r$. Applying the
+integration algorithm recursively to $a_r \in \overline{K}$, we can
+test whether there exist $\rho \in {\rm Const}(\overline{K})$ and 
+$v \in \overline{K}$ such that
+\[
+a_r=v'+\rho\frac{b'}{b}
+\]
+If there are no such $v$ and $c$ for at least one of the series, then
+the integral is not elementary, otherwise $\rho$ is uniquely
+determined by $a_r$, so let $\rho_1,\ldots,\rho_q$ where 
+$q \le [E : K(t)]$ be the distinct constants we obtain,
+$\alpha_1,\ldots,\alpha_s \in \overline{K}$ be the distinct nonzero
+roots of $R$, and $(q_1,\ldots,q_k)$ be a basis for the vector space
+generated by the $\rho_i$'s and $\alpha_i$'s over $\mathbb{Q}$. Write
+$\alpha_i=r_{i1}q_1+\cdots+r_{ik}q_k$ and 
+$\rho_i=s_{i1}q_1+\cdots+s_{ik}q_k$ for each $i$, where 
+$r_{ij},s_{ij} \in \mathbb{Q}$ and let $m > 0$ be a common denominator
+for all the $r_{ij}$'s and $s_{ij}$'s. For $1 \le j \le k$, let
+\[
+\delta_j=\sum_{i=1}^s mr_{ij} \sum_l r_lP_l 
+-\sum_{i=1}^q ms_{ij} \sum_l s_lQ_l
+\]
+where $r_l$ is the ramification index of $P_l$, $s_l$ is the
+ramification index of $Q_l$, $P_l$ runs over all the finite places at
+which $h~dz$ has residue $r_l\alpha_i$ and $Q_l$ runs over all the
+infinite places at which $\rho=\rho_i$. As in the pure algebraic case,
+if there is a $j$ for which $N\delta_j$ is not principal for any
+nonzero integer $N$, then the integral is not elementary, otherwise,
+let $n_1,\ldots,n_k$ be nonzero integers such that $n_j\delta_j$ is
+principal for each $j$, and
+\[
+h=f-\frac{1}{m}\sum_{j=1}^k\frac{q_j}{n_j}\frac{u_j^{'}}{u_j}
+\]
+where $f$ is the integrand and 
+$u_j \in E(\alpha_1,\ldots,\alpha_s,\rho_1,\ldots,\rho_q)^{*}$ is such
+that $n_j\delta_j=(u_j)$. If the integral of $h$ is elementary, then
+(13) must have a solution with $v \in {\bf O}_{K[x]}$ and
+$u_1,\ldots,u_k \in \overline{K}$ so we must solve
+\begin{equation}
+h=\frac{\sum_{i=1}^n A_iw_i}{D}
+=\sum_{i=1}^n v_i^{'}w_i+\sum_{i=1}^n v_iw_i^{'}
++\sum_{i=1}^k c_i\frac{u_i^{'}}{u_i}
+\end{equation}
+for $v_1,\ldots,v_n \in K[t]$, constants 
+$c_1,\ldots,c_n \in \overline{K}$ and
+$u_1,\ldots,u_k \in \overline{K}^{*}$ where 
+$w=(w_1,\ldots,w_n)$ is an integral basis for $E$ over $K(t)$.
+
+If $E$ is a simple radical extension of $K(t)$, and we use the basis
+(11) and the notation of that section, then $w_1=1$ and
+\begin{equation}
+w_i^{'}=\left(\frac{i-1}{n}\frac{H'}{H}-\frac{D_{i-1}^{'}}{D_{i-1}}\right)w_i
+\quad{\rm for\ }1 \le i \le n
+\end{equation}
+This implies that (21) becomes
+\begin{equation}
+\frac{A_1}{D}=v_1^{'}+\sum_{i=1}^k c_i\frac{u_i^{'}}{u_i}
+\end{equation}
+which is simply an integration problem for $A_1/D \in K(t)$, and
+\begin{equation}
+\frac{A_i}{D}=v_i^{'}+\left(\frac{i-1}{n}\frac{H'}{H}
+-\frac{D_{i-1}^{'}}{D_{i-1}}\right)v_i\quad{\rm for\ }1 < i \le n
+\end{equation}
+which are Risch differential equations over $K(t)$
+
+\noindent
+{\bf Example 14} {\sl
+Consider
+\[
+\int{\frac{(x^2+2x+1)\sqrt{x+\log(x)}+(3x+1)\log(x)+3x^2+x}
+{(x\log(x)+x^2)\sqrt{x+\log(x)}+x^2\log(x)+x^3}}~dx
+\]
+The integrand is
+\[
+f=\frac{((3x+1)t-x^3+x^2)y-(2x^2-x-1)t-2x^3+x^2+x}
+{xt^2-(x^3-2x^2)t-x^4+x^3} \in E = K(t)[y]/(F)
+\]
+where $F=y^2-x-t$, $K=\mathbb{Q}(x)$ and $t=\log(x)$. Its denominator
+with respect to the integral basis $w=(1,y)$ is
+$D=xt^2-(x^3-2x^2)t-x^4+x^3$, which is normal, and the resultant is
+\[
+\begin{array}{ccl}
+R&=&{\rm resultant_t}({\rm pp_z}({\rm resultant_y}(((3x+1)t-x^3+x^2)y\\
+&&\\
+&&\hbox{\hskip 2.0cm}
+-(2x^2-x-1)t-2x^3+x^2+x-zD^{'},F)),D)\\
+&&\\
+&=&x^{12}(2x+1)^2(x+1)^2(x-1)^2z^3(z-2)\\
+\end{array}
+\]
+We have
+\[
+\kappa(R)=\frac{36x^3+16x^2-28x-12}{x(2x+1)(x+1)(x-1)}R
+\]
+so $R | \kappa(R)$ in $K[z]$. Its only nonzero root is 2, and the
+integrand has residue 2 at the place $P$ corresponding to the point
+$(t,y)=(x^2-x,-x)$. There is only one place $Q$ at infinity of
+ramification index 2, and the coefficient of $t^{-1}$ in the Puiseux
+expansion of $f$ at $Q$ is
+\[
+a_2=1-2x+\frac{1}{x}=(x-x^2)'+\frac{x'}{x}
+\]
+which implies that the corresponding $\rho$ is 1. Therefore, the
+divisor for the logand is $\delta=2P-2Q$. It turns out that 
+$\delta=(u)$ where $u=(x+y)^2 \in E^{*}$, so the new integrand is
+\[
+h=f-\frac{u'}{u}=f-2\frac{(x+y)'}{x+y}=\frac{(x+1)y}{xt+x^2}
+\]
+We have $y^2=t+x$, which is squarefree, so (23) becomes
+\[
+0=v_1^{'}+\sum_{i=1}^k c_i\frac{u_i^{'}}{u_i}
+\]
+whose solution is $v_1=k=0$ and (24) becomes
+\[
+\frac{x+1}{xt+x^2}=v_2^{'}+\frac{x+1}{2xt+2x^2}v_2
+\]
+whose solution is $v_2=2$, implying that $h=2y'$, hence that
+\[
+\begin{array}{l}
+\displaystyle
+\int{\frac{(x^2+2x+1)\sqrt{x+\log(x)}+(3x+1)\log(x)+3x^2+x}
+{(x\log(x)+x^2)\sqrt{x+\log(x)}+x^2\log(x)+x^3}}~dx\\
+\\
+\displaystyle
+\hbox{\hskip 4.0cm}2\sqrt{x+\log(x)}+2\log\left(x+\sqrt{x+\log(x)}\right)
+\end{array}
+\]}
+In the general case when $E$ is not a radical extension of $K(t)$, 
+(21) is solved by bounding $deg_t(v_i)$ and comparing the Puiseux
+expansions at infinity of $\sum_{i=1}^n v_iw_i$ with those of the form
+(20) of $h$, see \cite{2,12} for details.
+
+\subsection{The algebraic exponential case}
+The transcendental exponential case method also generalizes to the
+case when $E=K(t)(y)$ is algebraic over $K(t)$, $t=e^b$ for $b \in K$
+and $y$ is integral over $K[t]$: following the residue criterion, we
+can assume that $R|\kappa(R)$ where $R$ is given by (16), hence that
+all its roots in $\overline{K}$ are constants. The denominator of the
+integrancd must be of the form $D=t^mU$ where $\gcd(U,t)=1$, $U$ is
+squarefree and $m \ge 0$.
+
+If $m > 0$, $E$ is a simple radical extension of $K(t)$, and we use the
+basis (11), then it is possible to reduce the power of $t$ appearing
+in $D$ by a process similar to the Hermite reduction: writing the
+integrand $f=\sum_{i=1}^n A_iw_i/(t^mU)$, we ask whether we can
+compute $b_1,\ldots,b_n \in K$ and $C_1,\ldots,C_n \in K[t]$ such that
+\[
+\int\frac{\sum_{i=1}^n A_iw_i}{t^mU}
+=\frac{\sum_{i=1}^n b_iw_i}{t^m}
++\int{\frac{\sum_{i=1}^n C_iw_i}{t^{m-1}U}}
+\]
+Differentiating both sides and multiplying through by $t^m$ we get
+\[
+\frac{\sum_{i=1}^n A_iw_i}{U}
+=\sum_{i=1}^n b_i^{'}w_i+\sum_{i=1}^n b_iw_i^{'}
+-mb'\sum_{i=1}^n b_iw_i+\frac{t\sum_{i=1}^n C_iw_i}{U}
+\]
+Using (22) and equating the coefficients of $w_i$ on both sides, we
+get
+\begin{equation}
+\frac{A_i}{U}=b_i^{'}+(\omega_i-mb')b_i+\frac{tC_i}{U}
+\quad{\rm for\ }1 \le i \le n
+\end{equation}
+where
+\[
+\omega_i=\frac{i-1}{n}\frac{H'}{H}-\frac{D_{i-1}^{'}}{D_{i-1}} \in K(t)
+\]
+Since $t'/t=b' \in K$, it follows that the denominator of $\omega_i$
+is not divisible by $t$ in $K[t]$, hence, evaluating (25) at $t=0$, we
+get 
+\begin{equation}
+\frac{A_i(0)}{U(0)}=b_i^{'}+(\omega_i(0)-mb')b_i
+\quad{\rm for\ }1 \le i \le n
+\end{equation}
+which are Risch differential equations over $K(t)$. If any of them has
+no solution in $K(t)$, then the integral is not elementary, otherwise
+we repeat this process until the denominator of the integrand is
+normal. We then perform the change of variabl $\overline{t}=t^{-1}$,
+which is also exponential over $K$ since
+$\overline{t}'=-b'\overline{t}$, and repeat the above process in order
+to eliminate the power of $\overline{t}$ from the denominator of the
+integrand. It can be shown that after this process, any solution of
+(13) must have $v \in K$.
+
+\noindent
+{\bf Example 15} {\sl
+Consider
+\[
+\int{\frac{3(x+e^x)^{(1/3)}+(2x^2+3x)e^x+5x^2}{x(x+e^x)^{(1/3)}}}~dx
+\]
+The integrand is
+\[
+f=\frac{((2x^2+3x)t+5x^2)y^2+3t+3x}{xt+x^2} \in E
+=K(t)[y]/(y^3-t-x)
+\]
+where $K=\mathbb{Q}(x)$ and $t=e^x$. Its denominator with respect to
+the integral basis $w=(1,y,y^2)$ is $D=xt+x^2$, which is normal, and the
+resultant is
+\[
+\begin{array}{l}
+R={\rm resultant_t}({\rm pp_z}({\rm resultant_y}
+(((2x^2+3x)t+5x^2)y^2+3t+3x-zD',\\
+\hbox{\hskip 5.0cm}y^3-t-x)),D)=x^8(1-x)^3z^3
+\end{array}
+\]
+We have
+\[
+\kappa(R)=\frac{11x-8}{x(x-1)}R
+\]
+so $R|\kappa(R)$ in $K[z]$, its only root being 0. Since $D$ is not
+divisible by $t$, let $\overline{t}=t^{-1}$ and $z=\overline{t}y$. We
+have $\overline{t}'=-\overline{t}$ and 
+$z^3-\overline{t}^2-x\overline{t}^3=0$, so the integral basis (11) is
+\[
+\overline{w}=(\overline{w}_1,\overline{w}_2,\overline{w}_3)
+=\left(1,z,\frac{z^2}{\overline{t}}\right)
+\]
+Writing $f$ in terms of that basis gives
+\[
+f=\frac{3x\overline{t}^2+3\overline{t}
++(5x^2\overline{t}+2x^2+3x)\overline{w}_3}
+{x^2\overline{t}^2+x\overline{t}}
+\]
+whose denominator $\overline{D}=\overline{t}(x+x^2\overline{t})$ is
+divisible by $\overline{t}$. We have
+$H=\overline{t}^2(1+x\overline{t})$ so $D_0=D_1=1$ and
+$D_2=\overline{t}$, implying that
+\[
+\omega_1=0, \omega_2=\frac{(1-3x)\overline{t}-2}{3x\overline{t}+3},
+{\rm\ and\ } \omega_3=\frac{(2-3x)\overline{t}-1}{3x\overline{t}+3}
+\]
+Therefore the equations (26) become
+\[
+0=b_1^{'}+b_1,0=b_2^{'}+\frac{1}{3}b_2,{\rm\ and\ }
+2x+3=b_3^{'}+\frac{2}{3}b_3
+\]
+whose solutions are $b_1=b_2=0$ and $b_3=3x$, implying that the new
+integrand is
+\[
+h=f-\left(\frac{3x\overline{w}_3}{\overline{t}}\right)^{'}=\frac{3}{x}
+\]
+hence that
+\[
+\int{\frac{3(x+e^x)^{(1/3)}+(2x^2+3x)e^x+5x^2}{x(x+e^x)^{(1/3)}}}~dx
+=3x(x+e^x)^{(2/3)}+3\int{\frac{dx}{x}}
+\]
+}
+
+In the general case when $E$ is not a radical extension of $K(t)$,
+following the Hermite reduction, any solution of (13) must have
+$v=\sum_{i=1}^n v_iw_i/t^m$ where $v_1,\ldots,v_m \in K[t]$. We can
+compute $v$ by bounding $deg_t(v_i)$ and comparing the Puiseux
+expansions at $t=0$ and at infinity of $\sum_{i=1}^n v_iw_i/t^m$ with
+those of the form (20) of the integrand, see \cite{2,12} for details.
+
+Once we are reduced to solving (13) for $v \in K$, constants
+$c_1,\ldots,c_k \in \overline{K}$ and 
+$u_1,\ldots,u_k \in E(c_1,\ldots,c_k)^{*}$, constants
+$\rho_1,\ldots,\rho_s \in \overline{K}$ can be determined at all the
+places above $t=0$ and at infinity in a manner similar to the
+algebraic logarithmic case, at which point the algorithm proceeds by
+constructing the divisors $\delta_j$ and the $u_j$'s as in that
+case. Again, the details are quite technical and can be found in 
+\cite{2,12,13}.
+
 \section{Makefile}
-This book is actually a literate program\cite{2} and can contain 
-executable source code. In particular, the Makefile for this book
-is part of the source of the book and is included below. Axiom 
-uses the ``noweb'' literate programming system by Norman Ramsey\cite{6}.
 <<*>>=
-PROJECT=bookvol10
-TANGLE=/usr/local/bin/NOTANGLE
-WEAVE=/usr/local/bin/NOWEAVE
-LATEX=/usr/bin/latex
+BOOK=${SPD}/books/bookvol10.pamphlet
 MAKEINDEX=/usr/bin/makeindex
 
 all: 
-	${WEAVE} -t8 -delay ${PROJECT}.pamphlet >${PROJECT}.tex
-	${LATEX} ${PROJECT}.tex 2>/dev/null 1>/dev/null
-	${MAKEINDEX} ${PROJECT}.idx
-	${LATEX} ${PROJECT}.tex 2>/dev/null 1>/dev/null
+	@ echo 1 finished making ${BOOK}
 
 @
 \eject
 \begin{thebibliography}{99}
-\bibitem{1} Jenks, R.J. and Sutor, R.S. 
+\bibitem{1} Laurent Bertrand. Computing a hyperelliptic integral using
+arithmetic in the jacobian of the curve. {\sl Applicable Algebra in
+Engineering, Communication and Computing}, 6:275-298, 1995
+\bibitem{2} M. Bronstein. On the integration of elementary functions.
+{\sl Journal of Symbolic Computation} 9(2):117-173, February 1990
+\bibitem{3} M. Bronstein. The Risch differential equation on an
+algebraic curve. In S.Watt, editor, {\sl Proceedings of ISSAC'91},
+pages 241-246, ACM Press, 1991.
+\bibitem{4} M. Bronstein. {\sl Symbolic Integration I--Transcendental
+Functions.} Springer, Heidelberg, 1997
+\bibitem{5} M. Bronstein. The lazy hermite reduction. Rapport de
+Recherche RR-3562, INRIA, 1998
+\bibitem{6} E. Hermite. Sur l'int\'{e}gration des fractions
+rationelles. {\sl Nouvelles Annales de Math\'{e}matiques}
+($2^{eme}$ s\'{e}rie), 11:145-148, 1872
+\bibitem{7} Daniel Lazard and Renaud Rioboo. Integration of rational
+functions: Rational coputation of the logarithmic part {\sl Journal of
+Symbolic Computation}, 9:113-116:1990
+\bibitem{8} Joseph Liouville. Premier m\'{e}moire sur la
+d\'{e}termination des int\'{e}grales dont la valeur est
+alg\'{e}brique. {\sl Journal de l'Ecole Polytechnique}, 14:124-148,
+1833
+\bibitem{9} Joseph Liouville. Second m\'{e}moire sur la
+d\'{e}termination des int\'{e}grales dont la valeur est
+alg\'{e}brique. {\sl Journal de l'Ecole Polytechnique}, 14:149-193,
+1833
+\bibitem{10} Thom Mulders. A note on subresultants and a correction to
+the lazard/rioboo/trager formula in rational function integration {\sl
+Journal of Symbolic Computation}, 24(1):45-50, 1997
+\bibitem{11} M.W. Ostrogradsky. De l'int\'{e}gration des fractions
+rationelles. {\sl Bulletin de la Classe Physico-Math\'{e}matiques de
+l'Acae\'{e}mie Imp\'{e}riale des Sciences de St. P\'{e}tersbourg,}
+IV:145-167,286-300, 1845
+\bibitem{12} Robert Risch. On the integration of elementary functions
+which are built up using algebraic operations. Research Report
+SP-2801/002/00, System Development Corporation, Santa Monica, CA, USA,
+1968
+\bibitem{13} Robert Risch. Further results on elementary
+functions. Research Report RC-2042, IBM Research, Yorktown Heights,
+NY, USA, 1969
+\bibitem{14} Robert Risch, The problem of integration in finite
+terms. {\sl Transactions of the American Mathematical Society}
+139:167-189, 1969
+\bibitem{15} Robert Risch. The solution of problem of integration in
+finite terms. {\sl Transactions of the American Mathematical Society}
+76:605-608, 1970
+\bibitem{16} Robert Risch. Algebraic properties of the elementary
+functions of analysis. {\sl American Journal of Mathematics},
+101:743-759, 1979
+\bibitem{17} Maxwell Rosenlicht. Integration in finite terms. {\sl
+American Mathematical Monthly}, 79:963-972, 1972
+\bibitem{18} Michael Rothstein. A new algorithm for the integration of
+exponential and logarithmic functions. In {\sl Proceedings of the 1977
+MACSYMA Users Conference}, pages 263-274. NASA Pub CP-2012, 1977
+\bibitem{19} Barry Trager. Algebraic factoring and rational function
+integration. In {Proceedings of SYMSAC'76} pages 219-226, 1976
+\bibitem{20} Barry Trager {\sl On the integration of algebraic
+functions}, PhD thesis, MIT, Computer Science, 1984
+\bibitem{21} M. van Hoeij. An algorithm for computing an integral
+basis in an algebraic function field. {\sl J. Symbolic Computation}
+18(4):353-364, October 1994
+\bibitem{22} Andr\'{e} Weil, {\sl Courbes alg\'{e}briques et
+vari\'{e}t\'{e}s Abeliennes} Hermann, Paris, 1971
+\bibitem{23} D.Y.Y. Yun. On square-free decomposition algorithms. In
+{\sl Proceedings of SYMSAC'76} pages 26-35, 1976
+\bibitem{24} Bronstein, Manuel "Symbolic Integration Tutorial"
+INRIA Sophia Antipolis ISSAC 1998 Rostock
+\bibitem{25} Jenks, R.J. and Sutor, R.S. 
 ``Axiom -- The Scientific Computation System''
 Springer-Verlag New York (1992)
 ISBN 0-387-97855-0
-\bibitem{2} Knuth, Donald E., ``Literate Programming''
+\bibitem{26} Knuth, Donald E., ``Literate Programming''
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
-\bibitem{4} Watt, Stephen, ``Aldor'',\\
+\bibitem{27} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
+\bibitem{28} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
-\bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
+\bibitem{29} Lamport, Leslie, ``Latex -- A Document Preparation System'',
 Addison-Wesley, New York ISBN 0-201-52983-1
-\bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
+\bibitem{30} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{31} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol11.pamphlet b/books/bookvol11.pamphlet
index c09e394..710be18 100644
--- a/books/bookvol11.pamphlet
+++ b/books/bookvol11.pamphlet
@@ -50489,6 +50489,10 @@ static char axiom_bits[] = {
 
 \eject
 \begin{thebibliography}{99}
-\bibitem{1} nothing
+\bibitem{1} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
+\bibitem{2} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \end{thebibliography}
+\printindex
 \end{document}
diff --git a/books/bookvol12.pamphlet b/books/bookvol12.pamphlet
index 7c3c8cc..d47dd24 100644
--- a/books/bookvol12.pamphlet
+++ b/books/bookvol12.pamphlet
@@ -467,8 +467,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -478,6 +478,8 @@ Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
 \bibitem{7} Winograd, Terry ``Bringing Design to Software",
 ACM Press Books, Addison-Wesley Publishing, 1996
+\bibitem{8} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol2.pamphlet b/books/bookvol2.pamphlet
index 1dc6019..e9cf201 100644
--- a/books/bookvol2.pamphlet
+++ b/books/bookvol2.pamphlet
@@ -319,8 +319,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -328,6 +328,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol3.pamphlet b/books/bookvol3.pamphlet
index f8ad6f3..ebb060f 100644
--- a/books/bookvol3.pamphlet
+++ b/books/bookvol3.pamphlet
@@ -319,8 +319,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -328,6 +328,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol4.pamphlet b/books/bookvol4.pamphlet
index 32abce4..b114afb 100644
--- a/books/bookvol4.pamphlet
+++ b/books/bookvol4.pamphlet
@@ -4409,8 +4409,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -4418,6 +4418,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 56ffef1..1bfbd48 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -1,5 +1,7 @@
 \documentclass{book}
 \usepackage{axiom}
+\usepackage{makeidx}
+\makeindex
 \usepackage{graphicx}
 % struggle with latex figure-floating behavior
 \renewcommand\floatpagefraction{.9}
@@ -6129,6 +6131,10 @@ remake:
 @
 \eject
 \begin{thebibliography}{99}
-\bibitem nothing
+\bibitem{1} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
+\bibitem{2} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \end{thebibliography}
+\printindex
 \end{document}
diff --git a/books/bookvol6.pamphlet b/books/bookvol6.pamphlet
index 4c44735..d9a8933 100644
--- a/books/bookvol6.pamphlet
+++ b/books/bookvol6.pamphlet
@@ -7147,8 +7147,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie,\\
@@ -7162,9 +7162,10 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{8} Axiom Book Volume 8 -- Graphics\\
 {\bf file://usr/local/axiom/src/graph/bookvol8.pamphlet}
 \bibitem{9} AIX Version 3.2 and 4 Performance Tuning Guide\\
-{\bf 
-http://www.rs6000.ibm.com/doc\_link/en\_US/\\
+{\bf http://www.rs6000.ibm.com/doc\_link/en\_US/\\
 {\hbox {\hskip 1.0cm}}a\_doc\_lib/aixbman/prftungd/toc.htm}
+\bibitem{10} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol7.pamphlet b/books/bookvol7.pamphlet
index 74d6409..e851b24 100644
--- a/books/bookvol7.pamphlet
+++ b/books/bookvol7.pamphlet
@@ -20145,6 +20145,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index 2b2d0ee..8830367 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -28977,6 +28977,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index 4acb8b2..eeb65df 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -319,8 +319,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -328,6 +328,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/changelog b/changelog
index e5db776..e4f1428 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,21 @@
+20080612 tpd books/bookvol12 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol11 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol10 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol9 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol8 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol7 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol6 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol5 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol4 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol3 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol2 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol1 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol0 numerous fixes, including Appendix work
+20080612 tpd books/Makefile makeindex
+20080612 tpd scr/Makefile extract Makefile from bookvol10
+20080612 tpd books/bookvol11 add index
+20080612 tpd books/bookvol10 document integration
+20080612 tpd books/bookvol5 add index
 20080611 tpd books/bookvol8 add documentation for gdraws
 20080610 tpd books/Makefile stop redundant builds
 20080610 tpd books/bookvol7 remove bookvol11 handling
diff --git a/src/Makefile.pamphlet b/src/Makefile.pamphlet
index b40d07f..5914820 100644
--- a/src/Makefile.pamphlet
+++ b/src/Makefile.pamphlet
@@ -298,84 +298,6 @@ interpclean: ${SRC}/interp/Makefile
 	@rm -f ${SRC}/interp/Makefile.dvi
 
 @
-\subsection{The algebra directory}
-The algebra directory contains code written in Axiom's computer
-algebra language called {\bf spad}. There are two compilers for
-this language, the spad compiler and the {\bf Aldor}\cite{1} compiler.
-
-Both of these compilers accept the same input language except for
-some platform-dependent differences. The spad compiler is written
-in Common Lisp (well, in boot, anyway) and is built into the 
-interpreter. The Aldor compiler is written in C and runs
-stand-alone. Both compile files that will run in Axiom's 
-interpreter. Files which end in ``.spad'' use the internal 
-spad compiler. Files which end in ``.as'' use the external
-Aldor compiler.
-\subsubsection{Making the Makefile}
-The main body of the algebra Makefile is extracted from the
-Makefile.pamphlet file as usual. It contains generic rules for
-making all the .spad files in a series of ``layers'' such that
-each layer depends on only those layers that preceed it, beginning
-with the bootstap layer. Because the individual .spad files are
-grouped into higher-level algebra pamphlet files, the rules for
-extracting them are derived from a simple script [[findAlgebraFiles]] which
-appends these additional rules to the Makefile.
-
-The [[src/algebra/Makefile]] is specially constructed in two
-steps. The first step uses the [[document]] command to extract
-the normal Makefile information.
-
-The second step is to extend the [[src/algebra/Makefile]] with
-stanzas that describe the steps to extract the algebra from the
-[[src/algebra/*.pamphlet]] files into the [[int/algebra/*.spad]] files.
-Further details are provided in Makefile for src/algebra.
-
-The doc/spadhelp directory contains flat files of help text
-for the help system command. Algebra pamphlet contain examples
-that can be shown from these commands.
-
-We need to make the int/input file here because the algebra Makefile
-will extract input files for regression testing from the algebra pamphlets.
-
-<<algebradir>>=
-algebradir: ${SRC}/algebra/Makefile
-	@echo 29 making ${SRC}/algebra
-	@mkdir -p ${INT}/algebra
-	@mkdir -p ${INT}/input
-	@mkdir -p ${OBJ}/${SYS}/algebra
-	@mkdir -p ${MNT}/${SYS}/algebra
-	@mkdir -p ${MNT}/${SYS}/doc/src/algebra
-	@mkdir -p ${MNT}/${SYS}/doc/spadhelp
-	@mkdir -p ${MNT}/${SYS}/src/algebra
-	@mkdir -p ${INT}/input
-	@(cd algebra ; ${ENV} ${MAKE} )
-
-${SRC}/algebra/Makefile: ${SRC}/algebra/Makefile.pamphlet
-	@echo 30 making ${SRC}/algebra/Makefile from \
-                ${SRC}/algebra/Makefile.pamphlet
-	@( cd algebra ; ${DOCUMENT} ${NOISE} Makefile ; \
-        cp Makefile.dvi ${MNT}/${SYS}/doc/src/algebra.Makefile.dvi ; \
-	echo 30a extracting findAlgebraFiles from \
-                 ${SRC}/algebra/Makefile.pamphlet ; \
-	${TANGLE} -t8 -RfindAlgebraFiles Makefile.pamphlet \
-            > ${INT}/algebra/findAlgebraFiles ; \
-	echo 30b running ${INT}/algebra/findAlgebraFiles ; \
-	. ${INT}/algebra/findAlgebraFiles >> Makefile)
-
-algebradocument: ${SRC}/algebra/Makefile
-	@echo 31 documenting ${SRC}/algebra
-	@mkdir -p ${MNT}/${SYS}/doc/src/algebra
-	@mkdir -p ${INT}/doc/src/algebra
-	@( cd algebra ; ${ENV} ${MAKE} document )
-
-algebraclean: ${SRC}/algebra/Makefile
-	@echo 32 cleaning ${SRC}/algebra
-	@( cd algebra ; ${ENV} ${MAKE} clean )
-	@rm -rf ${OBJ}/${SYS}/algebra
-	@rm -f ${SRC}/algebra/Makefile
-	@rm -f ${SRC}/algebra/Makefile.dvi
-
-@
 \subsection{The input directory}
 The input directory contains code used for examples, regression
 testing, and bug tracking. In a shipped system the working examples
@@ -521,6 +443,88 @@ graphdir: ${SPD}/books/bookvol8.pamphlet
 	  ${ENV} ${MAKE} )
 
 @
+\subsection{The algebra directory}
+The algebra directory contains code written in Axiom's computer
+algebra language called {\bf spad}. There are two compilers for
+this language, the spad compiler and the {\bf Aldor}\cite{1} compiler.
+
+Both of these compilers accept the same input language except for
+some platform-dependent differences. The spad compiler is written
+in Common Lisp (well, in boot, anyway) and is built into the 
+interpreter. The Aldor compiler is written in C and runs
+stand-alone. Both compile files that will run in Axiom's 
+interpreter. Files which end in ``.spad'' use the internal 
+spad compiler. Files which end in ``.as'' use the external
+Aldor compiler.
+\subsubsection{Making the Makefile}
+The main body of the algebra Makefile is extracted from the
+Makefile.pamphlet file as usual. It contains generic rules for
+making all the .spad files in a series of ``layers'' such that
+each layer depends on only those layers that preceed it, beginning
+with the bootstap layer. Because the individual .spad files are
+grouped into higher-level algebra pamphlet files, the rules for
+extracting them are derived from a simple script [[findAlgebraFiles]] which
+appends these additional rules to the Makefile.
+
+The [[src/algebra/Makefile]] is specially constructed in two
+steps. The first step uses the [[document]] command to extract
+the normal Makefile information.
+
+The second step is to extend the [[src/algebra/Makefile]] with
+stanzas that describe the steps to extract the algebra from the
+[[src/algebra/*.pamphlet]] files into the [[int/algebra/*.spad]] files.
+Further details are provided in Makefile for src/algebra.
+
+The doc/spadhelp directory contains flat files of help text
+for the help system command. Algebra pamphlet contain examples
+that can be shown from these commands.
+
+We need to make the int/input file here because the algebra Makefile
+will extract input files for regression testing from the algebra pamphlets.
+
+\subsection{Volume 10: Axiom Algebra book}
+<<algebradir>>=
+algebradir: ${SRC}/algebra/Makefile ${SPD}/books/bookvol10.pamphlet
+	@echo 29 making ${SRC}/algebra
+	@mkdir -p ${INT}/algebra
+	@mkdir -p ${INT}/input
+	@mkdir -p ${OBJ}/${SYS}/algebra
+	@mkdir -p ${MNT}/${SYS}/algebra
+	@mkdir -p ${MNT}/${SYS}/doc/src/algebra
+	@mkdir -p ${MNT}/${SYS}/doc/spadhelp
+	@mkdir -p ${MNT}/${SYS}/src/algebra
+	@mkdir -p ${INT}/input
+	@(cd ${INT}/algebra ; \
+	  ${TANGLE} -t8 ${SPD}/books/bookvol10.pamphlet >Makefile ; \
+	  ${ENV} ${MAKE} )
+	@(cd algebra ; ${ENV} ${MAKE} )
+
+${SRC}/algebra/Makefile: ${SRC}/algebra/Makefile.pamphlet
+	@echo 30 making ${SRC}/algebra/Makefile from \
+                ${SRC}/algebra/Makefile.pamphlet
+	@( cd algebra ; ${DOCUMENT} ${NOISE} Makefile ; \
+        cp Makefile.dvi ${MNT}/${SYS}/doc/src/algebra.Makefile.dvi ; \
+	echo 30a extracting findAlgebraFiles from \
+                 ${SRC}/algebra/Makefile.pamphlet ; \
+	${TANGLE} -t8 -RfindAlgebraFiles Makefile.pamphlet \
+            > ${INT}/algebra/findAlgebraFiles ; \
+	echo 30b running ${INT}/algebra/findAlgebraFiles ; \
+	. ${INT}/algebra/findAlgebraFiles >> Makefile)
+
+algebradocument: ${SRC}/algebra/Makefile
+	@echo 31 documenting ${SRC}/algebra
+	@mkdir -p ${MNT}/${SYS}/doc/src/algebra
+	@mkdir -p ${INT}/doc/src/algebra
+	@( cd algebra ; ${ENV} ${MAKE} document )
+
+algebraclean: ${SRC}/algebra/Makefile
+	@echo 32 cleaning ${SRC}/algebra
+	@( cd algebra ; ${ENV} ${MAKE} clean )
+	@rm -rf ${OBJ}/${SYS}/algebra
+	@rm -f ${SRC}/algebra/Makefile
+	@rm -f ${SRC}/algebra/Makefile.dvi
+
+@
 \subsection{Volume 11: Axiom Browser book}
 These are the pages for the Axiom Firefox browser interface.
 They can be expanded in parallel since they (currently) need no

\start
Date: Fri, 13 Jun 2008 23:43:18 -0500
From: Tim Daly
To: list
Subject: 20080613.01.tpd.patch (compress viewman.c to a single file)

The viewman program is now a single C file.
The index has been improved.
=====================================================================
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index 8830367..3cf1cd5 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -1031,17 +1031,29 @@ However, the moColor macro IS used but not included.
    */
 #define refPt3D(v,x) ( (x)>(v).numOfPoints?traverse(resMax - ((x)-((v).numOfPoints-1))):(v).points + (x) )
 
+@
+\index{componentProp struct}
+\index{struct!componentProp}
+<<include/component.h>>=
 typedef struct _componentProp {
   int closed,
     solid;
 } componentProp;
 
+@
+\index{struct!LPoint}
+\index{LPoint struct}
+<<include/component.h>>=
 typedef struct _LPoint { /* meaning list of points */
   componentProp prop;
   int numOfPoints;
   int *indices;
 } LPoint;
 
+@
+\index{struct!LLPoint}
+\index{LLPoint struct}
+<<include/component.h>>=
 typedef struct _LLPoint { /* meaning list of list of points */
   /* for the current 3D stuff:
      functions of 2 variables - closed is false (xmax does not close
@@ -1055,6 +1067,10 @@ typedef struct _LLPoint { /* meaning list of list of points */
 } LLPoint;
 
 
+@
+\index{struct!LLLPoint}
+\index{LLLPoint struct}
+<<include/component.h>>=
 typedef struct _LLLPoint { /* meaning list of list of list of points */
   /* for the current 3D stuff -- that is functions of 2 variables and
      parametric surfaces of one variable (tubes) -- there would be
@@ -1113,6 +1129,12 @@ typedef struct _LLLPoint { /* meaning list of list of list of points */
  * This is used to keep track of GC name in character and in unsigned long
  */
 
+@
+\index{struct!GCstruct}
+\index{GCstruct struct}
+\index{struct!GCptr}
+\index{GCptr struct}
+<<include/g.h>>=
 typedef struct _GCstruct {
   GC	 GCint;
   char		 GCchar[10];
@@ -1140,6 +1162,10 @@ extern GCptr GChead;      /* Points to the head of GCstruct linked list. */
 
 /* Used in XDraw and XDrawFilled */
 
+@
+\index{struct!Vertex}
+\index{Vertex struct}
+<<include/nox10.h>>=
 typedef struct _Vertex {
   short x, y;
   unsigned short flags;
@@ -1158,11 +1184,13 @@ typedef struct _Vertex {
   XDrawFilled so it shouldn't be defined. 
 */
 
-/*
-  XAssoc - Associations used in the XAssocTable data structure.  The 
-  associations are used as circular queue entries in the association table
-  which is contains an array of circular queues (buckets).
-  */
+@
+{\tt XAssoc} - Associations used in the XAssocTable data structure.  The 
+associations are used as circular queue entries in the association table
+which is contains an array of circular queues (buckets).
+\index{struct!XAssoc}
+\index{XAssoc struct}
+<<include/nox10.h>>=
 typedef struct _XAssoc {
   struct _XAssoc *next;	/* Next object in this bucket. */
   struct _XAssoc *prev;	/* Previous obejct in this bucket. */
@@ -1171,15 +1199,17 @@ typedef struct _XAssoc {
   char *data;		/* Pointer to untyped memory. */
 } XAssoc;
 
-/* 
-   XAssocTable - X Window System id to data structure pointer association
-   table.  An XAssocTable is a hash table whose buckets are circular
-   queues of XAssoc's.  The XAssocTable is constructed from an array of
-   XAssoc's which are the circular queue headers (bucket headers).  
-   An XAssocTable consists an XAssoc pointer that points to the first
-   bucket in the bucket array and an integer that indicates the number
-   of buckets in the array.
- */
+@
+{\tt XAssocTable} - X Window System id to data structure pointer association
+table.  An XAssocTable is a hash table whose buckets are circular
+queues of XAssoc's.  The XAssocTable is constructed from an array of
+XAssoc's which are the circular queue headers (bucket headers).  
+An XAssocTable consists an XAssoc pointer that points to the first
+bucket in the bucket array and an integer that indicates the number
+of buckets in the array.
+\index{struct!XAssocTable}
+\index{XAssocTable struct}
+<<include/nox10.h>>=
 typedef struct _XAssocTable {
   XAssoc **buckets;		/* Pointer to first bucket in bucket array.*/
   int size;			/* Table size (number of buckets). */
@@ -1204,15 +1234,25 @@ typedef struct _XAssocTable {
 
 @
 \section{rgb.h}
+\index{struct!RGB}
+\index{RGB struct}
 <<include/rgb.h>>=
 typedef struct _RGB {
   float r,g,b;
 } RGB ;
 
+@
+\index{struct!HSV}
+\index{HSV struct}
+<<include/rgb.h>>=
 typedef struct _HSV {
   float h,s,v;
 } HSV ;
 
+@
+\index{struct!HLS}
+\index{HLS struct}
+<<include/rgb.h>>=
 typedef struct _HLS {
   float h,l,s;
 } HLS ;
@@ -1258,12 +1298,22 @@ extern int       scrn;
 #define openTube 1
 #define closedTube 0
 
+@
+\index{struct!triple}
+\index{triple struct}
+<<include/tube.h>>=
 typedef struct _triple {    /* used for normals */
   float x,y,z;
 } triple;
 
 <<include/rgb.h>>
 
+@
+\index{struct!viewTriple}
+\index{viewTriple struct}
+\index{struct!viewTriplePtr}
+\index{viewTriplePtr struct}
+<<include/tube.h>>=
 typedef struct _viewTriple { /* used for points in 3 space */
   float x,y,z,c,sc;          /* c is color component */
   float wx,wy,wz;            /* world space coords */
@@ -1283,7 +1333,10 @@ typedef struct _viewTriple { /* used for points in 3 space */
 #define polygonComponent 3
 #define surfaceComponent 4
 
-
+@
+\index{struct!poly}
+\index{poly struct}
+<<include/tube.h>>=
 typedef struct _poly {
   int num, sortNum,
     split;                   /* how many times the polygon's been split */
@@ -1305,21 +1358,30 @@ typedef struct _poly {
     partialClipPz, totalClipPz;
 } poly;
 
-
+@
+\index{struct!polyList}
+\index{polyList struct}
+<<include/tube.h>>=
 typedef struct _polyList {
   int  numPolys;
   poly *polyIndx;
   struct _polyList *next;
 } polyList;
 
-
+@
+\index{struct!slice}
+\index{slice struct}
+<<include/tube.h>>=
 typedef struct _slice {
   int keyoffset;
   viewTriple *points;
   struct _slice *next;
 } slice;
 
-
+@
+\index{struct!tubeModel}
+\index{tubeModel struct}
+<<include/tube.h>>=
 typedef struct _tubeModel {
   /* numslices are the number of pts on the curve */
   int numslices, slicepts, numPolygons;
@@ -1328,7 +1390,10 @@ typedef struct _tubeModel {
   poly  *polygons;
 } tubeModel;
 
-
+@
+\index{struct!pointInfo}
+\index{pointInfo struct}
+<<include/tube.h>>=
 typedef struct _pointInfo {
   viewTriple *theVT;
   int        onVertex,segmentNum;
@@ -1341,7 +1406,10 @@ typedef struct _pointInfo {
 #include <X11/Xlib.h>
 #define maxGraphs 9
 
-
+@
+\index{struct!viewManager}
+\index{viewManager struct}
+<<include/view2d.h>>=
 typedef struct _viewManager {
   int viewType,          /* specifies view3d, view2d, etc... */
     PID,               /* unique integer greater than zero */
@@ -1352,17 +1420,27 @@ typedef struct _viewManager {
   struct _viewManager *nextViewport;
 } viewManager;
 
+@
+\index{struct!viewWithThisGraph}
+\index{viewWithThisGraph struct}
+<<include/view2d.h>>=
 typedef struct _viewsWithThisGraph {
   viewManager *viewGr;
   struct _viewsWithThisGraph *nextViewthing;
 } viewsWithThisGraph;
 
-
+@
+\index{struct!pointStruct}
+\index{pointStruct struct}
+<<include/view2d.h>>=
 typedef struct _pointStruct {
   float x,y,hue,shade;
 } pointStruct;
 
-
+@
+\index{struct!pointListStruct}
+\index{pointListStruct struct}
+<<include/view2d.h>>=
 typedef struct _pointListStruct {
   pointStruct             *listOfPoints;
   float                   hue, shade;
@@ -1370,7 +1448,10 @@ typedef struct _pointListStruct {
     numberOfPoints;
 } pointListStruct;
 
-
+@
+\index{struct!graphStruct}
+\index{graphStruct struct}
+<<include/view2d.h>>=
 typedef struct _graphStruct {
   int                 key;
   float               xmin,xmax,ymin,ymax;
@@ -1384,7 +1465,10 @@ typedef struct _graphStruct {
   struct _graphStruct *nextGraph;
 } graphStruct;
 
-
+@
+\index{struct!view2DStruct}
+\index{view2DStruct struct}
+<<include/view2d.h>>=
 typedef struct _view2DStruct {
   char        *title;
   int         vX,vY,vW,vH,
@@ -1394,7 +1478,10 @@ typedef struct _view2DStruct {
   int         graphKeyArray[maxGraphs];
 } view2DStruct;
 
-
+@
+\index{struct!graphStateStruct}
+\index{graphStateStruct struct}
+<<include/view2d.h>>=
 typedef struct _graphStateStruct {
   float scaleX, scaleY, deltaX, deltaY, centerX, centerY;
   int   pointsOn, connectOn, splineOn, axesOn, unitsOn,
@@ -1403,7 +1490,6 @@ typedef struct _graphStateStruct {
 			       View2D initializes them */
 } graphStateStruct;
 
-
 /* need spline color, axes color, units color... */
 @
 \section{view3d.h}
@@ -1415,17 +1501,28 @@ typedef struct _graphStateStruct {
    */
 #define maxGraphs 9
 
+@
+\index{struct!fun2VarModel}
+\index{fun2VarModel struct}
+<<include/view3d.h>>=
 typedef struct _fun2VarModel {
   float *zArray,*cArray;
   viewTriple *pointList;
 } fun2VarModel;
 
+@
+\index{union!kindOf}
+<<include/view3d.h>>=
 union kindOf {
   /*  float *zArray; */
   fun2VarModel fun2Var;
   tubeModel tube;
 };
 
+@
+\index{struct!view3DStruct}
+\index{view3DStruct struct}
+<<include/view3d.h>>=
 typedef struct _view3DStruct {
   int typeOf3D;
   float xmin,xmax,ymin,ymax,zmin,zmax;
@@ -1466,8 +1563,11 @@ typedef struct _view3DStruct {
 				   */
 } view3DStruct;
 
-
-/* for drawing the region box */
+@
+\index{struct!boxSideStruct}
+\index{boxSideStruct struct}
+for drawing the region box
+<<include/view3d.h>>=
 typedef struct _boxSideStruct {
   viewTriplePtr pointsPtr[4];	/* see notes for definition of box */
   int inside;
@@ -1680,68 +1780,120 @@ static char volumeMask_bits[] = {
 
 \chapter{viewman}
 \label{viewman}
-\subsection{cleanup.c}
-<<viewman/cleanup.c>>=
-#define _CLEANUP_C
+<<viewman>>=
+      /* Viewport Commands */
+#define makeViewport -1
+#define makeGraph    -1
+#define check(code) checker(code,__LINE__,"")
+#define maxConnect 40
+#define intSize sizeof(int)
+#define floatSize sizeof(float)
+#define yes 1
+#define no 0
+#define writeEach
+#define components
+#define spadActionMode
 
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
+#include <assert.h>
+#ifdef SGIplatform
+#include <bstring.h>
+#endif
+#include <errno.h>
 #if !defined(BSDplatform)
 #include <malloc.h>
 #endif
-#include <assert.h>
 #include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/time.h>
 #include <sys/wait.h>
+#include <unistd.h>
 
-<<viewman/viewman.h>>
 <<include/actions.h>>
+<<include/view2d.h>>
+<<include/view3d.h>>
+<<include/viewcommand.h>>
 
+#include "bsdsignal.h"
+#include "bsdsignal.h1"
+#include "com.h"
+#include "sockio-c.h1"
 #include "util.h1"
-extern void brokenPipe(int sig);
-extern void endChild(int sig);
-extern void rmViewMgr(viewManager * slotPtr);
-extern void closeChildViewport(viewManager * slotPtr);
-extern void goodbye(int sig);
 
-extern graphStruct * makeGraphFromSpadData(void);
-extern void discardGraph(graphStruct * theGraph);
-extern int readViewport(viewManager * viewPort , void * info , int size);
+extern int acknow;
+extern int checkClosedChild;
+extern int currentGraph;
+extern graphStateStruct currentGraphState;
+extern int defDsply;
+extern Display *dsply;
+extern fd_set filedes;
+extern int foundBrokenPipe;
+extern int graphKey; 
+extern graphStruct *graphList;
+extern int picked;
+extern char propertyBuffer[];
+extern Window  root;
+extern char *s1;
+extern viewManager *slot;
+extern Sock *spadSock;
+extern viewManager *stepSlot;
+extern int viewCommand; 
+extern XEvent viewmanEvent;
+extern int viewError;
+extern int viewOkay;
+extern viewManager *viewports;
+extern int viewType;
+
 
-void
-brokenPipe(int sig)
-{
-  fprintf(stderr,
-          "The viewport manager tried to write to a non-existing pipe.\n");
-}
+/************* global variables **************/
 
+Display *dsply;
+Window  root;
+XEvent  viewmanEvent;
+viewManager *viewports,
+  *slot,
+  *stepSlot;
+Sock        *spadSock;
+int         viewType, 
+  viewCommand,
+  acknow,
+  graphKey = 1,
+  defDsply,
+  currentGraph,
+  picked = no,
+  viewOkay  = 0,
+  viewError = -1,
+  checkClosedChild = no,
+  foundBrokenPipe = no;
+fd_set      filedes;
+graphStruct *graphList;
+graphStateStruct currentGraphState;
+char        *s1,
+  propertyBuffer[256];/* XProperty buffer */
 
-void
-endChild(int sig)
-{
 
+@
+\subsection{endChild}
+\index{viewman!endChild}
+\index{endChild viewman}
+<<viewman>>=
+void endChild(int sig) {
   checkClosedChild = yes;
 }
 
-
-/****************************
- * void rmViewMgr(slotPtr)  *
- *                          *
- * given a pointer to a     *
- * viewManager, this        *
- * procedure removes it     *
- * from the viewport list   *
-*****************************/
-
-void 
-rmViewMgr(viewManager *slotPtr)
-{
-  
+@
+\subsection{rmViewMgr}
+Given a pointer to a viewManager, this procedure removes it
+from the viewport list.
+\index{viewman!rmViewMgr}
+\index{rmViewMgr viewman}
+<<viewman>>=
+void rmViewMgr(viewManager *slotPtr) {
   int i,throwAway,code;
   viewManager *somePort, *someOtherPort;
   graphStruct *someGraph,*someOtherGraph;   /* used in discarding graphs */
   viewsWithThisGraph *someView,*someOtherView;
-  
   for (somePort=someOtherPort=viewports;
        (somePort != 0) && (somePort != slotPtr);
        somePort=(someOtherPort=somePort)->nextViewport)
@@ -1749,7 +1901,6 @@ rmViewMgr(viewManager *slotPtr)
   assert ((somePort == 0) ||
 	  (somePort == viewports) ||
 	  (somePort == someOtherPort->nextViewport));
-
   if (somePort) {
     if (somePort == viewports) viewports=viewports->nextViewport;
     else someOtherPort->nextViewport = somePort->nextViewport;
@@ -1757,7 +1908,8 @@ rmViewMgr(viewManager *slotPtr)
   /*** if view2d, then clean up after the graphs as well ***/
   if (slotPtr->viewType == view2DType) {
     for (i=0; i<maxGraphs; i++) {
-      code=readViewport(slotPtr,&throwAway,intSize);  /* get the graph to discard */
+      /* get the graph to discard */
+      code=readViewport(slotPtr,&throwAway,intSize);  
       if (code == -1) break; /* read failure - give up */
       if (throwAway) {                           /* zero means no graph */
 
@@ -1772,9 +1924,7 @@ rmViewMgr(viewManager *slotPtr)
 	assert( (someGraph == 0) ||
 		(someGraph == graphList) ||
 		(someGraph == someOtherGraph->nextGraph));
-
         if (someGraph) {              /* if found (should always be true) */
-
 	  for(someView=someOtherView=someGraph->views;
 	      (someView !=0 ) && (someView->viewGr != slotPtr);
 	      someView=(someOtherView=someView)->nextViewthing)
@@ -1794,7 +1944,8 @@ rmViewMgr(viewManager *slotPtr)
             free(someView);                    /* remove this viewport 
 						  from list */
           }
-	  /* if now nothing is pointing  to this graph , remove the graph from the list*/
+	  /* if now nothing is pointing  to this graph */
+          /* remove the graph from the list*/
           if (someGraph->views == 0) {
 	    if (someGraph == graphList)
 	      graphList = graphList->nextGraph;
@@ -1811,43 +1962,28 @@ rmViewMgr(viewManager *slotPtr)
   free(slotPtr);
 } /* rmViewMgr() */
 
-
-/***********************************
- * int closeChildViewport(slotPtr) *
- *                                 *
- * given a pointer to a viewport   *
- * structure (viewManager) this    *
- * procedure first waits for the   *
- * actual process to die and then  *
- * removes it from the list of     *
- * viewports via rmViewMgr().      *
- ***********************************/
-
-void  
-closeChildViewport(viewManager *slotPtr)
-{
-  
+@
+\subsection{closeChildViewport}
+Given a pointer to a viewport structure (viewManager) this 
+procedure first waits for the actual process to die and then 
+removes it from the list of viewports via rmViewMgr(). 
+\index{viewman!closeChildViewport}
+\index{closeChildViewport viewman}
+<<viewman>>=
+void closeChildViewport(viewManager *slotPtr) {
   int status;
   rmViewMgr(slotPtr);
   wait(&status); 
-  
 }  /* closeChildViewport */
 
-
-/*********************
- * int goodbye()     *
- *                   *
- * kill all children *
- * (how mean) and    *
- * then kill self.   *
- *********************/
-
-void 
-goodbye(int sig)
-{
-
+@
+\subsection{goodbye}
+Kill all children (how mean) and then kill self.
+\index{viewman!goodbye}
+\index{goodbye viewman}
+<<viewman>>=
+void goodbye(int sig) {
   viewManager *v;
-
   v = viewports;
   while (v) {
     kill(v->PID,SIGTERM);
@@ -1855,64 +1991,28 @@ goodbye(int sig)
     v = v->nextViewport;
   }
   exit(0);
-
 }
 
-
-
-
 @
-\subsection{fun2d.c}
-<<viewman/fun2d.c>>=
-#define _FUN2D_C
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-
-
-
-<<viewman/viewman.h>>
-<<include/actions.h>>
-
-#include "util.h1"
-#include "sockio-c.h1"
-extern void funView2D(int viewCommand);
-extern void sendGraphToView2D(int i ,int there,viewManager * viewType,
-                              graphStateStruct * doGraphStateArray);
-extern void forkView2D(void);
-extern int readViewport(viewManager * viewPort , void * info , int size);
-extern void makeView2DFromSpadData(view2DStruct * viewdata , 
-                                   graphStateStruct graphState[]);
-
-#define writeEach
-
-void 
-funView2D(int viewCommand)
-{
-
+\subsection{funView2D}
+\index{viewman!funView2D}
+\index{funView2D viewman}
+<<viewman>>=
+void funView2D(int viewCommand) {
   int code;
   int viewPID;
   float f1,f2;
   int i1,i2,i3;
   viewManager *viewport;
-
   viewPID = get_int(spadSock);
-
-
   viewport = viewports;
   while ((viewport) && (viewport->PID != viewPID)) {
     viewport = viewport->nextViewport;
   }
-  
   if (viewport) {
     send_int(spadSock,1);  /* acknowledge to spad */
     code = write(viewport->viewOut,&viewCommand,intSize);
-
-
     switch (viewCommand) {
-
     case putGraph:
       i1 = get_int(spadSock);  /* graph key */
       i2 = get_int(spadSock);  /* viewport slot 1..9 */
@@ -1924,7 +2024,6 @@ funView2D(int viewCommand)
       sendGraphToView2D(0,i1,viewport,&currentGraphState);
      
       break;
-
     case translate2D:
       i1 = get_int(spadSock);   /* graph index */
       f1 = get_float(spadSock); /* translate in the x direction */
@@ -1933,7 +2032,6 @@ funView2D(int viewCommand)
       code = write(viewport->viewOut,&f1,floatSize);
       code = write(viewport->viewOut,&f2,floatSize);
       break;
-
     case scale2D:
       i1 = get_int(spadSock);   /* graph index */
       f1 = get_float(spadSock); /* scale in the x direction */
@@ -1942,12 +2040,10 @@ funView2D(int viewCommand)
       code = write(viewport->viewOut,&f1,floatSize);
       code = write(viewport->viewOut,&f2,floatSize);
       break;
-
     case hideControl2D:
       i1 = get_int(spadSock);
       code = write(viewport->viewOut,&i1,intSize);
       break;
-
     case axesOnOff2D:
     case unitsOnOff2D:
     case connectOnOff:
@@ -1959,7 +2055,6 @@ funView2D(int viewCommand)
       code = write(viewport->viewOut,&i1,intSize);
       code = write(viewport->viewOut,&i2,intSize);
       break;
-
     case moveViewport:
     case resizeViewport:
       i1 = get_int(spadSock);
@@ -1967,14 +2062,12 @@ funView2D(int viewCommand)
       code = write(viewport->viewOut,&i1,intSize);
       code = write(viewport->viewOut,&i2,intSize);
       break;
-
     case changeTitle:
       s1 = get_string(spadSock);
       i1 = strlen(s1);
       code = write(viewport->viewOut,&i1,intSize);
       code = write(viewport->viewOut,s1,i1);
       break;
-
     case writeView:
       s1 = get_string(spadSock);
       i1 = strlen(s1);
@@ -1988,12 +2081,10 @@ funView2D(int viewCommand)
         code = write(viewport->viewOut,&i2,intSize);
       }
       break;
-
     case spadPressedAButton:
       i1 = get_int(spadSock);
       code = write(viewport->viewOut,&i1,intSize);
       break;
-
     }  /* switch */
          /*** get acknowledge from viewport */
     code = readViewport(viewport,&acknow,intSize);
@@ -2001,13 +2092,14 @@ funView2D(int viewCommand)
   } else {  
     send_int(spadSock,-1);  /* send error value in acknowledge to spad */
   }
-
 }
 
-void 
-forkView2D(void)
-{
-
+@
+\subsection{forkView2D}
+\index{viewman!forkView2D}
+\index{forkView2D viewman}
+<<viewman>>=
+void forkView2D(void) {
   viewManager      *viewport;
   int              childPID, code;
   int              i;
@@ -2015,27 +2107,21 @@ forkView2D(void)
   graphStateStruct doGraphStateArray[maxGraphs];
   int              there;
   int  pipe0[2], pipe1[2];
-
   char envAXIOM[100],runView[100];
-
 #ifdef DEBUG
   fprintf(stderr,"fun2d:Pipe calls for 2D\n");
 #endif
   check(pipe(pipe0));
   check(pipe(pipe1));
-
 #ifdef DEBUG
   fprintf(stderr,"Fork routine for 2D\n");
 #endif
   childPID = check(fork());
-
   switch(childPID) {
-
   case -1:
     fprintf(stderr,
             "The viewport manager cannot open a viewport window.\nTry closing some viewports.\n");
     return;
-
   case 0:
     /*****************************
      *       child process       *
@@ -2050,7 +2136,6 @@ forkView2D(void)
     close(pipe0[1]);
     close(pipe1[0]);
     close(pipe1[1]);
-
 #ifdef DEBUG
     fprintf(stderr,"Executing TwoDimensionalViewport process\n");
 #endif
@@ -2059,7 +2144,6 @@ forkView2D(void)
     check(execl(runView,runView,NULL));
     fprintf(stderr,"The viewport manager could not execute view2d.\nCheck that view2d is on your PATH.\n");
     exit(-1);
-
   default:
     /******************************
      *       parent process       *
@@ -2070,25 +2154,20 @@ forkView2D(void)
     }
     viewport->viewType = view2DType;
     viewport->PID = childPID;
-
          /* set up pipes to child process */
     close(pipe0[0]);
     close(pipe1[1]);
     viewport->viewIn  = pipe1[0];
     viewport->viewOut = pipe0[1];
-
          /* add new viewport to global list */
     viewport->nextViewport = viewports;
     viewports = viewport;
-
     if (viewport->viewIn <0) {
       fprintf(stderr,
  "viewman could not create connection to a 2D viewport window. Try again.\n");
       return;
     } else {
-
       code = readViewport(viewport,&acknow,intSize);
-
       if (code < 0) {
         fprintf(stderr,
          "viewman could not read from a 2D viewport window\ncode=%d\nack=%d\n",
@@ -2096,13 +2175,10 @@ forkView2D(void)
         return;
       }
     } 
-
     makeView2DFromSpadData(&doView2D,doGraphStateArray);
-
       /* tell the child that mother is a viewport manager */
     i = no;
     write(viewport->viewOut,&i,sizeof(int));
-
     write(viewport->viewOut,&doView2D,sizeof(view2DStruct));
     i = strlen(doView2D.title)+1;
     write(viewport->viewOut,&i,intSize); /* send length of the title child */
@@ -2112,44 +2188,39 @@ forkView2D(void)
       write(viewport->viewOut,&there,intSize);
       sendGraphToView2D(i,there,viewport,doGraphStateArray);
     };  /* for i in graphs */
-    
          /*** get acknowledge from viewport */
-
     code = readViewport(viewport,&(viewport->viewWindow),sizeof(Window));
     sleep(1);  /* wait a second...*/
     send_int(spadSock,viewport->PID);  /* acknowledge to spad */
-
   }   /* switch */
-
 }    /* forkView2D() */
 
-
-
-void
-sendGraphToView2D(int i,int there,viewManager *viewport,
-                  graphStateStruct *doGraphStateArray)
-{
-
+@
+\subsection{sendGraphToView2D}
+\index{viewman!sendGraphToView2D}
+\index{sendGraphToView2D viewman}
+<<viewman>>=
+void sendGraphToView2D(int i,int there,viewManager *viewport,
+                       graphStateStruct *doGraphStateArray) {
   graphStruct      *gPtr;
   pointListStruct  *llPtr;
   pointStruct      *p;
   viewsWithThisGraph *oneView;
   int j,k;
-
   if (there) {
     gPtr = graphList;
-    while ( gPtr != NULL  &&   gPtr->key != there)    /** find the right graph (same key) in graph list **/
+     /** find the right graph (same key) in graph list **/
+    while ( gPtr != NULL  &&   gPtr->key != there)   
       gPtr = gPtr->nextGraph;
     if ((gPtr==NULL) ||(gPtr->key != there) ){
-      fprintf(stderr,
-              "The viewport manager cannot find the requested graph and will quit and restart.\n");
+      fprintf(stderr,"The viewport manager cannot find the requested graph\n");
+      fprintf(stderr,"and will quit and restart.\n");
       exit(-1);
     } 
-    
-
-/*** Before sending off the data, insert a pointer to viewport from graph ***/
+  /* Before sending off the data, insert a pointer to viewport from graph */
   if (!(oneView = (viewsWithThisGraph *)malloc(sizeof(viewsWithThisGraph)))) {
-    fprintf(stderr,"The viewport manager ran out of memory trying to create a new graph (viewsWithThisGraph).\n");
+    fprintf(stderr,"The viewport manager ran out of memory trying to \n");
+    fprintf(stderr,"create a new graph (viewsWithThisGraph).\n");
     return;
   }
   oneView->viewGr          = viewport;
@@ -2173,7 +2244,6 @@ sendGraphToView2D(int i,int there,viewManager *viewport,
 #else
     write(viewport->viewOut,gPtr,sizeof(graphStruct));
 #endif
-    
     llPtr = gPtr->listOfListsOfPoints;
     for (j=0; j<(gPtr->numberOfLists); j++) {
       write(viewport->viewOut,&(llPtr->numberOfPoints),intSize);
@@ -2190,7 +2260,6 @@ sendGraphToView2D(int i,int there,viewManager *viewport,
       write(viewport->viewOut,&(llPtr->pointSize),intSize);
       llPtr++;
     }   /* for j in list of lists of points */
-    
     /* a graph state is defined for a graph if graph is there */
     write(viewport->viewOut,&(doGraphStateArray[i].scaleX),floatSize);    
     write(viewport->viewOut,&(doGraphStateArray[i].scaleY),floatSize);
@@ -2204,56 +2273,27 @@ sendGraphToView2D(int i,int there,viewManager *viewport,
     write(viewport->viewOut,&(doGraphStateArray[i].unitsOn),intSize);
     write(viewport->viewOut,&(doGraphStateArray[i].unitsColor),intSize);
     write(viewport->viewOut,&(doGraphStateArray[i].showing),intSize);
-
   }   /* if graph is there */
-
 }
 
 @
-\subsection{fun3d.c}
-<<viewman/fun3d.c>>=
-#define _FUN3D_C
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-
-<<viewman/viewman.h>>
-#define spadActionMode
-/* define spadEventMode */
-#define components
-<<include/actions.h>>
-  
-#include "util.h1"
-#include "sockio-c.h1"
-extern void funView3D(int viewCommand);
-extern void forkView3D(int typeOfViewport);
-extern void makeView3DFromSpadData(view3DStruct * viewdata, 
-                                   int typeOfViewport);
-extern int readViewport(viewManager * viewPort , void * info , int size);
-
-void 
-funView3D(int viewCommand)
-{
-
+\subsection{funView3D}
+\index{viewman!funView3D}
+\index{funView3D viewman}
+<<viewman>>=
+void funView3D(int viewCommand) {
   int code;
   int viewPID;
   float f1,f2,f3,f4;
   int i1,i2;
   viewManager *viewport;
-
   viewPID = get_int(spadSock);
-
   viewport = viewports;
   while ((viewport) && (viewport->PID != viewPID)) 
     viewport = viewport->nextViewport;
-
   if (viewport) {
     send_int(spadSock,1);  /* acknowledge to spad */
-
     viewmanEvent.xclient.window = viewport->viewWindow;
-
     code = write(viewport->viewOut,&viewCommand,intSize);
     switch (viewCommand) {
     case rotate:
@@ -2262,12 +2302,10 @@ funView3D(int viewCommand)
       code = write(viewport->viewOut,&f1,floatSize);
       code = write(viewport->viewOut,&f2,floatSize);
       break;
-
     case zoom:
       f1 = get_float(spadSock);
       code = write(viewport->viewOut,&f1,floatSize);
       break;
-
     case zoomx:
       f1 = get_float(spadSock);
       f2 = get_float(spadSock);
@@ -2276,14 +2314,12 @@ funView3D(int viewCommand)
       code = write(viewport->viewOut,&f2,floatSize);
       code = write(viewport->viewOut,&f3,floatSize);
       break;
-
     case translate:
       f1 = get_float(spadSock);
       f2 = get_float(spadSock);
       code = write(viewport->viewOut,&f1,floatSize);
       code = write(viewport->viewOut,&f2,floatSize);
       break;
-
     case modifyPOINT:
       i1 = get_int(spadSock);
       f1 = get_float(spadSock);
@@ -2296,12 +2332,10 @@ funView3D(int viewCommand)
       code = write(viewport->viewOut,&f3,floatSize);
       code = write(viewport->viewOut,&f4,floatSize);
       break;
-
     case hideControl:
       i1 = get_int(spadSock);
       code = write(viewport->viewOut,&i1,intSize);
       break;
-
     case axesOnOff:
     case perspectiveOnOff:
     case region3D:
@@ -2310,39 +2344,33 @@ funView3D(int viewCommand)
       i1 = get_int(spadSock);
       code = write(viewport->viewOut,&i1,intSize);
       break;
-
     case eyeDistanceData:
     case hitherPlaneData:
       f1 = get_float(spadSock);
       code = write(viewport->viewOut,&f1,floatSize);
       break;
-
     case colorDef:
       i1 = get_int(spadSock);
       i2 = get_int(spadSock);
       code = write(viewport->viewOut,&i1,intSize);
       code = write(viewport->viewOut,&i2,intSize);
       break;
-
     case moveViewport:
       i1 = get_int(spadSock);
       i2 = get_int(spadSock);
       code = write(viewport->viewOut,&i1,intSize);
       code = write(viewport->viewOut,&i2,intSize);
       break;
-
     case resizeViewport:
       i1 = get_int(spadSock);
       i2 = get_int(spadSock);
       code = write(viewport->viewOut,&i1,intSize);
       code = write(viewport->viewOut,&i2,intSize);
       break;
-
     case transparent:
     case opaqueMesh:
     case render:
       break;
-
     case lightDef:
       f1 = get_float(spadSock);
       f2 = get_float(spadSock);
@@ -2351,20 +2379,16 @@ funView3D(int viewCommand)
       code = write(viewport->viewOut,&f2,floatSize);
       code = write(viewport->viewOut,&f3,floatSize);
       break;
-
     case translucenceDef:
       f1 = get_float(spadSock);
       code = write(viewport->viewOut,&f1,floatSize);
       break;
-
-
     case changeTitle:
       s1 = get_string(spadSock);
       i1 = strlen(s1);
       code = write(viewport->viewOut,&i1,intSize);
       code = write(viewport->viewOut,s1,i1);
       break;
-
     case writeView:
       s1 = get_string(spadSock);
       i1 = strlen(s1);
@@ -2378,63 +2402,56 @@ funView3D(int viewCommand)
         code = write(viewport->viewOut,&i2,intSize);
       }
       break;
-
     case diagOnOff:
       i1 = get_int(spadSock);
       code = write(viewport->viewOut,&i1,intSize);
       break;
-
     case outlineOnOff:
       i1 = get_int(spadSock);
       code = write(viewport->viewOut,&i1,intSize);
       break;
-
     case spadPressedAButton:
       i1 = get_int(spadSock);
       code = write(viewport->viewOut,&i1,intSize);
       break;
     }  /* switch */
     /*** get acknowledge from viewport */
-
     code = readViewport(viewport,&acknow,intSize);
     send_int(spadSock,1);  /* acknowledge to spad */
   } else {  /* if (viewport) */
     send_int(spadSock,-1);  /* send error value in acknowledge to spad */
   }
-
 }
-void
-forkView3D(int typeOfViewport)
-{
 
+@
+\subsection{forkView3D}
+\index{viewman!forkView3D}
+\index{forkView3D viewman}
+<<viewman>>=
+void forkView3D(int typeOfViewport) {
   viewManager *viewport;
   int         childPID, code;
   int         i;
-
   view3DStruct doView3D;
   int  pipe0[2],pipe1[2];
   int *anIndex;
-
   char envAXIOM[100],runView[100];
   int j,k;
   LLPoint *anLLPoint;
   LPoint *anLPoint;
-
 #ifdef DEBUG
   fprintf(stderr,"Pipe calls for 3D\n");
 #endif
   check(pipe(pipe0));
   check(pipe(pipe1));
-
 #ifdef DEBUG
   fprintf(stderr,"Fork routine for 3D\n");
 #endif
   switch(childPID = check(fork())) {
-
   case -1:
-    printf("Cannot create a new process - you probably have too many things running already.\n");
+    printf("Cannot create a new process - \n");
+    printf("you probably have too many things running already.\n");
     return;
-
   case 0:
     /*****************************
      *       child process       *
@@ -2449,7 +2466,6 @@ forkView3D(int typeOfViewport)
     close(pipe0[1]);
     close(pipe1[0]);
     close(pipe1[1]);
-
 #ifdef DEBUG
     fprintf(stderr,"Executing ThreeDimensionalViewport process\n");
 #endif
@@ -2458,7 +2474,6 @@ forkView3D(int typeOfViewport)
     check(execl(runView,runView,NULL));
     fprintf(stderr,"The viewport manager could not execute view3d.\nCheck that view3d is on your PATH.\n");
     exit(-1);
-
   default:
     /******************************
      *       parent process       *
@@ -2469,47 +2484,37 @@ forkView3D(int typeOfViewport)
     }
     viewport->viewType = typeOfViewport;
     viewport->PID = childPID;
-
          /* set up pipes to child process */
     close(pipe0[0]);
     close(pipe1[1]);
     viewport->viewIn  = pipe1[0];
     viewport->viewOut = pipe0[1];
-
          /* add new viewport to global list */
     viewport->nextViewport = viewports;
     viewports = viewport;
-
     if (viewport->viewIn <0) {
-      fprintf(stderr,
-              "The viewport manager could not create connection to a 3D viewport window. Try again.\n");
+      fprintf(stderr,"The viewport manager could not create connection to\n");
+      fprintf(stderr," a 3D viewport window. Try again.\n");
       return;
     } else {
-
       code = readViewport(viewport,&acknow,intSize);
-
       if (code < 0) {
-        fprintf(stderr,
-              "The viewport manager could not read from a 3D viewport window\ncode=%d\nack=%d\n",code,acknow);
+        fprintf(stderr,"The viewport manager could not read from a 3D \n");
+        fprintf(stderr,"viewport window\ncode=%d\nack=%d\n",code,acknow);
         return;
       }
     } 
-
     makeView3DFromSpadData(&doView3D,typeOfViewport);
-
       /* tell the child that parent is a viewport manager */
     i = no;
     write(viewport->viewOut,&i,sizeof(int));
-
     write(viewport->viewOut,&doView3D,sizeof(view3DStruct));
-
     i = strlen(doView3D.title)+1;
-    write(viewport->viewOut,&i,intSize);        /* tell the length of the title to child */
-    write(viewport->viewOut,doView3D.title,i);  /* tell the title to the child */
+    write(viewport->viewOut,&i,intSize); /*tell the length of title to child */
+    write(viewport->viewOut,doView3D.title,i);  /* tell the title to child */
     write(viewport->viewOut,&(doView3D.lightVec[0]),floatSize);
     write(viewport->viewOut,&(doView3D.lightVec[1]),floatSize);
     write(viewport->viewOut,&(doView3D.lightVec[2]),floatSize);
-
     /* send generalized 3D components */
     write(viewport->viewOut,&(doView3D.numOfPoints),intSize);
     for (i=0; i<doView3D.numOfPoints; i++) {
@@ -2534,7 +2539,6 @@ forkView3D(int typeOfViewport)
           write(viewport->viewOut,anIndex,intSize);
       } /* for LPoints in LLPoints (j) */
     } /* for LLPoints in LLLPoints (i) */
-    
          /*** get acknowledge from viewport */
     code = readViewport(viewport,&(viewport->viewWindow),sizeof(Window)); 
     sleep(1);  /* wait a second...*/
@@ -2544,60 +2548,23 @@ forkView3D(int typeOfViewport)
 
 }    /* forkView3D() */
 
-
-@
-\subsection{globalsm.h}
-<<viewman/globalsm.h>>=
-extern viewManager *viewports,*slot,*stepSlot;
-extern Sock        *spadSock;
-extern int         viewType, viewCommand; 
-extern fd_set         filedes;
-extern int             acknow;
-extern int         graphKey; 
-extern graphStruct *graphList;
-extern char *s1;
-extern Display *dsply;
-extern int     defDsply;
-extern Window  root;
-extern XEvent  viewmanEvent;
-extern int              currentGraph;
-extern graphStateStruct currentGraphState;
-extern int picked;
-extern int viewOkay;
-extern int viewError;
-extern int checkClosedChild,
-           foundBrokenPipe;
-extern char propertyBuffer[];
 @
-\subsection{make2d.c}
-<<viewman/make2d.c>>=
-#define _MAKE2D_C
-
-<<viewman/viewman.h>>
-
-#include "sockio-c.h1"
-extern void makeView2DFromSpadData(view2DStruct * viewdata , 
-                                   graphStateStruct graphState[]);
-
-void 
-makeView2DFromSpadData(view2DStruct *viewdata,graphStateStruct graphState[])
-{
-
-  int i;
-
+\subsection{makeView2DFromSpadData}
+\index{viewman!makeView2DFromSpadData}
+\index{makeView2DFromSpadData viewman}
+<<viewman>>=
+void makeView2DFromSpadData(view2DStruct *viewdata,
+                            graphStateStruct graphState[])
+{ int i;
   viewdata->title = get_string(spadSock);
-
   viewdata->vX = get_int(spadSock);
   viewdata->vY = get_int(spadSock);
   viewdata->vW = get_int(spadSock);
   viewdata->vH = get_int(spadSock);
-
   viewdata->showCP = get_int(spadSock);
-
   for (i=0; i<maxGraphs; i++) {
     viewdata->graphKeyArray[i] = get_int(spadSock);
     if (viewdata->graphKeyArray[i]) {
-
       graphState[i].scaleX     = get_float(spadSock);
       graphState[i].scaleY     = get_float(spadSock);
       graphState[i].deltaX     = get_float(spadSock);
@@ -2610,31 +2577,17 @@ makeView2DFromSpadData(view2DStruct *viewdata,graphStateStruct graphState[])
       graphState[i].unitsOn    = get_int(spadSock);
       graphState[i].unitsColor = get_int(spadSock);
       graphState[i].showing    = get_int(spadSock);
-      graphState[i].selected   = 1;                /* always default to selected? */
-
+      graphState[i].selected   = 1;       /* always default to selected? */
     }
   }
 }
-@
-\subsection{make3d.c}
-<<viewman/make3d.c>>=
-#define _MAKE3D_C
-
-#include <stdlib.h>
-
-<<viewman/viewman.h>>
-#define spadActionMode
-/* define spadEventMode */
-#define components
-
-#include "sockio-c.h1"
-extern void makeView3DFromSpadData(view3DStruct * viewdata, 
-                                   int typeOfViewport);
-
-void 
-makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport)
-{
 
+@
+\subsection{makeView3DFromSpadData}
+\index{viewman!makeView3DFromSpadData}
+\index{makeView3DFromSpadData viewman}
+<<viewman>>=
+void makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport) {
   int i,j,k;
   LLPoint *anLLPoint;
   LPoint *anLPoint;
@@ -2644,11 +2597,8 @@ makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport)
   double cMin = 0;
   double cMax = 0;
   double cNorm = 0;
-
   viewdata->typeOf3D = typeOfViewport;
-
   viewdata->title = get_string(spadSock);
-
   viewdata->deltaX = get_float(spadSock);
   viewdata->deltaY = get_float(spadSock);
   viewdata->scale  = get_float(spadSock);
@@ -2657,12 +2607,10 @@ makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport)
   viewdata->scaleZ = get_float(spadSock);
   viewdata->theta  = get_float(spadSock);
   viewdata->phi    = get_float(spadSock);
-
   viewdata->vX = get_int(spadSock);
   viewdata->vY = get_int(spadSock);
   viewdata->vW = get_int(spadSock);
   viewdata->vH = get_int(spadSock);
-  
   viewdata->showCP    = get_int(spadSock);
   viewdata->style     = get_int(spadSock);
   viewdata->AxesOn    = get_int(spadSock);
@@ -2671,20 +2619,17 @@ makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport)
   viewdata->box = get_int(spadSock);
   viewdata->clipbox = get_int(spadSock);
   viewdata->clipStuff = get_int(spadSock);
-
   viewdata->hueOff    = get_int(spadSock);
   viewdata->numOfHues = get_int(spadSock);
-
   viewdata->lightVec[0]  = get_float(spadSock);
   viewdata->lightVec[1]  = get_float(spadSock);
   viewdata->lightVec[2]  = get_float(spadSock);
   viewdata->translucency = get_float(spadSock);
-
   viewdata->perspective = get_int(spadSock);
   viewdata->eyeDistance = get_float(spadSock);
-
   viewdata->numOfPoints = get_int(spadSock);
-  viewdata->points = (viewTriple *)malloc(viewdata->numOfPoints * sizeof(viewTriple));
+  viewdata->points =
+       (viewTriple *)malloc(viewdata->numOfPoints * sizeof(viewTriple));
   for (i=0; i<viewdata->numOfPoints; i++) {
     refPt(*viewdata,i)->x = get_float(spadSock);
     refPt(*viewdata,i)->y = get_float(spadSock);
@@ -2698,17 +2643,22 @@ makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport)
       viewdata->zmin = viewdata->zmax = refPt(*viewdata,i)->z;
       cMin = cMax = refPt(*viewdata,i)->c;
     } else {
-      if (refPt(*viewdata,i)->x < viewdata->xmin) viewdata->xmin = refPt(*viewdata,i)->x;
-      else if (refPt(*viewdata,i)->x > viewdata->xmax) viewdata->xmax = refPt(*viewdata,i)->x;
-      if (refPt(*viewdata,i)->y < viewdata->ymin) viewdata->ymin = refPt(*viewdata,i)->y;
-      else if (refPt(*viewdata,i)->y > viewdata->ymax) viewdata->ymax = refPt(*viewdata,i)->y;
-      if (refPt(*viewdata,i)->z < viewdata->zmin) viewdata->zmin = refPt(*viewdata,i)->z;
-      else if (refPt(*viewdata,i)->z > viewdata->zmax) viewdata->zmax = refPt(*viewdata,i)->z;
+      if (refPt(*viewdata,i)->x < viewdata->xmin)
+         viewdata->xmin = refPt(*viewdata,i)->x;
+      else if (refPt(*viewdata,i)->x > viewdata->xmax)
+         viewdata->xmax = refPt(*viewdata,i)->x;
+      if (refPt(*viewdata,i)->y < viewdata->ymin)
+         viewdata->ymin = refPt(*viewdata,i)->y;
+      else if (refPt(*viewdata,i)->y > viewdata->ymax)
+         viewdata->ymax = refPt(*viewdata,i)->y;
+      if (refPt(*viewdata,i)->z < viewdata->zmin)
+         viewdata->zmin = refPt(*viewdata,i)->z;
+      else if (refPt(*viewdata,i)->z > viewdata->zmax)
+         viewdata->zmax = refPt(*viewdata,i)->z;
       if (refPt(*viewdata,i)->c < cMin) cMin = refPt(*viewdata,i)->c;
       else if (refPt(*viewdata,i)->c > cMax) cMax = refPt(*viewdata,i)->c;
     } /* if (firstPieceOfData) else */
   } /* for i (point data) */
-
   viewdata->lllp.numOfComponents = get_int(spadSock);
   anLLPoint = viewdata->lllp.llp =
     (LLPoint *)malloc(viewdata->lllp.numOfComponents*sizeof(LLPoint));
@@ -2728,191 +2678,61 @@ makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport)
         *anIndex = get_int(spadSock);
     } /* for LPoints in LLPoints (j) */
   } /* for LLPoints in LLLPoints (i) */
-
       /* now normalize the colors */
   cNorm = cMax - cMin;
          /*** new fields - cmin, cmax ***/
   viewdata->cmin = cMin;
   viewdata->cmax = cMax;
-
   constantColor = (cNorm < 0.0001);
   for (i=0; i<viewdata->numOfPoints; i++)
     if (constantColor) refPt(*viewdata,i)->c = 0.5;
     else refPt(*viewdata,i)->c = (refPt(*viewdata,i)->c - cMin)/cNorm;
-
   viewdata->scaleDown = yes; 
-
 }
 
 @
-\subsection{viewman Makefile}
-<<viewman/Makefile>>=
-BOOK=${SPD}/books/bookvol8.pamphlet
-MIDINT=	${INT}/graph/viewman
-MIDOBJ=	${OBJ}/${SYS}/graph/viewman
-OUT=	${MNT}/${SYS}/lib
-LIB=    ${OBJ}/${SYS}/lib
-DOC=    ${MNT}/${SYS}/doc/src/graph
-
-CFLAGS  = ${CCF} -I${SRC}/include
-LDFLAGS = ${LDF} -lX11
-
-OBJS=   ${MIDOBJ}/viewman.o ${MIDOBJ}/readview.o  ${MIDOBJ}/make3d.o \
-	${MIDOBJ}/fun3d.o   ${MIDOBJ}/makegraph.o ${MIDOBJ}/make2d.o \
-        ${MIDOBJ}/fun2d.o   ${MIDOBJ}/cleanup.o   ${MIDOBJ}/sselect.o \
-        ${OBJ}/${SYS}/lib/sockio-c.o
-
-all: ${OBJS} ${OUT}/viewman 
-	@ echo 30 finished viewman from bookvol8
-
-${OUT}/viewman: ${OBJS} ${LIB}/util.o ${LIB}/bsdsignal.o
-	@ echo 1 linking ${OUT}/viewman
-	@ ${CC} ${OBJS} -o ${OUT}/viewman ${LIB}/util.o \
-            ${LIB}/bsdsignal.o ${LDFLAGS}
-
-${MIDINT}/viewman.c: ${BOOK}
-	@ echo 2 ${MIDINT}/viewman.c from ${BOOK}
-	@( cd ${MIDINT} ; \
-	${TANGLE} -R"viewman/viewman.c" ${BOOK} >viewman.c )
-
-${MIDOBJ}/viewman.o: ${SRC}/include/com.h ${MIDINT}/viewman.c
-	@ echo 3 making ${MIDOBJ}/viewman.o from ${MIDINT}/viewman.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/viewman.c )
-
-${MIDINT}/sselect.c: ${BOOK}
-	@ echo 5 ${MIDINT}/sselect.c from ${BOOK}
-	@( cd ${MIDINT} ; \
-	${TANGLE} -R"viewman/sselect.c" ${BOOK} >sselect.c )
-
-${MIDOBJ}/sselect.o: ${SRC}/include/com.h ${MIDINT}/sselect.c
-	@ echo 6 making ${MIDOBJ}/sselect.o from ${MIDINT}/sselect.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/sselect.c )
-
-${MIDINT}/cleanup.c: ${BOOK}
-	@ echo 8 ${MIDINT}/cleanup.c from ${BOOK}
-	@( cd ${MIDINT} ; \
-	${TANGLE} -R"viewman/cleanup.c" ${BOOK} >cleanup.c )
-
-${MIDOBJ}/cleanup.o: ${SRC}/include/com.h ${MIDINT}/cleanup.c
-	@ echo 9 making ${MIDOBJ}/cleanup.o from ${MIDINT}/cleanup.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/cleanup.c )
-
-${MIDINT}/fun2d.c: ${BOOK}
-	@ echo 11 ${MIDINT}/fun2d.c from ${BOOK}
-	@( cd ${MIDINT} ; \
-	${TANGLE} -R"viewman/fun2d.c" ${BOOK} >fun2d.c )
-
-${MIDOBJ}/fun2d.o: ${SRC}/include/com.h ${MIDINT}/fun2d.c
-	@ echo 12 making ${MIDOBJ}/fun2d.o from ${MIDINT}/fun2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/fun2d.c )
-
-${MIDINT}/make2d.c: ${BOOK}
-	@ echo 14 ${MIDINT}/make2d.c from ${BOOK}
-	@( cd ${MIDINT} ; \
-	${TANGLE} -R"viewman/make2d.c" ${BOOK} >make2d.c )
-
-${MIDOBJ}/make2d.o: ${SRC}/include/com.h ${MIDINT}/make2d.c
-	@ echo 15 making ${MIDOBJ}/make2d.o from ${MIDINT}/make2d.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/make2d.c )
-
-${MIDINT}/makegraph.c: ${BOOK}
-	@ echo 17 ${MIDINT}/makegraph.c from ${BOOK}
-	@( cd ${MIDINT} ; \
-	${TANGLE} -R"viewman/makegraph.c" ${BOOK} >makegraph.c )
-
-${MIDOBJ}/makegraph.o: ${SRC}/include/com.h ${MIDINT}/makegraph.c
-	@ echo 18 making ${MIDOBJ}/makegraph.o from ${MIDINT}/makegraph.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/makegraph.c )
-
-${MIDINT}/fun3d.c: ${BOOK}
-	@ echo 20 ${MIDINT}/fun3d.c from ${BOOK}
-	@( cd ${MIDINT} ; \
-	${TANGLE} -R"viewman/fun3d.c" ${BOOK} >fun3d.c )
-
-${MIDOBJ}/fun3d.o: ${SRC}/include/com.h ${MIDINT}/fun3d.c
-	@ echo 21 making ${MIDOBJ}/fun3d.o from ${MIDINT}/fun3d.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/fun3d.c )
-
-${MIDINT}/make3d.c: ${BOOK}
-	@ echo 23 ${MIDINT}/make3d.c from ${BOOK}
-	@( cd ${MIDINT} ; \
-	${TANGLE} -R"viewman/make3d.c" ${BOOK} >make3d.c )
-
-${MIDOBJ}/make3d.o: ${SRC}/include/com.h ${MIDINT}/make3d.c
-	@ echo 24 making ${MIDOBJ}/make3d.o from ${MIDINT}/make3d.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/make3d.c )
-
-${MIDINT}/readview.c: ${BOOK}
-	@ echo 26 ${MIDINT}/readview.c from ${BOOK}
-	@( cd ${MIDINT} ; \
-	${TANGLE} -R"viewman/readview.c" ${BOOK} >readview.c )
-
-${MIDOBJ}/readview.o: ${SRC}/include/com.h ${MIDINT}/readview.c
-	@ echo 27 making ${MIDOBJ}/readview.o from ${MIDINT}/readview.c
-	@ ( cd ${MIDOBJ} ; ${CC} ${CFLAGS} -c ${MIDINT}/readview.c )
-
-@
-\subsection{makegraph.c}
-<<viewman/makegraph.c>>=
-#define _MAKEGRAPH_C
-
-#include <stdlib.h>
-#include <stdio.h>
-
-<<viewman/viewman.h>>
-
-#include "sockio-c.h1"
-extern graphStruct * makeGraphFromSpadData(void);
-extern void discardGraph(graphStruct * theGraph);
-
-graphStruct *
-makeGraphFromSpadData(void)
-{
-  
+\subsection{makeGraphFromSpadData}
+\index{viewman!makeGraphFromSpadData}
+\index{makeGraphFromSpadData viewman}
+<<viewman>>=
+graphStruct *makeGraphFromSpadData(void) {
   graphStruct     *graphData;
   pointListStruct *pL;
   pointStruct     *p;
   int i,j;
-
   if (!(graphData = (graphStruct *)malloc(sizeof(graphStruct)))) {
-    fprintf(stderr,"The viewport manager ran out of memory trying to create a new graph (graphStruct).\n");
+    fprintf(stderr,"The viewport manager ran out of memory trying to \n");
+    fprintf(stderr, "create a new graph (graphStruct).\n");
     exit(-1);
   }
-
   graphData->xmin = get_float(spadSock);   /* after everything is normalized */
   graphData->xmax = get_float(spadSock);
   graphData->ymin = get_float(spadSock);   /* view2d */
   graphData->ymax = get_float(spadSock);
-
   graphData->xNorm = 1/(graphData->xmax - graphData->xmin);
   graphData->yNorm = 1/(graphData->ymax - graphData->ymin);
-
   graphData->spadUnitX = get_float(spadSock);
   graphData->spadUnitY = get_float(spadSock);
-
   graphData->unitX = graphData->spadUnitX * graphData->xNorm;
   graphData->unitY = graphData->spadUnitY * graphData->yNorm;
-
   graphData->originX = -graphData->xmin * graphData->xNorm - 0.5;
   graphData->originY = -graphData->ymin * graphData->yNorm - 0.5;
-
-
   graphData->numberOfLists = get_int(spadSock);
-  if (!(pL = (pointListStruct *)malloc(graphData->numberOfLists * sizeof(pointListStruct)))) {
-    fprintf(stderr,"The viewport manager ran out of memory trying to create a new graph (pointListStruct).\n");
+  if (!(pL = (pointListStruct *)
+           malloc(graphData->numberOfLists * sizeof(pointListStruct)))) {
+    fprintf(stderr,"The viewport manager ran out of memory trying to \n");
+    fprintf(stderr,"create a new graph (pointListStruct).\n");
     exit(-1);
   }
   graphData->listOfListsOfPoints = pL;
-
   for (i=0; i<graphData->numberOfLists; i++) {
-
     pL->numberOfPoints = get_int(spadSock);
-    if (!(p = (pointStruct *)malloc(pL->numberOfPoints * sizeof(pointStruct)))) {
-      fprintf(stderr,"The viewport manager ran out of memory trying to create a new graph (pointStruct).\n");
+    if (!(p=(pointStruct *)malloc(pL->numberOfPoints*sizeof(pointStruct)))) {
+      fprintf(stderr,"The viewport manager ran out of memory trying to \n");
+      fprintf(stderr,"create a new graph (pointStruct).\n");
       exit(-1);
     }
     pL->listOfPoints = p;             /** point to current point list **/
-
     for (j=0; j<pL->numberOfPoints; j++) {
       p->x     = get_float(spadSock);         /* get numbers from Axiom */
       p->y     = get_float(spadSock);
@@ -2929,56 +2749,33 @@ makeGraphFromSpadData(void)
     pL->pointSize = get_int(spadSock);
     pL++;                          /** advance to next point list **/
   }
-
-
   graphData->key = graphKey++;
-  
   send_int(spadSock,(graphKey-1));          /* acknowledge to spad */
-
-
   return(graphData);
-
 }
   
-
-void 
-discardGraph (graphStruct *theGraph)
-{
-
+@
+\subsection{discardGraph}
+\index{viewman!discardGraph}
+\index{discardGraph viewman}
+<<viewman>>=
+void discardGraph(graphStruct *theGraph) {
   pointListStruct *pL;
   int j;
-
   for (j=0, pL=theGraph->listOfListsOfPoints; 
           j<theGraph->numberOfLists; j++,pL++)
     free(pL->listOfPoints);
   free(theGraph->listOfListsOfPoints);
   free(theGraph);
-
 }
-@
-\subsection{readview.c}
-<<viewman/readview.c>>=
-#define _READVIEW_C
-
-#include <unistd.h>
-#include <stdio.h>
-#include <errno.h>
-
-<<viewman/viewman.h>>
-
-extern void brokenPipe(int sig);
-extern void endChild(int sig);
-extern void rmViewMgr(viewManager * slotPtr);
-extern void closeChildViewport(viewManager * slotPtr);
-extern void goodbye(int sig);
-
-
-int 
-readViewport (viewManager *viewPort,void *info,int size)
-{
 
+@
+\subsection{readViewport}
+\index{viewman!readViewport}
+\index{readViewport viewman}
+<<viewman>>=
+int readViewport(viewManager *viewPort,void *info,int size) {
   int canRead;
-
 again:  
   if ((canRead=read(viewPort->viewIn,info,size)) > 0)   return(canRead); 
   if (errno==EINTR || errno==EAGAIN) goto again;
@@ -2986,49 +2783,18 @@ again:
 }
 
 @
-\subsection{sselect.c}
-<<viewman/sselect.c>>=
-#define _SSELECT_C
-
-#include <stdio.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <sys/wait.h>
-#include <signal.h>
-
-<<viewman/viewman.h>>
-#include "bsdsignal.h"
-
-#include "sockio-c.h1"
-#include "bsdsignal.h1"
-extern void brokenPipe(int sig);
-extern void endChild(int sig);
-extern void rmViewMgr(viewManager * slotPtr);
-extern void closeChildViewport(viewManager * slotPtr);
-extern void goodbye(int sig);
-
-extern int 
-superSelect(int n , int * rd , int * wr , int * ex , char * timeout);
-
-/*******************************************
- * int superSelect(n, rd, wr, ex, timeout) *
- *                                         *
- * superselect! if select returns a -1     *
- * due to an interrupt (EINTR), this       *
- * routine checks to see if it's a         *
- * child viewport that has closed.         *
- * Expected global variables:              *
- *   int  checkClosedChild                 *
- *******************************************/
- 
-int 
-superSelect(int n, int *rd, int *wr, int *ex, char *timeout)
-{
-  
+\subsection{superSelect}
+The function superselect!, if select returns a -1
+due to an interrupt (EINTR), this routine checks to see if it's a
+child viewport that has closed. Expected global variables: 
+{\tt checkClosedChild}
+\index{viewman!superSelect}
+\index{superSelect viewman}
+<<viewman>>=
+int superSelect(int n,int *rd,int *wr,int *ex,char *timeout) {
   int waiting;
   viewManager *viewport;
   int ret_val;
-  
   ret_val = select(n, (void *)rd, (void *)wr, (void *)ex, (void *)timeout);
   while (ret_val == -1 && errno == EINTR) {
     /* checkClosedChild gets set by the SIGCHLD handler */
@@ -3043,11 +2809,11 @@ superSelect(int n, int *rd, int *wr, int *ex, char *timeout)
 	/* flush(spadSock); */
         /* send_int(spadSock,1);   acknowledge to spad */
         checkClosedChild = no;
-#if defined(BSDplatform) || defined(MACOSXplatform)
+   #if defined(BSDplatform) || defined(MACOSXplatform)
         bsdSignal(SIGCHLD,endChild,DontRestartSystemCalls);
-#else
+   #else
         bsdSignal(SIGCLD,endChild,DontRestartSystemCalls);
-#endif
+   #endif
       }
     }
     ret_val = select(n, (void *)rd, (void *)wr, (void *)ex, (void *)timeout);
@@ -3056,84 +2822,27 @@ superSelect(int n, int *rd, int *wr, int *ex, char *timeout)
 }
 
 @
-\subsection{viewman.c}
-<<viewman/viewman.c>>=
-#define _VIEWMAN_C
-
-#include <unistd.h>
-#include <sys/time.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <signal.h>
-#ifdef SGIplatform
-#include <bstring.h>
-#endif
-
-<<viewman/viewman.h>>
-#define spadActionMode
-/* define spadEventMode */
-#define components
-<<include/actions.h>>
-<<include/viewcommand.h>>
-#include "bsdsignal.h"
-
-
-#include "bsdsignal.h1"
-#include "util.h1"
-#include "sockio-c.h1"
-extern void funView2D(int viewCommand);
-extern void sendGraphToView2D(int i ,int there,viewManager * viewType,
-                              graphStateStruct * doGraphStateArray);
-extern void forkView2D(void);
-extern void funView3D(int viewCommand);
-extern void forkView3D(int typeOfViewport);
-extern graphStruct * makeGraphFromSpadData(void);
-extern void discardGraph(graphStruct * theGraph);
-extern int readViewport(viewManager * viewPort , void * info , int size);
-extern void brokenPipe(int sig);
-extern void endChild(int sig);
-extern void rmViewMgr(viewManager * slotPtr);
-extern void closeChildViewport(viewManager * slotPtr);
-extern void goodbye(int sig);
-
-extern int 
-superSelect(int n , int * rd , int * wr , int * ex , char * timeout);
-
-/************* global variables **************/
-
-Display *dsply;
-Window  root;
-XEvent  viewmanEvent;
-viewManager *viewports,
-  *slot,
-  *stepSlot;
-Sock        *spadSock;
-int         viewType, 
-  viewCommand,
-  acknow,
-  graphKey = 1,
-  defDsply,
-  currentGraph,
-  picked = no,
-  viewOkay  = 0,
-  viewError = -1,
-  checkClosedChild = no,
-  foundBrokenPipe = no;
-fd_set      filedes;
-graphStruct *graphList;
-graphStateStruct currentGraphState;
-char        *s1,
-  propertyBuffer[256];/* XProperty buffer */
-
-
-int
-main (void)
-{
+\subsection{brokenPipe}
+\index{viewman!brokenPipe}
+\index{brokenPipe viewman}
+<<viewman>>=
+void brokenPipe(int sig) {
+  fprintf(stderr,
+          "The viewport manager tried to write to a non-existing pipe.\n");
+}
 
+@
+\subsection{main}
+The function superselect!, if select returns a -1
+due to an interrupt (EINTR), this routine checks to see if it's a
+child viewport that has closed. Expected global variables: 
+{\tt checkClosedChild}
+\index{viewman!main}
+\index{main viewman}
+<<viewman>>=
+int main(void) {
   graphStruct *aGraph;
   int keepLooking,code;
-  
   bsdSignal(SIGPIPE,brokenPipe,DontRestartSystemCalls);
 #if defined(BSDplatform) || defined(MACOSXplatform)
   bsdSignal(SIGCHLD,endChild,RestartSystemCalls);
@@ -3141,7 +2850,6 @@ main (void)
   bsdSignal(SIGCLD,endChild,RestartSystemCalls);
 #endif
   bsdSignal(SIGTERM,goodbye,DontRestartSystemCalls);
-  
   /* Connect up to Axiom server */
   spadSock = connect_to_local_server(SpadServer,ViewportServer,Forever);
   if (spadSock == NULL) {
@@ -3152,11 +2860,9 @@ main (void)
   else
     fprintf(stderr,"viewman: Connected to Axiom\n");
 #endif
-  
   /******** initialize ********/
   viewports = 0;
   graphList = 0;
-  
   /******** getting stuff from spad and viewports ********
   *********   the viewports have priority over    ****
   ***   Axiom.                              ***/
@@ -3168,14 +2874,12 @@ main (void)
       FD_SET(slot->viewIn,&filedes);
       slot = slot->nextViewport;
     }
-    
 #ifdef DEBUG
     fprintf(stderr,"Selection for filedes of %x \n",filedes);
 #endif
     code = check(superSelect(FD_SETSIZE,(void *) &filedes,0,0,0));
     for (;code<=0;) 
       code = check(superSelect(FD_SETSIZE,(void *)&filedes,0,0,0));
-    
     slot = viewports;
     keepLooking = 1;
     while (keepLooking && slot) {
@@ -3185,19 +2889,15 @@ main (void)
         fprintf(stderr,"Reading child viewport...\n");
 #endif
         readViewport(slot,&viewCommand,intSize);
-	
         switch (viewCommand) {
-	  
         case pick2D:
 #ifdef DEBUG
           fprintf(stderr,"viewman: Doing 2D pick\n");
 #endif
           picked = yes;
-	  
           readViewport(slot,&currentGraph,intSize); /* get the graph to pick */
           readViewport(slot,&currentGraphState,sizeof(graphStateStruct));
           break;
-	  
         case drop2D:
 #ifdef DEBUG
           fprintf(stderr,"viewman: Doing 2D drop\n");
@@ -3208,24 +2908,21 @@ main (void)
             sendGraphToView2D(0,currentGraph,slot,&currentGraphState);
           } else {
             write(slot->viewOut,&viewError,intSize);
-            fprintf(stderr,"The viewport manager cannot drop a graph because nothing has been picked yet.\n");
+            fprintf(stderr,"The viewport manager cannot drop a graph \n");
+            fprintf(stderr,"because nothing has been picked yet.\n");
           }
           break;
-	  
         case viewportClosing:
 #ifdef DEBUG
           fprintf(stderr,"viewman: closing viewport\n");
 #endif
           closeChildViewport(slot);
           break;
-
         };  /* switch */
-	
       };  /* if reading slot->viewIn */
       stepSlot = slot;
       slot = slot->nextViewport;
     };  /* while */
-    
     if (keepLooking) {   /* if  1 => slots not read, read from spad */
 #ifdef DEBUG
       fprintf(stderr,"viewman: still looking\n");
@@ -3233,9 +2930,7 @@ main (void)
       viewType = get_int(spadSock);
       if (viewType == -1) goodbye(-1);
       viewCommand = get_int(spadSock);
-      
       switch (viewType) {
-        
       case view3DType:
 #ifdef DEBUG
         fprintf(stderr,"viewman: making 3D viewport\n");
@@ -3244,9 +2939,7 @@ main (void)
           forkView3D(view3DType);
 	else 
 	  funView3D(viewCommand);
-        
         break;
-	
       case viewTubeType:
 #ifdef DEBUG
         fprintf(stderr,"viewman: viewing a tube\n");
@@ -3255,9 +2948,7 @@ main (void)
           forkView3D(viewTubeType);
 	else 
           funView3D(viewCommand);
-        
         break;
-        
       case viewGraphType:
 #ifdef DEBUG
         fprintf(stderr,"viewman: making a graph\n");
@@ -3268,7 +2959,6 @@ main (void)
           graphList         = aGraph;
         }
         break;
-        
       case view2DType:
 #ifdef DEBUG
 	fprintf(stderr,"viewman: forking 2D\n");
@@ -3279,32 +2969,38 @@ main (void)
           funView2D(viewCommand);
         }
         break;
-        
       }   /* switch on viewType */
     }   /* if (keepLooking) */ 
   }   /* while (1) */
 }
 
 @
-\subsection{viewman.h}
-<<viewman/viewman.h>>=
-<<include/view2d.h>>
-<<include/view3d.h>>
+\subsection{viewman Makefile}
+<<viewman/Makefile>>=
+BOOK=${SPD}/books/bookvol8.pamphlet
+MIDINT=	${INT}/graph/viewman
+MIDOBJ=	${OBJ}/${SYS}/graph/viewman
+OUT=	${MNT}/${SYS}/lib
+LIB=    ${OBJ}/${SYS}/lib
 
-      /* Viewport Commands */
-#define makeViewport -1
-#define makeGraph    -1
+CFLAGS  = ${CCF} -I${SRC}/include
+LDFLAGS = ${LDF} -lX11
 
-#define check(code) checker(code,__LINE__,"")
-#define maxConnect 40
-#define intSize sizeof(int)
-#define floatSize sizeof(float)
-#define yes 1
-#define no 0
+OBJS=   ${MIDOBJ}/viewman.o ${OBJ}/${SYS}/lib/sockio-c.o
 
+all: ${OBJS} ${OUT}/viewman 
+	@ echo 30 finished viewman from bookvol8
+
+${OUT}/viewman: ${OBJS} ${LIB}/util.o ${LIB}/bsdsignal.o
+	@ echo 1 linking ${OUT}/viewman
+	@ ${CC} ${OBJS} -o ${OUT}/viewman ${LIB}/util.o \
+            ${LIB}/bsdsignal.o ${LDFLAGS}
+
+${MIDOBJ}/viewman.o: ${SRC}/include/com.h ${BOOK}
+	@ echo 3 making ${MIDOBJ}/viewman.o from ${BOOK}
+	@( cd ${MIDINT} ; ${TANGLE} -R"viewman" ${BOOK} >viewman.c )
+	@ ( cd ${MIDOBJ} ;  ${CC} ${CFLAGS} -c ${MIDINT}/viewman.c )
 
-#include "com.h"
-<<viewman/globalsm.h>>
 @
 \chapter{viewalone}
 \label{viewalone}
@@ -6128,7 +5824,10 @@ freeGraph(int i)
 #define drawViewport(type) drawTheViewport(type);
 #define spadDrawViewport() spadMode++; drawTheViewport(X); spadMode--;
 
-
+@
+\index{struct!buttonStruct}
+\index{buttonStruct struct}
+<<view2d/header2.h>>=
 typedef struct _buttonStruct {
   int buttonKey, pot, mask, graphNum, graphSelect;
   short buttonX,buttonY,buttonWidth,buttonHeight,xHalf,yHalf;
@@ -6137,6 +5836,10 @@ typedef struct _buttonStruct {
   int textColor, textHue, textShade;
 } buttonStruct;
 
+@
+\index{struct!controlPanelStruct}
+\index{controlPanelStruct struct}
+<<view2d/header2.h>>=
 typedef struct _controlPanelStruct {
   int                  numOfButtons;
   Window               controlWindow,messageWindow,colormapWindow;
@@ -6144,10 +5847,18 @@ typedef struct _controlPanelStruct {
   struct _buttonStruct buttonQueue[maxButtons2D];
 } controlPanelStruct;
 
+@
+\index{struct!mouseCoord}
+\index{mouseCoord struct}
+<<view2d/header2.h>>=
 typedef struct _mouseCoord {
     float x,y;
 } mouseCoord;
 
+@
+\index{struct!viewPoints}
+\index{viewPoints struct}
+<<view2d/header2.h>>=
 typedef struct _viewPoints {
   int                 viewportKey;
   char                title[80];
@@ -6159,20 +5870,24 @@ typedef struct _viewPoints {
   struct _viewPoints  *prevViewport,*nextViewport;
 } viewPoints;
 
-
+@
+\index{struct!controlXY}
+\index{controlXY struct}
+<<view2d/header2.h>>=
 typedef struct _controlXY {
   int putX,putY;
 } controlXY;
 
-
+@
+\index{struct!xPointStruct}
+\index{xPointStruct struct}
+<<view2d/header2.h>>=
 typedef struct _xPointStruct {
   XPoint *xPoint;
   Vertex *x10Point;
   XArc   *arc;
 } xPointStruct;
 
-
-
 #define calcUnitX(ii) (vwInfo.width * \
 		       ((graphArray[0].unitX * ii + \
                      	graphArray[0].originX - graphStateArray[0].centerX) *\
@@ -11306,6 +11021,10 @@ contour_minMaxPolygons(poly * aPoly)
   ((z_min < z_val) && (z_max >= z_val))
 
 #ifdef oldie
+@
+\index{struct!active\_poly\_struct}
+\index{active\_poly\_struct struct}
+<<view3d/contour.h>>=
 typedef struct _active_poly_struct {
   struct _active_poly_struct *next;
   int num;
@@ -11313,11 +11032,19 @@ typedef struct _active_poly_struct {
 } active_poly_struct;
 #endif
 
+@
+\index{struct!segment\_struct}
+\index{segment\_struct struct}
+<<view3d/contour.h>>=
 typedef struct _segment_struct {
   struct _segment_struct *next;
   struct _viewTriple     *point1, *point2;
 } segment_struct;
 
+@
+\index{struct!segment\_list\_struct}
+\index{segment\_list\_struct struct}
+<<view3d/contour.h>>=
 typedef struct _segment_list_struct {
   int		  num_segs;
   segment_struct *segments;
@@ -13976,6 +13703,10 @@ extern Atom wm_delete_window;
                       /***        control stuff       ***/
                       /**********************************/
 
+@
+\index{struct!buttonStruct}
+\index{buttonStruct struct}
+<<view3d/header.h>>=
 typedef struct _buttonStruct {
   int           buttonKey, pot, mask;
   short         buttonX, buttonY, buttonWidth, buttonHeight, xHalf, yHalf;
@@ -13984,12 +13715,20 @@ typedef struct _buttonStruct {
   int           textColor,textHue,textShade;
 } buttonStruct;
 
+@
+\index{struct!controlPanelStruct}
+\index{controlPanelStruct struct}
+<<view3d/header.h>>=
 typedef struct _controlPanelStruct {
   Window        controlWindow, messageWindow, colormapWindow;
   char          message[40];
   buttonStruct  buttonQueue[maxButtons3D];
 } controlPanelStruct;
 
+@
+\index{struct!mouseCoord}
+\index{mouseCoord struct}
+<<view3d/header.h>>=
 typedef struct _mouseCoord {
     float       x, y;
 } mouseCoord;
@@ -13999,10 +13738,18 @@ typedef struct _mouseCoord {
                       /***         mesh stuff         ***/
                       /**********************************/
 
+@
+\index{struct!meshStruct}
+\index{meshStruct struct}
+<<view3d/header.h>>=
 typedef struct _meshStruct {
   float         N0[4], N1[4];   /* the fourth element is Zmin */
 } meshStruct;
 
+@
+\index{struct!points3D}
+\index{points3D struct}
+<<view3d/header.h>>=
 typedef struct _points3D {
   float         xmin, xmax,
                 ymin, ymax,
@@ -14016,8 +13763,10 @@ typedef struct _points3D {
   meshStruct    *normData;   /* list of normals */
 } points3D;
 
-
-
+@
+\index{struct!colorBuffer}
+\index{colorBuffer struct}
+<<view3d/header.h>>=
 typedef struct _colorBuffer {
   int      indx;
   char     axes;
@@ -14028,18 +13777,24 @@ typedef struct _colorBuffer {
                       /***         axes stuff         ***/
                       /**********************************/
 
+@
+\index{struct!point}
+\index{point struct}
+<<view3d/header.h>>=
 typedef struct _point {
   float         x, y, z;
   int           flag;
 } point;
 
-
-   /**** one of the (many) sloppy things that need to be
-         cleaned up is the viewPoints structure. a lot of
-         stuff in it is used solely for the function of
-         two variables stuff. they should be moved to
-         the fun2Var substructure. ****/
-
+@
+\index{struct!viewPoints}
+\index{viewPoints struct}
+One of the (many) sloppy things that need to be
+cleaned up is the viewPoints structure. a lot of
+stuff in it is used solely for the function of
+two variables stuff. they should be moved to
+the fun2Var substructure.
+<<view3d/header.h>>=
 typedef struct _viewPoints {
   int                 viewportKey;
   char                title[80];
@@ -14065,7 +13820,10 @@ typedef struct _viewPoints {
   struct _viewPoints  *prevViewport, *nextViewport;
 } viewPoints;
 
-
+@
+\index{struct!controlXY}
+\index{controlXY struct}
+<<view3d/header.h>>=
 typedef struct _controlXY {
   int           putX, putY;
 } controlXY;
@@ -26309,6 +26067,8 @@ the file is copied to the output file.
 
 @
 PostScript structures
+\label{psStruct}
+\index{psStruct}
 <<gdraws/gfun.c>>=
 typedef struct _psStruct {	/* data structure for ps routines info */
 	int	flag;
diff --git a/changelog b/changelog
index e4f1428..b783c96 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080613 tpd books/bookvol8 compress viewman.c to a single file
 20080612 tpd books/bookvol12 point to The Axiom Literate Documentation
 20080612 tpd books/bookvol11 point to The Axiom Literate Documentation
 20080612 tpd books/bookvol10 point to The Axiom Literate Documentation

\start
Date: Sat, 14 Jun 2008 18:32:30 -0500
From: Tim Daly
To: list
Subject: 20080614.01.tpd.patch (compress viewalone to a	single C file)

The viewalone function is now a single C file derived from bookvol8.
=====================================================================
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index 3cf1cd5..fc2404c 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -1845,6 +1845,14 @@ extern int viewOkay;
 extern viewManager *viewports;
 extern int viewType;
 
+int readViewport(viewManager *viewPort,void *info,int size);
+void discardGraph(graphStruct *theGraph);
+void sendGraphToView2D(int i,int there,viewManager *viewport,
+                       graphStateStruct *doGraphStateArray);
+void makeView2DFromSpadData(view2DStruct *viewdata,
+                            graphStateStruct graphState[]);
+void makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport);
+
 
 /************* global variables **************/
 
@@ -2975,7 +2983,7 @@ int main(void) {
 }
 
 @
-\subsection{viewman Makefile}
+\section{viewman Makefile}
 <<viewman/Makefile>>=
 BOOK=${SPD}/books/bookvol8.pamphlet
 MIDINT=	${INT}/graph/viewman
@@ -3004,185 +3012,94 @@ ${MIDOBJ}/viewman.o: ${SRC}/include/com.h ${BOOK}
 @
 \chapter{viewalone}
 \label{viewalone}
-The TESTFILE is created in the mnt directory to provide an example
-file to use for viewalone. The parabola example is detailed in the
-chapter on Graphics File Formats. The directory parabola.view will
-contain the data and graph0 files and is autogenerated from the
-documentation in that chapter.
-\section{viewalone Makefile}
-<<viewalone/Makefile>>=
-BOOK=${SPD}/books/bookvol8.pamphlet
-MIDINT=	${INT}/graph/viewalone
-MIDOBJ=	${OBJ}/${SYS}/graph/viewalone
-OUT=	${MNT}/${SYS}/bin
-TESTFILE=${MNT}/${SYS}/graph/parabola.view
-
-CFLAGS = ${CCF} -I${SRC}/include
-LDFLAGS= ${LDF}
-
-OBJS=  ${MIDOBJ}/viewalone.o ${MIDOBJ}/spooncomp.o ${MIDOBJ}/spoon2d.o 
-
-all: ${OUT}/viewalone ${TESTFILE}
-	@echo 12 finished viewalone from ${BOOK}
+<<viewalone>>=
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+<<include/view3d.h>>
+<<include/view2d.h>>
+<<include/actions.h>>
+<<include/viewcommand.h>>
+#include "util.h1"
 
-${OUT}/viewalone: ${OBJS} ${OBJ}/${SYS}/lib/util.o
-	@ echo 1 linking viewalone
-	@ ${CC} $(OBJS) ${OBJ}/${SYS}/lib/util.o \
-               -o ${OUT}/viewalone ${LDFLAGS} -lX11
+      /* Viewport Commands */
+#define makeViewport -1
+#define makeGraph    -1
 
-${MIDOBJ}/viewalone.o: ${BOOK}
-	@ echo 3 making ${MIDOBJ}/viewalone.o from ${BOOK}
-	@ ( cd ${MIDINT} ; \
-	   ${TANGLE} -R"viewalone/viewalone.c" ${BOOK} >viewalone.c )
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewalone.c )
+      /* Assorted Junk */
+#define check(code) checker(code,__LINE__,"")
+#define components
+#define maxConnect 40
+#define intSize sizeof(int)
+#define floatSize sizeof(float)
+#define no 0
+#define spadActionMode
+#define yes 1
 
-${MIDOBJ}/spooncomp.o: ${BOOK}
-	@ echo 6 making ${MIDOBJ}/spooncomp.o from ${BOOK}
-	@ ( cd ${MIDINT} ; \
-	   ${TANGLE} -R"viewalone/spooncomp.c" ${BOOK} >spooncomp.c )
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spooncomp.c )
+extern viewManager viewP;
+extern view3DStruct doView3D;
+extern view2DStruct doView2D;
+extern graphStruct graphArray[maxGraphs];
+extern graphStateStruct graphStateArray[maxGraphs];
+extern graphStateStruct graphStateBackupArray[maxGraphs];
+extern tubeModel doViewTube;
+extern int viewType;
+extern int filedes;
+extern int ack;
+extern char errorStr[80];
+extern int viewOkay;
+extern int viewError;
+extern FILE *viewFile;
+extern char filename[256];
+extern char pathname[256];
 
-${MIDOBJ}/spoon2d.o: ${BOOK}
-	@ echo 9 making ${MIDOBJ}/spoon2d.o from ${BOOK}
-	@ ( cd ${MIDINT} ; \
-	     ${TANGLE} -R"viewalone/spoon2d.c" ${BOOK} >spoon2d.c )
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spoon2d.c )
+/************* global variables **************/
 
-${TESTFILE}: ${BOOK}
-	@ echo 10 making ${TESTFILE} from ${BOOK}
-	@ mkdir -p ${TESTFILE}
-	@ (cd ${TESTFILE} ; \
-	   ${TANGLE} -R"parabola.view/data" ${BOOK} >data ; \
-	   ${TANGLE} -R"parabola.view/graph0" ${BOOK} >graph0 )
+viewManager viewP;   /* note that in viewman, this is called viewports */
 
-@
-\section{spoon2d.c}
-<<viewalone/spoon2d.c>>=
-#define _SPOON2D_C
+/* 3D stuff */
+view3DStruct doView3D;
 
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
+/* 2D stuff */
+view2DStruct doView2D;
+graphStruct      graphArray[maxGraphs];
+graphStateStruct graphStateArray[maxGraphs];
 
-<<viewalone/viewalone.h>>
+/* tube stuff */
+tubeModel doViewTube;
 
+int ack;
+int filedes;
+char filename[256];
+char errorStr[80];
+char pathname[256];
+int viewError = -1;
+FILE *viewFile;
+int viewOkay  = 0;
+int viewType;
 
-#include "util.h1"
+/*
 extern void spoonView2D(void);
 extern void makeView2DFromFileData(view2DStruct * );
 extern void sendGraphToView2D(int  , int  , viewManager * );
 extern void spoonView3D(int );
 extern void makeView3DFromFileData(int );
 extern int main(int  , char * []);
+*/
 
-
-/* #define huhDEBUG */
-
-/* #define spoonDEBUG  */
-
-void 
-spoonView2D(void)
-{
-
-  int  i,code,pipe0[2],pipe1[2],there;
-  char envAXIOM[100],runView[100];
-
-  sprintf(errorStr,"%s","creating pipes");
-  check(pipe(pipe0));
-  check(pipe(pipe1));
-  switch(fork()) {
-
-  case -1:
-    fprintf(stderr,"Cannot create a new process - ");
-    fprintf(stderr,"probably have too many things running already.\n");
-    exit(-1);
-
-  case 0:
-    /************
-     *   Child  *
-     ************/
-    printf("(spoon2d child) mapping of pipes to standard I/O for view2d\n");
-    sprintf(errorStr,"%s","(viewalone) mapping of pipes to standard I/O for view2d");
-    check(dup2(pipe0[0],0));     
-    check(dup2(pipe1[1],1));
-    close(pipe0[0]);
-    close(pipe0[1]);
-    close(pipe1[0]);
-    close(pipe1[1]);
-    printf("(spoon2d child) start the TwoDimensionalViewport process\n");
-    sprintf(errorStr,"%s","(viewalone) execution of the TwoDimensionalViewport process");
-    sprintf(envAXIOM,"%s",getenv("AXIOM"));
-    sprintf(runView,"%s%s",envAXIOM,"/lib/view2d");
-    check(execl(runView,runView,NULL));
-    fprintf(stderr,"Could not execute view2d! Check that view2d is on your path variable.\n");
-    exit(-1);
-
-  default:
-    /*************
-     *   Parent  *
-     *************/
-
-    viewP.viewType = view2DType;
-    
-    /* set up pipes to child process */
-    close(pipe0[0]);
-    close(pipe1[1]);
-    viewP.viewIn  = pipe1[0];
-    viewP.viewOut = pipe0[1];
-    printf("(spoon2d parent) pipes created\n");
-    if (viewP.viewIn <0) {
-      fprintf(stderr,"  Could not connect from Viewport manager to viewport process. Try again.\n");
-      return;
-    } else {
-      code = read(viewP.viewIn,&ack,intSize);
-      if (code < 0) {
-        fprintf(stderr,"  Could not connect from Viewport manager to viewport process. Try again.\n");
-        return;
-      }
-    } 
-    printf("(spoon2d parent) making View2D data\n");
-    makeView2DFromFileData(&doView2D);
-
-    /* tell child it is to be a stand alone program */
-    i = yes;
-    fprintf(stderr,"  Transmitting data to viewport...\n");
-    write(viewP.viewOut,&i,intSize);
-
-    write(viewP.viewOut,&doView2D,sizeof(view2DStruct));
-    i = strlen(doView2D.title)+1;
-    write(viewP.viewOut,&i,intSize);        /* tell the length of the title to child */
-    write(viewP.viewOut,doView2D.title,i);  /* tell the title to the child, child */
-    for (i=0; i<maxGraphs; i++) {
-      there = graphArray[i].key;
-      write(viewP.viewOut,&there,intSize);
-      sendGraphToView2D(i,there,&viewP);
-    };  /* for i in graphs */
-
-    fprintf(stderr,"  Done.\n");
-    
-    /*** get acknowledge from viewport */
-
-    code = read(viewP.viewIn,&(viewP.viewWindow),sizeof(Window));
-    sleep(1);  /* wait a second...*/
-    exit(0); 
-
-  }   /* switch */
-
-}    /* forkView2D() */
-
-
-
-/*void sendGraphToView2D(i,there,viewP) */
-void 
-sendGraphToView2D(int i,int there,viewManager *viewP)
-{
+@
+\subsection{sendGraphToView2D}
+\index{viewalone!sendGraphToView2D}
+\index{sendGraphToView2D viewalone}
+<<viewalone>>=
+void sendGraphToView2D(int i,int there,viewManager *viewP) {
   graphStruct      *gPtr;
   pointListStruct  *llPtr;
   pointStruct      *p;
   int j,k;
   printf("(spoon2d sendGraphToView2D) i=%d there=%d\n",i,there);
   if (there) {
-
     gPtr = &(graphArray[i]);
     printf("(spoon2d sendGraphToView2D) graph %d is there\n",i);
     write(viewP->viewOut,&(gPtr->xmin),floatSize);
@@ -3198,7 +3115,6 @@ sendGraphToView2D(int i,int there,viewManager *viewP)
     write(viewP->viewOut,&(gPtr->originX),floatSize);
     write(viewP->viewOut,&(gPtr->originY),floatSize);
     write(viewP->viewOut,&(gPtr->numberOfLists),intSize);
-    
     llPtr = gPtr->listOfListsOfPoints;
     for (j=0; j<(gPtr->numberOfLists); j++) {
       write(viewP->viewOut,&(llPtr->numberOfPoints),intSize);
@@ -3215,7 +3131,6 @@ sendGraphToView2D(int i,int there,viewManager *viewP)
       write(viewP->viewOut,&(llPtr->pointSize),intSize);
       llPtr++;
     }   /* for j in list of lists of points */
-    
     /* a state is defined for a graph if it is there */
     write(viewP->viewOut,&(graphStateArray[i].scaleX),floatSize);
     write(viewP->viewOut,&(graphStateArray[i].scaleY),floatSize);
@@ -3229,16 +3144,15 @@ sendGraphToView2D(int i,int there,viewManager *viewP)
     write(viewP->viewOut,&(graphStateArray[i].unitsOn),intSize);
     write(viewP->viewOut,&(graphStateArray[i].unitsColor),intSize);
     write(viewP->viewOut,&(graphStateArray[i].showing),intSize);
-    
   }   /* if graph is there */
-
 }
 
-
-void  
-makeView2DFromFileData(view2DStruct *doView2D)
-{
-  
+@
+\subsection{makeView2DFromFileData}
+\index{viewalone!makeView2DFromFileData}
+\index{makeView2DFromFileData viewalone}
+<<viewalone>>=
+void makeView2DFromFileData(view2DStruct *doView2D) {  
   int i,j,k;
   char title[256];
   FILE *graphFile;
@@ -3292,9 +3206,11 @@ makeView2DFromFileData(view2DStruct *doView2D)
 	   &(graphStateArray[i].axesColor),
 	   &(graphStateArray[i].unitsOn),
 	   &(graphStateArray[i].unitsColor));
-    printf("(spoon2d) pointsOn=%d connectOn=%d splineOn=%d axesOn=%d axesColor=%d unitsOn=%d unitsColor=%d\n",
+    printf("(spoon2d) pointsOn=%d connectOn=%d splineOn=%d\n",
            graphStateArray[i].pointsOn,graphStateArray[i].connectOn,
-           graphStateArray[i].splineOn,graphStateArray[i].axesOn,
+           graphStateArray[i].splineOn);
+    printf("(spoon2d) axesOn=%d axesColor=%d unitsOn=%d unitsColor=%d\n",
+           graphStateArray[i].axesOn,
            graphStateArray[i].axesColor,graphStateArray[i].unitsOn,
            graphStateArray[i].unitsColor);
     fscanf(viewFile,"%d %d\n",
@@ -3349,7 +3265,8 @@ makeView2DFromFileData(view2DStruct *doView2D)
         if (!(aList =
               (pointListStruct *)malloc(graphArray[i].numberOfLists * 
 					sizeof(pointListStruct)))) {
-          fprintf(stderr,"viewalone: Fatal Error>> Out of memory trying to receive a graph.\n");
+          fprintf(stderr,"viewalone: Fatal Error>> Out of memory trying\n");
+          fprintf(stderr," to receive a graph.\n");
           exit(-1);
         }
         graphArray[i].listOfListsOfPoints = aList;
@@ -3368,7 +3285,8 @@ makeView2DFromFileData(view2DStruct *doView2D)
                  aList->pointColor,aList->lineColor,aList->pointSize);
           if (!(aPoint = (pointStruct *)malloc(aList->numberOfPoints * 
 					       sizeof(pointStruct)))) {
-            fprintf(stderr,"viewalone: Fatal Error>> Out of memory trying to receive a graph.\n");
+            fprintf(stderr,"viewalone: Fatal Error>> Out of memory trying\n");
+            fprintf(stderr," to receive a graph.\n");
             exit(-1);
           }
           aList->listOfPoints = aPoint;   /** point to current point list **/
@@ -3389,157 +3307,19 @@ makeView2DFromFileData(view2DStruct *doView2D)
     } /* if graph.key */
   } /* for i */
 } /* makeView2DFromFileData */
-@
-\section{spooncomp.c}
-<<viewalone/spooncomp.c>>=
-#define _SPOONCOMP_C
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-
-<<viewalone/viewalone.h>>
-#define spadActionMode
-/* define spadEventMode */
-#define components
-
-#include "util.h1"
-extern void spoonView2D(void);
-extern void makeView2DFromFileData(view2DStruct * );
-extern void sendGraphToView2D(int  , int  , viewManager * );
-extern void spoonView3D(int );
-extern void makeView3DFromFileData(int );
-extern int main(int  , char * []);
-
-
-
-
-/* This file forks a child process and exits the parent. It 
-   has the same general form as ../viewman/funView3D() and so 
-   changes there may require similar changes here. */
-
-void 
-spoonView3D(int type)
-{
-  
-  int  i,j,k,code,pipe0[2],pipe1[2];
-  char envAXIOM[100],runView[100];
-  LLPoint *anLLPoint;
-  LPoint *anLPoint;
-  int *anIndex;
-  
-  sprintf(errorStr,"%s","creating pipes");
-  check(pipe(pipe0));
-  check(pipe(pipe1));
-  switch(fork()) {
-  case -1:
-    fprintf(stderr,"can't create a child process\n");
-    fprintf(stderr,"you may have too many processes running\n");
-    exit(-1);
-  case 0:
-    /*  Child  */
-    sprintf(errorStr,"%s",
-	    "(viewalone) mapping of pipes to standard I/O for view3d");
-    check(dup2(pipe0[0],0));     
-    check(dup2(pipe1[1],1));
-    close(pipe0[0]);
-    close(pipe0[1]);
-    close(pipe1[0]);
-    close(pipe1[1]);
-    
-    sprintf(errorStr,"%s",
-	    "(viewalone) execution of the ThreeDimensionalViewport process");
-    sprintf(envAXIOM,"%s",getenv("AXIOM"));
-    sprintf(runView,"%s%s",envAXIOM,"/lib/view3d");
-    check(execl(runView,runView,NULL));
-    fprintf(stderr,"Could not execute view3d!\n");
-    exit(-1);
-  default:
-    /*  Parent  */
-    
-    viewP.viewType = type;
-    
-    /* set up pipes to child process */
-    close(pipe0[0]);
-    close(pipe1[1]);
-    viewP.viewIn  = pipe1[0];
-    viewP.viewOut = pipe0[1];
-    
-    if (viewP.viewIn <0) {
-      fprintf(stderr,
-	      "can't set up pipes to viewport process. Try again.\n");
-      return;
-    } else {
-      code = read(viewP.viewIn,&ack,intSize);
-      if (code < 0) {
-        fprintf(stderr,"can't read from viewport process pipe. Try again.\n");
-        return;
-      }
-    } 
-    
-    makeView3DFromFileData(type);
-    /* tell child it is to be a stand alone program */
-    i = yes;
-    fprintf(stderr,"  Transmitting data to viewport...\n");
-    write(viewP.viewOut,&i,intSize);
-    write(viewP.viewOut,&doView3D,sizeof(view3DStruct));
-    i = strlen(doView3D.title)+1;
-    write(viewP.viewOut,&i,intSize);  /* tell the length of 
-					 the title to child */
-    write(viewP.viewOut,doView3D.title,i);  /* tell the title 
-					       to the child, child */
-    write(viewP.viewOut,&(doView3D.lightVec[0]),floatSize);
-    write(viewP.viewOut,&(doView3D.lightVec[1]),floatSize);
-    write(viewP.viewOut,&(doView3D.lightVec[2]),floatSize);
-    
-    write(viewP.viewOut,&(doView3D.numOfPoints),intSize);
-    for (i=0; i<doView3D.numOfPoints; i++) {
-      write(viewP.viewOut,&(refPt(doView3D,i)->x),floatSize);
-      write(viewP.viewOut,&(refPt(doView3D,i)->y),floatSize);
-      write(viewP.viewOut,&(refPt(doView3D,i)->z),floatSize);
-      write(viewP.viewOut,&(refPt(doView3D,i)->c),floatSize);
-    }
-    
-    /* send generalized 3D components */
-    write(viewP.viewOut,&(doView3D.lllp.numOfComponents),intSize);
-    anLLPoint = doView3D.lllp.llp;
-    for (i=0; i<doView3D.lllp.numOfComponents; i++,anLLPoint++) {
-      write(viewP.viewOut,&(anLLPoint->prop.closed),intSize);
-      write(viewP.viewOut,&(anLLPoint->prop.solid),intSize);
-      write(viewP.viewOut,&(anLLPoint->numOfLists),intSize);
-      anLPoint = anLLPoint->lp;
-      for (j=0; j<anLLPoint->numOfLists; j++,anLPoint++) {
-        write(viewP.viewOut,&(anLPoint->prop.closed),intSize);
-        write(viewP.viewOut,&(anLPoint->prop.solid),intSize);
-        write(viewP.viewOut,&(anLPoint->numOfPoints),intSize);
-        anIndex = anLPoint->indices;
-        for (k=0; k<anLPoint->numOfPoints; k++,anIndex++)
-          write(viewP.viewOut,anIndex,intSize);
-      } /* for LPoints in LLPoints (j) */
-    } /* for LLPoints in LLLPoints (i) */
-    fprintf(stderr,"    Done.\n");
-    
-    /*** get acknowledge from viewport */
-    code = read(viewP.viewIn,&(viewP.viewWindow),sizeof(Window));
-    sleep(1);  /* wait a second...*/
-    exit(0); 
-    
-  }   /* switch */
-  
-}    /* spoonView3D() */
-
 
-void
-makeView3DFromFileData(int type)
-{
-  
+@
+\subsection{makeView3DFromFileData}
+\index{viewalone!makeView3DFromFileData}
+\index{makeView3DFromFileData viewalone}
+<<viewalone>>=
+void makeView3DFromFileData(int type) {
   int i,j,k;
   char title[256];
   LLPoint *anLLPoint;
   LPoint *anLPoint;
   viewTriple *aPoint;
   int *anIndex;
-
   /* fscanf(doView3D,""); */
   /* read in the view3DStruct stuff */
   /* &view3DType already read */
@@ -3551,7 +3331,6 @@ makeView3DFromFileData(int type)
 	 &(doView3D.ymax),
 	 &(doView3D.zmin),
 	 &(doView3D.zmax));
-
   fgets(title,256,viewFile);
   if (!(doView3D.title = (char *)malloc((strlen(title)+1) * 
 					sizeof(char)))) {
@@ -3561,7 +3340,6 @@ makeView3DFromFileData(int type)
   sprintf(doView3D.title,"%s",title);
   /* put in a null terminator over the newline that the fgets reads */
   doView3D.title[strlen(doView3D.title)-1] = '\0'; 
-  
   fscanf(viewFile,"%f %f %f %f %f %f %f %f\n",
 	 &(doView3D.deltaX),
 	 &(doView3D.deltaY),
@@ -3571,7 +3349,6 @@ makeView3DFromFileData(int type)
 	 &(doView3D.scaleZ),
 	 &(doView3D.theta),
 	 &(doView3D.phi));
-  
   fscanf(viewFile,"%d %d %d %d\n",
 	 &(doView3D.vX),
 	 &(doView3D.vY),
@@ -3593,9 +3370,7 @@ makeView3DFromFileData(int type)
   fscanf(viewFile,"%d %f\n",
 	 &(doView3D.perspective),
 	 &(doView3D.eyeDistance));
-  
   /* get generalized 3D components */
-  
   fscanf(viewFile,"%d\n",
 	 &(doView3D.numOfPoints));
   aPoint = doView3D.points = (viewTriple *)malloc(doView3D.numOfPoints*
@@ -3631,67 +3406,208 @@ makeView3DFromFileData(int type)
       } /* for points in LPoints (k) */
     } /* for LPoints in LLPoints (j) */
   } /* for LLPoints in LLLPoints (i) */
-  
   fclose(viewFile);
   doView3D.scaleDown = no ;
 }
 
 @
-\section{viewalone.c}
-<<viewalone/viewalone.c>>=
-#define _VIEWALONE_C
-
-#include <stdlib.h>
-<<viewalone/viewalone.h>>
-
-extern void spoonView2D(void);
-extern void makeView2DFromFileData(view2DStruct * );
-extern void sendGraphToView2D(int  , int  , viewManager * );
-extern void spoonView3D(int );
-extern void makeView3DFromFileData(int );
-extern int main(int  , char * []);
-
-
-/************* global variables **************/
-
-viewManager viewP;   /* note that in viewman, this is called viewports */
-
-/* 3D stuff */
-view3DStruct doView3D;
-
-/* 2D stuff */
-view2DStruct doView2D;
-graphStruct      graphArray[maxGraphs];
-graphStateStruct graphStateArray[maxGraphs];
-
-/* tube stuff */
-tubeModel doViewTube;
-
-int         viewType;
-int         filedes,ack;
-
-char        errorStr[80];
-
-
-int viewOkay  = 0;
-int viewError = -1;
-
-FILE *viewFile;
-char filename[256];
-char pathname[256];
+\subsection{spoonView2D}
+\index{viewalone!spoonView2D}
+\index{spoonView2D viewalone}
+<<viewalone>>=
+void spoonView2D(void) {
+  int  i,code,pipe0[2],pipe1[2],there;
+  char envAXIOM[100],runView[100];
+  sprintf(errorStr,"%s","creating pipes");
+  check(pipe(pipe0));
+  check(pipe(pipe1));
+  switch(fork()) {
+  case -1:
+    fprintf(stderr,"Cannot create a new process - ");
+    fprintf(stderr,"probably have too many things running already.\n");
+    exit(-1);
+  case 0:
+    /************
+     *   Child  *
+     ************/
+    printf("(spoon2d child) mapping of pipes to standard I/O for view2d\n");
+    sprintf(errorStr,"%s",
+             "(viewalone) mapping of pipes to standard I/O for view2d");
+    check(dup2(pipe0[0],0));     
+    check(dup2(pipe1[1],1));
+    close(pipe0[0]);
+    close(pipe0[1]);
+    close(pipe1[0]);
+    close(pipe1[1]);
+    printf("(spoon2d child) start the TwoDimensionalViewport process\n");
+    sprintf(errorStr,"%s",
+            "(viewalone) execution of the TwoDimensionalViewport process");
+    sprintf(envAXIOM,"%s",getenv("AXIOM"));
+    sprintf(runView,"%s%s",envAXIOM,"/lib/view2d");
+    check(execl(runView,runView,NULL));
+    fprintf(stderr,
+     "Could not execute view2d! Check that view2d is on your path.\n");
+    exit(-1);
+  default:
+    /*************
+     *   Parent  *
+     *************/
+    viewP.viewType = view2DType;
+    /* set up pipes to child process */
+    close(pipe0[0]);
+    close(pipe1[1]);
+    viewP.viewIn  = pipe1[0];
+    viewP.viewOut = pipe0[1];
+    printf("(spoon2d parent) pipes created\n");
+    if (viewP.viewIn <0) {
+      fprintf(stderr,"Could not connect from Viewport manager to viewport\n");
+      fprintf(stderr," process. Try again.\n");
+      return;
+    } else {
+      code = read(viewP.viewIn,&ack,intSize);
+      if (code < 0) {
+       fprintf(stderr,"Could not connect from Viewport manager to viewport\n");
+       fprintf(stderr," process. Try again.\n");
+        return;
+      }
+    } 
+    printf("(spoon2d parent) making View2D data\n");
+    makeView2DFromFileData(&doView2D);
+    /* tell child it is to be a stand alone program */
+    i = yes;
+    fprintf(stderr,"  Transmitting data to viewport...\n");
+    write(viewP.viewOut,&i,intSize);
+    write(viewP.viewOut,&doView2D,sizeof(view2DStruct));
+    i = strlen(doView2D.title)+1;
+    write(viewP.viewOut,&i,intSize); /* tell the length of title to child */
+    write(viewP.viewOut,doView2D.title,i);  /* tell the title to child */
+    for (i=0; i<maxGraphs; i++) {
+      there = graphArray[i].key;
+      write(viewP.viewOut,&there,intSize);
+      sendGraphToView2D(i,there,&viewP);
+    };  /* for i in graphs */
+    fprintf(stderr,"  Done.\n");
+    /*** get acknowledge from viewport */
+    code = read(viewP.viewIn,&(viewP.viewWindow),sizeof(Window));
+    sleep(1);  /* wait a second...*/
+    exit(0); 
+  }   /* switch */
+}    /* forkView2D() */
 
-/************* main program **************/
+@
+\subsection{spoonView3D}
+This file forks a child process and exits the parent. It 
+has the same general form as ../viewman/funView3D() and so 
+changes there may require similar changes here. 
+\index{viewalone!spoonView2D}
+\index{spoonView2D viewalone}
+<<viewalone>>=
+void spoonView3D(int type) {
+  int  i,j,k,code,pipe0[2],pipe1[2];
+  char envAXIOM[100],runView[100];
+  LLPoint *anLLPoint;
+  LPoint *anLPoint;
+  int *anIndex;
+  sprintf(errorStr,"%s","creating pipes");
+  check(pipe(pipe0));
+  check(pipe(pipe1));
+  switch(fork()) {
+  case -1:
+    fprintf(stderr,"can't create a child process\n");
+    fprintf(stderr,"you may have too many processes running\n");
+    exit(-1);
+  case 0:
+    /*  Child  */
+    sprintf(errorStr,"%s",
+	    "(viewalone) mapping of pipes to standard I/O for view3d");
+    check(dup2(pipe0[0],0));     
+    check(dup2(pipe1[1],1));
+    close(pipe0[0]);
+    close(pipe0[1]);
+    close(pipe1[0]);
+    close(pipe1[1]);
+    sprintf(errorStr,"%s",
+	    "(viewalone) execution of the ThreeDimensionalViewport process");
+    sprintf(envAXIOM,"%s",getenv("AXIOM"));
+    sprintf(runView,"%s%s",envAXIOM,"/lib/view3d");
+    check(execl(runView,runView,NULL));
+    fprintf(stderr,"Could not execute view3d!\n");
+    exit(-1);
+  default:
+    /*  Parent  */
+    viewP.viewType = type;
+    /* set up pipes to child process */
+    close(pipe0[0]);
+    close(pipe1[1]);
+    viewP.viewIn  = pipe1[0];
+    viewP.viewOut = pipe0[1];
+    if (viewP.viewIn <0) {
+      fprintf(stderr,
+	      "can't set up pipes to viewport process. Try again.\n");
+      return;
+    } else {
+      code = read(viewP.viewIn,&ack,intSize);
+      if (code < 0) {
+        fprintf(stderr,"can't read from viewport process pipe. Try again.\n");
+        return;
+      }
+    } 
+    makeView3DFromFileData(type);
+    /* tell child it is to be a stand alone program */
+    i = yes;
+    fprintf(stderr,"  Transmitting data to viewport...\n");
+    write(viewP.viewOut,&i,intSize);
+    write(viewP.viewOut,&doView3D,sizeof(view3DStruct));
+    i = strlen(doView3D.title)+1;
+    write(viewP.viewOut,&i,intSize);  /* tell the length of title to child */
+    write(viewP.viewOut,doView3D.title,i);  /* tell the title to */
+    write(viewP.viewOut,&(doView3D.lightVec[0]),floatSize);
+    write(viewP.viewOut,&(doView3D.lightVec[1]),floatSize);
+    write(viewP.viewOut,&(doView3D.lightVec[2]),floatSize);
+    write(viewP.viewOut,&(doView3D.numOfPoints),intSize);
+    for (i=0; i<doView3D.numOfPoints; i++) {
+      write(viewP.viewOut,&(refPt(doView3D,i)->x),floatSize);
+      write(viewP.viewOut,&(refPt(doView3D,i)->y),floatSize);
+      write(viewP.viewOut,&(refPt(doView3D,i)->z),floatSize);
+      write(viewP.viewOut,&(refPt(doView3D,i)->c),floatSize);
+    }
+    /* send generalized 3D components */
+    write(viewP.viewOut,&(doView3D.lllp.numOfComponents),intSize);
+    anLLPoint = doView3D.lllp.llp;
+    for (i=0; i<doView3D.lllp.numOfComponents; i++,anLLPoint++) {
+      write(viewP.viewOut,&(anLLPoint->prop.closed),intSize);
+      write(viewP.viewOut,&(anLLPoint->prop.solid),intSize);
+      write(viewP.viewOut,&(anLLPoint->numOfLists),intSize);
+      anLPoint = anLLPoint->lp;
+      for (j=0; j<anLLPoint->numOfLists; j++,anLPoint++) {
+        write(viewP.viewOut,&(anLPoint->prop.closed),intSize);
+        write(viewP.viewOut,&(anLPoint->prop.solid),intSize);
+        write(viewP.viewOut,&(anLPoint->numOfPoints),intSize);
+        anIndex = anLPoint->indices;
+        for (k=0; k<anLPoint->numOfPoints; k++,anIndex++)
+          write(viewP.viewOut,anIndex,intSize);
+      } /* for LPoints in LLPoints (j) */
+    } /* for LLPoints in LLLPoints (i) */
+    fprintf(stderr,"    Done.\n");
+    /*** get acknowledge from viewport */
+    code = read(viewP.viewIn,&(viewP.viewWindow),sizeof(Window));
+    sleep(1);  /* wait a second...*/
+    exit(0); 
+  }   /* switch */
+}    /* spoonView3D() */
 
-int main (int argc,char *argv[])
-{
-        printf("viewalone called with argc=%d\n",argc);
+@
+\subsection{main}
+\index{viewalone!main}
+\index{main viewalone}
+<<viewalone>>=
+int main(int argc,char *argv[])
+{       printf("viewalone called with argc=%d\n",argc);
         printf("viewalone called with argv[1]=%s\n",argv[0]);
         printf("viewalone called with argv[2]=%s\n",argv[1]);
 /******** Open files and Figure out the viewport type ********/
-
 	sprintf(filename,"%s%s",argv[1],".view/data");
         if((viewFile = fopen(filename,"r")) == NULL ) {
-         
            sprintf(filename,"%s%s",argv[1],"/data");
            if((viewFile = fopen(filename,"r")) == NULL ){
              fprintf(stderr,"Error: Cannot find the file %s%s or %s%s\n",
@@ -3707,57 +3623,59 @@ int main (int argc,char *argv[])
         printf("filename = %s\n",filename);
         printf("viewType = %d\n",viewType);
 	switch (viewType) {
-
 	case view3DType:
 	case viewTubeType:
                 printf("calling spoonView3D\n");
 		spoonView3D(viewType);
 		break;
-
 	case view2DType:
                 printf("calling spoonView2D\n");
 		spoonView2D();
 		break;
-
 	}  /* switch */
-      printf("The first number in the file, %d, called the viewType, not a valid value. It must be a number in the range of [1..4]\n",viewType);
+      printf("The first number in the file, %d, called the ",viewType);
+      printf("viewType, not a valid value. It must be a number in the ");
+      printf("range of [1..4]\n");
       return(0);
       }
 @
-\section{viewalone.h}
-<<viewalone/viewalone.h>>=
-#include <stdio.h>
-<<include/view3d.h>>
-<<include/view2d.h>>
-<<include/actions.h>>
-<<include/viewcommand.h>>
+The TESTFILE is created in the mnt directory to provide an example
+file to use for viewalone. The parabola example is detailed in the
+chapter on Graphics File Formats. The directory parabola.view will
+contain the data and graph0 files and is autogenerated from the
+documentation in that chapter.
+\section{viewalone Makefile}
+<<viewalone/Makefile>>=
+BOOK=${SPD}/books/bookvol8.pamphlet
+MIDINT=	${INT}/graph/viewalone
+MIDOBJ=	${OBJ}/${SYS}/graph/viewalone
+OUT=	${MNT}/${SYS}/bin
+TESTFILE=${MNT}/${SYS}/graph/parabola.view
 
-      /* Viewport Commands */
-#define makeViewport -1
-#define makeGraph    -1
+CFLAGS = ${CCF} -I${SRC}/include
+LDFLAGS= ${LDF}
 
-      /* Assorted Junk */
-#define check(code) checker(code,__LINE__,"")
-#define maxConnect 40
-#define intSize sizeof(int)
-#define floatSize sizeof(float)
-#define yes 1
-#define no 0
+OBJS=  
 
-extern viewManager viewP;
-extern view3DStruct doView3D;
-extern view2DStruct doView2D;
-extern graphStruct      graphArray[maxGraphs];
-extern graphStateStruct graphStateArray[maxGraphs],graphStateBackupArray[maxGraphs];
-extern tubeModel doViewTube;
-extern int         viewType;
-extern int         filedes,ack;
-extern char        errorStr[80];
-extern int viewOkay;
-extern int viewError;
-extern FILE *viewFile;
-extern char filename[256];
-extern char pathname[256];
+all: ${OUT}/viewalone ${TESTFILE}
+	@echo 12 finished viewalone from ${BOOK}
+
+${OUT}/viewalone: ${MIDOBJ}/viewalone.o ${OBJ}/${SYS}/lib/util.o
+	@ echo 1 linking viewalone
+	@ ${CC} ${MIDOBJ}/viewalone.o ${OBJ}/${SYS}/lib/util.o \
+               -o ${OUT}/viewalone ${LDFLAGS} -lX11
+
+${MIDOBJ}/viewalone.o: ${BOOK}
+	@ echo 3 making ${MIDOBJ}/viewalone.o from ${BOOK}
+	@ ( cd ${MIDINT} ; ${TANGLE} -R"viewalone" ${BOOK} >viewalone.c )
+	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewalone.c )
+
+${TESTFILE}: ${BOOK}
+	@ echo 10 making ${TESTFILE} from ${BOOK}
+	@ mkdir -p ${TESTFILE}
+	@ (cd ${TESTFILE} ; \
+	   ${TANGLE} -R"parabola.view/data" ${BOOK} >data ; \
+	   ${TANGLE} -R"parabola.view/graph0" ${BOOK} >graph0 )
 
 @
 \chapter{view2d}
diff --git a/changelog b/changelog
index b783c96..5abd176 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080614 tpd books/bookvol8 compress viewalone to a single C file
 20080613 tpd books/bookvol8 compress viewman.c to a single file
 20080612 tpd books/bookvol12 point to The Axiom Literate Documentation
 20080612 tpd books/bookvol11 point to The Axiom Literate Documentation

\start
Date: Sun, 15 Jun 2008 18:41:46 +0400
From: Anatoly Raportirenko
To: list
Subject: axiom bookvols

Hello Tim
Why  no to add small patches like this to bookvols. In this
case all bookmarks will be available in pdf.

--- bookvol0.tex~	2008-06-14 11:38:26.000000000 +0400
+++ bookvol0.tex	2008-06-14 11:40:59.000000000 +0400
@@ -1,5 +1,6 @@
-\documentclass{book}
+\documentclass[dvipdfm]{book}
 %\usepackage{axiom}
+\usepackage{hyperref}
 \usepackage{makeidx}
 \makeindex
 \usepackage{graphicx}

Anatoly

\start
Date: Sun, 15 Jun 2008 13:05:36 -0400
From: Tim Daly
To: Anatoly Raportirenko
Subject: Re: axiom bookvols

>-\documentclass{book}
>+\documentclass[dvipdfm]{book}
> %\usepackage{axiom}
>+\usepackage{hyperref}
> \usepackage{makeidx}
> \makeindex
> \usepackage{graphicx}

Excellent idea. Done. --Tim

\start
Date: Sun, 15 Jun 2008 13:34:47 -0400
From: Tim Daly
To: Anatoly Raportirenko
Subject: Re: axiom bookvols

>-\documentclass{book}
>+\documentclass[dvipdfm]{book}
> %\usepackage{axiom}
>+\usepackage{hyperref}
> \usepackage{makeidx}
> \makeindex
> \usepackage{graphicx}

I get the following errors from dvips. Any idea what is wrong?

=================================================================
dvips bookvol1.dvi -Ppdf 
This is dvips(k) 5.95a Copyright 2005 Radical Eye Software (www.radicaleye.com)
' TeX output 2008.06.02:2050' -> bookvol1.ps
<tex.pro><alt-rule.pro><texps.pro><special.pro>. <cmss10.pfb><cmr9.pfb>
<cmmi6.pfb><cmmi9.pfb><cmtt9.pfb><cmti9.pfb><cmmi5.pfb><cmsy7.pfb><cmsy5.pfb>
<cmr8.pfb><cmbx8.pfb><cmr6.pfb><cmti10.pfb><cmr5.pfb><cmsy10.pfb><cmmi7.pfb>
<cmr7.pfb><cmex10.pfb><cmbx12.pfb><cmsl10.pfb><cmbx10.pfb><cmtt10.pfb>
<cmr10.pfb><cmr12.pfb><cmmi10.pfb><cmr17.pfb>[1
dvips: Unknown keyword (<<) in \special will be ignored
dvips: Unknown keyword (/Title) in \special will be ignored
dvips: Unknown keyword (()) in \special will be ignored
dvips: Unknown keyword (/Subject) in \special will be ignored
dvips: Unknown keyword (()) in \special will be ignored
dvips: Unknown keyword (/Creator) in \special will be ignored
dvips: Unknown keyword ((LaTeX) in \special will be ignored
dvips: Unknown keyword (with) in \special will be ignored
dvips: Unknown keyword (hyperref) in \special will be ignored
dvips: Unknown keyword (package)) in \special will be ignored
dvips: Unknown keyword (/Author) in \special will be ignored
dvips: Unknown keyword (()) in \special will be ignored
dvips: Unknown keyword (/Producer) in \special will be ignored
dvips: Unknown keyword ((dvipdfm)) in \special will be ignored
dvips: Unknown keyword (/Keywords) in \special will be ignored
dvips: Unknown keyword (()) in \special will be ignored
dvips: Unknown keyword (>>) in \special will be ignored
dvips: Could not find figure file pdf:docinfo; continuing
dvips: Unknown keyword ((page.1)) in \special will be ignored
dvips: Unknown keyword ([@thispage) in \special will be ignored
dvips: Unknown keyword (/XYZ) in \special will be ignored
dvips: more errors in special, being ignored . . .
dvips: (perhaps dvips doesn't support your macro package?)
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:obj; continuing
dvips: Could not find figure file pdf:obj; continuing
dvips: Could not find figure file pdf:obj; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:outline; continuing
dvips: Could not find figure file pdf:docview; continuing
dvips: Could not find figure file pdf:dest; continuing
<ps/axiomfront.ps><ps/bluebayou.ps>] [1
dvips: Could not find figure file pdf:dest; continuing
] [2
dvips: Could not find figure file pdf:dest; continuing
] [3
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [4
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [5
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [6
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [7
dvips: Could not find figure file pdf:dest; continuing
] [1
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [2
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [3
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [4
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1a.ps>
dvips: Could not find figure file pdf:dest; continuing
] [5
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [6
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [7
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1b.ps>
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [8
dvips: Could not find figure file pdf:dest; continuing
] [9
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [10
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
] [11
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [12
dvips: Could not find figure file pdf:dest; continuing
] [13
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [14
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [15
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [16
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [17
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [18
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [19
dvips: Could not find figure file pdf:dest; continuing
] [20
dvips: Could not find figure file pdf:dest; continuing
] [21
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [22
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
] [23
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [24
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [25
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [26
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [27
dvips: Could not find figure file pdf:dest; continuing
] [28
dvips: Could not find figure file pdf:dest; continuing
] [29
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [30
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [31
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [32
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [33
dvips: Could not find figure file pdf:dest; continuing
] [34
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [35
dvips: Could not find figure file pdf:dest; continuing
] [36
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [37
dvips: Could not find figure file pdf:dest; continuing
] [38
dvips: Could not find figure file pdf:dest; continuing
] [39
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [40
dvips: Could not find figure file pdf:dest; continuing
] [41
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [42
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [43
dvips: Could not find figure file pdf:dest; continuing
] [44
dvips: Could not find figure file pdf:dest; continuing
] [45
dvips: Could not find figure file pdf:dest; continuing
] [46
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [47
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [48
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [49
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [50
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [51
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [52
dvips: Could not find figure file pdf:dest; continuing
] [53
dvips: Could not find figure file pdf:dest; continuing
] [54
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [55
dvips: Could not find figure file pdf:dest; continuing
] [56
dvips: Could not find figure file pdf:dest; continuing
] [57
dvips: Could not find figure file pdf:dest; continuing
] [58
dvips: Could not find figure file pdf:dest; continuing
] [59
dvips: Could not find figure file pdf:dest; continuing
] [60
dvips: Could not find figure file pdf:dest; continuing
] [61
dvips: Could not find figure file pdf:dest; continuing
] [62
dvips: Could not find figure file pdf:dest; continuing
] [63
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [64
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [65
dvips: Could not find figure file pdf:dest; continuing
] [66
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [67
dvips: Could not find figure file pdf:dest; continuing
] [68
dvips: Could not find figure file pdf:dest; continuing
] [69
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [70
dvips: Could not find figure file pdf:dest; continuing
] [71
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [72
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [73
dvips: Could not find figure file pdf:dest; continuing
] [74
dvips: Could not find figure file pdf:dest; continuing
] [75
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [76
dvips: Could not find figure file pdf:dest; continuing
] [77
dvips: Could not find figure file pdf:dest; continuing
] [78
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [79
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [80
dvips: Could not find figure file pdf:dest; continuing
] [81
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [82
dvips: Could not find figure file pdf:dest; continuing
] [83
dvips: Could not find figure file pdf:dest; continuing
] [84
dvips: Could not find figure file pdf:dest; continuing
] [85
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [86
dvips: Could not find figure file pdf:dest; continuing
] [87
dvips: Could not find figure file pdf:dest; continuing
] [88
dvips: Could not find figure file pdf:dest; continuing
] [89
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [90
dvips: Could not find figure file pdf:dest; continuing
] [91
dvips: Could not find figure file pdf:dest; continuing
] [92
dvips: Could not find figure file pdf:dest; continuing
] [93
dvips: Could not find figure file pdf:dest; continuing
] [94
dvips: Could not find figure file pdf:dest; continuing
] [95
dvips: Could not find figure file pdf:dest; continuing
] [96
dvips: Could not find figure file pdf:dest; continuing
] [97
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [98
dvips: Could not find figure file pdf:dest; continuing
] [99
dvips: Could not find figure file pdf:dest; continuing
] [100
dvips: Could not find figure file pdf:dest; continuing
] [101
dvips: Could not find figure file pdf:dest; continuing
] [102
dvips: Could not find figure file pdf:dest; continuing
] [103
dvips: Could not find figure file pdf:dest; continuing
] [104
dvips: Could not find figure file pdf:dest; continuing
] [105
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [106
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [107
dvips: Could not find figure file pdf:dest; continuing
] [108
dvips: Could not find figure file pdf:dest; continuing
] [109
dvips: Could not find figure file pdf:dest; continuing
] [110
dvips: Could not find figure file pdf:dest; continuing
] [111
dvips: Could not find figure file pdf:dest; continuing
] [112
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [113
dvips: Could not find figure file pdf:dest; continuing
] [114
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [115
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [116
dvips: Could not find figure file pdf:dest; continuing
] [117
dvips: Could not find figure file pdf:dest; continuing
] [118
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [119
dvips: Could not find figure file pdf:dest; continuing
] [120
dvips: Could not find figure file pdf:dest; continuing
] [121
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [122
dvips: Could not find figure file pdf:dest; continuing
] [123
dvips: Could not find figure file pdf:dest; continuing
] [124
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [125
dvips: Could not find figure file pdf:dest; continuing
] [126
dvips: Could not find figure file pdf:dest; continuing
] [127
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [128
dvips: Could not find figure file pdf:dest; continuing
] [129
dvips: Could not find figure file pdf:dest; continuing
] [130
dvips: Could not find figure file pdf:dest; continuing
] [131
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1c.ps>
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [132
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1d.ps>
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
] [133
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
<ps/bookvol1e.ps>
dvips: Could not find figure file pdf:dest; continuing
] [134
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
<ps/bookvol1f.ps>
dvips: Could not find figure file pdf:dest; continuing
] [135
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
<ps/bookvol1g.ps>
dvips: Could not find figure file pdf:dest; continuing
] [136
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [137
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
] [138
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [139
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1h.ps>
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [140
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [141
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [142
dvips: Could not find figure file pdf:dest; continuing
] [143
dvips: Could not find figure file pdf:dest; continuing
] [144
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [145
dvips: Could not find figure file pdf:dest; continuing
] [146
dvips: Could not find figure file pdf:dest; continuing
] [147
dvips: Could not find figure file pdf:dest; continuing
] [148
dvips: Could not find figure file pdf:dest; continuing
] [149
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1i.ps>
dvips: Could not find figure file pdf:dest; continuing
] [150
dvips: Could not find figure file pdf:dest; continuing
] [151
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1j.ps>
dvips: Could not find figure file pdf:dest; continuing
] [152
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1k.ps>
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [153
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [154
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1l.ps>
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [155
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
<ps/bookvol1m.ps>
dvips: Could not find figure file pdf:dest; continuing
] [156
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
<ps/bookvol1n.ps>
dvips: Could not find figure file pdf:dest; continuing
] [157
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
<ps/bookvol1o.ps>
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [158
dvips: Could not find figure file pdf:dest; continuing
] [159
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1p.ps>
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [160
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [161
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [162
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [163
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [164
dvips: Could not find figure file pdf:dest; continuing
] [165
dvips: Could not find figure file pdf:dest; continuing
] [166
dvips: Could not find figure file pdf:dest; continuing
] [167
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [168
dvips: Could not find figure file pdf:dest; continuing
] [169
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [170
dvips: Could not find figure file pdf:dest; continuing
] [171
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [172
dvips: Could not find figure file pdf:dest; continuing
] [173
dvips: Could not find figure file pdf:dest; continuing
] [174
dvips: Could not find figure file pdf:dest; continuing
] [175
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [176
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
] [177
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [178
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [179
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [180
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [181
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [182
dvips: Could not find figure file pdf:dest; continuing
] [183
dvips: Could not find figure file pdf:dest; continuing
] [184
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [185
dvips: Could not find figure file pdf:dest; continuing
] [186
dvips: Could not find figure file pdf:dest; continuing
] [187
dvips: Could not find figure file pdf:dest; continuing
] [188
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [189
dvips: Could not find figure file pdf:dest; continuing
] [190
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [191
dvips: Could not find figure file pdf:dest; continuing
] [192
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [193
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [194
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [195
dvips: Could not find figure file pdf:dest; continuing
] [196
dvips: Could not find figure file pdf:dest; continuing
] [197
dvips: Could not find figure file pdf:dest; continuing
] [198
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [199
dvips: Could not find figure file pdf:dest; continuing
] [200
dvips: Could not find figure file pdf:dest; continuing
] [201
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [202
dvips: Could not find figure file pdf:dest; continuing
] [203
dvips: Could not find figure file pdf:dest; continuing
] [204
dvips: Could not find figure file pdf:dest; continuing
] [205
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [206
dvips: Could not find figure file pdf:dest; continuing
] [207
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [208
dvips: Could not find figure file pdf:dest; continuing
] [209
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [210
dvips: Could not find figure file pdf:dest; continuing
] [211
dvips: Could not find figure file pdf:dest; continuing
] [212
dvips: Could not find figure file pdf:dest; continuing
] [213
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
<ps/bookvol1q.ps>
dvips: Could not find figure file pdf:dest; continuing
] [214
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
<ps/help.ps><ps/up.ps><ps/home.ps><ps/exit.ps><ps/home.ps>
dvips: Could not find figure file pdf:dest; continuing
<ps/exit.ps>] [215
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [216
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [217
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [218
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [219
dvips: Could not find figure file pdf:dest; continuing
] [220
dvips: Could not find figure file pdf:dest; continuing
] [221
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [222
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:dest; continuing
] [223
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [224
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [225
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [226
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [227
dvips: Could not find figure file pdf:dest; continuing
] [228
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [229
dvips: Could not find figure file pdf:dest; continuing
] [230
dvips: Could not find figure file pdf:dest; continuing
] [231
dvips: Could not find figure file pdf:dest; continuing
] [232
dvips: Could not find figure file pdf:dest; continuing
] [233
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [234
dvips: Could not find figure file pdf:dest; continuing
] [235
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [236
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [237
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [238
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [239
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [240
dvips: Could not find figure file pdf:dest; continuing
] [241
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [242
dvips: Could not find figure file pdf:dest; continuing
] [243
dvips: Could not find figure file pdf:dest; continuing
] [244
dvips: Could not find figure file pdf:dest; continuing
] [245
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [246
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [247
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [248
dvips: Could not find figure file pdf:dest; continuing
] [249
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [250
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [251
dvips: Could not find figure file pdf:dest; continuing
] [252
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [253
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [254
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [255
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [256
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [257
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [258
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [259
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [260
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [261
dvips: Could not find figure file pdf:dest; continuing
] [262
dvips: Could not find figure file pdf:dest; continuing
] [263
dvips: Could not find figure file pdf:dest; continuing
] [264
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [265
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [266
dvips: Could not find figure file pdf:dest; continuing
] [267
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [268
dvips: Could not find figure file pdf:dest; continuing
] [269
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:dest; continuing
] [270
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [271
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [272
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [273
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [274
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [275
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [276
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [277
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [278
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] [279
dvips: Could not find figure file pdf:dest; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
dvips: Could not find figure file pdf:bann; continuing
dvips: Could not find figure file pdf:eann; continuing
] 
ps2pdf bookvol1.ps 

\start
Date: Tue, 17 Jun 2008 23:26:25 -0500
From: Tim Daly
To: Judith Stafford
Subject: Senior Software Engineering Project

Dr Judith Stafford,

This is a proposal for your Senior Software Engineering Project effort.

Name of sponsoring organization: Axiom
Address of sponsoring organization: Tim Daly
Technical Liason:
  Tim Daly
  914-886-8120
  Tim Daly

Project title: The Crystal 

Project Constraints:

This is a design project that requires innovative ideas on the future
of a new computer algebra software interface. 

The problem is to generate design ideas that will be "state of the art"
in 30 years. 

It is a requirement that the project be done using literate programming.
Documentation of ideas is THE fundamental requirement.

It is a requirement that it can prototyped in a standard browser using
javascript and AJAX. The code need not be complete and need only
illustrate each basic idea. 



Possible Textbook: 

Terry Winograd "Bringing Design to Software" 1996
                   ACM Press ISBN 0-201-85491-0 



The Project Description:

You can assume a "petamachine". That is, a machine with a petabyte of
disk space, a terabyte of memory, a terahertz cpu, and a terabyte of
network bandwidth. The petamachine has thousands of processors that
can be dynamically allocated to do things like scan the entire web for
any possible reference or chase a chain of connections. Each new
factoid found is automatically "pushed" into the local knowledge
network. The petamachine acts without instructions from the user
and dynamically updates everything in the knowledge net continuously.

In addition, you can assume that the petamachine is tracking the
user's "intentional stance", that is, what the user appears to be
trying to accomplish at the time. Thus, if the user is working on a
paper about integration and a new paper appears on the web with some
related information then the user can be notified.

The problem space is that of a researcher in computer algebra. The
"problem" itself can be viewed as a large "knot" (e.g. a knowledge
representation network) "hanging" in space. Now wrap a "crystal"
around the knot. The question is "what can this crystal do to make
the researcher's job easier"? You need to think about ways to reduce
the "information load", ways to simplify facet creation, ways to 
automate presentation, structuring, and content presentation.

Each facet of the crystal represents a different view of the
information.  Every facet has an up-to-date view (thus, a
model-view-controller kind of mechanism is likely but other ideas are
welcome). For instance, one facet could contain the source code, a
second could contain the bibliographic references, a third could
contain graphic representations of the problem, etc.

Facets are able to be created dynamically and new code to implement
the facet behavior can be dynamically added and changed.

Facets are recursive. Thus a single facet can represent the face of
several crystals. Picture a big crystal with a smaller crystal inside
where the smaller crystal has one facet "glued to" (shared with) the
larger crystal. The smaller crystal can have smaller crystals within.
Each encapsulates some interesting piece of the knowledge net which
is completely user specific. Strict containment is not required since
crystals of very different content can share a facet.

For navigation purposes the crystal may need to be "flattened". 
Consider the use of the javascript information visualization toolkit
<http://blog.thejit.org/javascript-information-visualization-toolkit-jit>

Consider what might happen when writing a story using crystals.
The author might have a knowledge network that describes all the known
history of computer programming. The article under construction might
be about the "genealogy" of a software product told thru stories about
the people involved from its history. Suppose the people involved are
Alice, Bob, and Charlie. 

The author can construct a crystal around each person which describes
all the known information about that person which is available anywhere
on the net (and 30 years from now that will be a lot). The author uses
this information to construct various facets about the person such as
their work history. One of the facets will be a paragraph "for the 
article" which describes the contribution by each person. Thus, there
would be a facet around Alice that describes her work history on one
facet and the author's description of her contribution to the project
on another facet.

Eventually the author ends up with a set of crystals, one for Alice,
Bob, and Charlie that can be chained together, with the "description
of their project contributions" facets exposed. Thus, a web "article"
would now be a string-of-pearls-like set of these crystals.  This
would look like and read like an ordinary web page. However, each
paragraph is a facet of a separate crystal that can be rotated to view
many different pieces of information, such as Alice's work history,
current contacts, hobbies, etc.

This will eventually be applied in the context of the Axiom computer
algebra system. A technical article which describes a particular 
subject, such as the integration facility in Axiom, would look like
an ordinary technical paper. However, the "paragraph" crystal facets
can be rotated to show the code, show equations, show graphs, show
branch points, show references, show examples, show help, show related
topics, or any other information that is relevant. Notice that these
crystals are "live" objects so manipulation the equations changes the
graph and manipulating the graph changes the equations, since they both
are connected to the underlying knowledge network.

The essence of the work product is ideas. What will be state of the
art in the user interface in 30 years? We assume a crystal-like
structure wrapped around a knowledge-representation network which
lives in and selectively extracts from "the river of the internet"
on an unlimited petamachine. What is the "wild but possible" ideas
that will define this new interface?

As shown above, one possible way to present the crystal ideas is
to relate a story about how they might be used with some illustration
of the idea in a small prototype.

While seemingly "blue sky" this project is based on history. Axiom
originally had a "hyperdoc" help browser written in the late 80s
which anticipated current browsers. You could create new pages with
a markup language, embed live graphics, dynamically change pages,
create separate windows, dynamically query server information to
display pages, etc. All of this is now "standard browser technology"
but it was new and innovative at the time.

What can you create now that will be "new and innovative" but will
be "standard technology" 30 years from now?




Project Deliverable: 

A single literate document containing the ideas and the prototype code.



Footnote: Axiom is a free and open source computer algebra project.
Visit <http://axiom.axiom-developer.org>

\start
Date: Thu, 19 Jun 2008 00:33:06 -0400
From: Tim Daly
To: list
Subject: Lisp code development

I know there are several people who feel that Lisp code is hard
to develop. I can highly recommend a series of short videos that
show the development of a reddit clone in common lisp.
<http://www.lispcast.com/drupal/node/4>

He shows quite a few interesting features, including writing unit
tests that drive the browser and check web pages and the use of
macros to simplify lisp code.

It is a rather painless introduction to modern day lisp development.

\start
Date: Thu, 19 Jun 2008 13:34:42 -0400
From: Tim Daly
To: Anatoly Raportirenko
Subject: Re: axiom bookvols

Can you give me your full name so I can include you in the credits?

\start
Date: Thu, 19 Jun 2008 16:09:05 -0500
From: Tim Daly
To: list
Subject: 20080619.01.tpd.patch (add Anatoly Raportirenko)

readme add Anatoly Raportirenko
src/interp/setq.lisp add Anatoly Raportirenko
=======================================================================
diff --git a/changelog b/changelog
index 3914214..5fa645b 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20080619 tpd readme add Anatoly Raportirenko
+20080619 tpd src/interp/setq.lisp add Anatoly Raportirenko
+20080619 axr Anatoly Raportirenko Anatoly Raportirenko
 20080618 tpd books/ps/CRCp27-2.1.1.ps added
 20080618 tpd src/Makefile build sman directory from bookvol6
 20080618 tpd src/sman/bookvol6 moved to books directory
diff --git a/readme b/readme
index 204ebd4..406ac65 100644
--- a/readme
+++ b/readme
@@ -231,10 +231,10 @@ at the axiom command prompt will prettyprint the list.
 "Michel Petitot         Didier Pinchon         Ayal Pinkus"
 "Jose Alfredo Portes"
 "Claude Quitte"
-"Arthur C. Ralfs        Norman Ramsey          Michael Richardson"
-"Renaud Rioboo          Jean Rivlin            Nicolas Robidoux"
-"Simon Robinson         Raymond Rogers         Michael Rothstein"
-"Martin Rubey"
+"Arthur C. Ralfs        Norman Ramsey          Anatoly Raportirenko"
+"Michael Richardson     Renaud Rioboo          Jean Rivlin"
+"Nicolas Robidoux       Simon Robinson         Raymond Rogers"
+"Michael Rothstein      Martin Rubey"
 "Philip Santas          Alfred Scheerhorn      William Schelter"
 "Gerhard Schneider      Martin Schoenert       Marshall Schor"
 "Frithjof Schulze       Fritz Schwarz          Nick Simicich"
diff --git a/src/interp/setq.lisp.pamphlet b/src/interp/setq.lisp.pamphlet
index d451fdf..6954079 100644
--- a/src/interp/setq.lisp.pamphlet
+++ b/src/interp/setq.lisp.pamphlet
@@ -642,10 +642,10 @@
 "Michel Petitot         Didier Pinchon         Ayal Pinkus"
 "Jose Alfredo Portes"
 "Claude Quitte"
-"Arthur C. Ralfs        Norman Ramsey          Michael Richardson"
-"Renaud Rioboo          Jean Rivlin            Nicolas Robidoux"
-"Simon Robinson         Raymond Rogers         Michael Rothstein"
-"Martin Rubey"
+"Arthur C. Ralfs        Norman Ramsey          Anatoly Raportirenko"
+"Michael Richardson     Renaud Rioboo          Jean Rivlin"
+"Nicolas Robidoux       Simon Robinson         Raymond Rogers"
+"Michael Rothstein      Martin Rubey"
 "Philip Santas          Alfred Scheerhorn      William Schelter"
 "Gerhard Schneider      Martin Schoenert       Marshall Schor"
 "Frithjof Schulze       Fritz Schwarz          Nick Simicich"

\start
Date: Thu, 19 Jun 2008 17:14:02 -0500
From: Tim Daly
To: list
Subject: 20080619.02.tpd.patch (systematically index chunks)

All chunk names and uses now appear in the index.
==========================================================================
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index a85e844..761a492 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -322,7 +322,7 @@ points(viewport1,3,"off")
 makeViewport2D(viewport1)
 write(viewport1,"p27-2.1.1")
 \end{verbatim}
-\center{\includegraphics[height=8cm,width=8cm]{ps/CRCp27-2.1.1.ps}}
+{\center{\includegraphics[height=8cm,width=8cm]{ps/CRCp27-2.1.1.ps}}}
 \label{CRCp27-2.1.1}
 \index{figures!CRCp27-2.1.1}
 
@@ -1116,12 +1116,16 @@ However, the moColor macro IS used but not included.
 #define moColor_BG(h,s) ((mono)?backgroundColor:XSolidColor(h,s))
 @
 \section{component.h}
+\index{component.h}
 <<include/component.h>>=
 /* 
    This file contains the definitions for the generalized point
    structures in 3D.
    */
 
+@
+\index{tube.h}
+<<include/component.h>>=
 <<include/tube.h>>
 
 /* viewman's and viewAlone's refPt */
@@ -1185,6 +1189,7 @@ typedef struct _LLLPoint { /* meaning list of list of list of points */
 
 @
 \section{g.h}
+\index{g.h}
 <<include/g.h>>=
 #define Xoption		0	/* Gdraw routine option */
 #define PSoption		1	/* Gdraw routine option */
@@ -1242,6 +1247,7 @@ typedef struct _GCstruct {
 
 @
 \section{nox10.h}
+\index{nox10.h}
 <<include/nox10.h>>=
 
 /* Used in XDraw and XDrawFilled */
@@ -1302,6 +1308,7 @@ typedef struct _XAssocTable {
 
 @
 \section{override.h}
+\index{override.h}
 <<include/override.h>>=
 #define overrideManager False   
 /* override_redirect setting for overriding the window manager's directives. 
@@ -1316,6 +1323,7 @@ typedef struct _XAssocTable {
 
 @
 \section{rgb.h}
+\index{rgb.h}
 \index{struct!RGB}
 \index{RGB struct}
 <<include/rgb.h>>=
@@ -1341,7 +1349,7 @@ typedef struct _HLS {
 
 @
 \section{spadcolors.h}
-This seems unused.
+\index{spadcolors.h}
 <<include/spadcolors.h>>=
 #define numOfColors 240
 #define totalHuesConst   27 
@@ -1371,9 +1379,13 @@ extern int       num;
 
 #define maxColors DisplayCells(dsply,scrn)-1
 
+@
+\index{rgb.h}
+<<include/spadcolors.h>>=
 <<include/rgb.h>>
 @
 \section{tube.h}
+\index{tube.h}
 <<include/tube.h>>=
 #define openTube 1
 #define closedTube 0
@@ -1386,6 +1398,9 @@ typedef struct _triple {    /* used for normals */
   float x,y,z;
 } triple;
 
+@
+\index{rgb.h}
+<<include/tube.h>>=
 <<include/rgb.h>>
 
 @
@@ -1482,6 +1497,7 @@ typedef struct _pointInfo {
 
 @
 \section{view2d.h}
+\index{view2d.h}
 <<include/view2d.h>>=
 #include <X11/Xlib.h>
 #define maxGraphs 9
@@ -1573,6 +1589,8 @@ typedef struct _graphStateStruct {
 /* need spline color, axes color, units color... */
 @
 \section{view3d.h}
+\index{view3d.h}
+\index{component.h}
 <<include/view3d.h>>=
 <<include/component.h>>
 
@@ -1592,6 +1610,7 @@ typedef struct _fun2VarModel {
 
 @
 \index{union!kindOf}
+\index{kindOf union}
 <<include/view3d.h>>=
 union kindOf {
   /*  float *zArray; */
@@ -1655,12 +1674,14 @@ typedef struct _boxSideStruct {
 
 @
 \section{viewcommand.h}
+\index{viewcommand.h}
 <<include/viewcommand.h>>=
 /* Commands that the viewports could send to the viewport manager */
 
 #define viewportClosing 1
 @
 \section{view.h}
+\index{view.h}
 <<include/view.h>>=
 /* This file is to be included by all the viewport files */
 
@@ -1721,6 +1742,7 @@ exitWithAck(RootWindow(dsply,scrn),Window,-1); \
 
 @
 \section{write.h}
+\index{write.h}
 <<include/write.h>>=
 /* These are types of files that the viewports would
    be able to write out upon a command from Axiom.
@@ -1733,6 +1755,7 @@ exitWithAck(RootWindow(dsply,scrn),Window,-1); \
 #define anImage	4
 @
 \section{xdefs.h}
+\index{xdefs.h}
 <<include/xdefs.h>>=
 /***      default fonts      ***/
 #ifdef  RTplatform
@@ -1767,68 +1790,12 @@ exitWithAck(RootWindow(dsply,scrn),Window,-1); \
 #endif
 
 @
-\section{include/purty}
-\subsection{include/purty/spadbitmap.bitmap}
-<<include/purty/spadbitmap.bitmap>>=
-#define spadBitmap_width 34
-#define spadBitmap_height 20
-#define spadBitmap_x_hot 15
-#define spadBitmap_y_hot 10
-static char spadBitmap_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00,
-   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
-   0xe6, 0xf8, 0x76, 0x00, 0x84, 0x98, 0x44, 0x49, 0x00, 0xc0, 0x98, 0x42,
-   0x49, 0x00, 0xb8, 0x98, 0x42, 0x49, 0x00, 0x84, 0x95, 0x42, 0x49, 0x00,
-   0x44, 0xa5, 0x22, 0x49, 0x00, 0x78, 0x63, 0x1d, 0xdb, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00,
-   0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
-@
-\subsection{include/purty/spadmask.mask}
-<<include/purty/spadmask.mask>>=
-#define spadMask_width 34
-#define spadMask_height 20
-#define spadMask_x_hot 15
-#define spadMask_y_hot 10
-static char spadMask_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
-   0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00,
-   0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x01, 0xfe,
-   0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff,
-   0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x01,
-   0xfe, 0xff, 0xff, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff,
-   0xff, 0xff, 0x01, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00,
-   0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00};
-@
-\subsection{include/purty/volume.bitmap}
-<<include/purty/volume.bitmap>>=
-#define volumeBitmap_width 16
-#define volumeBitmap_height 16
-#define volumeBitmap_x_hot 5
-#define volumeBitmap_y_hot 1
-static char volumeBitmap_bits[] = {
-   0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x10, 0x01, 0x10, 0x07, 0x10, 0x09,
-   0x0c, 0x39, 0x1a, 0x51, 0x32, 0x50, 0x22, 0x40, 0x22, 0x40, 0x04, 0x60,
-   0x04, 0x30, 0xf8, 0x1f, 0x04, 0x20, 0xf8, 0x1f};
-@
-\subsection{include/purty/volume.mask}
-<<include/purty/volume.mask>>=
-#define volumeMask_width 16
-#define volumeMask_height 16
-#define volumeMask_x_hot 5
-#define volumeMask_y_hot 1
-static char volumeMask_bits[] = {
-   0x00, 0x00, 0x60, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xf0, 0x07, 0xf0, 0x0f,
-   0xfc, 0x3f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfc, 0x7f,
-   0xfc, 0x3f, 0xf8, 0x1f, 0x04, 0x20, 0xf8, 0x1f};
-@
-
 \chapter{viewman}
 \label{viewman}
+\index{viewman}
 \section{Constants and Headers}
 \subsection{defines}
+\index{defines}
 <<viewman>>=
       /* Viewport Commands */
 #define makeViewport -1
@@ -1864,6 +1831,10 @@ static char volumeMask_bits[] = {
 
 @
 \subsection{Local includes}
+\index{actions.h}
+\index{view2d.h}
+\index{view3d.h}
+\index{viewcommand.h}
 <<viewman>>=
 <<include/actions.h>>
 <<include/view2d.h>>
@@ -3057,6 +3028,10 @@ int main(void) {
 
 @
 \subsection{Local includes}
+\index{view3d.h}
+\index{view2d.h}
+\index{actions.h}
+\index{viewcommand.h}
 <<viewalone>>=
 <<include/view3d.h>>
 <<include/view2d.h>>
@@ -3711,6 +3686,15 @@ documentation in that chapter.
 
 @
 \subsection{local includes}
+\index{actions.h}
+\index{g.h}
+\index{nox10.h}
+\index{override.h}
+\index{view.h}
+\index{viewcommand.h}
+\index{view2d.h}
+\index{write.h}
+\index{xdefs.h}
 <<view2d>>=
 #include "bsdsignal.h"
 #include "bsdsignal.h1"
@@ -4292,6 +4276,7 @@ two dimensional control panel, and returns the
 number of buttons created.
 \index{view2d!initButtons}
 \index{initButtons view2d}
+\index{gfun.c}
 <<view2d>>=
 <<gfun.c>>
 int initButtons(buttonStruct *buttons) {
@@ -7492,6 +7477,14 @@ int main(void) {
 
 @
 \subsection{Local includes}
+\index{view3d.h}
+\index{actions.h}
+\index{g.h}
+\index{override.h}
+\index{view.h}
+\index{viewcommand.h}
+\index{write.h}
+\index{xdefs.h}
 <<view3d>>=
 #include "bsdsignal.h"
 #include "bsdsignal.h1"
@@ -8914,6 +8907,7 @@ three dimensional control panel, and returns the
 number of buttons created.
 \index{view3d!initButtons}
 \index{initButtons view3d}
+\index{gfun.c}
 <<view3d>>=
 <<gfun.c>>
 int initButtons(buttonStruct *buttons) {  
@@ -17686,6 +17680,7 @@ The order of these defined variables are very important; they are used
 to create the OUTPUT file.  Essentially, PSCreateFile() loops through the
 index of 0 to psDrawNo and checks if the file/procedure is used.  If so,
 the file is copied to the output file.
+\index{gfun.c}
 <<gfun.c>>=
 
 #define output		0		/* output file */
@@ -18886,100 +18881,6 @@ void XDeleteAssoc(Display * dsp,HashTable * table, Window w) {
 }
 
 @
-\section{gdraws Makefile}
-\subsection{environment variables}
-<<gdraws/Makefile>>=
-BOOK=${SPD}/books/bookvol8.pamphlet
-MIDINT=	${INT}/graph/gdraws
-MIDOBJ=	${OBJ}/${SYS}/graph/gdraws
-OUT=	${MNT}/${SYS}/lib
-PS=	${MNT}/${SYS}/lib/graph
-
-CFLAGS	    = ${CCF} -I${SRC}/include -I${SRC}/hyper
-
-HEADERS =  ${SRC}/include/hash.h  ${SRC}/include/hash.h1 
-
-all: ${MIDOBJ}/gfun.o ${PSFiles} 
-	@ echo 21 finished making gdraws from ${BOOK}
-
-${MIDOBJ}/gfun.o: ${HEADERS} ${BOOK}
-	@ echo 2 making ${MIDOBJ}/gfun.o from ${BOOK}
-	@( cd ${MIDINT} ; ${TANGLE} -R"gfun.c" ${BOOK} >gfun.c )
-	@ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/gfun.c )
-
-${PS}/colorpoly.ps: ${BOOK} 
-	@ echo 3 ${PS}/colorpoly.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/colorpoly" ${BOOK} >${PS}/colorpoly.ps
-
-${PS}/colorwol.ps: ${BOOK} 
-	@ echo 4 ${PS}/colorwol.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/colorwol" ${BOOK} >${PS}/colorwol.ps
-
-${PS}/draw.ps: ${BOOK} 
-	@ echo 5 ${PS}/draw.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/draw" ${BOOK} >${PS}/draw.ps
-
-${PS}/drawIstr.ps: ${BOOK} 
-	@ echo 6 ${PS}/drawIstr.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/drawIstr" ${BOOK} >${PS}/drawIstr.ps
-
-${PS}/drawarc.ps: ${BOOK} 
-	@ echo 7 ${PS}/drawarc.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/drawarc" ${BOOK} >${PS}/drawarc.ps
-
-${PS}/drawcolor.ps: ${BOOK} 
-	@ echo 8 ${PS}/drawcolor.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/drawcolor" ${BOOK} >${PS}/drawcolor.ps
-
-${PS}/drawline.ps: ${BOOK} 
-	@ echo 9 ${PS}/drawline.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/drawline" ${BOOK} >${PS}/drawline.ps
-
-${PS}/drawlines.ps: ${BOOK} 
-	@ echo 10 ${PS}/drawlines.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/drawlines" ${BOOK} >${PS}/drawlines.ps
-
-${PS}/drawpoint.ps: ${BOOK} 
-	@ echo 11 ${PS}/drawpoint.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/drawpoint" ${BOOK} >${PS}/drawpoint.ps
-
-${PS}/drawrect.ps: ${BOOK} 
-	@ echo 12 ${PS}/drawrect.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/drawrect" ${BOOK} >${PS}/drawrect.ps
-
-${PS}/drawstr.ps: ${BOOK} 
-	@ echo 13 ${PS}/drawstr.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/drawstr" ${BOOK} >${PS}/drawstr.ps
-
-${PS}/drwfilled.ps: ${BOOK} 
-	@ echo 14 ${PS}/drwfilled.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/drwfilled" ${BOOK} >${PS}/drwfilled.ps
-
-${PS}/end.ps: ${BOOK} 
-	@ echo 15 ${PS}/end.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/end" ${BOOK} >${PS}/end.ps
-
-${PS}/fillarc.ps: ${BOOK} 
-	@ echo 16 ${PS}/fillarc.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/fillarc" ${BOOK} >${PS}/fillarc.ps
-
-${PS}/fillpoly.ps: ${BOOK} 
-	@ echo 17 ${PS}/fillpoly.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/fillpoly" ${BOOK} >${PS}/fillpoly.ps
-
-${PS}/fillwol.ps: ${BOOK} 
-	@ echo 18 ${PS}/fillwol.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/fillwol" ${BOOK} >${PS}/fillwol.ps
-
-${PS}/header.ps: ${BOOK} 
-	@ echo 19 ${PS}/header.ps from ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/header" ${BOOK} >${PS}/header.ps
-
-${PS}/setup.ps: ${BOOK} 
-	@ echo 20 ${PS}/setup.ps ${BOOK} 
-	@ ${TANGLE} -R"gdraws/psfiles/setup" ${BOOK} >${PS}/setup.ps
-
-@
 \section{The postscript command definitions}
 \subsection{colorpoly}
 \begin{verbatim}
@@ -18995,6 +18896,8 @@ operand stack configuration in order to use psColorPoly:
 this draws a polygon by connecting all the points and fills the
 region with foreground color
 \end{verbatim}
+\index{psfiles!colorpoly}
+\index{colorpoly psfiles}
 <<psfiles/colorpoly>>=
 /psColorPoly
         {	gsave
@@ -19023,6 +18926,8 @@ operand stack configuration in order to use psDrawFilled:
 this draws lines connecting all the points and fills the
 region with background color (default: 1, or white).
 \end{verbatim}
+\index{psfiles!colorwol}
+\index{colorwol psfiles}
 <<psfiles/colorwol>>=
 /psColorwOutline
         {	gsave
@@ -19053,6 +18958,8 @@ and height specifies the rectangle which encases the arc.
 Origin is at upper left corner of rectangle.
 This function uses "scale" to make cricles and ellipses.
 \end{verbatim}
+\index{psfiles!drawarc}
+\index{drawarc psfiles}
 <<psfiles/drawarc>>=
 /psDrawArc 
         {	gsave
@@ -19087,6 +18994,8 @@ operand stack configuration in order to use psDrawColor:
 	graphics-context dictionary
 to draw lines connecting points in vlist[0] to vlist[n]
 \end{verbatim}
+\index{psfiles!drawcolor}
+\index{drawcolor psfiles}
 <<psfiles/drawcolor>>=
 /psDrawColor
         {	gsave
@@ -19112,6 +19021,8 @@ operand stack configuration in order to use psDrawIStr:
 it draws a text string in foreground color on top of bounding box of
 string, which is in background color.
 \end{verbatim}
+\index{psfiles!drawIstr}
+\index{drawIstr psfiles}
 <<psfiles/drawIstr>>=
 /psDrawIStr
         {	gsave
@@ -19162,6 +19073,8 @@ operand stack configuration in order to use psDrawLine:
 	graphics-context dictionary
 this draws a line from (x0, y0) to (x1, y1).
 \end{verbatim}
+\index{psfiles!drawline}
+\index{drawline psfiles}
 <<psfiles/drawline>>=
 /psDrawLine
         {	gsave
@@ -19186,6 +19099,8 @@ operand stack configuration in order to use psDrawLines:
 	graphics-context dictionary
 this draws lines connecting all the points.
 \end{verbatim}
+\index{psfiles!drawlines}
+\index{drawlines psfiles}
 <<psfiles/drawlines>>=
 /psDrawLines
         {	gsave
@@ -19208,6 +19123,8 @@ operand stack configuration in order to use psDrawPoint:
 	graphics-context dictionary
 this draws a point at (x0, y0).
 \end{verbatim}
+\index{psfiles!drawpoint}
+\index{drawpoint psfiles}
 <<psfiles/drawpoint>>=
 /psDrawPoint
         {	gsave
@@ -19232,6 +19149,8 @@ operand stack configuration in order to use psDraw:
 	graphics-context dictionary
 to draw lines connecting points in vlist[0] to vlist[n]
 \end{verbatim}
+\index{psfiles!draw}
+\index{draw psfiles}
 <<psfiles/draw>>=
 /psDraw
         {	gsave
@@ -19257,6 +19176,8 @@ operand stack configuration in order to use psDrawRect:
 this draws an outline of a rectangle whose origin is at (x,y) and is width
 + 1 wide and height + 1 tall.
 \end{verbatim}
+\index{psfiles!drawrect}
+\index{drawrect psfiles}
 <<psfiles/drawrect>>=
 /psDrawRect
         {	gsave
@@ -19277,6 +19198,8 @@ operand stack configuration in order to use psDrawStr:
 	graphics-context dictionary
 this function draws a text string at (x,y).
 \end{verbatim}
+\index{psfiles!drawstr}
+\index{drawstr psfiles}
 <<psfiles/drawstr>>=
 /psDrawStr
         {	gsave
@@ -19302,6 +19225,8 @@ operand stack configuration in order to use psDrawFilled:
 this draws lines connecting all the points and fills the
 region with background color (default: 1, or white).
 \end{verbatim}
+\index{psfiles!drwfilled}
+\index{drwfilled psfiles}
 <<psfiles/drwfilled>>=
 /psDrawFilled
         {	gsave
@@ -19316,8 +19241,8 @@ region with background color (default: 1, or white).
 
 @
 \subsection{end}
-\begin{verbatim}
-\end{verbatim}
+\index{psfiles!end}
+\index{end psfiles}
 <<psfiles/end>>=
 
    cleartomark					%% clearing operand stack
@@ -19346,6 +19271,8 @@ and height specifies the rectangle which encases the arc.
 Origin is at upper left corner of rectangle.
 This function uses "scale" to make cricles and ellipses.
 \end{verbatim}
+\index{psfiles!fillarc}
+\index{fillarc psfiles}
 <<psfiles/fillarc>>=
 /psFillArc
         {	gsave
@@ -19382,6 +19309,8 @@ operand stack configuration in order to use psDrawFilled:
 this draws a polygon by connecting all the points and fills the
 region with foreground color
 \end{verbatim}
+\index{psfiles!fillpoly}
+\index{fillpoly psfiles}
 <<psfiles/fillpoly>>=
 /psFillPoly
         {	gsave
@@ -19410,6 +19339,8 @@ operand stack configuration in order to use psDrawFilled:
 this draws lines connecting all the points and fills the
 region with background color (default: 1, or white).
 \end{verbatim}
+\index{psfiles!fillwol}
+\index{fillwol psfiles}
 <<psfiles/fillwol>>=
 /psFillwOutline
         {	gsave
@@ -19428,6 +19359,8 @@ region with background color (default: 1, or white).
 \subsection{header}
 \begin{verbatim}
 \end{verbatim}
+\index{psfiles!header}
+\index{header psfiles}
 <<psfiles/header>>=
 %!PS-Adobe-2.0
 %%DocumentFonts: Times-Roman
@@ -19587,8 +19520,8 @@ region with background color (default: 1, or white).
 
 @
 \subsection{setup}
-\begin{verbatim}
-\end{verbatim}
+\index{psfiles!setup}
+\index{setup psfiles}
 <<psfiles/setup>>=
 %-------------------------- script --------------------------%
 
diff --git a/changelog b/changelog
index 5fa645b..5c6a0b8 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080619 tpd books/bookvol8 systematically index chunks
 20080619 tpd readme add Anatoly Raportirenko
 20080619 tpd src/interp/setq.lisp add Anatoly Raportirenko
 20080619 axr Anatoly Raportirenko Anatoly Raportirenko

\start
Date: Thu, 19 Jun 2008 20:54:00 -0500
From: Tim Daly
To: list
Subject: 20080619.03.tpd.patch (add Ralf Hemmecke documentation to ax.boot)

Add Ralf Hemmecke documentation to ax.boot.
=========================================================================
diff --git a/changelog b/changelog
index 5c6a0b8..47c791c 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080619 rhx src/interp/ax.boot document makeAxExportForm
 20080619 tpd books/bookvol8 systematically index chunks
 20080619 tpd readme add Anatoly Raportirenko
 20080619 tpd src/interp/setq.lisp add Anatoly Raportirenko
diff --git a/src/interp/ax.boot.pamphlet b/src/interp/ax.boot.pamphlet
index 2234b1e..19a8ba8 100644
--- a/src/interp/ax.boot.pamphlet
+++ b/src/interp/ax.boot.pamphlet
@@ -1,10 +1,13 @@
 \documentclass{article}
 \usepackage{axiom}
+\newcommand{\file}[1]{\texttt{#1}}
 \begin{document}
 \title{\$SPAD/src/interp ax.boot}
-\author{The Axiom Team}
+\author{Ralf Hemmecke}
 \maketitle
 \begin{abstract}
+We give an overview of what \file{ax.boot} does and in particular
+describe the function \verb'makeAxExportForm'.
 \end{abstract}
 \eject
 \tableofcontents
@@ -21,7 +24,29 @@ but was changed to read:
   axForm := ['Sequence, _
                ['Import, [], 'AxiomLib], ['Import, [], 'Boolean], :axForms]
 @
+\section{Overview}
 \subsection{makeAxExportForm}
+The most important function in \file{ax.boot} is the function
+\verb'makeAxExportForm'.
+
+The function takes as input a filename and a list of constructors.
+Via LISP it would be called like
+\begin{verbatim}
+(|makeAxExportForm| filename constructors)
+\end{verbatim}
+where \verb'filename' is actually unused and could be removed and
+\verb'constructors' should be a list of constructor names, i.e., names
+of categories, domains, and packages in their unabbreviated form.
+
+It returns a list that represents the \texttt{.ap} (parsed source)
+(see \verb'aldor -hall') form of the constructors. However, since the
+output is only needed for a construction of an Aldor-Axiom
+interaction, \verb'makeAxExportForm' will only construct the category
+part of the constructor.
+
+The function is actually used in \file{src/aldor/genax.lsp} and is an
+auxiliary part in the construction of the interface for the
+interaction of the Aldor compiler with Axiom.
 <<makeAxExportForm>>=
 makeAxExportForm(filename, constructors) ==
   $defaultFlag : local := false
@@ -42,7 +67,417 @@ makeAxExportForm(filename, constructors) ==
   axForm
 
 @
-\subsection{axFormatPref}
+The basic translation is easily demonstrated with a few examples. For
+better readability, we look at the corresponding SPAD form of the
+constructor (instead of its internal LISP representation).
+
+Let us first state what different situations we identified.
+\begin{enumerate}
+\item Ordinary domains. See Section~\ref{sec:Domain}.
+\item Ordinary categories. See Section~\ref{sec:Category}.
+\item Ordinary categories with default packages. See
+  Section~\ref{sec:Category+Default}.
+\item Initial domains, i.e., domains that will be extended in the
+  course of building \file{libaxiom.al}. These domains are listed in
+  the variable \verb'$extendedDomains'. %$
+
+  See Sections~\ref{sec:InitDomain} and
+  \ref{sec:ParametrizedInitDomain}. There is a subdivision for these
+  domains.
+  \begin{enumerate}
+  \item For domains that take no arguments, see
+    Section~\ref{sec:InitDomain}.
+  \item For domains that take arguments, see
+    Section~\ref{sec:ParametrizedInitDomain}.
+  \end{enumerate}
+\end{enumerate}
+\section{Ordinary Domains}\label{sec:Domain}
+The domain \verb'Stack'.
+\begin{verbatim}
+Stack(S:SetCategory): StackAggregate S with
+    stack: List S -> %
+  == add
+    Rep := Reference List S
+    ...
+\end{verbatim}
+It is translated into \ldots
+\begin{verbatim}
+(|Sequence| (|Import| NIL |AxiomLib|) (|Import| NIL |Boolean|)
+    (|Export|
+        (|Declare| |Stack|
+            (|Apply| -> (|Declare| |#1| |SetCategory|)
+                     (|With| NIL
+                             (|Sequence|
+                                 (|Apply| |StackAggregate| |#1|)
+                                 (|Declare| |stack|
+                                     (|Apply| ->
+                                      (|Comma| (|Apply| |List| |#1|))
+                                      %))))))
+        NIL NIL))
+\end{verbatim}
+That is the parsed source of the Aldor code \ldots
+\begin{verbatim}
+import from AxiomLib;
+import from Boolean;
+export Stack: (T: SetCategory) -> with {
+                                        StackAggregate T;
+                                        stack: List T -> %;
+                                  }
+\end{verbatim}
+Note that nothing appears before the \verb'with'. No problem because
+that is equivalent to a \verb'Join' in Aldor.
+\section{Ordinary Categories}\label{sec:Category}
+The category \verb'SquareFreeNormalizedTriangularSetCategory' without
+a default package.
+\begin{verbatim}
+SquareFreeNormalizedTriangularSetCategory(_
+        R: GcdDomain,_
+        E: OrderedAbelianMonoidSup,_
+        V: OrderedSet,_
+        P:RecursivePolynomialCategory(R, E, V)): Category ==
+    Join(_
+        SquareFreeRegularTriangularSetCategory(R,E,V,P),_
+         NormalizedTriangularSetCategory(R,E,V,P))
+\end{verbatim}
+It is translated into \ldots
+\begin{verbatim}
+(|Sequence| (|Import| NIL |AxiomLib|) (|Import| NIL |Boolean|)
+    (|Define|
+        (|Declare| |SquareFreeNormalizedTriangularSetCategory|
+            (|Apply| ->
+                     (|Comma| (|Declare| |#1| |GcdDomain|)
+                              (|Declare| |#2|
+                                  |OrderedAbelianMonoidSup|)
+                              (|Declare| |#3| |OrderedSet|)
+                              (|Declare| |#4|
+                                  (|Apply| |RecursivePolynomialCategory|
+                                           |#1| |#2| |#3|)))
+                     |Category|))
+        (|Lambda|
+            (|Comma| (|Declare| |#1| |GcdDomain|)
+                     (|Declare| |#2| |OrderedAbelianMonoidSup|)
+                     (|Declare| |#3| |OrderedSet|)
+                     (|Declare| |#4|
+                         (|Apply| |RecursivePolynomialCategory| |#1|
+                                  |#2| |#3|)))
+            |Category|
+            (|Label| |SquareFreeNormalizedTriangularSetCategory|
+                     (|With| NIL
+                             (|Sequence|
+                                 (|Apply| |SquareFreeRegularTriangularSetCategory|
+                                          |#1| |#2| |#3| |#4|)
+                                 (|Apply| |NormalizedTriangularSetCategory|
+                                          |#1| |#2| |#3| |#4|)))))))
+\end{verbatim}
+That is the parsed source of the Aldor code \ldots
+\begin{verbatim}
+import from AxiomLib;
+import from Boolean;
+SquareFreeNormalizedTriangularSetCategory: (
+        R: GcdDomain,
+        E: OrderedAbelianMonoidSup,
+        V: OrderedSet,
+        P: RecursivePolynomialCategory(R, E, V)
+) -> Category == (
+        R: GcdDomain,
+        E: OrderedAbelianMonoidSup,
+        V: OrderedSet,
+        P: RecursivePolynomialCategory(R, E, V)
+): Category +-> with {
+        SquareFreeRegularTriangularSetCategory(R, E, V, P),
+        NormalizedTriangularSetCategory(R, E, V, P)
+}
+\end{verbatim}
+  Again, nothing appears in front of the \verb'with'. No problem
+  because that is equivalent to a \verb'Join' in Aldor.
+\section{Ordinary Categories with Default Packages}
+\label{sec:Category+Default}
+The category \verb'StringAggregate' with default package.
+\begin{verbatim}
+StringAggregate: Category == OneDimensionalArrayAggregate Character with
+    lowerCase       : % -> %
+    lowerCase_!: % -> %
+    upperCase       : % -> %
+    ...
+    rightTrim: (%, CharacterClass) -> %
+    elt: (%, %) -> %
+ add
+   trim(s: %, c:  Character)      == leftTrim(rightTrim(s, c),  c)
+   trim(s: %, cc: CharacterClass) == leftTrim(rightTrim(s, cc), cc)
+   lowerCase s           == lowerCase_! copy s
+   upperCase s           == upperCase_! copy s
+   prefix?(s, t)         == substring?(s, t, minIndex t)
+   coerce(c:Character):% == new(1, c)
+   elt(s:%, t:%): %      == concat(s,t)$%
+\end{verbatim}
+It is translated into \ldots
+\begin{verbatim}
+(|Sequence| (|Import| NIL |AxiomLib|) (|Import| NIL |Boolean|)
+    (|Foreign| (|Declare| |dummyDefault| |Exit|) |Lisp|)
+    (|Define| (|Declare| |StringAggregate| |Category|)
+        (|With| NIL
+                (|Sequence|
+                    (|Apply| |OneDimensionalArrayAggregate|
+                             |Character|)
+                    (|Declare| |lowerCase| (|Apply| -> (|Comma| %) %))
+                    (|Declare| |lowerCase!| (|Apply| -> (|Comma| %) %))
+                    (|Declare| |upperCase| (|Apply| -> (|Comma| %) %))
+                    ...
+                    (|Declare| |rightTrim|
+                        (|Apply| -> (|Comma| % |CharacterClass|) %))
+                    (|Declare| |apply| (|Apply| -> (|Comma| % %) %))
+                    (|Default|
+                        (|Sequence|
+                            (|Define|
+                                (|Declare| |coerce|
+                                    (|Apply| -> (|Comma| |Character|)
+                                     %))
+                                (|Lambda|
+                                    (|Comma|
+                                     (|Declare| |t#1| |Character|))
+                                    %
+                                    (|Label| |coerce| |dummyDefault|)))
+                            (|Define|
+                                (|Declare| |apply|
+                                    (|Apply| -> (|Comma| % %) %))
+                                (|Lambda|
+                                    (|Comma| (|Declare| |t#1| %)
+                                     (|Declare| |t#2| %))
+                                    % (|Label| |apply| |dummyDefault|)))
+                            (|Define|
+                                (|Declare| |lowerCase|
+                                    (|Apply| -> (|Comma| %) %))
+                                (|Lambda| (|Comma| (|Declare| |t#1| %))
+                                    %
+                                    (|Label| |lowerCase|
+                                     |dummyDefault|)))
+                            ...
+                            ))))))
+\end{verbatim}
+That is the parsed source of the Aldor code \ldots
+\begin{verbatim}
+import from AxiomLib;
+import from Boolean;
+import dummyDefault: Exit from Foreign Lisp;
+StringAggregate: Category == with {
+    OneDimensionalArrayAggregate Character;
+    lowerCase: % -> %;
+    lowerCase!: % -> %;
+    upperCase: % -> %;
+    ...
+    rightTrim: (%, CharacterClass) -> %;
+    apply: (%, %) -> %
+ default {
+   coerce: Character -> % == (t: Character): % +-> dummyDefault;
+   apply: (%, %) -> %     == (t1: %, t2: %): % +-> dummyDefault;
+   lowerCase: % -> %      == (t: %): %         +-> dummyDefault;
+   ...
+}
+\end{verbatim}
+It is important to note that the actual default functions are given by
+a dummy implementation that is imported from LISP.
+
+And again, nothing appears in front of the \verb'with'. No problem
+because that is equivalent to a \verb'Join' in Aldor.
+
+Note that the \verb'elt' function is translated into \verb'apply'.
+\section{Initial Domains without Arguments}
+\label{sec:InitDomain}
+\begin{verbatim}
+SingleInteger(): Join(IntegerNumberSystem,Logic,OpenMath) with
+   canonical
+   canonicalsClosed
+   noetherian
+   max      : () -> %
+   min      : () -> %
+   "not":   % -> %
+   "~"  :   % -> %
+   "/\": (%, %) -> %
+   "\/" : (%, %) -> %
+   "xor": (%, %) -> %
+   Not  : % -> %
+   And  : (%,%) -> %
+   Or   : (%,%) -> %
+ == add
+   ...
+\end{verbatim}
+It is translated into \ldots
+\begin{verbatim}
+(|Sequence| (|Import| NIL |AxiomLib|) (|Import| NIL |Boolean|)
+    (|Extend|
+        (|Define|
+            (|Declare| |SingleInteger|
+                (|With| NIL
+                        (|Sequence| |IntegerNumberSystem| |Logic|
+                            |OpenMath|
+                            (|RestrictTo| |canonical| |Category|)
+                            (|RestrictTo| |canonicalsClosed|
+                                |Category|)
+                            (|RestrictTo| |noetherian| |Category|)
+                            (|Declare| |max| (|Apply| -> (|Comma|) %))
+                            (|Declare| |min| (|Apply| -> (|Comma|) %))
+                            (|Declare| |not|
+                                (|Apply| -> (|Comma| %) %))
+                            (|Declare| ~ (|Apply| -> (|Comma| %) %))
+                            (|Declare| |/\\|
+                                (|Apply| -> (|Comma| % %) %))
+                            (|Declare| |\\/|
+                                (|Apply| -> (|Comma| % %) %))
+                            (|Declare| |xor|
+                                (|Apply| -> (|Comma| % %) %))
+                            (|Declare| |Not|
+                                (|Apply| -> (|Comma| %) %))
+                            (|Declare| |And|
+                                (|Apply| -> (|Comma| % %) %))
+                            (|Declare| |Or|
+                                (|Apply| -> (|Comma| % %) %)))))
+            (|Add| (|PretendTo| (|Add| NIL NIL)
+                       (|With| NIL
+                               (|Sequence| |IntegerNumberSystem|
+                                   |Logic| |OpenMath|
+                                   (|RestrictTo| |canonical|
+                                    |Category|)
+                                   (|RestrictTo| |canonicalsClosed|
+                                    |Category|)
+                                   (|RestrictTo| |noetherian|
+                                    |Category|)
+                                   (|Declare| |max|
+                                    (|Apply| -> (|Comma|) %))
+                                   (|Declare| |min|
+                                    (|Apply| -> (|Comma|) %))
+                                   (|Declare| |not|
+                                    (|Apply| -> (|Comma| %) %))
+                                   (|Declare| ~
+                                    (|Apply| -> (|Comma| %) %))
+                                   (|Declare| |/\\|
+                                    (|Apply| -> (|Comma| % %) %))
+                                   (|Declare| |\\/|
+                                    (|Apply| -> (|Comma| % %) %))
+                                   (|Declare| |xor|
+                                    (|Apply| -> (|Comma| % %) %))
+                                   (|Declare| |Not|
+                                    (|Apply| -> (|Comma| %) %))
+                                   (|Declare| |And|
+                                    (|Apply| -> (|Comma| % %) %))
+                                   (|Declare| |Or|
+                                    (|Apply| -> (|Comma| % %) %)))))
+                   NIL))))
+\end{verbatim}
+That is the parsed source of the Aldor code \ldots
+\begin{verbatim}
+import from AxiomLib;
+import from Boolean;
+extend SingleInteger: with {
+        IntegerNumberSystem;
+        Logic;
+        OpenMath;
+        canonical @ Category;
+        canonicalsClosed @ Category;
+        noetherian @ Category;
+        max: () -> %;
+        min: () -> %;
+        _not: % -> %;
+        ~:   % -> %;
+        /\:  (%, %) -> %;
+        \/:  (%, %) -> %;
+        xor: (%, %) -> %;
+        Not: % -> %;
+        And: (%,%) -> %;
+        Or : (%,%) -> %;
+}
+ == (add pretend with {
+        IntegerNumberSystem;
+        Logic;
+        OpenMath;
+        canonical @ Category;
+        canonicalsClosed @ Category;
+        noetherian @ Category;
+        max: () -> %;
+        min: () -> %;
+        _not: % -> %;
+        ~:   % -> %;
+        /\:  (%, %) -> %;
+        \/:  (%, %) -> %;
+        xor: (%, %) -> %;
+        Not: % -> %;
+        And: (%,%) -> %;
+        Or : (%,%) -> %;
+}) add;
+\end{verbatim}
+\section{Initial Domains with Arguments}
+\label{sec:ParametrizedInitDomain}
+\begin{verbatim}
+SegmentBinding(S:Type): Type with
+  equation: (Symbol, Segment S) -> %
+  variable: % -> Symbol
+  segment : % -> Segment S
+  if S has SetCategory then SetCategory
+ == add
+  Rep := Record(var:Symbol, seg:Segment S)
+  ...
+\end{verbatim}
+It is translated into \ldots
+\begin{verbatim}
+(|Sequence| (|Import| NIL |AxiomLib|) (|Import| NIL |Boolean|)
+    (|Sequence|
+        (|Define|
+            (|Declare| |SegmentBindingExtendCategory|
+                (|Apply| -> (|Declare| |#1| |Type|) |Category|))
+            (|Lambda| (|Comma| (|Declare| |#1| |Type|)) |Category|
+                (|Label| |SegmentBindingExtendCategory|
+                         (|With| NIL
+                                 (|Sequence|
+                                     (|Declare| |equation|
+                                      (|Apply| ->
+                                       (|Comma| |Symbol|
+                                        (|Apply| |Segment| |#1|))
+                                       %))
+                                     (|Declare| |variable|
+                                      (|Apply| -> (|Comma| %) |Symbol|))
+                                     (|Declare| |segment|
+                                      (|Apply| -> (|Comma| %)
+                                       (|Apply| |Segment| |#1|)))
+                                     (|If|
+                                      (|Test|
+                                       (|Has| |#1| |SetCategory|))
+                                      |SetCategory| NIL))))))
+        (|Extend|
+            (|Define|
+                (|Declare| |SegmentBinding|
+                    (|Apply| -> (|Declare| |#1| |Type|)
+                             (|Apply| |SegmentBindingExtendCategory|
+                                      |#1|)))
+                (|Lambda| (|Comma| (|Declare| |#1| |Type|))
+                    (|Apply| |SegmentBindingExtendCategory| |#1|)
+                    (|Label| |SegmentBinding|
+                             (|Add| (|PretendTo| (|Add| NIL NIL)
+                                     (|Apply|
+                                      |SegmentBindingExtendCategory|
+                                      |#1|))
+                                    NIL)))))))
+\end{verbatim}
+That is the parsed source of the Aldor code \ldots
+\begin{verbatim}
+import from AxiomLib;
+import from Boolean;
+SegmentBindingExtendCategory: (S: Type) -> Category ==
+  (T: Type): Category +-> with {
+  equation: (Symbol, Segment S) -> %;
+  variable: % -> Symbol;
+  segment : % -> Segment S;
+  if S has SetCategory then SetCategory;
+}
+extend SegmentBinding: (S: Type) -> SegmentBindingExtendCategory S ==
+  (S: Type): SegmentBindingExtendCategory S +->
+    (add pretend SegmentBindingExtendCategory S) add;
+\end{verbatim}
+The last lines are actually equivalent to
+\begin{verbatim}
+extend SegmentBinding(S: Type): SegmentBindingExtendCategory S ==
+    (add pretend SegmentBindingExtendCategory S) add;
+\end{verbatim}
+
+\section{axFormatPref}
 Here we add an else clause. The original code read:
 \begin{verbatim}
       if name = '$ then name := '%

\start
Date: Sat, 21 Jun 2008 16:54:06 -0400
From: Tim Daly
To: list
Subject: Re: [sage-devel] test suites, was: presentation about Maxima at Sage developer days

>> Are there any other major test suite collections available?
>
>At present Maxima includes a copy of Michael Wester's test suite
>which was the basis for his published review of computer algebra
>systems from about 10 years ago. We haven't done anything with it
>but I asked for and received permission from him to release it under
>terms of GPL and it is now in Maxima CVS.

Yes, I did a set of tests for Michael years ago for the review.
The Axiom version of those tests are in our test suite also.

I'm looking for test suites against "standard" sources (like Schaums,
Zwillinger, Kamke, etc) as well as other large collections of tests
(e.g. Bondarenko). Ideally ALL computer algebra systems should
test against the same published standard sets, a project I call "CATS"
(Computer Algebra Test Suite).

It only makes sense to have a fully vetted version of tests that
people can use against all the systems. These tests should have the
agreed-upon "correct" answers along with commentary about ranges,
branch cuts, etc. Ideally these CATS documents would also present the
algorithms in both mathematical terms and as software implementations.
(I would support Sage's calc rewrites IF they were doing it to present
the algorithms in some literate form for people to reference and
learn. Sadly competition, not science, seems to be the driving
motivation.)

If we can collect such test sets and show that each system generates
equivalent answers (a difficult problem given the zero equivalence
issue), then people can feel SOME confidence that 
  (a) they are getting reasonable answers
  (b) the systems are plug-equivalent

This IS supposed to be computational mathematics and the answers
are testable.

In fact, I believe that NIST should fund such an effort to support
both the quality of computational mathematics and the educational
aspects of showing the "best of breed" computational algorithms.

\start
Date: Sun, 22 Jun 2008 12:41:07 -0500
From: Tim Daly
To: list
Subject: 20080620.01.wxh.patch (fix directproduct multiply in Monoid)

The direct product D of two (or more) copies of a monoid R is not
implemented in Axiom. The scalar multiplication is implemented
coordinatewise, the identity element is defined, but the monoid
product between elements of D is not, and the domain is not declared
as a monoid. On the other hand, if R is a ring, then the direct
product is a ring. (Bug report 117). 

======================================================================
diff --git a/changelog b/changelog
index 47c791c..8d9986d 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20080620 src/input/Makefile test direct product multiply
+20080620 tpd src/input/directproduct.input test direct product multiply
+20080620 wxh src/algebra/vector.spad handle direct product multiply
 20080619 rhx src/interp/ax.boot document makeAxExportForm
 20080619 tpd books/bookvol8 systematically index chunks
 20080619 tpd readme add Anatoly Raportirenko
diff --git a/src/algebra/vector.spad.pamphlet b/src/algebra/vector.spad.pamphlet
index 9656917..88ed2ea 100644
--- a/src/algebra/vector.spad.pamphlet
+++ b/src/algebra/vector.spad.pamphlet
@@ -471,11 +471,12 @@ DirectProductCategory(dim:NonNegativeInteger, R:Type): Category ==
          if R has AbelianSemiGroup then AbelianSemiGroup
          if R has CancellationAbelianMonoid then CancellationAbelianMonoid
          if R has Monoid then
+            Monoid
            _* : (R, %) -> %
              ++ r * y multiplies the element r times each component of the
              ++ vector y.
            _* : (%, R) -> %
-             ++ y * r multiplies each component of the vector y by the element r.
+             ++ y*r multiplies each component of the vector y by the element r.
          if R has Finite then Finite
          if R has CommutativeRing then
            Algebra R
@@ -582,7 +583,7 @@ DirectProduct(dim:NonNegativeInteger, R:Type):
         1 == new(dim, 1)$Vector(R) pretend %
         u:% * r:R       == map(#1 * r, u)
         r:R * u:%       == map(r * #1, u)
- 
+        x:% * y:% == [x.i * y.i for i in 1..dim]$Vector(R) pretend %
  
       if R has CancellationAbelianMonoid then
         subtractIfCan(u:%, v:%):Union(%,"failed") ==
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet
index 9bd57b6..3fc5383 100644
--- a/src/input/Makefile.pamphlet
+++ b/src/input/Makefile.pamphlet
@@ -302,7 +302,8 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress alist.regress  \
     cycles1.regress   cycles.regress   cyfactor.regress \
     danzwill.regress  danzwill2.regress  \
     decimal.regress   defintef.regress defintrf.regress \
-    derham.regress    dfloat.regress   dhtri.regress    divisor.regress \
+    derham.regress    dfloat.regress   dhtri.regress directproduct.regress \
+    divisor.regress \
     dmp.regress       dpol.regress     e1.regress       ei.regress \
     easter.regress    efi.regress \
     eigen.regress     elemfun.regress  elemnum.regress  elfuts.regress \
@@ -547,7 +548,8 @@ FILES= ${OUT}/algaggr.input  ${OUT}/algbrbf.input    ${OUT}/algfacob.input \
        ${OUT}/decimal.input    ${OUT}/defs.input \
        ${OUT}/defintef.input ${OUT}/defintrf.input   ${OUT}/derham.input \
        ${OUT}/de2re.input \
-       ${OUT}/dfloat.input   ${OUT}/dhtri.input      ${OUT}/divisor.input \
+       ${OUT}/dfloat.input   ${OUT}/dhtri.input  ${OUT}/directproduct.input \
+       ${OUT}/divisor.input \
        ${OUT}/dmp.input      ${OUT}/dpol.input       ${OUT}/draw2dsf.input \
        ${OUT}/drawalg.input  ${OUT}/drawcfn.input \
        ${OUT}/drawcfun.input ${OUT}/drawcurv.input \
@@ -775,6 +777,7 @@ DOCFILES= \
   ${DOC}/defintef.input.dvi    ${DOC}/defintrf.input.dvi   \
   ${DOC}/defs.input.dvi        ${DOC}/derham.input.dvi     \
   ${DOC}/dfloat.input.dvi      ${DOC}/dhtri.input.dvi      \
+  ${DOC}/directproduct.input.dvi \
   ${DOC}/divisor.input.dvi     ${DOC}/dmp.input.dvi        \
   ${DOC}/dpol.input.dvi        \
   ${DOC}/draw2dsf.input.dvi    ${DOC}/drawalg.input.dvi    \
diff --git a/src/input/directproduct.input.pamphlet b/src/input/directproduct.input.pamphlet
new file mode 100644
index 0000000..cc99107
--- /dev/null
+++ b/src/input/directproduct.input.pamphlet
@@ -0,0 +1,130 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/input algaggr.input}
+\author{Timothy Daly}
+\maketitle
+\begin{abstract}
+Handle direct product of two copies of a monoid R.
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+The direct product D of two (or more) copies of a monoid R is not
+implemented in Axiom. The scalar multiplication is implemented
+coordinatewise, the identity element is defined, but the monoid
+product between elements of D is not, and the domain is not declared
+as a monoid. On the other hand, if R is a ring, then the direct
+product is a ring. (Bug report 117). This is fixed by patch
+20080620.01.wxh.patch.
+<<*>>=
+)spool directproduct.output
+)set message auto off
+)set message test on
+)clear all
+
+--S 1
+NNI has Monoid
+--R 
+--R
+--R   (1)  true
+--R                                                                Type: Boolean
+--E 1
+
+--S 2
+NNI2:=DirectProduct(2,NNI)
+--R 
+--R
+--R   (2)  DirectProduct(2,NonNegativeInteger)
+--R                                                                 Type: Domain
+--E 2
+
+--S 3
+NNI2 has Monoid
+--R 
+--R
+--R   (3)  true
+--R                                                                Type: Boolean
+--E 3
+
+--S 4
+a:NNI2:=directProduct([3,5])
+--R 
+--R
+--R   (4)  [3,5]
+--R                                    Type: DirectProduct(2,NonNegativeInteger)
+--E 4
+
+--S 5
+3*a
+--R 
+--R
+--R   (5)  [9,15]
+--R                                    Type: DirectProduct(2,NonNegativeInteger)
+--E 5
+
+--S 6
+b:NNI2:=1
+--R 
+--R
+--R   (6)  [1,1]
+--R                                    Type: DirectProduct(2,NonNegativeInteger)
+--E 6
+
+--S 7
+1*a
+--R 
+--R
+--R   (7)  [3,5]
+--R                                    Type: DirectProduct(2,NonNegativeInteger)
+--E 7
+
+--S 8
+b*a
+--R 
+--R
+--R   (8)  [3,5]
+--R                                    Type: DirectProduct(2,NonNegativeInteger)
+--E 8
+
+--S 9
+c:NNI2:=directProduct([1,1])
+--R 
+--R
+--R   (9)  [1,1]
+--R                                    Type: DirectProduct(2,NonNegativeInteger)
+--E 9
+
+--S 10
+c*a
+--R 
+--R
+--R   (10)  [3,5]
+--R                                    Type: DirectProduct(2,NonNegativeInteger)
+--E 10
+
+--S 11
+d:NNI2:=directProduct([1,2])
+--R 
+--R
+--R   (11)  [1,2]
+--R                                    Type: DirectProduct(2,NonNegativeInteger)
+--E 11
+
+--S 12
+d*a
+--R 
+--R
+--R   (12)  [3,10]
+--R                                    Type: DirectProduct(2,NonNegativeInteger)
+--E 12
+
+)spool 
+)lisp (bye)
+ 
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}

\start
Date: Sun, 22 Jun 2008 23:29:27 +0200
From: Ralf Hemmecke
To: Peter Broadbery
Subject: axlit.as and axextend.as

To whoever knows about the history of the aldor-axiom connection,

Important in the build of the aldor-axiom connection are the files 
axlit.as and axextend.as that can be found at

https://svn.origo.ethz.ch/algebraist/trunk/aldor/lib/libax0/

I roughly understand why they exist. What I don't understand is their 
actual contents. It seems clear to me that Literal and Generator have to 
be made available and that I should be able to use [...], i.e., the 
function "bracket" to construct lists. But what I don't understand is, 
for example, why

Bit	==> Boolean;
extend SingleInteger : with {
   ...
   =:  (%, %) -> Bit;
   <:  (%, %) -> Bit;
} == add {
   Rep ==> SInt;
   asBool(x) ==> x pretend Boolean;
   ...
   import {
     ...
     SIntEQ:        (SInt, SInt) -> Bool;
     SIntLT:        (SInt, SInt) -> Bool;
     ...
   } from Builtin;
   ...
   (a: %) =  (b: %): Bit == asBool(SIntEQ(rep a, rep b));
   (a: %) <  (b: %): Bit == asBool(SIntLT(rep a, rep b));
   ...
}

appears in axextend.as. Axiom's SingleInteger already exports 
IntegerNumberSystem, which clearly should also contain = and <.

It would be very helpful if sombody could explain the content of those 
two files (not only the example that I've given above. However, I 
appreciate any helpful comment. Please come forward.

Thank you

\start
Date: Mon, 23 Jun 2008 00:25:09 +0200 (CEST)
From: Waldek Hebisch
To: list
Subject: Re: 20080620.01.wxh.patch (fix directproduct multiply in Monoid)

Tim Daly wrote:

> +20080620 wxh src/algebra/vector.spad handle direct product multiply

AFAIK this patch is due to Bill Page.

\start
Date: Sun, 22 Jun 2008 20:03:24 -0400
From: Tim Daly
To: Waldek Hebisch
Subject: Re: 20080620.01.wxh.patch (fix directproduct multiply in Monoid)

Sorry. I thought the commit was by you. -- Tim

\start
Date: Sun, 22 Jun 2008 18:06:27 -0500
From: Tim Daly
To: list
Subject: 20080621.01.wxh.patch (default to close on failed read)

If reading the veiwport fails, we default to close.

Also, recredit the prior patch in the changelog
=====================================================================
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index 761a492..50acd0b 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -2929,6 +2929,7 @@ int main(void) {
 #ifdef DEBUG
         fprintf(stderr,"Reading child viewport...\n");
 #endif
+        viewCommand = viewportClosing; /* close if read failed  */
         readViewport(slot,&viewCommand,intSize);
         switch (viewCommand) {
         case pick2D:
diff --git a/changelog b/changelog
index 8d9986d..2c5cacc 100644
--- a/changelog
+++ b/changelog
@@ -1,6 +1,7 @@
-20080620 src/input/Makefile test direct product multiply
+20080621 wxh books/bookvol8 default to close if read fails
+20080620 tpd src/input/Makefile test direct product multiply
 20080620 tpd src/input/directproduct.input test direct product multiply
-20080620 wxh src/algebra/vector.spad handle direct product multiply
+20080620 wsp src/algebra/vector.spad handle direct product multiply
 20080619 rhx src/interp/ax.boot document makeAxExportForm
 20080619 tpd books/bookvol8 systematically index chunks
 20080619 tpd readme add Anatoly Raportirenko

\start
Date: Mon, 23 Jun 2008 08:20:04 +0100
From: Peter Broadbery
To: list
Subject: Re: [fricas-devel] axlit.as and axextend.as

On Sun, Jun 22, 2008 at 10:29 PM, Ralf Hemmecke wrote:
>
> To whoever knows about the history of the aldor-axiom connection,
>
> Important in the build of the aldor-axiom connection are the files
> axlit.as and axextend.as that can be found at
>
> https://svn.origo.ethz.ch/algebraist/trunk/aldor/lib/libax0/
>
> I roughly understand why they exist. What I don't understand is their
> actual contents. It seems clear to me that Literal and Generator have to
> be made available and that I should be able to use [...], i.e., the
> function "bracket" to construct lists. But what I don't understand is,
> for example, why
>
> Bit     ==> Boolean;
> extend SingleInteger : with {
>   ...
>   =:  (%, %) -> Bit;
>   <:  (%, %) -> Bit;
> } == add {
>   Rep ==> SInt;
>   asBool(x) ==> x pretend Boolean;
>   ...
>   import {
>     ...
>     SIntEQ:        (SInt, SInt) -> Bool;
>     SIntLT:        (SInt, SInt) -> Bool;
>     ...
>   } from Builtin;
>   ...
>   (a: %) =  (b: %): Bit == asBool(SIntEQ(rep a, rep b));
>   (a: %) <  (b: %): Bit == asBool(SIntLT(rep a, rep b));
>   ...
> }
>
> appears in axextend.as. Axiom's SingleInteger already exports
> IntegerNumberSystem, which clearly should also contain = and <.
>

Quick answer - inlining - the definitions enable aldor to inline the
functions when they are used.  If they were not available, the
generated code would have to call out to the axiom definitions.

\start
Date: Wed, 25 Jun 2008 00:08:53 -0500
From: Tim Daly
To: list
Subject: Literate Functional Testing (Google Talk)

The literate functional testing talk is at:
<http:video.google.com/videoplay?docid=1505469784301926538&q=Designing%20API&hl=en>

This talk uses the idea of customer "stories" from extreme programming
They develop tests that developers can read very quickly as well as
tests that can be shared with customers.  The tests provide a common
language to talk to customers.

The tests need to be:
  high level
  readable
  writable   -- developers should be able to write new tests.
  composable -- the tests should be reused in different contexts
  extensible -- should be able to extend the framework in customer domain

\start
Date: Thu, 26 Jun 2008 10:35:41 -0400
From: Bill Page
To: Alasdair McAndrew
Subject: Re: [Axiom-mail] gnuplot on axiom-wiki
Cc: David Cyganski

Alasdair,

On Wed, Jun 25, 2008 at 8:18 PM, you wrote:
> Actually, while axiom under windows still seems to be in a state of flux,
> it would be nice to have a plot-using-gnuplot interface as an alternative
> to axiom's graphics subsystem, which is not yet ported as a windows
> binary.
>

On several different Windows systems I have been running the binary
version of FriCAS compiled and packaged for Windows by Alfredo without
any serious problems. It only requires that you also install the
native Xming program in order to display hyperdoc and graphics. The
(minor) problems I have occur when I try to run this on a system which
is already otherwise occupied running other memory hungry applications
like Microsoft Virtual PC.  In that case I sometimes get a error when
starting Axiom due to already known issues with Windows memory
management. Reducing the number of running applications usually cures
the problem.

However, I do agree that having Axiom generate gnuplot graphics on
Windows would also be desirable. I think the code displayed at:

  http://axiom-wiki.newsynthesis.org/PlotMathAction

will work in the Windows environment. This code however, only
implements a small part of the overall graphics capabilities of Axiom
using gnuplot. Both Axiom graphics and gnuplot are able to do many
more exciting things. I would be very happy if other people were also
interested in extending the Axiom gnuplot interface to make more of
this available to the user.

Regards,
Bill Page.

> Alasdair
>
> On Thu, Jun 26, 2008 at 9:56 AM, Bill Page wrote:
>>
>> David,
>>
>> I have spent a little time polishing your work from last year on the
>> interface for gnuplot in mathaction. This page is based on you
>> original work but I have added new SPAD code to create gnuplot scripts
>> from Axiom graphics (draw) output. See:
>>
>> http://axiom-wiki.newsynthesis.org/PlotMathAction
>>
>> The main difference from what you were doing is that I have
>> incorporated gnuplottex into the wiki. This allows the LaTeX
>> post-processor to handle the presentation of the gnuplot graphics. I
>> would be very pleased if you had a few minutes to comment on this
>> approach and if time permits, to contribute a few more tests and/or
>> modifications to the code.
>>
>> Cc: Of course this also applies to all Axiom, FriCAS and OpenAxiom users!
>>
>> Cheers,
>> Bill Page.
>>
>>
>> _______________________________________________
>> Axiom-mail mailing list
>> Axiom-mail@nongnu.org
>> http://lists.nongnu.org/mailman/listinfo/axiom-mail
>
>
>
> --
> Blog: http://amca01.wordpress.com



