[comp.sources.bugs] MH 6.7 Updates - part 06/14

mh@beanie.ICS.UCI.EDU (John Romine) (04/14/90)

These are patches for MH 6.6 to bring it up to the current release MH
6.7.  If you can FTP, you should instead retrieve the current release
(from ics.uci.edu [128.195.1.1] in pub/mh).  See the announcement in
comp.mail.mh for all the details.  A document descibing the changes
from MH 6.6 can also be found in comp.mail.mh.

There are fourteen parts to these patches; you *must* have all the
parts to compile MH.  It will not work if you try to compile an
intermediate version.

Save this message, extract the file below and apply it with "patch -p"
from the top of your MH source tree:

	cd mh-6.6/
	patch -p < MH.6.6.n

If you have modified your source tree, you'll have to merge your local
changes in after you apply these patches to the original sources.

/JLR

: This is a shar archive.  Extract with sh, not csh.
: This archive ends with exit, so do not worry about trailing junk.
echo 'Extracting MH.6.6.5'
sed 's/^X//' > MH.6.6.5 << '+ END-OF-FILE MH.6.6.5'
XPrereq: patch.4
X*** Patchlevel.orig	Thu Apr 12 15:57:04 1990
X--- Patchlevel	Thu Apr 12 15:57:28 1990
X***************
X*** 1 ****
X! MH.6.6 patch.4
X--- 1 ----
X! MH.6.6 patch.5
X*** /dev/null	Thu Apr 12 15:37:43 1990
X--- ./papers/mh6.7/mh6.7.ms	Tue Apr 10 13:33:03 1990
X***************
X*** 0 ****
X--- 1,470 ----
X+ .\" @(#)$Id: mh6.7.ms,v 1.10 90/04/10 13:23:45 sources Exp $
X+ .\" Standard -ms macros
X+ .\" with the following changes
X+ .ds lq \\*Q
X+ .ds rq \\*U
X+ .DA "April 9, 1990"
X+ .if n \{\
X+ .nr PO 1i
X+ .po 1i
X+ .\}
X+ .EH ''Changes to MH 6.7'%'
X+ .OH ''Changes to MH 6.7'%'
X+ .TL
X+ Changes to
X+ .br
X+ The RAND MH Message Handling System:
X+ .br
X+ UCI version MH 6.7
X+ .AU
X+ John L. Romine
X+ .AI
X+ Computing Support Group
X+ Department of Information and Computer Science
X+ University of California, Irvine
X+ Irvine, CA  92717
X+ .AB
X+ .PP
X+ This document describes the user\-visible and internal changes to the
X+ UCI version of the RAND MH system from MH 6.6
X+ to MH 6.7.  The first part should be of interest to all users
X+ of MH, while the latter part is of interest only to MH
X+ Administrators.
X+ .PP
X+ This document is meant to supplement,
X+ not supersede,
X+ the standard MH User's manual and MH Administrator's manual.
X+ .PP
X+ Comments concerning this documentation should be addressed to the
X+ mailbox \fBBug\-MH@ICS.UCI.EDU\fP, or \fBucbvax!ucivax!bug-mh\fP.
X+ .AE
X+ .SH
X+ ACKNOWLEDGEMENTS
X+ .LP
X+ The \fIMH\fP system described herein is
X+ based on the original RAND \fIMH\fP system.
X+ It has been extensively developed (perhaps too much so) by Marshall T. Rose
X+ and John L. Romine at the University of California, Irvine.
X+ Einar A. Stefferud, Jerry N. Sweet,
X+ and Terry P. Domae provided numerous suggestions
X+ to improve the UCI version of \fIMH\fP.
X+ .PP
X+ Of course,
X+ a large number of people have helped \fIMH\fP along.
X+ The list of \*(lq\fIMH\fP immortals\*(rq is too long to list here.
X+ For this release, numerous \fIMH\-Workers\fP sent in fixes and other
X+ changes.  A handful of courageous \fIMH\-Workers\fP volunteered
X+ to beta\-test these changes; their help is particularly appreciated.
X+ .SH
X+ DISCLAIMER
X+ .LP
X+ The Regents of the University of California wish to make it known that:
X+ .QP
X+ Although each program has been tested by its contributor,
X+ no warranty, express or implied,
X+ is made by the contributor or the University of California,
X+ as to the accuracy and functioning of the program
X+ and related program material,
X+ nor shall the fact of distribution constitute any such warranty,
X+ and no responsibility is assumed by the contributor
X+ or the University of California in connection herewith.
X+ .KS
X+ .SH
X+ CONVENTIONS
X+ .LP
X+ In this document,
X+ certain formatting conventions are adhered to:
X+ .IP
X+ The names of
X+ \s-2UNIX\s+2
X+ commands, such as \fIcomp\fP
X+ are presented in \fIitalics\fP.
X+ .IP
X+ Arguments to programs, such as `msgs' and `\-nobell' are
X+ delimited by single\-quotes.
X+ .IP
X+ Text that should be typed exactly as\-is, such as
X+ command lines (e.g., \*(lqfolder \-pack\*(rq),
X+ are delimited by double\-quotes.
X+ .IP
X+ \s-2UNIX\s+2
X+ pathnames and envariables,
X+ such as \fB/usr/uci\fP and \fB$SIGNATURE\fP,
X+ are presented in \fBbold font\fP.
X+ .KE
X+ .SH
X+ GENERAL CHANGES
X+ .LP
X+ The author is pleased to announce that there are very few
X+ user\-visible
X+ changes to \fIMH\fP 6.7 from the previous \fIMH\fP 6.6 distribution.
X+ The majority of development was in the form of bug fixes and
X+ slight enhancements.
X+ In addition, this release is slightly faster than the
X+ previous release.
X+ With a few minor exceptions,
X+ it is backward\-compatible with the previous release.
X+ .PP
X+ The changes were made mainly to generalize the source code to
X+ be compatible with a larger range of systems and compilers.
X+ There were many small changes to add declarations for ANSI C compliance.
X+ The System 5 support has been brought up to SYS5 R3, and there is
X+ support for Sun OS 4.0.
X+ .SH
X+ User\-Visible Changes
X+ .LP
X+ Here a quick summary of the
X+ changes that were made which are not backward\-compatible with the
X+ previous release of \fIMH\fP:
X+ .IP repl \w'sortm'u+2n
X+ The `\-format' and `\-noformat' switches
X+ have not been functional since \fIMH\fP 5, and have been removed.
X+ Any users who have these switches in their \fB\&.mh\(ruprofile\fP,
X+ will have to remove them.
X+ .IP sortm
X+ Previously, in most cases \fIsortm\fP would fill\-in any
X+ gaps in the numbering of a folder,
X+ by renumbering the messages starting with `1'.
X+ This will no longer occur; for this behavior,
X+ use \*(lqfolder \-pack\*(rq.
X+ .PP
X+ .SH
X+ Using Aliases
X+ .LP
X+ A new profile entry `Aliasfile:' has been added.  The
X+ \fIali\fP\^, \fIsend\fP\^, and \fIwhom\fP programs will look for
X+ this profile entry and treat it as they would an argument to
X+ `\-alias'.
X+ This should make it easier for novice \fIMH\fP users to begin
X+ using aliases.
X+ .PP
X+ .SH
X+ Reading Network News & BBoards
X+ .LP
X+ The UCI BBoards facility can read local BBoards, and if compiled
X+ with the `bboards: pop' and `pop: on' options, can also read remote
X+ BBoards using the Post Office Protocol (POP ver. 3).
X+ With this release,
X+ \fIMH\fP can instead be compiled to read the Network News
X+ (i.e., USENET) using the Network News Transfer Protocol (NNTP).
X+ .PP
X+ This capability is enabled by compiling \fIMH\fP with
X+ the `bboards: nntp' and `pop: on' options.
X+ Unfortunately, reading remote BBoards via the POP and reading the Network
X+ News via the NNTP are mutually exclusive options.
X+ .PP
X+ To support the NNTP,
X+ a new module, \fBuip/pshsbr.c\fP, is compiled and loaded into
X+ \fIbbc\fP and \fImsh\fP instead of \fBuip/popsbr.c\fP.
X+ The default BBoard is changed from \*(lqsystem\*(rq to \*(lqgeneral\*(rq
X+ for the NNTP.
X+ .PP
X+ When reading BBoards,
X+ \fIbbc\fP will first look for local BBoards, and then contact the
X+ NNTP server to read the Network News.  The location of the
X+ NNTP server should be specified with the `nntphost:'
X+ entry in the \fBmtstailor\fP file
X+ (see the \fIMH\fP Administrator's Guide for details),
X+ or may be specified on
X+ the command line with the `\-host' switch.
X+ .PP
X+ .SH
X+ Format Strings
X+ .LP
X+ The manual page \fImh\-format\fP\0(5) has
X+ been rewritten to give a better explanation of how to write format strings,
X+ and how they are interpreted by \fIMH\fP.
X+ A line\-by\-line
X+ description of the
X+ default \fIrepl\fP form file (\fBreplcomps\fP)
X+ is now included in that manual page.
X+ .PP
X+ .KS
X+ Some new format functions were added, and others were augmented:
X+ .IP trim \w'date2local'u+2n
X+ Strips any leading and trailing white\-space from the current string value.
X+ .IP date2local
X+ Will coerce the date to the local timezone.
X+ .IP date2gmt
X+ Will coerce the date to GMT.
X+ .IP divide
X+ Divides the current numeric value by its argument.
X+ This could be useful for
X+ building \fIscan\fP format strings which print large
X+ message sizes in \*(lqKb\*(rq or \*(lqMb\*(rq.
X+ .IP friendly
X+ If the address field cannot be parsed,
X+ this function will return the text of the address header,
X+ instead of a null string.
X+ .IP szone
X+ A flag indicating whether the timezone was explicit
X+ in the date string.
X+ .KE
X+ .SH
X+ PROGRAM CHANGES
X+ .LP
X+ In addition to the general changes mentioned above,
X+ many programs have specific new features added,
X+ either by new switches or by expanded functionality.
X+ Each command's manual page gives complete information about
X+ its new options.  Here is a short summary.
X+ .SH
X+ User Interface Programs
X+ .IP anno \w'prompter'u+2n
X+ Accepts a `\-nodate' switch which inhibits the date annotation,
X+ leaving only the body annotation.
X+ .IP folder
X+ When invoked with the `\-pack' switch
X+ and the new `\-verbose' switch, \fIfolder\fP will
X+ give information about the actions taken to renumber the folder.
X+ .IP
X+ On most systems, \fIfolder\fP can now create any non\-existing
X+ parent folders of a new sub\-folder.
X+ .IP forw
X+ When making digests, \fIforw\fP\^
X+ will put the issue and volume numbers
X+ in addition to the digest list name, in the digest trailer.
X+ .IP inc
X+ Detects NFS write failures, and will
X+ not zero your maildrop in that event.
X+ .IP msh
X+ Supports a variant of the new \fIsortm\fP\^.
X+ .IP prompter
X+ Considers a period on a line by itself to signify end\-of\-file
X+ when the `\-doteof' switch is specified.
X+ .IP repl
X+ The `\-[no]format' switches
X+ have not been used since \fIMH\fP 5 and have been deleted. \fIrepl\fP
X+ will now find filter files in the \fIMH\fP library area.
X+ .IP scan
X+ With the `\-file msgbox' switch, \fIscan\fP\^
X+ can list a \fIpackf\fP\|'d\-format file directly
X+ (without using \fImsh\fP\^).
X+ .IP
X+ Lists messages in reverse order with the `\-reverse' switch.
X+ This should be considered a bug.
X+ .IP sortm
X+ Now has the options:
X+ `\-textfield field', `\-notextfield',
X+ `\-limit days', and `\-nolimit'.
X+ .IP
X+ With these options, \fIsortm\fP can be instructed to sort a
X+ folder based on the contents of an arbitrary header such
X+ as \*(lqsubject\*(rq.
X+ .IP
X+ \fIsortm\fP minimizes renaming messages, and
X+ will no longer arbitrarily pack folders; for this behavior,
X+ use \*(lqfolder \-pack\*(rq.
X+ .IP whatnow
X+ Deletes the draft by renaming it with leading comma, instead
X+ of unlinking it.
X+ .SH
X+ \fIMH\fP Support Programs
X+ .LP
X+ .KS
X+ The following support programs also have changes or enhancements:
X+ .IP mhl \w'rcvtty'u+2n
X+ Will now accept a format string on any component, not just on
X+ addresses and dates.
X+ .KE
X+ .IP popd
X+ Will use \fIshadow\fP passwords if compiled with the
X+ \fBSHADOW\fP option.  It can now also
X+ read UUCP\-style maildrops directly.
X+ .IP rcvtty
X+ If given no arguments, \fIrcvtty\fP will produce a \fBscan\fP
X+ listing as specified by a format string or file; a default
X+ format string is used if one is not specified.
X+ .IP
X+ Before the listing is written to the users terminal, the
X+ terminal's bell is rung and a newline is output.
X+ The `\-nobell' and the `\-nonewline' options
X+ inhibit these functions.
X+ .IP
X+ \fIrcvtty\fP will obey terminal write
X+ notification set by \fImesg\fP.
X+ With the `\-biff' switch, \fIrcvtty\fP will
X+ also obey the mail notification status set by
X+ \fIbiff\fP.
X+ .IP
X+ On \fBBSD43\fP systems, as with \fIwrite\fP,
X+ \fIrcvtty\fP will be installed set\-group\-id to the group \*(lqtty\*(rq.
X+ .IP slocal
X+ Understands UUCP\-style \*(lqFrom \*(rq lines and will write
X+ output files using this format if appropriate.
X+ Before invoking a delivery program, \fIslocal\fP will strip
X+ such lines unless compiled with the \fBRPATHS\fP option,
X+ in which case it will will convert such lines into
X+ \*(lqReturn\-Path:\*(rq headers.
X+ .IP
X+ \fIslocal\fP has a new result code \*(lqN\*(rq,
X+ for use in \fB.maildelivery\fP files.
X+ With this result code,
X+ \fIslocal\fP will
X+ perform the action only if the message has not been delivered
X+ and the previous action succeeded.  This allows for performing
X+ an action only if multiple conditions are true.
X+ .SH
X+ DOCUMENTATION
X+ .LP
X+ Several of the older \fIMH\fP papers have been difficult to format
X+ because they depended on an older version of
X+ PhDTeX which was
X+ not supplied.  These papers have been updated, and some TeX
X+ library files are supplied in \fBpapers/doclib/\fP, so that
X+ these papers may be generated on any system with TeX.
X+ .PP
X+ Many of the manual pages have been revised to include documentation
X+ of new command options, and some have been expanded to give more detail.
X+ All are now slightly reformatted at installation time
X+ to make them more compatible with programs like \fImakewhatis\fP\^.
X+ .PP
X+ .SH
X+ \fIMH\fP ADMINISTRATION
X+ .LP
X+ This section describes changes in configuring, compiling and
X+ installing \fIMH\fP 6.7 and should not
X+ be of interest to casual \fIMH\fP users.
X+ The \fBREAD\-ME\fP file has been
X+ considerably revised and expanded to give more detail
X+ about the configuration and compilation options which
X+ have been included in this release.  Some compilation options
X+ have been removed, and many new options have been added.
X+ .PP
X+ All \fIMH\fP \fBMakefile\fPs have been updated to work around some
X+ incompatibilities introduced in newer versions of \fImake\fP\^.
X+ \fIMH\fP programs will no longer be installed with the sticky\-bit
X+ turned on.
X+ .PP
X+ Reading this section not a substitute for carefully
X+ reading the \fBREAD\-ME\fP file before attempting to compile \fIMH\fP
X+ .PP
X+ .KS
X+ .SH
X+ Bug Fixes
X+ .LP
X+ Some bugs were fixed which in general were not user\-visible:
X+ .IP "address parser" \w'dynamicnmemory'u+2n
X+ Fixed to allow use of the \*(lqAT\*(rq domain, and some
X+ minor bugs were fixed pertaining to address groups.
X+ .IP "date parser"
X+ Improved to accept more forms of illegal dates.  Military
X+ timezones were removed.
X+ .IP "dynamic memory"
X+ Many problems with corruption of the dynamic memory pool
X+ have been fixed.
X+ .IP locking
X+ Will open files for write, if necessary to enable locking.
X+ .IP "nil pointers"
X+ All reported nil pointer problems have been fixed.
X+ .IP replcomps
X+ The \*(lqIn\-Reply\-To:\*(rq header had quotes added
X+ around the date field to comply with RFC822.
X+ .KE
X+ .SH
X+ White Pages
X+ .LP
X+ If \fIMH\fP is compiled with the \fBWP\fP option,
X+ \fIsend\fP recognizes an address between \*(lq<<\*(rq and \*(lq>>\*(rq characters
X+ such as:
X+ .DS
X+ To: << rose \-org psi >>
X+ .DE
X+ to be a name meaningful to a whitepages service.  In order to expand the
X+ name, \fIsend\fP must be invoked interactively
X+ (i.e., not from \fIpush\fP\^).  For each
X+ name, \fIsend\fP will invoke a command called \fIfred\fP\^
X+ in a special mode asking to expand the name.
X+ .PP
X+ To get a copy of the white pages service, contact wpp\-manager@psi.com.
X+ .SH
X+ Configuration Options
X+ .LP
X+ Some configuration options have been added or changed:
X+ .IP cc \w'bbdelivery'u+2n
X+ To specify an alternate C compiler.
X+ .IP ccoptions
X+ Defaults to `\-O'.
X+ .IP bboards
X+ May now be defined as \*(lqon\*(rq,
X+ \*(lqoff\*(rq, \*(lqpop\*(rq, or \*(lqnntp\*(rq.
X+ .IP bbdelivery
X+ Determines whether the bboard delivery agent
X+ and library files should be installed.
X+ .IP lex
X+ To specify an alternate version of \fIlex\fP\^.
X+ .IP mailgroup
X+ If defined, \fIinc\fP will be made set\-group\-id to this group.
X+ .IP sharedlib
X+ For \fBSUN40\fP systems; if \*(lqon\*(rq, makes \fBlibmh.a\fP
X+ into a shared library.
X+ .IP slibdir
X+ The directory where the above shared library should be installed.
X+ .IP sprintf
X+ Set this to \*(lqint\*(rq if that's what your \fIsprintf\fP\0(3) library
X+ routine returns.
X+ .SH
X+ Compilation Options
X+ .LP
X+ For different configurations,
X+ several `\-D' options to \fIcc\fP have been added or changed:
X+ .IP BERK \w'SENDMAILBUG'u+1n
X+ This disables the address and date parsing routines.  If you
X+ want to do much with \fImh\-format\fP\0(5), don't enable this.
X+ .IP BSD43
X+ Will make \fIrcvtty\fP set\-group\-id to the group \*(lqtty\*(rq.
X+ .IP DBM
X+ For sites with a dbm\-style password file (such as with Yellow
X+ Pages), \fIMH\fP will not read the entire passwd file into a cache.
X+ At one site that runs YP on a large passwd file, using this
X+ showed a 6:1 performance improvement.
X+ .IP NETWORK
X+ This option has been deleted.  See \fBSOCKETS\fP.
X+ .IP NOIOCTLH
X+ Tells \fIMH\fP not to include the file \fBsys/ioctl.h\fP.  Use this
X+ if this file is not present on your system.
X+ .IP NTOHLSWAP
X+ On systems with TCP/IP networking,
X+ \fImsh\fP will try to use the \fBntohl()\fP macro from the
X+ file \fBnetinet/in.h\fP to byte\-swap the binary map files
X+ it writes.
X+ .IP SENDMAILBUG
X+ Some versions of \fIsendmail\fP return a \fB451\fP (failure) reply code
X+ when they don't mean to indicate failure.  This option considers
X+ that code to be equivalent to \fB250\fP (OK).
X+ .IP SHADOW
X+ Causes \fIpopd\fP to read the file \fB/etc/shadow\fP for
X+ encrypted passwords instead of \fB/etc/passwd\fP.  Use this if you
X+ have a shadow password file (such as on newer versions of SYSTEM 5).
X+ .IP SOCKETS
X+ Enable this if you are on a non\-BSD system with a
X+ socket interface for TCP/IP networking compatible with 4.2BSD
X+ .SM
X+ UNIX.
X+ .NL
X+ .IP SUN40
X+ Use on Suns running Sun OS 4.0 and later.
X+ .IP SYS5
X+ This option has been updated to refer to SYS5 R3 and later systems.
X+ .IP SYS5DIR
X+ Use this if your system uses \*(lqstruct dirent\*(rq instead of
X+ \*(lqstruct direct\*(rq.  This should be true for systems based
X+ on SYS5 R3 and later.
X+ .IP TYPESIG
X+ Defines the base type for the \fIsignal\fP system call.  This
X+ defaults to \*(lqint\*(rq, but should be defined as \*(lqvoid\*(rq
X+ if appropriate for your system.
X+ .IP WP
X+ Enables support for the White Pages service.
X+ .SH
X+ Installation
X+ .LP
X+ \fIMH\fP will now
X+ explicitly set the protection mode on every file it installs.
X+ .PP
X+ Previously any existing file installed by \fIMH\fP
X+ would be backed up into
X+ the source tree, and then overwritten.
X+ Now, a few system\-dependent files will not be overwritten, and your
X+ changes will have to be merged in by hand.
X+ See the \fBREAD\-ME\fP file for more details.
X*** /dev/null	Thu Apr 12 15:37:43 1990
X--- ./papers/mh6.7/Makefile	Thu Apr  5 16:05:24 1990
X***************
X*** 0 ****
X--- 1,46 ----
X+ ##############################################################################
X+ # @(#)$Id: Makefile,v 1.3 90/04/05 15:18:49 sources Exp $
X+
X+ MAKE	=	make DESTDIR=$(DESTDIR) $(MFLAGS) -k
X+ SHELL	=	/bin/sh
X+
X+
X+ ##############################################################################
X+ #	Generation Rules
X+ ##############################################################################
X+
X+ .SUFFIXES:	.ms .cat .doc .imp
X+
X+ .ms.cat:;	itroff -t -ms $< > $@
X+
X+ .ms.doc:;	nroff -ms $< > $@
X+
X+ .cat.imp:;	catimp -i $@ $<
X+
X+
X+ ######################################################################
X+ #	Here it is...
X+ ######################################################################
X+
X+ TARGETS	=	mh6.7.cat
X+
X+ all:		mh6.7.cat
X+
X+
X+ doc:		mh6.7.doc
X+
X+ i-all:	all true
X+ 	lpr -t -J MH.6.7 mh6.7.cat
X+
X+ true:;
X+
X+ ##############################################################################
X+ #	Miscellaneous tasks
X+ ##############################################################################
X+
X+ distribution:   clean
X+
X+ unconfig clean:		unclean
X+ 		rm -f *.cat *.dvi *.imp *.doc
X+
X+ unclean:;	rm -f *.tmp _* :* core
X*** /dev/null	Thu Apr 12 15:37:43 1990
X--- ./papers/doclib/amstex.tex	Tue Mar  6 14:50:41 1990
X***************
X*** 0 ****
X--- 1,889 ----
X+ % AMS-TEX VERSION 0.999999 - FOR USE WITH TEX VERSION  1.0
X+ % COPYRIGHT (C) 1983 BY AMERICAN MATHEMATICAL SOCIETY
X+
X+
X+ % NOTE 1, NOTE 2, ... REFER TO NOTES IN THE FILE AMSTEX.DOC
X+
X+
X+ % SPECIAL CATCODES
X+
X+ \catcode`\@=13                                                         % NOTE 1
X+ \def@{\errmessage{AmS-TeX error: \string@ has no current use
X+      (use \string\@\space for printed \string@ symbol)}}
X+ \catcode`\@=11                                                         % NOTE 2
X+ \def\@{\char'100 }
X+ \catcode`\~=13                                                         % NOTE 3
X+
X+
X+ % AMSTEX ERROR MESSAGES
X+
X+ \def\err@AmS#1{\errmessage{AmS-TeX error: #1}}                         % NOTE 4
X+
X+
X+ % SOME BASIC CONTROL SEQUENCES USED IN OTHER DEFINITIONS
X+
X+ \def\eat@AmS#1{}
X+
X+ \long\def\comp@AmS#1#2{\def\@AmS{#1}\def\@@AmS{#2}\ifx
X+    \@AmS\@@AmS\def\cresult@AmS{T}\else\def\cresult@AmS{F}\fi}          % NOTE 5
X+
X+ \def\in@AmS#1#2{\def\intest@AmS##1#1##2{\comp@AmS##2\end@AmS\if T\cresult@AmS
X+    \def\cresult@AmS{F}\def\in@@AmS{}\else
X+    \def\cresult@AmS{T}\def\in@@AmS####1\end@AmS{}\fi\in@@AmS}%
X+    \def\cresult@AmS{F}\intest@AmS#2#1\end@AmS}                         % NOTE 6
X+
X+
X+ % BASIC MECHANICSMS TO ALLOW USER TO MAKE DEFINITIONS
X+
X+ \let\relax@AmS=\relax                                                  % NOTE 7
X+
X+ % CHANGES IN plain WHERE THERE IS \relax, THAT MUST NOW BE \relax@AmS
X+
X+ \def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi
X+      \relax@AmS}
X+
X+ \def\iterate{\body\let\next\iterate \else\let\next\relax@AmS\fi \next}
X+
X+ \def\enskip{\hskip.5em\relax@AmS}
X+
X+ \def\strut{\relax@AmS\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
X+
X+ \let\+=\relax@AmS
X+ \def\sett@b{\ifx\next\+\let\next\relax@AmS
X+     \def\next{\afterassignment\s@tt@b\let\next}%
X+   \else\let\next\s@tcols\fi\next}
X+ \def\s@tt@b{\let\next\relax@AmS\us@false\m@ketabbox}
X+
X+ \def\smash{\relax@AmS % \relax@AmS, in case this comes first in \halign
X+   \ifmmode\def\next{\mathpalette\mathsm@sh}\else\let\next\makesm@sh
X+   \fi\next}
X+
X+ % (END OF CHANGES TO plain)
X+
X+ \def\define#1{\expandafter\ifx\csname\expandafter\eat@AmS\string#1\endcsname
X+    \relax@AmS\def\dresult@AmS{\def#1}\else
X+    \err@AmS{\string#1\space is already defined}\def
X+       \dresult@AmS{\def\garbage@AmS}\fi\dresult@AmS}                   % NOTE 8
X+
X+ \let\redefine=\def
X+
X+ \def\predefine#1#2{\let#1=#2}
X+
X+
X+ % MACROS FOR DEFICIENT KEYBOARDS
X+
X+ \chardef\plus=`+
X+ \chardef\equal=`=
X+ \chardef\less=`<
X+ \chardef\more=`>
X+
X+
X+ % MACROS FOR HANDLING TEXT
X+
X+ \let\ic@AmS=\/
X+ \def\/{\unskip\ic@AmS}
X+
X+ \def\Space@AmS.{\futurelet\Space@AmS\relax@AmS}
X+ \Space@AmS. %                                             % NOTE 10 (no NOTE 9)
X+
X+ \def~{\unskip\futurelet\tok@AmS\s@AmS}
X+ \def\s@AmS{\ifx\tok@AmS\Space@AmS\def\next@AmS{}\else
X+         \def\next@AmS{\ }\fi\penalty 9999 \next@AmS}                  % NOTE 11
X+
X+ \def\period{\unskip.\spacefactor3000 { }}
X+
X+
X+ \def\srdr@AmS{\thinspace}                                             % NOTE 12
X+ \def\drsr@AmS{\kern .02778em }
X+ \def\sldl@AmS{\kern .02778em}
X+ \def\dlsl@AmS{\thinspace}
X+
X+ \def\lqtest@AmS#1{\comp@AmS{#1}`\if T\cresult@AmS\else\comp@AmS{#1}\lq\fi}
X+
X+                                                                       % NOTE 13
X+
X+ \def\qspace#1{\unskip
X+   \lqtest@AmS{#1}\let\fresult@AmS=\cresult@AmS\if T\cresult@AmS
X+      \def\qspace@AmS{\ifx\tok@AmS\Space@AmS\def\next@AmS{\dlsl@AmS`}\else
X+        \def\next@AmS{\qspace@@AmS}\fi\next@AmS}\else
X+      \def\qspace@AmS{\ifx\tok@AmS\Space@AmS\def\next@AmS{\drsr@AmS'}\else
X+        \def\next@AmS{\qspace@@AmS}\fi\next@AmS}\fi
X+     \futurelet\tok@AmS\qspace@AmS}                                    % NOTE 14
X+
X+ \def\qspace@@AmS{\futurelet\tok@AmS\qspace@@@AmS}
X+
X+ \def\qspace@@@AmS{\if T\fresult@AmS  \ifx\tok@AmS`\sldl@AmS`\else
X+        \ifx\tok@AmS\lq\sldl@AmS`\else \dlsl@AmS`\fi \fi
X+                          \else  \ifx\tok@AmS'\srdr@AmS'\else
X+         \ifx\tok@AmS\rq\srdr@AmS'\else \drsr@AmS'\fi \fi
X+         \fi}
X+
X+
X+
X+ \def\dash{\unskip\penalty0---}
X+ \def\slash{\unskip/\penalty\exhyphenpenalty}
X+
X+ \def\{{\relax@AmS\ifmmode\delimiter"4266308 \else
X+     $\delimiter"4266308 $\fi}                            % NOTE 16 (No NOTE 15)
X+
X+ \def\}{\relax@AmS\ifmmode\delimiter"5267309 \else$\delimiter"5267309 $\fi}
X+
X+
X+ \def\AmSTeX{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em
X+      $\cal S$-\TeX}
X+
X+ \def\smallvspace{\vskip\smallskipamount}                            % NOTE 17
X+ \def\medvspace{\vskip\medskipamount}
X+ \def\bigvspace{\vskip\bigskipamount}
X+
X+
X+ \def\linebreak{\unskip\penalty-10000 }                                % NOTE 18
X+ \def\pagebreak{\vadjust{\penalty-10000 }}
X+ \def\newpage{\par\vfill\eject}
X+
X+ \def\newline{\ifvmode \err@AmS{There's no line here to break}\else
X+      \hfil\penalty-10000\fi}
X+
X+ \def\topspace#1{\insert\topins{\penalty100 \splittopskip=0pt
X+      \vbox to #1{}}}
X+ \def\midspace#1{\setbox0=\vbox to #1{}\advance\dimen0 by \pagetotal
X+   \ifdim\dimen0>\pagegoal\topspace{#1}\else\vadjust{\box0}\fi}
X+
X+ \long\def\comment{\begingroup
X+  \catcode`\{=12 \catcode`\}=12 \catcode`\#= 12 \catcode`\^^M=12
X+    \catcode`\%=12 \catcode`^^A=14
X+     \comment@AmS}
X+ \begingroup\catcode`^^A=14
X+ \catcode`\^^M=12  ^^A
X+ \long\gdef\comment@AmS#1^^M#2{\comp@AmS\endcomment{#2}\if T\cresult@AmS^^A
X+ \def\comment@@AmS{\endgroup}\else^^A
X+  \long\def\comment@@AmS{\comment@AmS#2}\fi\comment@@AmS}\endgroup     % NOTE 19
X+
X+
X+ % STYLE, SPACING AND ALTERNATE NAMES
X+
X+ \let\dsize=\displaystyle
X+ \let\tsize=\textstyle
X+ \let\ssize=\scriptstyle
X+ \let\sssize=\scriptscriptstyle
X+
X+ \def\text#1{\hbox{\rm#1}}
X+
X+ \def\quad{\relax@AmS\ifmmode
X+     \hbox{\hskip1em}\else\hskip1em\relax@AmS\fi}                      % NOTE 20
X+ \def\qquad{\quad\quad}
X+ \def\,{\relax@AmS\ifmmode\mskip\thinmuskip\else$\mskip\thinmuskip$\fi}
X+ \def\;{\relax@AmS
X+   \ifmmode\mskip\thickmuskip\else$\mskip\thickmuskip$\fi}
X+
X+
X+ \def\stack#1#2{{#1\atop #2}}
X+
X+ \def\frac#1#2{{#1\over#2}}
X+ \def\Frac#1#2{{\displaystyle{#1\over#2}}}
X+
X+ \def\thickfrac#1#2{{#1\above1pt #2}}
X+
X+ \def\binom#1#2{{#1\choose #2}}
X+ \def\Binom#1#2{{\displaystyle{#1\choose #2}}}
X+
X+
X+ \mathchardef\:="603A                                                  % NOTE 21
X+
X+
X+ % BIG DELIMITERS
X+
X+ \def\big@AmS#1{{\hbox{$\left#1\vbox to\big@@AmS{}\right.\offspace@AmS$}}}
X+ \def\Big@AmS#1{{\hbox{$\left#1\vbox to\Big@@AmS{}\right.\offspace@AmS$}}}
X+ \def\bigg@AmS#1{{\hbox{$\left#1\vbox to\bigg@@AmS{}\right.\offspace@AmS$}}}
X+ \def\Bigg@AmS#1{{\hbox{$\left#1\vbox to\Bigg@@AmS{}\right.\offspace@AmS$}}}
X+ \def\offspace@AmS{\nulldelimiterspace0pt \mathsurround0pt }
X+
X+ \def\big@@AmS{8.5pt}                                % NOTE 24 (no NOTES 22, 23)
X+ \def\Big@@AmS{11.5pt}
X+ \def\bigg@@AmS{14.5pt}
X+ \def\Bigg@@AmS{17.5pt}
X+
X+ \def\bigl{\mathopen\big@AmS}
X+ \def\bigm{\mathrel\big@AmS}
X+ \def\bigr{\mathclose\big@AmS}
X+ \def\Bigl{\mathopen\Big@AmS}
X+ \def\Bigm{\mathrel\Big@AmS}
X+ \def\Bigr{\mathclose\Big@AmS}
X+ \def\biggl{\mathopen\bigg@AmS}
X+ \def\biggm{\mathrel\bigg@AMS}
X+ \def\biggr{\mathclose\bigg@AmS}
X+ \def\Biggl{\mathopen\Bigg@AmS}
X+ \def\Biggm{\mathrel\Bigg@AmS}
X+ \def\Biggr{\mathclose\Bigg@AmS}
X+
X+
X+ %  MAKING ' WORK FOR PRIMES
X+
X+ {\catcode`'=13 \gdef'{^\bgroup\prime\prime@AmS}}
X+ \def\prime@AmS{\futurelet\tok@AmS\prime@@AmS}
X+ \def\prime@@@AmS#1{\futurelet\tok@AmS\prime@@AmS}
X+ \def\prime@@AmS{\ifx\tok@AmS'\def\next@AmS{\prime\prime@@@AmS}\else
X+    \def\next@AmS{\egroup}\fi\next@AmS}
X+
X+
X+ %  SMASHES                                                            % NOTE 25
X+
X+ \def\topsmash{\relax@AmS\ifmmode\def\topsmash@AmS
X+    {\mathpalette\mathtopsmash@AmS}\else
X+     \let\topsmash@AmS=\maketopsmash@AmS\fi\topsmash@AmS}
X+
X+ \def\maketopsmash@AmS#1{\setbox0=\hbox{#1}\topsmash@@AmS}
X+
X+ \def\mathtopsmash@AmS#1#2{\setbox0=\hbox{$#1{#2}$}\topsmash@@AmS}
X+
X+ \def\topsmash@@AmS{\vbox to 0pt{\kern-\ht0\box0}}
X+
X+
X+ \def\botsmash{\relax@AmS\ifmmode\def\botsmash@AmS
X+    {\mathpalette\mathbotsmash@AmS}\else
X+      \let\botsmash@AmS=\makebotsmash@AmS\fi\botsmash@AmS}
X+
X+ \def\makebotsmash@AmS#1{\setbox0=\hbox{#1}\botsmash@@AmS}
X+
X+ \def\mathbotsmash@AmS#1#2{\setbox0=\hbox{$#1{#2}$}\botsmash@@AmS}
X+
X+ \def\botsmash@@AmS{\vbox to \ht0{\box0\vss}}
X+
X+
X+
X+ %  LARGE OPERATORS
X+
X+ \def\LimitsOnSums{\let\slimits@AmS=\displaylimits}                    % NOTE 26
X+ \def\NoLimitsOnSums{\let\slimits@AmS=\nolimits}
X+
X+ \LimitsOnSums
X+
X+ \mathchardef\coprod@AmS"1360       \def\coprod{\coprod@AmS\slimits@AmS}
X+ \mathchardef\bigvee@AmS"1357       \def\bigvee{\bigvee@AmS\slimits@AmS}
X+ \mathchardef\bigwedge@AmS"1356     \def\bigwedge{\bigwedge@AmS\slimits@AmS}
X+ \mathchardef\biguplus@AmS"1355     \def\biguplus{\biguplus@AmS\slimits@AmS}
X+ \mathchardef\bigcap@AmS"1354       \def\bigcap{\bigcap@AmS\slimits@AmS}
X+ \mathchardef\bigcup@AmS"1353       \def\bigcup{\bigcup@AmS\slimits@AmS}
X+ \mathchardef\prod@AmS"1351         \def\prod{\prod@AmS\slimits@AmS}
X+ \mathchardef\sum@AmS"1350          \def\sum{\sum@AmS\slimits@AmS}
X+ \mathchardef\bigotimes@AmS"134E    \def\bigotimes{\bigotimes@AmS\slimits@AmS}
X+ \mathchardef\bigoplus@AmS"134C     \def\bigoplus{\bigoplus@AmS\slimits@AmS}
X+ \mathchardef\bigodot@AmS"134A      \def\bigodot{\bigodot@AmS\slimits@AmS}
X+ \mathchardef\bigsqcup@AmS"1346     \def\bigsqcup{\bigsqcup@AmS\slimits@AmS}
X+
X+
X+ \def\LimitsOnInts{\let\ilimits@AmS=\displaylimits}
X+ \def\NoLimitsOnInts{\let\ilimits@AmS=\nolimits}
X+
X+ \NoLimitsOnInts
X+
X+ \mathchardef\int@AmS"1352
X+ \def\int{\gdef\intflag@AmS{T}\int@AmS\ilimits@AmS}                    % NOTE 27
X+
X+ \mathchardef\oint@AmS"1348 \def\oint{\gdef\intflag@AmS{T}\oint@AmS\ilimits@AmS}
X+
X+ \def\inttest@AmS#1{\def\intflag@AmS{F}\setbox0=\hbox{$#1$}}
X+
X+
X+ \def\intic@AmS{\mathchoice{\hbox{\hskip5pt}}{\hbox
X+           {\hskip4pt}}{\hbox{\hskip4pt}}{\hbox{\hskip4pt}}}           % NOTE 28
X+ \def\negintic@AmS{\mathchoice
X+   {\hbox{\hskip-5pt}}{\hbox{\hskip-4pt}}{\hbox{\hskip-4pt}}{\hbox{\hskip-4pt}}}
X+ \def\intkern@AmS{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}}
X+ \def\intdots@AmS{\mathchoice{\cdots}{{\cdotp}\mkern 1.5mu
X+     {\cdotp}\mkern 1.5mu{\cdotp}}{{\cdotp}\mkern 1mu{\cdotp}\mkern 1mu
X+       {\cdotp}}{{\cdotp}\mkern 1mu{\cdotp}\mkern 1mu{\cdotp}}}
X+
X+ \newcount\intno@AmS                                                   % NOTE 29
X+
X+ \def\intii{\gdef\intflag@AmS{T}\intno@AmS=2\futurelet                 % NOTE 30
X+               \tok@AmS\ints@AmS}
X+ \def\intiii{\gdef\intflag@AmS{T}\intno@AmS=3\futurelet\tok@AmS\ints@AmS}
X+ \def\intiv{\gdef\intflag@AmS{T}\intno@AmS=4\futurelet\tok@AmS\ints@AmS}
X+ \def\intdotsint{\gdef\intflag@AmS{T}\intno@AmS=0\futurelet
X+     \tok@AmS\ints@AmS}
X+
X+ \def\ints@AmS{\findlimits@AmS\ints@@AmS}
X+
X+ \def\findlimits@AmS{\def\ignoretoken@AmS{T}\ifx\tok@AmS\limits
X+    \def\limits@AmS{T}\else\ifx\tok@AmS\nolimits\def\limits@AmS{F}\else
X+      \def\ignoretoken@AmS{F}\ifx\ilimits@AmS\nolimits\def\limits@AmS{F}\else
X+        \def\limits@AmS{T}\fi\fi\fi}
X+
X+ \def\multintlimits@AmS{\int@AmS\ifnum \intno@AmS=0\intdots@AmS
X+   \else \intkern@AmS\fi
X+     \ifnum\intno@AmS>2\int@AmS\intkern@AmS\fi
X+      \ifnum\intno@AmS>3 \int@AmS\intkern@AmS\fi \int@AmS}
X+
X+ \def\multint@AmS{\int\ifnum \intno@AmS=0\intdots@AmS\else\intkern@AmS\fi
X+    \ifnum\intno@AmS>2\int\intkern@AmS\fi
X+     \ifnum\intno@AmS>3 \int\intkern@AmS\fi \int}
X+
X+ \def\ints@@AmS{\if F\ignoretoken@AmS\def\ints@@@AmS{\if
X+     T\limits@AmS\negintic@AmS
X+  \mathop{\intic@AmS\multintlimits@AmS}\limits\else
X+     \multint@AmS\nolimits\fi}\else\def\ints@@@AmS{\if T\limits@AmS
X+    \negintic@AmS\mathop{\intic@AmS\multintlimits@AmS}\limits\else
X+     \multint@AmS\nolimits\fi\eat@AmS}\fi\ints@@@AmS}
X+
X+
X+
X+ \def\LimitsOnNames{\let\nlimits@AmS=\displaylimits}
X+ \def\NoLimitsOnNames{\let\nlimits@AmS=\nolimits}
X+
X+ \LimitsOnNames
X+
X+ \def\operatorname#1{\mathop{\mathcode`'="7027 \mathcode`-="70
X+        \rm #1}\nolimits}                                              % NOTE 31
X+
X+ \def\operatornamewithlimits#1{\mathop{\mathcode`'="7027 \mathcode`-="702D
X+    \rm #1}\nlimits@AmS}
X+
X+ \def\operator#1{\mathop{#1}\nolimits}
X+ \def\operatorwithlimits#1{\mathop{#1}\displaylimits}
X+
X+ \def\limover{\mathop{\overline{\rm lim}}}
X+ \def\limunder{\mathop{\underline{\vrule height 0pt depth .2ex width 0pt
X+        \rm lim}}}
X+ \def\liminj{\setbox0=\hbox{\rm lim}\mathop{\rm lim}
X+ 		\limits_{\topsmash{\hbox to \wd0{\leftarrowfill}}}}
X+ \def\limproj{\setbox0=\hbox{\rm lim}\mathop{\rm lim}
X+ 		\limits_{\topsmash{\hbox to \wd0{\rightarrowfill}}}}
X+
X+
X+ % SUBSIDIARY CONSIDERATIONS FOR LARGE OPERATORS -- BUFFER AND SHAVE
X+
X+ \newdimen\buffer@AmS
X+ \buffer@AmS=\fontdimen13\tenex                                        % NOTE 32
X+ \newdimen\buffer
X+ \buffer=\buffer@AmS
X+
X+ \def\changebuffer#1{\fontdimen13 \tenex=#1 \buffer=\fontdimen13 \tenex}
X+ \def\resetbuffer{\fontdimen13 \tenex=\buffer@AmS \buffer=\buffer@AmS}
X+
X+ \def\shave#1{\mathop{\hbox{$\fontdimen13\tenex=0pt                    % NOTE 33
X+      \displaystyle{#1}$}}\fontdimen13\tenex=1\buffer}
X+
X+
X+ \def\topshave#1{\topsmash{#1}\vphantom{\shave{#1}}}
X+
X+ \def\botshave#1{\botsmash{#1}\vphantom{\shave{#1}}}
X+
X+
X+
X+ % ALIGNED UNITS
X+
X+ \def\Let@AmS{\relax@AmS\iffalse{\fi\let\\=\cr\iffalse}\fi}            % NOTE 34
X+
X+ \def\align{\def\vspace##1{\noalign{\vskip ##1}}                       % NOTE 35
X+   \,\vcenter\bgroup\Let@AmS\tabskip=0pt\openup3pt\mathsurround=0pt  % NOTE 35.1
X+   \halign\bgroup\strut
X+   \hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil\cr}        % NOTES 36, 37
X+
X+ \def\endalign{\strut\crcr\egroup\egroup}
X+
X+
X+ \def\bunch{\def\vspace##1{\noalign{\vskip ##1}}
X+   \,\vcenter\bgroup\Let@AmS\tabskip=0pt\openup3pt\mathsurround=0pt
X+      \halign\bgroup\strut\hfil$\displaystyle{##}$\hfil\cr}
X+
X+ \def\endbunch{\strut\crcr\egroup\egroup}
X+
X+ \def\matrix{\catcode`\^^I=4 \futurelet\tok@AmS\matrix@AmS}            % NOTE 38
X+
X+ \def\matrix@AmS{\relax@AmS\iffalse{\fi \ifnum`}=0\fi\ifx\tok@AmS\format
X+    \def\next@AmS{\expandafter\matrix@@AmS\eat@AmS}\else
X+    \def\next@AmS{\matrix@@@AmS}\fi\next@AmS}
X+
X+ \def\matrix@@@AmS{
X+  \ifnum`{=0\fi\iffalse}\fi\,\vcenter\bgroup\Let@AmS\tabskip=0pt
X+     \normalbaselines\halign\bgroup $\strut\hfil##\hfil$&&\quad$\strut
X+   \hfil##\hfil$\cr\strut\cr\noalign{\kern-\baselineskip}}             % NOTE 39
X+
X+ \def\matrix@@AmS#1\\{
X+    \def\premable@AmS{#1}\toks@{##}
X+  \def\c{$\copy\strutbox\hfil\the\toks@\hfil$}\def\r
X+    {$\copy\strutbox\hfil\the\toks@$}%
X+    \def\l{$\copy\strutbox\the\toks@\hfil$}%
X+ \setbox0=
X+ \hbox{\xdef\Preamble@AmS{\premable@AmS}}
X+  \def\vspace##1{\noalign{\vskip ##1}}\ifnum`{=0\fi\iffalse}\fi
X+ \,\vcenter\bgroup\Let@AmS
X+   \tabskip=0pt\normalbaselines\halign\bgroup\span\Preamble@AmS\cr
X+     \mathstrut\cr\noalign{\kern-\baselineskip}}
X+                                                                       % NOTE 40
X+
X+ \def\endmatrix{\crcr\mathstrut\cr\noalign{\kern-\baselineskip
X+    }\egroup\egroup\,\catcode`\^^I=10 }
X+
X+
X+
X+ \def\matrixp{\left(\matrix}
X+ \def\endmatrixp{\endmatrix\right)}
X+
X+ \def\matrixb{\left[\matrix}
X+ \def\endmatrixb{\endmatrix\right]}
X+
X+ \def\matrixv{\left|\matrix}
X+ \def\endmatrixv{\endmatrix\right|}
X+
X+ \def\matrixvv{\left\|\matrix}
X+ \def\endmatrixvv{\endmatrix\right\|}
X+
X+
X+ \def\spacedots#1for#2{\multispan#2\leaders\hbox{$\mkern#1mu.\mkern
X+     #1mu$}\hfill}
X+ \def\dotsfor#1{\spacedots 1.5 for #1}                                 % NOTE 41
X+
X+
X+ \def\enabletabs{\catcode`\^^I=4 \enabletabs@AmS}
X+ \def\enabletabs@AmS#1\disabletabs{#1\catcode`\^^I=10 }                % NOTE 42
X+
X+ \def\Enabletabs{\catcode`\^^I=4 }
X+ \def\Disabletabs{\catcode`\^^I=10 }
X+
X+
X+ \def\smallmatrix{\futurelet\tok@AmS\smallmatrix@AmS}                  % NOTE 43
X+
X+ \def\smallmatrix@AmS{\relax@AmS\iffalse{\fi \ifnum`}=0\fi\ifx\tok@AmS\format
X+    \def\next@AmS{\expandafter\smallmatrix@@AmS\eat@AmS}\else
X+    \def\next@AmS{\smallmatrix@@@AmS}\fi\next@AmS}
X+
X+ \def\smallmatrix@@@AmS{
X+  \ifnum`{=0\fi\iffalse}\fi\,\vcenter\bgroup\Let@AmS\tabskip=0pt
X+     \baselineskip8pt\lineskip1pt\lineskiplimit1pt
X+   \halign\bgroup $\strut\hfil##\hfil$&&\;$\strut
X+   \hfil##\hfil$\cr\strut\cr\noalign{\kern-\baselineskip}}
X+
X+ \def\smallmatrix@@AmS#1\\{
X+    \def\premable@AmS{#1}\toks@{##}
X+  \def\c{$\copy\strutbox\hfil\the\toks@\hfil$}\def\r
X+    {$\copy\strutbox\hfil\the\toks@$}%
X+    \def\l{$\copy\strutbox\the\toks@\hfil$}%
X+ \hbox{\xdef\Preamble@AmS{\premable@AmS}}
X+  \def\vspace##1{\noalign{\vskip ##1}}\ifnum`{=0\fi\iffalse}\fi
X+ \,\vcenter\bgroup\Let@AmS
X+      \tabskip=0pt\baselineskip8pt\lineskip1pt\lineskiplimit1pt
X+ \halign\bgroup\span\Preamble@AmS\cr
X+     \mathstrut\cr\noalign{\kern-\baselineskip}}
X+
X+ \def\endsmallmatrix{\crcr\mathstrut\cr\noalign{\kern-\baselineskip}
X+    \egroup\egroup\,}
X+
X+
X+ \def\cases{\left\{ \,\vcenter\bgroup\Let@AmS\normalbaselines\tabskip=0pt
X+    \halign\bgroup$##\hfil$&\qquad$##\hfil$\cr}                        % NOTE 44
X+
X+ \def\endcases{\crcr\egroup\egroup\right.}
X+
X+
X+ % TAGGING
X+
X+ \def\TagsOnLeft{\def\tagposition@AmS{L}}
X+ \def\TagsOnRight{\def\tagposition@AmS{R}}
X+ \def\TagsAsMath{\def\tagstyle@AmS{M}}
X+ \def\TagsAsText{\def\tagstyle@AmS{T}}
X+
X+ \TagsOnLeft
X+ \TagsAsText
X+
X+ \def\tag#1$${\if L\tagposition@AmS
X+     \leqno\else\eqno\fi\def\atag@AmS{T}\maketag@AmS#1\tagend@AmS$$}   % NOTE 45
X+
X+ \def\maketag@AmS{\futurelet\tok@AmS\maketag@@AmS}                     % NOTE 46
X+ \def\maketag@@AmS{\ifx\tok@AmS[\def\next@AmS{\maketag@@@AmS}\else
X+       \def\next@AmS{\maketag@@@@AmS}\fi\next@AmS}
X+ \def\maketag@@@AmS[#1]#2\tagend@AmS{\if F\atag@AmS\else             % NOTE 46.1
X+    \if M\tagstyle@AmS\hbox{$#1$}\else\hbox{#1}\fi\fi
X+        \gdef\atag@AmS{F}}
X+ \def\maketag@@@@AmS#1\tagend@AmS{\if F\atag@AmS \else
X+         \if T\autotag@AmS \setbox0=\hbox
X+     {\if M\tagstyle@AmS\tagform@AmS{$#1$}\else\tagform@AmS{#1}\fi}
X+                         \ifdim\wd0=0pt \tagform@AmS{*}\else
X+             \if M\tagstyle@AmS\tagform@AmS{$#1$}\else\tagform@AmS{#1}\fi
X+                      \fi\else
X+                \if M\tagstyle@AmS\tagform@AmS{$#1$}\else\tagform@AmS{#1}\fi
X+                      \fi
X+                   \fi\gdef\atag@AmS{F}}
X+
X+ \def\tagform@AmS#1{\hbox{\rm(#1\unskip)}}
X+
X+ \def\AutoTag{\def\autotag@AmS{T}}
X+ \def\NoAutoTag{\def\autotag@AmS{F}}
X+
X+ \NoAutoTag
X+
X+
X+
X+
X+
X+ \def\inaligntag@AmS{F} \def\inbunchtag@AmS{F}                         % NOTE 47
X+
X+ \def\CenteredTagsOnBrokens{\def\centerbroken@AmS{T}}                  % NOTE 48
X+ \def\TopOrBottomTagsOnBrokens{\def\centerbroken@AmS{F}}
X+ \TopOrBottomTagsOnBrokens
X+
X+ \def\broken{\global\setbox0=\vbox\bgroup\Let@AmS\tabskip=0pt
X+  \if T\inaligntag@AmS\else
X+    \if T\inbunchtag@AmS\else\openup3pt\fi\fi\mathsurround=0pt
X+      \halign\bgroup\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfill
X+       \cr}
X+                                                                       % NOTE 49
X+ \def\endbroken{\strut\crcr\egroup\egroup
X+       \global\setbox7=\vbox{\unvbox0\setbox1=\lastbox
X+       \hbox{\unhbox1\unskip\setbox2=\lastbox
X+        \unskip\setbox3=\lastbox
X+          \global\setbox4=\copy3
X+           \box3\box2}}%                                               % NOTE 50
X+   \if L\tagposition@AmS
X+      \if T\inaligntag@AmS
X+            \if T\centerbroken@AmS\gdef\broken@AmS
X+                 {&\vcenter{\vbox{\moveleft\wd4\box7}}}%               % NOTE 51
X+            \else
X+             \gdef\broken@AmS{&\vbox{\moveleft\wd4\vtop{\unvbox7}}}%   % NOTE 52
X+            \fi
X+      \else                                                            % NOTE 53
X+            \if T\centerbroken@AmS\gdef\broken@AmS
X+                 {\vcenter{\box7}}%
X+            \else
X+               \gdef\broken@AmS{\vtop{\unvbox7}}%
X+            \fi
X+      \fi
X+   \else                                                  % NOTE 55 (no note 54)
X+       \if T\inaligntag@AmS
X+            \if T\centerbroken@AmS
X+               \gdef\broken@AmS{&\vcenter{\vbox{\moveleft\wd4\box7}}}%
X+           \else
X+              \gdef\broken@AmS{&\vbox{\moveleft\wd4\box7}}%
X+           \fi
X+       \else
X+           \if T\centerbroken@AmS
X+             \gdef\broken@AmS{\vcenter{\box7}}%
X+           \else
X+              \gdef\broken@AmS{\box7}%
X+           \fi
X+       \fi
X+   \fi\broken@AmS}
X+
X+ \def\cbroken{\xdef\centerbroken@@AmS{\centerbroken@AmS}%
X+                        \def\centerbroken@AmS{T}\broken}               % NOTE 56
X+ \def\endcbroken{\endbroken\def\centerbroken@AmS{\centerbroken@@AmS}}
X+
X+
X+ \def\multline#1${\in@AmS\tag{#1}\if T\cresult@AmS
X+  \def\multline@AmS{\def\atag@AmS{T}\getmltag@AmS#1$}\else
X+    \def\multline@AmS{\def\atag@AmS{F}\setbox9=\hbox{}\multline@@AmS
X+     \multline@@@AmS#1$}\fi\multline@AmS}                              % NOTE 57
X+
X+ \def\getmltag@AmS#1\tag#2${\setbox9=\hbox{\maketag@AmS#2\tagend@AmS}%
X+            \multline@@AmS\multline@@@AmS#1$}
X+
X+ \def\multline@@AmS{\if L\tagposition@AmS
X+      \def\lwidth@AmS{\hskip\wd9}\def\rwidth@AmS{\hskip0pt}\else
X+       \def\lwidth@AmS{\hskip0pt}\def\rwidth@AmS{\hskip\wd9}\fi}      % NOTE 58
X+
X+ \def\multline@@@AmS{\def\vspace##1{\noalign{\vskip ##1}}%
X+  \def\shoveright##1{##1\hfilneg\rwidth@AmS\quad}                      % NOTE 59
X+   \def\shoveleft##1{\setbox                                           % NOTE 60
X+       0=\hbox{$\displaystyle{}##1$}%
X+      \setbox1=\hbox{$\displaystyle##1$}%
X+      \ifdim\wd0=\wd1
X+     \hfilneg\lwidth@AmS\quad##1\else
X+       \setbox2=\hbox{\hskip\wd0\hskip-\wd1}%
X+        \hfilneg\lwidth@AmS\quad\hskip-.5\wd2 ##1\fi}
X+      \vbox\bgroup\Let@AmS\openup3pt\halign\bgroup\hbox to \the\displaywidth
X+       {$\displaystyle\hfil{}##\hfil$}\cr\hfilneg\quad
X+       \if L\tagposition@AmS\hskip-1em\copy9\quad\else\fi}             % NOTE 61
X+
X+
X+ \def\endmultline{\if R\tagposition@AmS\quad\box9                 % NOTES 62, 63
X+    \hskip-1em\else\fi\quad\hfilneg\crcr\egroup\egroup}
X+
X+
X+
X+ \def\aligntag#1$${\def\inaligntag@AmS{T}\openup3pt\mathsurround=0pt   % NOTE 64
X+  \Let@AmS
X+    \def\tag{\gdef\atag@AmS{T}&}                                       % NOTE 65
X+    \def\vspace##1{\noalign{\vskip##1}}                                % NOTE 66
X+     \def\xtext##1{\noalign{\hbox{##1}}}                               % NOTE 67
X+    \def\break{\noalign{\penalty-10000 }}                              % NOTE 68
X+    \def\nobreak{\noalign{\penalty 10000 }}
X+    \def\allowbreak{\noalign{\penalty 0 }}
X+    \def\goodbreak{\noalign{\penalty -500 }}
X+     \gdef\atag@AmS{F}%
X+ \if L\tagposition@AmS\laligntag@AmS#1$$\else
X+    \raligntag@AmS#1$$\fi}
X+
X+ \def\raligntag@AmS#1$${\tabskip\centering
X+    \halign to \the\displaywidth
X+ {\hfil$\displaystyle{##}$\tabskip 0pt
X+     &$\displaystyle{{}##}$\hfil\tabskip\centering
X+    &\llap{\maketag@AmS##\tagend@AmS}\tabskip 0pt\cr\noalign{\vskip-
X+      \lineskiplimit}#1\crcr}$$}
X+
X+ \def\laligntag@AmS#1$${\tabskip\centering                             % NOTE 69
X+    \halign to \the\displaywidth
X+ {\hfil$\displaystyle{##}$\tabskip0pt
X+    &$\displaystyle{{}##}$\hfil\tabskip\centering
X+     &\kern-\displaywidth\rlap{\maketag@AmS##\tagend@AmS}\tabskip
X+     \the\displaywidth\cr\noalign{\vskip-\lineskiplimit}#1\crcr}$$}
X+
X+ \def\endaligntag{}
X+
X+ \def\bunchtag#1$${\def\inbunchtag@AmS{T}\openup3pt\mathsurround=0pt   % NOTE 70
X+     \Let@AmS
X+    \def\tag{\gdef\atag@AmS{T}&}
X+    \def\vspace##1{\noalign{\vskip##1}}
X+    \def\xtext##1{\noalign{\hbox{##1}}}
X+    \def\break{\noalign{\penalty-10000 }}
X+    \def\nobreak{\noalign{\penalty 10000 }}
X+    \def\allowbreak{\noalign{\penalty 0 }}
X+     \def\goodbreak{\noalign{\penalty -500 }}
X+   \if L\tagposition@AmS\lbunchtag@AmS#1$$\else
X+     \rbunchtag@AmS#1$$\fi}
X+
X+ \def\rbunchtag@AmS#1$${\tabskip\centering
X+     \halign to \displaywidth {$\hfil\displaystyle{##}\hfil$&
X+       \llap{\maketag@AmS##\tagend@AmS}\tabskip 0pt\cr\noalign{\vskip-
X+        \lineskiplimit}#1\crcr}$$}
X+
X+ \def\lbunchtag@AmS#1$${\tabskip\centering
X+    \halign to \displaywidth
X+ {$\hfil\displaystyle{##}\hfil$&\kern-
X+     \displaywidth\rlap{\maketag@AmS##\tagend@AmS}\tabskip\the\displaywidth\cr
X+     \noalign{\vskip-\lineskiplimit}#1\crcr}$$}
X+
X+ \def\endbunchtag{}
X+
X+
X+ %  MISCELLANEOUS
X+
X+ \def\hyphen{\mathchar"702D}                                           % NOTE 71
X+ \def\endash{\mathchar"707B}
X+ \def\emdash{\mathchar"707C}
X+ \def\rightquote{\mathchar"7027}
X+ \def\rightquoteii{\mathchar"7022}
X+ \def\leftquote{\mathchar"7060}
X+ \def\leftquoteii{\mathchar"705C}
X+
X+ \def\mod#1{\allowbreak\mkern18mu{\rm mod}\,\,#1}
X+
X+ % CONTINUED FRACTIONS
X+
X+ \def\numeratorleft#1{#1\hskip 0pt plus 1filll\relax@AmS}
X+ \def\numeratorright#1{\hskip 0pt plus 1filll\relax@AmS#1}
X+ \def\numeratorcenter#1{\hskip 0pt plus 1filll\relax@AmS
X+       #1\hskip 0pt plus 1filll\relax@AmS}
X+
X+ \def\cfrac@AmS#1,{\def\numerator@AmS{#1}\cfrac@@AmS*}                 % NOTE 72
X+
X+ \def\cfrac@@AmS#1;#2#3\cfend@AmS{\comp@AmS\cfmark@AmS{#2}\if T\cresult@AmS
X+  \gdef\cfrac@@@AmS
X+   {\expandafter\eat@AmS\numerator@AmS\strut\over\eat@AmS#1}\else
X+   \comp@AmS;{#2}\if T\cresult@AmS\gdef\cfrac@@@AmS
X+   {\expandafter\eat@AmS\numerator@AmS\strut\over\eat@AmS#1}\else
X+ \gdef\cfrac@@@AmS{\if R\cftype@AmS\hfill\else\fi
X+     \expandafter\eat@AmS\numerator@AmS\strut
X+     \if L\cftype@AmS\hfill\else\fi\over
X+        \eat@AmS#1\displaystyle {\cfrac@AmS*#2#3\cfend@AmS}}
X+      \fi\fi\cfrac@@@AmS}
X+
X+ \def\cfrac#1{\def\cftype@AmS{C}\cfrac@AmS*#1;\cfmark@AmS\cfend@AmS}
X+
X+ \def\cfracl#1{\def\cftype@AmS{L}\cfrac@AmS*#1;\cfmark@AmS\cfend@AmS}
X+
X+ \def\cfracr#1{\def\cftype@AmS{R}\cfrac@AmS*#1;\cfmark@AmS\cfend@AmS}
X+
X+ \def\adorn#1#2#3{\mathsurround=0pt\setbox0=\hbox{$\displaystyle{#2}#3$}%
X+    \setbox1=\hbox{$\displaystyle\vphantom{#2}#1{#2}$}%
X+     \setbox2=\hbox{\hskip\wd0\hskip-\wd1}%
X+     \hskip-\wd2\mathop{\hskip\wd2\vphantom{#2}#1{#2}#3}}
X+
X+ %  ARROWS                                                             % NOTE 73
X+
X+ \def\overrightarrow{\mathpalette\overrightarrow@AmS}
X+
X+ \def\overrightarrow@AmS#1#2{\vbox{\halign{$##$\cr
X+     #1{-}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+      \mkern-6mu{\to}\cr
X+      \noalign{\kern -1pt\nointerlineskip}
X+      \hfil#1#2\hfil\cr}}}
X+
X+ \let\overarrow=\overrightarrow
X+
X+ \def\overleftarrow{\mathpalette\overleftarrow@Ams}
X+
X+ \def\overleftarrow@Ams#1#2{\vbox{\halign{$##$\cr
X+      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+       \mkern-6mu{-}\cr
X+      \noalign{\kern -1pt\nointerlineskip}
X+      \hfil#1#2\hfil\cr}}}
X+
X+ \def\overleftrightarrow{\mathpalette\overleftrightarrow@AmS}
X+
X+ \def\overleftrightarrow@AmS#1#2{\vbox{\halign{$##$\cr
X+      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+        \mkern-6mu{\to}\cr
X+     \noalign{\kern -1pt\nointerlineskip}
X+       \hfil#1#2\hfil\cr}}}
X+
X+ \def\underrightarrow{\mathpalette\underrightarrow@AmS}
X+
X+ \def\underrightarrow@AmS#1#2{\vtop{\halign{$##$\cr
X+     \hfil#1#2\hfil\cr
X+      \noalign{\kern -1pt\nointerlineskip}
X+     #1{-}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+      \mkern-6mu{\to}\cr}}}
X+
X+ \let\underarrow=\underrightarrow
X+
X+ \def\underleftarrow{\mathpalette\underleftarrow@AmS}
X+
X+ \def\underleftarrow@AmS#1#2{\vtop{\halign{$##$\cr
X+      \hfil#1#2\hfil\cr
X+      \noalign{\kern -1pt\nointerlineskip}
X+      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+       \mkern-6mu{-}\cr}}}
X+
X+ \def\underleftrightarrow{\mathpalette\underleftrightarrow@AmS}
X+
X+ \def\underleftrightarrow@AmS#1#2{\vtop{\halign{$##$\cr
X+       \hfil#1#2\hfil\cr
X+     \noalign{\kern -1pt\nointerlineskip}
X+      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+        \mkern-6mu{\to}\cr}}}
X+
X+ % DOTS
X+
X+ \def\dotsc{\mathinner{\ldotp\ldotp\ldotp}}
X+ \def\dotsi{\mathinner{\cdotp\cdotp\cdotp}}
X+ \def\dotsj{\mathinner{\ldotp\ldotp\ldotp}}
X+ \def\dotsb{\mathinner{\cdotp\cdotp\cdotp}}
X+
X+ \def\binary@AmS#1{{\thinmuskip 0mu \medmuskip 1mu \thickmuskip 1mu    % NOTE 74
X+       \setbox0=\hbox{$#1{}{}{}{}{}{}{}{}{}$}\setbox1=\hbox
X+        {${}#1{}{}{}{}{}{}{}{}{}$}\ifdim\wd1>\wd0\gdef\binary@@AmS{T}\else
X+        \gdef\binary@@AmS{F}\fi}}
X+
X+ \def\dots{\relax@AmS\ifmmode\def\dots@AmS{\mdots@AmS}\else
X+     \def\dots@AmS{\tdots@AmS}\fi\dots@AmS}
X+
X+ \def\mdots@AmS{\futurelet\tok@AmS\mdots@@AmS}
X+
X+ \def\mdots@@AmS{\def\thedots@AmS{\dotsj}%
X+   \ifx\tok@AmS\bgroup\else
X+   \ifx\tok@AmS\egroup\else
X+   \ifx\tok@AmS$\else
X+   \iffalse{\fi  \ifx\tok@AmS\\ \iffalse}\fi\else                      % NOTE 75
X+   \iffalse{\fi \ifx\tok@AmS&  \iffalse}\fi\else
X+   \ifx\tok@AmS\left\else
X+   \ifx\tok@AmS\right\else
X+   \ifx\tok@AmS,\def\thedots@AmS{\dotsc}\else
X+   \inttest@AmS\tok@AmS\if T\intflag@AmS\def\thedots@AmS{\dotsi}\else
X+   \binary@AmS\tok@AmS\if T\binary@@AmS\def\thedots@AmS{\dotsb}\else
X+    \def\thedots@AmS{\dotsj}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\thedots@AmS}
X+
X+ \def\tdots@AmS{\unskip\ \tdots@@AmS}
X+
X+ \def\tdots@@AmS{\futurelet\tok@AmS\tdots@@@AmS}
X+
X+ \def\tdots@@@AmS{$\ldots\,
X+    \ifx\tok@AmS,$\else
X+    \ifx\tok@AmS.\,$\else
X+    \ifx\tok@AmS;\,$\else
X+    \ifx\tok@AmS:\,$\else
X+    \ifx\tok@AmS?\,$\else
X+    \ifx\tok@AmS!\,$\else
X+    $\ \fi\fi\fi\fi\fi\fi}
X+
X+
X+ % SET NOTATION
X+
X+ \def\lset{\{\,}
X+ \def\rset{\,\}}
X+
X+
X+ \def\leftset#1\mid#2\rightset{\hbox{$\displaystyle
X+ \left\{\,#1\vphantom{#1#2}\;\right|\;\left.
X+     #2\vphantom{#1#2}\,\right\}\offspace@AmS$}}
X+
X+
X+ % ACCENT SYMBOLS
X+
X+ \def\dotii#1{{\mathop{#1}\limits^{\vbox to -1.4pt{\kern-2pt
X+    \hbox{\tenrm..}\vss}}}}
X+ \def\dotiii#1{{\mathop{#1}\limits^{\vbox to -1.4pt{\kern-2pt
X+    \hbox{\tenrm...}\vss}}}}
X+ \def\dotiv#1{{\mathop{#1}\limits^{\vbox to -1.4pt{\kern-2pt
X+    \hbox{\tenrm....}\vss}}}}
X+
X+ \def\vecsymbol{\rightarrow}
X+ \def\barsymbol{-}
X+ \def\tildesymbol{\mathchar"0218 }
X+ \def\hatsymbol{{\mathchoice{\null}{\null}{\,\,\hbox{\lower 10pt\hbox
X+     {$\widehat{\null}$}}}{\,\hbox{\lower 20pt\hbox
X+        {$\hat{\null}$}}}}}
X+ \def\dotsymbol{{\nonscript\,.}}
X+ \def\dotiisymbol{{\nonscript\,\hbox{\tenrm..}}}
X+ \def\dotiiisymbol{{\nonscript\,\hbox{\tenrm...}}}
X+ \def\dotivsymbol{{\nonscript\,\hbox{\tenrm....}}}
X+ \def\dotsymbol{{\nonscript\,\hbox{\tenrm.}}}
X+
X+
X+
X+ % OVERSET AND OVERBRACE
X+
X+ \def\overset#1\to#2{{\mathop{#2}^{#1}}}
X+
X+ \def\underset#1\to#2{{\mathop{#2}_{#1}}}
X+
X+ \def\oversetbrace#1\to#2{{\overbrace{#2}^{#1}}}
X+ \def\undersetbrace#1\to#2{{\underbrace{#2}_{#1}}}
X+
X+
X+ % ROOTS
X+
X+ \def\uproot#1{\gdef\theuproot{#1 pt}}
X+ \def\theuproot{0 pt}
X+
X+ \def\therightroot{0mu}
X+ \def\rightroot#1{\gdef\therightroot{-#1mu}}
X+
X+
X+ \def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}%
X+   \dimen@\ht\z@ \advance\dimen@-\dp\z@ \advance\dimen@\theuproot
X+   \mskip5mu\raise.6\dimen@\copy\rootbox \mskip-10mu \mskip\therightroot
X+     \box\z@\gdef\theuproot{0 pt}\gdef\therightroot{0mu}}              % NOTE 76
X+
X+
X+ %  BOXED
X+
X+
X+ \def\boxed#1{\setbox0=\hbox{$\displaystyle{#1}$}\hbox{\lower.4pt\hbox{\lower
X+    3pt\hbox{\lower 1\dp0\hbox{\vbox{\hrule height .4pt \hbox{\vrule width
X+    .4pt \hskip 3pt\vbox{\vskip 3pt\box0\vskip3pt}\hskip 3pt \vrule width
X+       .4pt}\hrule height .4pt}}}}}}
X+
X+ %  FORMATTING MACROS COMMON TO ALL STYLES
X+
X+ \def\documentstyle#1{\input #1.sty}
X+
X+ \newif\ifretry@AmS
X+ \def\y@AmS{y } \def\y@@AmS{Y } \def\n@AmS{n } \def\n@@AmS{N }
X+ \def\ask@AmS{\message
X+   {Do you want output? (y or n, follow answer by return) }\loop
X+    \read-1 to\answer@AmS
X+   \ifx\answer@AmS\y@AmS\retry@AmSfalse\outputon
X+    \else\ifx\answer@AmS\y@@AmS\retry@AmSfalse\outputon
X+     \else\ifx\answer@AmS\n@AmS\retry@AmSfalse\outputoff
X+      \else\ifx\answer@AmS\n@@AmS\retry@AmSfalse\outputoff
X+       \else \retry@AmStrue\fi\fi\fi\fi
X+   \ifretry@AmS\message{Type y or n, follow answer by return: }\repeat}
X+
X+ \def\outputoff{\global\output{\setbox0=\box255 \deadcycles=0}}
X+
X+ \def\outputon{\global\output{\output@AmS}}
X+ \outputon
X+
X+ \catcode`\@=13
X*** ../mh-6.6.0/./papers/realwork/Makefile	Thu Oct 29 14:59:22 1987
X--- ./papers/realwork/Makefile	Tue Mar  6 14:49:46 1990
X***************
X*** 10,12 ****
X
X! .tex.dvi:;	sh -c 'if phdtex \\nonstopmode\\input $<\\bye; \
X  			  then exit 0; else rm $@; exit 1; fi'
X--- 10,13 ----
X
X! .tex.dvi:;	sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex82 \
X! 			\\nonstopmode\\input $<\\bye; \
X  			  then exit 0; else rm $@; exit 1; fi'
X*** ../mh-6.6.0/./papers/trusted/Makefile	Thu Oct 29 14:59:40 1987
X--- ./papers/trusted/Makefile	Tue Mar  6 14:49:47 1990
X***************
X*** 10,12 ****
X
X! .tex.dvi:;	sh -c 'if phdtex \\nonstopmode\\input $<\\bye; \
X  			  then exit 0; else rm $@; exit 1; fi'
X--- 10,13 ----
X
X! .tex.dvi:;	sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex82 \
X! 			\\nonstopmode\\input $<\\bye; \
X  			  then exit 0; else rm $@; exit 1; fi'
+ END-OF-FILE MH.6.6.5
chmod 'u=rw,g=r,o=r' 'MH.6.6.5'
echo '	-rw-r--r--  1 mh          51675 Apr 13 13:53 MH.6.6.5        (as sent)'
echo -n '	'
/bin/ls -l MH.6.6.5
exit 0