texlive[52372] Master/texmf-dist: latex2e (13oct19)

commits+karl at tug.org commits+karl at tug.org
Sun Oct 13 23:45:09 CEST 2019


Revision: 52372
          http://tug.org/svn/texlive?view=revision&revision=52372
Author:   karl
Date:     2019-10-13 23:45:09 +0200 (Sun, 13 Oct 2019)
Log Message:
-----------
latex2e (13oct19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/amsmath/README.md
    trunk/Master/texmf-dist/doc/latex/amsmath/amsbsy.pdf
    trunk/Master/texmf-dist/doc/latex/amsmath/amscd.pdf
    trunk/Master/texmf-dist/doc/latex/amsmath/amsgen.pdf
    trunk/Master/texmf-dist/doc/latex/amsmath/amsldoc.pdf
    trunk/Master/texmf-dist/doc/latex/amsmath/amsmath.pdf
    trunk/Master/texmf-dist/doc/latex/amsmath/amsopn.pdf
    trunk/Master/texmf-dist/doc/latex/amsmath/amstext.pdf
    trunk/Master/texmf-dist/doc/latex/amsmath/amsxtra.pdf
    trunk/Master/texmf-dist/doc/latex/amsmath/changes.txt
    trunk/Master/texmf-dist/doc/latex/amsmath/subeqn.pdf
    trunk/Master/texmf-dist/doc/latex/amsmath/technote.pdf
    trunk/Master/texmf-dist/doc/latex/amsmath/testmath.pdf
    trunk/Master/texmf-dist/doc/latex/base/README.md
    trunk/Master/texmf-dist/doc/latex/base/alltt.pdf
    trunk/Master/texmf-dist/doc/latex/base/cfgguide.pdf
    trunk/Master/texmf-dist/doc/latex/base/changes.txt
    trunk/Master/texmf-dist/doc/latex/base/classes.pdf
    trunk/Master/texmf-dist/doc/latex/base/clsguide.pdf
    trunk/Master/texmf-dist/doc/latex/base/cmfonts.pdf
    trunk/Master/texmf-dist/doc/latex/base/cyrguide.pdf
    trunk/Master/texmf-dist/doc/latex/base/doc.pdf
    trunk/Master/texmf-dist/doc/latex/base/docstrip.pdf
    trunk/Master/texmf-dist/doc/latex/base/encguide.pdf
    trunk/Master/texmf-dist/doc/latex/base/exscale.pdf
    trunk/Master/texmf-dist/doc/latex/base/fix-cm.pdf
    trunk/Master/texmf-dist/doc/latex/base/fntguide.pdf
    trunk/Master/texmf-dist/doc/latex/base/graphpap.pdf
    trunk/Master/texmf-dist/doc/latex/base/ifthen.pdf
    trunk/Master/texmf-dist/doc/latex/base/inputenc.pdf
    trunk/Master/texmf-dist/doc/latex/base/latexchanges.pdf
    trunk/Master/texmf-dist/doc/latex/base/latexchanges.tex
    trunk/Master/texmf-dist/doc/latex/base/latexrelease.pdf
    trunk/Master/texmf-dist/doc/latex/base/latexsym.pdf
    trunk/Master/texmf-dist/doc/latex/base/letter.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltluatex.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews01.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews02.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews03.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews04.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews05.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews06.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews07.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews08.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews09.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews10.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews11.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews12.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews13.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews14.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews15.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews16.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews17.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews18.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews19.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews20.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews21.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews22.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews23.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews24.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews25.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews26.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews27.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews28.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews29.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltnews30.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltx3info.pdf
    trunk/Master/texmf-dist/doc/latex/base/ltxdoc.pdf
    trunk/Master/texmf-dist/doc/latex/base/makeindx.pdf
    trunk/Master/texmf-dist/doc/latex/base/modguide.pdf
    trunk/Master/texmf-dist/doc/latex/base/nfssfont.pdf
    trunk/Master/texmf-dist/doc/latex/base/proc.pdf
    trunk/Master/texmf-dist/doc/latex/base/slides.pdf
    trunk/Master/texmf-dist/doc/latex/base/slifonts.pdf
    trunk/Master/texmf-dist/doc/latex/base/source2e.pdf
    trunk/Master/texmf-dist/doc/latex/base/syntonly.pdf
    trunk/Master/texmf-dist/doc/latex/base/tulm.pdf
    trunk/Master/texmf-dist/doc/latex/base/usrguide.pdf
    trunk/Master/texmf-dist/doc/latex/base/utf8ienc.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/README.md
    trunk/Master/texmf-dist/doc/latex/graphics/changes.txt
    trunk/Master/texmf-dist/doc/latex/graphics/color.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/drivers.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/epsfig.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/graphics.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/graphicx.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/grfguide.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/keyval.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/lscape.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/rotating.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/rotex.pdf
    trunk/Master/texmf-dist/doc/latex/graphics/trig.pdf
    trunk/Master/texmf-dist/source/latex/base/ltclass.dtx
    trunk/Master/texmf-dist/source/latex/base/ltfiles.dtx
    trunk/Master/texmf-dist/source/latex/base/lttab.dtx
    trunk/Master/texmf-dist/source/latex/base/ltvers.dtx
    trunk/Master/texmf-dist/source/latex/base/nfssfont.dtx
    trunk/Master/texmf-dist/source/latex/graphics/graphics.dtx
    trunk/Master/texmf-dist/tex/latex/base/latex.ltx
    trunk/Master/texmf-dist/tex/latex/base/latexrelease.sty
    trunk/Master/texmf-dist/tex/latex/base/nfssfont.tex
    trunk/Master/texmf-dist/tex/latex/graphics/graphics.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/amsmath/amsmath-2018-12-01.sty

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/amsmath/README.md	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/doc/latex/amsmath/README.md	2019-10-13 21:45:09 UTC (rev 52372)
@@ -1,7 +1,7 @@
 The amsmath bundle for LaTeX
 ============================
 
-Release 2019-10-01
+Release 2019-10-01 patch level 1
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/amsbsy.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/amscd.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/amsgen.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/amsldoc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/amsmath.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/amsopn.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/amstext.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/amsxtra.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/amsmath/changes.txt	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/doc/latex/amsmath/changes.txt	2019-10-13 21:45:09 UTC (rev 52372)
@@ -1,4 +1,12 @@
 #########################
+# 2019-10-01b Release
+#########################
+
+2019-10-11  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* build.lua: package amsmath-2018-12-01.sty (only ctan build script no source changes)
+
+#########################
 # 2019-10-01 Release
 #########################
 

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/subeqn.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/technote.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/amsmath/testmath.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/base/README.md	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/doc/latex/base/README.md	2019-10-13 21:45:09 UTC (rev 52372)
@@ -1,7 +1,7 @@
 The LaTeX kernel
 ================
 
-Release 2019-10-01
+Release 2019-10-01 patch level 1
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/base/alltt.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/cfgguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/base/changes.txt	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/doc/latex/base/changes.txt	2019-10-13 21:45:09 UTC (rev 52372)
@@ -5,6 +5,23 @@
 =======================================================================
 
 #########################
+# 2019-10-01 PL 1 Release
+#########################
+
+2019-10-12  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* nfssfont.dtx: added a missing \else branch so that \action is always carried out
+
+2019-10-11  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* ltfiles.dtx: Remove One Brace group before using \string\csname in \set at curr@file.
+
+2019-10-07  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* lttab.dtx (subsection{array and tabular environments}):
+	\extracolsep needs to expand during preamble generation (gh/192)
+
+#########################
 # 2019-10-01 Release
 #########################
 

Modified: trunk/Master/texmf-dist/doc/latex/base/classes.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/clsguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/cmfonts.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/cyrguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/docstrip.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/encguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/exscale.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/fix-cm.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/fntguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/graphpap.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ifthen.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/inputenc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/latexchanges.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/latexchanges.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/base/latexchanges.tex	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/doc/latex/base/latexchanges.tex	2019-10-13 21:45:09 UTC (rev 52372)
@@ -95,6 +95,13 @@
 changes to use definitions from an earlier format.
 
 
+\section{Changes introduced in 2019-10-01 patch~1}
+
+Adjustments to \verb|\set at curr@file|, and \verb|\@extracolsep|.
+
+Added missing \verb=\else= branch in \texttt{nfssfont} so that
+\verb=\action= is executed if provided.
+
 \section{Changes introduced in 2019-10-01}
 
 Introduced \LaTeX\texttt{-dev} formats for pre testing future \LaTeX{}

Modified: trunk/Master/texmf-dist/doc/latex/base/latexrelease.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/latexsym.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/letter.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltluatex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews01.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews02.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews03.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews04.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews05.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews06.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews07.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews08.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews09.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews10.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews11.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews12.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews13.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews14.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews15.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews16.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews17.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews18.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews19.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews20.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews21.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews22.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews23.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews24.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews25.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews26.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews27.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews28.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews29.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltnews30.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltx3info.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/ltxdoc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/makeindx.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/modguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/nfssfont.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/proc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/slides.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/slifonts.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/source2e.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/syntonly.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/tulm.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/usrguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/base/utf8ienc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/graphics/README.md	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/doc/latex/graphics/README.md	2019-10-13 21:45:09 UTC (rev 52372)
@@ -1,7 +1,7 @@
 The LaTeX `graphics` bundle
 ===========================
 
-Release 2019-10-01
+Release 2019-10-01 patch level 1
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/graphics/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/graphics/changes.txt	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/doc/latex/graphics/changes.txt	2019-10-13 21:45:09 UTC (rev 52372)
@@ -4,6 +4,10 @@
 are not part of the distribution.
 =======================================================================
 
+2019-10-08  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* graphics.dtx: fallback definitions of \set at curr@file etc added
+
 #########################
 # 2019-10-01 Release
 #########################

Modified: trunk/Master/texmf-dist/doc/latex/graphics/color.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/drivers.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/epsfig.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/graphics.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/graphicx.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/grfguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/keyval.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/lscape.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/rotating.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/rotex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/graphics/trig.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/base/ltclass.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/base/ltclass.dtx	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/source/latex/base/ltclass.dtx	2019-10-13 21:45:09 UTC (rev 52372)
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltclass.dtx}
-             [2019/09/11 v1.3c LaTeX Kernel (Class & Package Interface)]
+             [2019/10/07 v1.3c LaTeX Kernel (Class & Package Interface)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltclass.dtx}
@@ -155,7 +155,7 @@
 % verbatim to the file name given as the first argument, together with
 % some comments about how it was produced.
 %
-% The package can also be called with an optional argument which is
+% The environment can also be called with an optional argument which is
 % used to alter some of its behavior: option \texttt{force} or 
 % \texttt{overwrite} will allow for overwriting existing files,
 % option \texttt{nosearch} will only check the current directory

Modified: trunk/Master/texmf-dist/source/latex/base/ltfiles.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/base/ltfiles.dtx	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/source/latex/base/ltfiles.dtx	2019-10-13 21:45:09 UTC (rev 52372)
@@ -32,7 +32,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltfiles.dtx}
-             [2019/08/27 v1.2b LaTeX Kernel (File Handling)]
+             [2019/10/11 v1.2c LaTeX Kernel (File Handling)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltfiles.dtx}
@@ -706,7 +706,14 @@
 %   A side effect of the new code is that we will see quotes around
 %   file name displays where there haven't been any before.
 %
+%   For compatibilty with existing code using |{abc}.tex| or |{one.two}.png|
+%   an initial brace group is discarded before expansion and |\string| is applied
+%   The content of the brace group is discarded. This means that a leading space
+%   will be lost unless protected (by |{ }| or |" "| or |\space|) but filenames
+%   with a space are hopefully rare.
+%
 %  \changes{v1.2a}{2019/07/01}{Support UTF-8}
+%  \changes{v1.2c}{2019/10/11}{Remove one brace group}
 %    \begin{macrocode}
 %</2ekernel>
 %<*2ekernel|latexrelease>
@@ -715,7 +722,7 @@
 \def\set at curr@file#1{%
   \begingroup
     \escapechar\m at ne
-    \xdef\@curr at file{\expandafter\string\csname #1\endcsname}%
+    \xdef\@curr at file{\expandafter\string\csname\@firstofone#1\@empty\endcsname}%
   \endgroup
 }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/base/lttab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/base/lttab.dtx	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/source/latex/base/lttab.dtx	2019-10-13 21:45:09 UTC (rev 52372)
@@ -31,7 +31,7 @@
 %%% From File: lttab.dtx
 %<*driver>
 % \fi
-\ProvidesFile{lttab.dtx}[2019/08/27 v1.1p LaTeX Kernel (Columns)]
+\ProvidesFile{lttab.dtx}[2019/10/07 v1.1q LaTeX Kernel (Columns)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{lttab.dtx}
@@ -806,8 +806,12 @@
 %
 %
 % \begin{macro}{\extracolsep}
+%    This command needs to expand during the tabular preamble construction
+%    so can't be robust.
+%
+% \changes{v1.1q}{2019/10/07}{This needs to expand}
 %    \begin{macrocode}
-\DeclareRobustCommand\extracolsep[1]{\tabskip #1\relax}
+\def\extracolsep#1{\tabskip #1\relax}
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/source/latex/base/ltvers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/base/ltvers.dtx	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/source/latex/base/ltvers.dtx	2019-10-13 21:45:09 UTC (rev 52372)
@@ -115,7 +115,7 @@
    {2019-10-01}
 %</2ekernel|latexrelease>
 %<*2ekernel>
-\def\patch at level{0}
+\def\patch at level{1}
 %    \end{macrocode}
 %    
 % \begin{macro}{\development at branch@name}

Modified: trunk/Master/texmf-dist/source/latex/base/nfssfont.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/base/nfssfont.dtx	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/source/latex/base/nfssfont.dtx	2019-10-13 21:45:09 UTC (rev 52372)
@@ -26,8 +26,8 @@
 % extension .ins) which are part of the distribution.
 %
 % \fi
-\def\nfssfontfileversion{v2.2d}
-\def\nfssfontfiledate{2015/02/01}
+\def\nfssfontfileversion{v2.2e}
+\def\nfssfontfiledate{2019/10/12}
 
 %
 % \iffalse
@@ -258,6 +258,8 @@
    \string\help\space for help [ \string\table\space\string\bye\space]:}%
  \ifx\action\empty
    \expandafter\table\expandafter\bye
+ \else
+   \expandafter\action
  \fi
 }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/graphics/graphics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/graphics/graphics.dtx	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/source/latex/graphics/graphics.dtx	2019-10-13 21:45:09 UTC (rev 52372)
@@ -25,7 +25,7 @@
 %<driver> \ProvidesFile{graphics.drv}
 % \fi
 %         \ProvidesFile{graphics.dtx}
-          [2019/07/20 v1.3b  Standard LaTeX Graphics (DPC,SPQR)]
+          [2019/10/08 v1.3c  Standard LaTeX Graphics (DPC,SPQR)]
 %
 % \iffalse
 %<*driver>
@@ -1043,6 +1043,38 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\set at curr@file}
+% \begin{macro}{\quote at name}
+% \changes{v1.3c}{2019/10/08}
+%     {Definitions added for old formats}
+%    \begin{macrocode}
+\def\Gin at temp#1{%
+  \begingroup
+    \escapechar\m at ne
+    \xdef\@curr at file{\expandafter\string\csname #1\endcsname}%
+  \endgroup
+}
+\ifx\set at curr@file\@Gin at temp
+  \let\set at curr@file\@undefined
+\fi
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ifx\set at curr@file\@undefined
+\def\set at curr@file#1{%
+  \begingroup
+    \escapechar\m at ne
+    \xdef\@curr at file{\expandafter\string\csname\@firstofone#1\@empty\endcsname}%
+  \endgroup
+}
+\def\quote at name#1{"\quote@@name#1\@gobble""}
+\def\quote@@name#1"{#1\quote@@name}
+\def\unquote at name#1{\quote@@name#1\@gobble"}
+\fi
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% 
 % \begin{macro}{\Ginclude at graphics}
 %  The main internal function implementing graphics file inclusion.
 %  |#1| is the file name.
@@ -1069,6 +1101,7 @@
   \let\input at path\Ginput at path
 %    \end{macrocode}
 %    A lot of quote juggling going on here (room for improvements).
+%
 %    \begin{macrocode}
   \set at curr@file{#1}%
   \edef\uq at curr@file{\expandafter\unquote at name\expandafter{\@curr at file}}%

Added: trunk/Master/texmf-dist/tex/latex/amsmath/amsmath-2018-12-01.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/amsmath/amsmath-2018-12-01.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/amsmath/amsmath-2018-12-01.sty	2019-10-13 21:45:09 UTC (rev 52372)
@@ -0,0 +1,2848 @@
+%%
+%% This is file `amsmath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% amsmath.dtx 
+%% 
+%% Copyright 1995, 1999, 2000, 2013 American Mathematical Society.
+%% Copyright 2016 LaTeX3 Project and American Mathematical Society.
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+%% This work has the LPPL maintenance status `maintained'.
+%% 
+%% The Current Maintainer of this work is the LaTeX3 project.
+%% 
+\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
+[1994/12/01]% LaTeX date must be December 1994 or later
+\ProvidesPackage{amsmath}[2018/12/01 v2.17b AMS math features]
+\edef\@temp{\catcode 96=\number\catcode 96 }
+\catcode\string `\`=12
+\def\do#1{\catcode\number`#1=\number\catcode`#1}
+\edef\@temp{%
+  \noexpand\AtEndOfPackage{%
+    \@temp
+    \do\"\do\'\do\(\do\)\do\*\do\+\do\,\do\-\do\.%
+    \do\/\do\<\do\=\do\>\do\[\do\]\do\^\do\_\relax
+  }%
+}
+\@temp
+\def\do#1{\catcode\number`#1=12 }
+\do\"\do\'\do\(\do\)\do\*\do\+\do\,\do\-\do\.
+\do\/\do\<\do\=\do\>\do\[\do\]
+\catcode`\^=7 \catcode`\_=8
+\DeclareOption{intlimits}{\let\ilimits@\displaylimits}
+\DeclareOption{nointlimits}{\let\ilimits@\nolimits}
+\DeclareOption{sumlimits}{\let\slimits@\displaylimits}
+\DeclareOption{nosumlimits}{\let\slimits@\nolimits}
+\DeclareOption{namelimits}{\PassOptionsToPackage{namelimits}{amsopn}}
+\DeclareOption{nonamelimits}{%
+  \PassOptionsToPackage{nonamelimits}{amsopn}}
+\newif\ifctagsplit@
+\newif\iftagsleft@
+\DeclareOption{leqno}{\tagsleft at true}
+\DeclareOption{reqno}{\tagsleft at false}
+\DeclareOption{centertags}{\ctagsplit at true}
+\DeclareOption{tbtags}{\ctagsplit at false}
+\DeclareOption{cmex10}{%
+  \ifnum\cmex at opt=\@ne \def\cmex at opt{0}%
+  \else \def\cmex at opt{10}\fi
+}
+\@ifundefined{cmex at opt}{\def\cmex at opt{7}}{}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\if at fleqn
+\newskip\@mathmargin
+\@mathmargin\@centering
+\DeclareOption{fleqn}{%
+    \@fleqntrue
+    \@mathmargin = -1sp
+    \let\mathindent=\@mathmargin
+    \AtBeginDocument{%
+        \ifdim\@mathmargin= -1sp
+            \@mathmargin\leftmargini minus\leftmargini
+        \fi
+    }%
+}
+\DeclareOption{alignedleftspaceyes}{\def\alignedspace at left{\null\,}}
+\DeclareOption{alignedleftspaceno}{\def\alignedspace at left{\null}}
+\DeclareOption{alignedleftspaceyesifneg}{%
+\def\alignedspace at left{%
+  \edef\@tempa{\expandafter\@car\the\lastskip\@nil}%
+  \if-\@tempa\null\,%
+  \else
+    \edef\@tempa{\expandafter\@car\the\lastkern\@nil}%
+    \if-\@tempa\null\,%
+    \else\null
+    \fi
+  \fi}%
+}
+\DeclareOption{?}{}
+\ExecuteOptions{%
+  nointlimits,sumlimits,namelimits,centertags,alignedleftspaceyesifneg}
+\ProcessOptions\par
+\@ifpackagewith{amsmath}{?}{%
+  \typeout{^^J%
+Documentation for the amsmath package is found in amsldoc.dvi^^J%
+(or .pdf or .tex).^^J%
+^^J%
+See also https://www.ams.org/tex/amslatex.html.^^J%
+^^J%
+Note: Using the first edition of The LaTeX Companion (1994) without^^J%
+errata as a guide for amsmath use is not recommended.^^J%
+  }%
+}{%
+  \typeout{%
+For additional information on amsmath, use the \lq ?\rq\space option.%
+  }%
+}
+\ifnum\cmex at opt=7 \relax
+  \DeclareFontShape{OMX}{cmex}{m}{n}{%
+    <-8>cmex7<8>cmex8<9>cmex9%
+    <10><10.95><12><14.4><17.28><20.74><24.88>cmex10%
+  }{}%
+  \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax
+\else
+  \ifnum\cmex at opt=\z@ % need to override cmex7 fontdef from amsfonts
+    \begingroup
+    \fontencoding{OMX}\fontfamily{cmex}%
+    \expandafter\let\csname OMX+cmex\endcsname\relax
+    \try at load@fontshape
+    \endgroup
+    \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax
+    \def\cmex at opt{10}%
+  \fi
+\fi
+\RequirePackage{amstext}[1995/01/25]
+\RequirePackage{amsbsy}[1995/01/20]
+\RequirePackage{amsopn}[1995/01/20]
+\@ifpackageloaded{stix}{%
+    \let\ams at newcommand\providecommand
+    \let\ams at renewcommand\providecommand
+    \let\ams at def\providecommand
+    \let\ams at DeclareRobustCommand\providecommand
+}{%
+    \let\ams at newcommand\newcommand
+    \let\ams at renewcommand\renewcommand
+    \let\ams at def\def
+    \let\ams at DeclareRobustCommand\DeclareRobustCommand
+}
+\def\@amsmath at err{\PackageError{amsmath}}
+\providecommand{\AmS}{{\protect\AmSfont
+  A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
+\newcommand{\AmSfont}{%
+  \usefont{OMS}{cmsy}{\if\@xp\@car\f at series\@nil bb\else m\fi}{n}}
+\ifx\leavevmode at ifvmode\@undefined  % kernel is < 2018/12
+\def\@mathmeasure#1#2#3{\setbox#1\hbox{\frozen at everymath\@emptytoks
+    \m at th$#2#3$}}
+\else
+\def\@mathmeasure#1#2#3{\setbox#1\hbox{%
+  \m at th$#2#3$}}
+\fi
+\@ifundefined{inf at bad}{%
+  \newcount\inf at bad \inf at bad=1000000 \relax
+}{}
+\ifx\leavevmode at ifvmode\@undefined
+\DeclareRobustCommand{\tmspace}[3]{%
+  \ifmmode\mskip#1#2\else\kern#1#3\fi\relax}
+\else
+\DeclareRobustCommand{\tmspace}[3]{%
+  \ifmmode\mskip#1#2\else\leavevmode at ifvmode\kern#1#3\fi\relax}
+\fi
+\renewcommand{\,}{\tmspace+\thinmuskip{.1667em}}
+\let\thinspace\,
+\renewcommand{\!}{\tmspace-\thinmuskip{.1667em}}
+\let\negthinspace\!
+\renewcommand{\:}{\tmspace+\medmuskip{.2222em}}
+\let\medspace\:
+\newcommand{\negmedspace}{\tmspace-\medmuskip{.2222em}}
+\renewcommand{\;}{\tmspace+\thickmuskip{.2777em}}
+\let\thickspace\;
+\newcommand{\negthickspace}{\tmspace-\thickmuskip{.2777em}}
+\newcommand{\mspace}[1]{\mskip#1\relax}
+\def\@tempa#1#2\@nil{%
+  \ifx\delimiter#1\@tempcnta#2\relax\else\@tempcnta\z@\fi
+}
+\@xp\@tempa\vert\@empty\@nil
+\ifnum\@tempcnta>\z@
+  \advance\@tempcnta "4000000
+  \xdef\lvert{\delimiter\number\@tempcnta\space }
+  \advance\@tempcnta "1000000
+  \xdef\rvert{\delimiter\number\@tempcnta\space }
+\else
+  \ifx\@@undefined\lvert
+    % Fall back to cmex encoding since we don't know what else to do.
+    \DeclareMathDelimiter{\lvert}
+      {\mathopen}{symbols}{"6A}{largesymbols}{"0C}
+    \DeclareMathDelimiter{\rvert}
+      {\mathclose}{symbols}{"6A}{largesymbols}{"0C}
+  \fi
+\fi
+\@xp\@tempa\Vert\@empty\@nil
+\ifnum\@tempcnta>\z@
+  \advance\@tempcnta "4000000
+  \xdef\lVert{\delimiter\number\@tempcnta\space }
+  \advance\@tempcnta "1000000
+  \xdef\rVert{\delimiter\number\@tempcnta\space }
+\else
+  \ifx\@@undefined\lVert
+    \DeclareMathDelimiter{\lVert}
+      {\mathopen}{symbols}{"6B}{largesymbols}{"0D}
+    \DeclareMathDelimiter{\rVert}
+      {\mathclose}{symbols}{"6B}{largesymbols}{"0D}
+  \fi
+\fi
+\@saveprimitive\over\@@over
+\@saveprimitive\atop\@@atop
+\@saveprimitive\above\@@above
+\@saveprimitive\overwithdelims\@@overwithdelims
+\@saveprimitive\atopwithdelims\@@atopwithdelims
+\@saveprimitive\abovewithdelims\@@abovewithdelims
+\DeclareRobustCommand{\primfrac}[1]{%
+  \PackageWarning{amsmath}{%
+Foreign command \@backslashchar#1;\MessageBreak
+\protect\frac\space or \protect\genfrac\space should be used instead%
+\MessageBreak
+  }
+  \global\@xp\let\csname#1\@xp\endcsname\csname @@#1\endcsname
+  \csname#1\endcsname
+}
+\renewcommand{\over}{\primfrac{over}}
+\renewcommand{\atop}{\primfrac{atop}}
+\renewcommand{\above}{\primfrac{above}}
+\renewcommand{\overwithdelims}{\primfrac{overwithdelims}}
+\renewcommand{\atopwithdelims}{\primfrac{atopwithdelims}}
+\renewcommand{\abovewithdelims}{\primfrac{abovewithdelims}}
+\DeclareRobustCommand{\frac}[2]{{\begingroup#1\endgroup\@@over#2}}
+\newcommand{\dfrac}{\genfrac{}{}{}0}
+\newcommand{\tfrac}{\genfrac{}{}{}1}
+\DeclareRobustCommand{\binom}{\genfrac()\z@{}}
+\newcommand{\dbinom}{\genfrac(){0pt}0}
+\newcommand{\tbinom}{\genfrac(){0pt}1}
+\ifx\directlua\@undefined
+\ifx\XeTeXcharclass\@undefined
+\DeclareRobustCommand{\genfrac}[4]{%
+  \def\@tempa{#1#2}%
+  \edef\@tempb{\@nx\@genfrac\@mathstyle{#4}%
+    \csname @@\ifx @#3 at over\else above\fi
+    \ifx\@tempa\@empty \else withdelims\fi\endcsname}
+  \@tempb{#1#2#3}}
+\else
+\def\genfrac at rule#1#2#3#4{%
+\hbox{$\left#1\vcenter{\hrule \@width\z@
+                       \@height
+                       \ifdim\fontdimen#2#3\tw@=\z@
+                       #4\fontdimen6#3\tw@
+                       \else
+                       \fontdimen#2#3\tw@
+                       \fi
+                      }\right.$}}
+\def\genfrac at choice#1#2{%
+\ifx @#2@\else
+\ifx c#1\kern-\nulldelimiterspace\fi
+{\delimitershortfall\z@\delimiterfactor\@m
+ \mathsurround\z@\nulldelimiterspace\z@
+\mathchoice
+{\genfrac at rule{#2}{20}\textfont{2.39}}%
+{\genfrac at rule{#2}{21}\textfont{1}}%
+{\genfrac at rule{#2}{21}\scriptfont{1.45}}%
+{\genfrac at rule{#2}{21}\scriptscriptfont{1.35}}%
+}%
+\ifx o#1\kern-\nulldelimiterspace\fi
+\fi
+}
+\DeclareRobustCommand{\genfrac}[6]{{%
+\@mathstyle{#4}%
+\genfrac at choice o{#1}%
+{\begingroup#5\endgroup\ifx @#3@\@@over\else\@@above\fi#3\relax#6}%
+\genfrac at choice c{#2}%
+}}
+\fi
+\else
+\def\genfrac at rule#1#2#3{%
+\hbox{$\left#1\vcenter{\hrule \@width\z@
+                       \@height
+                       \ifdim\Umathfractiondelsize#2=\z@
+                       #3\fontdimen6#3\tw@
+                       \else
+                       \Umathfractiondelsize#2%
+                       \fi
+                      }\right.$}}
+\def\genfrac at choice#1#2{%
+\ifx @#2@\else
+\ifx c#1\kern-\nulldelimiterspace\fi
+{\delimitershortfall\z@\delimiterfactor\@m
+ \mathsurround\z@\nulldelimiterspace\z@
+\mathchoice
+{\genfrac at rule{#2}\displaystyle{2.39}}%
+{\genfrac at rule{#2}\textstyle{1}}%
+{\genfrac at rule{#2}\scriptstyle{1.45}}%
+{\genfrac at rule{#2}\scriptscriptstyle{1.35}}%
+}%
+\ifx o#1\kern-\nulldelimiterspace\fi
+\fi
+}
+\DeclareRobustCommand{\genfrac}[6]{{%
+\@mathstyle{#4}%
+\genfrac at choice o{#1}%
+{\begingroup#5\endgroup\ifx @#3@\@@over\else\@@above\fi#3\relax#6}%
+\genfrac at choice c{#2}%
+}}
+\fi
+\def\@genfrac#1#2#3#4#5{{#1{\begingroup#4\endgroup#2#3\relax#5}}}
+\def\@mathstyle#1{%
+  \ifx\@empty#1\@empty\relax
+  \else\ifcase#1\displaystyle % case 0
+    \or\textstyle\or\scriptstyle\else\scriptscriptstyle\fi\fi}
+\begingroup
+\edef\@tempa{\string\mathchar"}
+\edef\@tempd{\string\Umathchar"}
+\def\@tempb#1"#2\@nil{#1"}
+\edef\@tempc{\expandafter\@tempb\meaning\coprod "\@nil}
+\ifx\@tempc\@tempd\let\@tempc\@tempa\fi
+\ifx\@tempa\@tempc
+  \global\let\coprod@\coprod
+  \gdef\coprod{\DOTSB\coprod@\slimits@}
+  \global\let\bigvee@\bigvee
+  \gdef\bigvee{\DOTSB\bigvee@\slimits@}
+  \global\let\bigwedge@\bigwedge
+  \gdef\bigwedge{\DOTSB\bigwedge@\slimits@}
+  \global\let\biguplus@\biguplus
+  \gdef\biguplus{\DOTSB\biguplus@\slimits@}
+  \global\let\bigcap@\bigcap
+  \gdef\bigcap{\DOTSB\bigcap@\slimits@}
+  \global\let\bigcup@\bigcup
+  \gdef\bigcup{\DOTSB\bigcup@\slimits@}
+  \global\let\prod@\prod
+  \gdef\prod{\DOTSB\prod@\slimits@}
+  \global\let\sum@\sum
+  \gdef\sum{\DOTSB\sum@\slimits@}
+  \global\let\bigotimes@\bigotimes
+  \gdef\bigotimes{\DOTSB\bigotimes@\slimits@}
+  \global\let\bigoplus@\bigoplus
+  \gdef\bigoplus{\DOTSB\bigoplus@\slimits@}
+  \global\let\bigodot@\bigodot
+  \gdef\bigodot{\DOTSB\bigodot@\slimits@}
+  \global\let\bigsqcup@\bigsqcup
+  \gdef\bigsqcup{\DOTSB\bigsqcup@\slimits@}
+\fi
+\endgroup
+\newcommand{\leftroot}{\@amsmath at err{\Invalid@@\leftroot}\@eha}
+\newcommand{\uproot}{\@amsmath at err{\Invalid@@\uproot}\@eha}
+\newcount\uproot@
+\newcount\leftroot@
+\renewcommand{\root}{\relaxnext@
+  \DN@{\ifx\@let at token\uproot\let\next@\nextii@\else
+   \ifx\@let at token\leftroot\let\next@\nextiii@\else
+   \let\next@\plainroot@\fi\fi\next@}%
+  \def\nextii@\uproot##1{\uproot@##1\relax\FN@\nextiv@}%
+  \def\nextiv@{\ifx\@let at token\@sptoken\DN at . {\FN@\nextv@}\else
+   \DN at .{\FN@\nextv@}\fi\next at .}%
+  \def\nextv@{\ifx\@let at token\leftroot\let\next@\nextvi@\else
+   \let\next@\plainroot@\fi\next@}%
+  \def\nextvi@\leftroot##1{\leftroot@##1\relax\plainroot@}%
+   \def\nextiii@\leftroot##1{\leftroot@##1\relax\FN@\nextvii@}%
+  \def\nextvii@{\ifx\@let at token\@sptoken
+   \DN at . {\FN@\nextviii@}\else
+   \DN at .{\FN@\nextviii@}\fi\next at .}%
+  \def\nextviii@{\ifx\@let at token\uproot\let\next@\nextix@\else
+   \let\next@\plainroot@\fi\next@}%
+  \def\nextix@\uproot##1{\uproot@##1\relax\plainroot@}%
+  \bgroup\uproot@\z@\leftroot@\z@\FN@\next@}
+\def\plainroot@#1\of#2{\setbox\rootbox\hbox{%
+ $\m at th\scriptscriptstyle{#1}$}%
+ \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}}
+ {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup}
+
+\@ifundefined{sqrtsign}{\let\sqrtsign\@@sqrt}{}
+\def\r@@t#1#2{\setboxz at h{$\m at th#1\sqrtsign{#2}$}%
+ \dimen@\ht\z@\advance\dimen at -\dp\z@
+ \setbox\@ne\hbox{$\m at th#1\mskip\uproot@ mu$}%
+ \advance\dimen@ by1.667\wd\@ne
+ \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox
+ \mkern-10mu\mkern\leftroot@ mu\boxz@}
+\@ifundefined{varGamma}{%
+  \DeclareMathSymbol{\varGamma}{\mathord}{letters}{"00}
+  \DeclareMathSymbol{\varDelta}{\mathord}{letters}{"01}
+  \DeclareMathSymbol{\varTheta}{\mathord}{letters}{"02}
+  \DeclareMathSymbol{\varLambda}{\mathord}{letters}{"03}
+  \DeclareMathSymbol{\varXi}{\mathord}{letters}{"04}
+  \DeclareMathSymbol{\varPi}{\mathord}{letters}{"05}
+  \DeclareMathSymbol{\varSigma}{\mathord}{letters}{"06}
+  \DeclareMathSymbol{\varUpsilon}{\mathord}{letters}{"07}
+  \DeclareMathSymbol{\varPhi}{\mathord}{letters}{"08}
+  \DeclareMathSymbol{\varPsi}{\mathord}{letters}{"09}
+  \DeclareMathSymbol{\varOmega}{\mathord}{letters}{"0A}
+}{}
+\@saveprimitive\overline\@@overline
+\DeclareRobustCommand{\overline}[1]{\@@overline{#1}}
+\newcommand{\boxed}[1]{\fbox{\m at th$\displaystyle#1$}}
+\newcommand{\implies}{\DOTSB\;\Longrightarrow\;}
+\newcommand{\impliedby}{\DOTSB\;\Longleftarrow\;}
+\def\And{\DOTSB\;\mathchar"3026 \;}
+\newcommand{\nobreakdash}{\leavevmode
+  \toks@\@emptytoks \def\@tempa##1{\toks@\@xp{\the\toks at -}\FN@\next@}%
+  \DN@{\ifx\@let at token-\@xp\@tempa
+       \else\setboxz at h{\the\toks@\nobreak}\unhbox\z@\fi}%
+  \FN@\next@
+}
+\renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript
+  \mkern-\thinmuskip{:}\mskip6muplus1mu\relax}
+\let\ifgtest@\iffalse                              % initial value
+\def\gtest at true{\global\let\ifgtest@\iftrue}
+\def\gtest at false{\global\let\ifgtest@\iffalse}
+\let\DOTSI\relax
+\let\DOTSB\relax
+\let\DOTSX\relax
+{\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h
+ \uppercase{%
+  \gdef\math@#1#2#3#4#5#6\math@{\gtest at false\ifx 7#1\ifx 8#2%
+  \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\gtest at true
+  \fi\fi\fi\fi\fi}}}
+{\uccode`7=`c \uccode`8=`h \uccode`9=`\"
+ \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\gtest at false
+  \ifx 7#1\ifx 8#2\ifx 9#5\gtest at true\xdef\meaning@{9#6}\fi\fi\fi}}}
+{\uccode`(=`U \uccode`)=`m
+ \uppercase{\gdef\Umathch@#1#2#3#4"#5"#6\Umathch@{\gtest at false
+  \ifx(#2\ifx)#3\gtest at true
+  \ifcase"#5 \or\or\gdef\thedots@{\dotsb@}\or\gdef\thedots@{\dotsb@}\fi
+  \fi\fi
+  }}}
+\ifx\Umathcharnumdef\@undefined
+\gdef\thecharacter@#1\thecharacter@{}
+\else
+{\uccode`(=`t \uccode`)=`c
+ \uppercase{\gdef\thecharacter@#1#2#3#4#5\thecharacter@{%
+  \ifx(#1\ifx)#4%
+    \@xp\getmathcode@\meaning@\getmathcode@
+  \fi\fi
+}}}
+\def\getmathcode@#1 #2 #3#4\getmathcode@{%
+  \Umathcharnumdef\@tempa\Umathcodenum`#3\relax
+  \edef\meaning@{\meaning\@tempa}%
+  \@xp\Umathch@\meaning@\Umathch@
+}
+\fi
+\newcount\classnum@
+\def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum at 4096
+ \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or
+ \gdef\thedots@{\dotsb@}\fi}
+{\uccode`4=`b \uccode`5=`i \uccode`6=`n
+ \uppercase{\gdef\mathbin@#1#2#3{\relaxnext@
+  \def\nextii@##1\mathbin@{\ifx\@sptoken\@let at token\gtest at true\fi}%
+  \gtest at false\DN@##1\mathbin@{}%
+ \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
+{\uccode`4=`r \uccode`5=`e \uccode`6=`l
+ \uppercase{\gdef\mathrel@#1#2#3{\relaxnext@
+  \def\nextii@##1\mathrel@{\ifx\@sptoken\@let at token\gtest at true\fi}%
+ \gtest at false\DN@##1\mathrel@{}%
+ \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}}
+{\uccode`5=`m \uccode`6=`a \uccode`7=`c
+ \uppercase{\gdef\macro@#1#2#3#4\macro@{\gtest at false
+  \ifx 5#1\ifx 6#2\ifx 7#3\gtest at true
+  \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}}
+\def\macro@@#1->#2\macro@@{#2}
+\newcount\DOTSCASE@
+{\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S
+ \uppercase{\gdef\DOTS@#1#2#3#4#5{\gtest at false\DN@##1\DOTS@{}%
+  \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@
+  \fi\fi\fi\fi\fi
+  \next@}}}
+{\uccode`3=`B \uccode`4=`I \uccode`5=`X
+ \uppercase{\gdef\DOTS@@#1{\relaxnext@
+  \def\nextii@##1\DOTS@{\ifx\@sptoken\@let at token\gtest at true\fi}%
+  \DN@{\FN@\nextii@}%
+  \ifx 3#1\global\DOTSCASE@\z@\else
+  \ifx 4#1\global\DOTSCASE@\@ne\else
+  \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}%
+  \fi\fi\fi\next@}}}
+{\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t
+ \uppercase{\gdef\not@#1#2#3#4{\relaxnext@
+  \def\nextii@##1\not@{\ifx\@sptoken\@let at token\gtest at true\fi}%
+ \gtest at false\DN@##1\not@{}%
+ \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi
+ \fi\next@}}}
+{\uccode`9=`\l %
+ \uppercase{\gdef\striplong@#1#2#3\relax{%
+  \ifx9#2 \@xp\@xp\@xp\zap at to@space\fi}}}
+\def\zap at to@space#1 {}
+\def\keybin@{\gtest at true
+ \ifx\@let at token+\else\ifx\@let at token=\else
+ \ifx\@let at token<\else\ifx\@let at token>\else
+ \ifx\@let at token-\else\ifx\@let at token*\else\ifx\@let at token:\else
+   \gtest at false\fi\fi\fi\fi\fi\fi\fi}
+\@ifundefined{@ldots}{\def\@ldots{\mathellipsis}}{}
+\DeclareRobustCommand{\ldots}{%
+  \ifmmode \mathellipsis \else \textellipsis \fi
+}
+\DeclareRobustCommand{\dots}{%
+  \ifmmode \@xp\mdots@\else \@xp\textellipsis \fi
+}
+\def\tdots@{\leavevmode\unskip\relaxnext@
+ \DN@{$\m at th\@ldots\,
+   \ifx\@let at token,\,$\else\ifx\@let at token.\,$\else
+   \ifx\@let at token;\,$\else\ifx\@let at token:\,$\else
+   \ifx\@let at token?\,$\else\ifx\@let at token!\,$\else
+     $ \fi\fi\fi\fi\fi\fi}%
+  \ \FN@\next@}
+\def\mdots@{\FN@\mdots@@}
+\def\mdots@@{\gdef\thedots@{\dotso@}%
+ \ifx\@let at token\boldsymbol
+   \gdef\thedots@\boldsymbol{\boldsymboldots@}%
+ \else
+   \ifx,\@let at token \gdef\thedots@{\dotsc}%
+   \else
+     \ifx\not\@let at token
+       \gdef\thedots@{\dotsb@}%
+     \else
+       \keybin@
+       \ifgtest@ % if \keybin@ test
+         \gdef\thedots@{\dotsb@}%
+       \else
+         \xdef\meaning@{\meaning\@let at token. .........}%
+         \xdef\meaning@@{\@xp\striplong@\meaning@\relax\meaning@}%
+         \@xp\math@\meaning@\math@
+         \ifgtest@ % if \mathxxx test
+           \@xp\mathch@\meaning@\mathch@
+           \ifgtest@ % if \mathchar
+             \@xp\getmathch@\meaning@\getmathch@
+           \fi % end if \mathchar
+         \else  % \not \mathxxx
+             \@xp\Umathch@\meaning@"0"\Umathch@
+             \ifgtest@ % if \Umathchar
+             \else % else not \Umathcar
+           \@xp\macro@\meaning@@\macro@
+           \ifgtest@ % if macro test
+             \@xp\not@\meaning@\not@
+             \ifgtest@ % if macro starts \not test
+               \gdef\thedots@{\dotsb@}%
+             \else% else not \not
+               \@xp\DOTS@\meaning@\DOTS@
+               \ifgtest@ % \if DOTS
+                 \ifcase\number\DOTSCASE@ %ifcase dots
+                   \gdef\thedots@{\dotsb@}%
+                 \or\gdef\thedots@{\dotsi}\else
+                 \fi % endifcase dots
+               \else % not macro starts \DOTS
+                 \@xp\math@\meaning@\math@
+                 \ifgtest@ % \if macro starts \mathxxxx
+                   \@xp\mathbin@\meaning@\mathbin@
+                   \ifgtest@ % if macro starts \mathbin
+                     \gdef\thedots@{\dotsb@}%
+                   \else % not macro starting \mathbin
+                     \@xp\mathrel@\meaning@\mathrel@
+                     \ifgtest@ % if macro starts \mathrel
+                       \gdef\thedots@{\dotsb@}%
+                     \fi % endif macro starts \mathrel (no else)
+                   \fi % endif macro starts \mathbin
+                 \fi % endif macro starts with \mathxxx (no else)
+               \fi % endif macro starts \DOTS else
+             \fi % end macro  starting \not \ifgtest@ test (no else)
+             \else
+               \@xp\thecharacter@\meaning@\thecharacter@
+             \fi % end macro \ifgtest@ test (no else)
+           \fi % end if \Umathchar test
+         \fi % end \math@   \ifgtest@
+       \fi % end \keybin@ \ifgtest@ test (no else)
+     \fi % end if \not (no else)
+   \fi % end if comma (no else)
+ \fi % end if boldsymbol (no else)
+ \thedots@}
+\def\boldsymboldots@#1{%
+  \bold at true\let\@let at token=#1\let\delayed@=#1\mdots@@
+  \boldsymbol#1\bold at false}
+\ams at def\@cdots{\mathinner{\cdotp\cdotp\cdotp}}
+\newcommand{\dotsi}{\!\@cdots}
+\let\dotsb@\@cdots
+\def\rightdelim@{\gtest at true
+ \ifx\@let at token)\else
+ \ifx\@let at token]\else
+ \ifx\@let at token\rbrack\else
+ \ifx\@let at token\}\else
+ \ifx\@let at token\rbrace\else
+ \ifx\@let at token\rangle\else
+ \ifx\@let at token\rceil\else
+ \ifx\@let at token\rfloor\else
+ \ifx\@let at token\rgroup\else
+ \ifx\@let at token\rmoustache\else
+ \ifx\@let at token\right\else
+ \ifx\@let at token\bigr\else
+ \ifx\@let at token\biggr\else
+ \ifx\@let at token\Bigr\else
+ \ifx\@let at token\Biggr\else\gtest at false
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+\def\extra@{%
+ \rightdelim@\ifgtest@
+ \else\ifx\@let at token$\gtest at true
+ \else\xdef\meaning@{\meaning\@let at token..........}%
+ \@xp\macro@\meaning@\macro@\ifgtest@
+ \@xp\DOTS@\meaning@\DOTS@
+ \ifgtest@
+ \ifnum\DOTSCASE@=\tw@\gtest at true\else\gtest at false
+ \fi\fi\fi\fi\fi}
+\newif\ifbold@
+\def\dotso@{\relaxnext@
+ \ifbold@
+  \let\@let at token\delayed@
+  \def\nextii@{\extra@\@ldots\ifgtest@\,\fi}%
+ \else
+  \def\nextii@{\DN@{\extra@\@ldots\ifgtest@\,\fi}\FN@\next@}%
+ \fi
+ \nextii@}
+\def\extrap@#1{%
+ \DN@{#1\,}%
+ \ifx\@let at token,\else
+ \ifx\@let at token;\else
+ \ifx\@let at token.\else\extra@
+ \ifgtest@\else
+ \let\next@#1\fi\fi\fi\fi\next@}
+\ams at DeclareRobustCommand{\cdots}{\DN@{\extrap@\@cdots}\FN@\next@}
+\let\dotsb\cdots
+\let\dotsm\cdots
+\DeclareRobustCommand{\dotso}{\relax
+  \ifmmode \DN@{\extrap@\@ldots}%
+  \else \let\next@\tdots@\fi
+  \FN@\next@}
+\DeclareRobustCommand{\dotsc}{%
+  \DN@{\ifx\@let at token;\@ldots\,%
+       \else \ifx\@let at token.\@ldots\,%
+       \else \extra@\@ldots \ifgtest@\,\fi
+       \fi\fi}%
+  \FN@\next@}
+\renewcommand{\longrightarrow}{%
+  \DOTSB\protect\relbar\protect\joinrel\rightarrow}
+\renewcommand{\Longrightarrow}{%
+  \DOTSB\protect\Relbar\protect\joinrel\Rightarrow}
+\renewcommand{\longleftarrow}{%
+  \DOTSB\leftarrow\protect\joinrel\protect\relbar}
+\renewcommand{\Longleftarrow}{%
+  \DOTSB\Leftarrow\protect\joinrel\protect\Relbar}
+\renewcommand{\longleftrightarrow}{\DOTSB\leftarrow\joinrel\rightarrow}
+\renewcommand{\Longleftrightarrow}{\DOTSB\Leftarrow\joinrel\Rightarrow}
+\renewcommand{\mapsto}{\DOTSB\mapstochar\rightarrow}
+\renewcommand{\longmapsto}{\DOTSB\mapstochar\longrightarrow}
+\renewcommand{\hookrightarrow}{\DOTSB\lhook\joinrel\rightarrow}
+\renewcommand{\hookleftarrow}{\DOTSB\leftarrow\joinrel\rhook}
+\renewcommand{\iff}{\DOTSB\;\Longleftrightarrow\;}
+\renewcommand{\doteq}{%
+  \DOTSB\mathrel{\mathop{\kern0pt =}\limits^{\textstyle.}}}
+\newif\if at display
+\everydisplay\@xp{\the\everydisplay \@displaytrue}
+\renewcommand{\int}{\DOTSI\intop\ilimits@}
+\renewcommand{\oint}{\DOTSI\ointop\ilimits@}
+\def\intkern@{\mkern-6mu\mathchoice{\mkern-3mu}{}{}{}}
+\def\intdots@{\mathchoice{\@cdots}%
+ {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}%
+ {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}%
+ {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}}
+\ams at newcommand{\iint}{\DOTSI\protect\MultiIntegral{2}}
+\ams at newcommand{\iiint}{\DOTSI\protect\MultiIntegral{3}}
+\ams at newcommand{\iiiint}{\DOTSI\protect\MultiIntegral{4}}
+\newcommand{\idotsint}{\DOTSI\protect\MultiIntegral{0}}
+\newcommand{\MultiIntegral}[1]{%
+  \edef\ints at c{\noexpand\intop
+    \ifnum#1=\z@\noexpand\intdots@\else\noexpand\intkern@\fi
+    \ifnum#1>\tw@\noexpand\intop\noexpand\intkern@\fi
+    \ifnum#1>\thr@@\noexpand\intop\noexpand\intkern@\fi
+    \noexpand\intop
+    \noexpand\ilimits@
+  }%
+  \futurelet\@let at token\ints at a
+}
+\def\ints at a{%
+  \ifx\limits\@let at token \ints at b
+  \else \ifx\displaylimits\@let at token \ints at b
+  \else\ifx\ilimits@\displaylimits \ints at b
+  \fi\fi\fi
+  \ints at c
+}
+\def\ints at b{%
+  \mkern-7mu\mathchoice{\mkern-2mu}{}{}{}%
+  \mathop\bgroup
+    \mkern7mu\mathchoice{\mkern2mu}{}{}{}%
+    \let\ilimits@\egroup
+}%
+\newbox\Mathstrutbox@
+\setbox\Mathstrutbox@=\hbox{}
+\def\Mathstrut@{\copy\Mathstrutbox@}
+\ifx\Umathcharnumdef\@undefined
+\def\resetMathstrut@{%
+  \begingroup
+  \setbox\z@\hbox{%
+    \mathchardef\@tempa\mathcode`\(\relax
+    \def\@tempb##1"##2##3{\the\textfont"##3\char"}%
+    \expandafter\@tempb\meaning\@tempa \relax
+  }%
+ \edef\@tempa{%
+     \ht\Mathstrutbox@\the\ht\z@\relax
+     \dp\Mathstrutbox@\the\dp\z@\relax}%
+  \expandafter\endgroup\@tempa
+}
+\else
+\def\resetMathstrut@{%
+    \begingroup
+    \Umathcharnumdef\@tempa\Umathcodenum`\(\relax
+    \def\@tempb##1"##2"##3"##4\relax{%
+      \endgroup
+      \ht\Mathstrutbox@=\fontcharht\textfont"##3 "##4\relax
+      \dp\Mathstrutbox@=\fontchardp\textfont"##3 "##4\relax}%
+    \expandafter\@tempb\meaning\@tempa \relax
+}
+\fi
+\addto at hook\every at math@size{\resetMathstrut@}
+\newbox\strutbox@
+\def\strut@{\copy\strutbox@}
+\def\reset at strutbox@{%
+  \global\setbox\strutbox@\hbox{%
+    \lower.5\normallineskiplimit
+       \vbox{\kern-\normallineskiplimit\copy\strutbox}}}
+\addto at hook\every at math@size{\reset at strutbox@}
+\AtBeginDocument{\reset at strutbox@}
+\renewcommand{\big}{\bBigg@\@ne}
+\renewcommand{\Big}{\bBigg@{1.5}}
+\renewcommand{\bigg}{\bBigg@\tw@}
+\renewcommand{\Bigg}{\bBigg@{2.5}}
+\ifx\leavevmode at ifvmode\@undefined
+\def\bBigg@#1#2{%
+  {\@mathmeasure\z@{\nulldelimiterspace\z@}%
+     {\left#2\vcenter to#1\big at size{}\right.}%
+   \box\z@}}
+\else
+\def\bBigg@#1#2{\leavevmode at ifvmode
+  {\@mathmeasure\z@{\nulldelimiterspace\z@}%
+     {\left#2\vcenter to#1\big at size{}\right.}%
+   \box\z@}}
+\fi
+\addto at hook\every at math@size{%
+  \global\big at size 1.2\ht\Mathstrutbox@
+  \global\advance\big at size 1.2\dp\Mathstrutbox@ }
+\newdimen\big at size
+\def\accentclass@{7}
+\def\noaccents@{\def\accentclass@{0}}
+\DeclareFontEncoding{OML}{}{\noaccents@}
+\DeclareFontEncoding{OMS}{}{\noaccents@}
+\ams at newcommand{\dddot}[1]{%
+  {\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
+   \hbox{\normalfont ...}\vss}}}}
+\ams at newcommand{\ddddot}[1]{%
+  {\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@
+   \hbox{\normalfont....}\vss}}}}
+\def\set at mathaccent#1#2#3#4{%
+  \xdef#2{\@nx\protect\@nx\mathaccentV
+    {\@xp\@gobble\string#2}\hexnumber@#1#4}%
+}
+\def\@tempa#1{\@xp\@tempb\meaning#1\@nil#1}
+\def\@tempb#1>#2#3 #4\@nil#5{%
+  \@xp\ifx\csname#3\endcsname\mathaccent
+    \@tempc#4?"7777\@nil#5%
+  \else
+  \@xp\ifx\csname#3\endcsname\Umathaccent
+    \@tempd#4\@nil#5%
+  \else
+    \PackageWarningNoLine{amsmath}{%
+      Unable to redefine math accent \string#5}%
+  \fi\fi}
+\def\@tempc#1"#2#3#4#5#6\@nil#7{%
+  \chardef\@tempd="#3\relax\set at mathaccent\@tempd{#7}{#2}{#4#5}}
+\def\@tempd#1\@nil#2{%
+    \PackageWarningNoLine{amsmath}{%
+      Unable to redefine \string\Umathaccent\space\string#2}%
+}
+\@tempa{\hat}
+\@tempa{\check}
+\@tempa{\tilde}
+\@tempa{\acute}
+\@tempa{\grave}
+\@tempa{\dot}
+\@tempa{\ddot}
+\@tempa{\breve}
+\@tempa{\bar}
+\@tempa{\vec}
+\@ifundefined{mathring}{%
+  \DeclareMathAccent{\mathring}{\mathalpha}{operators}{"17}
+}{%
+  \@tempa{\mathring}
+}
+%%\@tempa\widetilde
+%%\@tempa\widehat
+\newcommand{\acc at check}{}
+\newcommand{\acc at error}{}
+\def\acc at check{\@ifnextchar\@empty\relax\acc at error}
+\def\acc at error{%
+  \@amsmath at err{%
+    Improper argument for math accent:\MessageBreak
+    Extra braces must be added to prevent wrong output%
+  }\@ehc
+}
+\newcount\macc at depth
+\long\def\@gobblethree#1#2#3{}
+\def\mathaccentV#1#2#3#4#5{%
+  \ifmmode
+    \gdef\macc at tmp{\macc at depth\@ne}%
+    \setbox\z@\hbox{%
+      \let\mathaccentV\macc at test
+      \let\use at mathgroup\@gobbletwo \let\select at group\@gobblethree
+      \frozen at everymath{}$#5$%
+    }%
+    \macc at tmp
+    \ifnum\macc at depth=\@ne
+      \global\let\macc at nucleus\@empty
+      \mathaccent"\accentclass@
+    \else
+      \@xp\macc at nested
+    \fi
+    #2#3#4{#5}%
+    \macc at nucleus
+  \else
+    \@xp\nonmatherr@\csname#1\endcsname
+  \fi
+}
+\def\macc at test#1#2#3#4{\xdef\macc at tmp{\macc at tmp\advance\macc at depth\@ne}}
+\def\macc at group{-1}
+\def\macc at nested#1#2#3#4{%
+  \begingroup
+  \let\math at bgroup\@empty \let\math at egroup\macc at set@skewchar
+  \mathsurround\z@ \frozen at everymath{\mathgroup\macc at group\relax}%
+  \macc at set@skewchar\relax
+  \let\mathaccentV\macc at nested@a
+  \macc at nested@a\relax#1#2#3{#4}%
+  \endgroup
+}
+\let\macc at palette\mathpalette
+\def\macc at nested@a#1#2#3#4#5{%
+  \ifnum\macc at group=\mathgroup
+  \else \macc at set@skewchar\relax \edef\macc at group{\the\mathgroup}%
+  \fi
+  \mathchardef\macc at code "\accentclass@ #2#3#4\relax
+  \macc at palette\macc at a{#5}%
+}
+\def\macc at set@skewchar#1{%
+  \begingroup
+  \ifnum\mathgroup=\m at ne \let\@tempa\@ne
+  \else
+    \ifnum\skewchar\textfont\mathgroup=\m at ne \let\@tempa\@ne
+    \else \let\@tempa\mathgroup
+    \fi
+  \fi
+  \count@=\skewchar\textfont\@tempa
+  \advance\count@"7100
+  \edef\@tempa{\endgroup
+    \mathchardef\noexpand\macc at skewchar=\number\count@\relax}%
+  \@tempa
+  #1%
+}
+\def\macc at a#1#2{%
+  \begingroup
+  \let\macc at style#1\relax
+  \def\macc at palette##1{##1\macc at style}%
+  \advance\macc at depth\m at ne
+  \ifnum\macc at depth=\z@
+    \gdef\macc at nucleus{#2}%
+    \setbox\z@\hbox{$#1#2\@empty{}\macc at skewchar$}%
+    \setbox\tw@\hbox{$#1#2\@empty\macc at skewchar$}%
+    \dimen@\tw@\wd\tw@ \advance\dimen at -\tw@\wd\z@
+    \xdef\macc at kerna{\the\dimen@\relax}%
+    \setbox4\hbox{$#1#2\acc at check\@empty$}%
+    \global\setbox\@ne\hbox to\wd4{}%
+    \ht\@ne\ht4 \dp\@ne\dp4
+    \xdef\macc at kernb{\the\wd4\relax}%
+    \mathaccent\macc at code{\box\@ne\kern\macc at kerna}%
+  \else
+    \mathaccent\macc at code{\let\macc at adjust\@empty #1#2\@empty}%
+    \macc at adjust
+  \fi
+  \endgroup
+}
+\def\macc at adjust{%
+  \dimen@\macc at kerna\advance\dimen@\macc at kernb
+  \kern-\dimen@
+}
+\def\Hat{\hat}
+\def\Check{\check}
+\def\Tilde{\tilde}
+\def\Acute{\acute}
+\def\Grave{\grave}
+\def\Dot{\dot}
+\def\Ddot{\ddot}
+\def\Breve{\breve}
+\def\Bar{\bar}
+\def\Vec{\vec}
+\def\nonmatherr@#1{\@amsmath at err{\protect
+  #1 allowed only in math mode}\@ehd}
+\renewcommand{\bmod}{\nonscript\mskip-\medmuskip\mkern5mu\mathbin
+  {\operator at font mod}\penalty900
+  \mkern5mu\nonscript\mskip-\medmuskip}
+\newcommand{\pod}[1]{\allowbreak
+  \if at display\mkern18mu\else\mkern8mu\fi(#1)}
+\renewcommand{\pmod}[1]{\pod{{\operator at font mod}\mkern6mu#1}}
+\newcommand{\mod}[1]{\allowbreak\if at display\mkern18mu
+  \else\mkern12mu\fi{\operator at font mod}\,\,#1}
+\newcommand{\cfrac}[3][c]{{\displaystyle\frac{%
+  \strut\ifx r#1\hfill\fi#2\ifx l#1\hfill\fi}{#3}}%
+  \kern-\nulldelimiterspace}
+\newcommand{\overset}[2]{\binrel@{#2}%
+  \binrel@@{\mathop{\kern\z@#2}\limits^{#1}}}
+\newcommand{\underset}[2]{\binrel@{#2}%
+  \binrel@@{\mathop{\kern\z@#2}\limits_{#1}}}
+\newcommand{\sideset}[3]{%
+  \@mathmeasure\z@\displaystyle{#3}%
+  \global\setbox\@ne\vbox to\ht\z@{}\dp\@ne\dp\z@
+  \setbox\tw@\box\@ne
+  \@mathmeasure4\displaystyle{\copy\tw@#1}%
+  \@mathmeasure6\displaystyle{#3\nolimits#2}%
+  \dimen at -\wd6 \advance\dimen@\wd4 \advance\dimen@\wd\z@
+  \hbox to\dimen@{}\mathop{\kern-\dimen@\box4\box6}%
+}
+\ifx\leavevmode at ifvmode\@undefined
+\renewcommand{\smash}[1][tb]{%
+  \def\mb at t{\ht}\def\mb at b{\dp}\def\mb at tb{\ht\z@\z@\dp}%
+  \edef\finsm at sh{\csname mb@#1\endcsname\z@\z@\box\z@}%
+  \ifmmode \@xp\mathpalette\@xp\mathsm at sh
+  \else \@xp\makesm at sh
+  \fi
+}
+\else
+\renewcommand{\smash}[1][tb]{%
+  \def\mb at t{\ht}\def\mb at b{\dp}\def\mb at tb{\ht\z@\z@\dp}%
+  \edef\finsm at sh{\csname mb@#1\endcsname\z@\z@ \leavevmode at ifvmode\box\z@}%
+  \ifmmode \@xp\mathpalette\@xp\mathsm at sh
+  \else \@xp\makesm at sh
+  \fi
+}
+\fi
+\mathchardef\std at minus\mathcode`\-\relax
+\mathchardef\std at equal\mathcode`\=\relax
+\AtBeginDocument{%
+  \mathchardef\std at minus\mathcode`\-\relax
+  \mathchardef\std at equal\mathcode`\=\relax
+}
+\ams at def\relbar{\mathrel{\mathpalette\mathsm at sh\std at minus}}
+\ams at def\Relbar{\mathrel\std at equal}
+\def\arrowfill@#1#2#3#4{%
+  $\m at th\thickmuskip0mu\medmuskip\thickmuskip\thinmuskip\thickmuskip
+   \relax#4#1\mkern-7mu%
+   \cleaders\hbox{$#4\mkern-2mu#2\mkern-2mu$}\hfill
+   \mkern-7mu#3$%
+}
+\def\leftarrowfill@{\arrowfill@\leftarrow\relbar\relbar}
+\def\rightarrowfill@{\arrowfill@\relbar\relbar\rightarrow}
+\def\leftrightarrowfill@{\arrowfill@\leftarrow\relbar\rightarrow}
+\def\Leftarrowfill@{\arrowfill@\Leftarrow\Relbar\Relbar}
+\def\Rightarrowfill@{\arrowfill@\Relbar\Relbar\Rightarrow}
+\def\Leftrightarrowfill@{\arrowfill@\Leftarrow\Relbar\Rightarrow}
+\def\overarrow@#1#2#3{\vbox{\ialign{##\crcr#1#2\crcr
+ \noalign{\nointerlineskip}$\m at th\hfil#2#3\hfil$\crcr}}}
+\ams at renewcommand{\overrightarrow}{%
+  \mathpalette{\overarrow@\rightarrowfill@}}
+\ams at renewcommand{\overleftarrow}{%
+  \mathpalette{\overarrow@\leftarrowfill@}}
+\ams at newcommand{\overleftrightarrow}{%
+  \mathpalette{\overarrow@\leftrightarrowfill@}}
+\def\underarrow@#1#2#3{%
+ \vtop{\ialign{##\crcr$\m at th\hfil#2#3\hfil$\crcr
+ \noalign{\nointerlineskip\kern1.3\ex@}#1#2\crcr}}}
+\ams at newcommand{\underrightarrow}{%
+  \mathpalette{\underarrow@\rightarrowfill@}}
+\ams at newcommand{\underleftarrow}{%
+  \mathpalette{\underarrow@\leftarrowfill@}}
+\ams at newcommand{\underleftrightarrow}{%
+  \mathpalette{\underarrow@\leftrightarrowfill@}}
+\def\ext at arrow#1#2#3#4#5#6#7{%
+  \mathrel{\mathop{%
+    \setbox\z@\hbox{#5\displaystyle}%
+    \setbox\tw@\vbox{\m at th
+      \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}%
+      \hbox{$\scriptstyle\mkern#3mu{#7}\mkern#4mu$}%
+      \copy\z@
+    }%
+    \hbox to\wd\tw@{\unhbox\z@}}%
+  \limits
+    \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi
+                       #7\if0#2\else\mkern#2mu\fi}}%
+    \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi
+                       #6\if0#2\else\mkern#2mu\fi}}}%
+}
+\newcommand{\xrightarrow}[2][]{\ext at arrow 0359\rightarrowfill@{#1}{#2}}
+\newcommand{\xleftarrow}[2][]{\ext at arrow 3095\leftarrowfill@{#1}{#2}}
+\newenvironment{subarray}[1]{%
+  \vcenter\bgroup
+  \Let@ \restore at math@cr \default at tag
+  \baselineskip\fontdimen10 \scriptfont\tw@
+  \advance\baselineskip\fontdimen12 \scriptfont\tw@
+  \lineskip\thr@@\fontdimen8 \scriptfont\thr@@
+  \lineskiplimit\lineskip
+  \ialign\bgroup\ifx c#1\hfil\fi
+    $\m at th\scriptstyle##$\hfil\crcr
+}{%
+  \crcr\egroup\egroup
+}
+\newcommand{\substack}[1]{\subarray{c}#1\endsubarray}
+\newenvironment{smallmatrix}{\null\,\vcenter\bgroup
+  \Let@\restore at math@cr\default at tag
+  \baselineskip6\ex@ \lineskip1.5\ex@ \lineskiplimit\lineskip
+  \ialign\bgroup\hfil$\m at th\scriptstyle##$\hfil&&\thickspace\hfil
+  $\m at th\scriptstyle##$\hfil\crcr
+}{%
+  \crcr\egroup\egroup\,%
+}
+\renewenvironment{matrix}{%
+  \matrix at check\matrix\env at matrix
+}{%
+  \endarray \hskip -\arraycolsep
+}
+\def\env at matrix{\hskip -\arraycolsep
+  \let\@ifnextchar\new at ifnextchar
+  \array{*\c at MaxMatrixCols c}}
+\newcount\c at MaxMatrixCols \c at MaxMatrixCols=10
+\def\matrix at check#1{%
+  \@xp\ifx\csname\@currenvir\endcsname#1%
+  \else\matrix at error#1%
+    \@xp\@gobble
+  \fi
+}
+\def\matrix at error#1{%
+  \@amsmath at err{%
+Old form `\string#1' should be \string\begin{\@xp\@gobble\string#1}%
+  }{%
+`\string#1{...}' is old Plain-TeX syntax whose use is
+ill-advised in LaTeX.%
+  }%
+}
+\renewenvironment{pmatrix}{%
+  \left(%
+  \matrix at check\pmatrix\env at matrix
+}{
+  \endmatrix\right)%
+}
+\newenvironment{bmatrix}{\left[\env at matrix}{\endmatrix\right]}
+\newenvironment{Bmatrix}{%
+  \left\lbrace\env at matrix
+}{%
+  \endmatrix\right\rbrace
+}
+\newenvironment{vmatrix}{\left\lvert\env at matrix}{\endmatrix\right\rvert}
+\newenvironment{Vmatrix}{\left\lVert\env at matrix}{\endmatrix\right\rVert}
+\let\hdots\@ldots
+\newcommand{\hdotsfor}[1]{%
+  \ifx[#1\@xp\shdots at for\else\hdots at for\@ne{#1}\fi}
+\newmuskip\dotsspace@
+\def\shdots at for#1]{\hdots at for{#1}}
+\def\hdots at for#1#2{\multicolumn{#2}c%
+  {\m at th\dotsspace at 1.5mu\mkern-#1\dotsspace@
+   \xleaders\hbox{$\m at th\mkern#1\dotsspace at .\mkern#1\dotsspace@$}%
+           \hfill
+   \mkern-#1\dotsspace@}%
+   }
+\renewenvironment{cases}{%
+  \matrix at check\cases\env at cases
+}{%
+  \endarray\right.%
+}
+\def\env at cases{%
+  \let\@ifnextchar\new at ifnextchar
+  \left\lbrace
+  \def\arraystretch{1.2}%
+  \array{@{}l@{\quad}l@{}}%
+}
+\newcounter{parentequation}% Counter for ``parent equation''.
+\@ifundefined{ignorespacesafterend}{%
+  \def\ignorespacesafterend{\global\@ignoretrue}%
+}{}
+\newenvironment{subequations}{%
+  \refstepcounter{equation}%
+  \protected at edef\theparentequation{\theequation}%
+  \setcounter{parentequation}{\value{equation}}%
+  \setcounter{equation}{0}%
+  \def\theequation{\theparentequation\alph{equation}}%
+  \ignorespaces
+}{%
+  \setcounter{equation}{\value{parentequation}}%
+  \ignorespacesafterend
+}
+\newcommand{\numberwithin}[3][\arabic]{%
+  \@ifundefined{c@#2}{\@nocounterr{#2}}{%
+    \@ifundefined{c@#3}{\@nocnterr{#3}}{%
+      \@addtoreset{#2}{#3}%
+      \@xp\xdef\csname the#2\endcsname{%
+        \@xp\@nx\csname the#3\endcsname .\@nx#1{#2}}}}%
+}
+\newcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+\newcount\dspbrk at lvl
+\dspbrk at lvl=-1
+\interdisplaylinepenalty\@M
+\newcommand{\allowdisplaybreaks}[1][4]{%
+  \interdisplaylinepenalty\getdsp at pen{#1}\relax
+}
+\def\getdsp at pen#1{%
+  \ifcase #1\@M \or 9999 \or 6999 \or 2999 \or \z@\fi
+}
+\newcommand{\displaybreak}{\new at ifnextchar[\dspbrk@{\dspbrk@[4]}}
+\chardef\dspbrk at context=\sixt@@n
+\def\dspbrk@[#1]{%
+  \ifmeasuring@
+  \else
+    \ifcase\dspbrk at context % case 0 --- OK
+      \global\dspbrk at lvl #1\relax
+    \or                    % case 1 --- inside a box
+      \nogood at displaybreak
+    \else                  % other cases --- outside of a display
+      \@amsmath at err{\Invalid@@\displaybreak}\@eha
+    \fi
+  \fi
+}
+\def\nogood at displaybreak{%
+  \@amsmath at err{\protect
+\displaybreak\space cannot be applied here}%
+{One of the enclosing environments creates an
+  unbreakable box\MessageBreak
+(e.g., split, aligned, gathered, ...).}%
+}
+\def\math at cr{\relax\iffalse{\fi\ifnum0=`}\fi
+  \@ifstar{\global\@eqpen\@M\math at cr@}%
+          {\global\@eqpen
+             \ifnum\dspbrk at lvl <\z@ \interdisplaylinepenalty
+              \else -\@getpen\dspbrk at lvl \fi
+           \math at cr@}}
+\def\math at cr@{\new at ifnextchar[\math at cr@@{\math at cr@@[\z@]}}
+\def\math at cr@@[#1]{\ifnum0=`{\fi \iffalse}\fi\math at cr@@@
+  \noalign{\vskip#1\relax}}
+\def\Let@{\let\\\math at cr}
+\def\restore at math@cr{\def\math at cr@@@{\cr}}
+\restore at math@cr
+\newcommand{\intertext}{\@amsmath at err{\Invalid@@\intertext}\@eha}
+\def\intertext@{%
+  \def\intertext##1{%
+    \ifvmode\else\\\@empty\fi
+    \noalign{%
+      \penalty\postdisplaypenalty\vskip\belowdisplayskip
+      \vbox{\normalbaselines
+        \ifdim\linewidth=\columnwidth
+        \else \parshape\@ne \@totalleftmargin \linewidth
+        \fi
+        \noindent\ignorespaces##1\par}%
+      \penalty\predisplaypenalty\vskip\abovedisplayskip%
+    }%
+}}
+\newhelp\tag at help
+  {tag cannot be used at this point.\space
+   If you don't understand why^^Jyou should consult
+   the documentation.^^JBut don't worry: just continue, and I'll
+   forget what happened.}
+\def\gobble at tag{\@ifstar\@gobble\@gobble}
+\def\invalid at tag#1{\@amsmath at err{#1}{\the\tag at help}\gobble at tag}
+\def\dft at tag{\invalid at tag{\string\tag\space not allowed here}}
+\def\default at tag{\let\tag\dft at tag}
+\default at tag
+\def\maketag@@{\@ifstar\maketag@@@\tagform@}
+\def\maketag@@@#1{\hbox{\m at th\normalfont#1}}
+\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
+\iftagsleft@
+  \def\@eqnnum{\hbox to1sp{}\rlap{\normalfont\normalcolor
+    \hskip -\displaywidth\tagform@\theequation}}
+\else
+  \def\@eqnnum{{\normalfont\normalcolor \tagform@\theequation}}
+\fi
+\newcommand{\thetag}{\leavevmode\tagform@}
+\let\df at tag\@empty
+\def\make at df@tag{\@ifstar\make at df@tag@@\make at df@tag@@@}
+\def\make at df@tag@@#1{%
+  \gdef\df at tag{\maketag@@@{#1}\def\@currentlabel{#1}}}
+\def\make at df@tag@@@#1{\gdef\df at tag{\tagform@{#1}%
+  \toks@\@xp{\p at equation{#1}}\edef\@currentlabel{\the\toks@}}}
+\let\ltx at label\label
+\def\label at in@display{%
+    \ifx\df at label\@empty\else
+        \@amsmath at err{Multiple \string\label's:
+            label '\df at label' will be lost}\@eha
+    \fi
+    \gdef\df at label
+}
+\toks@\@xp{\@arrayparboxrestore \let\label\ltx at label}%
+\edef\@arrayboxrestore{\the\toks@}
+\let\df at label\@empty
+\def\make at display@tag{%
+  \if at eqnsw \incr at eqnum \print at eqnum
+  \else \iftag@ \df at tag \global\let\df at tag\@empty \fi
+  \fi
+  \ifmeasuring@
+  \else
+    \ifx\df at label\@empty
+    \else
+      \@xp\ltx at label\@xp{\df at label}%
+      \global\let\df at label\@empty
+    \fi
+  \fi
+}
+\def\tag at in@align{%
+    \relax
+    \iftag@
+        \DN@{\invalid at tag{Multiple \string\tag}}%
+    \else
+    \global\tag at true
+    \nonumber
+        \let\next@\make at df@tag
+    \fi
+    \next@
+}
+\newcommand{\raisetag}[1]{\skip@#1\relax
+  \xdef\raise at tag{\vskip\iftagsleft@\else-\fi\the\skip@\relax}%
+}
+\let\raise at tag\@empty
+\newcommand{\notag}{\nonumber}
+\renewcommand{\nonumber}{%
+  \if at eqnsw
+    \ifx\incr at eqnum\@empty \addtocounter{equation}\m at ne \fi
+  \fi
+  \let\print at eqnum\@empty \let\incr at eqnum\@empty
+  \global\@eqnswfalse
+}
+\def\print at eqnum{\tagform@\theequation}
+\def\incr at eqnum{\refstepcounter{equation}\let\incr at eqnum\@empty}
+\newif\ifinalign@
+\newif\ifingather@
+\@xp\def\@xp\@arrayparboxrestore\@xp{\@arrayparboxrestore
+  \ingather at false\inalign at false \default at tag
+  \let\spread at equation\@spread at equation
+  \let\reset at equation\@empty
+  \def\print at eqnum{\tagform@\theequation}%
+  \def\incr at eqnum{\refstepcounter{equation}\let\incr at eqnum\@empty}%
+}
+\newif\iftag@
+\newif\ifst at rred
+\newif\ifmeasuring@
+\newif\ifshifttag@
+\newcount\row@
+\newcount\column@
+\def\column at plus{%
+    \global\advance\column@\@ne
+}
+\newcount\maxfields@
+\def\add at amp#1{\if m#1&\@xp\add at amp\fi}
+\def\add at amps#1{%
+    \begingroup
+    \count@#1\advance\count at -\column@
+    \edef\@tempa{\endgroup
+      \@xp\add at amp\romannumeral\number\count@ 000q}%
+    \@tempa
+}
+\newhelp\andhelp@
+{An extra & here is so disastrous that you should probably exit^^J
+and fix things up.}
+\newdimen\eqnshift@
+\newdimen\alignsep@
+\newdimen\tagshift@
+\newcommand{\mintagsep}{.5\fontdimen6\textfont\tw@}
+\newcommand{\minalignsep}{10pt}
+\newdimen\tagwidth@
+\newdimen\totwidth@
+\newdimen\lineht@
+\def\tag at width#1{%
+    \ifcase\@xp#1\tag at lengths\fi
+}
+
+\def\savetaglength@{%
+    \begingroup
+        \let\or\relax
+        \xdef\tag at lengths{\tag at lengths\or \the\wdz@}%
+    \endgroup
+}
+
+\def\shift at tag#1{%
+    \ifcase\@xp#1\tag at shifts\fi\relax
+}
+
+\let\tag at shifts\@empty
+\def\saveshift@#1{%
+    \begingroup
+        \let\or\relax
+        \xdef\tag at shifts{\or#1\tag at shifts}%
+    \endgroup
+}
+\def\spread at equation{\reset at strutbox@
+  \openup\jot \let\spread at equation\@empty}
+\let\@spread at equation\spread at equation
+\def\displ at y{\@display at init{}}
+\def\@display at init#1{%
+    \global\dt at ptrue \spread at equation
+    \everycr{%
+        \noalign{%
+            #1%
+            \ifdt at p
+                \global\dt at pfalse
+                \vskip-\lineskiplimit
+                \vskip\normallineskiplimit
+            \else
+                \penalty\@eqpen \global\dspbrk at lvl\m at ne
+            \fi
+        }%
+    }%
+}
+\def\displ at y@{\@display at init{%
+  \global\column@\z@ \global\dspbrk at lvl\m at ne
+  \global\tag at false \global\let\raise at tag\@empty
+}}
+\def\black@#1{%
+    \noalign{%
+        \ifdim#1>\displaywidth
+            \dimen@\prevdepth
+            \nointerlineskip
+            \vskip-\ht\strutbox@
+            \vskip-\dp\strutbox@
+            \vbox{\noindent\hbox to\displaywidth{\hbox to#1{\strut@\hfill}}}%
+            \prevdepth\dimen@
+        \fi
+    }%
+}
+\def\savecounters@{%
+    \begingroup
+        \def\@elt##1{%
+          \global\csname c@##1\endcsname\the\csname c@##1\endcsname}%
+        \xdef\@gtempa{%
+            \cl@@ckpt
+            \let\@nx\restorecounters@\@nx\@empty
+        }%
+    \endgroup
+    \let\restorecounters@\@gtempa
+}
+\let\restorecounters@\@empty
+\def\savealignstate@{%
+    \begingroup
+        \let\or\relax
+        \xdef\@gtempa{%
+            \global\totwidth@\the\totwidth@
+            \global\row@\the\row@
+            \gdef\@nx\tag at lengths{\tag at lengths}%
+            \let\@nx\restorealignstate@\@nx\@empty
+        }%
+    \endgroup
+    \let\restorealignstate@\@gtempa
+}
+
+\let\restorealignstate@\@empty
+\def\savecolumn@{%
+  \edef\restorecolumn@{%
+    \global\column@\number\column@
+    \let\@nx\restorecolumn@\@nx\@empty
+  }%
+}
+\let\restorecolumn@\@empty
+\newtoks\@envbody
+\def\addto at envbody#1{\global\@envbody\@xp{\the\@envbody#1}}
+\def\collect at body#1{%
+  \@envbody{\@xp#1\@xp{\the\@envbody}}%
+  \edef\process at envbody{\the\@envbody\@nx\end{\@currenvir}}%
+  \@envbody\@emptytoks \def\begin at stack{b}%
+  \begingroup
+  \@xp\let\csname\@currenvir\endcsname\collect@@body
+  \edef\process at envbody{\@xp\@nx\csname\@currenvir\endcsname}%
+  \process at envbody
+}
+\def\push at begins#1\begin#2{%
+  \ifx\end#2\else b\@xp\push at begins\fi
+}
+\def\collect@@body#1\end#2{%
+  \edef\begin at stack{\push at begins#1\begin\end \@xp\@gobble\begin at stack}%
+  \ifx\@empty\begin at stack
+    \endgroup
+    \@checkend{#2}%
+    \addto at envbody{#1}%
+  \else
+    \addto at envbody{#1\end{#2}}%
+  \fi
+  \process at envbody % A little tricky! Note the grouping
+}
+\def\math at cr@@@aligned{%
+  \ifodd\column@ \let\next@\@empty
+  \else \def\next@{&\kern-\alignsep@}%
+  \fi
+  \next@ \cr
+}
+\newcommand{\start at aligned}[2]{%
+    \RIfM@\else
+        \nonmatherr@{\begin{\@currenvir}}%
+    \fi
+    \savecolumn@ % Assumption: called inside a group
+    \alignedspace at left
+    \if #1t\vtop \else \if#1b \vbox \else \vcenter \fi \fi \bgroup
+        \maxfields@#2\relax
+        \ifnum\maxfields@>\m at ne
+            \multiply\maxfields@\tw@
+            \let\math at cr@@@\math at cr@@@alignedat
+            \alignsep@\z at skip
+        \else
+            \let\math at cr@@@\math at cr@@@aligned
+            \alignsep@\minalignsep
+        \fi
+        \Let@ \chardef\dspbrk at context\@ne
+        \default at tag
+        \spread at equation % no-op if already called
+        \global\column@\z@
+        \ialign\bgroup
+           &\column at plus
+            \hfil
+            \strut@
+            $\m at th\displaystyle{##}$%
+            \tabskip\z at skip
+           &\column at plus
+            $\m at th\displaystyle{{}##}$%
+            \hfil
+            \tabskip\alignsep@
+            \crcr
+}
+\def\math at cr@@@alignedat{%
+    \ifnum\column@>\maxfields@
+        \begingroup
+          \measuring at false
+          \@amsmath at err{Extra & on this line}%
+            {\the\andhelp@}% "An extra & here is disastrous"
+        \endgroup
+    \fi
+    \global\column@\z@
+    \cr
+}
+\def\alignsafe at testopt#1#2{%
+  \relax\iffalse{\fi\ifnum`}=0\fi
+  \@ifnextchar[%
+    {\let\@let at token\relax \ifnum`{=\z@\fi\iffalse}\fi#1}%
+    {\let\@let at token\relax \ifnum`{=\z@\fi\iffalse}\fi#1[#2]}%
+}
+\newenvironment{aligned}{%
+  \let\@testopt\alignsafe at testopt
+  \aligned at a
+}{%
+  \crcr\egroup
+  \restorecolumn@
+  \egroup
+}
+\newcommand{\aligned at a}[1][c]{\start at aligned{#1}\m at ne}
+\newenvironment{alignedat}{%
+  \let\@testopt\alignsafe at testopt
+  \alignedat at a
+}{%
+  \endaligned
+}
+\newcommand{\alignedat at a}[1][c]{\start at aligned{#1}}
+\newenvironment{gathered}[1][c]{%
+    \RIfM@\else
+        \nonmatherr@{\begin{gathered}}%
+    \fi
+    \alignedspace at left
+    \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi \bgroup
+        \Let@ \chardef\dspbrk at context\@ne \restore at math@cr
+        \spread at equation
+        \ialign\bgroup
+            \hfil\strut@$\m at th\displaystyle##$\hfil
+            \crcr
+}{%
+  \endaligned
+}
+\def\start at gather#1{%
+    \RIfM@
+        \nomath at env
+        \DN@{\@namedef{end\@currenvir}{}\@gobble}%
+    \else
+        $$%
+        #1%
+        \ifst at rred \else \global\@eqnswtrue \fi
+        \let\next@\gather@
+    \fi
+    \collect at body\next@
+}
+\newenvironment{gather}{%
+  \start at gather\st at rredfalse
+}{%
+  \math at cr \black@\totwidth@ \egroup
+  $$\ignorespacesafterend
+}
+
+\newenvironment{gather*}{%
+  \start at gather\st at rredtrue
+}{%
+  \endgather
+}
+\def\gather@#1{%
+    \ingather at true \let\split\insplit@
+    \let\tag\tag at in@align \let\label\label at in@display
+    \chardef\dspbrk at context\z@
+    \intertext@ \displ at y@ \Let@
+    \let\math at cr@@@\math at cr@@@gather
+    \gmeasure@{#1}%
+    \global\shifttag at false
+    \tabskip\z at skip
+    \global\row@\@ne
+    \halign to\displaywidth\bgroup
+        \strut@
+        \setboxz at h{$\m at th\displaystyle{##}$}%
+        \calc at shift@gather
+        \set at gather@field
+        \tabskip\@centering
+       &\setboxz at h{\strut@{##}}%
+        \place at tag@gather
+        \tabskip \iftagsleft@ \gdisplaywidth@ \else \z at skip \span\fi
+        \crcr
+        #1%
+}
+\def\gmeasure@#1{%
+    \begingroup
+        \measuring at true
+        \totwidth@\z@
+        \global\let\tag at lengths\@empty
+        \savecounters@
+        \setbox\@ne\vbox{%
+            \everycr{\noalign{\global\tag at false
+              \global\let\raise at tag\@empty \global\column@\z@}}%
+            \let\label\@gobble
+            \halign{%
+                \setboxz at h{$\m at th\displaystyle{##}$}%
+                \ifdim\wdz@>\totwidth@
+                    \global\totwidth@\wdz@
+                \fi
+               &\setboxz at h{\strut@{##}}%
+                \savetaglength@
+                \crcr
+                #1%
+                \math at cr@@@
+            }%
+        }%
+        \restorecounters@
+        \if at fleqn
+            \global\advance\totwidth@\@mathmargin
+        \fi
+        \iftagsleft@
+            \ifdim\totwidth@>\displaywidth
+                \global\let\gdisplaywidth@\totwidth@
+            \else
+                \global\let\gdisplaywidth@\displaywidth
+            \fi
+        \fi
+    \endgroup
+}
+\def\math at cr@@@gather{%
+    \ifst at rred\nonumber\fi
+   &\relax
+    \make at display@tag
+    \ifst at rred\else\global\@eqnswtrue\fi
+    \global\advance\row@\@ne
+    \cr
+}
+\def\calc at shift@gather{%
+    \dimen@\mintagsep\relax
+    \tagwidth@\tag at width\row@\relax
+    \if at fleqn
+        \global\eqnshift@\@mathmargin
+        \ifdim\tagwidth@>\z@
+            \advance\dimen@\tagwidth@
+            \iftagsleft@
+                \ifdim\dimen@>\@mathmargin
+                    \global\shifttag at true
+                \fi
+            \else
+                \advance\dimen@\@mathmargin
+                \advance\dimen@\wdz@
+                \ifdim\dimen@>\displaywidth
+                   \global\shifttag at true
+                \fi
+            \fi
+        \fi
+    \else
+        \global\eqnshift@\displaywidth
+        \global\advance\eqnshift at -\wdz@
+        \ifdim\tagwidth@>\z@
+            \multiply\dimen@\tw@
+            \advance\dimen@\wdz@
+            \advance\dimen@\tagwidth@
+            \ifdim\dimen@>\displaywidth
+                \global\shifttag at true
+            \else
+                \ifdim\eqnshift@<4\tagwidth@
+                    \global\advance\eqnshift at -\tagwidth@
+                \fi
+            \fi
+        \fi
+        \global\divide\eqnshift@\tw@
+        \iftagsleft@
+            \global\eqnshift at -\eqnshift@
+            \global\advance\eqnshift@\displaywidth
+            \global\advance\eqnshift at -\wdz@
+        \fi
+        \ifdim\eqnshift@<\z@
+            \global\eqnshift@\z@
+        \fi
+    \fi
+}
+\def\place at tag@gather{%
+    \iftagsleft@
+        \kern-\gdisplaywidth@
+        \ifshifttag@
+            \rlap{\vbox{%
+                \normalbaselines
+                \boxz@
+                \vbox to\lineht@{}%
+                \raise at tag
+            }}%
+            \global\shifttag at false
+        \else
+            \rlap{\boxz@}%
+        \fi
+    \else
+        \ifdim\totwidth@>\displaywidth
+            \dimen@\totwidth@
+            \advance\dimen at -\displaywidth
+            \kern-\dimen@
+        \fi
+        \ifshifttag@
+            \llap{\vtop{%
+                \raise at tag
+                \normalbaselines
+                \setbox\@ne\null
+                \dp\@ne\lineht@
+                \box\@ne
+                \boxz@
+            }}%
+            \global\shifttag at false
+        \else
+            \llap{\boxz@}%
+        \fi
+    \fi
+}
+\def\set at gather@field{%
+    \iftagsleft@
+        \global\lineht@\ht\z@
+    \else
+        \global\lineht@\dp\z@
+    \fi
+    \kern\eqnshift@
+    \boxz@
+    \hfil
+}
+\newif\ifxxat@
+
+\newif\ifcheckat@
+
+\let\xatlevel@\@empty
+\def\start at align#1#2#3{%
+    \let\xatlevel@#1% always \z@, \@ne, or \tw@
+    \maxfields@#3\relax
+    \ifnum\maxfields@>\m at ne
+        \checkat at true
+        \ifnum\xatlevel@=\tw@
+            \xxat at true
+        \fi
+        \multiply\maxfields@\tw@
+    \else
+        \checkat at false
+    \fi
+    \ifingather@
+        \iffalse{\fi\ifnum0=`}\fi
+        \DN@{\vcenter\bgroup\savealignstate@\align@#2}%
+    \else
+        \ifmmode
+          \if at display
+             \DN@{\align at recover}%
+          \else
+            \nomath at env
+            \DN@{\@namedef{end\@currenvir}{}\@gobble}%
+          \fi
+        \else
+            $$%
+            \let\split\insplit@
+            \DN@{\align@#2}%
+        \fi
+    \fi
+    \collect at body\next@
+}
+\def\align at recover#1#2#3{%
+  \endgroup
+  \@amsmath at err{%
+Erroneous nesting of equation structures;\MessageBreak
+trying to recover with `aligned'%
+  }\@ehc
+  \begin{aligned}\relax#1\end{aligned}%
+}
+\newenvironment{alignat}{%
+  \start at align\z@\st at rredfalse
+}{%
+  \endalign
+}
+\newenvironment{alignat*}{%
+  \start at align\z@\st at rredtrue
+}{%
+  \endalign
+}
+\newenvironment{xalignat}{%
+  \start at align\@ne\st at rredfalse
+}{%
+  \endalign
+}
+\newenvironment{xalignat*}{%
+  \start at align\@ne\st at rredtrue
+}{%
+  \endalign
+}
+\newenvironment{xxalignat}{%
+  \start at align\tw@\st at rredtrue
+}{%
+  \endalign
+}
+\newenvironment{align}{%
+  \start at align\@ne\st at rredfalse\m at ne
+}{%
+  \math at cr \black@\totwidth@
+  \egroup
+  \ifingather@
+    \restorealignstate@
+    \egroup
+    \nonumber
+    \ifnum0=`{\fi\iffalse}\fi
+  \else
+    $$%
+  \fi
+  \ignorespacesafterend
+}
+\newenvironment{align*}{%
+  \start at align\@ne\st at rredtrue\m at ne
+}{%
+  \endalign
+}
+\newenvironment{flalign}{%
+  \start at align\tw@\st at rredfalse\m at ne
+}{%
+  \endalign
+}
+\newenvironment{flalign*}{%
+  \start at align\tw@\st at rredtrue\m at ne
+}{%
+  \endalign
+}
+\def\align@#1#2{%
+    \inalign at true \intertext@ \Let@ \chardef\dspbrk at context\z@
+    \ifingather@\else\displ at y@\fi
+    \let\math at cr@@@\math at cr@@@align
+    \ifxxat@\else \let\tag\tag at in@align \fi
+    \let\label\label at in@display
+    #1% set st at r
+    \ifst at rred\else \global\@eqnswtrue \fi
+    \measure@{#2}%
+    \global\row@\z@
+    \tabskip\eqnshift@
+    \halign\bgroup
+        \span\align at preamble\crcr
+        #2%
+}
+\def\math at cr@@@align{%
+  \ifst at rred\nonumber\fi
+  \if at eqnsw \global\tag at true \fi
+  \global\advance\row@\@ne
+  \add at amps\maxfields@
+  \omit
+  \kern-\alignsep@
+  \iftag@
+    \setboxz at h{\@lign\strut@{\make at display@tag}}%
+    \place at tag
+  \fi
+  \ifst at rred\else\global\@eqnswtrue\fi
+  \global\lineht@\z@
+  \cr
+}
+\def\math at cr@@@align at measure{%
+   &\omit
+    \global\advance\row@\@ne
+    \ifst at rred\nonumber\fi
+    \if at eqnsw \global\tag at true \fi
+    \ifnum\column@>\maxfields@
+        \ifcheckat@
+            \begingroup
+              \measuring at false
+              \@amsmath at err{Extra & on this line}%
+                {\the\andhelp@}% "An extra & here is disastrous"
+            \endgroup
+        \else
+            \global\maxfields@\column@
+        \fi
+    \fi
+    \setboxz at h{\@lign\strut@{%
+        \if at eqnsw
+            \stepcounter{equation}%
+            \tagform@\theequation
+        \else
+            \iftag@\df at tag\fi
+        \fi
+    }}%
+    \savetaglength@
+    \ifst at rred\else\global\@eqnswtrue\fi
+    \cr
+}
+\let\field at lengths\@empty
+
+\def\savefieldlength@{%
+    \begingroup
+        \let\or\relax
+        \xdef\field at lengths{%
+            \field at lengths
+            \ifnum\column@=0
+                \or
+            \else
+                ,%
+            \fi
+            \the\wdz@
+        }%
+    \endgroup
+}
+
+\def\fieldlengths@#1{%
+    \ifcase\@xp#1\field at lengths\fi
+}
+\let\maxcolumn at widths\@empty
+\def\maxcol at width#1{%
+    \ifcase\@xp#1\maxcolumn at widths\fi\relax
+}
+\def\measure@#1{%
+    \begingroup
+        \measuring at true
+        \global\eqnshift@\z@
+        \global\alignsep@\z@
+        \global\let\tag at lengths\@empty
+        \global\let\field at lengths\@empty
+        \savecounters@
+        \global\setbox0\vbox{%
+            \let\math at cr@@@\math at cr@@@align at measure
+            \everycr{\noalign{\global\tag at false
+              \global\let\raise at tag\@empty \global\column@\z@}}%
+            \let\label\@gobble
+            \global\row@\z@
+            \tabskip\z@
+            \halign{\span\align at preamble\crcr
+                #1%
+                \math at cr@@@
+                \global\column@\z@
+                \add at amps\maxfields@\cr
+            }%
+        }%
+        \restorecounters@
+        \ifodd\maxfields@
+            \global\advance\maxfields@\@ne
+        \fi
+        \ifnum\xatlevel@=\tw@
+            \ifnum\maxfields@<\thr@@
+                \let\xatlevel@\z@
+            \fi
+        \fi
+        \setbox\z@\vbox{%
+          \unvbox\z@ \unpenalty \global\setbox\@ne\lastbox
+        }%
+        \global\totwidth@\wd\@ne
+        \if at fleqn \global\advance\totwidth@\@mathmargin \fi
+        \global\let\maxcolumn at widths\@empty
+        \begingroup
+          \let\or\relax
+          \loop
+            \global\setbox\@ne\hbox{%
+              \unhbox\@ne \unskip \global\setbox\thr@@\lastbox
+            }%
+          \ifhbox\thr@@
+           \xdef\maxcolumn at widths{ \or \the\wd\thr@@ \maxcolumn at widths}%
+          \repeat
+        \endgroup
+        \dimen@\displaywidth
+        \advance\dimen at -\totwidth@
+        \ifcase\xatlevel@
+            \global\alignsep@\z@
+            \let\minalignsep\z@
+            \@tempcntb\z@
+            \if at fleqn
+                \@tempcnta\@ne
+                \global\eqnshift@\@mathmargin
+            \else
+                \@tempcnta\tw@
+                \global\eqnshift@\dimen@
+                \global\divide\eqnshift@\@tempcnta
+            \fi
+        \or
+            \@tempcntb\maxfields@
+            \divide\@tempcntb\tw@
+            \@tempcnta\@tempcntb
+            \advance\@tempcntb\m at ne
+            \if at fleqn
+                \global\eqnshift@\@mathmargin
+                \global\alignsep@\dimen@
+                \global\divide\alignsep@\@tempcnta
+            \else
+                \global\advance\@tempcnta\@ne
+                \global\eqnshift@\dimen@
+                \global\divide\eqnshift@\@tempcnta
+                \global\alignsep@\eqnshift@
+            \fi
+        \or
+            \@tempcntb\maxfields@
+            \divide\@tempcntb\tw@
+            \global\advance\@tempcntb\m at ne
+            \global\@tempcnta\@tempcntb
+            \global\eqnshift@\z@
+            \global\alignsep@\dimen@
+            \if at fleqn
+                \global\advance\alignsep@\@mathmargin\relax
+            \fi
+            \global\divide\alignsep@\@tempcntb
+        \fi
+        \ifdim\alignsep@<\minalignsep\relax
+            \global\alignsep@\minalignsep\relax
+            \ifdim\eqnshift@>\z@
+                \if at fleqn\else
+                    \global\eqnshift@\displaywidth
+                    \global\advance\eqnshift at -\totwidth@
+                    \global\advance\eqnshift at -\@tempcntb\alignsep@
+                    \global\divide\eqnshift@\tw@
+                \fi
+            \fi
+        \fi
+        \ifdim\eqnshift@<\z@
+            \global\eqnshift@\z@
+        \fi
+        \calc at shift@align
+        \global\tagshift@\totwidth@
+        \global\advance\tagshift@\@tempcntb\alignsep@
+        \if at fleqn
+            \ifnum\xatlevel@=\tw@
+                \global\advance\tagshift at -\@mathmargin\relax
+            \fi
+        \else
+            \global\advance\tagshift@\eqnshift@
+        \fi
+        \iftagsleft@ \else
+            \global\advance\tagshift at -\displaywidth
+        \fi
+        \dimen@\minalignsep\relax
+        \global\advance\totwidth@\@tempcntb\dimen@
+        \ifdim\totwidth@>\displaywidth
+            \global\let\displaywidth@\totwidth@
+        \else
+            \global\let\displaywidth@\displaywidth
+        \fi
+    \endgroup
+}
+\iftagsleft@\if at fleqn
+    \def\calc at shift@align{%
+        \global\let\tag at shifts\@empty
+        \begingroup
+            \@tempdima\@mathmargin\relax
+            \advance\@tempdima-\mintagsep\relax
+            \loop
+                \ifnum\row@>0
+                    \ifdim\tag at width\row@>\z@
+                        \x at calc@shift at lf
+                    \else
+                        \saveshift at 0%
+                    \fi
+                    \advance\row@\m at ne
+            \repeat
+        \endgroup
+    }
+    \def\x at calc@shift at lf{%
+        \ifdim\eqnshift@=\z@
+            \global\eqnshift@\@mathmargin\relax
+            \alignsep@\displaywidth
+            \advance\alignsep at -\totwidth@
+            \global\divide\alignsep@\@tempcntb
+            \ifdim\alignsep@<\minalignsep\relax
+                \global\alignsep@\minalignsep\relax
+            \fi
+        \fi
+        \ifdim\tag at width\row@>\@tempdima
+            \saveshift at 1%
+        \else
+            \saveshift at 0%
+        \fi
+    }
+\fi\fi
+\iftagsleft@\else\if at fleqn
+    \def\calc at shift@align{%
+        \global\let\tag at shifts\@empty
+        \begingroup
+            \loop
+                \ifnum\row@>0
+                    \ifdim\tag at width\row@>\z@
+                        \x at calc@shift at rf
+                    \else
+                        \saveshift at 0%
+                    \fi
+                    \advance\row@\m at ne
+            \repeat
+        \endgroup
+    }
+    \def\x at calc@shift at rf{%
+        \column@\z@
+        \@tempdimb\z@
+        \@tempdimc\z@
+        \edef\@tempb{\fieldlengths@\row@}%
+        \@for\@tempa:=\@tempb\do{%
+            \advance\column@\@ne
+            \x at rcalc@width
+        }%
+        \begingroup
+            \advance\column@\m at ne
+            \divide\column@\tw@
+            \ifnum\@tempcntb>\column@
+                \advance\@tempcnta-\@tempcntb
+                \advance\@tempcnta\column@
+                \@tempcntb\column@
+            \fi
+            \tagwidth@\tag at width\row@\relax
+            \@tempdima\eqnshift@
+            \advance\@tempdima\@tempdimc\relax
+            \advance\@tempdima\tagwidth@
+            \dimen@\minalignsep\relax
+            \multiply\dimen@\@tempcntb
+            \advance\dimen@\mintagsep\relax
+            \advance\dimen@\@tempdima
+            \ifdim\dimen@>\displaywidth
+                \saveshift at 1%
+            \else
+                \saveshift at 0%
+                \dimen@\alignsep@\relax
+                \multiply\dimen@\@tempcntb
+                \advance\dimen@\@tempdima
+                \advance\dimen@\tagwidth@
+                \ifdim\dimen@>\displaywidth
+                    \dimen@\displaywidth
+                    \advance\dimen at -\@tempdima
+                    \ifnum\xatlevel@=\tw@
+                        \advance\dimen at -\mintagsep\relax
+                    \fi
+                    \divide\dimen@\@tempcnta
+                    \ifdim\dimen@<\minalignsep\relax
+                        \global\alignsep@\minalignsep\relax
+                    \else
+                        \global\alignsep@\dimen@
+                    \fi
+                \fi
+            \fi
+        \endgroup
+    }
+\fi\fi
+\iftagsleft@\else\if at fleqn\else
+    \def\calc at shift@align{%
+        \global\let\tag at shifts\@empty
+        \begingroup
+            \loop
+                \ifnum\row@>0
+                    \ifdim\tag at width\row@>\z@
+                        \x at calc@shift at rc
+                    \else
+                        \saveshift at 0%
+                    \fi
+                    \advance\row@\m at ne
+            \repeat
+        \endgroup
+    }
+    \def\x at calc@shift at rc{%
+        \column@\z@
+        \@tempdimb\z@
+        \@tempdimc\z@
+        \edef\@tempb{\fieldlengths@\row@}%
+        \@for\@tempa:=\@tempb\do{%
+            \advance\column@\@ne
+            \x at rcalc@width
+        }%
+        \begingroup
+            \advance\column@\m at ne
+            \divide\column@\tw@
+            \ifnum\@tempcntb>\column@
+                \advance\@tempcnta-\@tempcntb
+                \advance\@tempcnta\column@
+                \@tempcntb\column@
+            \fi
+            \tagwidth@\tag at width\row@\relax
+            \@tempdima\@tempdimc
+            \advance\@tempdima\tagwidth@
+            \dimen@\minalignsep\relax
+            \multiply\dimen@\@tempcntb
+            \advance\dimen@\mintagsep\relax
+            \ifnum\xatlevel@=\tw@ \else
+                \advance\dimen@\mintagsep\relax
+            \fi
+            \advance\dimen@\@tempdima
+            \ifdim\dimen@>\displaywidth
+                \saveshift at 1%
+            \else
+                \saveshift at 0%
+                \dimen@\eqnshift@
+                \advance\dimen@\@tempdima
+                \advance\dimen@\@tempcntb\alignsep@
+                \advance\dimen@\tagwidth@
+                \ifdim\dimen@>\displaywidth
+                    \dimen@\displaywidth
+                    \advance\dimen at -\@tempdima
+                    \ifnum\xatlevel@=\tw@
+                        \advance\dimen at -\mintagsep\relax
+                    \fi
+                    \divide\dimen@\@tempcnta
+                    \ifdim\dimen@<\minalignsep\relax
+                        \global\alignsep@\minalignsep\relax
+                        \eqnshift@\displaywidth
+                        \advance\eqnshift at -\@tempdima
+                        \advance\eqnshift at -\@tempcntb\alignsep@
+                        \global\divide\eqnshift@\tw@
+                    \else
+                        \ifdim\dimen@<\eqnshift@
+                            \ifdim\dimen@<\z@
+                                \global\eqnshift@\z@
+                            \else
+                                \global\eqnshift@\dimen@
+                            \fi
+                        \fi
+                        \ifdim\dimen@<\alignsep@
+                            \global\alignsep@\dimen@
+                        \fi
+                    \fi
+                \fi
+            \fi
+        \endgroup
+    }
+\fi\fi
+\iftagsleft@\else
+    \def\x at rcalc@width{%
+        \ifdim\@tempa > \z@
+            \advance\@tempdimc\@tempdimb
+            \ifodd\column@
+                \advance\@tempdimc\maxcol at width\column@
+                \@tempdimb\z@
+            \else
+                \advance\@tempdimc\@tempa\relax
+                \@tempdimb\maxcol at width\column@
+                \advance\@tempdimb-\@tempa\relax
+            \fi
+        \else
+            \advance\@tempdimb\maxcol at width\column@\relax
+        \fi
+    }
+\fi
+\iftagsleft@\if at fleqn\else
+    \def\calc at shift@align{%
+        \global\let\tag at shifts\@empty
+        \begingroup
+            \loop
+                \ifnum\row@>\z@
+                    \ifdim\tag at width\row@>\z@
+                        \x at calc@shift at lc
+                    \else
+                        \saveshift at 0%
+                    \fi
+                    \advance\row@\m at ne
+            \repeat
+        \endgroup
+    }
+    \def\x at calc@shift at lc{%
+        \column@\z@
+        \@tempdima\z@ % ``width of equation''
+        \@tempdimb\z@ % ``indent of equation''
+        \edef\@tempb{\fieldlengths@\row@}%
+        \@for\@tempa:=\@tempb\do{%
+            \advance\column@\@ne
+            \x at lcalc@width
+        }%
+        \begingroup
+            \tagwidth@\tag at width\row@\relax
+            \@tempdima\totwidth@
+            \advance\@tempdima-\@tempdimb
+            \advance\@tempdima\tagwidth@
+            \dimen@\minalignsep\relax
+            \multiply\dimen@\@tempcntb
+            \advance\dimen@\mintagsep\relax
+            \ifnum\xatlevel@=\tw@ \else
+                \advance\dimen@\mintagsep\relax
+            \fi
+            \advance\dimen@\@tempdima
+            \ifdim\dimen@>\displaywidth
+                \saveshift at 1%
+            \else
+                \saveshift at 0%
+                \dimen@\alignsep@
+                \multiply\dimen@\count@
+                \advance\dimen@\eqnshift@
+                \advance\dimen@\@tempdimb
+                \ifdim\dimen@<2\tagwidth@
+                    \dimen@\displaywidth
+                    \advance\dimen at -\@tempdima
+                    \ifnum\xatlevel@=\tw@
+                        \advance\dimen at -\mintagsep\relax
+                    \fi
+                    \ifnum\@tempcnta>\z@
+                      \divide\dimen@\@tempcnta
+                    \else \dimen@\z@
+                    \fi
+                    \ifdim\dimen@<\minalignsep\relax
+                        \global\alignsep@\minalignsep\relax
+                        \dimen@\displaywidth
+                        \advance\dimen at -\@tempdima
+                        \advance\dimen at -\@tempcntb\alignsep@
+                        \global\divide\dimen@\tw@
+                    \else
+                        \ifdim\dimen@<\alignsep@
+                            \global\alignsep@\dimen@
+                        \fi
+                    \fi
+                    \ifnum\xatlevel@=\tw@
+                        \dimen@\mintagsep\relax
+                    \fi
+                    \advance\dimen@\tagwidth@
+                    \advance\dimen at -\@tempdimb
+                    \advance\dimen at -\count@\alignsep@
+                    \ifdim\dimen@>\eqnshift@
+                        \global\eqnshift@\dimen@
+                    \fi
+                \fi
+            \fi
+        \endgroup
+    }
+    \def\x at lcalc@width{%
+        \ifdim\@tempdima = \z@
+            \ifdim\@tempa > \z@
+                \@tempdima\p@
+                \ifodd\column@
+                    \advance\@tempdimb \maxcol at width\column@
+                    \advance\@tempdimb-\@tempa
+                \fi
+                \count@\column@
+                \advance\count@\m at ne
+                \divide\count@\tw@
+                \advance\@tempcnta-\count@
+                \advance\@tempcntb-\count@
+            \else
+                \advance\@tempdimb \maxcol at width\column@\relax
+            \fi
+        \fi
+    }
+\fi\fi
+\def\place at tag{%
+    \iftagsleft@
+        \kern-\tagshift@
+        \if1\shift at tag\row@\relax
+            \rlap{\vbox{%
+                \normalbaselines
+                \boxz@
+                \vbox to\lineht@{}%
+                \raise at tag
+            }}%
+        \else
+            \rlap{\boxz@}%
+        \fi
+        \kern\displaywidth@
+    \else
+        \kern-\tagshift@
+        \if1\shift at tag\row@\relax
+            \llap{\vtop{%
+                \raise at tag
+                \normalbaselines
+                \setbox\@ne\null
+                \dp\@ne\lineht@
+                \box\@ne
+                \boxz@
+            }}%
+        \else
+            \llap{\boxz@}%
+        \fi
+    \fi
+}
+\def\align at preamble{%
+   &\hfil
+    \strut@
+    \setboxz at h{\@lign$\m at th\displaystyle{##}$}%
+    \ifmeasuring@\savefieldlength@\fi
+    \set at field
+    \tabskip\z at skip
+   &\setboxz at h{\@lign$\m at th\displaystyle{{}##}$}%
+    \ifmeasuring@\savefieldlength@\fi
+    \set at field
+    \hfil
+    \tabskip\alignsep@
+}
+\def\set at field{%
+    \column at plus
+    \iftagsleft@
+        \ifdim\ht\z@>\lineht@
+            \global\lineht@\ht\z@
+        \fi
+    \else
+        \ifdim\dp\z@>\lineht@
+            \global\lineht@\dp\z@
+        \fi
+    \fi
+    \boxz@
+}
+\edef\split at err#1{%
+    \@nx\@amsmath at err{%
+        \string\begin{split} won't work here%
+    }{%
+        \@xp\@nx\csname
+  Did you forget a preceding \string\begin{equation}?^^J%
+  If not, perhaps the `aligned' environment is what
+  you want.\endcsname}%
+}
+\newenvironment{split}{%
+  \if at display
+    \ifinner
+      \@xp\@xp\@xp\split at aligned
+    \else
+      \ifst at rred \else \global\@eqnswtrue \fi
+    \fi
+  \else \let\endsplit\@empty \@xp\collect at body\@xp\split at err
+  \fi
+  \collect at body\gather at split
+}{%
+      \crcr
+    \egroup
+  \egroup
+  \iftagsleft@ \@xp\lendsplit@ \else \@xp\rendsplit@ \fi
+}
+\let\split at tag\relax % init
+\def\gather at split#1#2#3{%
+  \@xp\endgroup \reset at equation % math at cr will handle equation numbering
+  \iftag@
+     \toks@\@xp{\df at tag}%
+     \edef\split at tag{%
+       \gdef\@nx\df at tag{\the\toks@}%
+       \global\@nx\tag at true \@nx\nonumber
+     }%
+  \else \let\split at tag\@empty
+  \fi
+  \spread at equation
+  \vcenter\bgroup
+    \gather@{\split at tag  \begin{split}#1\end{split}}%
+    \def\endmathdisplay at a{%
+      \math at cr \black@ \totwidth@ \egroup
+      \egroup
+    }%
+}
+\def\insplit@{%
+  \global\setbox\z@\vbox\bgroup
+    \Let@ \chardef\dspbrk at context\@ne \restore at math@cr
+    \default at tag % disallow use of \tag here
+    \ialign\bgroup
+      \hfil
+      \strut@
+      $\m at th\displaystyle{##}$%
+     &$\m at th\displaystyle{{}##}$%
+      \hfill % Why not \hfil?---dmj, 1994/12/28
+      \crcr
+}
+\def\rendsplit@{%
+    \ifinalign@
+        \global\setbox9 \vtop{%
+            \unvcopy\z@
+            \global\setbox8 \lastbox
+            \unskip
+        }%
+        \setbox\@ne\hbox{%
+            \unhcopy8
+            \unskip
+            \global\setbox\tw@\lastbox
+            \unskip
+            \global\setbox\thr@@\lastbox
+        }%
+        \ifctagsplit@
+            \gdef\split@{%
+                \hbox to\wd\thr@@{}%
+               &\vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}%
+            }%
+        \else
+            \global\setbox7 \hbox{\unhbox\tw@\unskip}%
+            \gdef\split@{%
+                \global\@tempcnta\column@
+               &\setboxz at h{}%
+                \savetaglength@
+                \global\advance\row@\@ne
+                \vbox{\moveleft\wd\thr@@\box9}%
+                \crcr
+                \noalign{\global\lineht@\z@}%
+                \add at amps\@tempcnta
+                \box\thr@@
+               &\box7
+            }%
+        \fi
+    \else
+        \ifctagsplit@
+            \gdef\split@{\vcenter{\boxz@}}%
+        \else
+            \gdef\split@{%
+                \boxz@
+            }%
+        \fi
+    \fi
+    \aftergroup\split@
+}
+\def\lendsplit@{%
+    \global\setbox9\vtop{\unvcopy\z@}%
+    \ifinalign@
+        \setbox\@ne\vbox{%
+            \unvcopy\z@
+            \global\setbox8\lastbox
+        }%
+        \setbox\@ne\hbox{%
+            \unhcopy8%
+            \unskip
+            \setbox\tw@\lastbox
+            \unskip
+            \global\setbox\thr@@\lastbox
+        }%
+        \ifctagsplit@
+            \gdef\split@{%
+                \hbox to\wd\thr@@{}%
+               &\vcenter{\vbox{\moveleft\wd\thr@@\box9}}%
+            }%
+        \else
+            \gdef\split@{%
+                \hbox to\wd\thr@@{}%
+               &\vbox{\moveleft\wd\thr@@\box9}%
+            }%
+        \fi
+    \else
+        \ifctagsplit@
+            \gdef\split@{\vcenter{\box9}}%
+        \else
+            \gdef\split@{\box9}%
+        \fi
+    \fi
+    \aftergroup\split@
+}
+\def\split at aligned#1#2{%
+   \iffalse{\fi\ifnum0=`}\fi
+   \collect at body\split at al@a}
+\def\split at al@a#1#2#3{%
+  \split at warning
+  \endgroup
+  \toks@{\begin{aligned}}%
+  \if at fleqn \split at al@tagcheck \fi
+  \the\toks@\relax#1\end{aligned}%
+  \ifnum0=`{\fi\iffalse}\fi
+}
+\def\split at al@tagcheck{%
+   \ifctagsplit@
+   \else
+     \iftagsleft@ \toks@\@xp{\the\toks@ [t]}%
+     \else \toks@\@xp{\the\toks@ [b]}%
+     \fi
+   \fi
+}
+\def\split at warning{%
+  \PackageWarning{amsmath}{%
+Cannot use `split' here;\MessageBreak trying to recover with `aligned'}%
+}
+\newskip\multlinegap
+\multlinegap10pt
+\newskip\multlinetaggap
+\multlinetaggap10pt
+\def\start at multline#1{%
+    \RIfM@
+        \nomath at env
+        \DN@{\@namedef{end\@currenvir}{}\@gobble}%
+    \else
+        $$%
+        #1%
+        \ifst at rred
+            \nonumber
+        \else
+            \global\@eqnswtrue
+        \fi
+        \let\next@\multline@
+    \fi
+    \collect at body\next@
+}
+\newenvironment{multline}{%
+  \start at multline\st at rredfalse
+}{%
+  \iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi
+  \ignorespacesafterend
+}
+\newenvironment{multline*}{\start at multline\st at rredtrue}{\endmultline}
+\def\multline@#1{%
+    \Let@
+    \@display at init{\global\advance\row@\@ne \global\dspbrk at lvl\m at ne}%
+    \chardef\dspbrk at context\z@
+    \restore at math@cr
+    \let\tag\tag at in@align
+    \global\tag at false \global\let\raise at tag\@empty
+    \mmeasure@{#1}%
+    \let\tag\gobble at tag \let\label\@gobble
+    \tabskip \if at fleqn \@mathmargin \else \z at skip \fi
+    \totwidth@\displaywidth
+    \if at fleqn
+        \advance\totwidth at -\@mathmargin
+    \fi
+    \halign\bgroup
+        \hbox to\totwidth@{%
+            \if at fleqn
+                \hskip \@centering \relax
+            \else
+                \hfil
+            \fi
+            \strut@
+            $\m at th\displaystyle{}##\endmultline at math
+            \hfil
+        }%
+        \crcr
+        \if at fleqn
+            \hskip-\@mathmargin
+            \def\multline at indent{\hskip\@mathmargin}% put it back
+        \else
+            \hfilneg
+            \def\multline at indent{\hskip\multlinegap}%
+        \fi
+        \iftagsleft@
+            \iftag@
+                \begingroup
+                    \ifshifttag@
+                        \rlap{\vbox{%
+                                \normalbaselines
+                                \hbox{%
+                                    \strut@
+                                    \make at display@tag
+                                }%
+                                \vbox to\lineht@{}%
+                                \raise at tag
+                        }}%
+                        \multline at indent
+                    \else
+                        \setbox\z@\hbox{\make at display@tag}%
+                        \dimen@\@mathmargin \advance\dimen at -\wd\z@
+                        \ifdim\dimen@<\multlinetaggap
+                          \dimen@\multlinetaggap
+                        \fi
+                        \box\z@ \hskip\dimen@\relax
+                    \fi
+                \endgroup
+            \else
+                \multline at indent
+            \fi
+        \else
+            \multline at indent
+        \fi
+    #1%
+}
+\def\endmultline at math{$}
+\def\lendmultline@{%
+        \hfilneg
+        \hskip\multlinegap
+        \math at cr
+    \egroup
+    $$%
+}
+\def\rendmultline@{%
+    \iftag@
+        $\let\endmultline at math\relax
+            \ifshifttag@
+                \hskip\multlinegap
+                \llap{\vtop{%
+                    \raise at tag
+                    \normalbaselines
+                    \setbox\@ne\null
+                    \dp\@ne\lineht@
+                    \box\@ne
+                    \hbox{\strut@\make at display@tag}%
+                }}%
+            \else
+                \hskip\multlinetaggap
+                \make at display@tag
+            \fi
+    \else
+        \hskip\multlinegap
+    \fi
+    \hfilneg
+        \math at cr
+    \egroup$$%
+}
+\def\mmeasure@#1{%
+    \begingroup
+        \measuring at true
+        \def\label##1{%
+          \begingroup\measuring at false\label at in@display{##1}\endgroup}%
+        \def\math at cr@@@{\cr}%
+        \let\shoveleft\@iden \let\shoveright\@iden
+        \savecounters@
+        \global\row@\z@
+        \setbox\@ne\vbox{%
+            \global\let\df at tag\@empty
+            \halign{%
+                \setboxz at h{\@lign$\m at th\displaystyle{}##$}%
+                \iftagsleft@
+                    \ifnum\row@=\@ne
+                        \global\totwidth@\wdz@
+                        \global\lineht@\ht\z@
+                    \fi
+                \else
+                    \global\totwidth@\wdz@
+                    \global\lineht@\dp\z@
+                \fi
+                \crcr
+                #1%
+                \crcr
+            }%
+        }%
+        \ifx\df at tag\@empty\else\global\tag at true\fi
+        \if at eqnsw\global\tag at true\fi
+        \iftag@
+            \setboxz at h{%
+                \if at eqnsw
+                    \stepcounter{equation}%
+                    \tagform@\theequation
+                \else
+                    \df at tag
+                \fi
+            }%
+            \global\tagwidth@\wdz@
+            \dimen@\totwidth@
+            \advance\dimen@\tagwidth@
+            \advance\dimen@\multlinetaggap
+            \iftagsleft@\else
+                \if at fleqn
+                    \advance\dimen@\@mathmargin
+                \fi
+            \fi
+            \ifdim\dimen@>\displaywidth
+                \global\shifttag at true
+            \else
+                \global\shifttag at false
+            \fi
+        \fi
+        \restorecounters@
+    \endgroup
+}
+\iftagsleft@
+    \def\shoveright#1{%
+        #1%
+        \hfilneg
+        \hskip\multlinegap
+    }
+\else
+    \def\shoveright#1{%
+        #1%
+        \hfilneg
+        \iftag@
+            \ifshifttag@
+                \hskip\multlinegap
+            \else
+                \hskip\tagwidth@
+                \hskip\multlinetaggap
+            \fi
+        \else
+            \hskip\multlinegap
+        \fi
+    }
+\fi
+
+\if at fleqn
+    \def\shoveleft#1{#1}%
+\else
+    \iftagsleft@
+        \def\shoveleft#1{%
+            \setboxz at h{$\m at th\displaystyle{}#1$}%
+            \setbox\@ne\hbox{$\m at th\displaystyle#1$}%
+            \hfilneg
+            \iftag@
+                \ifshifttag@
+                    \hskip\multlinegap
+                \else
+                    \hskip\tagwidth@
+                    \hskip\multlinetaggap
+                \fi
+            \else
+                \hskip\multlinegap
+            \fi
+            \hskip.5\wd\@ne
+            \hskip-.5\wdz@
+            #1%
+        }
+    \else
+        \def\shoveleft#1{%
+            \setboxz at h{$\m at th\displaystyle{}#1$}%
+            \setbox\@ne\hbox{$\m at th\displaystyle#1$}%
+            \hfilneg
+            \hskip\multlinegap
+            \hskip.5\wd\@ne
+            \hskip-.5\wdz@
+            #1%
+        }
+    \fi
+\fi
+\@saveprimitive\leqno\@@leqno
+\@saveprimitive\eqno\@@eqno
+\def\eqno{\@@eqno\let\eqno\relax\let\leqno\relax}
+\def\leqno{\@@leqno\let\leqno\relax\let\eqno\relax}
+\let\veqno=\@@eqno
+\iftagsleft@ \let\veqno=\@@leqno \fi
+\@ifundefined{SK@@label}{%
+  \let\SK@@label\relax \let\SK at equationtrue\relax
+}{}
+\let\reset at equation\@empty
+\let\alt at tag\@empty
+\def\tag at in@display#1#{\relax\tag at in@display at a{#1}}
+\def\tag at in@display at a#1#2{%
+  \iftag@
+    \invalid at tag{Multiple \string\tag}\relax
+  \else
+    \global\tag at true \nonumber \reset at equation \st at rredtrue
+    \if *\string#1%
+      \gdef\alt at tag{\def\SK at tagform@{#2\@gobble}%
+        \ifx\SK@@label\relax \let\tagform@\SK at tagform@ \fi
+      }%
+      \make at df@tag@@{#2}%
+    \else
+      \make at df@tag@@@{#2}%
+    \fi
+  \fi
+}
+\let\restore at hfuzz\@empty
+\def\mathdisplay#1{%
+  \ifmmode \@badmath
+  \else
+    $$\def\@currenvir{#1}%
+    \let\dspbrk at context\z@
+    \let\tag\tag at in@display \let\label\label at in@display \SK at equationtrue
+    \global\let\df at label\@empty \global\let\df at tag\@empty
+    \global\tag at false
+    \let\mathdisplay at push\mathdisplay@@push
+    \let\mathdisplay at pop\mathdisplay@@pop
+    \if at fleqn
+      \edef\restore at hfuzz{\hfuzz\the\hfuzz\relax}%
+      \hfuzz\maxdimen
+      \setbox\z@\hbox to\displaywidth\bgroup
+        \let\split at warning\relax \restore at hfuzz
+        \everymath\@emptytoks \m at th $\displaystyle
+    \fi
+  \fi
+}
+\def\endmathdisplay#1{%
+  \ifmmode \else \@badmath \fi
+  \endmathdisplay at a
+  $$%
+  \global\let\df at label\@empty \global\let\df at tag\@empty
+  \global\tag at false \global\let\alt at tag\@empty
+  \global\@eqnswfalse
+}
+\def\endmathdisplay at a{%
+  \if at eqnsw \gdef\df at tag{\tagform@\theequation}\fi
+  \if at fleqn \@xp\endmathdisplay at fleqn
+  \else \ifx\df at tag\@empty \else \veqno \alt at tag \df at tag \fi
+    \ifx\df at label\@empty \else \@xp\ltx at label\@xp{\df at label}\fi
+  \fi
+  \ifnum\dspbrk at lvl>\m at ne
+    \postdisplaypenalty -\@getpen\dspbrk at lvl
+    \global\dspbrk at lvl\m at ne
+  \fi
+}
+\let\too at wide\@ne
+\def\endmathdisplay at fleqn{%
+  $\hfil\hskip\@mathmargin\egroup
+  \ifnum\badness<\inf at bad \let\too at wide\@ne \else \let\too at wide\z@ \fi
+  \ifx\@empty\df at tag
+  \else
+    \setbox4\hbox{\df at tag
+      \ifx\df at label\@empty \else \@xp\ltx at label\@xp{\df at label}\fi
+    }%
+  \fi
+  \csname emdf@%
+    \ifx\df at tag\@empty U\else \iftagsleft@ L\else R\fi\fi
+  \endcsname
+}
+\def\emdf at U{%
+  \restore at hfuzz
+  \ifodd\too at wide % not too wide: just need to swap the glue around
+    \hbox to\displaywidth{\hskip\@mathmargin\unhbox\z@\unskip}%
+  \else % M+B > displaywidth
+    \emdf at Ua
+  \fi
+}
+\def\emdf at Ua{%
+  \hbox to\columnwidth{%
+    \ifdim\displayindent>\z@
+      \hskip\displayindent minus\displayindent
+    \fi
+    \hskip\@mathmargin \unhbox\z@ \unskip
+  }%
+  \displayindent\z@ \displaywidth\columnwidth
+}
+\def\emdf at R{%
+  \setbox\tw@\hbox to\displaywidth{%
+    \hskip\@mathmargin \unhcopy\z@\unskip\hfil\hskip\mintagsep\copy4
+  }%
+  \restore at hfuzz
+  \ifnum\badness<\inf at bad \box\tw@ \else \emdf at Ra \fi
+}
+\def\emdf at Ra{%
+  \skip@\displayindent minus\displayindent
+  \displayindent\z@ \displaywidth\columnwidth
+  \spread at equation \everycr{}\tabskip\z at skip
+  \halign{\hbox to\displaywidth{##}\cr
+    \relax
+    \ifdim\skip@>\z@ \hskip\skip@ \fi
+    \hskip\@mathmargin\unhbox\z@\unskip\hfil\cr
+    \noalign{\raise at tag}%
+    \hfil\box4 \cr}%
+}
+\def\emdf at L{%
+  \@tempdima\@mathmargin
+  \advance\@tempdima-\wd4 \advance\@tempdima-\mintagsep
+  \skip@\@tempdima minus\@tempdima
+  \setbox\tw@\hbox to\displaywidth{%
+    \copy4\hskip\mintagsep
+    \ifdim\skip@>\z@ \hskip\skip@\fi
+    \unhcopy\z@\unskip
+  }%
+  \restore at hfuzz
+  \ifnum\badness<\inf at bad \box\tw@ \else \emdf at La \fi
+}
+\def\emdf at La{%
+  \spread at equation \everycr{}\tabskip\z at skip
+  \halign{\hbox to\displaywidth{##}\cr
+    \box4 \hfil \cr
+    \noalign{\raise at tag}%
+    \hskip\@mathmargin\unhbox\z@\unskip\hfil\cr}%
+}
+\newtoks\mathdisplay at stack
+\let\mathdisplay at push\@empty
+\def\mathdisplay@@push{%
+  \begingroup
+  \toks@\@xp{\df at label}\@temptokena\@xp{\df at tag}%
+  \toks8\@xp{\alt at tag}%
+  \edef\@tempa{%
+    \global\if at eqnsw\@nx\@eqnswtrue\else\@nx\@eqnswfalse\fi
+    \global\iftag@\@nx\tag at false\else\@nx\tag at true\fi
+    \gdef\@nx\df at label{\the\toks@}\gdef\@nx\df at tag{\the\@temptokena}%
+    \gdef\@nx\alt at tag{\the\toks8}%
+    \global\mathdisplay at stack{\the\mathdisplay at stack}%
+  }%
+  \global\mathdisplay at stack\@xp{\@tempa}
+  \endgroup
+}
+\let\mathdisplay at pop\@empty
+\def\mathdisplay@@pop{\the\mathdisplay at stack}
+\renewenvironment{equation}{%
+  \incr at eqnum
+  \mathdisplay at push
+  \st at rredfalse \global\@eqnswtrue
+  \mathdisplay{equation}%
+}{%
+  \endmathdisplay{equation}%
+  \mathdisplay at pop
+  \ignorespacesafterend
+}
+\newenvironment{equation*}{%
+  \mathdisplay at push
+  \st at rredtrue \global\@eqnswfalse
+  \mathdisplay{equation*}%
+}{%
+  \endmathdisplay{equation*}%
+  \mathdisplay at pop
+  \ignorespacesafterend
+}
+\DeclareRobustCommand{\[}{\begin{equation*}}
+\DeclareRobustCommand{\]}{\end{equation*}}
+\endinput
+%%
+%% End of file `amsmath.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/amsmath/amsmath-2018-12-01.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/base/latex.ltx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/base/latex.ltx	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/tex/latex/base/latex.ltx	2019-10-13 21:45:09 UTC (rev 52372)
@@ -701,7 +701,7 @@
 \def\fmtname{LaTeX2e}
 \edef\fmtversion
    {2019-10-01}
-\def\patch at level{0}
+\def\patch at level{1}
 \edef\development at branch@name{}
 \iffalse
 \def\reserved at a#1/#2/#3\@nil{%
@@ -1844,7 +1844,7 @@
 \def\set at curr@file#1{%
   \begingroup
     \escapechar\m at ne
-    \xdef\@curr at file{\expandafter\string\csname #1\endcsname}%
+    \xdef\@curr at file{\expandafter\string\csname\@firstofone#1\@empty\endcsname}%
   \endgroup
 }
 \def\quote at name#1{"\quote@@name#1\@gobble""}
@@ -5446,7 +5446,7 @@
   \@contfield}
 \DeclareRobustCommand\kill{\@stopfield\@startline\ignorespaces}
 \newdimen\tabbingsep
-\DeclareRobustCommand\extracolsep[1]{\tabskip #1\relax}
+\def\extracolsep#1{\tabskip #1\relax}
 \def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz
  \let\@classiv\@arrayclassiv
  \let\\\@arraycr\let\@halignto\@empty\@tabarray}

Modified: trunk/Master/texmf-dist/tex/latex/base/latexrelease.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/base/latexrelease.sty	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/tex/latex/base/latexrelease.sty	2019-10-13 21:45:09 UTC (rev 52372)
@@ -1201,7 +1201,7 @@
 \def\set at curr@file#1{%
   \begingroup
     \escapechar\m at ne
-    \xdef\@curr at file{\expandafter\string\csname #1\endcsname}%
+    \xdef\@curr at file{\expandafter\string\csname\@firstofone#1\@empty\endcsname}%
   \endgroup
 }
 \def\quote at name#1{"\quote@@name#1\@gobble""}

Modified: trunk/Master/texmf-dist/tex/latex/base/nfssfont.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/base/nfssfont.tex	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/tex/latex/base/nfssfont.tex	2019-10-13 21:45:09 UTC (rev 52372)
@@ -41,8 +41,8 @@
 %% The list of derived (unpacked) files belonging to the distribution
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
-\def\nfssfontfileversion{v2.2d}
-\def\nfssfontfiledate{2015/02/01}
+\def\nfssfontfileversion{v2.2e}
+\def\nfssfontfiledate{2019/10/12}
 
 
 \documentclass{article}
@@ -145,6 +145,8 @@
    \string\help\space for help [ \string\table\space\string\bye\space]:}%
  \ifx\action\empty
    \expandafter\table\expandafter\bye
+ \else
+   \expandafter\action
  \fi
 }
 \def\startfont{\font\testfont=\currfontname

Modified: trunk/Master/texmf-dist/tex/latex/graphics/graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/graphics/graphics.sty	2019-10-13 21:43:03 UTC (rev 52371)
+++ trunk/Master/texmf-dist/tex/latex/graphics/graphics.sty	2019-10-13 21:45:09 UTC (rev 52372)
@@ -29,7 +29,7 @@
 \DeclareCurrentRelease{}{2019-10-01}
 
 \ProvidesPackage{graphics}
-          [2019/07/20 v1.3b  Standard LaTeX Graphics (DPC,SPQR)]
+          [2019/10/08 v1.3c  Standard LaTeX Graphics (DPC,SPQR)]
 \edef\Gin at codes{%
  \catcode`\noexpand\^^A\the\catcode`\^^A\relax
  \catcode`\noexpand\"\the\catcode`\"\relax
@@ -168,6 +168,26 @@
      \edef\Gin at ext{#1}}{}}%
 \let\Gin at ext\relax
 \def\Gin at sepdefault{.}
+\def\Gin at temp#1{%
+  \begingroup
+    \escapechar\m at ne
+    \xdef\@curr at file{\expandafter\string\csname #1\endcsname}%
+  \endgroup
+}
+\ifx\set at curr@file\@Gin at temp
+  \let\set at curr@file\@undefined
+\fi
+\ifx\set at curr@file\@undefined
+\def\set at curr@file#1{%
+  \begingroup
+    \escapechar\m at ne
+    \xdef\@curr at file{\expandafter\string\csname\@firstofone#1\@empty\endcsname}%
+  \endgroup
+}
+\def\quote at name#1{"\quote@@name#1\@gobble""}
+\def\quote@@name#1"{#1\quote@@name}
+\def\unquote at name#1{\quote@@name#1\@gobble"}
+\fi
 \def\Ginclude at graphics#1{%
   \ifx\detokenize\@undefined\else
     \edef\Gin at extensions{\detokenize\expandafter{\Gin at extensions}}%



More information about the tex-live-commits mailing list