% This is the plain TeX format that's described in The TeXbook.% N.B.: A version number is defined at the very end of this file;%       please change that number whenever the file is modified!% And don't modify the file under any circumstances.\catcode`\{=1 % left brace is begin-group character\catcode`\}=2 % right brace is end-group character\catcode`\$=3 % dollar sign is math shift\catcode`\&=4 % ampersand is alignment tab\catcode`\#=6 % hash mark is macro parameter character\catcode`\^=7 \catcode`\^^K=7 % circumflex and uparrow are for superscripts\catcode`\_=8 \catcode`\^^A=8 % underline and downarrow are for subscripts\catcode`\^^I=10 % ascii tab is a blank space\chardef\active=13 \catcode`\~=\active % tilde is active\catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par"\message{Preloading the plain format: codes,}% We had to define the \catcodes right away, before the message line,% since \message uses the { and } characters.% When INITEX (the TeX initializer) starts up,% it has defined the following \catcode values:% \catcode`\^^@=9 % ascii null is ignored% \catcode`\^^M=5 % ascii return is end-line% \catcode`\\=0 % backslash is TeX escape character% \catcode`\%=14 % percent sign is comment character% \catcode`\ =10 % ascii space is blank space% \catcode`\^^?=15 % ascii delete is invalid% \catcode`\A=11 ... \catcode`\Z=11 % uppercase letters% \catcode`\a=11 ... \catcode`\z=11 % lowercase letters% all others are type 12 (other)% Here is a list of the characters that have been specially catcoded:\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}% (not counting ascii null, tab, linefeed, formfeed, return, delete)% Each symbol in the list is preceded by \do, which can be defined% if you want to do something to every item in the list.% We make @ signs act like letters, temporarily, to avoid conflict% between user names and internal control sequences of plain format.\catcode`@=11% INITEX sets up \mathcode x=x, for x=0..255, except that% \mathcode x=x+"7100, for x = `A to `Z and `a to `z;% \mathcode x=x+"7000, for x = `0 to `9.% The following changes define internal codes as recommended% in Appendix C of The TeXbook:\mathcode`\^^@="2201 % \cdot\mathcode`\^^A="3223 % \downarrow\mathcode`\^^B="010B % \alpha\mathcode`\^^C="010C % \beta\mathcode`\^^D="225E % \land\mathcode`\^^E="023A % \lnot\mathcode`\^^F="3232 % \in\mathcode`\^^G="0119 % \pi\mathcode`\^^H="0115 % \lambda\mathcode`\^^I="010D % \gamma\mathcode`\^^J="010E % \delta\mathcode`\^^K="3222 % \uparrow\mathcode`\^^L="2206 % \pm\mathcode`\^^M="2208 % \oplus\mathcode`\^^N="0231 % \infty\mathcode`\^^O="0140 % \partial\mathcode`\^^P="321A % \subset\mathcode`\^^Q="321B % \supset\mathcode`\^^R="225C % \cap\mathcode`\^^S="225B % \cup\mathcode`\^^T="0238 % \forall\mathcode`\^^U="0239 % \exists\mathcode`\^^V="220A % \otimes\mathcode`\^^W="3224 % \leftrightarrow\mathcode`\^^X="3220 % \leftarrow\mathcode`\^^Y="3221 % \rightarrow\mathcode`\^^Z="8000 % \ne\mathcode`\^^[="2205 % \diamond\mathcode`\^^\="3214 % \le\mathcode`\^^]="3215 % \ge\mathcode`\^^^="3211 % \equiv\mathcode`\^^_="225F % \lor\mathcode`\ ="8000 % \space\mathcode`\!="5021\mathcode`\'="8000 % ^\prime\mathcode`\(="4028\mathcode`\)="5029\mathcode`\*="2203 % \ast\mathcode`\+="202B\mathcode`\,="613B\mathcode`\-="2200\mathcode`\.="013A\mathcode`\/="013D\mathcode`\:="303A\mathcode`\;="603B\mathcode`\<="313C\mathcode`\=="303D\mathcode`\>="313E\mathcode`\?="503F\mathcode`\[="405B\mathcode`\\="026E % \backslash\mathcode`\]="505D\mathcode`\_="8000 % \_\mathcode`\{="4266\mathcode`\|="026A\mathcode`\}="5267\mathcode`\^^?="1273 % \smallint% INITEX sets \uccode`x=`X and \uccode `X=`X for all letters x,% and \lccode`x=`x, \lccode`X=`x; all other values are zero.% No changes to those tables are needed in plain TeX format.% INITEX sets \sfcode x=1000 for all x, except that \sfcode`X=999% for uppercase letters. The following changes are needed:\sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0% The \nonfrenchspacing macro will make further changes to \sfcode values.% Finally, INITEX sets all \delcode values to -1, except \delcode`.=0\delcode`\(="028300\delcode`\)="029301\delcode`\[="05B302\delcode`\]="05D303\delcode`\<="26830A\delcode`\>="26930B\delcode`\/="02F30E\delcode`\|="26A30C\delcode`\\="26E30F% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails!% To make the plain macros more efficient in time and space,% several constant values are declared here as control sequences.% If they were changed, anything could happen; so they are private symbols.\chardef\@ne=1\chardef\tw@=2\chardef\thr@@=3\chardef\sixt@@n=16\chardef\@cclv=255\mathchardef\@cclvi=256\mathchardef\@m=1000\mathchardef\@M=10000\mathchardef\@MM=20000% Allocation of registers% Here are macros for the automatic allocation of \count, \box, \dimen,% \skip, \muskip, and \toks registers, as well as \read and \write% stream numbers, \fam codes, \language codes, and \insert numbers.\message{registers,}% When a register is used only temporarily, it need not be allocated;% grouping can be used, making the value previously in the register return% after the close of the group.  The main use of these macros is for% registers that are defined by one macro and used by others, possibly at% different nesting levels.  All such registers should be defined through% these macros; otherwise conflicts may occur, especially when two or more% more macro packages are being used at once.% The following counters are reserved:%   0 to 9  page numbering%       10  count allocation%       11  dimen allocation%       12  skip allocation%       13  muskip allocation%       14  box allocation%       15  toks allocation%       16  read file allocation%       17  write file allocation%       18  math family allocation%       19  language allocation%       20  insert allocation%       21  the most recently allocated number%       22  constant -1% New counters are allocated starting with 23, 24, etc.  Other registers are% allocated starting with 10.  This leaves 0 through 9 for the user to play% with safely, except that counts 0 to 9 are considered to be the page and% subpage numbers (since they are displayed during output). In this scheme,% \count 10 always contains the number of the highest-numbered counter that% has been allocated, \count 14 the highest-numbered box, etc.% Inserts are given numbers 254, 253, etc., since they require a \count,% \dimen, \skip, and \box all with the same number; \count 20 contains the% lowest-numbered insert that has been allocated. Of course, \box255 is% reserved for \output; \count255, \dimen255, and \skip255 can be used freely.% It is recommended that macro designers always use% \global assignments with respect to registers numbered 1, 3, 5, 7, 9, and% always non-\global assignments with respect to registers 0, 2, 4, 6, 8, 255.% This will prevent ``save stack buildup'' that might otherwise occur.\count10=22 % allocates \count registers 23, 24, ...\count11=9 % allocates \dimen registers 10, 11, ...\count12=9 % allocates \skip registers 10, 11, ...\count13=9 % allocates \muskip registers 10, 11, ...\count14=9 % allocates \box registers 10, 11, ...\count15=9 % allocates \toks registers 10, 11, ...\count16=-1 % allocates input streams 0, 1, ...\count17=-1 % allocates output streams 0, 1, ...\count18=3 % allocates math families 4, 5, ...\count19=0 % allocates \language codes 1, 2, ...\count20=255 % allocates insertions 254, 253, ...\countdef\insc@unt=20 % the insertion counter\countdef\allocationnumber=21 % the most recent allocation\countdef\m@ne=22 \m@ne=-1 % a handy constant\def\wlog{\immediate\write\m@ne} % write on log file (only)% Here are abbreviations for the names of scratch registers% that don't need to be allocated.\countdef\count@=255\dimendef\dimen@=0\dimendef\dimen@i=1 % global only\dimendef\dimen@ii=2\skipdef\skip@=0\toksdef\toks@=0% Now, we define \newcount, \newbox, etc. so that you can say \newcount\foo% and \foo will be defined (with \countdef) to be the next counter.% To find out which counter \foo is, you can look at \allocationnumber.% Since there's no \boxdef command, \chardef is used to define a \newbox,% \newinsert, \newfam, and so on.\outer\def\newcount{\alloc@0\count\countdef\insc@unt}\outer\def\newdimen{\alloc@1\dimen\dimendef\insc@unt}\outer\def\newskip{\alloc@2\skip\skipdef\insc@unt}\outer\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi}\outer\def\newbox{\alloc@4\box\chardef\insc@unt}\let\newtoks=\relax % we do this to allow plain.tex to be read in twice\outer\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}}\outer\def\newtoks{\alloc@5\toks\toksdef\@cclvi}\outer\def\newread{\alloc@6\read\chardef\sixt@@n}\outer\def\newwrite{\alloc@7\write\chardef\sixt@@n}\outer\def\newfam{\alloc@8\fam\chardef\sixt@@n}\outer\def\newlanguage{\alloc@9\language\chardef\@cclvi}\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne  \ch@ck#1#4#2% make sure there's still room  \allocationnumber=\count1#1%  \global#3#5=\allocationnumber  \wlog{\string#5=\string#2\the\allocationnumber}}\outer\def\newinsert#1{\global\advance\insc@unt by\m@ne  \ch@ck0\insc@unt\count  \ch@ck1\insc@unt\dimen  \ch@ck2\insc@unt\skip  \ch@ck4\insc@unt\box  \allocationnumber=\insc@unt  \global\chardef#1=\allocationnumber  \wlog{\string#1=\string\insert\the\allocationnumber}}\def\ch@ck#1#2#3{\ifnum\count1#1<#2%  \else\errmessage{No room for a new #3}\fi}% Here are some examples of allocation.\newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal <dimen>\newskip\hideskip \hideskip=-1000pt plus 1fill % negative but can grow\newskip\centering \centering=0pt plus 1000pt minus 1000pt\newdimen\p@ \p@=1pt % this saves macro space and time\newdimen\z@ \z@=0pt % can be used both for 0pt and 0\newskip\z@skip \z@skip=0pt plus0pt minus0pt\newbox\voidb@x % permanently void box register% And here's a different sort of allocation:% For example, \newif\iffoo creates \footrue, \foofalse to go with \iffoo.\outer\def\newif#1{\count@\escapechar \escapechar\m@ne  \expandafter\expandafter\expandafter   \edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}%  \expandafter\expandafter\expandafter   \edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}%  \@if#1{false}\escapechar\count@} % the condition starts out false\def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname}{\uccode`1=`i \uccode`2=`f \uppercase{\gdef\if@12{}}} % `if' is required% Assign initial values to TeX's parameters\message{parameters,}% All of TeX's numeric parameters are listed here,% but the code is commented out if no special value needs to be set.% INITEX makes all parameters zero except where noted.\pretolerance=100\tolerance=200 % INITEX sets this to 10000\hbadness=1000\vbadness=1000\linepenalty=10\hyphenpenalty=50\exhyphenpenalty=50\binoppenalty=700\relpenalty=500\clubpenalty=150\widowpenalty=150\displaywidowpenalty=50\brokenpenalty=100\predisplaypenalty=10000% \postdisplaypenalty=0% \interlinepenalty=0% \floatingpenalty=0, set during \insert% \outputpenalty=0, set before TeX enters \output\doublehyphendemerits=10000\finalhyphendemerits=5000\adjdemerits=10000% \looseness=0, cleared by TeX after each paragraph% \pausing=0% \holdinginserts=0% \tracingonline=0% \tracingmacros=0% \tracingstats=0% \tracingparagraphs=0% \tracingpages=0% \tracingoutput=0\tracinglostchars=1% \tracingcommands=0% \tracingrestores=0% \language=0\uchyph=1% \lefthyphenmin=2 \righthyphenmin=3 set below% \globaldefs=0% \maxdeadcycles=25 % INITEX does this% \hangafter=1 % INITEX does this, also TeX after each paragraph% \fam=0% \mag=1000 % INITEX does this% \escapechar=`\\ % INITEX does this\defaulthyphenchar=`\-\defaultskewchar=-1% \endlinechar=`\^^M % INITEX does this\newlinechar=-1\delimiterfactor=901% \time=now % TeX does this at beginning of job% \day=now % TeX does this at beginning of job% \month=now % TeX does this at beginning of job% \year=now % TeX does this at beginning of job\showboxbreadth=5\showboxdepth=3\errorcontextlines=5\hfuzz=0.1pt\vfuzz=0.1pt\overfullrule=5pt\hsize=6.5in\vsize=8.9in\maxdepth=4pt\splitmaxdepth=\maxdimen\boxmaxdepth=\maxdimen% \lineskiplimit=0pt, changed by \normalbaselines\delimitershortfall=5pt\nulldelimiterspace=1.2pt\scriptspace=0.5pt% \mathsurround=0pt% \predisplaysize=0pt, set before TeX enters $$% \displaywidth=0pt, set before TeX enters $$% \displayindent=0pt, set before TeX enters $$\parindent=20pt% \hangindent=0pt, zeroed by TeX after each paragraph% \hoffset=0pt% \voffset=0pt% \baselineskip=0pt, changed by \normalbaselines% \lineskip=0pt, changed by \normalbaselines\parskip=0pt plus 1pt\abovedisplayskip=12pt plus 3pt minus 9pt\abovedisplayshortskip=0pt plus 3pt\belowdisplayskip=12pt plus 3pt minus 9pt\belowdisplayshortskip=7pt plus 3pt minus 4pt% \leftskip=0pt% \rightskip=0pt\topskip=10pt\splittopskip=10pt% \tabskip=0pt% \spaceskip=0pt% \xspaceskip=0pt\parfillskip=0pt plus 1fil\thinmuskip=3mu\medmuskip=4mu plus 2mu minus 4mu\thickmuskip=5mu plus 5mu% We also define special registers that function like parameters:\newskip\smallskipamount \smallskipamount=3pt plus 1pt minus 1pt\newskip\medskipamount \medskipamount=6pt plus 2pt minus 2pt\newskip\bigskipamount \bigskipamount=12pt plus 4pt minus 4pt\newskip\normalbaselineskip \normalbaselineskip=12pt\newskip\normallineskip \normallineskip=1pt\newdimen\normallineskiplimit \normallineskiplimit=0pt\newdimen\jot \jot=3pt\newcount\interdisplaylinepenalty \interdisplaylinepenalty=100\newcount\interfootnotelinepenalty \interfootnotelinepenalty=100% Definitions for preloaded fonts\def\magstephalf{1095 }\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi\relax}% Fonts assigned to \preloaded are not part of "plain TeX",% but they are preloaded so that other format packages can use them.% For example, if another set of macros says "\font\ninerm=cmr9",% TeX will not have to reload the font metric information for cmr9.\message{fonts,}\font\tenrm=cmr10 % roman text\font\preloaded=cmr9\font\preloaded=cmr8\font\sevenrm=cmr7\font\preloaded=cmr6\font\fiverm=cmr5\font\teni=cmmi10 % math italic\font\preloaded=cmmi9\font\preloaded=cmmi8\font\seveni=cmmi7\font\preloaded=cmmi6\font\fivei=cmmi5\font\tensy=cmsy10 % math symbols\font\preloaded=cmsy9\font\preloaded=cmsy8\font\sevensy=cmsy7\font\preloaded=cmsy6\font\fivesy=cmsy5\font\tenex=cmex10 % math extension\font\preloaded=cmss10 % sans serif\font\preloaded=cmssq8\font\preloaded=cmssi10 % sans serif italic\font\preloaded=cmssqi8\font\tenbf=cmbx10 % boldface extended\font\preloaded=cmbx9\font\preloaded=cmbx8\font\sevenbf=cmbx7\font\preloaded=cmbx6\font\fivebf=cmbx5\font\tentt=cmtt10 % typewriter\font\preloaded=cmtt9\font\preloaded=cmtt8\font\preloaded=cmsltt10 % slanted typewriter\font\tensl=cmsl10 % slanted roman\font\preloaded=cmsl9\font\preloaded=cmsl8\font\tenit=cmti10 % text italic\font\preloaded=cmti9\font\preloaded=cmti8\font\preloaded=cmti7\message{more fonts,}\font\preloaded=cmu10 % unslanted text italic\font\preloaded=cmmib10 % bold math italic\font\preloaded=cmbsy10 % bold math symbols\font\preloaded=cmcsc10 % caps and small caps\font\preloaded=cmssbx10 % sans serif bold extended\font\preloaded=cmdunh10 % Dunhill style\font\preloaded=cmr7 scaled \magstep4 % for titles\font\preloaded=cmtt10 scaled \magstep2\font\preloaded=cmssbx10 scaled \magstep2\font\preloaded=manfnt % METAFONT logo and dragon curve and special symbols% Additional \preloaded fonts can be specified here.% (And those that were \preloaded above can be eliminated.)\let\preloaded=\undefined % preloaded fonts must be declared anew later.\skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177\skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60\textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm\def\rm{\fam\z@\tenrm}\textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei\def\mit{\fam\@ne} \def\oldstyle{\fam\@ne\teni}\textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy\def\cal{\fam\tw@}\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex\newfam\itfam \def\it{\fam\itfam\tenit} % \it is family 4\textfont\itfam=\tenit\newfam\slfam \def\sl{\fam\slfam\tensl} % \sl is family 5\textfont\slfam=\tensl\newfam\bffam \def\bf{\fam\bffam\tenbf} % \bf is family 6\textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf\scriptscriptfont\bffam=\fivebf\newfam\ttfam \def\tt{\fam\ttfam\tentt} % \tt is family 7\textfont\ttfam=\tentt% Macros for setting ordinary text\message{macros,}\def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m  \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m}\def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000%  \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 }\def\normalbaselines{\lineskip\normallineskip  \baselineskip\normalbaselineskip \lineskiplimit\normallineskiplimit}\def\^^M{\ } % control <return> = control <space>\def\^^I{\ } % same for <tab>\def\lq{`} \def\rq{'}\def\lbrack{[} \def\rbrack{]}\let\endgraf=\par \let\endline=\cr\def\space{ }\def\empty{}\def\null{\hbox{}}\let\bgroup={ \let\egroup=}% In \obeylines, we say `\let^^M=\par' instead of `\def^^M{\par}'% since this allows, for example, `\let\par=\cr \obeylines \halign{...'{\catcode`\^^M=\active % these lines must end with %  \gdef\obeylines{\catcode`\^^M\active \let^^M\par}%  \global\let^^M\par} % this is in case ^^M appears in a \write\def\obeyspaces{\catcode`\ \active}{\obeyspaces\global\let =\space}\def\loop#1\repeat{\def\body{#1}\iterate}\def\iterate{\body \let\next\iterate \else\let\next\relax\fi \next}\let\repeat=\fi % this makes \loop...\if...\repeat skippable\def\thinspace{\kern .16667em }\def\negthinspace{\kern-.16667em }\def\enspace{\kern.5em }\def\enskip{\hskip.5em\relax}\def\quad{\hskip1em\relax}\def\qquad{\hskip2em\relax}\def\smallskip{\vskip\smallskipamount}\def\medskip{\vskip\medskipamount}\def\bigskip{\vskip\bigskipamount}\def\nointerlineskip{\prevdepth-1000\p@}\def\offinterlineskip{\baselineskip-1000\p@  \lineskip\z@ \lineskiplimit\maxdimen}\def\topglue{\nointerlineskip\vglue-\topskip\vglue} % for top of page\def\vglue{\afterassignment\vgl@\skip@=}\def\vgl@{\par \dimen@\prevdepth \hrule height\z@  \nobreak\vskip\skip@ \prevdepth\dimen@}\def\hglue{\afterassignment\hgl@\skip@=}\def\hgl@{\leavevmode \count@\spacefactor \vrule width\z@  \nobreak\hskip\skip@ \spacefactor\count@}\def~{\penalty\@M \ } % tie\def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-'\def\break{\penalty-\@M}\def\nobreak{\penalty \@M}\def\allowbreak{\penalty \z@}\def\filbreak{\par\vfil\penalty-200\vfilneg}\def\goodbreak{\par\penalty-500 }\def\eject{\par\break}\def\supereject{\par\penalty-\@MM}\def\removelastskip{\ifdim\lastskip=\z@\else\vskip-\lastskip\fi}\def\smallbreak{\par\ifdim\lastskip<\smallskipamount  \removelastskip\penalty-50\smallskip\fi}\def\medbreak{\par\ifdim\lastskip<\medskipamount  \removelastskip\penalty-100\medskip\fi}\def\bigbreak{\par\ifdim\lastskip<\bigskipamount  \removelastskip\penalty-200\bigskip\fi}\def\line{\hbox to\hsize}\def\leftline#1{\line{#1\hss}}\def\rightline#1{\line{\hss#1}}\def\centerline#1{\line{\hss#1\hss}}\def\rlap#1{\hbox to\z@{#1\hss}}\def\llap#1{\hbox to\z@{\hss#1}}\def\m@th{\mathsurround\z@}\def\underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@  \m@th \underline{\box\z@}$}\newbox\strutbox\setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}\def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}\def\hidewidth{\hskip\hideskip} % for alignment entries that can stick out\def\ialign{\everycr{}\tabskip\z@skip\halign} % initialized \halign\newcount\mscount\def\multispan#1{\omit \mscount#1\relax  \loop\ifnum\mscount>\@ne \sp@n\repeat}\def\sp@n{\span\omit\advance\mscount\m@ne}\newif\ifus@ \newif\if@cr\newbox\tabs \newbox\tabsyet \newbox\tabsdone\def\cleartabs{\global\setbox\tabsyet\null \setbox\tabs\null}\def\settabs{\setbox\tabs\null \futurelet\next\sett@b}\let\+=\relax % in case this file is being read in twice\def\sett@b{\ifx\next\+\def\nxt{\afterassignment\s@tt@b\let\nxt}%  \else\let\nxt\s@tcols\fi \let\next\relax \nxt}\def\s@tt@b{\let\nxt\relax \us@false\m@ketabbox}\def\tabalign{\us@true\m@ketabbox} % non-\outer version of \+\outer\def\+{\tabalign}\def\s@tcols#1\columns{\count@#1\dimen@\hsize  \loop\ifnum\count@>\z@ \@nother \repeat}\def\@nother{\dimen@ii\dimen@ \divide\dimen@ii\count@  \setbox\tabs\hbox{\hbox to\dimen@ii{}\unhbox\tabs}%  \advance\dimen@-\dimen@ii \advance\count@\m@ne}\def\m@ketabbox{\begingroup  \global\setbox\tabsyet\copy\tabs  \global\setbox\tabsdone\null  \def\cr{\@crtrue\crcr\egroup\egroup    \ifus@\unvbox\z@\lastbox\fi\endgroup    \setbox\tabs\hbox{\unhbox\tabsyet\unhbox\tabsdone}}%  \setbox\z@\vbox\bgroup\@crfalse    \ialign\bgroup&\t@bbox##\t@bb@x\crcr}\def\t@bbox{\setbox\z@\hbox\bgroup}\def\t@bb@x{\if@cr\egroup % now \box\z@ holds the column  \else\hss\egroup \global\setbox\tabsyet\hbox{\unhbox\tabsyet      \global\setbox\@ne\lastbox}% now \box\@ne holds its size    \ifvoid\@ne\global\setbox\@ne\hbox to\wd\z@{}%    \else\setbox\z@\hbox to\wd\@ne{\unhbox\z@}\fi    \global\setbox\tabsdone\hbox{\box\@ne\unhbox\tabsdone}\fi  \box\z@}\def\hang{\hangindent\parindent}\def\textindent#1{\indent\llap{#1\enspace}\ignorespaces}\def\item{\par\hang\textindent}\def\itemitem{\par\indent \hangindent2\parindent \textindent}\def\narrower{\advance\leftskip\parindent  \advance\rightskip\parindent}\outer\def\beginsection#1\par{\vskip\z@ plus.3\vsize\penalty-250  \vskip\z@ plus-.3\vsize\bigskip\vskip\parskip  \message{#1}\leftline{\bf#1}\nobreak\smallskip\noindent}\outer\def\proclaim #1. #2\par{\medbreak  \noindent{\bf#1.\enspace}{\sl#2\par}%  \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi}\def\raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}\def\ttraggedright{\tt\rightskip\z@ plus2em\relax} % for use with \tt only\chardef\%=`\%\chardef\&=`\&\chardef\#=`\#\chardef\$=`\$\chardef\ss="19\chardef\ae="1A\chardef\oe="1B\chardef\o="1C\chardef\AE="1D\chardef\OE="1E\chardef\O="1F\chardef\i="10 \chardef\j="11 % dotless letters\def\aa{\accent23a}\def\l{\char32l}\def\L{\leavevmode\setbox0\hbox{L}\hbox to\wd0{\hss\char32L}}\def\leavevmode{\unhbox\voidb@x} % begins a paragraph, if necessary\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}\def\AA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex%  \rlap{\raise.67\dimen@\hbox{\char'27}}A}\def\mathhexbox#1#2#3{\leavevmode  \hbox{$\m@th \mathchar"#1#2#3$}}\def\dag{\mathhexbox279}\def\ddag{\mathhexbox27A}\def\S{\mathhexbox278}\def\P{\mathhexbox27B}\def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex%  \ialign{##\crcr#1\crcr}}} \def\o@lign{\lineskiplimit\z@ \oalign}\def\ooalign{\lineskiplimit-\maxdimen \oalign} % chars over each other\def\sh@ft#1{\dimen\z@.00#1ex\multiply\dimen\z@\fontdimen1\font  \kern-.0156\dimen\z@} % compensate for slant in lowered accents\def\d#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}.\hidewidth}}}\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}%    \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}\def\c#1{\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent24 #1%  \else{\ooalign{\unhbox\z@\crcr\hidewidth\char24\hidewidth}}\fi}\def\copyright{{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\mathhexbox20D}}}\def\dots{\relax\ifmmode\ldots\else$\m@th\ldots\,$\fi}\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}\def\`#1{{\accent18 #1}}\def\'#1{{\accent19 #1}}\def\v#1{{\accent20 #1}} \let\^^_=\v\def\u#1{{\accent21 #1}} \let\^^S=\u\def\=#1{{\accent22 #1}}\def\^#1{{\accent94 #1}} \let\^^D=\^\def\.#1{{\accent95 #1}}\def\H#1{{\accent"7D #1}}\def\~#1{{\accent"7E #1}}\def\"#1{{\accent"7F #1}}\def\t#1{{\edef\next{\the\font}\the\textfont1\accent"7F\next#1}}\def\hrulefill{\leaders\hrule\hfill}\def\dotfill{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill}\def\rightarrowfill{$\m@th\smash-\mkern-7mu%  \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill  \mkern-7mu\mathord\rightarrow$}\def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu%  \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill  \mkern-7mu\smash-$}\mathchardef\braceld="37A \mathchardef\bracerd="37B\mathchardef\bracelu="37C \mathchardef\braceru="37D\def\downbracefill{$\m@th \setbox\z@\hbox{$\braceld$}%  \braceld\leaders\vrule height\ht\z@ depth\z@\hfill\braceru  \bracelu\leaders\vrule height\ht\z@ depth\z@\hfill\bracerd$}\def\upbracefill{$\m@th \setbox\z@\hbox{$\braceld$}%  \bracelu\leaders\vrule height\ht\z@ depth\z@\hfill\bracerd  \braceld\leaders\vrule height\ht\z@ depth\z@\hfill\braceru$}\outer\def\bye{\par\vfill\supereject\end}% Macros for math setting\message{math definitions,}\let\sp=^ \let\sb=_\def\,{\mskip\thinmuskip}\def\>{\mskip\medmuskip}\def\;{\mskip\thickmuskip}\def\!{\mskip-\thinmuskip}\def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}{\catcode`\'=\active \gdef'{^\bgroup\prim@s}}\def\prim@s{\prime\futurelet\next\pr@m@s}\def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t  \else\let\nxt\egroup\fi\fi \nxt}\def\pr@@@s#1{\prim@s} \def\pr@@@t#1#2{#2\egroup}{\catcode`\^^Z=\active \gdef^^Z{\not=}} % ^^Z is like \ne in math{\catcode`\_=\active \global\let_=\_} % _ in math is either subscript or \_\mathchardef\alpha="010B\mathchardef\beta="010C\mathchardef\gamma="010D\mathchardef\delta="010E\mathchardef\epsilon="010F\mathchardef\zeta="0110\mathchardef\eta="0111\mathchardef\theta="0112\mathchardef\iota="0113\mathchardef\kappa="0114\mathchardef\lambda="0115\mathchardef\mu="0116\mathchardef\nu="0117\mathchardef\xi="0118\mathchardef\pi="0119\mathchardef\rho="011A\mathchardef\sigma="011B\mathchardef\tau="011C\mathchardef\upsilon="011D\mathchardef\phi="011E\mathchardef\chi="011F\mathchardef\psi="0120\mathchardef\omega="0121\mathchardef\varepsilon="0122\mathchardef\vartheta="0123\mathchardef\varpi="0124\mathchardef\varrho="0125\mathchardef\varsigma="0126\mathchardef\varphi="0127\mathchardef\Gamma="7000\mathchardef\Delta="7001\mathchardef\Theta="7002\mathchardef\Lambda="7003\mathchardef\Xi="7004\mathchardef\Pi="7005\mathchardef\Sigma="7006\mathchardef\Upsilon="7007\mathchardef\Phi="7008\mathchardef\Psi="7009\mathchardef\Omega="700A\mathchardef\aleph="0240\def\hbar{{\mathchar'26\mkern-9muh}}\mathchardef\imath="017B\mathchardef\jmath="017C\mathchardef\ell="0160\mathchardef\wp="017D\mathchardef\Re="023C\mathchardef\Im="023D\mathchardef\partial="0140\mathchardef\infty="0231\mathchardef\prime="0230\mathchardef\emptyset="023B\mathchardef\nabla="0272\def\surd{{\mathchar"1270}}\mathchardef\top="023E\mathchardef\bot="023F\def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr      \not\mathrel{\mkern14mu}\crcr      \noalign{\nointerlineskip}      \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}}\mathchardef\triangle="0234\mathchardef\forall="0238\mathchardef\exists="0239\mathchardef\neg="023A \let\lnot=\neg\mathchardef\flat="015B\mathchardef\natural="015C\mathchardef\sharp="015D\mathchardef\clubsuit="027C\mathchardef\diamondsuit="027D\mathchardef\heartsuit="027E\mathchardef\spadesuit="027F\mathchardef\coprod="1360\mathchardef\bigvee="1357\mathchardef\bigwedge="1356\mathchardef\biguplus="1355\mathchardef\bigcap="1354\mathchardef\bigcup="1353\mathchardef\intop="1352 \def\int{\intop\nolimits}\mathchardef\prod="1351\mathchardef\sum="1350\mathchardef\bigotimes="134E\mathchardef\bigoplus="134C\mathchardef\bigodot="134A\mathchardef\ointop="1348 \def\oint{\ointop\nolimits}\mathchardef\bigsqcup="1346\mathchardef\smallint="1273\mathchardef\triangleleft="212F\mathchardef\triangleright="212E\mathchardef\bigtriangleup="2234\mathchardef\bigtriangledown="2235\mathchardef\wedge="225E \let\land=\wedge\mathchardef\vee="225F \let\lor=\vee\mathchardef\cap="225C\mathchardef\cup="225B\mathchardef\ddagger="227A\mathchardef\dagger="2279\mathchardef\sqcap="2275\mathchardef\sqcup="2274\mathchardef\uplus="225D\mathchardef\amalg="2271\mathchardef\diamond="2205\mathchardef\bullet="220F\mathchardef\wr="226F\mathchardef\div="2204\mathchardef\odot="220C\mathchardef\oslash="220B\mathchardef\otimes="220A\mathchardef\ominus="2209\mathchardef\oplus="2208\mathchardef\mp="2207\mathchardef\pm="2206\mathchardef\circ="220E\mathchardef\bigcirc="220D\mathchardef\setminus="226E % for set difference A\setminus B\mathchardef\cdot="2201\mathchardef\ast="2203\mathchardef\times="2202\mathchardef\star="213F\mathchardef\propto="322F\mathchardef\sqsubseteq="3276\mathchardef\sqsupseteq="3277\mathchardef\parallel="326B\mathchardef\mid="326A\mathchardef\dashv="3261\mathchardef\vdash="3260\mathchardef\nearrow="3225\mathchardef\searrow="3226\mathchardef\nwarrow="322D\mathchardef\swarrow="322E\mathchardef\Leftrightarrow="322C\mathchardef\Leftarrow="3228\mathchardef\Rightarrow="3229\def\neq{\not=} \let\ne=\neq\mathchardef\leq="3214 \let\le=\leq\mathchardef\geq="3215 \let\ge=\geq\mathchardef\succ="321F\mathchardef\prec="321E\mathchardef\approx="3219\mathchardef\succeq="3217\mathchardef\preceq="3216\mathchardef\supset="321B\mathchardef\subset="321A\mathchardef\supseteq="3213\mathchardef\subseteq="3212\mathchardef\in="3232\mathchardef\ni="3233 \let\owns=\ni\mathchardef\gg="321D\mathchardef\ll="321C\mathchardef\not="3236\mathchardef\leftrightarrow="3224\mathchardef\leftarrow="3220 \let\gets=\leftarrow\mathchardef\rightarrow="3221 \let\to=\rightarrow\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow}\mathchardef\sim="3218\mathchardef\simeq="3227\mathchardef\perp="323F\mathchardef\equiv="3211\mathchardef\asymp="3210\mathchardef\smile="315E\mathchardef\frown="315F\mathchardef\leftharpoonup="3128\mathchardef\leftharpoondown="3129\mathchardef\rightharpoonup="312A\mathchardef\rightharpoondown="312B\def\joinrel{\mathrel{\mkern-3mu}}\def\relbar{\mathrel{\smash-}} % \smash, because - has the same height as +\def\Relbar{\mathrel=}\mathchardef\lhook="312C \def\hookrightarrow{\lhook\joinrel\rightarrow}\mathchardef\rhook="312D \def\hookleftarrow{\leftarrow\joinrel\rhook}\def\bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft}\def\models{\mathrel|\joinrel=}\def\Longrightarrow{\Relbar\joinrel\Rightarrow}\def\longrightarrow{\relbar\joinrel\rightarrow}\def\longleftarrow{\leftarrow\joinrel\relbar}\def\Longleftarrow{\Leftarrow\joinrel\Relbar}\def\longmapsto{\mapstochar\longrightarrow}\def\longleftrightarrow{\leftarrow\joinrel\rightarrow}\def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow}\def\iff{\;\Longleftrightarrow\;}\mathchardef\ldotp="613A % ldot as a punctuation mark\mathchardef\cdotp="6201 % cdot as a punctuation mark\mathchardef\colon="603A % colon as a punctuation mark\def\ldots{\mathinner{\ldotp\ldotp\ldotp}}\def\cdots{\mathinner{\cdotp\cdotp\cdotp}}\def\vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@    \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}\def\ddots{\mathinner{\mkern1mu\raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern2mu    \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}}\def\acute{\mathaccent"7013 }\def\grave{\mathaccent"7012 }\def\ddot{\mathaccent"707F }\def\tilde{\mathaccent"707E }\def\bar{\mathaccent"7016 }\def\breve{\mathaccent"7015 }\def\check{\mathaccent"7014 }\def\hat{\mathaccent"705E }\def\vec{\mathaccent"017E }\def\dot{\mathaccent"705F }\def\widetilde{\mathaccent"0365 }\def\widehat{\mathaccent"0362 }\def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr      \rightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}      $\hfil\displaystyle{#1}\hfil$\crcr}}}\def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr      \leftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}      $\hfil\displaystyle{#1}\hfil$\crcr}}}\def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@}      \downbracefill\crcr\noalign{\kern3\p@\nointerlineskip}      $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr      $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip}      \upbracefill\crcr\noalign{\kern3\p@}}}}\limits}\def\skew#1#2#3{{\muskip\z@#1mu\divide\muskip\z@\tw@ \mkern\muskip\z@    #2{\mkern-\muskip\z@{#3}\mkern\muskip\z@}\mkern-\muskip\z@}{}}\def\lmoustache{\delimiter"437A340 } % top from (, bottom from )\def\rmoustache{\delimiter"537B341 } % top from ), bottom from (\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces\def\Vert{\delimiter"26B30D } \let\|=\Vert\def\vert{\delimiter"26A30C }\def\uparrow{\delimiter"3222378 }\def\downarrow{\delimiter"3223379 }\def\updownarrow{\delimiter"326C33F }\def\Uparrow{\delimiter"322A37E }\def\Downarrow{\delimiter"322B37F }\def\Updownarrow{\delimiter"326D377 }\def\backslash{\delimiter"26E30F } % for double coset G\backslash H\def\rangle{\delimiter"526930B }\def\langle{\delimiter"426830A }\def\rbrace{\delimiter"5267309 } \let\}=\rbrace\def\lbrace{\delimiter"4266308 } \let\{=\lbrace\def\rceil{\delimiter"5265307 }\def\lceil{\delimiter"4264306 }\def\rfloor{\delimiter"5263305 }\def\lfloor{\delimiter"4262304 }\def\bigl{\mathopen\big}\def\bigm{\mathrel\big}\def\bigr{\mathclose\big}\def\Bigl{\mathopen\Big}\def\Bigm{\mathrel\Big}\def\Bigr{\mathclose\Big}\def\biggl{\mathopen\bigg}\def\biggm{\mathrel\bigg}\def\biggr{\mathclose\bigg}\def\Biggl{\mathopen\Bigg}\def\Biggm{\mathrel\Bigg}\def\Biggr{\mathclose\Bigg}\def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}}\def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}}\def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}}\def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}\def\n@space{\nulldelimiterspace\z@ \m@th}\def\choose{\atopwithdelims()}\def\brack{\atopwithdelims[]}\def\brace{\atopwithdelims\{\}}\def\sqrt{\radical"270370 }\def\mathpalette#1#2{\mathchoice{#1\displaystyle{#2}}%  {#1\textstyle{#2}}{#1\scriptstyle{#2}}{#1\scriptscriptstyle{#2}}}\newbox\rootbox\def\root#1\of{\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}  \mathpalette\r@@t}\def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}  \dimen@\ht\z@ \advance\dimen@-\dp\z@  \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-10mu \box\z@}\newif\ifv@ \newif\ifh@\def\vphantom{\v@true\h@false\ph@nt}\def\hphantom{\v@false\h@true\ph@nt}\def\phantom{\v@true\h@true\ph@nt}\def\ph@nt{\ifmmode\def\next{\mathpalette\mathph@nt}%  \else\let\next\makeph@nt\fi\next}\def\makeph@nt#1{\setbox\z@\hbox{#1}\finph@nt}\def\mathph@nt#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finph@nt}\def\finph@nt{\setbox\tw@\null  \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi  \ifh@ \wd\tw@\wd\z@\fi \box\tw@}\def\mathstrut{\vphantom(}\def\smash{\relax % \relax, in case this comes first in \halign  \ifmmode\def\next{\mathpalette\mathsm@sh}\else\let\next\makesm@sh  \fi\next}\def\makesm@sh#1{\setbox\z@\hbox{#1}\finsm@sh}\def\mathsm@sh#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh}\def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@}\def\cong{\mathrel{\mathpalette\@vereq\sim}} % congruence sign\def\@vereq#1#2{\lower.5\p@\vbox{\lineskiplimit\maxdimen\lineskip-.5\p@    \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}\def\notin{\mathrel{\mathpalette\c@ncel\in}}\def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}\def\rightleftharpoons{\mathrel{\mathpalette\rlh@{}}}\def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt          \hbox{$#1\rightharpoonup$}\crcr        $#1\leftharpoondown$}}}}\def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}}\def\doteq{\buildrel\textstyle.\over=}\def\log{\mathop{\rm log}\nolimits}\def\lg{\mathop{\rm lg}\nolimits}\def\ln{\mathop{\rm ln}\nolimits}\def\lim{\mathop{\rm lim}}\def\limsup{\mathop{\rm lim\,sup}}\def\liminf{\mathop{\rm lim\,inf}}\def\sin{\mathop{\rm sin}\nolimits}\def\arcsin{\mathop{\rm arcsin}\nolimits}\def\sinh{\mathop{\rm sinh}\nolimits}\def\cos{\mathop{\rm cos}\nolimits}\def\arccos{\mathop{\rm arccos}\nolimits}\def\cosh{\mathop{\rm cosh}\nolimits}\def\tan{\mathop{\rm tan}\nolimits}\def\arctan{\mathop{\rm arctan}\nolimits}\def\tanh{\mathop{\rm tanh}\nolimits}\def\cot{\mathop{\rm cot}\nolimits}\def\coth{\mathop{\rm coth}\nolimits}\def\sec{\mathop{\rm sec}\nolimits}\def\csc{\mathop{\rm csc}\nolimits}\def\max{\mathop{\rm max}}\def\min{\mathop{\rm min}}\def\sup{\mathop{\rm sup}}\def\inf{\mathop{\rm inf}}\def\arg{\mathop{\rm arg}\nolimits}\def\ker{\mathop{\rm ker}\nolimits}\def\dim{\mathop{\rm dim}\nolimits}\def\hom{\mathop{\rm hom}\nolimits}\def\det{\mathop{\rm det}}\def\exp{\mathop{\rm exp}\nolimits}\def\Pr{\mathop{\rm Pr}}\def\gcd{\mathop{\rm gcd}}\def\deg{\mathop{\rm deg}\nolimits}\def\bmod{\nonscript\mskip-\medmuskip\mkern5mu  \mathbin{\rm mod}\penalty900\mkern5mu\nonscript\mskip-\medmuskip}\def\pmod#1{\allowbreak\mkern18mu({\rm mod}\,\,#1)}\def\cases#1{\left\{\,\vcenter{\normalbaselines\m@th    \ialign{$##\hfil$&\quad##\hfil\crcr#1\crcr}}\right.}\def\matrix#1{\null\,\vcenter{\normalbaselines\m@th    \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr      \mathstrut\crcr\noalign{\kern-\baselineskip}      #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}\def\pmatrix#1{\left(\matrix{#1}\right)}\newdimen\p@renwd\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left (\def\bordermatrix#1{\begingroup \m@th  \setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}%    \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil      &&\quad\hfil$##$\hfil\crcr      \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}%      #1\crcr\omit\strut\cr}}%  \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%  \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%  \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\left(\kern-\wd\@ne    \global\setbox\@ne\vbox{\box\@ne\kern2\p@}%    \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}%  \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup}\def\openup{\afterassignment\@penup\dimen@=}\def\@penup{\advance\lineskip\dimen@  \advance\baselineskip\dimen@  \advance\lineskiplimit\dimen@}\def\eqalign#1{\null\,\vcenter{\openup\jot\m@th  \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil      \crcr#1\crcr}}\,}\newif\ifdt@p\def\displ@y{\global\dt@ptrue\openup\jot\m@th  \everycr{\noalign{\ifdt@p \global\dt@pfalse \ifdim\prevdepth>-1000\p@      \vskip-\lineskiplimit \vskip\normallineskiplimit \fi      \else \penalty\interdisplaylinepenalty \fi}}}\def\@lign{\tabskip\z@skip\everycr{}} % restore inside \displ@y\def\displaylines#1{\displ@y \tabskip\z@skip  \halign{\hbox to\displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr    #1\crcr}}\def\eqalignno#1{\displ@y \tabskip\centering  \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip    &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering    &\llap{$\@lign##$}\tabskip\z@skip\crcr    #1\crcr}}\def\leqalignno#1{\displ@y \tabskip\centering  \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip    &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering    &\kern-\displaywidth\rlap{$\@lign##$}\tabskip\displaywidth\crcr    #1\crcr}}% Definitions related to output\message{output routines,}\countdef\pageno=0 \pageno=1 % first page is number 1\newtoks\headline \headline={\hfil} % headline is normally blank\newtoks\footline \footline={\hss\tenrm\folio\hss}  % footline is normally a centered page number in font \tenrm\newif\ifr@ggedbottom\def\raggedbottom{\topskip 10\p@ plus60\p@ \r@ggedbottomtrue}\def\normalbottom{\topskip 10\p@ \r@ggedbottomfalse} % undoes \raggedbottom\def\folio{\ifnum\pageno<\z@ \romannumeral-\pageno \else\number\pageno \fi}\def\nopagenumbers{\footline{\hfil}} % blank out the footline\def\advancepageno{\ifnum\pageno<\z@ \global\advance\pageno\m@ne  \else\global\advance\pageno\@ne \fi} % increase |pageno|\newinsert\footins\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi  #1\@sf\vfootnote{#1}}\def\vfootnote#1{\insert\footins\bgroup  \interlinepenalty\interfootnotelinepenalty  \splittopskip\ht\strutbox % top baseline for broken footnotes  \splitmaxdepth\dp\strutbox \floatingpenalty\@MM  \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip  \textindent{#1}\footstrut\futurelet\next\fo@t}\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t  \else\let\next\f@t\fi \next}\def\f@@t{\bgroup\aftergroup\@foot\let\next}\def\f@t#1{#1\@foot}\def\@foot{\strut\egroup}\def\footstrut{\vbox to\splittopskip{}}\skip\footins=\bigskipamount % space added when footnote is present\count\footins=1000 % footnote magnification factor (1 to 1)\dimen\footins=8in % maximum footnotes per page\newinsert\topins\newif\ifp@ge \newif\if@mid\def\topinsert{\@midfalse\p@gefalse\@ins}\def\midinsert{\@midtrue\@ins}\def\pageinsert{\@midfalse\p@getrue\@ins}\skip\topins=\z@skip % no space added when a topinsert is present\count\topins=1000 % magnification factor (1 to 1)\dimen\topins=\maxdimen % no limit per page\def\@ins{\par\begingroup\setbox\z@\vbox\bgroup} % start a \vbox\def\endinsert{\egroup % finish the \vbox  \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\p@    \advance\dimen@\pagetotal \advance\dimen@-\pageshrink    \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi  \if@mid \bigskip\box\z@\bigbreak  \else\insert\topins{\penalty100 % floating insertion    \splittopskip\z@skip    \splitmaxdepth\maxdimen \floatingpenalty\z@    \ifp@ge \dimen@\dp\z@    \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero    \else \box\z@\nobreak\bigskip\fi}\fi\endgroup}\output{\plainoutput}\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}%  \advancepageno  \ifnum\outputpenalty>-\@MM \else\dosupereject\fi}\def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth \pagecontents}}\def\makeheadline{\vbox to\z@{\vskip-22.5\p@  \line{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip}\def\makefootline{\baselineskip24\p@\line{\the\footline}}\def\dosupereject{\ifnum\insertpenalties>\z@ % something is being held over  \line{}\kern-\topskip\nobreak\vfill\supereject\fi}\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi  \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255  \ifvoid\footins\else % footnote info is present    \vskip\skip\footins    \footnoterule    \unvbox\footins\fi  \ifr@ggedbottom \kern-\dimen@ \vfil \fi}\def\footnoterule{\kern-3\p@  \hrule width 2truein \kern 2.6\p@} % the \hrule is .4pt high% Hyphenation, miscellaneous macros, and initial values for standard layout\message{hyphenation}\lefthyphenmin=2 \righthyphenmin=3 % disallow x- or -xx breaks\input hyphen\def\magnification{\afterassignment\m@g\count@}\def\m@g{\mag\count@  \hsize6.5truein\vsize8.9truein\dimen\footins8truein}\def\tracingall{\tracingonline\@ne\tracingcommands\tw@\tracingstats\tw@  \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne  \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne  \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode}\def\showhyphens#1{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen\tenrm  \pretolerance\m@ne\tolerance\m@ne\hbadness0\showboxdepth0\ #1}}\normalbaselines\rm % select roman font\nonfrenchspacing % punctuation affects the spacing\catcode`@=12 % at signs are no longer letters\def\fmtname{plain}\def\fmtversion{3.141592} % identifies the current format
